wiggum-cli 0.12.0 → 0.12.1

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 (490) hide show
  1. package/dist/ai/agents/codebase-analyst.d.ts +0 -1
  2. package/dist/ai/agents/codebase-analyst.js +0 -1
  3. package/dist/ai/agents/codebase-analyzer.d.ts +0 -1
  4. package/dist/ai/agents/codebase-analyzer.js +0 -1
  5. package/dist/ai/agents/context-enricher.d.ts +0 -1
  6. package/dist/ai/agents/context-enricher.js +0 -1
  7. package/dist/ai/agents/evaluator-optimizer.d.ts +0 -1
  8. package/dist/ai/agents/evaluator-optimizer.js +0 -1
  9. package/dist/ai/agents/index.d.ts +0 -1
  10. package/dist/ai/agents/index.js +0 -1
  11. package/dist/ai/agents/mcp-detector.d.ts +0 -1
  12. package/dist/ai/agents/mcp-detector.js +0 -1
  13. package/dist/ai/agents/orchestrator.d.ts +0 -1
  14. package/dist/ai/agents/orchestrator.js +0 -1
  15. package/dist/ai/agents/planning-orchestrator.d.ts +0 -1
  16. package/dist/ai/agents/planning-orchestrator.js +0 -1
  17. package/dist/ai/agents/stack-researcher.d.ts +0 -1
  18. package/dist/ai/agents/stack-researcher.js +0 -1
  19. package/dist/ai/agents/stack-utils.d.ts +0 -1
  20. package/dist/ai/agents/stack-utils.js +0 -1
  21. package/dist/ai/agents/synthesis-agent.d.ts +0 -1
  22. package/dist/ai/agents/synthesis-agent.js +0 -1
  23. package/dist/ai/agents/tech-researcher.d.ts +0 -1
  24. package/dist/ai/agents/tech-researcher.js +0 -1
  25. package/dist/ai/agents/types.d.ts +0 -1
  26. package/dist/ai/agents/types.js +0 -1
  27. package/dist/ai/conversation/conversation-manager.d.ts +0 -1
  28. package/dist/ai/conversation/conversation-manager.js +0 -1
  29. package/dist/ai/conversation/index.d.ts +0 -1
  30. package/dist/ai/conversation/index.js +0 -1
  31. package/dist/ai/conversation/interview-tools.d.ts +0 -1
  32. package/dist/ai/conversation/interview-tools.js +0 -1
  33. package/dist/ai/conversation/spec-generator.d.ts +0 -1
  34. package/dist/ai/conversation/spec-generator.js +0 -1
  35. package/dist/ai/conversation/url-fetcher.d.ts +0 -1
  36. package/dist/ai/conversation/url-fetcher.js +0 -1
  37. package/dist/ai/enhancer.d.ts +0 -1
  38. package/dist/ai/enhancer.js +0 -1
  39. package/dist/ai/index.d.ts +0 -1
  40. package/dist/ai/index.js +0 -1
  41. package/dist/ai/prompts.d.ts +0 -1
  42. package/dist/ai/prompts.js +0 -1
  43. package/dist/ai/providers.d.ts +0 -1
  44. package/dist/ai/providers.js +0 -1
  45. package/dist/ai/tools/context7.d.ts +0 -1
  46. package/dist/ai/tools/context7.js +0 -1
  47. package/dist/ai/tools/index.d.ts +0 -1
  48. package/dist/ai/tools/index.js +0 -1
  49. package/dist/ai/tools/tavily.d.ts +0 -1
  50. package/dist/ai/tools/tavily.js +0 -1
  51. package/dist/ai/tools.d.ts +0 -1
  52. package/dist/ai/tools.js +0 -1
  53. package/dist/commands/config.d.ts +0 -1
  54. package/dist/commands/config.js +0 -1
  55. package/dist/commands/init.d.ts +0 -1
  56. package/dist/commands/init.js +0 -1
  57. package/dist/commands/monitor.d.ts +0 -1
  58. package/dist/commands/monitor.js +0 -1
  59. package/dist/commands/new.d.ts +0 -1
  60. package/dist/commands/new.js +0 -1
  61. package/dist/commands/run.d.ts +0 -1
  62. package/dist/commands/run.js +0 -1
  63. package/dist/context/convert.d.ts +0 -1
  64. package/dist/context/convert.js +0 -1
  65. package/dist/context/index.d.ts +0 -1
  66. package/dist/context/index.js +0 -1
  67. package/dist/context/storage.d.ts +0 -1
  68. package/dist/context/storage.js +0 -1
  69. package/dist/context/types.d.ts +0 -1
  70. package/dist/context/types.js +0 -1
  71. package/dist/generator/config.d.ts +0 -1
  72. package/dist/generator/config.js +0 -1
  73. package/dist/generator/index.d.ts +0 -1
  74. package/dist/generator/index.js +0 -1
  75. package/dist/generator/templates.d.ts +0 -1
  76. package/dist/generator/templates.js +0 -1
  77. package/dist/generator/writer.d.ts +0 -1
  78. package/dist/generator/writer.js +0 -1
  79. package/dist/index.d.ts +0 -1
  80. package/dist/index.js +0 -1
  81. package/dist/repl/command-parser.d.ts +0 -1
  82. package/dist/repl/command-parser.js +0 -1
  83. package/dist/repl/index.d.ts +0 -1
  84. package/dist/repl/index.js +0 -1
  85. package/dist/repl/session-state.d.ts +0 -1
  86. package/dist/repl/session-state.js +0 -1
  87. package/dist/scanner/detectors/core/framework.d.ts +0 -1
  88. package/dist/scanner/detectors/core/framework.js +0 -1
  89. package/dist/scanner/detectors/core/packageManager.d.ts +0 -1
  90. package/dist/scanner/detectors/core/packageManager.js +0 -1
  91. package/dist/scanner/detectors/core/styling.d.ts +0 -1
  92. package/dist/scanner/detectors/core/styling.js +0 -1
  93. package/dist/scanner/detectors/core/testing.d.ts +0 -1
  94. package/dist/scanner/detectors/core/testing.js +0 -1
  95. package/dist/scanner/detectors/data/api.d.ts +0 -1
  96. package/dist/scanner/detectors/data/api.js +0 -1
  97. package/dist/scanner/detectors/data/database.d.ts +0 -1
  98. package/dist/scanner/detectors/data/database.js +0 -1
  99. package/dist/scanner/detectors/data/orm.d.ts +0 -1
  100. package/dist/scanner/detectors/data/orm.js +0 -1
  101. package/dist/scanner/detectors/frontend/formHandling.d.ts +0 -1
  102. package/dist/scanner/detectors/frontend/formHandling.js +0 -1
  103. package/dist/scanner/detectors/frontend/stateManagement.d.ts +0 -1
  104. package/dist/scanner/detectors/frontend/stateManagement.js +0 -1
  105. package/dist/scanner/detectors/frontend/uiComponents.d.ts +0 -1
  106. package/dist/scanner/detectors/frontend/uiComponents.js +0 -1
  107. package/dist/scanner/detectors/infra/deployment.d.ts +0 -1
  108. package/dist/scanner/detectors/infra/deployment.js +0 -1
  109. package/dist/scanner/detectors/infra/monorepo.d.ts +0 -1
  110. package/dist/scanner/detectors/infra/monorepo.js +0 -1
  111. package/dist/scanner/detectors/mcp/mcpProject.d.ts +0 -1
  112. package/dist/scanner/detectors/mcp/mcpProject.js +0 -1
  113. package/dist/scanner/detectors/mcp/mcpServers.d.ts +0 -1
  114. package/dist/scanner/detectors/mcp/mcpServers.js +0 -1
  115. package/dist/scanner/detectors/services/analytics.d.ts +0 -1
  116. package/dist/scanner/detectors/services/analytics.js +0 -1
  117. package/dist/scanner/detectors/services/auth.d.ts +0 -1
  118. package/dist/scanner/detectors/services/auth.js +0 -1
  119. package/dist/scanner/detectors/services/email.d.ts +0 -1
  120. package/dist/scanner/detectors/services/email.js +0 -1
  121. package/dist/scanner/detectors/services/payments.d.ts +0 -1
  122. package/dist/scanner/detectors/services/payments.js +0 -1
  123. package/dist/scanner/detectors/utils.d.ts +0 -1
  124. package/dist/scanner/detectors/utils.js +0 -1
  125. package/dist/scanner/index.d.ts +0 -1
  126. package/dist/scanner/index.js +0 -1
  127. package/dist/scanner/registry.d.ts +0 -1
  128. package/dist/scanner/registry.js +0 -1
  129. package/dist/scanner/types.d.ts +0 -1
  130. package/dist/scanner/types.js +0 -1
  131. package/dist/tui/app.d.ts +0 -1
  132. package/dist/tui/app.js +0 -1
  133. package/dist/tui/components/ActionOutput.d.ts +0 -1
  134. package/dist/tui/components/ActionOutput.js +0 -1
  135. package/dist/tui/components/ChatInput.d.ts +0 -1
  136. package/dist/tui/components/ChatInput.js +0 -1
  137. package/dist/tui/components/CommandDropdown.d.ts +0 -1
  138. package/dist/tui/components/CommandDropdown.js +0 -1
  139. package/dist/tui/components/Confirm.d.ts +0 -1
  140. package/dist/tui/components/Confirm.js +0 -1
  141. package/dist/tui/components/ErrorCard.d.ts +0 -1
  142. package/dist/tui/components/ErrorCard.js +0 -1
  143. package/dist/tui/components/FooterStatusBar.d.ts +0 -1
  144. package/dist/tui/components/FooterStatusBar.js +0 -1
  145. package/dist/tui/components/MessageList.d.ts +0 -1
  146. package/dist/tui/components/MessageList.js +0 -1
  147. package/dist/tui/components/MultiSelect.d.ts +0 -1
  148. package/dist/tui/components/MultiSelect.js +0 -1
  149. package/dist/tui/components/PasswordInput.d.ts +0 -1
  150. package/dist/tui/components/PasswordInput.js +0 -1
  151. package/dist/tui/components/PhaseHeader.d.ts +0 -1
  152. package/dist/tui/components/PhaseHeader.js +0 -1
  153. package/dist/tui/components/Select.d.ts +0 -1
  154. package/dist/tui/components/Select.js +0 -1
  155. package/dist/tui/components/StatusLine.d.ts +0 -1
  156. package/dist/tui/components/StatusLine.js +0 -1
  157. package/dist/tui/components/StreamingText.d.ts +0 -1
  158. package/dist/tui/components/StreamingText.js +0 -1
  159. package/dist/tui/components/ToolCallCard.d.ts +0 -1
  160. package/dist/tui/components/ToolCallCard.js +0 -1
  161. package/dist/tui/components/WiggumBanner.d.ts +0 -1
  162. package/dist/tui/components/WiggumBanner.js +0 -1
  163. package/dist/tui/components/WorkingIndicator.d.ts +0 -1
  164. package/dist/tui/components/WorkingIndicator.js +0 -1
  165. package/dist/tui/components/index.d.ts +0 -1
  166. package/dist/tui/components/index.js +0 -1
  167. package/dist/tui/hooks/index.d.ts +0 -1
  168. package/dist/tui/hooks/index.js +0 -1
  169. package/dist/tui/hooks/useCommandHistory.d.ts +0 -1
  170. package/dist/tui/hooks/useCommandHistory.js +0 -1
  171. package/dist/tui/hooks/useInit.d.ts +0 -1
  172. package/dist/tui/hooks/useInit.js +0 -1
  173. package/dist/tui/hooks/useSpecGenerator.d.ts +0 -1
  174. package/dist/tui/hooks/useSpecGenerator.js +0 -1
  175. package/dist/tui/hooks/useSync.d.ts +0 -1
  176. package/dist/tui/hooks/useSync.js +0 -1
  177. package/dist/tui/index.d.ts +0 -1
  178. package/dist/tui/index.js +0 -1
  179. package/dist/tui/orchestration/index.d.ts +0 -1
  180. package/dist/tui/orchestration/index.js +0 -1
  181. package/dist/tui/orchestration/interview-orchestrator.d.ts +0 -1
  182. package/dist/tui/orchestration/interview-orchestrator.js +0 -1
  183. package/dist/tui/screens/InitScreen.d.ts +0 -1
  184. package/dist/tui/screens/InitScreen.js +0 -1
  185. package/dist/tui/screens/InterviewScreen.d.ts +0 -1
  186. package/dist/tui/screens/InterviewScreen.js +0 -1
  187. package/dist/tui/screens/MainShell.d.ts +0 -1
  188. package/dist/tui/screens/MainShell.js +0 -1
  189. package/dist/tui/screens/RunScreen.d.ts +0 -1
  190. package/dist/tui/screens/RunScreen.js +0 -1
  191. package/dist/tui/screens/WelcomeScreen.d.ts +0 -1
  192. package/dist/tui/screens/WelcomeScreen.js +0 -1
  193. package/dist/tui/screens/index.d.ts +0 -1
  194. package/dist/tui/screens/index.js +0 -1
  195. package/dist/tui/theme.d.ts +0 -1
  196. package/dist/tui/theme.js +0 -1
  197. package/dist/tui/types/interview.d.ts +0 -1
  198. package/dist/tui/types/interview.js +0 -1
  199. package/dist/tui/utils/input-utils.d.ts +0 -1
  200. package/dist/tui/utils/input-utils.js +0 -1
  201. package/dist/tui/utils/loop-status.d.ts +0 -1
  202. package/dist/tui/utils/loop-status.js +0 -1
  203. package/dist/utils/colors.d.ts +0 -1
  204. package/dist/utils/colors.js +0 -1
  205. package/dist/utils/config.d.ts +0 -1
  206. package/dist/utils/config.js +0 -1
  207. package/dist/utils/env.d.ts +0 -1
  208. package/dist/utils/env.js +0 -1
  209. package/dist/utils/header.d.ts +0 -1
  210. package/dist/utils/header.js +0 -1
  211. package/dist/utils/json-repair.d.ts +0 -1
  212. package/dist/utils/json-repair.js +0 -1
  213. package/dist/utils/logger.d.ts +0 -1
  214. package/dist/utils/logger.js +0 -1
  215. package/dist/utils/spinner.d.ts +0 -1
  216. package/dist/utils/spinner.js +0 -1
  217. package/dist/utils/tracing.d.ts +0 -1
  218. package/dist/utils/tracing.js +0 -1
  219. package/dist/utils/tui.d.ts +0 -1
  220. package/dist/utils/tui.js +0 -1
  221. package/dist/utils/update-check.d.ts +0 -1
  222. package/dist/utils/update-check.js +0 -1
  223. package/package.json +2 -4
  224. package/CONTRIBUTING.md +0 -162
  225. package/dist/__test-utils__/fixtures.d.ts +0 -17
  226. package/dist/__test-utils__/fixtures.d.ts.map +0 -1
  227. package/dist/__test-utils__/fixtures.js +0 -32
  228. package/dist/__test-utils__/fixtures.js.map +0 -1
  229. package/dist/__test-utils__/ink-helpers.d.ts +0 -43
  230. package/dist/__test-utils__/ink-helpers.d.ts.map +0 -1
  231. package/dist/__test-utils__/ink-helpers.js +0 -62
  232. package/dist/__test-utils__/ink-helpers.js.map +0 -1
  233. package/dist/__test-utils__/mock-ai.d.ts +0 -99
  234. package/dist/__test-utils__/mock-ai.d.ts.map +0 -1
  235. package/dist/__test-utils__/mock-ai.js +0 -75
  236. package/dist/__test-utils__/mock-ai.js.map +0 -1
  237. package/dist/__test-utils__/mock-tracing.d.ts +0 -18
  238. package/dist/__test-utils__/mock-tracing.d.ts.map +0 -1
  239. package/dist/__test-utils__/mock-tracing.js +0 -24
  240. package/dist/__test-utils__/mock-tracing.js.map +0 -1
  241. package/dist/__test-utils__/setup.d.ts +0 -8
  242. package/dist/__test-utils__/setup.d.ts.map +0 -1
  243. package/dist/__test-utils__/setup.js +0 -21
  244. package/dist/__test-utils__/setup.js.map +0 -1
  245. package/dist/ai/agents/codebase-analyst.d.ts.map +0 -1
  246. package/dist/ai/agents/codebase-analyst.js.map +0 -1
  247. package/dist/ai/agents/codebase-analyzer.d.ts.map +0 -1
  248. package/dist/ai/agents/codebase-analyzer.js.map +0 -1
  249. package/dist/ai/agents/context-enricher.d.ts.map +0 -1
  250. package/dist/ai/agents/context-enricher.js.map +0 -1
  251. package/dist/ai/agents/evaluator-optimizer.d.ts.map +0 -1
  252. package/dist/ai/agents/evaluator-optimizer.js.map +0 -1
  253. package/dist/ai/agents/index.d.ts.map +0 -1
  254. package/dist/ai/agents/index.js.map +0 -1
  255. package/dist/ai/agents/mcp-detector.d.ts.map +0 -1
  256. package/dist/ai/agents/mcp-detector.js.map +0 -1
  257. package/dist/ai/agents/orchestrator.d.ts.map +0 -1
  258. package/dist/ai/agents/orchestrator.js.map +0 -1
  259. package/dist/ai/agents/planning-orchestrator.d.ts.map +0 -1
  260. package/dist/ai/agents/planning-orchestrator.js.map +0 -1
  261. package/dist/ai/agents/stack-researcher.d.ts.map +0 -1
  262. package/dist/ai/agents/stack-researcher.js.map +0 -1
  263. package/dist/ai/agents/stack-utils.d.ts.map +0 -1
  264. package/dist/ai/agents/stack-utils.js.map +0 -1
  265. package/dist/ai/agents/synthesis-agent.d.ts.map +0 -1
  266. package/dist/ai/agents/synthesis-agent.js.map +0 -1
  267. package/dist/ai/agents/tech-researcher.d.ts.map +0 -1
  268. package/dist/ai/agents/tech-researcher.js.map +0 -1
  269. package/dist/ai/agents/types.d.ts.map +0 -1
  270. package/dist/ai/agents/types.js.map +0 -1
  271. package/dist/ai/conversation/conversation-manager.d.ts.map +0 -1
  272. package/dist/ai/conversation/conversation-manager.js.map +0 -1
  273. package/dist/ai/conversation/index.d.ts.map +0 -1
  274. package/dist/ai/conversation/index.js.map +0 -1
  275. package/dist/ai/conversation/interview-tools.d.ts.map +0 -1
  276. package/dist/ai/conversation/interview-tools.js.map +0 -1
  277. package/dist/ai/conversation/spec-generator.d.ts.map +0 -1
  278. package/dist/ai/conversation/spec-generator.js.map +0 -1
  279. package/dist/ai/conversation/url-fetcher.d.ts.map +0 -1
  280. package/dist/ai/conversation/url-fetcher.js.map +0 -1
  281. package/dist/ai/enhancer.d.ts.map +0 -1
  282. package/dist/ai/enhancer.js.map +0 -1
  283. package/dist/ai/index.d.ts.map +0 -1
  284. package/dist/ai/index.js.map +0 -1
  285. package/dist/ai/prompts.d.ts.map +0 -1
  286. package/dist/ai/prompts.js.map +0 -1
  287. package/dist/ai/providers.d.ts.map +0 -1
  288. package/dist/ai/providers.js.map +0 -1
  289. package/dist/ai/tools/context7.d.ts.map +0 -1
  290. package/dist/ai/tools/context7.js.map +0 -1
  291. package/dist/ai/tools/index.d.ts.map +0 -1
  292. package/dist/ai/tools/index.js.map +0 -1
  293. package/dist/ai/tools/tavily.d.ts.map +0 -1
  294. package/dist/ai/tools/tavily.js.map +0 -1
  295. package/dist/ai/tools.d.ts.map +0 -1
  296. package/dist/ai/tools.js.map +0 -1
  297. package/dist/commands/config.d.ts.map +0 -1
  298. package/dist/commands/config.js.map +0 -1
  299. package/dist/commands/init.d.ts.map +0 -1
  300. package/dist/commands/init.js.map +0 -1
  301. package/dist/commands/monitor.d.ts.map +0 -1
  302. package/dist/commands/monitor.js.map +0 -1
  303. package/dist/commands/new.d.ts.map +0 -1
  304. package/dist/commands/new.js.map +0 -1
  305. package/dist/commands/run.d.ts.map +0 -1
  306. package/dist/commands/run.js.map +0 -1
  307. package/dist/context/convert.d.ts.map +0 -1
  308. package/dist/context/convert.js.map +0 -1
  309. package/dist/context/index.d.ts.map +0 -1
  310. package/dist/context/index.js.map +0 -1
  311. package/dist/context/storage.d.ts.map +0 -1
  312. package/dist/context/storage.js.map +0 -1
  313. package/dist/context/types.d.ts.map +0 -1
  314. package/dist/context/types.js.map +0 -1
  315. package/dist/generator/config.d.ts.map +0 -1
  316. package/dist/generator/config.js.map +0 -1
  317. package/dist/generator/index.d.ts.map +0 -1
  318. package/dist/generator/index.js.map +0 -1
  319. package/dist/generator/templates.d.ts.map +0 -1
  320. package/dist/generator/templates.js.map +0 -1
  321. package/dist/generator/writer.d.ts.map +0 -1
  322. package/dist/generator/writer.js.map +0 -1
  323. package/dist/index.d.ts.map +0 -1
  324. package/dist/index.js.map +0 -1
  325. package/dist/repl/command-parser.d.ts.map +0 -1
  326. package/dist/repl/command-parser.js.map +0 -1
  327. package/dist/repl/index.d.ts.map +0 -1
  328. package/dist/repl/index.js.map +0 -1
  329. package/dist/repl/session-state.d.ts.map +0 -1
  330. package/dist/repl/session-state.js.map +0 -1
  331. package/dist/scanner/detectors/core/framework.d.ts.map +0 -1
  332. package/dist/scanner/detectors/core/framework.js.map +0 -1
  333. package/dist/scanner/detectors/core/packageManager.d.ts.map +0 -1
  334. package/dist/scanner/detectors/core/packageManager.js.map +0 -1
  335. package/dist/scanner/detectors/core/styling.d.ts.map +0 -1
  336. package/dist/scanner/detectors/core/styling.js.map +0 -1
  337. package/dist/scanner/detectors/core/testing.d.ts.map +0 -1
  338. package/dist/scanner/detectors/core/testing.js.map +0 -1
  339. package/dist/scanner/detectors/data/api.d.ts.map +0 -1
  340. package/dist/scanner/detectors/data/api.js.map +0 -1
  341. package/dist/scanner/detectors/data/database.d.ts.map +0 -1
  342. package/dist/scanner/detectors/data/database.js.map +0 -1
  343. package/dist/scanner/detectors/data/orm.d.ts.map +0 -1
  344. package/dist/scanner/detectors/data/orm.js.map +0 -1
  345. package/dist/scanner/detectors/frontend/formHandling.d.ts.map +0 -1
  346. package/dist/scanner/detectors/frontend/formHandling.js.map +0 -1
  347. package/dist/scanner/detectors/frontend/stateManagement.d.ts.map +0 -1
  348. package/dist/scanner/detectors/frontend/stateManagement.js.map +0 -1
  349. package/dist/scanner/detectors/frontend/uiComponents.d.ts.map +0 -1
  350. package/dist/scanner/detectors/frontend/uiComponents.js.map +0 -1
  351. package/dist/scanner/detectors/infra/deployment.d.ts.map +0 -1
  352. package/dist/scanner/detectors/infra/deployment.js.map +0 -1
  353. package/dist/scanner/detectors/infra/monorepo.d.ts.map +0 -1
  354. package/dist/scanner/detectors/infra/monorepo.js.map +0 -1
  355. package/dist/scanner/detectors/mcp/mcpProject.d.ts.map +0 -1
  356. package/dist/scanner/detectors/mcp/mcpProject.js.map +0 -1
  357. package/dist/scanner/detectors/mcp/mcpServers.d.ts.map +0 -1
  358. package/dist/scanner/detectors/mcp/mcpServers.js.map +0 -1
  359. package/dist/scanner/detectors/services/analytics.d.ts.map +0 -1
  360. package/dist/scanner/detectors/services/analytics.js.map +0 -1
  361. package/dist/scanner/detectors/services/auth.d.ts.map +0 -1
  362. package/dist/scanner/detectors/services/auth.js.map +0 -1
  363. package/dist/scanner/detectors/services/email.d.ts.map +0 -1
  364. package/dist/scanner/detectors/services/email.js.map +0 -1
  365. package/dist/scanner/detectors/services/payments.d.ts.map +0 -1
  366. package/dist/scanner/detectors/services/payments.js.map +0 -1
  367. package/dist/scanner/detectors/utils.d.ts.map +0 -1
  368. package/dist/scanner/detectors/utils.js.map +0 -1
  369. package/dist/scanner/index.d.ts.map +0 -1
  370. package/dist/scanner/index.js.map +0 -1
  371. package/dist/scanner/registry.d.ts.map +0 -1
  372. package/dist/scanner/registry.js.map +0 -1
  373. package/dist/scanner/types.d.ts.map +0 -1
  374. package/dist/scanner/types.js.map +0 -1
  375. package/dist/tui/app.d.ts.map +0 -1
  376. package/dist/tui/app.js.map +0 -1
  377. package/dist/tui/components/ActionOutput.d.ts.map +0 -1
  378. package/dist/tui/components/ActionOutput.js.map +0 -1
  379. package/dist/tui/components/ChatInput.d.ts.map +0 -1
  380. package/dist/tui/components/ChatInput.js.map +0 -1
  381. package/dist/tui/components/ChatInput.test.d.ts +0 -2
  382. package/dist/tui/components/ChatInput.test.d.ts.map +0 -1
  383. package/dist/tui/components/ChatInput.test.js +0 -75
  384. package/dist/tui/components/ChatInput.test.js.map +0 -1
  385. package/dist/tui/components/CommandDropdown.d.ts.map +0 -1
  386. package/dist/tui/components/CommandDropdown.js.map +0 -1
  387. package/dist/tui/components/Confirm.d.ts.map +0 -1
  388. package/dist/tui/components/Confirm.js.map +0 -1
  389. package/dist/tui/components/ErrorCard.d.ts.map +0 -1
  390. package/dist/tui/components/ErrorCard.js.map +0 -1
  391. package/dist/tui/components/FooterStatusBar.d.ts.map +0 -1
  392. package/dist/tui/components/FooterStatusBar.js.map +0 -1
  393. package/dist/tui/components/MessageList.d.ts.map +0 -1
  394. package/dist/tui/components/MessageList.js.map +0 -1
  395. package/dist/tui/components/MultiSelect.d.ts.map +0 -1
  396. package/dist/tui/components/MultiSelect.js.map +0 -1
  397. package/dist/tui/components/PasswordInput.d.ts.map +0 -1
  398. package/dist/tui/components/PasswordInput.js.map +0 -1
  399. package/dist/tui/components/PhaseHeader.d.ts.map +0 -1
  400. package/dist/tui/components/PhaseHeader.js.map +0 -1
  401. package/dist/tui/components/Select.d.ts.map +0 -1
  402. package/dist/tui/components/Select.js.map +0 -1
  403. package/dist/tui/components/StatusLine.d.ts.map +0 -1
  404. package/dist/tui/components/StatusLine.js.map +0 -1
  405. package/dist/tui/components/StreamingText.d.ts.map +0 -1
  406. package/dist/tui/components/StreamingText.js.map +0 -1
  407. package/dist/tui/components/ToolCallCard.d.ts.map +0 -1
  408. package/dist/tui/components/ToolCallCard.js.map +0 -1
  409. package/dist/tui/components/WiggumBanner.d.ts.map +0 -1
  410. package/dist/tui/components/WiggumBanner.js.map +0 -1
  411. package/dist/tui/components/WorkingIndicator.d.ts.map +0 -1
  412. package/dist/tui/components/WorkingIndicator.js.map +0 -1
  413. package/dist/tui/components/WorkingIndicator.test.d.ts +0 -2
  414. package/dist/tui/components/WorkingIndicator.test.d.ts.map +0 -1
  415. package/dist/tui/components/WorkingIndicator.test.js +0 -26
  416. package/dist/tui/components/WorkingIndicator.test.js.map +0 -1
  417. package/dist/tui/components/index.d.ts.map +0 -1
  418. package/dist/tui/components/index.js.map +0 -1
  419. package/dist/tui/demo.d.ts +0 -8
  420. package/dist/tui/demo.d.ts.map +0 -1
  421. package/dist/tui/demo.js +0 -69
  422. package/dist/tui/demo.js.map +0 -1
  423. package/dist/tui/hooks/index.d.ts.map +0 -1
  424. package/dist/tui/hooks/index.js.map +0 -1
  425. package/dist/tui/hooks/useCommandHistory.d.ts.map +0 -1
  426. package/dist/tui/hooks/useCommandHistory.js.map +0 -1
  427. package/dist/tui/hooks/useInit.d.ts.map +0 -1
  428. package/dist/tui/hooks/useInit.js.map +0 -1
  429. package/dist/tui/hooks/useSpecGenerator.d.ts.map +0 -1
  430. package/dist/tui/hooks/useSpecGenerator.js.map +0 -1
  431. package/dist/tui/hooks/useSync.d.ts.map +0 -1
  432. package/dist/tui/hooks/useSync.js.map +0 -1
  433. package/dist/tui/index.d.ts.map +0 -1
  434. package/dist/tui/index.js.map +0 -1
  435. package/dist/tui/orchestration/index.d.ts.map +0 -1
  436. package/dist/tui/orchestration/index.js.map +0 -1
  437. package/dist/tui/orchestration/interview-orchestrator.d.ts.map +0 -1
  438. package/dist/tui/orchestration/interview-orchestrator.js.map +0 -1
  439. package/dist/tui/screens/InitScreen.d.ts.map +0 -1
  440. package/dist/tui/screens/InitScreen.js.map +0 -1
  441. package/dist/tui/screens/InterviewScreen.d.ts.map +0 -1
  442. package/dist/tui/screens/InterviewScreen.integration.test.d.ts +0 -7
  443. package/dist/tui/screens/InterviewScreen.integration.test.d.ts.map +0 -1
  444. package/dist/tui/screens/InterviewScreen.integration.test.js +0 -149
  445. package/dist/tui/screens/InterviewScreen.integration.test.js.map +0 -1
  446. package/dist/tui/screens/InterviewScreen.js.map +0 -1
  447. package/dist/tui/screens/MainShell.d.ts.map +0 -1
  448. package/dist/tui/screens/MainShell.js.map +0 -1
  449. package/dist/tui/screens/MainShell.test.d.ts +0 -2
  450. package/dist/tui/screens/MainShell.test.d.ts.map +0 -1
  451. package/dist/tui/screens/MainShell.test.js +0 -103
  452. package/dist/tui/screens/MainShell.test.js.map +0 -1
  453. package/dist/tui/screens/RunScreen.d.ts.map +0 -1
  454. package/dist/tui/screens/RunScreen.js.map +0 -1
  455. package/dist/tui/screens/WelcomeScreen.d.ts.map +0 -1
  456. package/dist/tui/screens/WelcomeScreen.js.map +0 -1
  457. package/dist/tui/screens/WelcomeScreen.test.d.ts +0 -2
  458. package/dist/tui/screens/WelcomeScreen.test.d.ts.map +0 -1
  459. package/dist/tui/screens/WelcomeScreen.test.js +0 -51
  460. package/dist/tui/screens/WelcomeScreen.test.js.map +0 -1
  461. package/dist/tui/screens/index.d.ts.map +0 -1
  462. package/dist/tui/screens/index.js.map +0 -1
  463. package/dist/tui/theme.d.ts.map +0 -1
  464. package/dist/tui/theme.js.map +0 -1
  465. package/dist/tui/types/interview.d.ts.map +0 -1
  466. package/dist/tui/types/interview.js.map +0 -1
  467. package/dist/tui/utils/input-utils.d.ts.map +0 -1
  468. package/dist/tui/utils/input-utils.js.map +0 -1
  469. package/dist/tui/utils/loop-status.d.ts.map +0 -1
  470. package/dist/tui/utils/loop-status.js.map +0 -1
  471. package/dist/utils/colors.d.ts.map +0 -1
  472. package/dist/utils/colors.js.map +0 -1
  473. package/dist/utils/config.d.ts.map +0 -1
  474. package/dist/utils/config.js.map +0 -1
  475. package/dist/utils/env.d.ts.map +0 -1
  476. package/dist/utils/env.js.map +0 -1
  477. package/dist/utils/header.d.ts.map +0 -1
  478. package/dist/utils/header.js.map +0 -1
  479. package/dist/utils/json-repair.d.ts.map +0 -1
  480. package/dist/utils/json-repair.js.map +0 -1
  481. package/dist/utils/logger.d.ts.map +0 -1
  482. package/dist/utils/logger.js.map +0 -1
  483. package/dist/utils/spinner.d.ts.map +0 -1
  484. package/dist/utils/spinner.js.map +0 -1
  485. package/dist/utils/tracing.d.ts.map +0 -1
  486. package/dist/utils/tracing.js.map +0 -1
  487. package/dist/utils/tui.d.ts.map +0 -1
  488. package/dist/utils/tui.js.map +0 -1
  489. package/dist/utils/update-check.d.ts.map +0 -1
  490. package/dist/utils/update-check.js.map +0 -1
@@ -257,4 +257,3 @@ export function RunScreen({ featureName, projectRoot, sessionState, onComplete,
257
257
  const phaseLine = isStarting ? 'Starting...' : status.phase;
258
258
  return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [error && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: theme.colors.error, children: ["Error: ", error] }) })), !error && (_jsxs(_Fragment, { children: [_jsxs(Box, { marginTop: 1, flexDirection: "row", children: [_jsx(Text, { children: "Phase: " }), _jsx(Text, { color: colors.yellow, children: phaseLine }), _jsx(Text, { dimColor: true, children: theme.statusLine.separator }), _jsx(Text, { children: "Iter: " }), _jsx(Text, { color: colors.green, children: status.iteration }), _jsxs(Text, { dimColor: true, children: ["/", status.maxIterations || maxIterationsRef.current || '-'] }), _jsx(Text, { dimColor: true, children: theme.statusLine.separator }), _jsx(Text, { children: "Branch: " }), _jsx(Text, { color: colors.blue, children: branch })] }), _jsxs(Box, { marginTop: 1, flexDirection: "row", children: [_jsx(Text, { children: "Tokens: " }), _jsx(Text, { color: colors.pink, children: formatNumber(totalTokens) }), _jsxs(Text, { dimColor: true, children: [" (in:", formatNumber(status.tokensInput), " out:", formatNumber(status.tokensOutput), ")"] }), _jsx(Text, { dimColor: true, children: theme.statusLine.separator }), _jsxs(Text, { dimColor: true, children: ["Elapsed: ", formatDuration(startTimeRef.current)] })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", alignItems: "center", gap: 1, children: [_jsx(Text, { bold: true, children: "Implementation:" }), _jsx(ProgressBar, { percent: percentTasks }), _jsxs(Text, { children: [percentTasks, "%"] }), _jsxs(Text, { color: colors.green, children: ["\u2713 ", tasks.tasksDone] }), _jsxs(Text, { color: colors.yellow, children: ["\u25CB ", tasks.tasksPending] })] }), totalE2e > 0 && (_jsxs(Box, { flexDirection: "row", alignItems: "center", gap: 1, children: [_jsx(Text, { bold: true, children: "E2E Tests:" }), _jsx(ProgressBar, { percent: percentE2e }), _jsxs(Text, { children: [percentE2e, "%"] }), _jsxs(Text, { color: colors.green, children: ["\u2713 ", tasks.e2eDone] }), _jsxs(Text, { color: colors.yellow, children: ["\u25CB ", tasks.e2ePending] })] })), _jsxs(Box, { flexDirection: "row", alignItems: "center", gap: 1, marginTop: 1, children: [_jsx(Text, { bold: true, children: "Overall:" }), _jsx(ProgressBar, { percent: percentAll }), _jsxs(Text, { children: [percentAll, "%"] }), _jsxs(Text, { color: colors.green, children: ["\u2713 ", doneAll] }), _jsxs(Text, { color: colors.yellow, children: ["\u25CB ", totalAll - doneAll] })] })] }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { dimColor: true, children: ["Tip: /monitor ", featureName, " in another terminal for details"] }) }), _jsx(Box, { children: _jsx(Text, { dimColor: true, children: "Press Ctrl+C to stop the loop" }) })] })), showConfirm && (_jsx(Box, { marginTop: 1, children: _jsx(Confirm, { message: stopRequestedRef.current ? 'Stopping loop...' : 'Stop the feature loop?', onConfirm: handleConfirm, onCancel: () => setShowConfirm(false), initialValue: false }) })), _jsx(FooterStatusBar, { action: "Run Loop", phase: phaseLine, path: featureName })] }));
259
259
  }
260
- //# sourceMappingURL=RunScreen.js.map
@@ -42,4 +42,3 @@ export interface WelcomeScreenProps {
42
42
  * ```
43
43
  */
44
44
  export declare function WelcomeScreen({ provider, model, version, isInitialized, onContinue, }: WelcomeScreenProps): React.ReactElement;
45
- //# sourceMappingURL=WelcomeScreen.d.ts.map
@@ -52,4 +52,3 @@ export function WelcomeScreen({ provider, model, version, isInitialized, onConti
52
52
  const statusColor = isInitialized ? colors.green : colors.orange;
53
53
  return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(WiggumBanner, {}), _jsxs(Box, { marginTop: 1, flexDirection: "row", children: [_jsxs(Text, { color: colors.pink, children: ["v", versionDisplay] }), _jsx(Text, { dimColor: true, children: separator }), provider ? (_jsx(Text, { color: colors.blue, children: modelDisplay })) : (_jsx(Text, { color: colors.orange, children: modelDisplay })), _jsx(Text, { dimColor: true, children: separator }), _jsx(Text, { color: statusColor, children: statusText })] }), _jsx(Box, { marginTop: 2, children: _jsxs(Text, { dimColor: true, children: ["Tip: ", isInitialized ? '/new <feature> to create spec' : '/init to set up', ", /help for commands"] }) })] }));
54
54
  }
55
- //# sourceMappingURL=WelcomeScreen.js.map
@@ -11,4 +11,3 @@ export { MainShell } from './MainShell.js';
11
11
  export type { MainShellProps, NavigationTarget, NavigationProps } from './MainShell.js';
12
12
  export { RunScreen } from './RunScreen.js';
13
13
  export type { RunScreenProps, RunSummary } from './RunScreen.js';
14
- //# sourceMappingURL=index.d.ts.map
@@ -6,4 +6,3 @@ export { InitScreen } from './InitScreen.js';
6
6
  export { WelcomeScreen } from './WelcomeScreen.js';
7
7
  export { MainShell } from './MainShell.js';
8
8
  export { RunScreen } from './RunScreen.js';
9
- //# sourceMappingURL=index.js.map
@@ -117,4 +117,3 @@ export declare function getColor(name: ColorName): string;
117
117
  * Get phase character by status
118
118
  */
119
119
  export declare function getPhaseChar(status: PhaseStatus): string;
120
- //# sourceMappingURL=theme.d.ts.map
package/dist/tui/theme.js CHANGED
@@ -113,4 +113,3 @@ export function getColor(name) {
113
113
  export function getPhaseChar(status) {
114
114
  return phase[status];
115
115
  }
116
- //# sourceMappingURL=theme.js.map
@@ -39,4 +39,3 @@ export type InterviewAnswer = {
39
39
  * Map selected option IDs to their labels, falling back to raw IDs for unmatched entries
40
40
  */
41
41
  export declare function resolveOptionLabels(options: readonly InterviewOption[], selectedIds: readonly string[]): string[];
42
- //# sourceMappingURL=interview.d.ts.map
@@ -10,4 +10,3 @@ export function resolveOptionLabels(options, selectedIds) {
10
10
  return option?.label ?? id;
11
11
  });
12
12
  }
13
- //# sourceMappingURL=interview.js.map
@@ -123,4 +123,3 @@ export declare function moveCursorByWordLeft(value: string, cursorIndex: number)
123
123
  * ```
124
124
  */
125
125
  export declare function moveCursorByWordRight(value: string, cursorIndex: number): number;
126
- //# sourceMappingURL=input-utils.d.ts.map
@@ -175,4 +175,3 @@ export function moveCursorByWordRight(value, cursorIndex) {
175
175
  }
176
176
  return idx;
177
177
  }
178
- //# sourceMappingURL=input-utils.js.map
@@ -35,4 +35,3 @@ export declare function getGitBranch(projectRoot: string): string;
35
35
  * Format number with K/M suffix.
36
36
  */
37
37
  export declare function formatNumber(num: number): string;
38
- //# sourceMappingURL=loop-status.d.ts.map
@@ -149,4 +149,3 @@ export function formatNumber(num) {
149
149
  }
150
150
  return String(num);
151
151
  }
152
- //# sourceMappingURL=loop-status.js.map
@@ -92,4 +92,3 @@ export declare function nextStepsBox(steps: Array<{
92
92
  */
93
93
  export declare const PASSWORD_MASK_LENGTH = 32;
94
94
  export declare const PASSWORD_MASK: string;
95
- //# sourceMappingURL=colors.d.ts.map
@@ -203,4 +203,3 @@ export function nextStepsBox(steps) {
203
203
  */
204
204
  export const PASSWORD_MASK_LENGTH = 32;
205
205
  export const PASSWORD_MASK = '▪'.repeat(PASSWORD_MASK_LENGTH);
206
- //# sourceMappingURL=colors.js.map
@@ -93,4 +93,3 @@ export declare function getScriptsDir(projectRoot: string): Promise<string>;
93
93
  * Get loop settings with defaults
94
94
  */
95
95
  export declare function getLoopSettings(projectRoot: string): Promise<LoopConfig>;
96
- //# sourceMappingURL=config.d.ts.map
@@ -147,4 +147,3 @@ export async function getLoopSettings(projectRoot) {
147
147
  reviewMode: config?.loop?.reviewMode || DEFAULT_CONFIG.loop.reviewMode,
148
148
  };
149
149
  }
150
- //# sourceMappingURL=config.js.map
@@ -35,4 +35,3 @@ export declare function writeKeysToEnvFile(filePath: string, keys: Record<string
35
35
  * - Malformed lines are skipped without aborting.
36
36
  */
37
37
  export declare function loadApiKeysFromEnvLocal(): void;
38
- //# sourceMappingURL=env.d.ts.map
package/dist/utils/env.js CHANGED
@@ -115,4 +115,3 @@ export function loadApiKeysFromEnvLocal() {
115
115
  logger.debug(`Failed to load env file: ${err instanceof Error ? err.message : String(err)}`);
116
116
  }
117
117
  }
118
- //# sourceMappingURL=env.js.map
@@ -6,4 +6,3 @@ export declare function displayHeader(): void;
6
6
  * Display a minimal header (for subcommands)
7
7
  */
8
8
  export declare function displayMinimalHeader(): void;
9
- //# sourceMappingURL=header.d.ts.map
@@ -44,4 +44,3 @@ export function displayMinimalHeader() {
44
44
  console.log(simpson.yellow('Wiggum CLI') + simpson.brown(' │ ') + 'AI-powered Ralph development loop');
45
45
  console.log('');
46
46
  }
47
- //# sourceMappingURL=header.js.map
@@ -11,4 +11,3 @@ export declare function repairJson(text: string): string;
11
11
  * Tries to fix common issues before parsing
12
12
  */
13
13
  export declare function parseJsonSafe<T>(text: string): T | null;
14
- //# sourceMappingURL=json-repair.d.ts.map
@@ -143,4 +143,3 @@ export function parseJsonSafe(text) {
143
143
  }
144
144
  return null;
145
145
  }
146
- //# sourceMappingURL=json-repair.js.map
@@ -8,4 +8,3 @@ export declare const logger: {
8
8
  error(message: string): void;
9
9
  debug(message: string): void;
10
10
  };
11
- //# sourceMappingURL=logger.d.ts.map
@@ -21,4 +21,3 @@ export const logger = {
21
21
  }
22
22
  },
23
23
  };
24
- //# sourceMappingURL=logger.js.map
@@ -71,4 +71,3 @@ export declare class ShimmerSpinner {
71
71
  * Create a shimmer spinner instance
72
72
  */
73
73
  export declare function createShimmerSpinner(options?: ShimmerSpinnerOptions): ShimmerSpinner;
74
- //# sourceMappingURL=spinner.d.ts.map
@@ -205,4 +205,3 @@ export class ShimmerSpinner {
205
205
  export function createShimmerSpinner(options) {
206
206
  return new ShimmerSpinner(options);
207
207
  }
208
- //# sourceMappingURL=spinner.js.map
@@ -27,4 +27,3 @@ export declare function maybeTraced<T extends (...args: unknown[]) => unknown>(f
27
27
  type?: string;
28
28
  name?: string;
29
29
  }): T;
30
- //# sourceMappingURL=tracing.d.ts.map
@@ -100,4 +100,3 @@ export function maybeTraced(fn, options = {}) {
100
100
  name: options.name || fn.name || 'anonymous',
101
101
  });
102
102
  }
103
- //# sourceMappingURL=tracing.js.map
@@ -58,4 +58,3 @@ export declare function clearThinking(): void;
58
58
  * Format bytes for display
59
59
  */
60
60
  export declare function formatBytes(bytes: number): string;
61
- //# sourceMappingURL=tui.d.ts.map
package/dist/utils/tui.js CHANGED
@@ -211,4 +211,3 @@ export function formatBytes(bytes) {
211
211
  return `${(bytes / 1024).toFixed(1)}KB`;
212
212
  return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
213
213
  }
214
- //# sourceMappingURL=tui.js.map
@@ -18,4 +18,3 @@ export declare function checkForUpdates(): Promise<UpdateInfo | null>;
18
18
  */
19
19
  export declare function notifyIfUpdateAvailable(): Promise<void>;
20
20
  export {};
21
- //# sourceMappingURL=update-check.d.ts.map
@@ -146,4 +146,3 @@ export async function notifyIfUpdateAvailable() {
146
146
  // Fail silently - don't interrupt user workflow
147
147
  }
148
148
  }
149
- //# sourceMappingURL=update-check.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wiggum-cli",
3
- "version": "0.12.0",
3
+ "version": "0.12.1",
4
4
  "description": "AI-powered feature development loop CLI",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -9,8 +9,7 @@
9
9
  "bin",
10
10
  "src/templates",
11
11
  "LICENSE",
12
- "README.md",
13
- "CONTRIBUTING.md"
12
+ "README.md"
14
13
  ],
15
14
  "bin": {
16
15
  "wiggum": "bin/ralph.js"
@@ -40,7 +39,6 @@
40
39
  "@ai-sdk/anthropic": "^3.0.15",
41
40
  "@ai-sdk/openai": "^3.0.12",
42
41
  "@braintrust/otel": "^0.2.0",
43
- "@clack/prompts": "^0.7.0",
44
42
  "@upstash/context7-tools-ai-sdk": "^0.2.1",
45
43
  "ai": "^6.0.41",
46
44
  "braintrust": "^2.0.2",
package/CONTRIBUTING.md DELETED
@@ -1,162 +0,0 @@
1
- # Contributing to Wiggum CLI
2
-
3
- Thanks for your interest in contributing! This guide covers everything you need to get started.
4
-
5
- ## What We Accept
6
-
7
- ### Always welcome
8
- - **Bug fixes** — Found something broken? PRs welcome
9
- - **Documentation** — Improvements, typos, examples, tutorials
10
- - **Scanner detectors** — Add support for new frameworks, tools, or tech stacks
11
- - **Templates** — New spec templates, prompt guides, or workflow examples
12
-
13
- ### Requires discussion first
14
- - **New commands** — Open an issue before coding to align on scope
15
- - **TUI components** — Discuss architecture impacts first
16
- - **Integrations** — New API integrations need maintainer approval
17
- - **Large refactors** — These need alignment first
18
-
19
- ## Getting Started
20
-
21
- ```bash
22
- git clone https://github.com/federiconeri/wiggum-cli.git
23
- cd wiggum-cli
24
- npm install
25
- npm run build
26
- ```
27
-
28
- ### Prerequisites
29
-
30
- - **Node.js** >= 18.0.0
31
- - **npm**
32
- - **Git**
33
-
34
- ## Development
35
-
36
- ### Build
37
-
38
- ```bash
39
- npm run build # Compile TypeScript + copy templates
40
- npm run dev # Watch mode (recompiles on save)
41
- ```
42
-
43
- ### Test
44
-
45
- ```bash
46
- npm test # Run all tests (vitest)
47
- npm run test:watch # Watch mode
48
- ```
49
-
50
- ### Run locally
51
-
52
- ```bash
53
- npm start # Runs bin/ralph.js
54
- # or
55
- node bin/ralph.js
56
- ```
57
-
58
- ## Project Structure
59
-
60
- ```
61
- src/
62
- ├── ai/ # AI agents, conversation management, enhancers
63
- ├── commands/ # CLI command handlers (init, new, run, etc.)
64
- ├── context/ # Project context storage and conversion
65
- ├── generator/ # Template-based file generation
66
- ├── repl/ # REPL/interactive shell logic
67
- ├── scanner/ # Tech stack detection (80+ technologies)
68
- ├── templates/ # Templates for prompts, scripts, configs
69
- ├── terminal/ # Terminal utilities
70
- ├── tui/ # Ink-based terminal UI (screens, components, hooks)
71
- ├── utils/ # Shared utilities (config, env, tracing)
72
- └── index.ts # Entry point
73
- ```
74
-
75
- Tests live next to source files as `*.test.ts`.
76
-
77
- ## Making Changes
78
-
79
- ### Branch naming
80
-
81
- ```
82
- feat/short-description # New features
83
- fix/short-description # Bug fixes
84
- chore/short-description # Maintenance, refactoring
85
- docs/short-description # Documentation
86
- ```
87
-
88
- ### Commit messages
89
-
90
- We use [Conventional Commits](https://www.conventionalcommits.org/):
91
-
92
- ```
93
- feat: add spec autocomplete to /run command
94
- fix(tui): handle empty input in interview screen
95
- chore: bump version to 0.11.19
96
- docs: update CLI reference in README
97
- ```
98
-
99
- **Format:** `type(scope): description`
100
-
101
- | Type | When to use |
102
- |------|------------|
103
- | `feat` | New feature or capability |
104
- | `fix` | Bug fix |
105
- | `chore` | Maintenance, deps, version bumps |
106
- | `docs` | Documentation only |
107
- | `refactor` | Code change that neither fixes nor adds a feature |
108
- | `test` | Adding or updating tests |
109
-
110
- Common scopes: `tui`, `ai`, `cli`, `scanner`, `loop`.
111
-
112
- ## Pull Requests
113
-
114
- 1. Fork the repo and create your branch from `main`
115
- 2. Make your changes and add tests if applicable
116
- 3. Ensure `npm test` and `npm run build` pass
117
- 4. Write a clear PR title using the commit convention format
118
- 5. Reference the related issue in your PR description
119
- 6. Keep PRs small and focused — single-purpose PRs are easier to review
120
-
121
- ## Code Style
122
-
123
- - **TypeScript** with strict mode enabled
124
- - **ESM** modules (`import`/`export`, `.js` extensions in imports)
125
- - **React JSX** for TUI components (Ink)
126
- - Run `npm run build` to catch type errors before submitting
127
-
128
- ## Reporting Bugs
129
-
130
- [Open an issue](https://github.com/federiconeri/wiggum-cli/issues/new) with:
131
-
132
- - Steps to reproduce
133
- - Expected vs actual behavior
134
- - Node.js version (`node -v`)
135
- - Wiggum version (`wiggum --version`)
136
- - OS and terminal
137
-
138
- ## Feature Requests
139
-
140
- [Open an issue](https://github.com/federiconeri/wiggum-cli/issues/new) describing:
141
-
142
- - The problem you're trying to solve
143
- - Your proposed solution
144
- - Any alternatives you considered
145
-
146
- ## Out of Scope
147
-
148
- We don't accept PRs for these areas without prior discussion:
149
-
150
- - **Core AI logic** — Maintained internally to ensure consistency and quality
151
- - **Paid features** — Dashboard, API infrastructure, cloud environment, and notification systems are developed separately
152
- - **Large refactors without discussion** — These need alignment with the maintainer first
153
-
154
- PRs in these areas without prior discussion will likely be closed.
155
-
156
- ## Security Issues
157
-
158
- Please don't open a public issue. Email security concerns directly to the maintainers.
159
-
160
- ## License
161
-
162
- By contributing, you agree that your contributions will be licensed under the project's [MIT + Commons Clause license](LICENSE).
@@ -1,17 +0,0 @@
1
- /**
2
- * Data factories for test fixtures
3
- *
4
- * Provides factory functions to build typed test data with sensible defaults.
5
- * Use the `overrides` parameter to customize specific fields per test.
6
- */
7
- import type { SessionState } from '../repl/session-state.js';
8
- import type { ScanResult } from '../scanner/types.js';
9
- /**
10
- * Create a SessionState with sensible defaults.
11
- */
12
- export declare function createTestSessionState(overrides?: Partial<SessionState>): SessionState;
13
- /**
14
- * Create a ScanResult with sensible defaults.
15
- */
16
- export declare function createTestScanResult(overrides?: Partial<ScanResult>): ScanResult;
17
- //# sourceMappingURL=fixtures.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/__test-utils__/fixtures.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,YAAY,CAU1F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,GAAE,OAAO,CAAC,UAAU,CAAM,GAAG,UAAU,CAOpF"}
@@ -1,32 +0,0 @@
1
- /**
2
- * Data factories for test fixtures
3
- *
4
- * Provides factory functions to build typed test data with sensible defaults.
5
- * Use the `overrides` parameter to customize specific fields per test.
6
- */
7
- /**
8
- * Create a SessionState with sensible defaults.
9
- */
10
- export function createTestSessionState(overrides = {}) {
11
- return {
12
- projectRoot: '/tmp/test-project',
13
- config: null,
14
- provider: 'anthropic',
15
- model: 'sonnet',
16
- conversationMode: false,
17
- initialized: true,
18
- ...overrides,
19
- };
20
- }
21
- /**
22
- * Create a ScanResult with sensible defaults.
23
- */
24
- export function createTestScanResult(overrides = {}) {
25
- return {
26
- projectRoot: '/tmp/test-project',
27
- stack: {},
28
- scanTime: 42,
29
- ...overrides,
30
- };
31
- }
32
- //# sourceMappingURL=fixtures.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../src/__test-utils__/fixtures.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,YAAmC,EAAE;IAC1E,OAAO;QACL,WAAW,EAAE,mBAAmB;QAChC,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,WAAW;QACrB,KAAK,EAAE,QAAQ;QACf,gBAAgB,EAAE,KAAK;QACvB,WAAW,EAAE,IAAI;QACjB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,YAAiC,EAAE;IACtE,OAAO;QACL,WAAW,EAAE,mBAAmB;QAChC,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;QACZ,GAAG,SAAS;KACb,CAAC;AACJ,CAAC"}
@@ -1,43 +0,0 @@
1
- /**
2
- * Ink test utilities
3
- *
4
- * Helpers for rendering and interacting with Ink components in tests.
5
- * Built on top of ink-testing-library.
6
- */
7
- import { render } from 'ink-testing-library';
8
- type Instance = ReturnType<typeof render>;
9
- /**
10
- * Wait for a short period to let React effects settle.
11
- */
12
- export declare function wait(ms?: number): Promise<void>;
13
- /**
14
- * Render and wait for effects to settle.
15
- * Returns the ink-testing-library Instance.
16
- *
17
- * IMPORTANT: Always use this (or manually wait after render) before
18
- * writing to stdin, because React 18 useEffect runs asynchronously.
19
- */
20
- export declare function renderAndWait(renderFn: () => Instance, delayMs?: number): Promise<Instance>;
21
- /**
22
- * Strip ANSI escape codes from a string for clean assertions.
23
- */
24
- export declare function stripAnsi(text: string): string;
25
- /**
26
- * Send a string of text as key-by-key input.
27
- * Each character is written individually to simulate real typing,
28
- * which is required because Ink's useInput processes multi-char
29
- * writes as paste events.
30
- *
31
- * Waits before and after writing to allow React effects to settle.
32
- */
33
- export declare function type(instance: Instance, text: string): Promise<void>;
34
- /**
35
- * Press Enter (carriage return).
36
- */
37
- export declare function pressEnter(instance: Instance): void;
38
- /**
39
- * Press Escape.
40
- */
41
- export declare function pressEscape(instance: Instance): void;
42
- export {};
43
- //# sourceMappingURL=ink-helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ink-helpers.d.ts","sourceRoot":"","sources":["../../src/__test-utils__/ink-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC;AAE1C;;GAEG;AACH,wBAAgB,IAAI,CAAC,EAAE,SAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3C;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,QAAQ,EACxB,OAAO,SAAK,GACX,OAAO,CAAC,QAAQ,CAAC,CAInB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9C;AAED;;;;;;;GAOG;AACH,wBAAsB,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS1E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAEnD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAEpD"}
@@ -1,62 +0,0 @@
1
- /**
2
- * Ink test utilities
3
- *
4
- * Helpers for rendering and interacting with Ink components in tests.
5
- * Built on top of ink-testing-library.
6
- */
7
- /**
8
- * Wait for a short period to let React effects settle.
9
- */
10
- export function wait(ms = 50) {
11
- return new Promise((resolve) => setTimeout(resolve, ms));
12
- }
13
- /**
14
- * Render and wait for effects to settle.
15
- * Returns the ink-testing-library Instance.
16
- *
17
- * IMPORTANT: Always use this (or manually wait after render) before
18
- * writing to stdin, because React 18 useEffect runs asynchronously.
19
- */
20
- export async function renderAndWait(renderFn, delayMs = 50) {
21
- const instance = renderFn();
22
- await wait(delayMs);
23
- return instance;
24
- }
25
- /**
26
- * Strip ANSI escape codes from a string for clean assertions.
27
- */
28
- export function stripAnsi(text) {
29
- // eslint-disable-next-line no-control-regex
30
- return text.replace(/\u001b\[[0-9;]*m/g, '');
31
- }
32
- /**
33
- * Send a string of text as key-by-key input.
34
- * Each character is written individually to simulate real typing,
35
- * which is required because Ink's useInput processes multi-char
36
- * writes as paste events.
37
- *
38
- * Waits before and after writing to allow React effects to settle.
39
- */
40
- export async function type(instance, text) {
41
- for (const char of text) {
42
- instance.stdin.write(char);
43
- // Yield to let React commit the state update before the next char.
44
- // Without this, React batches consecutive synchronous writes and
45
- // only the last write in each batch survives (stale closure values).
46
- await new Promise((resolve) => setTimeout(resolve, 0));
47
- }
48
- await wait(30);
49
- }
50
- /**
51
- * Press Enter (carriage return).
52
- */
53
- export function pressEnter(instance) {
54
- instance.stdin.write('\r');
55
- }
56
- /**
57
- * Press Escape.
58
- */
59
- export function pressEscape(instance) {
60
- instance.stdin.write('\u001b');
61
- }
62
- //# sourceMappingURL=ink-helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ink-helpers.js","sourceRoot":"","sources":["../../src/__test-utils__/ink-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,EAAE,GAAG,EAAE;IAC1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAwB,EACxB,OAAO,GAAG,EAAE;IAEZ,MAAM,QAAQ,GAAG,QAAQ,EAAE,CAAC;IAC5B,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,4CAA4C;IAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,QAAkB,EAAE,IAAY;IACzD,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,mEAAmE;QACnE,iEAAiE;QACjE,qEAAqE;QACrE,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,QAAkB;IAC3C,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,QAAkB;IAC5C,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC"}