@winspan/claude-forge 0.1.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 (487) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +505 -0
  3. package/dist/autopilot/index.d.ts +4 -0
  4. package/dist/autopilot/index.d.ts.map +1 -0
  5. package/dist/autopilot/index.js +4 -0
  6. package/dist/autopilot/index.js.map +1 -0
  7. package/dist/autopilot/intent-engine.d.ts +60 -0
  8. package/dist/autopilot/intent-engine.d.ts.map +1 -0
  9. package/dist/autopilot/intent-engine.js +308 -0
  10. package/dist/autopilot/intent-engine.js.map +1 -0
  11. package/dist/autopilot/knowledge-engine.d.ts +67 -0
  12. package/dist/autopilot/knowledge-engine.d.ts.map +1 -0
  13. package/dist/autopilot/knowledge-engine.js +262 -0
  14. package/dist/autopilot/knowledge-engine.js.map +1 -0
  15. package/dist/autopilot/quality-gate.d.ts +69 -0
  16. package/dist/autopilot/quality-gate.d.ts.map +1 -0
  17. package/dist/autopilot/quality-gate.js +244 -0
  18. package/dist/autopilot/quality-gate.js.map +1 -0
  19. package/dist/autopilot/team-orchestrator.d.ts +16 -0
  20. package/dist/autopilot/team-orchestrator.d.ts.map +1 -0
  21. package/dist/autopilot/team-orchestrator.js +56 -0
  22. package/dist/autopilot/team-orchestrator.js.map +1 -0
  23. package/dist/backup/index.d.ts +16 -0
  24. package/dist/backup/index.d.ts.map +1 -0
  25. package/dist/backup/index.js +169 -0
  26. package/dist/backup/index.js.map +1 -0
  27. package/dist/claudemd/detector.d.ts +54 -0
  28. package/dist/claudemd/detector.d.ts.map +1 -0
  29. package/dist/claudemd/detector.js +510 -0
  30. package/dist/claudemd/detector.js.map +1 -0
  31. package/dist/claudemd/index.d.ts +44 -0
  32. package/dist/claudemd/index.d.ts.map +1 -0
  33. package/dist/claudemd/index.js +193 -0
  34. package/dist/claudemd/index.js.map +1 -0
  35. package/dist/claudemd/modules-config.d.ts +37 -0
  36. package/dist/claudemd/modules-config.d.ts.map +1 -0
  37. package/dist/claudemd/modules-config.js +80 -0
  38. package/dist/claudemd/modules-config.js.map +1 -0
  39. package/dist/claudemd/prompt-injector.d.ts +29 -0
  40. package/dist/claudemd/prompt-injector.d.ts.map +1 -0
  41. package/dist/claudemd/prompt-injector.js +144 -0
  42. package/dist/claudemd/prompt-injector.js.map +1 -0
  43. package/dist/claudemd/prompts.d.ts +16 -0
  44. package/dist/claudemd/prompts.d.ts.map +1 -0
  45. package/dist/claudemd/prompts.js +439 -0
  46. package/dist/claudemd/prompts.js.map +1 -0
  47. package/dist/claudemd/writer.d.ts +27 -0
  48. package/dist/claudemd/writer.d.ts.map +1 -0
  49. package/dist/claudemd/writer.js +91 -0
  50. package/dist/claudemd/writer.js.map +1 -0
  51. package/dist/cli/commands/backup.d.ts +3 -0
  52. package/dist/cli/commands/backup.d.ts.map +1 -0
  53. package/dist/cli/commands/backup.js +63 -0
  54. package/dist/cli/commands/backup.js.map +1 -0
  55. package/dist/cli/commands/claudemd.d.ts +3 -0
  56. package/dist/cli/commands/claudemd.d.ts.map +1 -0
  57. package/dist/cli/commands/claudemd.js +322 -0
  58. package/dist/cli/commands/claudemd.js.map +1 -0
  59. package/dist/cli/commands/config.d.ts +3 -0
  60. package/dist/cli/commands/config.d.ts.map +1 -0
  61. package/dist/cli/commands/config.js +67 -0
  62. package/dist/cli/commands/config.js.map +1 -0
  63. package/dist/cli/commands/console.d.ts +3 -0
  64. package/dist/cli/commands/console.d.ts.map +1 -0
  65. package/dist/cli/commands/console.js +11 -0
  66. package/dist/cli/commands/console.js.map +1 -0
  67. package/dist/cli/commands/convention.d.ts +3 -0
  68. package/dist/cli/commands/convention.d.ts.map +1 -0
  69. package/dist/cli/commands/convention.js +269 -0
  70. package/dist/cli/commands/convention.js.map +1 -0
  71. package/dist/cli/commands/daemon.d.ts +3 -0
  72. package/dist/cli/commands/daemon.d.ts.map +1 -0
  73. package/dist/cli/commands/daemon.js +191 -0
  74. package/dist/cli/commands/daemon.js.map +1 -0
  75. package/dist/cli/commands/distill.d.ts +3 -0
  76. package/dist/cli/commands/distill.d.ts.map +1 -0
  77. package/dist/cli/commands/distill.js +61 -0
  78. package/dist/cli/commands/distill.js.map +1 -0
  79. package/dist/cli/commands/init.d.ts +3 -0
  80. package/dist/cli/commands/init.d.ts.map +1 -0
  81. package/dist/cli/commands/init.js +306 -0
  82. package/dist/cli/commands/init.js.map +1 -0
  83. package/dist/cli/commands/logs.d.ts +3 -0
  84. package/dist/cli/commands/logs.d.ts.map +1 -0
  85. package/dist/cli/commands/logs.js +311 -0
  86. package/dist/cli/commands/logs.js.map +1 -0
  87. package/dist/cli/commands/pattern.d.ts +3 -0
  88. package/dist/cli/commands/pattern.d.ts.map +1 -0
  89. package/dist/cli/commands/pattern.js +118 -0
  90. package/dist/cli/commands/pattern.js.map +1 -0
  91. package/dist/cli/commands/pipeline.d.ts +3 -0
  92. package/dist/cli/commands/pipeline.d.ts.map +1 -0
  93. package/dist/cli/commands/pipeline.js +75 -0
  94. package/dist/cli/commands/pipeline.js.map +1 -0
  95. package/dist/cli/commands/profile.d.ts +3 -0
  96. package/dist/cli/commands/profile.d.ts.map +1 -0
  97. package/dist/cli/commands/profile.js +213 -0
  98. package/dist/cli/commands/profile.js.map +1 -0
  99. package/dist/cli/commands/query.d.ts +3 -0
  100. package/dist/cli/commands/query.d.ts.map +1 -0
  101. package/dist/cli/commands/query.js +115 -0
  102. package/dist/cli/commands/query.js.map +1 -0
  103. package/dist/cli/commands/skill.d.ts +3 -0
  104. package/dist/cli/commands/skill.d.ts.map +1 -0
  105. package/dist/cli/commands/skill.js +466 -0
  106. package/dist/cli/commands/skill.js.map +1 -0
  107. package/dist/cli/index.d.ts +3 -0
  108. package/dist/cli/index.d.ts.map +1 -0
  109. package/dist/cli/index.js +49 -0
  110. package/dist/cli/index.js.map +1 -0
  111. package/dist/cli/interceptor.d.ts +5 -0
  112. package/dist/cli/interceptor.d.ts.map +1 -0
  113. package/dist/cli/interceptor.js +55 -0
  114. package/dist/cli/interceptor.js.map +1 -0
  115. package/dist/cli/tui.d.ts +2 -0
  116. package/dist/cli/tui.d.ts.map +1 -0
  117. package/dist/cli/tui.js +360 -0
  118. package/dist/cli/tui.js.map +1 -0
  119. package/dist/cli/utils/errors.d.ts +17 -0
  120. package/dist/cli/utils/errors.d.ts.map +1 -0
  121. package/dist/cli/utils/errors.js +42 -0
  122. package/dist/cli/utils/errors.js.map +1 -0
  123. package/dist/cli/utils/output.d.ts +23 -0
  124. package/dist/cli/utils/output.d.ts.map +1 -0
  125. package/dist/cli/utils/output.js +69 -0
  126. package/dist/cli/utils/output.js.map +1 -0
  127. package/dist/config/defaults.d.ts +3 -0
  128. package/dist/config/defaults.d.ts.map +1 -0
  129. package/dist/config/defaults.js +50 -0
  130. package/dist/config/defaults.js.map +1 -0
  131. package/dist/config/index.d.ts +26 -0
  132. package/dist/config/index.d.ts.map +1 -0
  133. package/dist/config/index.js +161 -0
  134. package/dist/config/index.js.map +1 -0
  135. package/dist/config/schema.d.ts +59 -0
  136. package/dist/config/schema.d.ts.map +1 -0
  137. package/dist/config/schema.js +86 -0
  138. package/dist/config/schema.js.map +1 -0
  139. package/dist/convention/convention-distiller.d.ts +28 -0
  140. package/dist/convention/convention-distiller.d.ts.map +1 -0
  141. package/dist/convention/convention-distiller.js +172 -0
  142. package/dist/convention/convention-distiller.js.map +1 -0
  143. package/dist/convention/convention-evolver.d.ts +31 -0
  144. package/dist/convention/convention-evolver.d.ts.map +1 -0
  145. package/dist/convention/convention-evolver.js +175 -0
  146. package/dist/convention/convention-evolver.js.map +1 -0
  147. package/dist/convention/convention-loader.d.ts +22 -0
  148. package/dist/convention/convention-loader.d.ts.map +1 -0
  149. package/dist/convention/convention-loader.js +139 -0
  150. package/dist/convention/convention-loader.js.map +1 -0
  151. package/dist/convention/convention-manager.d.ts +46 -0
  152. package/dist/convention/convention-manager.d.ts.map +1 -0
  153. package/dist/convention/convention-manager.js +193 -0
  154. package/dist/convention/convention-manager.js.map +1 -0
  155. package/dist/convention/index.d.ts +6 -0
  156. package/dist/convention/index.d.ts.map +1 -0
  157. package/dist/convention/index.js +5 -0
  158. package/dist/convention/index.js.map +1 -0
  159. package/dist/convention/types.d.ts +90 -0
  160. package/dist/convention/types.d.ts.map +1 -0
  161. package/dist/convention/types.js +13 -0
  162. package/dist/convention/types.js.map +1 -0
  163. package/dist/daemon/engine-registry/init-autopilot.d.ts +12 -0
  164. package/dist/daemon/engine-registry/init-autopilot.d.ts.map +1 -0
  165. package/dist/daemon/engine-registry/init-autopilot.js +20 -0
  166. package/dist/daemon/engine-registry/init-autopilot.js.map +1 -0
  167. package/dist/daemon/engine-registry/init-distill.d.ts +6 -0
  168. package/dist/daemon/engine-registry/init-distill.d.ts.map +1 -0
  169. package/dist/daemon/engine-registry/init-distill.js +25 -0
  170. package/dist/daemon/engine-registry/init-distill.js.map +1 -0
  171. package/dist/daemon/engine-registry/init-orchestration.d.ts +5 -0
  172. package/dist/daemon/engine-registry/init-orchestration.d.ts.map +1 -0
  173. package/dist/daemon/engine-registry/init-orchestration.js +11 -0
  174. package/dist/daemon/engine-registry/init-orchestration.js.map +1 -0
  175. package/dist/daemon/engine-registry/init-pattern-engine.d.ts +9 -0
  176. package/dist/daemon/engine-registry/init-pattern-engine.d.ts.map +1 -0
  177. package/dist/daemon/engine-registry/init-pattern-engine.js +22 -0
  178. package/dist/daemon/engine-registry/init-pattern-engine.js.map +1 -0
  179. package/dist/daemon/engine-registry/init-pipeline.d.ts +5 -0
  180. package/dist/daemon/engine-registry/init-pipeline.d.ts.map +1 -0
  181. package/dist/daemon/engine-registry/init-pipeline.js +12 -0
  182. package/dist/daemon/engine-registry/init-pipeline.js.map +1 -0
  183. package/dist/daemon/engine-registry/init-profile.d.ts +3 -0
  184. package/dist/daemon/engine-registry/init-profile.d.ts.map +1 -0
  185. package/dist/daemon/engine-registry/init-profile.js +28 -0
  186. package/dist/daemon/engine-registry/init-profile.js.map +1 -0
  187. package/dist/daemon/engine-registry/init-resume.d.ts +6 -0
  188. package/dist/daemon/engine-registry/init-resume.d.ts.map +1 -0
  189. package/dist/daemon/engine-registry/init-resume.js +16 -0
  190. package/dist/daemon/engine-registry/init-resume.js.map +1 -0
  191. package/dist/daemon/engine-registry/init-skill-registry.d.ts +10 -0
  192. package/dist/daemon/engine-registry/init-skill-registry.d.ts.map +1 -0
  193. package/dist/daemon/engine-registry/init-skill-registry.js +46 -0
  194. package/dist/daemon/engine-registry/init-skill-registry.js.map +1 -0
  195. package/dist/daemon/engine-registry.d.ts +13 -0
  196. package/dist/daemon/engine-registry.d.ts.map +1 -0
  197. package/dist/daemon/engine-registry.js +45 -0
  198. package/dist/daemon/engine-registry.js.map +1 -0
  199. package/dist/daemon/event-parser.d.ts +5 -0
  200. package/dist/daemon/event-parser.d.ts.map +1 -0
  201. package/dist/daemon/event-parser.js +29 -0
  202. package/dist/daemon/event-parser.js.map +1 -0
  203. package/dist/daemon/handler-context.d.ts +37 -0
  204. package/dist/daemon/handler-context.d.ts.map +1 -0
  205. package/dist/daemon/handler-context.js +2 -0
  206. package/dist/daemon/handler-context.js.map +1 -0
  207. package/dist/daemon/handlers/base-handler.d.ts +14 -0
  208. package/dist/daemon/handlers/base-handler.d.ts.map +1 -0
  209. package/dist/daemon/handlers/base-handler.js +18 -0
  210. package/dist/daemon/handlers/base-handler.js.map +1 -0
  211. package/dist/daemon/handlers/conversational-config-handler.d.ts +24 -0
  212. package/dist/daemon/handlers/conversational-config-handler.d.ts.map +1 -0
  213. package/dist/daemon/handlers/conversational-config-handler.js +175 -0
  214. package/dist/daemon/handlers/conversational-config-handler.js.map +1 -0
  215. package/dist/daemon/handlers/post-tool-use-handler.d.ts +9 -0
  216. package/dist/daemon/handlers/post-tool-use-handler.d.ts.map +1 -0
  217. package/dist/daemon/handlers/post-tool-use-handler.js +82 -0
  218. package/dist/daemon/handlers/post-tool-use-handler.js.map +1 -0
  219. package/dist/daemon/handlers/pre-tool-use-handler.d.ts +11 -0
  220. package/dist/daemon/handlers/pre-tool-use-handler.d.ts.map +1 -0
  221. package/dist/daemon/handlers/pre-tool-use-handler.js +58 -0
  222. package/dist/daemon/handlers/pre-tool-use-handler.js.map +1 -0
  223. package/dist/daemon/handlers/stop-handler.d.ts +11 -0
  224. package/dist/daemon/handlers/stop-handler.d.ts.map +1 -0
  225. package/dist/daemon/handlers/stop-handler.js +112 -0
  226. package/dist/daemon/handlers/stop-handler.js.map +1 -0
  227. package/dist/daemon/handlers/user-prompt-handler.d.ts +72 -0
  228. package/dist/daemon/handlers/user-prompt-handler.d.ts.map +1 -0
  229. package/dist/daemon/handlers/user-prompt-handler.js +374 -0
  230. package/dist/daemon/handlers/user-prompt-handler.js.map +1 -0
  231. package/dist/daemon/index.d.ts +2 -0
  232. package/dist/daemon/index.d.ts.map +1 -0
  233. package/dist/daemon/index.js +284 -0
  234. package/dist/daemon/index.js.map +1 -0
  235. package/dist/daemon/lifecycle.d.ts +9 -0
  236. package/dist/daemon/lifecycle.d.ts.map +1 -0
  237. package/dist/daemon/lifecycle.js +56 -0
  238. package/dist/daemon/lifecycle.js.map +1 -0
  239. package/dist/daemon/server.d.ts +22 -0
  240. package/dist/daemon/server.d.ts.map +1 -0
  241. package/dist/daemon/server.js +139 -0
  242. package/dist/daemon/server.js.map +1 -0
  243. package/dist/distill/index.d.ts +16 -0
  244. package/dist/distill/index.d.ts.map +1 -0
  245. package/dist/distill/index.js +104 -0
  246. package/dist/distill/index.js.map +1 -0
  247. package/dist/distill/prompts.d.ts +6 -0
  248. package/dist/distill/prompts.d.ts.map +1 -0
  249. package/dist/distill/prompts.js +77 -0
  250. package/dist/distill/prompts.js.map +1 -0
  251. package/dist/distill/trigger.d.ts +40 -0
  252. package/dist/distill/trigger.d.ts.map +1 -0
  253. package/dist/distill/trigger.js +127 -0
  254. package/dist/distill/trigger.js.map +1 -0
  255. package/dist/distill/writer.d.ts +15 -0
  256. package/dist/distill/writer.d.ts.map +1 -0
  257. package/dist/distill/writer.js +73 -0
  258. package/dist/distill/writer.js.map +1 -0
  259. package/dist/doc-sync/index.d.ts +21 -0
  260. package/dist/doc-sync/index.d.ts.map +1 -0
  261. package/dist/doc-sync/index.js +190 -0
  262. package/dist/doc-sync/index.js.map +1 -0
  263. package/dist/hooks/check-context-limit.sh +97 -0
  264. package/dist/hooks/hooks/check-context-limit.sh +97 -0
  265. package/dist/hooks/hooks/notification.sh +33 -0
  266. package/dist/hooks/hooks/post-tool-use.sh +49 -0
  267. package/dist/hooks/hooks/pre-tool-use.sh +55 -0
  268. package/dist/hooks/hooks/stop.sh +29 -0
  269. package/dist/hooks/hooks/user-prompt-submit.sh +72 -0
  270. package/dist/hooks/notification.sh +33 -0
  271. package/dist/hooks/post-tool-use.sh +49 -0
  272. package/dist/hooks/pre-tool-use.sh +55 -0
  273. package/dist/hooks/stop.sh +29 -0
  274. package/dist/hooks/user-prompt-submit.sh +72 -0
  275. package/dist/orchestration/index.d.ts +32 -0
  276. package/dist/orchestration/index.d.ts.map +1 -0
  277. package/dist/orchestration/index.js +72 -0
  278. package/dist/orchestration/index.js.map +1 -0
  279. package/dist/orchestration/notifier.d.ts +11 -0
  280. package/dist/orchestration/notifier.d.ts.map +1 -0
  281. package/dist/orchestration/notifier.js +22 -0
  282. package/dist/orchestration/notifier.js.map +1 -0
  283. package/dist/orchestration/policy-engine.d.ts +21 -0
  284. package/dist/orchestration/policy-engine.d.ts.map +1 -0
  285. package/dist/orchestration/policy-engine.js +77 -0
  286. package/dist/orchestration/policy-engine.js.map +1 -0
  287. package/dist/orchestration/tracker.d.ts +45 -0
  288. package/dist/orchestration/tracker.d.ts.map +1 -0
  289. package/dist/orchestration/tracker.js +95 -0
  290. package/dist/orchestration/tracker.js.map +1 -0
  291. package/dist/pattern-engine/execution-tracker.d.ts +45 -0
  292. package/dist/pattern-engine/execution-tracker.d.ts.map +1 -0
  293. package/dist/pattern-engine/execution-tracker.js +132 -0
  294. package/dist/pattern-engine/execution-tracker.js.map +1 -0
  295. package/dist/pattern-engine/index.d.ts +52 -0
  296. package/dist/pattern-engine/index.d.ts.map +1 -0
  297. package/dist/pattern-engine/index.js +104 -0
  298. package/dist/pattern-engine/index.js.map +1 -0
  299. package/dist/pattern-engine/pattern-evolver.d.ts +39 -0
  300. package/dist/pattern-engine/pattern-evolver.d.ts.map +1 -0
  301. package/dist/pattern-engine/pattern-evolver.js +170 -0
  302. package/dist/pattern-engine/pattern-evolver.js.map +1 -0
  303. package/dist/pattern-engine/pattern-executor.d.ts +43 -0
  304. package/dist/pattern-engine/pattern-executor.d.ts.map +1 -0
  305. package/dist/pattern-engine/pattern-executor.js +185 -0
  306. package/dist/pattern-engine/pattern-executor.js.map +1 -0
  307. package/dist/pattern-engine/pattern-loader.d.ts +14 -0
  308. package/dist/pattern-engine/pattern-loader.d.ts.map +1 -0
  309. package/dist/pattern-engine/pattern-loader.js +111 -0
  310. package/dist/pattern-engine/pattern-loader.js.map +1 -0
  311. package/dist/pattern-engine/pattern-router.d.ts +24 -0
  312. package/dist/pattern-engine/pattern-router.d.ts.map +1 -0
  313. package/dist/pattern-engine/pattern-router.js +124 -0
  314. package/dist/pattern-engine/pattern-router.js.map +1 -0
  315. package/dist/pattern-engine/types.d.ts +144 -0
  316. package/dist/pattern-engine/types.d.ts.map +1 -0
  317. package/dist/pattern-engine/types.js +8 -0
  318. package/dist/pattern-engine/types.js.map +1 -0
  319. package/dist/pipeline/analyzer.d.ts +17 -0
  320. package/dist/pipeline/analyzer.d.ts.map +1 -0
  321. package/dist/pipeline/analyzer.js +103 -0
  322. package/dist/pipeline/analyzer.js.map +1 -0
  323. package/dist/pipeline/index.d.ts +68 -0
  324. package/dist/pipeline/index.d.ts.map +1 -0
  325. package/dist/pipeline/index.js +183 -0
  326. package/dist/pipeline/index.js.map +1 -0
  327. package/dist/pipeline/phase-manager.d.ts +32 -0
  328. package/dist/pipeline/phase-manager.d.ts.map +1 -0
  329. package/dist/pipeline/phase-manager.js +188 -0
  330. package/dist/pipeline/phase-manager.js.map +1 -0
  331. package/dist/pipeline/pipeline-options.d.ts +19 -0
  332. package/dist/pipeline/pipeline-options.d.ts.map +1 -0
  333. package/dist/pipeline/pipeline-options.js +136 -0
  334. package/dist/pipeline/pipeline-options.js.map +1 -0
  335. package/dist/pipeline/store.d.ts +32 -0
  336. package/dist/pipeline/store.d.ts.map +1 -0
  337. package/dist/pipeline/store.js +113 -0
  338. package/dist/pipeline/store.js.map +1 -0
  339. package/dist/pipeline/types.d.ts +25 -0
  340. package/dist/pipeline/types.d.ts.map +1 -0
  341. package/dist/pipeline/types.js +16 -0
  342. package/dist/pipeline/types.js.map +1 -0
  343. package/dist/profile/index.d.ts +77 -0
  344. package/dist/profile/index.d.ts.map +1 -0
  345. package/dist/profile/index.js +407 -0
  346. package/dist/profile/index.js.map +1 -0
  347. package/dist/resume/context-gen.d.ts +20 -0
  348. package/dist/resume/context-gen.d.ts.map +1 -0
  349. package/dist/resume/context-gen.js +130 -0
  350. package/dist/resume/context-gen.js.map +1 -0
  351. package/dist/resume/index.d.ts +32 -0
  352. package/dist/resume/index.d.ts.map +1 -0
  353. package/dist/resume/index.js +142 -0
  354. package/dist/resume/index.js.map +1 -0
  355. package/dist/resume/state-machine.d.ts +21 -0
  356. package/dist/resume/state-machine.d.ts.map +1 -0
  357. package/dist/resume/state-machine.js +58 -0
  358. package/dist/resume/state-machine.js.map +1 -0
  359. package/dist/skill-registry/collector.d.ts +75 -0
  360. package/dist/skill-registry/collector.d.ts.map +1 -0
  361. package/dist/skill-registry/collector.js +334 -0
  362. package/dist/skill-registry/collector.js.map +1 -0
  363. package/dist/skill-registry/evolver.d.ts +84 -0
  364. package/dist/skill-registry/evolver.d.ts.map +1 -0
  365. package/dist/skill-registry/evolver.js +585 -0
  366. package/dist/skill-registry/evolver.js.map +1 -0
  367. package/dist/skill-registry/index.d.ts +73 -0
  368. package/dist/skill-registry/index.d.ts.map +1 -0
  369. package/dist/skill-registry/index.js +195 -0
  370. package/dist/skill-registry/index.js.map +1 -0
  371. package/dist/skill-registry/official-sync.d.ts +20 -0
  372. package/dist/skill-registry/official-sync.d.ts.map +1 -0
  373. package/dist/skill-registry/official-sync.js +576 -0
  374. package/dist/skill-registry/official-sync.js.map +1 -0
  375. package/dist/skill-registry/orchestration-config.d.ts +35 -0
  376. package/dist/skill-registry/orchestration-config.d.ts.map +1 -0
  377. package/dist/skill-registry/orchestration-config.js +125 -0
  378. package/dist/skill-registry/orchestration-config.js.map +1 -0
  379. package/dist/skill-registry/orchestrator.d.ts +45 -0
  380. package/dist/skill-registry/orchestrator.d.ts.map +1 -0
  381. package/dist/skill-registry/orchestrator.js +183 -0
  382. package/dist/skill-registry/orchestrator.js.map +1 -0
  383. package/dist/skill-registry/project-learner.d.ts +25 -0
  384. package/dist/skill-registry/project-learner.d.ts.map +1 -0
  385. package/dist/skill-registry/project-learner.js +176 -0
  386. package/dist/skill-registry/project-learner.js.map +1 -0
  387. package/dist/skill-registry/recommender.d.ts +25 -0
  388. package/dist/skill-registry/recommender.d.ts.map +1 -0
  389. package/dist/skill-registry/recommender.js +91 -0
  390. package/dist/skill-registry/recommender.js.map +1 -0
  391. package/dist/skill-registry/registry.d.ts +49 -0
  392. package/dist/skill-registry/registry.d.ts.map +1 -0
  393. package/dist/skill-registry/registry.js +160 -0
  394. package/dist/skill-registry/registry.js.map +1 -0
  395. package/dist/skill-registry/scanner.d.ts +36 -0
  396. package/dist/skill-registry/scanner.d.ts.map +1 -0
  397. package/dist/skill-registry/scanner.js +122 -0
  398. package/dist/skill-registry/scanner.js.map +1 -0
  399. package/dist/skill-registry/skills-config.d.ts +29 -0
  400. package/dist/skill-registry/skills-config.d.ts.map +1 -0
  401. package/dist/skill-registry/skills-config.js +86 -0
  402. package/dist/skill-registry/skills-config.js.map +1 -0
  403. package/dist/storage/index.d.ts +31 -0
  404. package/dist/storage/index.d.ts.map +1 -0
  405. package/dist/storage/index.js +2 -0
  406. package/dist/storage/index.js.map +1 -0
  407. package/dist/storage/sqlite.d.ts +58 -0
  408. package/dist/storage/sqlite.d.ts.map +1 -0
  409. package/dist/storage/sqlite.js +375 -0
  410. package/dist/storage/sqlite.js.map +1 -0
  411. package/dist/tests/claude-api.test.d.ts +2 -0
  412. package/dist/tests/claude-api.test.d.ts.map +1 -0
  413. package/dist/tests/claude-api.test.js +96 -0
  414. package/dist/tests/claude-api.test.js.map +1 -0
  415. package/dist/tests/conversational-config-handler.test.d.ts +2 -0
  416. package/dist/tests/conversational-config-handler.test.d.ts.map +1 -0
  417. package/dist/tests/conversational-config-handler.test.js +107 -0
  418. package/dist/tests/conversational-config-handler.test.js.map +1 -0
  419. package/dist/tests/doc-sync.test.d.ts +2 -0
  420. package/dist/tests/doc-sync.test.d.ts.map +1 -0
  421. package/dist/tests/doc-sync.test.js +148 -0
  422. package/dist/tests/doc-sync.test.js.map +1 -0
  423. package/dist/tests/orchestration-config.test.d.ts +2 -0
  424. package/dist/tests/orchestration-config.test.d.ts.map +1 -0
  425. package/dist/tests/orchestration-config.test.js +122 -0
  426. package/dist/tests/orchestration-config.test.js.map +1 -0
  427. package/dist/tests/pipeline-options.test.d.ts +2 -0
  428. package/dist/tests/pipeline-options.test.d.ts.map +1 -0
  429. package/dist/tests/pipeline-options.test.js +68 -0
  430. package/dist/tests/pipeline-options.test.js.map +1 -0
  431. package/dist/tests/resume-context-gen.test.d.ts +2 -0
  432. package/dist/tests/resume-context-gen.test.d.ts.map +1 -0
  433. package/dist/tests/resume-context-gen.test.js +93 -0
  434. package/dist/tests/resume-context-gen.test.js.map +1 -0
  435. package/dist/tests/sqlite.test.d.ts +2 -0
  436. package/dist/tests/sqlite.test.d.ts.map +1 -0
  437. package/dist/tests/sqlite.test.js +154 -0
  438. package/dist/tests/sqlite.test.js.map +1 -0
  439. package/dist/tests/tracker.test.d.ts +2 -0
  440. package/dist/tests/tracker.test.d.ts.map +1 -0
  441. package/dist/tests/tracker.test.js +75 -0
  442. package/dist/tests/tracker.test.js.map +1 -0
  443. package/dist/tests/tui.test.d.ts +2 -0
  444. package/dist/tests/tui.test.d.ts.map +1 -0
  445. package/dist/tests/tui.test.js +39 -0
  446. package/dist/tests/tui.test.js.map +1 -0
  447. package/dist/tests/user-prompt-handler.test.d.ts +2 -0
  448. package/dist/tests/user-prompt-handler.test.d.ts.map +1 -0
  449. package/dist/tests/user-prompt-handler.test.js +182 -0
  450. package/dist/tests/user-prompt-handler.test.js.map +1 -0
  451. package/dist/tui/index.d.ts +2 -0
  452. package/dist/tui/index.d.ts.map +1 -0
  453. package/dist/tui/index.js +486 -0
  454. package/dist/tui/index.js.map +1 -0
  455. package/dist/types/event.d.ts +24 -0
  456. package/dist/types/event.d.ts.map +1 -0
  457. package/dist/types/event.js +2 -0
  458. package/dist/types/event.js.map +1 -0
  459. package/dist/types/index.d.ts +3 -0
  460. package/dist/types/index.d.ts.map +1 -0
  461. package/dist/types/index.js +2 -0
  462. package/dist/types/index.js.map +1 -0
  463. package/dist/types/session.d.ts +11 -0
  464. package/dist/types/session.d.ts.map +1 -0
  465. package/dist/types/session.js +2 -0
  466. package/dist/types/session.js.map +1 -0
  467. package/dist/utils/claude-api.d.ts +49 -0
  468. package/dist/utils/claude-api.d.ts.map +1 -0
  469. package/dist/utils/claude-api.js +233 -0
  470. package/dist/utils/claude-api.js.map +1 -0
  471. package/dist/utils/formatter.d.ts +57 -0
  472. package/dist/utils/formatter.d.ts.map +1 -0
  473. package/dist/utils/formatter.js +109 -0
  474. package/dist/utils/formatter.js.map +1 -0
  475. package/dist/utils/logger.d.ts +25 -0
  476. package/dist/utils/logger.d.ts.map +1 -0
  477. package/dist/utils/logger.js +136 -0
  478. package/dist/utils/logger.js.map +1 -0
  479. package/dist/utils/mutex-lock.d.ts +23 -0
  480. package/dist/utils/mutex-lock.d.ts.map +1 -0
  481. package/dist/utils/mutex-lock.js +42 -0
  482. package/dist/utils/mutex-lock.js.map +1 -0
  483. package/dist/utils/truncate.d.ts +30 -0
  484. package/dist/utils/truncate.d.ts.map +1 -0
  485. package/dist/utils/truncate.js +64 -0
  486. package/dist/utils/truncate.js.map +1 -0
  487. package/package.json +63 -0
@@ -0,0 +1,486 @@
1
+ /**
2
+ * TUI 控制台 — 纯 ANSI 实现,无需额外依赖
3
+ * 实时展示守护进程状态、Pipeline、技能、蒸馏等信息
4
+ */
5
+ import net from 'net';
6
+ import readline from 'readline';
7
+ import path from 'path';
8
+ import os from 'os';
9
+ import { spawn } from 'child_process';
10
+ const SOCKET_PATH = path.join(os.homedir(), '.claude-forge', 'daemon.sock');
11
+ const EVENTS_JSONL = path.join(os.homedir(), '.claude-forge', 'events.jsonl');
12
+ const REFRESH_MS = 2000;
13
+ // ANSI 颜色
14
+ const C = {
15
+ reset: '\x1b[0m',
16
+ bold: '\x1b[1m',
17
+ dim: '\x1b[2m',
18
+ green: '\x1b[32m',
19
+ yellow: '\x1b[33m',
20
+ red: '\x1b[31m',
21
+ cyan: '\x1b[36m',
22
+ blue: '\x1b[34m',
23
+ magenta: '\x1b[35m',
24
+ white: '\x1b[37m',
25
+ bgBlue: '\x1b[44m',
26
+ bgGreen: '\x1b[42m',
27
+ bgRed: '\x1b[41m',
28
+ };
29
+ function color(c, text) { return `${c}${text}${C.reset}`; }
30
+ function bold(text) { return color(C.bold, text); }
31
+ function dim(text) { return color(C.dim, text); }
32
+ function green(text) { return color(C.green, text); }
33
+ function yellow(text) { return color(C.yellow, text); }
34
+ function red(text) { return color(C.red, text); }
35
+ function cyan(text) { return color(C.cyan, text); }
36
+ function blue(text) { return color(C.blue, text); }
37
+ function magenta(text) { return color(C.magenta, text); }
38
+ function clearScreen() { process.stdout.write('\x1b[2J\x1b[H'); }
39
+ function moveTo(row, col) { process.stdout.write(`\x1b[${row};${col}H`); }
40
+ function hideCursor() { process.stdout.write('\x1b[?25l'); }
41
+ function showCursor() { process.stdout.write('\x1b[?25h'); }
42
+ function emptyState() {
43
+ return {
44
+ daemonRunning: false,
45
+ daemonPid: null,
46
+ uptime: '—',
47
+ events: [],
48
+ pipelines: [],
49
+ skills: [],
50
+ distillStats: { total: 0, distilled: 0, lastAt: '—' },
51
+ profile: { complexity: '—', intervention: '—', sessions: 0 },
52
+ logs: [],
53
+ eventLogs: [],
54
+ projectFilter: null,
55
+ allProjects: [],
56
+ lastRefresh: '—',
57
+ error: null,
58
+ commandMode: false,
59
+ commandInput: '',
60
+ outputMode: false,
61
+ outputLines: [],
62
+ outputTitle: '',
63
+ };
64
+ }
65
+ function queryDaemon(command) {
66
+ return new Promise((resolve, reject) => {
67
+ const socket = net.createConnection(SOCKET_PATH);
68
+ let buf = '';
69
+ const timer = setTimeout(() => { socket.destroy(); reject(new Error('超时')); }, 3000);
70
+ socket.on('connect', () => {
71
+ socket.write(JSON.stringify({ type: 'tui_query', command }) + '\n');
72
+ });
73
+ socket.on('data', (d) => { buf += d.toString(); });
74
+ socket.on('end', () => {
75
+ clearTimeout(timer);
76
+ try {
77
+ resolve(JSON.parse(buf));
78
+ }
79
+ catch {
80
+ resolve(null);
81
+ }
82
+ });
83
+ socket.on('error', (e) => { clearTimeout(timer); reject(e); });
84
+ });
85
+ }
86
+ function executeCommand(input) {
87
+ return new Promise((resolve) => {
88
+ const args = input.trim().split(/\s+/).filter(Boolean);
89
+ if (args.length === 0) {
90
+ resolve([]);
91
+ return;
92
+ }
93
+ const lines = [];
94
+ const proc = spawn('claude-forge', args, { stdio: ['ignore', 'pipe', 'pipe'] });
95
+ const collect = (d) => {
96
+ d.toString().split('\n').forEach(l => { if (l)
97
+ lines.push(l); });
98
+ };
99
+ proc.stdout.on('data', collect);
100
+ proc.stderr.on('data', collect);
101
+ const timeout = setTimeout(() => {
102
+ proc.kill();
103
+ lines.push('(执行超时)');
104
+ resolve(lines);
105
+ }, 10000);
106
+ proc.on('close', () => { clearTimeout(timeout); resolve(lines); });
107
+ proc.on('error', (e) => { clearTimeout(timeout); lines.push(`错误:${e.message}`); resolve(lines); });
108
+ });
109
+ }
110
+ async function fetchState() {
111
+ const state = emptyState();
112
+ state.lastRefresh = new Date().toLocaleTimeString();
113
+ try {
114
+ // 检查守护进程是否运行(通过 socket 连通性)
115
+ const data = await queryDaemon('status');
116
+ if (data) {
117
+ state.daemonRunning = true;
118
+ state.daemonPid = data.pid ?? null;
119
+ state.uptime = data.uptime ?? '—';
120
+ state.events = data.recentEvents ?? [];
121
+ state.pipelines = data.pipelines ?? [];
122
+ state.skills = data.skills ?? [];
123
+ state.distillStats = data.distillStats ?? state.distillStats;
124
+ state.profile = data.profile ?? state.profile;
125
+ state.logs = data.logs ?? [];
126
+ }
127
+ }
128
+ catch {
129
+ // 守护进程未运行或不支持 tui_query,尝试读取日志文件
130
+ state.daemonRunning = false;
131
+ try {
132
+ const fs = await import('fs');
133
+ const logPath = path.join(os.homedir(), '.claude-forge', 'daemon.log');
134
+ if (fs.existsSync(logPath)) {
135
+ const lines = fs.readFileSync(logPath, 'utf-8').split('\n').filter(Boolean);
136
+ state.logs = lines.slice(-20).reverse();
137
+ // 从日志推断守护进程状态
138
+ const lastLine = lines[lines.length - 1] ?? '';
139
+ if (lastLine.includes('守护进程已启动')) {
140
+ state.daemonRunning = true;
141
+ const pidMatch = lastLine.match(/PID[::]\s*(\d+)/);
142
+ if (pidMatch)
143
+ state.daemonPid = parseInt(pidMatch[1]);
144
+ }
145
+ }
146
+ }
147
+ catch { /* ignore */ }
148
+ }
149
+ // 读取结构化事件日志(events.jsonl),与守护进程是否运行无关
150
+ try {
151
+ const fs = await import('fs');
152
+ if (fs.existsSync(EVENTS_JSONL)) {
153
+ const raw = fs.readFileSync(EVENTS_JSONL, 'utf-8');
154
+ const entries = raw
155
+ .split('\n')
156
+ .filter(Boolean)
157
+ .map(line => { try {
158
+ return JSON.parse(line);
159
+ }
160
+ catch {
161
+ return null;
162
+ } })
163
+ .filter((e) => e !== null);
164
+ state.eventLogs = entries.slice(-200); // 保留最近 200 条
165
+ // 收集所有项目名(取路径最后一段)
166
+ const projects = [...new Set(entries.map(e => e.project))];
167
+ state.allProjects = projects;
168
+ }
169
+ }
170
+ catch { /* ignore */ }
171
+ return state;
172
+ }
173
+ function termWidth() { return process.stdout.columns || 100; }
174
+ function termHeight() { return process.stdout.rows || 30; }
175
+ function hline(char = '─') { return char.repeat(termWidth()); }
176
+ function box(title, content, width) {
177
+ const w = width ?? termWidth();
178
+ const inner = w - 2;
179
+ const titleStr = ` ${title} `;
180
+ const topLine = '┌' + titleStr + '─'.repeat(Math.max(0, inner - titleStr.length)) + '┐';
181
+ const botLine = '└' + '─'.repeat(inner) + '┘';
182
+ const lines = [topLine];
183
+ for (const line of content) {
184
+ const stripped = line.replace(/\x1b\[[0-9;]*m/g, '');
185
+ const pad = Math.max(0, inner - stripped.length - 2);
186
+ lines.push('│ ' + line + ' '.repeat(pad) + ' │');
187
+ }
188
+ lines.push(botLine);
189
+ return lines;
190
+ }
191
+ function progressBar(pct, width = 20) {
192
+ const filled = Math.round((pct / 100) * width);
193
+ const bar = '█'.repeat(filled) + '░'.repeat(width - filled);
194
+ const color = pct >= 80 ? C.green : pct >= 40 ? C.yellow : C.red;
195
+ return `${color}${bar}${C.reset} ${pct}%`;
196
+ }
197
+ function renderHeader(state) {
198
+ const w = termWidth();
199
+ const status = state.daemonRunning
200
+ ? green('● 运行中') + (state.daemonPid ? dim(` PID:${state.daemonPid}`) : '')
201
+ : red('○ 未运行');
202
+ const title = bold(cyan(' ⚡ Claude Forge '));
203
+ const refresh = dim(`刷新: ${state.lastRefresh}`);
204
+ const uptime = dim(`运行时长: ${state.uptime}`);
205
+ const right = `${uptime} ${refresh}`;
206
+ const mid = ' '.repeat(Math.max(0, w - title.replace(/\x1b\[[0-9;]*m/g, '').length - status.replace(/\x1b\[[0-9;]*m/g, '').length - right.replace(/\x1b\[[0-9;]*m/g, '').length - 4));
207
+ return [
208
+ hline('═'),
209
+ ` ${title} ${status}${mid}${right} `,
210
+ hline('─'),
211
+ ];
212
+ }
213
+ function renderPipelines(state) {
214
+ const lines = [];
215
+ if (state.pipelines.length === 0) {
216
+ lines.push(dim(' 暂无活跃 Pipeline'));
217
+ }
218
+ else {
219
+ for (const p of state.pipelines.slice(0, 3)) {
220
+ const req = p.requirement.length > 30 ? p.requirement.slice(0, 30) + '…' : p.requirement;
221
+ lines.push(` ${cyan(req)}`);
222
+ lines.push(` 阶段: ${yellow(p.phase)} ${progressBar(p.progress, 16)}`);
223
+ }
224
+ }
225
+ return box(bold('📋 Pipeline'), lines, Math.floor(termWidth() / 2));
226
+ }
227
+ function renderSkills(state) {
228
+ const lines = [];
229
+ if (state.skills.length === 0) {
230
+ lines.push(dim(' 暂无技能数据'));
231
+ }
232
+ else {
233
+ for (const s of state.skills.slice(0, 5)) {
234
+ const score = s.score >= 80 ? green(`${s.score}`) : s.score >= 50 ? yellow(`${s.score}`) : red(`${s.score}`);
235
+ lines.push(` ${cyan(s.name)} ${dim(`v${s.version}`)} 评分: ${score}`);
236
+ }
237
+ }
238
+ return box(bold('🔧 技能'), lines, Math.floor(termWidth() / 2));
239
+ }
240
+ function renderStats(state) {
241
+ const { total, distilled, lastAt } = state.distillStats;
242
+ const pct = total > 0 ? Math.round((distilled / total) * 100) : 0;
243
+ const lines = [
244
+ ` 事件总数: ${cyan(String(total))} 已蒸馏: ${green(String(distilled))} ${progressBar(pct, 12)}`,
245
+ ` 上次蒸馏: ${dim(lastAt)}`,
246
+ ` 画像: 复杂度=${yellow(state.profile.complexity)} 干预=${magenta(state.profile.intervention)} 会话=${cyan(String(state.profile.sessions))}`,
247
+ ];
248
+ return box(bold('📊 统计'), lines);
249
+ }
250
+ function renderEvents(state) {
251
+ const lines = [];
252
+ if (state.events.length === 0) {
253
+ lines.push(dim(' 暂无事件'));
254
+ }
255
+ else {
256
+ for (const e of state.events.slice(0, 5)) {
257
+ const proj = e.project.split('/').slice(-1)[0] ?? e.project;
258
+ lines.push(` ${dim(e.time)} ${yellow(e.type.padEnd(12))} ${cyan(e.tool.padEnd(10))} ${dim(proj)}`);
259
+ }
260
+ }
261
+ return box(bold('🔔 最近事件'), lines);
262
+ }
263
+ function renderLogs(state) {
264
+ const maxLines = Math.max(3, termHeight() - 28);
265
+ // 优先使用结构化事件日志
266
+ if (state.eventLogs.length > 0) {
267
+ const filtered = state.projectFilter
268
+ ? state.eventLogs.filter(e => e.project === state.projectFilter)
269
+ : state.eventLogs;
270
+ const recent = filtered.slice(-maxLines).reverse();
271
+ const filterLabel = state.projectFilter
272
+ ? cyan(state.projectFilter.split('/').slice(-1)[0] ?? state.projectFilter)
273
+ : dim('全部项目');
274
+ const title = bold('📜 事件日志') + ' ' + dim('[Tab=切换项目]') + ' 过滤: ' + filterLabel;
275
+ const lines = recent.length > 0
276
+ ? recent.map(e => {
277
+ const proj = e.project.split('/').slice(-1)[0] ?? e.project;
278
+ const time = e.ts.slice(11, 19); // HH:MM:SS
279
+ const msg = e.msg.length > termWidth() - 40 ? e.msg.slice(0, termWidth() - 43) + '…' : e.msg;
280
+ const line = `${dim(time)} ${magenta(proj.padEnd(16))} ${yellow(e.event.padEnd(14))} ${dim(msg)}`;
281
+ if (e.level === 'error')
282
+ return ` ${red(line)}`;
283
+ if (e.level === 'warn')
284
+ return ` ${yellow(line)}`;
285
+ return ` ${line}`;
286
+ })
287
+ : [dim(' 暂无事件日志')];
288
+ return box(title, lines);
289
+ }
290
+ // 回退:显示守护进程纯文本日志
291
+ const logs = state.logs.slice(0, maxLines);
292
+ const lines = logs.length > 0
293
+ ? logs.map(l => {
294
+ const clean = l.replace(/^\[.*?\]\s*\[.*?\]\s*/, '');
295
+ const short = clean.length > termWidth() - 6 ? clean.slice(0, termWidth() - 9) + '…' : clean;
296
+ if (l.includes('[ERROR]') || l.includes('[错误]'))
297
+ return ` ${red(short)}`;
298
+ if (l.includes('[WARN]') || l.includes('[警告]'))
299
+ return ` ${yellow(short)}`;
300
+ return ` ${dim(short)}`;
301
+ })
302
+ : [dim(' 暂无日志')];
303
+ return box(bold('📜 日志'), lines);
304
+ }
305
+ function renderHelp() {
306
+ return dim(' q 退出 r 立即刷新 Tab 切换项目过滤 ↑↓ 滚动日志');
307
+ }
308
+ function renderCommandBar(state) {
309
+ if (state.commandMode) {
310
+ return cyan(':') + ' ' + state.commandInput + cyan('█');
311
+ }
312
+ return dim(' q 退出 r 刷新 Tab 切换项目 ') + cyan(':') + dim(' 输入命令');
313
+ }
314
+ function renderOutputScreen(state) {
315
+ clearScreen();
316
+ const w = termWidth();
317
+ const sep = '═'.repeat(w);
318
+ const lines = [];
319
+ lines.push(sep);
320
+ lines.push(` ${bold(cyan('$ claude-forge ' + state.outputTitle))}`);
321
+ lines.push('─'.repeat(w));
322
+ for (const l of state.outputLines) {
323
+ lines.push(' ' + l);
324
+ }
325
+ if (state.outputLines.length === 0) {
326
+ lines.push(dim(' (无输出)'));
327
+ }
328
+ lines.push('─'.repeat(w));
329
+ lines.push(dim(' 按任意键返回'));
330
+ lines.push(sep);
331
+ process.stdout.write(lines.join('\n') + '\n');
332
+ }
333
+ function render(state) {
334
+ if (state.outputMode) {
335
+ renderOutputScreen(state);
336
+ return;
337
+ }
338
+ clearScreen();
339
+ const out = [];
340
+ out.push(...renderHeader(state));
341
+ // 两列布局:Pipeline | 技能
342
+ const half = Math.floor(termWidth() / 2);
343
+ const pipeLines = renderPipelines(state);
344
+ const skillLines = renderSkills(state);
345
+ const maxRows = Math.max(pipeLines.length, skillLines.length);
346
+ for (let i = 0; i < maxRows; i++) {
347
+ const left = (pipeLines[i] ?? '').padEnd(half);
348
+ const right = skillLines[i] ?? '';
349
+ out.push(left + right);
350
+ }
351
+ out.push(...renderStats(state));
352
+ out.push(...renderEvents(state));
353
+ out.push(...renderLogs(state));
354
+ out.push(hline('─'));
355
+ out.push(renderCommandBar(state));
356
+ process.stdout.write(out.join('\n') + '\n');
357
+ }
358
+ export async function startTui() {
359
+ hideCursor();
360
+ readline.emitKeypressEvents(process.stdin);
361
+ if (process.stdin.isTTY)
362
+ process.stdin.setRawMode(true);
363
+ let state = emptyState();
364
+ let running = true;
365
+ let projectFilter = null;
366
+ const refresh = async () => {
367
+ const newState = await fetchState();
368
+ newState.projectFilter = projectFilter;
369
+ state = newState;
370
+ render(state);
371
+ };
372
+ await refresh();
373
+ const timer = setInterval(refresh, REFRESH_MS);
374
+ process.stdin.on('keypress', async (str, key) => {
375
+ if (!key)
376
+ return;
377
+ // ── 全屏输出模式:任意键返回 ──────────────────────────────────────────
378
+ if (state.outputMode) {
379
+ state.outputMode = false;
380
+ showCursor();
381
+ hideCursor();
382
+ await refresh();
383
+ return;
384
+ }
385
+ // ── 命令输入模式 ──────────────────────────────────────────────────────
386
+ if (state.commandMode) {
387
+ if (key.name === 'escape') {
388
+ state.commandMode = false;
389
+ state.commandInput = '';
390
+ hideCursor();
391
+ render(state);
392
+ return;
393
+ }
394
+ if (key.name === 'backspace') {
395
+ state.commandInput = state.commandInput.slice(0, -1);
396
+ render(state);
397
+ return;
398
+ }
399
+ if (key.name === 'return') {
400
+ const input = state.commandInput.trim();
401
+ state.commandMode = false;
402
+ hideCursor();
403
+ if (input) {
404
+ state.outputTitle = input;
405
+ state.outputLines = ['执行中...'];
406
+ state.outputMode = true;
407
+ render(state);
408
+ const lines = await executeCommand(input);
409
+ state.outputLines = lines;
410
+ render(state);
411
+ }
412
+ else {
413
+ state.commandInput = '';
414
+ render(state);
415
+ }
416
+ return;
417
+ }
418
+ // 可打印字符
419
+ if (str && str.length === 1 && str.charCodeAt(0) >= 32) {
420
+ state.commandInput += str;
421
+ render(state);
422
+ }
423
+ return;
424
+ }
425
+ // ── 普通模式 ──────────────────────────────────────────────────────────
426
+ if (key.name === 'q' || (key.ctrl && key.name === 'c')) {
427
+ running = false;
428
+ clearInterval(timer);
429
+ showCursor();
430
+ clearScreen();
431
+ process.stdout.write('已退出 Claude Forge TUI\n');
432
+ process.exit(0);
433
+ }
434
+ if (key.name === 'r') {
435
+ await refresh();
436
+ }
437
+ if (str === ':') {
438
+ state.commandMode = true;
439
+ state.commandInput = '';
440
+ showCursor();
441
+ render(state);
442
+ return;
443
+ }
444
+ if (key.name === 'tab') {
445
+ // 切换项目过滤
446
+ const projects = state.allProjects;
447
+ if (projects.length === 0)
448
+ return;
449
+ if (projectFilter === null) {
450
+ projectFilter = projects[0] ?? null;
451
+ }
452
+ else {
453
+ const idx = projects.indexOf(projectFilter);
454
+ if (idx === -1 || idx === projects.length - 1) {
455
+ projectFilter = null; // 回到"全部"
456
+ }
457
+ else {
458
+ projectFilter = projects[idx + 1] ?? null;
459
+ }
460
+ }
461
+ state.projectFilter = projectFilter;
462
+ render(state);
463
+ }
464
+ });
465
+ process.on('SIGINT', () => {
466
+ clearInterval(timer);
467
+ showCursor();
468
+ clearScreen();
469
+ process.exit(0);
470
+ });
471
+ process.on('SIGTERM', () => {
472
+ clearInterval(timer);
473
+ showCursor();
474
+ process.exit(0);
475
+ });
476
+ // 窗口大小变化时重绘
477
+ process.stdout.on('resize', () => { render(state); });
478
+ // 保持进程活跃
479
+ await new Promise((resolve) => {
480
+ const check = setInterval(() => { if (!running) {
481
+ clearInterval(check);
482
+ resolve();
483
+ } }, 500);
484
+ });
485
+ }
486
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tui/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;AAC5E,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;AAC9E,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB,UAAU;AACV,MAAM,CAAC,GAAG;IACR,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,GAAG,EAAE,UAAU;IACf,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,UAAU;IACnB,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,UAAU;IACnB,KAAK,EAAE,UAAU;CAClB,CAAC;AAEF,SAAS,KAAK,CAAC,CAAS,EAAE,IAAY,IAAI,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC3E,SAAS,IAAI,CAAC,IAAY,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3D,SAAS,GAAG,CAAC,IAAY,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACzD,SAAS,KAAK,CAAC,IAAY,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7D,SAAS,MAAM,CAAC,IAAY,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/D,SAAS,GAAG,CAAC,IAAY,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACzD,SAAS,IAAI,CAAC,IAAY,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3D,SAAS,IAAI,CAAC,IAAY,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3D,SAAS,OAAO,CAAC,IAAY,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAEjE,SAAS,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AACjE,SAAS,MAAM,CAAC,GAAW,EAAE,GAAW,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1F,SAAS,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC5D,SAAS,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAkC5D,SAAS,UAAU;IACjB,OAAO;QACL,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,EAAE;QACV,SAAS,EAAE,EAAE;QACb,MAAM,EAAE,EAAE;QACV,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE;QACrD,OAAO,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE;QAC5D,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,EAAE;QACb,aAAa,EAAE,IAAI;QACnB,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,GAAG;QAChB,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,EAAE;QAChB,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,EAAE;KAChB,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,OAAe;IAClC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACjD,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAErF,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACxB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACpB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAE/C,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAEhF,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,EAAE;YAC5B,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEhC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrG,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,UAAU;IACvB,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;IAC3B,KAAK,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,kBAAkB,EAAE,CAAC;IAEpD,IAAI,CAAC;QACH,4BAA4B;QAC5B,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAmC,CAAC;QAC3E,IAAI,IAAI,EAAE,CAAC;YACT,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;YAC3B,KAAK,CAAC,SAAS,GAAI,IAAI,CAAC,GAAc,IAAI,IAAI,CAAC;YAC/C,KAAK,CAAC,MAAM,GAAI,IAAI,CAAC,MAAiB,IAAI,GAAG,CAAC;YAC9C,KAAK,CAAC,MAAM,GAAI,IAAI,CAAC,YAAmC,IAAI,EAAE,CAAC;YAC/D,KAAK,CAAC,SAAS,GAAI,IAAI,CAAC,SAAmC,IAAI,EAAE,CAAC;YAClE,KAAK,CAAC,MAAM,GAAI,IAAI,CAAC,MAA6B,IAAI,EAAE,CAAC;YACzD,KAAK,CAAC,YAAY,GAAI,IAAI,CAAC,YAAyC,IAAI,KAAK,CAAC,YAAY,CAAC;YAC3F,KAAK,CAAC,OAAO,GAAI,IAAI,CAAC,OAA+B,IAAI,KAAK,CAAC,OAAO,CAAC;YACvE,KAAK,CAAC,IAAI,GAAI,IAAI,CAAC,IAAiB,IAAI,EAAE,CAAC;QAC7C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;QACjC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;YACvE,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC5E,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;gBACxC,cAAc;gBACd,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC/C,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACjC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;oBAC3B,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;oBACnD,IAAI,QAAQ;wBAAE,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAC1B,CAAC;IAED,sCAAsC;IACtC,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACnD,MAAM,OAAO,GAAoB,GAAG;iBACjC,KAAK,CAAC,IAAI,CAAC;iBACX,MAAM,CAAC,OAAO,CAAC;iBACf,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;gBAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAkB,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO,IAAI,CAAC;YAAC,CAAC,CAAC,CAAC,CAAC;iBACzF,MAAM,CAAC,CAAC,CAAC,EAAsB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YACjD,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa;YACpD,mBAAmB;YACnB,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC3D,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC;QAC/B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAExB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,SAAS,KAAK,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC;AAC9D,SAAS,UAAU,KAAK,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;AAE3D,SAAS,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;AAE/D,SAAS,GAAG,CAAC,KAAa,EAAE,OAAiB,EAAE,KAAc;IAC3D,MAAM,CAAC,GAAG,KAAK,IAAI,SAAS,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,MAAM,QAAQ,GAAG,IAAI,KAAK,GAAG,CAAC;IAC9B,MAAM,OAAO,GAAG,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC;IACxF,MAAM,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;IAC9C,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;IACxB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACnD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,GAAW,EAAE,KAAK,GAAG,EAAE;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACjE,OAAO,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,IAAI,GAAG,GAAG,CAAC;AAC5C,CAAC;AAED,SAAS,YAAY,CAAC,KAAe;IACnC,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;IACtB,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa;QAChC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,GAAG,MAAM,KAAK,OAAO,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACtL,OAAO;QACL,KAAK,CAAC,GAAG,CAAC;QACV,IAAI,KAAK,KAAK,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG;QACrC,KAAK,CAAC,GAAG,CAAC;KACX,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAe;IACtC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC5C,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;YACzF,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,YAAY,CAAC,KAAe;IACnC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAC7G,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,WAAW,CAAC,KAAe;IAClC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC;IACxD,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG;QACZ,WAAW,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;QAC3F,WAAW,GAAG,CAAC,MAAM,CAAC,EAAE;QACxB,aAAa,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE;KACvI,CAAC;IACF,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,YAAY,CAAC,KAAe;IACnC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YAC5D,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzG,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,UAAU,CAAC,KAAe;IACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;IAEhD,cAAc;IACd,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa;YAClC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,aAAa,CAAC;YAChE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;QACpB,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;QACnD,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa;YACrC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC;YAC1E,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,OAAO,GAAG,WAAW,CAAC;QAChF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;YAC7B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACb,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;gBAC5D,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW;gBAC5C,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC7F,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrG,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO;oBAAE,OAAO,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;oBAAE,OAAO,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QACtB,OAAO,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,iBAAiB;IACjB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;QAC3B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACX,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YAC7F,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,OAAO,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1E,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,OAAO,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5E,OAAO,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpB,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,GAAG,CAAC,qCAAqC,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAe;IACvC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,GAAG,CAAC,0BAA0B,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAe;IACzC,WAAW,EAAE,CAAC;IACd,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;IACtB,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;IACpE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,MAAM,CAAC,KAAe;IAC7B,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,WAAW,EAAE,CAAC;IACd,MAAM,GAAG,GAAa,EAAE,CAAC;IAEzB,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAEjC,qBAAqB;IACrB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAClC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAChC,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACjC,GAAG,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IAElC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,UAAU,EAAE,CAAC;IACb,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAExD,IAAI,KAAK,GAAG,UAAU,EAAE,CAAC;IACzB,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,aAAa,GAAkB,IAAI,CAAC;IAExC,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,MAAM,QAAQ,GAAG,MAAM,UAAU,EAAE,CAAC;QACpC,QAAQ,CAAC,aAAa,GAAG,aAAa,CAAC;QACvC,KAAK,GAAG,QAAQ,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,OAAO,EAAE,CAAC;IAChB,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAE/C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9C,IAAI,CAAC,GAAG;YAAE,OAAO;QAEjB,6DAA6D;QAC7D,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;YACzB,UAAU,EAAE,CAAC;YACb,UAAU,EAAE,CAAC;YACb,MAAM,OAAO,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,mEAAmE;QACnE,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1B,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;gBAC1B,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC;gBACxB,UAAU,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;gBACd,OAAO;YACT,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC7B,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACrD,MAAM,CAAC,KAAK,CAAC,CAAC;gBACd,OAAO;YACT,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;gBACxC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;gBAC1B,UAAU,EAAE,CAAC;gBACb,IAAI,KAAK,EAAE,CAAC;oBACV,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;oBAC1B,KAAK,CAAC,WAAW,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC/B,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;oBACxB,MAAM,CAAC,KAAK,CAAC,CAAC;oBACd,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;oBAC1C,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;oBAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC;oBACxB,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC;gBACD,OAAO;YACT,CAAC;YACD,QAAQ;YACR,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;gBACvD,KAAK,CAAC,YAAY,IAAI,GAAG,CAAC;gBAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;YACD,OAAO;QACT,CAAC;QAED,qEAAqE;QACrE,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACvD,OAAO,GAAG,KAAK,CAAC;YAChB,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,UAAU,EAAE,CAAC;YACb,WAAW,EAAE,CAAC;YACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACrB,MAAM,OAAO,EAAE,CAAC;QAClB,CAAC;QACD,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;YAChB,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;YACzB,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC;YACxB,UAAU,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,CAAC;YACd,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACvB,SAAS;YACT,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC;YACnC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAClC,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;gBAC3B,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBAC5C,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9C,aAAa,GAAG,IAAI,CAAC,CAAC,SAAS;gBACjC,CAAC;qBAAM,CAAC;oBACN,aAAa,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;gBAC5C,CAAC;YACH,CAAC;YACD,KAAK,CAAC,aAAa,GAAG,aAAa,CAAC;YACpC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,UAAU,EAAE,CAAC;QACb,WAAW,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACzB,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,YAAY;IACZ,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtD,SAAS;IACT,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAAC,OAAO,EAAE,CAAC;QAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,24 @@
1
+ export type HookType = 'PreToolUse' | 'PostToolUse' | 'Notification' | 'Stop' | 'UserPromptSubmit';
2
+ export interface ForgeEvent {
3
+ event_id: string;
4
+ session_id: string;
5
+ project_path: string;
6
+ timestamp: string;
7
+ hook_type: HookType;
8
+ tool_name?: string;
9
+ tool_input?: Record<string, unknown>;
10
+ tool_output?: Record<string, unknown>;
11
+ user_prompt?: string;
12
+ ai_response?: string;
13
+ distilled: boolean;
14
+ }
15
+ export interface RawHookEvent {
16
+ hook_type: HookType;
17
+ timestamp: string;
18
+ session_id: string;
19
+ project_path: string;
20
+ tool_name?: string;
21
+ tool_input?: Record<string, unknown>;
22
+ tool_output?: Record<string, unknown>;
23
+ }
24
+ //# sourceMappingURL=event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/types/event.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,GAAG,MAAM,GAAG,kBAAkB,CAAC;AAEnG,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,QAAQ,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.js","sourceRoot":"","sources":["../../src/types/event.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export type { ForgeEvent, RawHookEvent, HookType } from './event.js';
2
+ export type { Session, SessionStatus } from './session.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACrE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ export type SessionStatus = 'active' | 'completed' | 'interrupted' | 'resumed' | 'abandoned';
2
+ export interface Session {
3
+ session_id: string;
4
+ project_path: string;
5
+ status: SessionStatus;
6
+ start_time: string;
7
+ end_time?: string;
8
+ last_event_time?: string;
9
+ event_count: number;
10
+ }
11
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/types/session.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GACrB,QAAQ,GACR,WAAW,GACX,aAAa,GACb,SAAS,GACT,WAAW,CAAC;AAEhB,MAAM,WAAW,OAAO;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/types/session.ts"],"names":[],"mappings":""}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * 查询代理支持的模型列表,自动选择最佳 claude-sonnet 模型
3
+ * 优先级:sonnet > opus > haiku,版本号越新越优先
4
+ */
5
+ export declare function detectBestModel(apiKey?: string, baseUrl?: string): Promise<string | null>;
6
+ export interface ApiCallStats {
7
+ totalCalls: number;
8
+ totalErrors: number;
9
+ totalLatencyMs: number;
10
+ totalRetries: number;
11
+ circuitBreakerTrips: number;
12
+ /** 按调用方分组的统计,key 为 label 参数(默认 'unknown') */
13
+ byLabel: Record<string, {
14
+ calls: number;
15
+ errors: number;
16
+ latencyMs: number;
17
+ retries: number;
18
+ }>;
19
+ }
20
+ export declare class ApiTimeoutError extends Error {
21
+ constructor(timeoutMs: number);
22
+ }
23
+ export declare class CircuitOpenError extends Error {
24
+ constructor();
25
+ }
26
+ export declare class ClaudeAPI {
27
+ private client;
28
+ private model;
29
+ private circuitBreaker;
30
+ private stats;
31
+ constructor(apiKey?: string, model?: string, baseUrl?: string);
32
+ /**
33
+ * @param label 调用方标识(用于统计分组),如 'distill' / 'intent' / 'resume'
34
+ * @param retries 最大重试次数(默认 2),指数退避:1s、2s
35
+ * @param timeoutMs 单次调用超时(默认 60s)
36
+ */
37
+ complete(prompt: string, label?: string, retries?: number, timeoutMs?: number): Promise<string>;
38
+ /** 返回当前累计调用统计(只读快照) */
39
+ getStats(): Readonly<ApiCallStats>;
40
+ /** 格式化统计摘要(供日志输出) */
41
+ formatStats(): string;
42
+ }
43
+ /**
44
+ * 工厂函数:用 distill 配置创建共享 API 实例。
45
+ * 解决 daemon/index.ts 原来用相同参数创建多次的问题。
46
+ * 返回 null 而不是抛出,让调用方根据业务决定是否降级。
47
+ */
48
+ export declare function createSharedApi(apiKey?: string, model?: string, baseUrl?: string): ClaudeAPI | null;
49
+ //# sourceMappingURL=claude-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-api.d.ts","sourceRoot":"","sources":["../../src/utils/claude-api.ts"],"names":[],"mappings":"AA2BA;;;GAGG;AACH,wBAAsB,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA4B/F;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChG;AAED,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,SAAS,EAAE,MAAM;CAI9B;AAED,qBAAa,gBAAiB,SAAQ,KAAK;;CAK1C;AA+CD,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,KAAK,CAOX;gBAEU,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAA4B,EAAE,OAAO,CAAC,EAAE,MAAM;IAWlF;;;;OAIG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAY,EAAE,OAAO,SAAI,EAAE,SAAS,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IA0EnG,uBAAuB;IACvB,QAAQ,IAAI,QAAQ,CAAC,YAAY,CAAC;IASlC,qBAAqB;IACrB,WAAW,IAAI,MAAM;CAatB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,GACf,SAAS,GAAG,IAAI,CAMlB"}