@ginkoai/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 (711) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +230 -0
  3. package/dist/adapters/ai-adapter.d.ts +25 -0
  4. package/dist/adapters/ai-adapter.d.ts.map +1 -0
  5. package/dist/adapters/ai-adapter.js +21 -0
  6. package/dist/adapters/ai-adapter.js.map +1 -0
  7. package/dist/adapters/ai-completion.d.ts +35 -0
  8. package/dist/adapters/ai-completion.d.ts.map +1 -0
  9. package/dist/adapters/ai-completion.js +118 -0
  10. package/dist/adapters/ai-completion.js.map +1 -0
  11. package/dist/adapters/base.d.ts +64 -0
  12. package/dist/adapters/base.d.ts.map +1 -0
  13. package/dist/adapters/base.js +48 -0
  14. package/dist/adapters/base.js.map +1 -0
  15. package/dist/adapters/claude-adapter.d.ts +18 -0
  16. package/dist/adapters/claude-adapter.d.ts.map +1 -0
  17. package/dist/adapters/claude-adapter.js +73 -0
  18. package/dist/adapters/claude-adapter.js.map +1 -0
  19. package/dist/adapters/claude.d.ts +20 -0
  20. package/dist/adapters/claude.d.ts.map +1 -0
  21. package/dist/adapters/claude.js +91 -0
  22. package/dist/adapters/claude.js.map +1 -0
  23. package/dist/adapters/copilot-adapter.d.ts +16 -0
  24. package/dist/adapters/copilot-adapter.d.ts.map +1 -0
  25. package/dist/adapters/copilot-adapter.js +288 -0
  26. package/dist/adapters/copilot-adapter.js.map +1 -0
  27. package/dist/adapters/cursor-adapter.d.ts +22 -0
  28. package/dist/adapters/cursor-adapter.d.ts.map +1 -0
  29. package/dist/adapters/cursor-adapter.js +108 -0
  30. package/dist/adapters/cursor-adapter.js.map +1 -0
  31. package/dist/adapters/detector.d.ts +29 -0
  32. package/dist/adapters/detector.d.ts.map +1 -0
  33. package/dist/adapters/detector.js +132 -0
  34. package/dist/adapters/detector.js.map +1 -0
  35. package/dist/adapters/generic-adapter.d.ts +18 -0
  36. package/dist/adapters/generic-adapter.d.ts.map +1 -0
  37. package/dist/adapters/generic-adapter.js +37 -0
  38. package/dist/adapters/generic-adapter.js.map +1 -0
  39. package/dist/adapters/gpt4.d.ts +20 -0
  40. package/dist/adapters/gpt4.d.ts.map +1 -0
  41. package/dist/adapters/gpt4.js +114 -0
  42. package/dist/adapters/gpt4.js.map +1 -0
  43. package/dist/adapters/grok-adapter.d.ts +18 -0
  44. package/dist/adapters/grok-adapter.d.ts.map +1 -0
  45. package/dist/adapters/grok-adapter.js +94 -0
  46. package/dist/adapters/grok-adapter.js.map +1 -0
  47. package/dist/adapters/index.d.ts +18 -0
  48. package/dist/adapters/index.d.ts.map +1 -0
  49. package/dist/adapters/index.js +71 -0
  50. package/dist/adapters/index.js.map +1 -0
  51. package/dist/adapters/openai-adapter.d.ts +18 -0
  52. package/dist/adapters/openai-adapter.d.ts.map +1 -0
  53. package/dist/adapters/openai-adapter.js +97 -0
  54. package/dist/adapters/openai-adapter.js.map +1 -0
  55. package/dist/adapters/universal.d.ts +20 -0
  56. package/dist/adapters/universal.d.ts.map +1 -0
  57. package/dist/adapters/universal.js +80 -0
  58. package/dist/adapters/universal.js.map +1 -0
  59. package/dist/analysis/deep-analyzer.d.ts +61 -0
  60. package/dist/analysis/deep-analyzer.d.ts.map +1 -0
  61. package/dist/analysis/deep-analyzer.js +349 -0
  62. package/dist/analysis/deep-analyzer.js.map +1 -0
  63. package/dist/analysis/project-analyzer.d.ts +25 -0
  64. package/dist/analysis/project-analyzer.d.ts.map +1 -0
  65. package/dist/analysis/project-analyzer.js +244 -0
  66. package/dist/analysis/project-analyzer.js.map +1 -0
  67. package/dist/commands/architecture/architecture-pipeline-enhanced.d.ts +82 -0
  68. package/dist/commands/architecture/architecture-pipeline-enhanced.d.ts.map +1 -0
  69. package/dist/commands/architecture/architecture-pipeline-enhanced.js +649 -0
  70. package/dist/commands/architecture/architecture-pipeline-enhanced.js.map +1 -0
  71. package/dist/commands/architecture/architecture-pipeline.d.ts +105 -0
  72. package/dist/commands/architecture/architecture-pipeline.d.ts.map +1 -0
  73. package/dist/commands/architecture/architecture-pipeline.js +510 -0
  74. package/dist/commands/architecture/architecture-pipeline.js.map +1 -0
  75. package/dist/commands/architecture/architecture-reflection.d.ts +67 -0
  76. package/dist/commands/architecture/architecture-reflection.d.ts.map +1 -0
  77. package/dist/commands/architecture/architecture-reflection.js +508 -0
  78. package/dist/commands/architecture/architecture-reflection.js.map +1 -0
  79. package/dist/commands/architecture/index.d.ts +21 -0
  80. package/dist/commands/architecture/index.d.ts.map +1 -0
  81. package/dist/commands/architecture/index.js +41 -0
  82. package/dist/commands/architecture/index.js.map +1 -0
  83. package/dist/commands/architecture.d.ts +20 -0
  84. package/dist/commands/architecture.d.ts.map +1 -0
  85. package/dist/commands/architecture.js +223 -0
  86. package/dist/commands/architecture.js.map +1 -0
  87. package/dist/commands/backlog/ai-enhanced.d.ts +83 -0
  88. package/dist/commands/backlog/ai-enhanced.d.ts.map +1 -0
  89. package/dist/commands/backlog/ai-enhanced.js +462 -0
  90. package/dist/commands/backlog/ai-enhanced.js.map +1 -0
  91. package/dist/commands/backlog/ai-prompt.d.ts +21 -0
  92. package/dist/commands/backlog/ai-prompt.d.ts.map +1 -0
  93. package/dist/commands/backlog/ai-prompt.js +373 -0
  94. package/dist/commands/backlog/ai-prompt.js.map +1 -0
  95. package/dist/commands/backlog/ai-template.d.ts +21 -0
  96. package/dist/commands/backlog/ai-template.d.ts.map +1 -0
  97. package/dist/commands/backlog/ai-template.js +374 -0
  98. package/dist/commands/backlog/ai-template.js.map +1 -0
  99. package/dist/commands/backlog/ai.d.ts +21 -0
  100. package/dist/commands/backlog/ai.d.ts.map +1 -0
  101. package/dist/commands/backlog/ai.js +76 -0
  102. package/dist/commands/backlog/ai.js.map +1 -0
  103. package/dist/commands/backlog/backlog-pipeline.d.ts +103 -0
  104. package/dist/commands/backlog/backlog-pipeline.d.ts.map +1 -0
  105. package/dist/commands/backlog/backlog-pipeline.js +538 -0
  106. package/dist/commands/backlog/backlog-pipeline.js.map +1 -0
  107. package/dist/commands/backlog/backlog-reflection.d.ts +48 -0
  108. package/dist/commands/backlog/backlog-reflection.d.ts.map +1 -0
  109. package/dist/commands/backlog/backlog-reflection.js +231 -0
  110. package/dist/commands/backlog/backlog-reflection.js.map +1 -0
  111. package/dist/commands/backlog/base.d.ts +95 -0
  112. package/dist/commands/backlog/base.d.ts.map +1 -0
  113. package/dist/commands/backlog/base.js +291 -0
  114. package/dist/commands/backlog/base.js.map +1 -0
  115. package/dist/commands/backlog/complete.d.ts +20 -0
  116. package/dist/commands/backlog/complete.d.ts.map +1 -0
  117. package/dist/commands/backlog/complete.js +83 -0
  118. package/dist/commands/backlog/complete.js.map +1 -0
  119. package/dist/commands/backlog/context-gatherer.d.ts +76 -0
  120. package/dist/commands/backlog/context-gatherer.d.ts.map +1 -0
  121. package/dist/commands/backlog/context-gatherer.js +216 -0
  122. package/dist/commands/backlog/context-gatherer.js.map +1 -0
  123. package/dist/commands/backlog/create.d.ts +25 -0
  124. package/dist/commands/backlog/create.d.ts.map +1 -0
  125. package/dist/commands/backlog/create.js +131 -0
  126. package/dist/commands/backlog/create.js.map +1 -0
  127. package/dist/commands/backlog/index.d.ts +17 -0
  128. package/dist/commands/backlog/index.d.ts.map +1 -0
  129. package/dist/commands/backlog/index.js +177 -0
  130. package/dist/commands/backlog/index.js.map +1 -0
  131. package/dist/commands/backlog/list.d.ts +25 -0
  132. package/dist/commands/backlog/list.d.ts.map +1 -0
  133. package/dist/commands/backlog/list.js +136 -0
  134. package/dist/commands/backlog/list.js.map +1 -0
  135. package/dist/commands/backlog/quick-query.d.ts +16 -0
  136. package/dist/commands/backlog/quick-query.d.ts.map +1 -0
  137. package/dist/commands/backlog/quick-query.js +126 -0
  138. package/dist/commands/backlog/quick-query.js.map +1 -0
  139. package/dist/commands/backlog/show.d.ts +20 -0
  140. package/dist/commands/backlog/show.d.ts.map +1 -0
  141. package/dist/commands/backlog/show.js +95 -0
  142. package/dist/commands/backlog/show.js.map +1 -0
  143. package/dist/commands/backlog/update.d.ts +25 -0
  144. package/dist/commands/backlog/update.d.ts.map +1 -0
  145. package/dist/commands/backlog/update.js +113 -0
  146. package/dist/commands/backlog/update.js.map +1 -0
  147. package/dist/commands/bug/bug-context-gatherer.d.ts +58 -0
  148. package/dist/commands/bug/bug-context-gatherer.d.ts.map +1 -0
  149. package/dist/commands/bug/bug-context-gatherer.js +228 -0
  150. package/dist/commands/bug/bug-context-gatherer.js.map +1 -0
  151. package/dist/commands/bug/bug-reflection.d.ts +70 -0
  152. package/dist/commands/bug/bug-reflection.d.ts.map +1 -0
  153. package/dist/commands/bug/bug-reflection.js +343 -0
  154. package/dist/commands/bug/bug-reflection.js.map +1 -0
  155. package/dist/commands/capture/capture-reflection.d.ts +139 -0
  156. package/dist/commands/capture/capture-reflection.d.ts.map +1 -0
  157. package/dist/commands/capture/capture-reflection.js +583 -0
  158. package/dist/commands/capture/capture-reflection.js.map +1 -0
  159. package/dist/commands/capture.d.ts +22 -0
  160. package/dist/commands/capture.d.ts.map +1 -0
  161. package/dist/commands/capture.js +301 -0
  162. package/dist/commands/capture.js.map +1 -0
  163. package/dist/commands/changelog/changelog-reflection.d.ts +65 -0
  164. package/dist/commands/changelog/changelog-reflection.d.ts.map +1 -0
  165. package/dist/commands/changelog/changelog-reflection.js +252 -0
  166. package/dist/commands/changelog/changelog-reflection.js.map +1 -0
  167. package/dist/commands/compact.d.ts +15 -0
  168. package/dist/commands/compact.d.ts.map +1 -0
  169. package/dist/commands/compact.js +113 -0
  170. package/dist/commands/compact.js.map +1 -0
  171. package/dist/commands/config.d.ts +10 -0
  172. package/dist/commands/config.d.ts.map +1 -0
  173. package/dist/commands/config.js +85 -0
  174. package/dist/commands/config.js.map +1 -0
  175. package/dist/commands/context-new.d.ts +18 -0
  176. package/dist/commands/context-new.d.ts.map +1 -0
  177. package/dist/commands/context-new.js +265 -0
  178. package/dist/commands/context-new.js.map +1 -0
  179. package/dist/commands/context.d.ts +16 -0
  180. package/dist/commands/context.d.ts.map +1 -0
  181. package/dist/commands/context.js +82 -0
  182. package/dist/commands/context.js.map +1 -0
  183. package/dist/commands/documentation/documentation-pipeline.d.ts +130 -0
  184. package/dist/commands/documentation/documentation-pipeline.d.ts.map +1 -0
  185. package/dist/commands/documentation/documentation-pipeline.js +716 -0
  186. package/dist/commands/documentation/documentation-pipeline.js.map +1 -0
  187. package/dist/commands/documentation/documentation-reflection.d.ts +54 -0
  188. package/dist/commands/documentation/documentation-reflection.d.ts.map +1 -0
  189. package/dist/commands/documentation/documentation-reflection.js +338 -0
  190. package/dist/commands/documentation/documentation-reflection.js.map +1 -0
  191. package/dist/commands/explore/explore-reflection-pipeline.d.ts +117 -0
  192. package/dist/commands/explore/explore-reflection-pipeline.d.ts.map +1 -0
  193. package/dist/commands/explore/explore-reflection-pipeline.js +503 -0
  194. package/dist/commands/explore/explore-reflection-pipeline.js.map +1 -0
  195. package/dist/commands/explore/index.d.ts +29 -0
  196. package/dist/commands/explore/index.d.ts.map +1 -0
  197. package/dist/commands/explore/index.js +30 -0
  198. package/dist/commands/explore/index.js.map +1 -0
  199. package/dist/commands/explore.d.ts +20 -0
  200. package/dist/commands/explore.d.ts.map +1 -0
  201. package/dist/commands/explore.js +224 -0
  202. package/dist/commands/explore.js.map +1 -0
  203. package/dist/commands/git/git-context-gatherer.d.ts +101 -0
  204. package/dist/commands/git/git-context-gatherer.d.ts.map +1 -0
  205. package/dist/commands/git/git-context-gatherer.js +284 -0
  206. package/dist/commands/git/git-context-gatherer.js.map +1 -0
  207. package/dist/commands/git/git-pipeline.d.ts +75 -0
  208. package/dist/commands/git/git-pipeline.d.ts.map +1 -0
  209. package/dist/commands/git/git-pipeline.js +530 -0
  210. package/dist/commands/git/git-pipeline.js.map +1 -0
  211. package/dist/commands/git/git-reflection.d.ts +50 -0
  212. package/dist/commands/git/git-reflection.d.ts.map +1 -0
  213. package/dist/commands/git/git-reflection.js +193 -0
  214. package/dist/commands/git/git-reflection.js.map +1 -0
  215. package/dist/commands/handoff/handoff-reflection-pipeline.d.ts +106 -0
  216. package/dist/commands/handoff/handoff-reflection-pipeline.d.ts.map +1 -0
  217. package/dist/commands/handoff/handoff-reflection-pipeline.js +534 -0
  218. package/dist/commands/handoff/handoff-reflection-pipeline.js.map +1 -0
  219. package/dist/commands/handoff/handoff-save.d.ts +16 -0
  220. package/dist/commands/handoff/handoff-save.d.ts.map +1 -0
  221. package/dist/commands/handoff/handoff-save.js +72 -0
  222. package/dist/commands/handoff/handoff-save.js.map +1 -0
  223. package/dist/commands/handoff/index.d.ts +19 -0
  224. package/dist/commands/handoff/index.d.ts.map +1 -0
  225. package/dist/commands/handoff/index.js +55 -0
  226. package/dist/commands/handoff/index.js.map +1 -0
  227. package/dist/commands/handoff-ai-orig.d.ts +27 -0
  228. package/dist/commands/handoff-ai-orig.d.ts.map +1 -0
  229. package/dist/commands/handoff-ai-orig.js +405 -0
  230. package/dist/commands/handoff-ai-orig.js.map +1 -0
  231. package/dist/commands/handoff-ai.d.ts +27 -0
  232. package/dist/commands/handoff-ai.d.ts.map +1 -0
  233. package/dist/commands/handoff-ai.js +405 -0
  234. package/dist/commands/handoff-ai.js.map +1 -0
  235. package/dist/commands/handoff-enhanced-orig.d.ts +25 -0
  236. package/dist/commands/handoff-enhanced-orig.d.ts.map +1 -0
  237. package/dist/commands/handoff-enhanced-orig.js +349 -0
  238. package/dist/commands/handoff-enhanced-orig.js.map +1 -0
  239. package/dist/commands/handoff-enhanced.d.ts +25 -0
  240. package/dist/commands/handoff-enhanced.d.ts.map +1 -0
  241. package/dist/commands/handoff-enhanced.js +349 -0
  242. package/dist/commands/handoff-enhanced.js.map +1 -0
  243. package/dist/commands/handoff-orig.d.ts +10 -0
  244. package/dist/commands/handoff-orig.d.ts.map +1 -0
  245. package/dist/commands/handoff-orig.js +167 -0
  246. package/dist/commands/handoff-orig.js.map +1 -0
  247. package/dist/commands/handoff.d.ts +10 -0
  248. package/dist/commands/handoff.d.ts.map +1 -0
  249. package/dist/commands/handoff.js +167 -0
  250. package/dist/commands/handoff.js.map +1 -0
  251. package/dist/commands/init-copilot.d.ts +6 -0
  252. package/dist/commands/init-copilot.d.ts.map +1 -0
  253. package/dist/commands/init-copilot.js +151 -0
  254. package/dist/commands/init-copilot.js.map +1 -0
  255. package/dist/commands/init-cursor.d.ts +5 -0
  256. package/dist/commands/init-cursor.d.ts.map +1 -0
  257. package/dist/commands/init-cursor.js +95 -0
  258. package/dist/commands/init-cursor.js.map +1 -0
  259. package/dist/commands/init-enhanced.d.ts +20 -0
  260. package/dist/commands/init-enhanced.d.ts.map +1 -0
  261. package/dist/commands/init-enhanced.js +430 -0
  262. package/dist/commands/init-enhanced.js.map +1 -0
  263. package/dist/commands/init.d.ts +16 -0
  264. package/dist/commands/init.d.ts.map +1 -0
  265. package/dist/commands/init.js +213 -0
  266. package/dist/commands/init.js.map +1 -0
  267. package/dist/commands/magic-prompt.d.ts +20 -0
  268. package/dist/commands/magic-prompt.d.ts.map +1 -0
  269. package/dist/commands/magic-prompt.js +166 -0
  270. package/dist/commands/magic-prompt.js.map +1 -0
  271. package/dist/commands/magic-simple.d.ts +20 -0
  272. package/dist/commands/magic-simple.d.ts.map +1 -0
  273. package/dist/commands/magic-simple.js +32 -0
  274. package/dist/commands/magic-simple.js.map +1 -0
  275. package/dist/commands/magic.d.ts +20 -0
  276. package/dist/commands/magic.d.ts.map +1 -0
  277. package/dist/commands/magic.js +144 -0
  278. package/dist/commands/magic.js.map +1 -0
  279. package/dist/commands/plan/plan-reflection-pipeline.d.ts +126 -0
  280. package/dist/commands/plan/plan-reflection-pipeline.d.ts.map +1 -0
  281. package/dist/commands/plan/plan-reflection-pipeline.js +554 -0
  282. package/dist/commands/plan/plan-reflection-pipeline.js.map +1 -0
  283. package/dist/commands/plan.d.ts +20 -0
  284. package/dist/commands/plan.d.ts.map +1 -0
  285. package/dist/commands/plan.js +253 -0
  286. package/dist/commands/plan.js.map +1 -0
  287. package/dist/commands/prd/index.d.ts +21 -0
  288. package/dist/commands/prd/index.d.ts.map +1 -0
  289. package/dist/commands/prd/index.js +41 -0
  290. package/dist/commands/prd/index.js.map +1 -0
  291. package/dist/commands/prd/prd-pipeline-enhanced.d.ts +82 -0
  292. package/dist/commands/prd/prd-pipeline-enhanced.d.ts.map +1 -0
  293. package/dist/commands/prd/prd-pipeline-enhanced.js +565 -0
  294. package/dist/commands/prd/prd-pipeline-enhanced.js.map +1 -0
  295. package/dist/commands/prd/prd-pipeline.d.ts +106 -0
  296. package/dist/commands/prd/prd-pipeline.d.ts.map +1 -0
  297. package/dist/commands/prd/prd-pipeline.js +491 -0
  298. package/dist/commands/prd/prd-pipeline.js.map +1 -0
  299. package/dist/commands/prd/prd-reflection-enhanced.d.ts +63 -0
  300. package/dist/commands/prd/prd-reflection-enhanced.d.ts.map +1 -0
  301. package/dist/commands/prd/prd-reflection-enhanced.js +310 -0
  302. package/dist/commands/prd/prd-reflection-enhanced.js.map +1 -0
  303. package/dist/commands/prd/prd-reflection.d.ts +59 -0
  304. package/dist/commands/prd/prd-reflection.d.ts.map +1 -0
  305. package/dist/commands/prd/prd-reflection.js +548 -0
  306. package/dist/commands/prd/prd-reflection.js.map +1 -0
  307. package/dist/commands/reflect.d.ts +24 -0
  308. package/dist/commands/reflect.d.ts.map +1 -0
  309. package/dist/commands/reflect.js +135 -0
  310. package/dist/commands/reflect.js.map +1 -0
  311. package/dist/commands/ship/ship-reflection.d.ts +164 -0
  312. package/dist/commands/ship/ship-reflection.d.ts.map +1 -0
  313. package/dist/commands/ship/ship-reflection.js +732 -0
  314. package/dist/commands/ship/ship-reflection.js.map +1 -0
  315. package/dist/commands/ship-ai.d.ts +28 -0
  316. package/dist/commands/ship-ai.d.ts.map +1 -0
  317. package/dist/commands/ship-ai.js +318 -0
  318. package/dist/commands/ship-ai.js.map +1 -0
  319. package/dist/commands/ship.d.ts +17 -0
  320. package/dist/commands/ship.d.ts.map +1 -0
  321. package/dist/commands/ship.js +175 -0
  322. package/dist/commands/ship.js.map +1 -0
  323. package/dist/commands/sprint/index.d.ts +21 -0
  324. package/dist/commands/sprint/index.d.ts.map +1 -0
  325. package/dist/commands/sprint/index.js +39 -0
  326. package/dist/commands/sprint/index.js.map +1 -0
  327. package/dist/commands/sprint/sprint-pipeline-enhanced.d.ts +142 -0
  328. package/dist/commands/sprint/sprint-pipeline-enhanced.d.ts.map +1 -0
  329. package/dist/commands/sprint/sprint-pipeline-enhanced.js +822 -0
  330. package/dist/commands/sprint/sprint-pipeline-enhanced.js.map +1 -0
  331. package/dist/commands/sprint/sprint-pipeline.d.ts +72 -0
  332. package/dist/commands/sprint/sprint-pipeline.d.ts.map +1 -0
  333. package/dist/commands/sprint/sprint-pipeline.js +363 -0
  334. package/dist/commands/sprint/sprint-pipeline.js.map +1 -0
  335. package/dist/commands/start/index.d.ts +19 -0
  336. package/dist/commands/start/index.d.ts.map +1 -0
  337. package/dist/commands/start/index.js +41 -0
  338. package/dist/commands/start/index.js.map +1 -0
  339. package/dist/commands/start/start-reflection-pipeline.d.ts +99 -0
  340. package/dist/commands/start/start-reflection-pipeline.d.ts.map +1 -0
  341. package/dist/commands/start/start-reflection-pipeline.js +458 -0
  342. package/dist/commands/start/start-reflection-pipeline.js.map +1 -0
  343. package/dist/commands/start/start-reflection.d.ts +89 -0
  344. package/dist/commands/start/start-reflection.d.ts.map +1 -0
  345. package/dist/commands/start/start-reflection.js +572 -0
  346. package/dist/commands/start/start-reflection.js.map +1 -0
  347. package/dist/commands/start/start-with-synthesis.d.ts +20 -0
  348. package/dist/commands/start/start-with-synthesis.d.ts.map +1 -0
  349. package/dist/commands/start/start-with-synthesis.js +134 -0
  350. package/dist/commands/start/start-with-synthesis.js.map +1 -0
  351. package/dist/commands/start-enhanced-orig.d.ts +19 -0
  352. package/dist/commands/start-enhanced-orig.d.ts.map +1 -0
  353. package/dist/commands/start-enhanced-orig.js +434 -0
  354. package/dist/commands/start-enhanced-orig.js.map +1 -0
  355. package/dist/commands/start-enhanced.d.ts +19 -0
  356. package/dist/commands/start-enhanced.d.ts.map +1 -0
  357. package/dist/commands/start-enhanced.js +434 -0
  358. package/dist/commands/start-enhanced.js.map +1 -0
  359. package/dist/commands/start-orig.d.ts +10 -0
  360. package/dist/commands/start-orig.d.ts.map +1 -0
  361. package/dist/commands/start-orig.js +119 -0
  362. package/dist/commands/start-orig.js.map +1 -0
  363. package/dist/commands/start.d.ts +10 -0
  364. package/dist/commands/start.d.ts.map +1 -0
  365. package/dist/commands/start.js +119 -0
  366. package/dist/commands/start.js.map +1 -0
  367. package/dist/commands/status.d.ts +11 -0
  368. package/dist/commands/status.d.ts.map +1 -0
  369. package/dist/commands/status.js +119 -0
  370. package/dist/commands/status.js.map +1 -0
  371. package/dist/commands/testing/index.d.ts +21 -0
  372. package/dist/commands/testing/index.d.ts.map +1 -0
  373. package/dist/commands/testing/index.js +41 -0
  374. package/dist/commands/testing/index.js.map +1 -0
  375. package/dist/commands/testing/testing-pipeline-enhanced.d.ts +94 -0
  376. package/dist/commands/testing/testing-pipeline-enhanced.d.ts.map +1 -0
  377. package/dist/commands/testing/testing-pipeline-enhanced.js +760 -0
  378. package/dist/commands/testing/testing-pipeline-enhanced.js.map +1 -0
  379. package/dist/commands/testing/testing-pipeline.d.ts +77 -0
  380. package/dist/commands/testing/testing-pipeline.d.ts.map +1 -0
  381. package/dist/commands/testing/testing-pipeline.js +479 -0
  382. package/dist/commands/testing/testing-pipeline.js.map +1 -0
  383. package/dist/commands/uninstall-copilot.d.ts +5 -0
  384. package/dist/commands/uninstall-copilot.d.ts.map +1 -0
  385. package/dist/commands/uninstall-copilot.js +143 -0
  386. package/dist/commands/uninstall-copilot.js.map +1 -0
  387. package/dist/commands/uninstall-cursor.d.ts +6 -0
  388. package/dist/commands/uninstall-cursor.d.ts.map +1 -0
  389. package/dist/commands/uninstall-cursor.js +124 -0
  390. package/dist/commands/uninstall-cursor.js.map +1 -0
  391. package/dist/commands/vibecheck-ai.d.ts +25 -0
  392. package/dist/commands/vibecheck-ai.d.ts.map +1 -0
  393. package/dist/commands/vibecheck-ai.js +260 -0
  394. package/dist/commands/vibecheck-ai.js.map +1 -0
  395. package/dist/commands/vibecheck-aware.d.ts +19 -0
  396. package/dist/commands/vibecheck-aware.d.ts.map +1 -0
  397. package/dist/commands/vibecheck-aware.js +350 -0
  398. package/dist/commands/vibecheck-aware.js.map +1 -0
  399. package/dist/commands/vibecheck-final.d.ts +22 -0
  400. package/dist/commands/vibecheck-final.d.ts.map +1 -0
  401. package/dist/commands/vibecheck-final.js +132 -0
  402. package/dist/commands/vibecheck-final.js.map +1 -0
  403. package/dist/commands/vibecheck-natural.d.ts +18 -0
  404. package/dist/commands/vibecheck-natural.d.ts.map +1 -0
  405. package/dist/commands/vibecheck-natural.js +105 -0
  406. package/dist/commands/vibecheck-natural.js.map +1 -0
  407. package/dist/commands/vibecheck-simple.d.ts +20 -0
  408. package/dist/commands/vibecheck-simple.d.ts.map +1 -0
  409. package/dist/commands/vibecheck-simple.js +136 -0
  410. package/dist/commands/vibecheck-simple.js.map +1 -0
  411. package/dist/commands/vibecheck.d.ts +10 -0
  412. package/dist/commands/vibecheck.d.ts.map +1 -0
  413. package/dist/commands/vibecheck.js +95 -0
  414. package/dist/commands/vibecheck.js.map +1 -0
  415. package/dist/core/adapters/path-adapter.d.ts +144 -0
  416. package/dist/core/adapters/path-adapter.d.ts.map +1 -0
  417. package/dist/core/adapters/path-adapter.js +245 -0
  418. package/dist/core/adapters/path-adapter.js.map +1 -0
  419. package/dist/core/command-shortcuts.d.ts +62 -0
  420. package/dist/core/command-shortcuts.d.ts.map +1 -0
  421. package/dist/core/command-shortcuts.js +124 -0
  422. package/dist/core/command-shortcuts.js.map +1 -0
  423. package/dist/core/config/config-aware-reflection.d.ts +37 -0
  424. package/dist/core/config/config-aware-reflection.d.ts.map +1 -0
  425. package/dist/core/config/config-aware-reflection.js +97 -0
  426. package/dist/core/config/config-aware-reflection.js.map +1 -0
  427. package/dist/core/config/config-loader.d.ts +154 -0
  428. package/dist/core/config/config-loader.d.ts.map +1 -0
  429. package/dist/core/config/config-loader.js +424 -0
  430. package/dist/core/config/config-loader.js.map +1 -0
  431. package/dist/core/config/config-migrator.d.ts +150 -0
  432. package/dist/core/config/config-migrator.d.ts.map +1 -0
  433. package/dist/core/config/config-migrator.js +423 -0
  434. package/dist/core/config/config-migrator.js.map +1 -0
  435. package/dist/core/config/config-schema.d.ts +276 -0
  436. package/dist/core/config/config-schema.d.ts.map +1 -0
  437. package/dist/core/config/config-schema.js +277 -0
  438. package/dist/core/config/config-schema.js.map +1 -0
  439. package/dist/core/config/index.d.ts +260 -0
  440. package/dist/core/config/index.d.ts.map +1 -0
  441. package/dist/core/config/index.js +283 -0
  442. package/dist/core/config/index.js.map +1 -0
  443. package/dist/core/config/interactive-config.d.ts +76 -0
  444. package/dist/core/config/interactive-config.d.ts.map +1 -0
  445. package/dist/core/config/interactive-config.js +315 -0
  446. package/dist/core/config/interactive-config.js.map +1 -0
  447. package/dist/core/config/path-config.d.ts +121 -0
  448. package/dist/core/config/path-config.d.ts.map +1 -0
  449. package/dist/core/config/path-config.js +210 -0
  450. package/dist/core/config/path-config.js.map +1 -0
  451. package/dist/core/config/path-resolver.d.ts +151 -0
  452. package/dist/core/config/path-resolver.d.ts.map +1 -0
  453. package/dist/core/config/path-resolver.js +343 -0
  454. package/dist/core/config/path-resolver.js.map +1 -0
  455. package/dist/core/config/project-detector.d.ts +58 -0
  456. package/dist/core/config/project-detector.d.ts.map +1 -0
  457. package/dist/core/config/project-detector.js +310 -0
  458. package/dist/core/config/project-detector.js.map +1 -0
  459. package/dist/core/config-backup/config-aware-reflection.d.ts +37 -0
  460. package/dist/core/config-backup/config-aware-reflection.d.ts.map +1 -0
  461. package/dist/core/config-backup/config-aware-reflection.js +97 -0
  462. package/dist/core/config-backup/config-aware-reflection.js.map +1 -0
  463. package/dist/core/config-backup/config-loader.d.ts +71 -0
  464. package/dist/core/config-backup/config-loader.d.ts.map +1 -0
  465. package/dist/core/config-backup/config-loader.js +288 -0
  466. package/dist/core/config-backup/config-loader.js.map +1 -0
  467. package/dist/core/config-backup/interactive-config.d.ts +76 -0
  468. package/dist/core/config-backup/interactive-config.d.ts.map +1 -0
  469. package/dist/core/config-backup/interactive-config.js +315 -0
  470. package/dist/core/config-backup/interactive-config.js.map +1 -0
  471. package/dist/core/config-backup/path-config.d.ts +121 -0
  472. package/dist/core/config-backup/path-config.d.ts.map +1 -0
  473. package/dist/core/config-backup/path-config.js +210 -0
  474. package/dist/core/config-backup/path-config.js.map +1 -0
  475. package/dist/core/config-backup/project-detector.d.ts +58 -0
  476. package/dist/core/config-backup/project-detector.d.ts.map +1 -0
  477. package/dist/core/config-backup/project-detector.js +310 -0
  478. package/dist/core/config-backup/project-detector.js.map +1 -0
  479. package/dist/core/documents/document-manager.d.ts +97 -0
  480. package/dist/core/documents/document-manager.d.ts.map +1 -0
  481. package/dist/core/documents/document-manager.js +441 -0
  482. package/dist/core/documents/document-manager.js.map +1 -0
  483. package/dist/core/documents/document-migrator.d.ts +138 -0
  484. package/dist/core/documents/document-migrator.d.ts.map +1 -0
  485. package/dist/core/documents/document-migrator.js +349 -0
  486. package/dist/core/documents/document-migrator.js.map +1 -0
  487. package/dist/core/documents/document-namer.d.ts +111 -0
  488. package/dist/core/documents/document-namer.d.ts.map +1 -0
  489. package/dist/core/documents/document-namer.js +225 -0
  490. package/dist/core/documents/document-namer.js.map +1 -0
  491. package/dist/core/documents/examples.d.ts +74 -0
  492. package/dist/core/documents/examples.d.ts.map +1 -0
  493. package/dist/core/documents/examples.js +273 -0
  494. package/dist/core/documents/examples.js.map +1 -0
  495. package/dist/core/documents/file-system.d.ts +93 -0
  496. package/dist/core/documents/file-system.d.ts.map +1 -0
  497. package/dist/core/documents/file-system.js +432 -0
  498. package/dist/core/documents/file-system.js.map +1 -0
  499. package/dist/core/documents/index.d.ts +97 -0
  500. package/dist/core/documents/index.d.ts.map +1 -0
  501. package/dist/core/documents/index.js +119 -0
  502. package/dist/core/documents/index.js.map +1 -0
  503. package/dist/core/documents/markdown-processor.d.ts +84 -0
  504. package/dist/core/documents/markdown-processor.d.ts.map +1 -0
  505. package/dist/core/documents/markdown-processor.js +302 -0
  506. package/dist/core/documents/markdown-processor.js.map +1 -0
  507. package/dist/core/documents/sequence-manager.d.ts +107 -0
  508. package/dist/core/documents/sequence-manager.d.ts.map +1 -0
  509. package/dist/core/documents/sequence-manager.js +246 -0
  510. package/dist/core/documents/sequence-manager.js.map +1 -0
  511. package/dist/core/documents/template-engine.d.ts +101 -0
  512. package/dist/core/documents/template-engine.d.ts.map +1 -0
  513. package/dist/core/documents/template-engine.js +440 -0
  514. package/dist/core/documents/template-engine.js.map +1 -0
  515. package/dist/core/handoff-quality.d.ts +164 -0
  516. package/dist/core/handoff-quality.d.ts.map +1 -0
  517. package/dist/core/handoff-quality.js +590 -0
  518. package/dist/core/handoff-quality.js.map +1 -0
  519. package/dist/core/platform/hook-adapter.d.ts +109 -0
  520. package/dist/core/platform/hook-adapter.d.ts.map +1 -0
  521. package/dist/core/platform/hook-adapter.js +527 -0
  522. package/dist/core/platform/hook-adapter.js.map +1 -0
  523. package/dist/core/platform/hook-migration.d.ts +73 -0
  524. package/dist/core/platform/hook-migration.d.ts.map +1 -0
  525. package/dist/core/platform/hook-migration.js +339 -0
  526. package/dist/core/platform/hook-migration.js.map +1 -0
  527. package/dist/core/platform/hook-migrator.d.ts +49 -0
  528. package/dist/core/platform/hook-migrator.d.ts.map +1 -0
  529. package/dist/core/platform/hook-migrator.js +305 -0
  530. package/dist/core/platform/hook-migrator.js.map +1 -0
  531. package/dist/core/platform/hook-templates.d.ts +60 -0
  532. package/dist/core/platform/hook-templates.d.ts.map +1 -0
  533. package/dist/core/platform/hook-templates.js +352 -0
  534. package/dist/core/platform/hook-templates.js.map +1 -0
  535. package/dist/core/platform/index.d.ts +82 -0
  536. package/dist/core/platform/index.d.ts.map +1 -0
  537. package/dist/core/platform/index.js +173 -0
  538. package/dist/core/platform/index.js.map +1 -0
  539. package/dist/core/platform/path-normalizer.d.ts +117 -0
  540. package/dist/core/platform/path-normalizer.d.ts.map +1 -0
  541. package/dist/core/platform/path-normalizer.js +333 -0
  542. package/dist/core/platform/path-normalizer.js.map +1 -0
  543. package/dist/core/platform/path-resolver.d.ts +120 -0
  544. package/dist/core/platform/path-resolver.d.ts.map +1 -0
  545. package/dist/core/platform/path-resolver.js +339 -0
  546. package/dist/core/platform/path-resolver.js.map +1 -0
  547. package/dist/core/platform/platform-adapter.d.ts +101 -0
  548. package/dist/core/platform/platform-adapter.d.ts.map +1 -0
  549. package/dist/core/platform/platform-adapter.js +243 -0
  550. package/dist/core/platform/platform-adapter.js.map +1 -0
  551. package/dist/core/platform/platform-detector.d.ts +122 -0
  552. package/dist/core/platform/platform-detector.d.ts.map +1 -0
  553. package/dist/core/platform/platform-detector.js +318 -0
  554. package/dist/core/platform/platform-detector.js.map +1 -0
  555. package/dist/core/platform/platform-templates.d.ts +62 -0
  556. package/dist/core/platform/platform-templates.d.ts.map +1 -0
  557. package/dist/core/platform/platform-templates.js +364 -0
  558. package/dist/core/platform/platform-templates.js.map +1 -0
  559. package/dist/core/platform/types.d.ts +54 -0
  560. package/dist/core/platform/types.d.ts.map +1 -0
  561. package/dist/core/platform/types.js +12 -0
  562. package/dist/core/platform/types.js.map +1 -0
  563. package/dist/core/polyglot-example.d.ts +115 -0
  564. package/dist/core/polyglot-example.d.ts.map +1 -0
  565. package/dist/core/polyglot-example.js +341 -0
  566. package/dist/core/polyglot-example.js.map +1 -0
  567. package/dist/core/pressure-monitor.d.ts +76 -0
  568. package/dist/core/pressure-monitor.d.ts.map +1 -0
  569. package/dist/core/pressure-monitor.js +156 -0
  570. package/dist/core/pressure-monitor.js.map +1 -0
  571. package/dist/core/reflection-pattern.d.ts +99 -0
  572. package/dist/core/reflection-pattern.d.ts.map +1 -0
  573. package/dist/core/reflection-pattern.js +294 -0
  574. package/dist/core/reflection-pattern.js.map +1 -0
  575. package/dist/core/session-log-manager.d.ts +83 -0
  576. package/dist/core/session-log-manager.d.ts.map +1 -0
  577. package/dist/core/session-log-manager.js +288 -0
  578. package/dist/core/session-log-manager.js.map +1 -0
  579. package/dist/core/simple-pipeline-base.d.ts +130 -0
  580. package/dist/core/simple-pipeline-base.d.ts.map +1 -0
  581. package/dist/core/simple-pipeline-base.js +240 -0
  582. package/dist/core/simple-pipeline-base.js.map +1 -0
  583. package/dist/core/simple-pipeline.d.ts +70 -0
  584. package/dist/core/simple-pipeline.d.ts.map +1 -0
  585. package/dist/core/simple-pipeline.js +241 -0
  586. package/dist/core/simple-pipeline.js.map +1 -0
  587. package/dist/core/utils/paths.d.ts +50 -0
  588. package/dist/core/utils/paths.d.ts.map +1 -0
  589. package/dist/core/utils/paths.js +75 -0
  590. package/dist/core/utils/paths.js.map +1 -0
  591. package/dist/core/validators/command-argument-validator.d.ts +102 -0
  592. package/dist/core/validators/command-argument-validator.d.ts.map +1 -0
  593. package/dist/core/validators/command-argument-validator.js +377 -0
  594. package/dist/core/validators/command-argument-validator.js.map +1 -0
  595. package/dist/core/validators/config-validator.d.ts +111 -0
  596. package/dist/core/validators/config-validator.d.ts.map +1 -0
  597. package/dist/core/validators/config-validator.js +433 -0
  598. package/dist/core/validators/config-validator.js.map +1 -0
  599. package/dist/core/validators/environment-validator.d.ts +138 -0
  600. package/dist/core/validators/environment-validator.d.ts.map +1 -0
  601. package/dist/core/validators/environment-validator.js +516 -0
  602. package/dist/core/validators/environment-validator.js.map +1 -0
  603. package/dist/core/validators/git-validator.d.ts +100 -0
  604. package/dist/core/validators/git-validator.d.ts.map +1 -0
  605. package/dist/core/validators/git-validator.js +288 -0
  606. package/dist/core/validators/git-validator.js.map +1 -0
  607. package/dist/core/validators/git-validator.test.d.ts +12 -0
  608. package/dist/core/validators/git-validator.test.d.ts.map +1 -0
  609. package/dist/core/validators/git-validator.test.js +40 -0
  610. package/dist/core/validators/git-validator.test.js.map +1 -0
  611. package/dist/core/validators/index.d.ts +90 -0
  612. package/dist/core/validators/index.d.ts.map +1 -0
  613. package/dist/core/validators/index.js +166 -0
  614. package/dist/core/validators/index.js.map +1 -0
  615. package/dist/core/validators/input-validator.d.ts +117 -0
  616. package/dist/core/validators/input-validator.d.ts.map +1 -0
  617. package/dist/core/validators/input-validator.js +368 -0
  618. package/dist/core/validators/input-validator.js.map +1 -0
  619. package/dist/core/validators/temp_index.d.ts +56 -0
  620. package/dist/core/validators/temp_index.d.ts.map +1 -0
  621. package/dist/core/validators/temp_index.js +94 -0
  622. package/dist/core/validators/temp_index.js.map +1 -0
  623. package/dist/core/validators/validation-error-handler.d.ts +107 -0
  624. package/dist/core/validators/validation-error-handler.d.ts.map +1 -0
  625. package/dist/core/validators/validation-error-handler.js +379 -0
  626. package/dist/core/validators/validation-error-handler.js.map +1 -0
  627. package/dist/core/validators/validation-orchestrator.d.ts +128 -0
  628. package/dist/core/validators/validation-orchestrator.d.ts.map +1 -0
  629. package/dist/core/validators/validation-orchestrator.js +301 -0
  630. package/dist/core/validators/validation-orchestrator.js.map +1 -0
  631. package/dist/index.d.ts +11 -0
  632. package/dist/index.d.ts.map +1 -0
  633. package/dist/index.js +316 -0
  634. package/dist/index.js.map +1 -0
  635. package/dist/services/active-context-manager.d.ts +118 -0
  636. package/dist/services/active-context-manager.d.ts.map +1 -0
  637. package/dist/services/active-context-manager.js +435 -0
  638. package/dist/services/active-context-manager.js.map +1 -0
  639. package/dist/services/ai-service.d.ts +71 -0
  640. package/dist/services/ai-service.d.ts.map +1 -0
  641. package/dist/services/ai-service.js +329 -0
  642. package/dist/services/ai-service.js.map +1 -0
  643. package/dist/services/context-search.d.ts +98 -0
  644. package/dist/services/context-search.d.ts.map +1 -0
  645. package/dist/services/context-search.js +289 -0
  646. package/dist/services/context-search.js.map +1 -0
  647. package/dist/services/insight-extractor.d.ts +69 -0
  648. package/dist/services/insight-extractor.d.ts.map +1 -0
  649. package/dist/services/insight-extractor.js +343 -0
  650. package/dist/services/insight-extractor.js.map +1 -0
  651. package/dist/services/insight-quality-controller.d.ts +167 -0
  652. package/dist/services/insight-quality-controller.d.ts.map +1 -0
  653. package/dist/services/insight-quality-controller.js +543 -0
  654. package/dist/services/insight-quality-controller.js.map +1 -0
  655. package/dist/services/module-generator.d.ts +108 -0
  656. package/dist/services/module-generator.d.ts.map +1 -0
  657. package/dist/services/module-generator.js +561 -0
  658. package/dist/services/module-generator.js.map +1 -0
  659. package/dist/services/statusline-tracker.d.ts +139 -0
  660. package/dist/services/statusline-tracker.d.ts.map +1 -0
  661. package/dist/services/statusline-tracker.js +360 -0
  662. package/dist/services/statusline-tracker.js.map +1 -0
  663. package/dist/templates/ai-instructions-template.d.ts +39 -0
  664. package/dist/templates/ai-instructions-template.d.ts.map +1 -0
  665. package/dist/templates/ai-instructions-template.js +222 -0
  666. package/dist/templates/ai-instructions-template.js.map +1 -0
  667. package/dist/types/config.d.ts +128 -0
  668. package/dist/types/config.d.ts.map +1 -0
  669. package/dist/types/config.js +49 -0
  670. package/dist/types/config.js.map +1 -0
  671. package/dist/types/documents.d.ts +87 -0
  672. package/dist/types/documents.d.ts.map +1 -0
  673. package/dist/types/documents.js +12 -0
  674. package/dist/types/documents.js.map +1 -0
  675. package/dist/types/session-log.d.ts +83 -0
  676. package/dist/types/session-log.d.ts.map +1 -0
  677. package/dist/types/session-log.js +12 -0
  678. package/dist/types/session-log.js.map +1 -0
  679. package/dist/types/session.d.ts +257 -0
  680. package/dist/types/session.d.ts.map +1 -0
  681. package/dist/types/session.js +12 -0
  682. package/dist/types/session.js.map +1 -0
  683. package/dist/utils/ai-templates.d.ts +98 -0
  684. package/dist/utils/ai-templates.d.ts.map +1 -0
  685. package/dist/utils/ai-templates.js +179 -0
  686. package/dist/utils/ai-templates.js.map +1 -0
  687. package/dist/utils/ginko-root.d.ts +51 -0
  688. package/dist/utils/ginko-root.d.ts.map +1 -0
  689. package/dist/utils/ginko-root.js +96 -0
  690. package/dist/utils/ginko-root.js.map +1 -0
  691. package/dist/utils/helpers.d.ts +19 -0
  692. package/dist/utils/helpers.d.ts.map +1 -0
  693. package/dist/utils/helpers.js +107 -0
  694. package/dist/utils/helpers.js.map +1 -0
  695. package/dist/utils/progressive-learning.d.ts +42 -0
  696. package/dist/utils/progressive-learning.d.ts.map +1 -0
  697. package/dist/utils/progressive-learning.js +248 -0
  698. package/dist/utils/progressive-learning.js.map +1 -0
  699. package/dist/utils/session-collector.d.ts +81 -0
  700. package/dist/utils/session-collector.d.ts.map +1 -0
  701. package/dist/utils/session-collector.js +387 -0
  702. package/dist/utils/session-collector.js.map +1 -0
  703. package/dist/utils/session-logger.d.ts +125 -0
  704. package/dist/utils/session-logger.d.ts.map +1 -0
  705. package/dist/utils/session-logger.js +359 -0
  706. package/dist/utils/session-logger.js.map +1 -0
  707. package/dist/utils/session-synthesizer.d.ts +36 -0
  708. package/dist/utils/session-synthesizer.d.ts.map +1 -0
  709. package/dist/utils/session-synthesizer.js +239 -0
  710. package/dist/utils/session-synthesizer.js.map +1 -0
  711. package/package.json +76 -0
@@ -0,0 +1,288 @@
1
+ /**
2
+ * @fileType: utility
3
+ * @status: current
4
+ * @updated: 2025-09-19
5
+ * @tags: [validation, git, repository, first-use-experience]
6
+ * @related: [config-validator.ts, environment-validator.ts, index.ts]
7
+ * @priority: critical
8
+ * @complexity: medium
9
+ * @dependencies: [simple-git, fs-extra]
10
+ */
11
+ import { simpleGit, GitError } from 'simple-git';
12
+ /**
13
+ * Validates git repository requirements for ginko
14
+ *
15
+ * Checks:
16
+ * - Git command availability
17
+ * - Current directory is in a git repository
18
+ * - Repository is properly initialized
19
+ * - Working directory is clean (optional warning)
20
+ */
21
+ export class GitValidator {
22
+ git;
23
+ currentPath;
24
+ lastError;
25
+ lastSuggestions = [];
26
+ constructor(cwd = process.cwd()) {
27
+ this.currentPath = cwd;
28
+ this.git = simpleGit(cwd);
29
+ }
30
+ /**
31
+ * Perform comprehensive git validation
32
+ */
33
+ async validate() {
34
+ try {
35
+ // Check 1: Git command availability
36
+ const gitAvailable = await this.checkGitCommand();
37
+ if (!gitAvailable.valid) {
38
+ return gitAvailable;
39
+ }
40
+ // Check 2: Git repository detection
41
+ const repoCheck = await this.checkGitRepository();
42
+ if (!repoCheck.valid) {
43
+ return repoCheck;
44
+ }
45
+ // Check 3: Repository health
46
+ const healthCheck = await this.checkRepositoryHealth();
47
+ if (!healthCheck.valid) {
48
+ return healthCheck;
49
+ }
50
+ // All checks passed
51
+ return {
52
+ valid: true,
53
+ metadata: {
54
+ gitVersion: await this.getGitVersion(),
55
+ repositoryPath: await this.getRepositoryRoot(),
56
+ currentBranch: await this.getCurrentBranch(),
57
+ hasUncommittedChanges: await this.hasUncommittedChanges()
58
+ }
59
+ };
60
+ }
61
+ catch (error) {
62
+ this.lastError = error instanceof Error ? error.message : 'Unknown git validation error';
63
+ this.lastSuggestions = this.generateErrorSuggestions(error);
64
+ return {
65
+ valid: false,
66
+ error: this.lastError,
67
+ suggestions: this.lastSuggestions
68
+ };
69
+ }
70
+ }
71
+ /**
72
+ * Get user-friendly error message
73
+ */
74
+ getErrorMessage() {
75
+ return this.lastError || 'Git validation failed';
76
+ }
77
+ /**
78
+ * Get actionable suggestions for fixing the error
79
+ */
80
+ getSuggestions() {
81
+ return this.lastSuggestions;
82
+ }
83
+ /**
84
+ * Check if git command is available
85
+ */
86
+ async checkGitCommand() {
87
+ try {
88
+ await this.git.version();
89
+ return { valid: true };
90
+ }
91
+ catch (error) {
92
+ this.lastError = 'Git command not found or not working';
93
+ this.lastSuggestions = [
94
+ 'Install Git: https://git-scm.com/downloads',
95
+ 'Verify Git is in your PATH: git --version',
96
+ 'On Windows: Restart terminal after Git installation',
97
+ 'On macOS: Install Xcode Command Line Tools: xcode-select --install'
98
+ ];
99
+ return {
100
+ valid: false,
101
+ error: this.lastError,
102
+ suggestions: this.lastSuggestions
103
+ };
104
+ }
105
+ }
106
+ /**
107
+ * Check if current directory is in a git repository
108
+ */
109
+ async checkGitRepository() {
110
+ try {
111
+ // Try to get repository root
112
+ const isRepo = await this.git.checkIsRepo();
113
+ if (!isRepo) {
114
+ this.lastError = 'Current directory is not in a git repository';
115
+ this.lastSuggestions = [
116
+ 'Initialize a new repository: git init',
117
+ 'Navigate to an existing repository: cd /path/to/your/repo',
118
+ 'Clone a repository: git clone <repository-url>',
119
+ 'Ginko requires a git repository to track context and changes'
120
+ ];
121
+ return {
122
+ valid: false,
123
+ error: this.lastError,
124
+ suggestions: this.lastSuggestions
125
+ };
126
+ }
127
+ return { valid: true };
128
+ }
129
+ catch (error) {
130
+ this.lastError = 'Failed to check git repository status';
131
+ this.lastSuggestions = [
132
+ 'Ensure you have read permissions in the current directory',
133
+ 'Check if .git directory exists and is accessible',
134
+ 'Try running: git status'
135
+ ];
136
+ return {
137
+ valid: false,
138
+ error: this.lastError,
139
+ suggestions: this.lastSuggestions
140
+ };
141
+ }
142
+ }
143
+ /**
144
+ * Check repository health and configuration
145
+ */
146
+ async checkRepositoryHealth() {
147
+ try {
148
+ // Check if repository has at least one commit
149
+ const hasCommits = await this.hasCommits();
150
+ if (!hasCommits) {
151
+ // This is a warning, not a fatal error
152
+ this.lastSuggestions = [
153
+ 'Repository has no commits yet',
154
+ 'Create your first commit: git add . && git commit -m "Initial commit"',
155
+ 'Ginko works best with committed code for context tracking'
156
+ ];
157
+ return {
158
+ valid: true,
159
+ metadata: { warning: 'No commits found in repository' }
160
+ };
161
+ }
162
+ return { valid: true };
163
+ }
164
+ catch (error) {
165
+ // Repository health issues are warnings, not blockers
166
+ return {
167
+ valid: true,
168
+ metadata: {
169
+ warning: 'Could not check repository health',
170
+ details: error instanceof Error ? error.message : 'Unknown error'
171
+ }
172
+ };
173
+ }
174
+ }
175
+ /**
176
+ * Get git version
177
+ */
178
+ async getGitVersion() {
179
+ try {
180
+ const version = await this.git.version();
181
+ return version.installed ? 'installed' : undefined;
182
+ }
183
+ catch {
184
+ return undefined;
185
+ }
186
+ }
187
+ /**
188
+ * Get repository root path
189
+ */
190
+ async getRepositoryRoot() {
191
+ try {
192
+ const root = await this.git.revparse(['--show-toplevel']);
193
+ return root.trim();
194
+ }
195
+ catch {
196
+ return undefined;
197
+ }
198
+ }
199
+ /**
200
+ * Get current branch name
201
+ */
202
+ async getCurrentBranch() {
203
+ try {
204
+ const branch = await this.git.branch();
205
+ return branch.current;
206
+ }
207
+ catch {
208
+ return undefined;
209
+ }
210
+ }
211
+ /**
212
+ * Check if repository has any commits
213
+ */
214
+ async hasCommits() {
215
+ try {
216
+ await this.git.log({ maxCount: 1 });
217
+ return true;
218
+ }
219
+ catch {
220
+ return false;
221
+ }
222
+ }
223
+ /**
224
+ * Check if there are uncommitted changes
225
+ */
226
+ async hasUncommittedChanges() {
227
+ try {
228
+ const status = await this.git.status();
229
+ return status.files.length > 0;
230
+ }
231
+ catch {
232
+ return false;
233
+ }
234
+ }
235
+ /**
236
+ * Generate contextual suggestions based on error type
237
+ */
238
+ generateErrorSuggestions(error) {
239
+ const suggestions = [];
240
+ if (error instanceof GitError) {
241
+ const exitCode = error.git?.exitCode;
242
+ switch (exitCode) {
243
+ case 128:
244
+ suggestions.push('Repository may be corrupted or inaccessible', 'Try: git status', 'Reinitialize if needed: rm -rf .git && git init');
245
+ break;
246
+ case 129:
247
+ suggestions.push('Invalid git command or arguments', 'Check git installation: git --version');
248
+ break;
249
+ default:
250
+ suggestions.push('Git command failed', 'Check git installation and repository permissions');
251
+ }
252
+ }
253
+ else if (error?.message?.includes('ENOENT')) {
254
+ suggestions.push('Git executable not found', 'Install Git from https://git-scm.com/', 'Add Git to your system PATH');
255
+ }
256
+ else {
257
+ suggestions.push('Unexpected git error occurred', 'Try: git status', 'Ensure repository is properly initialized');
258
+ }
259
+ return suggestions;
260
+ }
261
+ /**
262
+ * Static method to quickly check if directory is a git repo
263
+ */
264
+ static async isGitRepository(path = process.cwd()) {
265
+ try {
266
+ const validator = new GitValidator(path);
267
+ const result = await validator.validate();
268
+ return result.valid;
269
+ }
270
+ catch {
271
+ return false;
272
+ }
273
+ }
274
+ /**
275
+ * Static method to get basic git info
276
+ */
277
+ static async getGitInfo(path = process.cwd()) {
278
+ try {
279
+ const validator = new GitValidator(path);
280
+ const result = await validator.validate();
281
+ return result.metadata || {};
282
+ }
283
+ catch {
284
+ return {};
285
+ }
286
+ }
287
+ }
288
+ //# sourceMappingURL=git-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-validator.js","sourceRoot":"","sources":["../../../src/core/validators/git-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @fileType: test
3
+ * @status: current
4
+ * @updated: 2025-09-20
5
+ * @tags: [test, validation, git, safety]
6
+ * @related: [git-validator.ts]
7
+ * @priority: high
8
+ * @complexity: low
9
+ * @dependencies: [jest]
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=git-validator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-validator.test.d.ts","sourceRoot":"","sources":["../../../src/core/validators/git-validator.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @fileType: test
3
+ * @status: current
4
+ * @updated: 2025-09-20
5
+ * @tags: [test, validation, git, safety]
6
+ * @related: [git-validator.ts]
7
+ * @priority: high
8
+ * @complexity: low
9
+ * @dependencies: [jest]
10
+ */
11
+ import { GitValidator } from './git-validator';
12
+ describe('GitValidator', () => {
13
+ let validator;
14
+ beforeEach(() => {
15
+ validator = new GitValidator();
16
+ });
17
+ test('should have validate method', () => {
18
+ expect(typeof validator.validate).toBe('function');
19
+ });
20
+ test('should return validation result structure', async () => {
21
+ const result = await validator.validate();
22
+ expect(result).toHaveProperty('status');
23
+ expect(result).toHaveProperty('message');
24
+ expect(['pass', 'warning', 'error']).toContain(result.status);
25
+ });
26
+ test('should detect git availability', async () => {
27
+ const result = await validator.validate();
28
+ // In our environment, git should be available
29
+ expect(result.status).not.toBe('error');
30
+ expect(result.message).toBeTruthy();
31
+ });
32
+ test('should handle timeout gracefully', async () => {
33
+ // Test that validation completes within reasonable time
34
+ const startTime = Date.now();
35
+ await validator.validate();
36
+ const endTime = Date.now();
37
+ expect(endTime - startTime).toBeLessThan(10000); // Should complete within 10 seconds
38
+ });
39
+ });
40
+ //# sourceMappingURL=git-validator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-validator.test.js","sourceRoot":"","sources":["../../../src/core/validators/git-validator.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,SAAuB,CAAC;IAE5B,UAAU,CAAC,GAAG,EAAE;QACd,SAAS,GAAG,IAAI,YAAY,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;QAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;QAE1C,8CAA8C;QAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAClD,wDAAwD;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE3B,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,oCAAoC;IACvF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * @fileType: utility
3
+ * @status: current
4
+ * @updated: 2025-09-22
5
+ * @tags: [validation, validators, exports, first-use-experience, input-validation, security]
6
+ * @related: [git-validator.ts, config-validator.ts, environment-validator.ts, input-validator.ts, command-argument-validator.ts]
7
+ * @priority: critical
8
+ * @complexity: low
9
+ * @dependencies: []
10
+ */
11
+ export type { ValidationResult, Validator } from './git-validator.js';
12
+ export type { GinkoConfig, PlatformConfig } from './config-validator.js';
13
+ export type { Platform, NodeRequirements, EnvironmentInfo } from './environment-validator.js';
14
+ export type { InputValidationRule, InputValidationSchema, InputValidationError, InputValidationResult } from './input-validator.js';
15
+ export type { CommandArgumentConfig, CommandValidationConfig, ValidatedCommandData } from './command-argument-validator.js';
16
+ export type { ValidationErrorContext, EnhancedValidationError, ErrorRecoveryResult } from './validation-error-handler.js';
17
+ export { GitValidator } from './git-validator.js';
18
+ export { ConfigValidator } from './config-validator.js';
19
+ export { EnvironmentValidator } from './environment-validator.js';
20
+ export { InputValidator } from './input-validator.js';
21
+ export { CommandArgumentValidator } from './command-argument-validator.js';
22
+ export { ValidationErrorHandler } from './validation-error-handler.js';
23
+ export { ValidationOrchestrator } from './validation-orchestrator.js';
24
+ export { ValidationReport, ValidationSeverity, ValidationSummary } from './validation-orchestrator.js';
25
+ /**
26
+ * Quick validation functions for common use cases
27
+ */
28
+ /**
29
+ * Perform basic environment validation for ginko
30
+ * Returns true if environment meets minimum requirements
31
+ */
32
+ export declare function validateBasicEnvironment(): Promise<boolean>;
33
+ /**
34
+ * Check if current directory is a valid git repository
35
+ */
36
+ export declare function isValidGitRepository(path?: string): Promise<boolean>;
37
+ /**
38
+ * Validate ginko configuration exists and is valid
39
+ */
40
+ export declare function validateGinkoConfig(projectRoot?: string): Promise<boolean>;
41
+ /**
42
+ * Validate user input according to schema
43
+ */
44
+ export declare function validateInput(data: Record<string, any>, schema: any): Promise<any>;
45
+ /**
46
+ * Validate command arguments with built-in security checks
47
+ */
48
+ export declare function validateCommandArgs(commandName: string, args: string[], options: Record<string, any>): Promise<any>;
49
+ /**
50
+ * Sanitize string input for CLI usage
51
+ */
52
+ export declare function sanitizeCliInput(input: string): string;
53
+ /**
54
+ * Quick validation for common patterns
55
+ */
56
+ export declare function validatePattern(value: string, pattern: 'email' | 'url' | 'filename' | 'dirname'): boolean;
57
+ /**
58
+ * Get platform information
59
+ */
60
+ export declare function getPlatformInfo(): any;
61
+ /**
62
+ * Check Node.js version compatibility
63
+ */
64
+ export declare function isNodeCompatible(): boolean;
65
+ /**
66
+ * Perform comprehensive validation for ginko setup
67
+ * Use this for the 'ginko doctor' command or init process
68
+ */
69
+ export declare function validateGinkoSetup(options?: {
70
+ projectRoot?: string;
71
+ skipOptional?: boolean;
72
+ verbose?: boolean;
73
+ }): Promise<any>;
74
+ /**
75
+ * Quick health check - returns true if ginko can run
76
+ */
77
+ export declare function canRunGinko(projectRoot?: string): Promise<boolean>;
78
+ /**
79
+ * Enhanced error handling with user-friendly messages
80
+ */
81
+ export declare function handleValidationError(error: any, context?: any, // ValidationErrorContext
82
+ options?: {
83
+ verbose?: boolean;
84
+ noColor?: boolean;
85
+ }): void;
86
+ /**
87
+ * Create a validation schema for ginko commands
88
+ */
89
+ export declare function createGinkoValidationSchema(): Promise<any>;
90
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/validators/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * @fileType: utility
3
+ * @status: current
4
+ * @updated: 2025-09-22
5
+ * @tags: [validation, validators, exports, first-use-experience, input-validation, security]
6
+ * @related: [git-validator.ts, config-validator.ts, environment-validator.ts, input-validator.ts, command-argument-validator.ts]
7
+ * @priority: critical
8
+ * @complexity: low
9
+ * @dependencies: []
10
+ */
11
+ // Individual validator classes
12
+ export { GitValidator } from './git-validator.js';
13
+ export { ConfigValidator } from './config-validator.js';
14
+ export { EnvironmentValidator } from './environment-validator.js';
15
+ export { InputValidator } from './input-validator.js';
16
+ export { CommandArgumentValidator } from './command-argument-validator.js';
17
+ // Error handling utilities
18
+ export { ValidationErrorHandler } from './validation-error-handler.js';
19
+ // Validation orchestration and utilities
20
+ export { ValidationOrchestrator } from './validation-orchestrator.js';
21
+ export { ValidationSeverity } from './validation-orchestrator.js';
22
+ /**
23
+ * Quick validation functions for common use cases
24
+ */
25
+ /**
26
+ * Perform basic environment validation for ginko
27
+ * Returns true if environment meets minimum requirements
28
+ */
29
+ export async function validateBasicEnvironment() {
30
+ try {
31
+ const { EnvironmentValidator } = await import('./environment-validator.js');
32
+ const envValidator = new EnvironmentValidator();
33
+ const result = await envValidator.validate();
34
+ return result.valid;
35
+ }
36
+ catch {
37
+ return false;
38
+ }
39
+ }
40
+ /**
41
+ * Check if current directory is a valid git repository
42
+ */
43
+ export async function isValidGitRepository(path) {
44
+ try {
45
+ const { GitValidator } = await import('./git-validator.js');
46
+ return await GitValidator.isGitRepository(path);
47
+ }
48
+ catch {
49
+ return false;
50
+ }
51
+ }
52
+ /**
53
+ * Validate ginko configuration exists and is valid
54
+ */
55
+ export async function validateGinkoConfig(projectRoot) {
56
+ try {
57
+ const { ConfigValidator } = await import('./config-validator.js');
58
+ const configValidator = new ConfigValidator(projectRoot);
59
+ const result = await configValidator.validate();
60
+ return result.valid;
61
+ }
62
+ catch {
63
+ return false;
64
+ }
65
+ }
66
+ /**
67
+ * Validate user input according to schema
68
+ */
69
+ export async function validateInput(data, schema // InputValidationSchema
70
+ ) {
71
+ const { InputValidator } = await import('./input-validator.js');
72
+ const validator = new InputValidator();
73
+ return await validator.validateInput(data, schema);
74
+ }
75
+ /**
76
+ * Validate command arguments with built-in security checks
77
+ */
78
+ export async function validateCommandArgs(commandName, args, options) {
79
+ const { CommandArgumentValidator } = await import('./command-argument-validator.js');
80
+ const validator = new CommandArgumentValidator();
81
+ return await validator.validateCommand(commandName, args, options);
82
+ }
83
+ /**
84
+ * Sanitize string input for CLI usage
85
+ */
86
+ export function sanitizeCliInput(input) {
87
+ // Remove null bytes and dangerous characters
88
+ return input
89
+ .replace(/[\x00-\x1F\x7F]/g, '') // Remove control characters
90
+ .replace(/[;&|`$()]/g, '') // Remove shell metacharacters
91
+ .trim();
92
+ }
93
+ /**
94
+ * Quick validation for common patterns
95
+ */
96
+ export function validatePattern(value, pattern) {
97
+ const patterns = {
98
+ email: /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
99
+ url: /^https?:\/\/[^\s/$.?#].[^\s]*$/i,
100
+ filename: /^[a-zA-Z0-9._-]+(\.[a-zA-Z0-9]+)?$/,
101
+ dirname: /^[a-zA-Z0-9._-]+$/
102
+ };
103
+ return patterns[pattern]?.test(value) || false;
104
+ }
105
+ /**
106
+ * Get platform information
107
+ */
108
+ export function getPlatformInfo() {
109
+ // Use dynamic import to avoid initialization issues
110
+ return 'unknown'; // Simplified for now
111
+ }
112
+ /**
113
+ * Check Node.js version compatibility
114
+ */
115
+ export function isNodeCompatible() {
116
+ // Simplified compatibility check
117
+ const version = process.version;
118
+ const majorVersion = parseInt(version.slice(1).split('.')[0]);
119
+ return majorVersion >= 16;
120
+ }
121
+ /**
122
+ * Perform comprehensive validation for ginko setup
123
+ * Use this for the 'ginko doctor' command or init process
124
+ */
125
+ export async function validateGinkoSetup(options) {
126
+ const { ValidationOrchestrator } = await import('./validation-orchestrator.js');
127
+ const orchestrator = new ValidationOrchestrator(options);
128
+ return await orchestrator.runAllValidations();
129
+ }
130
+ /**
131
+ * Quick health check - returns true if ginko can run
132
+ */
133
+ export async function canRunGinko(projectRoot) {
134
+ try {
135
+ const summary = await validateGinkoSetup({
136
+ projectRoot,
137
+ skipOptional: true
138
+ });
139
+ return summary.canProceed;
140
+ }
141
+ catch {
142
+ return false;
143
+ }
144
+ }
145
+ /**
146
+ * Enhanced error handling with user-friendly messages
147
+ */
148
+ export function handleValidationError(error, context, // ValidationErrorContext
149
+ options) {
150
+ // Dynamic import to avoid circular dependencies
151
+ import('./validation-error-handler.js').then(({ ValidationErrorHandler }) => {
152
+ const enhancedError = ValidationErrorHandler.createEnhancedError(error, context);
153
+ ValidationErrorHandler.displayError(enhancedError, options);
154
+ }).catch(() => {
155
+ // Fallback error display
156
+ console.error('Validation error:', error?.message || error);
157
+ });
158
+ }
159
+ /**
160
+ * Create a validation schema for ginko commands
161
+ */
162
+ export async function createGinkoValidationSchema() {
163
+ const { InputValidator } = await import('./input-validator.js');
164
+ return InputValidator.createGinkoCommandSchema();
165
+ }
166
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/validators/index.ts"],"names":[],"mappings":"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"}