@ginkoai/cli 1.0.0 → 1.4.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 (506) hide show
  1. package/README.md +19 -0
  2. package/dist/analysis/project-analyzer.d.ts.map +1 -1
  3. package/dist/analysis/project-analyzer.js +68 -4
  4. package/dist/analysis/project-analyzer.js.map +1 -1
  5. package/dist/commands/architecture/architecture-pipeline-enhanced.d.ts.map +1 -1
  6. package/dist/commands/architecture/architecture-pipeline-enhanced.js +10 -6
  7. package/dist/commands/architecture/architecture-pipeline-enhanced.js.map +1 -1
  8. package/dist/commands/backlog/base.d.ts.map +1 -1
  9. package/dist/commands/backlog/base.js +3 -0
  10. package/dist/commands/backlog/base.js.map +1 -1
  11. package/dist/commands/backlog/create.js +20 -20
  12. package/dist/commands/backlog/create.js.map +1 -1
  13. package/dist/commands/backlog/index.d.ts.map +1 -1
  14. package/dist/commands/backlog/index.js +6 -1
  15. package/dist/commands/backlog/index.js.map +1 -1
  16. package/dist/commands/changelog/changelog-reflection.d.ts.map +1 -1
  17. package/dist/commands/changelog/changelog-reflection.js +7 -3
  18. package/dist/commands/changelog/changelog-reflection.js.map +1 -1
  19. package/dist/commands/charter.d.ts +28 -0
  20. package/dist/commands/charter.d.ts.map +1 -0
  21. package/dist/commands/charter.js +434 -0
  22. package/dist/commands/charter.js.map +1 -0
  23. package/dist/commands/documentation/documentation-pipeline.d.ts.map +1 -1
  24. package/dist/commands/documentation/documentation-pipeline.js +15 -7
  25. package/dist/commands/documentation/documentation-pipeline.js.map +1 -1
  26. package/dist/commands/git/git-pipeline.d.ts.map +1 -1
  27. package/dist/commands/git/git-pipeline.js +3 -2
  28. package/dist/commands/git/git-pipeline.js.map +1 -1
  29. package/dist/commands/graph/api-client.d.ts +212 -0
  30. package/dist/commands/graph/api-client.d.ts.map +1 -0
  31. package/dist/commands/graph/api-client.js +143 -0
  32. package/dist/commands/graph/api-client.js.map +1 -0
  33. package/dist/commands/graph/config.d.ts +82 -0
  34. package/dist/commands/graph/config.d.ts.map +1 -0
  35. package/dist/commands/graph/config.js +113 -0
  36. package/dist/commands/graph/config.js.map +1 -0
  37. package/dist/commands/graph/explore.d.ts +19 -0
  38. package/dist/commands/graph/explore.d.ts.map +1 -0
  39. package/dist/commands/graph/explore.js +117 -0
  40. package/dist/commands/graph/explore.js.map +1 -0
  41. package/dist/commands/graph/index.d.ts +17 -0
  42. package/dist/commands/graph/index.d.ts.map +1 -0
  43. package/dist/commands/graph/index.js +104 -0
  44. package/dist/commands/graph/index.js.map +1 -0
  45. package/dist/commands/graph/init.d.ts +21 -0
  46. package/dist/commands/graph/init.d.ts.map +1 -0
  47. package/dist/commands/graph/init.js +173 -0
  48. package/dist/commands/graph/init.js.map +1 -0
  49. package/dist/commands/graph/load.d.ts +21 -0
  50. package/dist/commands/graph/load.d.ts.map +1 -0
  51. package/dist/commands/graph/load.js +224 -0
  52. package/dist/commands/graph/load.js.map +1 -0
  53. package/dist/commands/graph/query.d.ts +23 -0
  54. package/dist/commands/graph/query.d.ts.map +1 -0
  55. package/dist/commands/graph/query.js +145 -0
  56. package/dist/commands/graph/query.js.map +1 -0
  57. package/dist/commands/graph/status.d.ts +15 -0
  58. package/dist/commands/graph/status.d.ts.map +1 -0
  59. package/dist/commands/graph/status.js +88 -0
  60. package/dist/commands/graph/status.js.map +1 -0
  61. package/dist/commands/handoff.d.ts +14 -5
  62. package/dist/commands/handoff.d.ts.map +1 -1
  63. package/dist/commands/handoff.js +84 -142
  64. package/dist/commands/handoff.js.map +1 -1
  65. package/dist/commands/init.d.ts.map +1 -1
  66. package/dist/commands/init.js +88 -41
  67. package/dist/commands/init.js.map +1 -1
  68. package/dist/commands/knowledge/create.d.ts +24 -0
  69. package/dist/commands/knowledge/create.d.ts.map +1 -0
  70. package/dist/commands/knowledge/create.js +180 -0
  71. package/dist/commands/knowledge/create.js.map +1 -0
  72. package/dist/commands/knowledge/graph.d.ts +21 -0
  73. package/dist/commands/knowledge/graph.d.ts.map +1 -0
  74. package/dist/commands/knowledge/graph.js +199 -0
  75. package/dist/commands/knowledge/graph.js.map +1 -0
  76. package/dist/commands/knowledge/index.d.ts +25 -0
  77. package/dist/commands/knowledge/index.d.ts.map +1 -0
  78. package/dist/commands/knowledge/index.js +121 -0
  79. package/dist/commands/knowledge/index.js.map +1 -0
  80. package/dist/commands/knowledge/search.d.ts +23 -0
  81. package/dist/commands/knowledge/search.d.ts.map +1 -0
  82. package/dist/commands/knowledge/search.js +157 -0
  83. package/dist/commands/knowledge/search.js.map +1 -0
  84. package/dist/commands/knowledge/sync.d.ts +28 -0
  85. package/dist/commands/knowledge/sync.d.ts.map +1 -0
  86. package/dist/commands/knowledge/sync.js +251 -0
  87. package/dist/commands/knowledge/sync.js.map +1 -0
  88. package/dist/commands/log.d.ts +32 -0
  89. package/dist/commands/log.d.ts.map +1 -0
  90. package/dist/commands/log.js +632 -0
  91. package/dist/commands/log.js.map +1 -0
  92. package/dist/commands/login.d.ts +27 -0
  93. package/dist/commands/login.d.ts.map +1 -0
  94. package/dist/commands/login.js +177 -0
  95. package/dist/commands/login.js.map +1 -0
  96. package/dist/commands/logout.d.ts +15 -0
  97. package/dist/commands/logout.d.ts.map +1 -0
  98. package/dist/commands/logout.js +31 -0
  99. package/dist/commands/logout.js.map +1 -0
  100. package/dist/commands/project/create.d.ts +22 -0
  101. package/dist/commands/project/create.d.ts.map +1 -0
  102. package/dist/commands/project/create.js +69 -0
  103. package/dist/commands/project/create.js.map +1 -0
  104. package/dist/commands/project/delete.d.ts +19 -0
  105. package/dist/commands/project/delete.d.ts.map +1 -0
  106. package/dist/commands/project/delete.js +73 -0
  107. package/dist/commands/project/delete.js.map +1 -0
  108. package/dist/commands/project/index.d.ts +22 -0
  109. package/dist/commands/project/index.d.ts.map +1 -0
  110. package/dist/commands/project/index.js +134 -0
  111. package/dist/commands/project/index.js.map +1 -0
  112. package/dist/commands/project/info.d.ts +15 -0
  113. package/dist/commands/project/info.d.ts.map +1 -0
  114. package/dist/commands/project/info.js +92 -0
  115. package/dist/commands/project/info.js.map +1 -0
  116. package/dist/commands/project/list.d.ts +20 -0
  117. package/dist/commands/project/list.d.ts.map +1 -0
  118. package/dist/commands/project/list.js +82 -0
  119. package/dist/commands/project/list.js.map +1 -0
  120. package/dist/commands/project/members.d.ts +27 -0
  121. package/dist/commands/project/members.d.ts.map +1 -0
  122. package/dist/commands/project/members.js +140 -0
  123. package/dist/commands/project/members.js.map +1 -0
  124. package/dist/commands/project/update.d.ts +24 -0
  125. package/dist/commands/project/update.d.ts.map +1 -0
  126. package/dist/commands/project/update.js +83 -0
  127. package/dist/commands/project/update.js.map +1 -0
  128. package/dist/commands/reflect.js +0 -3
  129. package/dist/commands/reflect.js.map +1 -1
  130. package/dist/commands/ship.d.ts +3 -1
  131. package/dist/commands/ship.d.ts.map +1 -1
  132. package/dist/commands/ship.js +100 -9
  133. package/dist/commands/ship.js.map +1 -1
  134. package/dist/commands/start/index.d.ts.map +1 -1
  135. package/dist/commands/start/index.js +5 -3
  136. package/dist/commands/start/index.js.map +1 -1
  137. package/dist/commands/start/start-reflection.d.ts +2 -1
  138. package/dist/commands/start/start-reflection.d.ts.map +1 -1
  139. package/dist/commands/start/start-reflection.js +265 -43
  140. package/dist/commands/start/start-reflection.js.map +1 -1
  141. package/dist/commands/status.d.ts +1 -1
  142. package/dist/commands/status.d.ts.map +1 -1
  143. package/dist/commands/status.js +41 -1
  144. package/dist/commands/status.js.map +1 -1
  145. package/dist/commands/team/create.d.ts +15 -0
  146. package/dist/commands/team/create.d.ts.map +1 -0
  147. package/dist/commands/team/create.js +48 -0
  148. package/dist/commands/team/create.js.map +1 -0
  149. package/dist/commands/team/index.d.ts +22 -0
  150. package/dist/commands/team/index.d.ts.map +1 -0
  151. package/dist/commands/team/index.js +109 -0
  152. package/dist/commands/team/index.js.map +1 -0
  153. package/dist/commands/team/list.d.ts +15 -0
  154. package/dist/commands/team/list.d.ts.map +1 -0
  155. package/dist/commands/team/list.js +67 -0
  156. package/dist/commands/team/list.js.map +1 -0
  157. package/dist/commands/team/members.d.ts +27 -0
  158. package/dist/commands/team/members.d.ts.map +1 -0
  159. package/dist/commands/team/members.js +135 -0
  160. package/dist/commands/team/members.js.map +1 -0
  161. package/dist/commands/team/projects.d.ts +19 -0
  162. package/dist/commands/team/projects.d.ts.map +1 -0
  163. package/dist/commands/team/projects.js +107 -0
  164. package/dist/commands/team/projects.js.map +1 -0
  165. package/dist/commands/team.d.ts +22 -0
  166. package/dist/commands/team.d.ts.map +1 -0
  167. package/dist/commands/team.js +238 -0
  168. package/dist/commands/team.js.map +1 -0
  169. package/dist/commands/testing/testing-pipeline-enhanced.d.ts.map +1 -1
  170. package/dist/commands/testing/testing-pipeline-enhanced.js +5 -3
  171. package/dist/commands/testing/testing-pipeline-enhanced.js.map +1 -1
  172. package/dist/commands/testing/testing-pipeline.d.ts.map +1 -1
  173. package/dist/commands/testing/testing-pipeline.js +5 -3
  174. package/dist/commands/testing/testing-pipeline.js.map +1 -1
  175. package/dist/commands/whoami.d.ts +15 -0
  176. package/dist/commands/whoami.d.ts.map +1 -0
  177. package/dist/commands/whoami.js +38 -0
  178. package/dist/commands/whoami.js.map +1 -0
  179. package/dist/core/reflection-pattern.d.ts +1 -1
  180. package/dist/core/reflection-pattern.d.ts.map +1 -1
  181. package/dist/core/reflection-pattern.js +2 -12
  182. package/dist/core/reflection-pattern.js.map +1 -1
  183. package/dist/core/session-log-manager.d.ts +44 -4
  184. package/dist/core/session-log-manager.d.ts.map +1 -1
  185. package/dist/core/session-log-manager.js +132 -31
  186. package/dist/core/session-log-manager.js.map +1 -1
  187. package/dist/index.d.ts +1 -1
  188. package/dist/index.js +116 -17
  189. package/dist/index.js.map +1 -1
  190. package/dist/lib/api/projects-client.d.ts +119 -0
  191. package/dist/lib/api/projects-client.d.ts.map +1 -0
  192. package/dist/lib/api/projects-client.js +125 -0
  193. package/dist/lib/api/projects-client.js.map +1 -0
  194. package/dist/lib/api/teams-client.d.ts +73 -0
  195. package/dist/lib/api/teams-client.d.ts.map +1 -0
  196. package/dist/lib/api/teams-client.js +68 -0
  197. package/dist/lib/api/teams-client.js.map +1 -0
  198. package/dist/lib/charter/charter-editor.d.ts +60 -0
  199. package/dist/lib/charter/charter-editor.d.ts.map +1 -0
  200. package/dist/lib/charter/charter-editor.js +559 -0
  201. package/dist/lib/charter/charter-editor.js.map +1 -0
  202. package/dist/lib/charter/charter-storage.d.ts +92 -0
  203. package/dist/lib/charter/charter-storage.d.ts.map +1 -0
  204. package/dist/lib/charter/charter-storage.js +501 -0
  205. package/dist/lib/charter/charter-storage.js.map +1 -0
  206. package/dist/lib/charter/charter-synthesizer.d.ts +94 -0
  207. package/dist/lib/charter/charter-synthesizer.d.ts.map +1 -0
  208. package/dist/lib/charter/charter-synthesizer.js +521 -0
  209. package/dist/lib/charter/charter-synthesizer.js.map +1 -0
  210. package/dist/lib/charter/charter-versioning.d.ts +57 -0
  211. package/dist/lib/charter/charter-versioning.d.ts.map +1 -0
  212. package/dist/lib/charter/charter-versioning.js +283 -0
  213. package/dist/lib/charter/charter-versioning.js.map +1 -0
  214. package/dist/lib/charter/confidence-scorer.d.ts +263 -0
  215. package/dist/lib/charter/confidence-scorer.d.ts.map +1 -0
  216. package/dist/lib/charter/confidence-scorer.js +737 -0
  217. package/dist/lib/charter/confidence-scorer.js.map +1 -0
  218. package/dist/lib/charter/conversation-context.d.ts +99 -0
  219. package/dist/lib/charter/conversation-context.d.ts.map +1 -0
  220. package/dist/lib/charter/conversation-context.js +297 -0
  221. package/dist/lib/charter/conversation-context.js.map +1 -0
  222. package/dist/lib/charter/conversation-facilitator.d.ts +117 -0
  223. package/dist/lib/charter/conversation-facilitator.d.ts.map +1 -0
  224. package/dist/lib/charter/conversation-facilitator.js +360 -0
  225. package/dist/lib/charter/conversation-facilitator.js.map +1 -0
  226. package/dist/lib/charter/question-templates.d.ts +82 -0
  227. package/dist/lib/charter/question-templates.d.ts.map +1 -0
  228. package/dist/lib/charter/question-templates.js +355 -0
  229. package/dist/lib/charter/question-templates.js.map +1 -0
  230. package/dist/lib/charter/signal-detection.d.ts +49 -0
  231. package/dist/lib/charter/signal-detection.d.ts.map +1 -0
  232. package/dist/lib/charter/signal-detection.js +338 -0
  233. package/dist/lib/charter/signal-detection.js.map +1 -0
  234. package/dist/lib/context-loader-events.d.ts +111 -0
  235. package/dist/lib/context-loader-events.d.ts.map +1 -0
  236. package/dist/lib/context-loader-events.js +475 -0
  237. package/dist/lib/context-loader-events.js.map +1 -0
  238. package/dist/lib/event-logger.d.ts +64 -0
  239. package/dist/lib/event-logger.d.ts.map +1 -0
  240. package/dist/lib/event-logger.js +197 -0
  241. package/dist/lib/event-logger.js.map +1 -0
  242. package/dist/lib/event-queue.d.ts +104 -0
  243. package/dist/lib/event-queue.d.ts.map +1 -0
  244. package/dist/lib/event-queue.js +274 -0
  245. package/dist/lib/event-queue.js.map +1 -0
  246. package/dist/lib/session-cursor.d.ts +80 -0
  247. package/dist/lib/session-cursor.d.ts.map +1 -0
  248. package/dist/lib/session-cursor.js +250 -0
  249. package/dist/lib/session-cursor.js.map +1 -0
  250. package/dist/lib/sync/conflict-detector.d.ts +41 -0
  251. package/dist/lib/sync/conflict-detector.d.ts.map +1 -0
  252. package/dist/lib/sync/conflict-detector.js +124 -0
  253. package/dist/lib/sync/conflict-detector.js.map +1 -0
  254. package/dist/lib/sync/logger.d.ts +89 -0
  255. package/dist/lib/sync/logger.d.ts.map +1 -0
  256. package/dist/lib/sync/logger.js +202 -0
  257. package/dist/lib/sync/logger.js.map +1 -0
  258. package/dist/lib/sync/parser.d.ts +32 -0
  259. package/dist/lib/sync/parser.d.ts.map +1 -0
  260. package/dist/lib/sync/parser.js +180 -0
  261. package/dist/lib/sync/parser.js.map +1 -0
  262. package/dist/lib/sync/scanner.d.ts +34 -0
  263. package/dist/lib/sync/scanner.d.ts.map +1 -0
  264. package/dist/lib/sync/scanner.js +97 -0
  265. package/dist/lib/sync/scanner.js.map +1 -0
  266. package/dist/lib/sync/uploader.d.ts +33 -0
  267. package/dist/lib/sync/uploader.d.ts.map +1 -0
  268. package/dist/lib/sync/uploader.js +188 -0
  269. package/dist/lib/sync/uploader.js.map +1 -0
  270. package/dist/lib/write-dispatcher/adapters/graph-adapter.d.ts +77 -0
  271. package/dist/lib/write-dispatcher/adapters/graph-adapter.d.ts.map +1 -0
  272. package/dist/lib/write-dispatcher/adapters/graph-adapter.js +178 -0
  273. package/dist/lib/write-dispatcher/adapters/graph-adapter.js.map +1 -0
  274. package/dist/lib/write-dispatcher/adapters/local-adapter.d.ts +133 -0
  275. package/dist/lib/write-dispatcher/adapters/local-adapter.d.ts.map +1 -0
  276. package/dist/lib/write-dispatcher/adapters/local-adapter.js +324 -0
  277. package/dist/lib/write-dispatcher/adapters/local-adapter.js.map +1 -0
  278. package/dist/lib/write-dispatcher/write-dispatcher.d.ts +151 -0
  279. package/dist/lib/write-dispatcher/write-dispatcher.d.ts.map +1 -0
  280. package/dist/lib/write-dispatcher/write-dispatcher.js +197 -0
  281. package/dist/lib/write-dispatcher/write-dispatcher.js.map +1 -0
  282. package/dist/types/charter.d.ts +330 -0
  283. package/dist/types/charter.d.ts.map +1 -0
  284. package/dist/types/charter.js +76 -0
  285. package/dist/types/charter.js.map +1 -0
  286. package/dist/types/config.d.ts +65 -17
  287. package/dist/types/config.d.ts.map +1 -1
  288. package/dist/types/config.js +50 -21
  289. package/dist/types/config.js.map +1 -1
  290. package/dist/utils/api-client.d.ts +36 -0
  291. package/dist/utils/api-client.d.ts.map +1 -0
  292. package/dist/utils/api-client.js +97 -0
  293. package/dist/utils/api-client.js.map +1 -0
  294. package/dist/utils/auth-storage.d.ts +56 -0
  295. package/dist/utils/auth-storage.d.ts.map +1 -0
  296. package/dist/utils/auth-storage.js +133 -0
  297. package/dist/utils/auth-storage.js.map +1 -0
  298. package/dist/utils/cleanup.d.ts +21 -0
  299. package/dist/utils/cleanup.d.ts.map +1 -0
  300. package/dist/utils/cleanup.js +122 -0
  301. package/dist/utils/cleanup.js.map +1 -0
  302. package/dist/utils/config-loader.d.ts +76 -0
  303. package/dist/utils/config-loader.d.ts.map +1 -0
  304. package/dist/utils/config-loader.js +269 -0
  305. package/dist/utils/config-loader.js.map +1 -0
  306. package/dist/utils/context-loader.d.ts +154 -0
  307. package/dist/utils/context-loader.d.ts.map +1 -0
  308. package/dist/utils/context-loader.js +411 -0
  309. package/dist/utils/context-loader.js.map +1 -0
  310. package/dist/utils/dispatcher-logger.d.ts +30 -0
  311. package/dist/utils/dispatcher-logger.d.ts.map +1 -0
  312. package/dist/utils/dispatcher-logger.js +128 -0
  313. package/dist/utils/dispatcher-logger.js.map +1 -0
  314. package/dist/utils/ginko-root.d.ts +3 -2
  315. package/dist/utils/ginko-root.d.ts.map +1 -1
  316. package/dist/utils/ginko-root.js +35 -2
  317. package/dist/utils/ginko-root.js.map +1 -1
  318. package/dist/utils/helpers.d.ts +1 -0
  319. package/dist/utils/helpers.d.ts.map +1 -1
  320. package/dist/utils/helpers.js +3 -0
  321. package/dist/utils/helpers.js.map +1 -1
  322. package/dist/utils/log-quality.d.ts +55 -0
  323. package/dist/utils/log-quality.d.ts.map +1 -0
  324. package/dist/utils/log-quality.js +297 -0
  325. package/dist/utils/log-quality.js.map +1 -0
  326. package/dist/utils/reference-parser.d.ts +164 -0
  327. package/dist/utils/reference-parser.d.ts.map +1 -0
  328. package/dist/utils/reference-parser.js +363 -0
  329. package/dist/utils/reference-parser.js.map +1 -0
  330. package/dist/utils/synthesis.d.ts +180 -0
  331. package/dist/utils/synthesis.d.ts.map +1 -0
  332. package/dist/utils/synthesis.js +724 -0
  333. package/dist/utils/synthesis.js.map +1 -0
  334. package/dist/utils/team-awareness.d.ts +127 -0
  335. package/dist/utils/team-awareness.d.ts.map +1 -0
  336. package/dist/utils/team-awareness.js +385 -0
  337. package/dist/utils/team-awareness.js.map +1 -0
  338. package/package.json +6 -4
  339. package/dist/commands/handoff/handoff-reflection-pipeline.d.ts +0 -106
  340. package/dist/commands/handoff/handoff-reflection-pipeline.d.ts.map +0 -1
  341. package/dist/commands/handoff/handoff-reflection-pipeline.js +0 -534
  342. package/dist/commands/handoff/handoff-reflection-pipeline.js.map +0 -1
  343. package/dist/commands/handoff/handoff-save.d.ts +0 -16
  344. package/dist/commands/handoff/handoff-save.d.ts.map +0 -1
  345. package/dist/commands/handoff/handoff-save.js +0 -72
  346. package/dist/commands/handoff/handoff-save.js.map +0 -1
  347. package/dist/commands/handoff/index.d.ts +0 -19
  348. package/dist/commands/handoff/index.d.ts.map +0 -1
  349. package/dist/commands/handoff/index.js +0 -55
  350. package/dist/commands/handoff/index.js.map +0 -1
  351. package/dist/commands/handoff-ai-orig.d.ts +0 -27
  352. package/dist/commands/handoff-ai-orig.d.ts.map +0 -1
  353. package/dist/commands/handoff-ai-orig.js +0 -405
  354. package/dist/commands/handoff-ai-orig.js.map +0 -1
  355. package/dist/commands/handoff-ai.d.ts +0 -27
  356. package/dist/commands/handoff-ai.d.ts.map +0 -1
  357. package/dist/commands/handoff-ai.js +0 -405
  358. package/dist/commands/handoff-ai.js.map +0 -1
  359. package/dist/commands/handoff-enhanced-orig.d.ts +0 -25
  360. package/dist/commands/handoff-enhanced-orig.d.ts.map +0 -1
  361. package/dist/commands/handoff-enhanced-orig.js +0 -349
  362. package/dist/commands/handoff-enhanced-orig.js.map +0 -1
  363. package/dist/commands/handoff-enhanced.d.ts +0 -25
  364. package/dist/commands/handoff-enhanced.d.ts.map +0 -1
  365. package/dist/commands/handoff-enhanced.js +0 -349
  366. package/dist/commands/handoff-enhanced.js.map +0 -1
  367. package/dist/commands/handoff-orig.d.ts +0 -10
  368. package/dist/commands/handoff-orig.d.ts.map +0 -1
  369. package/dist/commands/handoff-orig.js +0 -167
  370. package/dist/commands/handoff-orig.js.map +0 -1
  371. package/dist/commands/init-enhanced.d.ts +0 -20
  372. package/dist/commands/init-enhanced.d.ts.map +0 -1
  373. package/dist/commands/init-enhanced.js +0 -430
  374. package/dist/commands/init-enhanced.js.map +0 -1
  375. package/dist/commands/prd/prd-reflection-enhanced.d.ts +0 -63
  376. package/dist/commands/prd/prd-reflection-enhanced.d.ts.map +0 -1
  377. package/dist/commands/prd/prd-reflection-enhanced.js +0 -310
  378. package/dist/commands/prd/prd-reflection-enhanced.js.map +0 -1
  379. package/dist/commands/start-enhanced.d.ts +0 -19
  380. package/dist/commands/start-enhanced.d.ts.map +0 -1
  381. package/dist/commands/start-enhanced.js +0 -434
  382. package/dist/commands/start-enhanced.js.map +0 -1
  383. package/dist/commands/start.d.ts +0 -10
  384. package/dist/commands/start.d.ts.map +0 -1
  385. package/dist/commands/start.js +0 -119
  386. package/dist/commands/start.js.map +0 -1
  387. package/dist/core/config/config-aware-reflection.d.ts +0 -37
  388. package/dist/core/config/config-aware-reflection.d.ts.map +0 -1
  389. package/dist/core/config/config-aware-reflection.js +0 -97
  390. package/dist/core/config/config-aware-reflection.js.map +0 -1
  391. package/dist/core/config/config-loader.d.ts +0 -154
  392. package/dist/core/config/config-loader.d.ts.map +0 -1
  393. package/dist/core/config/config-loader.js +0 -424
  394. package/dist/core/config/config-loader.js.map +0 -1
  395. package/dist/core/config/config-migrator.d.ts +0 -150
  396. package/dist/core/config/config-migrator.d.ts.map +0 -1
  397. package/dist/core/config/config-migrator.js +0 -423
  398. package/dist/core/config/config-migrator.js.map +0 -1
  399. package/dist/core/config/config-schema.d.ts +0 -276
  400. package/dist/core/config/config-schema.d.ts.map +0 -1
  401. package/dist/core/config/config-schema.js +0 -277
  402. package/dist/core/config/config-schema.js.map +0 -1
  403. package/dist/core/config/index.d.ts +0 -260
  404. package/dist/core/config/index.d.ts.map +0 -1
  405. package/dist/core/config/index.js +0 -283
  406. package/dist/core/config/index.js.map +0 -1
  407. package/dist/core/config/interactive-config.d.ts +0 -76
  408. package/dist/core/config/interactive-config.d.ts.map +0 -1
  409. package/dist/core/config/interactive-config.js +0 -315
  410. package/dist/core/config/interactive-config.js.map +0 -1
  411. package/dist/core/config/path-config.d.ts +0 -121
  412. package/dist/core/config/path-config.d.ts.map +0 -1
  413. package/dist/core/config/path-config.js +0 -210
  414. package/dist/core/config/path-config.js.map +0 -1
  415. package/dist/core/config/path-resolver.d.ts +0 -151
  416. package/dist/core/config/path-resolver.d.ts.map +0 -1
  417. package/dist/core/config/path-resolver.js +0 -343
  418. package/dist/core/config/path-resolver.js.map +0 -1
  419. package/dist/core/config/project-detector.d.ts +0 -58
  420. package/dist/core/config/project-detector.d.ts.map +0 -1
  421. package/dist/core/config/project-detector.js +0 -310
  422. package/dist/core/config/project-detector.js.map +0 -1
  423. package/dist/core/config-backup/config-aware-reflection.d.ts +0 -37
  424. package/dist/core/config-backup/config-aware-reflection.d.ts.map +0 -1
  425. package/dist/core/config-backup/config-aware-reflection.js +0 -97
  426. package/dist/core/config-backup/config-aware-reflection.js.map +0 -1
  427. package/dist/core/config-backup/config-loader.d.ts +0 -71
  428. package/dist/core/config-backup/config-loader.d.ts.map +0 -1
  429. package/dist/core/config-backup/config-loader.js +0 -288
  430. package/dist/core/config-backup/config-loader.js.map +0 -1
  431. package/dist/core/config-backup/interactive-config.d.ts +0 -76
  432. package/dist/core/config-backup/interactive-config.d.ts.map +0 -1
  433. package/dist/core/config-backup/interactive-config.js +0 -315
  434. package/dist/core/config-backup/interactive-config.js.map +0 -1
  435. package/dist/core/config-backup/path-config.d.ts +0 -121
  436. package/dist/core/config-backup/path-config.d.ts.map +0 -1
  437. package/dist/core/config-backup/path-config.js +0 -210
  438. package/dist/core/config-backup/path-config.js.map +0 -1
  439. package/dist/core/config-backup/project-detector.d.ts +0 -58
  440. package/dist/core/config-backup/project-detector.d.ts.map +0 -1
  441. package/dist/core/config-backup/project-detector.js +0 -310
  442. package/dist/core/config-backup/project-detector.js.map +0 -1
  443. package/dist/core/documents/document-manager.d.ts +0 -97
  444. package/dist/core/documents/document-manager.d.ts.map +0 -1
  445. package/dist/core/documents/document-manager.js +0 -441
  446. package/dist/core/documents/document-manager.js.map +0 -1
  447. package/dist/core/documents/document-migrator.d.ts +0 -138
  448. package/dist/core/documents/document-migrator.d.ts.map +0 -1
  449. package/dist/core/documents/document-migrator.js +0 -349
  450. package/dist/core/documents/document-migrator.js.map +0 -1
  451. package/dist/core/documents/document-namer.d.ts +0 -111
  452. package/dist/core/documents/document-namer.d.ts.map +0 -1
  453. package/dist/core/documents/document-namer.js +0 -225
  454. package/dist/core/documents/document-namer.js.map +0 -1
  455. package/dist/core/documents/examples.d.ts +0 -74
  456. package/dist/core/documents/examples.d.ts.map +0 -1
  457. package/dist/core/documents/examples.js +0 -273
  458. package/dist/core/documents/examples.js.map +0 -1
  459. package/dist/core/documents/file-system.d.ts +0 -93
  460. package/dist/core/documents/file-system.d.ts.map +0 -1
  461. package/dist/core/documents/file-system.js +0 -432
  462. package/dist/core/documents/file-system.js.map +0 -1
  463. package/dist/core/documents/index.d.ts +0 -97
  464. package/dist/core/documents/index.d.ts.map +0 -1
  465. package/dist/core/documents/index.js +0 -119
  466. package/dist/core/documents/index.js.map +0 -1
  467. package/dist/core/documents/markdown-processor.d.ts +0 -84
  468. package/dist/core/documents/markdown-processor.d.ts.map +0 -1
  469. package/dist/core/documents/markdown-processor.js +0 -302
  470. package/dist/core/documents/markdown-processor.js.map +0 -1
  471. package/dist/core/documents/sequence-manager.d.ts +0 -107
  472. package/dist/core/documents/sequence-manager.d.ts.map +0 -1
  473. package/dist/core/documents/sequence-manager.js +0 -246
  474. package/dist/core/documents/sequence-manager.js.map +0 -1
  475. package/dist/core/documents/template-engine.d.ts +0 -101
  476. package/dist/core/documents/template-engine.d.ts.map +0 -1
  477. package/dist/core/documents/template-engine.js +0 -440
  478. package/dist/core/documents/template-engine.js.map +0 -1
  479. package/dist/core/platform/hook-migration.d.ts +0 -73
  480. package/dist/core/platform/hook-migration.d.ts.map +0 -1
  481. package/dist/core/platform/hook-migration.js +0 -339
  482. package/dist/core/platform/hook-migration.js.map +0 -1
  483. package/dist/core/platform/hook-migrator.d.ts +0 -49
  484. package/dist/core/platform/hook-migrator.d.ts.map +0 -1
  485. package/dist/core/platform/hook-migrator.js +0 -305
  486. package/dist/core/platform/hook-migrator.js.map +0 -1
  487. package/dist/core/platform/path-resolver.d.ts +0 -120
  488. package/dist/core/platform/path-resolver.d.ts.map +0 -1
  489. package/dist/core/platform/path-resolver.js +0 -339
  490. package/dist/core/platform/path-resolver.js.map +0 -1
  491. package/dist/core/platform/platform-templates.d.ts +0 -62
  492. package/dist/core/platform/platform-templates.d.ts.map +0 -1
  493. package/dist/core/platform/platform-templates.js +0 -364
  494. package/dist/core/platform/platform-templates.js.map +0 -1
  495. package/dist/core/pressure-monitor.d.ts +0 -76
  496. package/dist/core/pressure-monitor.d.ts.map +0 -1
  497. package/dist/core/pressure-monitor.js +0 -156
  498. package/dist/core/pressure-monitor.js.map +0 -1
  499. package/dist/core/validators/git-validator.test.d.ts +0 -12
  500. package/dist/core/validators/git-validator.test.d.ts.map +0 -1
  501. package/dist/core/validators/git-validator.test.js +0 -40
  502. package/dist/core/validators/git-validator.test.js.map +0 -1
  503. package/dist/core/validators/temp_index.d.ts +0 -56
  504. package/dist/core/validators/temp_index.d.ts.map +0 -1
  505. package/dist/core/validators/temp_index.js +0 -94
  506. package/dist/core/validators/temp_index.js.map +0 -1
@@ -0,0 +1,411 @@
1
+ /**
2
+ * @fileType: utility
3
+ * @status: current
4
+ * @updated: 2025-10-22
5
+ * @tags: [context-loading, progressive, strategic, performance, adr-037, task-011]
6
+ * @related: [config-loader.ts, reference-parser.ts, start-reflection.ts]
7
+ * @priority: high
8
+ * @complexity: high
9
+ * @dependencies: [fs-extra, path, reference-parser, config-loader]
10
+ */
11
+ /**
12
+ * Progressive Context Loader (TASK-011)
13
+ *
14
+ * Implements strategic priority-ordered context loading that follows reference chains
15
+ * to achieve 80% of needed context from 3-5 core documents instead of 50+ files.
16
+ *
17
+ * Goals:
18
+ * - Load context in <1 second
19
+ * - Achieve 80% context from ≤5 documents
20
+ * - Reduce token usage by 70% vs full-scan approach
21
+ * - Follow reference chains with depth limit
22
+ * - Work mode filtering for documentation depth
23
+ *
24
+ * Based on PRD-009, ADR-037, and TASK-011
25
+ */
26
+ import fs from 'fs-extra';
27
+ import path from 'path';
28
+ import { extractReferences, resolveReference } from './reference-parser.js';
29
+ import { loadProjectConfig, loadLocalConfig, resolveProjectPath } from './config-loader.js';
30
+ import { BacklogBase } from '../commands/backlog/base.js';
31
+ /**
32
+ * Context Loader - Strategic progressive loading
33
+ */
34
+ export class ContextLoader {
35
+ loaded = new Map();
36
+ visited = new Set(); // Circular reference detection
37
+ config = null;
38
+ startTime = 0;
39
+ cacheHits = 0;
40
+ maxReferenceDepth = 0;
41
+ backlog = null;
42
+ constructor() {
43
+ this.startTime = Date.now();
44
+ }
45
+ /**
46
+ * Load context strategically with priority ordering
47
+ * Priority: session log → sprint → backlog fallback → references → modules
48
+ *
49
+ * @param options - Loading options
50
+ * @returns StrategyContext with loaded documents and metrics
51
+ */
52
+ async loadContextStrategic(options = {}) {
53
+ this.startTime = Date.now();
54
+ const config = await loadProjectConfig();
55
+ const localConfig = await loadLocalConfig();
56
+ this.config = config;
57
+ // Initialize backlog for task status checking
58
+ this.backlog = new BacklogBase();
59
+ try {
60
+ await this.backlog.init();
61
+ }
62
+ catch {
63
+ // Backlog not available, continue without it
64
+ this.backlog = null;
65
+ }
66
+ const workMode = options.workMode || config.workMode.default;
67
+ const maxDepth = options.maxDepth ?? config.contextLoading.maxDepth;
68
+ const followRefs = options.followReferences ?? config.contextLoading.followReferences;
69
+ const references = new Map();
70
+ const loadOrder = [];
71
+ // 0. Load always-load core modules (TASK-015)
72
+ await this.loadAlwaysLoadModules(config, workMode, loadOrder, localConfig.projectRoot);
73
+ // 1. Load session log (short-term memory)
74
+ const sessionLog = await this.loadSessionContext(options.sessionDir || path.join(localConfig.projectRoot, '.ginko/sessions', localConfig.userSlug));
75
+ if (sessionLog) {
76
+ loadOrder.push('session-log');
77
+ }
78
+ // 2. Load current sprint (long-term bootstrap)
79
+ const sprint = await this.loadSprintContext();
80
+ if (sprint) {
81
+ loadOrder.push('current-sprint');
82
+ }
83
+ // 3. Fallback: If no sprint, load active backlog items
84
+ if (!sprint && this.backlog) {
85
+ await this.loadBacklogContext(loadOrder, workMode);
86
+ }
87
+ // 4. Extract references from loaded docs
88
+ if (followRefs) {
89
+ const combinedContent = [
90
+ sessionLog?.content || '',
91
+ sprint?.content || ''
92
+ ].join('\n');
93
+ const extractedRefs = extractReferences(combinedContent);
94
+ // 5. Follow references with depth limit, work mode, and status filtering
95
+ const filteredRefs = this.filterByWorkMode(extractedRefs, workMode);
96
+ await this.followReferences(filteredRefs, maxDepth, references, loadOrder);
97
+ }
98
+ // Calculate metrics
99
+ const metrics = this.calculateMetrics();
100
+ return {
101
+ documents: this.loaded,
102
+ references,
103
+ metrics,
104
+ loadOrder,
105
+ workMode
106
+ };
107
+ }
108
+ /**
109
+ * Load session log from sessions directory
110
+ */
111
+ async loadSessionContext(sessionDir) {
112
+ const sessionLogPath = path.join(sessionDir, 'current-session-log.md');
113
+ if (!(await fs.pathExists(sessionLogPath))) {
114
+ return null;
115
+ }
116
+ return this.loadDocument(sessionLogPath, 'session-log');
117
+ }
118
+ /**
119
+ * Load current sprint document
120
+ */
121
+ async loadSprintContext() {
122
+ try {
123
+ const sprintPath = await resolveProjectPath('currentSprint');
124
+ if (!(await fs.pathExists(sprintPath))) {
125
+ return null;
126
+ }
127
+ return this.loadDocument(sprintPath, 'sprint');
128
+ }
129
+ catch {
130
+ return null;
131
+ }
132
+ }
133
+ /**
134
+ * Load always-load core modules based on work mode (TASK-015)
135
+ * These provide foundational knowledge for immediate AI productivity
136
+ */
137
+ async loadAlwaysLoadModules(config, workMode, loadOrder, projectRoot) {
138
+ const alwaysLoadConfig = config.contextLoading.alwaysLoad;
139
+ if (!alwaysLoadConfig) {
140
+ return; // No always-load configuration
141
+ }
142
+ const modulePaths = alwaysLoadConfig[workMode] || [];
143
+ for (const modulePath of modulePaths) {
144
+ const absolutePath = path.join(projectRoot, modulePath);
145
+ if (await fs.pathExists(absolutePath)) {
146
+ const doc = await this.loadDocument(absolutePath, 'core-module');
147
+ if (doc) {
148
+ loadOrder.push(path.basename(modulePath, '.md'));
149
+ }
150
+ }
151
+ }
152
+ }
153
+ /**
154
+ * Load active backlog items as fallback when no sprint exists
155
+ * Only loads in-progress and high-priority items based on work mode
156
+ */
157
+ async loadBacklogContext(loadOrder, workMode) {
158
+ if (!this.backlog)
159
+ return;
160
+ try {
161
+ // Load in-progress items (always relevant)
162
+ const inProgress = await this.backlog.listItems({ status: 'in-progress' });
163
+ // Load high-priority todo items (limited by work mode)
164
+ const highPriority = await this.backlog.listItems({
165
+ status: 'todo',
166
+ priority: 'critical'
167
+ });
168
+ // Combine and limit based on work mode
169
+ const itemsToLoad = [...inProgress, ...highPriority];
170
+ const limit = workMode === 'hack-ship' ? 1 : workMode === 'think-build' ? 3 : 5;
171
+ for (const item of itemsToLoad.slice(0, limit)) {
172
+ const itemPath = path.join(this.backlog['itemsDir'], `${item.id}.md`);
173
+ if (await fs.pathExists(itemPath)) {
174
+ await this.loadDocument(itemPath, 'backlog-item');
175
+ loadOrder.push(item.id);
176
+ }
177
+ }
178
+ }
179
+ catch (error) {
180
+ // Backlog loading failed, continue without it
181
+ }
182
+ }
183
+ /**
184
+ * Follow reference chains recursively with depth limit
185
+ */
186
+ async followReferences(refs, maxDepth, referencesMap, loadOrder, currentDepth = 0) {
187
+ if (currentDepth >= maxDepth) {
188
+ return;
189
+ }
190
+ // Track maximum depth reached
191
+ this.maxReferenceDepth = Math.max(this.maxReferenceDepth, currentDepth);
192
+ for (const ref of refs) {
193
+ const refKey = `${ref.type}:${ref.id}`;
194
+ // Skip if already visited (circular reference)
195
+ if (this.visited.has(refKey)) {
196
+ this.cacheHits++;
197
+ continue;
198
+ }
199
+ this.visited.add(refKey);
200
+ // Check backlog status for tasks/features (skip completed)
201
+ if (this.backlog && (ref.type === 'task' || ref.type === 'feature')) {
202
+ const item = await this.backlog.loadItem(ref.id);
203
+ if (item && item.status === 'done') {
204
+ // Skip completed items - they're not relevant to current work
205
+ this.visited.add(refKey); // Mark as visited to avoid re-checking
206
+ continue;
207
+ }
208
+ }
209
+ // Resolve reference
210
+ const resolved = await resolveReference(ref);
211
+ referencesMap.set(refKey, resolved);
212
+ if (!resolved.exists || !resolved.filePath) {
213
+ continue;
214
+ }
215
+ // Load referenced document
216
+ const doc = await this.loadDocument(resolved.filePath, ref.type);
217
+ if (!doc)
218
+ continue;
219
+ loadOrder.push(ref.rawText);
220
+ // Extract nested references and follow recursively
221
+ const nestedRefs = extractReferences(doc.content);
222
+ const filteredNestedRefs = this.filterByWorkMode(nestedRefs, this.getCurrentWorkMode());
223
+ await this.followReferences(filteredNestedRefs, maxDepth, referencesMap, loadOrder, currentDepth + 1);
224
+ }
225
+ }
226
+ /**
227
+ * Filter references by work mode documentation depth
228
+ */
229
+ filterByWorkMode(refs, workMode) {
230
+ if (!this.config)
231
+ return refs;
232
+ const allowedTypes = this.config.workMode.documentationDepth[workMode];
233
+ // Map reference types to config path keys
234
+ const typeMapping = {
235
+ task: 'backlog',
236
+ feature: 'backlog',
237
+ prd: 'prds',
238
+ adr: 'adrs',
239
+ sprint: 'sprints'
240
+ };
241
+ return refs.filter(ref => {
242
+ const pathKey = typeMapping[ref.type];
243
+ // Check if this reference type should be loaded for this work mode
244
+ if (workMode === 'hack-ship') {
245
+ // Only load sprints and tasks in hack-ship mode
246
+ return ref.type === 'sprint' || ref.type === 'task';
247
+ }
248
+ if (workMode === 'think-build') {
249
+ // Load sprints, tasks, PRDs, ADRs
250
+ return ['sprint', 'task', 'prd', 'adr'].includes(ref.type);
251
+ }
252
+ // full-planning: load everything
253
+ return true;
254
+ });
255
+ }
256
+ /**
257
+ * Load a document and add to loaded cache
258
+ */
259
+ async loadDocument(filePath, type) {
260
+ // Check if already loaded (cache)
261
+ if (this.loaded.has(filePath)) {
262
+ this.cacheHits++;
263
+ return this.loaded.get(filePath);
264
+ }
265
+ try {
266
+ const content = await fs.readFile(filePath, 'utf-8');
267
+ const tokens = this.estimateTokens(content);
268
+ const relativePath = this.getRelativePath(filePath);
269
+ const doc = {
270
+ path: filePath,
271
+ relativePath,
272
+ content,
273
+ type,
274
+ tokens,
275
+ loadedAt: Date.now(),
276
+ referencedBy: []
277
+ };
278
+ this.loaded.set(filePath, doc);
279
+ return doc;
280
+ }
281
+ catch (error) {
282
+ // File doesn't exist or can't be read
283
+ return null;
284
+ }
285
+ }
286
+ /**
287
+ * Estimate token count (rough approximation: 1 token ≈ 4 characters)
288
+ */
289
+ estimateTokens(content) {
290
+ return Math.ceil(content.length / 4);
291
+ }
292
+ /**
293
+ * Get relative path from absolute path
294
+ */
295
+ getRelativePath(absolutePath) {
296
+ try {
297
+ const projectRoot = process.cwd();
298
+ return path.relative(projectRoot, absolutePath);
299
+ }
300
+ catch {
301
+ return absolutePath;
302
+ }
303
+ }
304
+ /**
305
+ * Get current work mode (from config or default)
306
+ */
307
+ getCurrentWorkMode() {
308
+ return this.config?.workMode.default || 'think-build';
309
+ }
310
+ /**
311
+ * Calculate context efficiency metrics
312
+ */
313
+ calculateMetrics() {
314
+ const totalTokens = Array.from(this.loaded.values())
315
+ .reduce((sum, doc) => sum + doc.tokens, 0);
316
+ const bootstrapTimeMs = Date.now() - this.startTime;
317
+ // Baseline: full-scan would load ~50 documents × 500 tokens = 25,000 tokens
318
+ const baselineTokens = 25000;
319
+ const tokenReductionPercent = Math.round(((baselineTokens - totalTokens) / baselineTokens) * 100);
320
+ return {
321
+ documentsLoaded: this.loaded.size,
322
+ totalTokens,
323
+ bootstrapTimeMs,
324
+ cacheHits: this.cacheHits,
325
+ referenceDepth: this.maxReferenceDepth,
326
+ tokenReductionPercent: Math.max(0, tokenReductionPercent)
327
+ };
328
+ }
329
+ /**
330
+ * Measure context efficiency (for testing and monitoring)
331
+ */
332
+ measureContextEfficiency(context) {
333
+ const { metrics } = context;
334
+ const issues = [];
335
+ // Goal: Context loading completes in <1 second
336
+ if (metrics.bootstrapTimeMs > 1000) {
337
+ issues.push(`Bootstrap time ${metrics.bootstrapTimeMs}ms exceeds 1000ms target`);
338
+ }
339
+ // Goal: 80% context from ≤5 documents
340
+ if (metrics.documentsLoaded > 5) {
341
+ issues.push(`Loaded ${metrics.documentsLoaded} documents, target is ≤5 for 80% context`);
342
+ }
343
+ // Goal: 70% token reduction
344
+ if (metrics.tokenReductionPercent < 70) {
345
+ issues.push(`Token reduction ${metrics.tokenReductionPercent}% below 70% target`);
346
+ }
347
+ return {
348
+ meetsGoals: issues.length === 0,
349
+ issues
350
+ };
351
+ }
352
+ /**
353
+ * Reset loader state (for testing)
354
+ */
355
+ reset() {
356
+ this.loaded.clear();
357
+ this.visited.clear();
358
+ this.config = null;
359
+ this.startTime = Date.now();
360
+ this.cacheHits = 0;
361
+ this.maxReferenceDepth = 0;
362
+ }
363
+ }
364
+ /**
365
+ * Convenience function: Load context strategically
366
+ */
367
+ export async function loadContextStrategic(options = {}) {
368
+ const loader = new ContextLoader();
369
+ return loader.loadContextStrategic(options);
370
+ }
371
+ /**
372
+ * Format context summary for display
373
+ */
374
+ export function formatContextSummary(context) {
375
+ const { metrics, loadOrder, documents } = context;
376
+ const lines = [];
377
+ lines.push(`📊 Context Loading Summary`);
378
+ lines.push(` Work Mode: ${context.workMode}`);
379
+ lines.push(` Documents: ${metrics.documentsLoaded}`);
380
+ lines.push(` Tokens: ${metrics.totalTokens.toLocaleString()}`);
381
+ lines.push(` Time: ${metrics.bootstrapTimeMs}ms`);
382
+ lines.push(` Token Reduction: ${metrics.tokenReductionPercent}%`);
383
+ lines.push(` Reference Depth: ${metrics.referenceDepth}`);
384
+ lines.push(` Cache Hits: ${metrics.cacheHits}`);
385
+ lines.push('');
386
+ lines.push(`📄 Load Order:`);
387
+ loadOrder.forEach((item, index) => {
388
+ lines.push(` ${index + 1}. ${item}`);
389
+ });
390
+ return lines.join('\n');
391
+ }
392
+ /**
393
+ * Get document content by path (convenience)
394
+ */
395
+ export function getDocumentContent(context, path) {
396
+ const doc = context.documents.get(path);
397
+ return doc?.content || null;
398
+ }
399
+ /**
400
+ * Get all loaded document paths
401
+ */
402
+ export function getLoadedPaths(context) {
403
+ return Array.from(context.documents.keys());
404
+ }
405
+ /**
406
+ * Filter documents by type
407
+ */
408
+ export function getDocumentsByType(context, type) {
409
+ return Array.from(context.documents.values()).filter(doc => doc.type === type);
410
+ }
411
+ //# sourceMappingURL=context-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-loader.js","sourceRoot":"","sources":["../../src/utils/context-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAKjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAe,MAAM,6BAA6B,CAAC;AAiDvE;;GAEG;AACH,MAAM,OAAO,aAAa;IAChB,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC3C,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC,CAAE,+BAA+B;IAC7D,MAAM,GAAuB,IAAI,CAAC;IAClC,SAAS,GAAW,CAAC,CAAC;IACtB,SAAS,GAAW,CAAC,CAAC;IACtB,iBAAiB,GAAW,CAAC,CAAC;IAC9B,OAAO,GAAuB,IAAI,CAAC;IAE3C;QACE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,oBAAoB,CAAC,UAA0B,EAAE;QACrD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,MAAM,eAAe,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,8CAA8C;QAC9C,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,6CAA6C;YAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC7D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC;QACpE,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,IAAI,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC;QAEtF,MAAM,UAAU,GAAG,IAAI,GAAG,EAA6B,CAAC;QACxD,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,8CAA8C;QAC9C,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;QAEvF,0CAA0C;QAC1C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAC9C,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,iBAAiB,EAAE,WAAW,CAAC,QAAQ,CAAC,CAClG,CAAC;QACF,IAAI,UAAU,EAAE,CAAC;YACf,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChC,CAAC;QAED,+CAA+C;QAC/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC9C,IAAI,MAAM,EAAE,CAAC;YACX,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACnC,CAAC;QAED,uDAAuD;QACvD,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACrD,CAAC;QAED,yCAAyC;QACzC,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,eAAe,GAAG;gBACtB,UAAU,EAAE,OAAO,IAAI,EAAE;gBACzB,MAAM,EAAE,OAAO,IAAI,EAAE;aACtB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEb,MAAM,aAAa,GAAG,iBAAiB,CAAC,eAAe,CAAC,CAAC;YAEzD,yEAAyE;YACzE,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;YACpE,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAC7E,CAAC;QAED,oBAAoB;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExC,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,MAAM;YACtB,UAAU;YACV,OAAO;YACP,SAAS;YACT,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,UAAkB;QACzC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;QAEvE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACrB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,eAAe,CAAC,CAAC;YAE7D,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;gBACvC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,qBAAqB,CACjC,MAAmB,EACnB,QAAkB,EAClB,SAAmB,EACnB,WAAmB;QAEnB,MAAM,gBAAgB,GAAI,MAAM,CAAC,cAAsB,CAAC,UAAU,CAAC;QACnE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,CAAC,+BAA+B;QACzC,CAAC;QAED,MAAM,WAAW,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAErD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YACxD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACtC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;gBACjE,IAAI,GAAG,EAAE,CAAC;oBACR,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,kBAAkB,CAAC,SAAmB,EAAE,QAAkB;QACtE,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,IAAI,CAAC;YACH,2CAA2C;YAC3C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;YAE3E,uDAAuD;YACvD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;gBAChD,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,UAAU;aACrB,CAAC,CAAC;YAEH,uCAAuC;YACvC,MAAM,WAAW,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,YAAY,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAEhF,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;gBAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;gBACtE,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAClC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;oBAClD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,8CAA8C;QAChD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAC5B,IAAiB,EACjB,QAAgB,EAChB,aAA6C,EAC7C,SAAmB,EACnB,eAAuB,CAAC;QAExB,IAAI,YAAY,IAAI,QAAQ,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,8BAA8B;QAC9B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;QAExE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YAEvC,+CAA+C;YAC/C,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,SAAS;YACX,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAEzB,2DAA2D;YAC3D,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;gBACpE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACjD,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBACnC,8DAA8D;oBAC9D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,uCAAuC;oBACjE,SAAS;gBACX,CAAC;YACH,CAAC;YAED,oBAAoB;YACpB,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAC7C,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAEpC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBAC3C,SAAS;YACX,CAAC;YAED,2BAA2B;YAC3B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG;gBAAE,SAAS;YAEnB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAE5B,mDAAmD;YACnD,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAC9C,UAAU,EACV,IAAI,CAAC,kBAAkB,EAAE,CAC1B,CAAC;YAEF,MAAM,IAAI,CAAC,gBAAgB,CACzB,kBAAkB,EAClB,QAAQ,EACR,aAAa,EACb,SAAS,EACT,YAAY,GAAG,CAAC,CACjB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,IAAiB,EAAE,QAAkB;QAC5D,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAE9B,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAEvE,0CAA0C;QAC1C,MAAM,WAAW,GAAkC;YACjD,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,SAAS;YAClB,GAAG,EAAE,MAAM;YACX,GAAG,EAAE,MAAM;YACX,MAAM,EAAE,SAAS;SAClB,CAAC;QAEF,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YACvB,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEtC,mEAAmE;YACnE,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;gBAC7B,gDAAgD;gBAChD,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC;YACtD,CAAC;YAED,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;gBAC/B,kCAAkC;gBAClC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7D,CAAC;YAED,iCAAiC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CACxB,QAAgB,EAChB,IAAY;QAEZ,kCAAkC;QAClC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;QACpC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAEpD,MAAM,GAAG,GAAmB;gBAC1B,IAAI,EAAE,QAAQ;gBACd,YAAY;gBACZ,OAAO;gBACP,IAAI;gBACJ,MAAM;gBACN,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;gBACpB,YAAY,EAAE,EAAE;aACjB,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC/B,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sCAAsC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,OAAe;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,YAAoB;QAC1C,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,YAAY,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,kBAAkB;QACxB,OAAO,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,IAAI,aAAa,CAAC;IACxD,CAAC;IAED;;OAEG;IACK,gBAAgB;QACtB,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;aACjD,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAE7C,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAEpD,4EAA4E;QAC5E,MAAM,cAAc,GAAG,KAAK,CAAC;QAC7B,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CACtC,CAAC,CAAC,cAAc,GAAG,WAAW,CAAC,GAAG,cAAc,CAAC,GAAG,GAAG,CACxD,CAAC;QAEF,OAAO;YACL,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YACjC,WAAW;YACX,eAAe;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,cAAc,EAAE,IAAI,CAAC,iBAAiB;YACtC,qBAAqB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,qBAAqB,CAAC;SAC1D,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,wBAAwB,CAAC,OAAwB;QAI/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAC5B,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,+CAA+C;QAC/C,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,kBAAkB,OAAO,CAAC,eAAe,0BAA0B,CAAC,CAAC;QACnF,CAAC;QAED,sCAAsC;QACtC,IAAI,OAAO,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CACT,UAAU,OAAO,CAAC,eAAe,0CAA0C,CAC5E,CAAC;QACJ,CAAC;QAED,4BAA4B;QAC5B,IAAI,OAAO,CAAC,qBAAqB,GAAG,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CACT,mBAAmB,OAAO,CAAC,qBAAqB,oBAAoB,CACrE,CAAC;QACJ,CAAC;QAED,OAAO;YACL,UAAU,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC/B,MAAM;SACP,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAC7B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,UAA0B,EAAE;IAE5B,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;IACnC,OAAO,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAwB;IAC3D,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAElD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACzC,KAAK,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChD,KAAK,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACjE,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,eAAe,IAAI,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,CAAC,uBAAuB,OAAO,CAAC,qBAAqB,GAAG,CAAC,CAAC;IACpE,KAAK,CAAC,IAAI,CAAC,uBAAuB,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC5D,KAAK,CAAC,IAAI,CAAC,kBAAkB,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAClD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7B,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAChC,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAwB,EACxB,IAAY;IAEZ,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,OAAO,GAAG,EAAE,OAAO,IAAI,IAAI,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAwB;IACrD,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAwB,EACxB,IAAY;IAEZ,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACjF,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @fileType: utility
3
+ * @status: current
4
+ * @updated: 2025-11-02
5
+ * @tags: [write-dispatch, logging, session-log, adr-041]
6
+ * @related: [../core/session-log-manager.ts, ../../../../src/write-dispatcher.ts, ../../../../src/adapters/graph-adapter.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: []
10
+ */
11
+ import { type LogEntry } from '../core/session-log-manager.js';
12
+ /**
13
+ * Write log entry using WriteDispatcher if available, fallback to SessionLogManager
14
+ *
15
+ * Strategy:
16
+ * 1. If dispatcher is initialized and enabled, use it for dual-write
17
+ * 2. Otherwise, use SessionLogManager directly (legacy mode)
18
+ *
19
+ * This enables gradual migration to graph-first writes while maintaining
20
+ * backward compatibility.
21
+ */
22
+ export declare function appendLogEntry(sessionDir: string, entry: LogEntry, userEmail?: string): Promise<void>;
23
+ /**
24
+ * Initialize WriteDispatcher for CLI commands
25
+ *
26
+ * Call this at the start of commands that need write dispatch.
27
+ * Safe to call multiple times (idempotent).
28
+ */
29
+ export declare function initializeWriteDispatcher(ginkoDir: string): Promise<void>;
30
+ //# sourceMappingURL=dispatcher-logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatcher-logger.d.ts","sourceRoot":"","sources":["../../src/utils/dispatcher-logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAEL,KAAK,QAAQ,EACd,MAAM,gCAAgC,CAAC;AAOxC;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,QAAQ,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAwBf;AA+DD;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyC/E"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * @fileType: utility
3
+ * @status: current
4
+ * @updated: 2025-11-02
5
+ * @tags: [write-dispatch, logging, session-log, adr-041]
6
+ * @related: [../core/session-log-manager.ts, ../../../../src/write-dispatcher.ts, ../../../../src/adapters/graph-adapter.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: []
10
+ */
11
+ import { SessionLogManager, } from '../core/session-log-manager.js';
12
+ import { getDispatcher, isDispatcherInitialized, } from '../lib/write-dispatcher/write-dispatcher.js';
13
+ /**
14
+ * Write log entry using WriteDispatcher if available, fallback to SessionLogManager
15
+ *
16
+ * Strategy:
17
+ * 1. If dispatcher is initialized and enabled, use it for dual-write
18
+ * 2. Otherwise, use SessionLogManager directly (legacy mode)
19
+ *
20
+ * This enables gradual migration to graph-first writes while maintaining
21
+ * backward compatibility.
22
+ */
23
+ export async function appendLogEntry(sessionDir, entry, userEmail) {
24
+ // Check if dispatcher is available
25
+ if (isDispatcherInitialized()) {
26
+ try {
27
+ const dispatcher = getDispatcher();
28
+ // Convert LogEntry to KnowledgeDocument
29
+ const document = convertLogEntryToDocument(entry, userEmail);
30
+ // Dispatch write (will route to graph and/or local based on config)
31
+ await dispatcher.dispatch(document);
32
+ return; // Success via dispatcher
33
+ }
34
+ catch (error) {
35
+ // Log dispatcher error but don't block
36
+ console.warn('[DispatcherLogger] Dispatcher write failed, falling back to local:', error instanceof Error ? error.message : String(error));
37
+ }
38
+ }
39
+ // Fallback to SessionLogManager (legacy mode or dispatcher failure)
40
+ await SessionLogManager.appendEntry(sessionDir, entry);
41
+ }
42
+ /**
43
+ * Convert LogEntry to KnowledgeDocument for dispatcher
44
+ */
45
+ function convertLogEntryToDocument(entry, userEmail) {
46
+ // Generate unique ID for log entry
47
+ const timestamp = new Date(entry.timestamp).getTime();
48
+ const id = `log_${timestamp}_${entry.category}`;
49
+ // Generate title from description (first 60 chars)
50
+ const title = entry.description.substring(0, 60).trim() + (entry.description.length > 60 ? '...' : '');
51
+ // Format content with all entry details
52
+ const content = formatLogEntryContent(entry);
53
+ return {
54
+ type: 'LogEntry',
55
+ id,
56
+ title,
57
+ content,
58
+ data: {
59
+ category: entry.category,
60
+ impact: entry.impact,
61
+ timestamp: entry.timestamp,
62
+ },
63
+ metadata: {
64
+ category: entry.category,
65
+ impact: entry.impact,
66
+ files: entry.files || [],
67
+ timestamp: entry.timestamp,
68
+ userEmail,
69
+ tags: [entry.category, entry.impact],
70
+ },
71
+ };
72
+ }
73
+ /**
74
+ * Format log entry content as markdown
75
+ */
76
+ function formatLogEntryContent(entry) {
77
+ const timestamp = new Date(entry.timestamp).toLocaleTimeString('en-US', {
78
+ hour: '2-digit',
79
+ minute: '2-digit',
80
+ hour12: false,
81
+ });
82
+ const filesSection = entry.files && entry.files.length > 0
83
+ ? `\n\n**Files:**\n${entry.files.map(f => `- ${f}`).join('\n')}`
84
+ : '';
85
+ return `# [${entry.category.toUpperCase()}] ${timestamp}
86
+
87
+ ${entry.description}${filesSection}
88
+
89
+ **Impact:** ${entry.impact}
90
+ **Timestamp:** ${entry.timestamp}
91
+ `;
92
+ }
93
+ /**
94
+ * Initialize WriteDispatcher for CLI commands
95
+ *
96
+ * Call this at the start of commands that need write dispatch.
97
+ * Safe to call multiple times (idempotent).
98
+ */
99
+ export async function initializeWriteDispatcher(ginkoDir) {
100
+ if (isDispatcherInitialized()) {
101
+ return; // Already initialized
102
+ }
103
+ try {
104
+ const { initializeDispatcher, } = await import('../lib/write-dispatcher/write-dispatcher.js');
105
+ const { createGraphAdapterFromEnv, } = await import('../lib/write-dispatcher/adapters/graph-adapter.js');
106
+ const { createLocalAdapterFromEnv, } = await import('../lib/write-dispatcher/adapters/local-adapter.js');
107
+ // Initialize dispatcher with graph as primary
108
+ const dispatcher = initializeDispatcher({
109
+ primaryAdapter: 'graph',
110
+ dualWrite: process.env.GINKO_DUAL_WRITE === 'true',
111
+ });
112
+ // Register adapters
113
+ const graphAdapter = createGraphAdapterFromEnv();
114
+ const localAdapter = await createLocalAdapterFromEnv(ginkoDir);
115
+ dispatcher.registerAdapter(graphAdapter);
116
+ dispatcher.registerAdapter(localAdapter);
117
+ // Validate configuration
118
+ const validation = dispatcher.validate();
119
+ if (!validation.valid) {
120
+ console.warn('[DispatcherLogger] Dispatcher validation warnings:', validation.errors);
121
+ }
122
+ }
123
+ catch (error) {
124
+ // Dispatcher initialization failed - will fallback to SessionLogManager
125
+ console.warn('[DispatcherLogger] Failed to initialize dispatcher, using local writes only:', error instanceof Error ? error.message : String(error));
126
+ }
127
+ }
128
+ //# sourceMappingURL=dispatcher-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatcher-logger.js","sourceRoot":"","sources":["../../src/utils/dispatcher-logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,iBAAiB,GAElB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,aAAa,EACb,uBAAuB,GAExB,MAAM,6CAA6C,CAAC;AAErD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAkB,EAClB,KAAe,EACf,SAAkB;IAElB,mCAAmC;IACnC,IAAI,uBAAuB,EAAE,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;YAEnC,wCAAwC;YACxC,MAAM,QAAQ,GAAsB,yBAAyB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAEhF,oEAAoE;YACpE,MAAM,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAEpC,OAAO,CAAC,yBAAyB;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,uCAAuC;YACvC,OAAO,CAAC,IAAI,CACV,oEAAoE,EACpE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,MAAM,iBAAiB,CAAC,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB,CAChC,KAAe,EACf,SAAkB;IAElB,mCAAmC;IACnC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;IACtD,MAAM,EAAE,GAAG,OAAO,SAAS,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;IAEhD,mDAAmD;IACnD,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAEvG,wCAAwC;IACxC,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAE7C,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,EAAE;QACF,KAAK;QACL,OAAO;QACP,IAAI,EAAE;YACJ,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B;QACD,QAAQ,EAAE;YACR,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;YACxB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS;YACT,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;SACrC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,KAAe;IAC5C,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE;QACtE,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QACxD,CAAC,CAAC,mBAAmB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAChE,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,MAAM,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,SAAS;;EAEvD,KAAK,CAAC,WAAW,GAAG,YAAY;;cAEpB,KAAK,CAAC,MAAM;iBACT,KAAK,CAAC,SAAS;CAC/B,CAAC;AACF,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,QAAgB;IAC9D,IAAI,uBAAuB,EAAE,EAAE,CAAC;QAC9B,OAAO,CAAC,sBAAsB;IAChC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EACJ,oBAAoB,GACrB,GAAG,MAAM,MAAM,CAAC,6CAA6C,CAAC,CAAC;QAChE,MAAM,EACJ,yBAAyB,GAC1B,GAAG,MAAM,MAAM,CAAC,mDAAmD,CAAC,CAAC;QACtE,MAAM,EACJ,yBAAyB,GAC1B,GAAG,MAAM,MAAM,CAAC,mDAAmD,CAAC,CAAC;QAEtE,8CAA8C;QAC9C,MAAM,UAAU,GAAG,oBAAoB,CAAC;YACtC,cAAc,EAAE,OAAO;YACvB,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,MAAM;SACnD,CAAC,CAAC;QAEH,oBAAoB;QACpB,MAAM,YAAY,GAAG,yBAAyB,EAAE,CAAC;QACjD,MAAM,YAAY,GAAG,MAAM,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QAE/D,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QACzC,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QAEzC,yBAAyB;QACzB,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;QACzC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,oDAAoD,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,wEAAwE;QACxE,OAAO,CAAC,IAAI,CACV,8EAA8E,EAC9E,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -9,8 +9,9 @@
9
9
  * @dependencies: [fs-extra, path]
10
10
  */
11
11
  /**
12
- * Find the ginko root directory by walking up the directory tree
13
- * Similar to how git finds the .git directory
12
+ * Find the ginko root directory
13
+ * Prefers git repository root for monorepo compatibility,
14
+ * falls back to walking up directory tree
14
15
  *
15
16
  * @param startDir - Directory to start searching from (defaults to cwd)
16
17
  * @returns Path to ginko root directory, or null if not found
@@ -1 +1 @@
1
- {"version":3,"file":"ginko-root.d.ts","sourceRoot":"","sources":["../../src/utils/ginko-root.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiC7E;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQzE;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGxE;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAG3F;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAG9F"}
1
+ {"version":3,"file":"ginko-root.d.ts","sourceRoot":"","sources":["../../src/utils/ginko-root.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAyBH;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA8C7E;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQzE;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGxE;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAG3F;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAG9F"}
@@ -10,14 +10,47 @@
10
10
  */
11
11
  import fs from 'fs-extra';
12
12
  import path from 'path';
13
+ import { execSync } from 'child_process';
13
14
  /**
14
- * Find the ginko root directory by walking up the directory tree
15
- * Similar to how git finds the .git directory
15
+ * Get git repository root using git command
16
+ *
17
+ * @param startDir - Directory to start searching from (defaults to cwd)
18
+ * @returns Path to git root directory, or null if not in a git repo
19
+ */
20
+ function getGitRoot(startDir) {
21
+ try {
22
+ const gitRoot = execSync('git rev-parse --show-toplevel', {
23
+ encoding: 'utf8',
24
+ cwd: startDir || process.cwd(),
25
+ stdio: ['pipe', 'pipe', 'ignore'] // Suppress stderr
26
+ }).trim();
27
+ return path.resolve(gitRoot);
28
+ }
29
+ catch (error) {
30
+ return null;
31
+ }
32
+ }
33
+ /**
34
+ * Find the ginko root directory
35
+ * Prefers git repository root for monorepo compatibility,
36
+ * falls back to walking up directory tree
16
37
  *
17
38
  * @param startDir - Directory to start searching from (defaults to cwd)
18
39
  * @returns Path to ginko root directory, or null if not found
19
40
  */
20
41
  export async function findGinkoRoot(startDir) {
42
+ // First, try to use git repository root (preferred for monorepos)
43
+ const gitRoot = getGitRoot(startDir);
44
+ if (gitRoot) {
45
+ const gitGinkoPath = path.join(gitRoot, '.ginko');
46
+ if (await fs.pathExists(gitGinkoPath)) {
47
+ const stats = await fs.stat(gitGinkoPath);
48
+ if (stats.isDirectory()) {
49
+ return gitRoot;
50
+ }
51
+ }
52
+ }
53
+ // Fall back to walking up directory tree (for non-git projects)
21
54
  let currentDir = startDir || process.cwd();
22
55
  const root = path.parse(currentDir).root;
23
56
  while (currentDir !== root) {