llm-content-creator 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (438) hide show
  1. package/README.md +309 -0
  2. package/dist/application/workflow/SyncExecutor.d.ts +75 -0
  3. package/dist/application/workflow/SyncExecutor.d.ts.map +1 -0
  4. package/dist/application/workflow/SyncExecutor.js +370 -0
  5. package/dist/application/workflow/SyncExecutor.js.map +1 -0
  6. package/dist/application/workflow/types.d.ts +46 -0
  7. package/dist/application/workflow/types.d.ts.map +1 -0
  8. package/dist/application/workflow/types.js +7 -0
  9. package/dist/application/workflow/types.js.map +1 -0
  10. package/dist/config/index.d.ts +173 -0
  11. package/dist/config/index.d.ts.map +1 -0
  12. package/dist/config/index.js +288 -0
  13. package/dist/config/index.js.map +1 -0
  14. package/dist/domain/entities/QualityCheck.d.ts +181 -0
  15. package/dist/domain/entities/QualityCheck.d.ts.map +1 -0
  16. package/dist/domain/entities/QualityCheck.js +39 -0
  17. package/dist/domain/entities/QualityCheck.js.map +1 -0
  18. package/dist/domain/entities/Result.d.ts +103 -0
  19. package/dist/domain/entities/Result.d.ts.map +1 -0
  20. package/dist/domain/entities/Result.js +15 -0
  21. package/dist/domain/entities/Result.js.map +1 -0
  22. package/dist/domain/entities/Task.d.ts +130 -0
  23. package/dist/domain/entities/Task.d.ts.map +1 -0
  24. package/dist/domain/entities/Task.js +64 -0
  25. package/dist/domain/entities/Task.js.map +1 -0
  26. package/dist/domain/entities/TaskStep.d.ts +160 -0
  27. package/dist/domain/entities/TaskStep.d.ts.map +1 -0
  28. package/dist/domain/entities/TaskStep.js +30 -0
  29. package/dist/domain/entities/TaskStep.js.map +1 -0
  30. package/dist/domain/entities/TokenUsage.d.ts +70 -0
  31. package/dist/domain/entities/TokenUsage.d.ts.map +1 -0
  32. package/dist/domain/entities/TokenUsage.js +42 -0
  33. package/dist/domain/entities/TokenUsage.js.map +1 -0
  34. package/dist/domain/entities/index.d.ts +11 -0
  35. package/dist/domain/entities/index.d.ts.map +1 -0
  36. package/dist/domain/entities/index.js +16 -0
  37. package/dist/domain/entities/index.js.map +1 -0
  38. package/dist/domain/repositories/QualityCheckRepository.d.ts +49 -0
  39. package/dist/domain/repositories/QualityCheckRepository.d.ts.map +1 -0
  40. package/dist/domain/repositories/QualityCheckRepository.js +5 -0
  41. package/dist/domain/repositories/QualityCheckRepository.js.map +1 -0
  42. package/dist/domain/repositories/ResultRepository.d.ts +43 -0
  43. package/dist/domain/repositories/ResultRepository.d.ts.map +1 -0
  44. package/dist/domain/repositories/ResultRepository.js +5 -0
  45. package/dist/domain/repositories/ResultRepository.js.map +1 -0
  46. package/dist/domain/repositories/TaskRepository.d.ts +240 -0
  47. package/dist/domain/repositories/TaskRepository.d.ts.map +1 -0
  48. package/dist/domain/repositories/TaskRepository.js +7 -0
  49. package/dist/domain/repositories/TaskRepository.js.map +1 -0
  50. package/dist/domain/workflow/CheckpointManager.d.ts +94 -0
  51. package/dist/domain/workflow/CheckpointManager.d.ts.map +1 -0
  52. package/dist/domain/workflow/CheckpointManager.js +224 -0
  53. package/dist/domain/workflow/CheckpointManager.js.map +1 -0
  54. package/dist/domain/workflow/ContentCreatorGraph.d.ts +17 -0
  55. package/dist/domain/workflow/ContentCreatorGraph.d.ts.map +1 -0
  56. package/dist/domain/workflow/ContentCreatorGraph.js +381 -0
  57. package/dist/domain/workflow/ContentCreatorGraph.js.map +1 -0
  58. package/dist/domain/workflow/State.d.ts +172 -0
  59. package/dist/domain/workflow/State.d.ts.map +1 -0
  60. package/dist/domain/workflow/State.js +184 -0
  61. package/dist/domain/workflow/State.js.map +1 -0
  62. package/dist/domain/workflow/index.d.ts +11 -0
  63. package/dist/domain/workflow/index.d.ts.map +1 -0
  64. package/dist/domain/workflow/index.js +15 -0
  65. package/dist/domain/workflow/index.js.map +1 -0
  66. package/dist/domain/workflow/nodes/BaseNode.d.ts +134 -0
  67. package/dist/domain/workflow/nodes/BaseNode.d.ts.map +1 -0
  68. package/dist/domain/workflow/nodes/BaseNode.js +253 -0
  69. package/dist/domain/workflow/nodes/BaseNode.js.map +1 -0
  70. package/dist/domain/workflow/nodes/CheckImageNode.d.ts +43 -0
  71. package/dist/domain/workflow/nodes/CheckImageNode.d.ts.map +1 -0
  72. package/dist/domain/workflow/nodes/CheckImageNode.js +254 -0
  73. package/dist/domain/workflow/nodes/CheckImageNode.js.map +1 -0
  74. package/dist/domain/workflow/nodes/CheckTextNode.d.ts +66 -0
  75. package/dist/domain/workflow/nodes/CheckTextNode.d.ts.map +1 -0
  76. package/dist/domain/workflow/nodes/CheckTextNode.js +530 -0
  77. package/dist/domain/workflow/nodes/CheckTextNode.js.map +1 -0
  78. package/dist/domain/workflow/nodes/GenerateImageNode.d.ts +44 -0
  79. package/dist/domain/workflow/nodes/GenerateImageNode.d.ts.map +1 -0
  80. package/dist/domain/workflow/nodes/GenerateImageNode.js +272 -0
  81. package/dist/domain/workflow/nodes/GenerateImageNode.js.map +1 -0
  82. package/dist/domain/workflow/nodes/OrganizeNode.d.ts +49 -0
  83. package/dist/domain/workflow/nodes/OrganizeNode.d.ts.map +1 -0
  84. package/dist/domain/workflow/nodes/OrganizeNode.js +241 -0
  85. package/dist/domain/workflow/nodes/OrganizeNode.js.map +1 -0
  86. package/dist/domain/workflow/nodes/SearchNode.d.ts +48 -0
  87. package/dist/domain/workflow/nodes/SearchNode.d.ts.map +1 -0
  88. package/dist/domain/workflow/nodes/SearchNode.js +151 -0
  89. package/dist/domain/workflow/nodes/SearchNode.js.map +1 -0
  90. package/dist/domain/workflow/nodes/WriteNode.d.ts +68 -0
  91. package/dist/domain/workflow/nodes/WriteNode.d.ts.map +1 -0
  92. package/dist/domain/workflow/nodes/WriteNode.js +431 -0
  93. package/dist/domain/workflow/nodes/WriteNode.js.map +1 -0
  94. package/dist/domain/workflow/nodes/config/index.js +287 -0
  95. package/dist/domain/workflow/nodes/domain/entities/Task.js +68 -0
  96. package/dist/domain/workflow/nodes/domain/workflow/State.js +200 -0
  97. package/dist/domain/workflow/nodes/domain/workflow/nodes/BaseNode.js +328 -0
  98. package/dist/domain/workflow/nodes/domain/workflow/nodes/CheckTextNode.js +500 -0
  99. package/dist/domain/workflow/nodes/index.d.ts +13 -0
  100. package/dist/domain/workflow/nodes/index.d.ts.map +1 -0
  101. package/dist/domain/workflow/nodes/index.js +13 -0
  102. package/dist/domain/workflow/nodes/index.js.map +1 -0
  103. package/dist/domain/workflow/nodes/infrastructure/logging/logger.js +275 -0
  104. package/dist/domain/workflow/nodes/services/llm/EnhancedLLMService.js +559 -0
  105. package/dist/index.d.ts +24 -0
  106. package/dist/index.d.ts.map +1 -0
  107. package/dist/index.js +34 -0
  108. package/dist/index.js.map +1 -0
  109. package/dist/infrastructure/cache/CacheService.d.ts +139 -0
  110. package/dist/infrastructure/cache/CacheService.d.ts.map +1 -0
  111. package/dist/infrastructure/cache/CacheService.js +419 -0
  112. package/dist/infrastructure/cache/CacheService.js.map +1 -0
  113. package/dist/infrastructure/cache/index.d.ts +5 -0
  114. package/dist/infrastructure/cache/index.d.ts.map +1 -0
  115. package/dist/infrastructure/cache/index.js +6 -0
  116. package/dist/infrastructure/cache/index.js.map +1 -0
  117. package/dist/infrastructure/database/BaseRepository.d.ts +98 -0
  118. package/dist/infrastructure/database/BaseRepository.d.ts.map +1 -0
  119. package/dist/infrastructure/database/BaseRepository.js +178 -0
  120. package/dist/infrastructure/database/BaseRepository.js.map +1 -0
  121. package/dist/infrastructure/database/MemoryTaskRepository.d.ts +77 -0
  122. package/dist/infrastructure/database/MemoryTaskRepository.d.ts.map +1 -0
  123. package/dist/infrastructure/database/MemoryTaskRepository.js +309 -0
  124. package/dist/infrastructure/database/MemoryTaskRepository.js.map +1 -0
  125. package/dist/infrastructure/database/PostgresQualityCheckRepository.d.ts +36 -0
  126. package/dist/infrastructure/database/PostgresQualityCheckRepository.d.ts.map +1 -0
  127. package/dist/infrastructure/database/PostgresQualityCheckRepository.js +89 -0
  128. package/dist/infrastructure/database/PostgresQualityCheckRepository.js.map +1 -0
  129. package/dist/infrastructure/database/PostgresTaskRepository.d.ts +94 -0
  130. package/dist/infrastructure/database/PostgresTaskRepository.d.ts.map +1 -0
  131. package/dist/infrastructure/database/PostgresTaskRepository.js +364 -0
  132. package/dist/infrastructure/database/PostgresTaskRepository.js.map +1 -0
  133. package/dist/infrastructure/database/ResultRepository.d.ts +41 -0
  134. package/dist/infrastructure/database/ResultRepository.d.ts.map +1 -0
  135. package/dist/infrastructure/database/ResultRepository.js +86 -0
  136. package/dist/infrastructure/database/ResultRepository.js.map +1 -0
  137. package/dist/infrastructure/database/SQLiteTaskRepository.d.ts +101 -0
  138. package/dist/infrastructure/database/SQLiteTaskRepository.d.ts.map +1 -0
  139. package/dist/infrastructure/database/SQLiteTaskRepository.js +548 -0
  140. package/dist/infrastructure/database/SQLiteTaskRepository.js.map +1 -0
  141. package/dist/infrastructure/database/index.d.ts +32 -0
  142. package/dist/infrastructure/database/index.d.ts.map +1 -0
  143. package/dist/infrastructure/database/index.js +72 -0
  144. package/dist/infrastructure/database/index.js.map +1 -0
  145. package/dist/infrastructure/logging/logger.d.ts +69 -0
  146. package/dist/infrastructure/logging/logger.d.ts.map +1 -0
  147. package/dist/infrastructure/logging/logger.js +169 -0
  148. package/dist/infrastructure/logging/logger.js.map +1 -0
  149. package/dist/infrastructure/monitoring/LoggingService.d.ts +109 -0
  150. package/dist/infrastructure/monitoring/LoggingService.d.ts.map +1 -0
  151. package/dist/infrastructure/monitoring/LoggingService.js +198 -0
  152. package/dist/infrastructure/monitoring/LoggingService.js.map +1 -0
  153. package/dist/infrastructure/monitoring/MetricsService.d.ts +112 -0
  154. package/dist/infrastructure/monitoring/MetricsService.d.ts.map +1 -0
  155. package/dist/infrastructure/monitoring/MetricsService.js +362 -0
  156. package/dist/infrastructure/monitoring/MetricsService.js.map +1 -0
  157. package/dist/infrastructure/monitoring/SentryService.d.ts +108 -0
  158. package/dist/infrastructure/monitoring/SentryService.d.ts.map +1 -0
  159. package/dist/infrastructure/monitoring/SentryService.js +282 -0
  160. package/dist/infrastructure/monitoring/SentryService.js.map +1 -0
  161. package/dist/infrastructure/monitoring/index.d.ts +7 -0
  162. package/dist/infrastructure/monitoring/index.d.ts.map +1 -0
  163. package/dist/infrastructure/monitoring/index.js +10 -0
  164. package/dist/infrastructure/monitoring/index.js.map +1 -0
  165. package/dist/infrastructure/queue/TaskQueue.d.ts +110 -0
  166. package/dist/infrastructure/queue/TaskQueue.d.ts.map +1 -0
  167. package/dist/infrastructure/queue/TaskQueue.js +363 -0
  168. package/dist/infrastructure/queue/TaskQueue.js.map +1 -0
  169. package/dist/infrastructure/queue/index.d.ts +5 -0
  170. package/dist/infrastructure/queue/index.d.ts.map +1 -0
  171. package/dist/infrastructure/queue/index.js +5 -0
  172. package/dist/infrastructure/queue/index.js.map +1 -0
  173. package/dist/infrastructure/redis/connection.d.ts +61 -0
  174. package/dist/infrastructure/redis/connection.d.ts.map +1 -0
  175. package/dist/infrastructure/redis/connection.js +184 -0
  176. package/dist/infrastructure/redis/connection.js.map +1 -0
  177. package/dist/infrastructure/redis/index.d.ts +5 -0
  178. package/dist/infrastructure/redis/index.d.ts.map +1 -0
  179. package/dist/infrastructure/redis/index.js +5 -0
  180. package/dist/infrastructure/redis/index.js.map +1 -0
  181. package/dist/infrastructure/security/ApiKeyService.d.ts +103 -0
  182. package/dist/infrastructure/security/ApiKeyService.d.ts.map +1 -0
  183. package/dist/infrastructure/security/ApiKeyService.js +250 -0
  184. package/dist/infrastructure/security/ApiKeyService.js.map +1 -0
  185. package/dist/infrastructure/security/QuotaService.d.ts +87 -0
  186. package/dist/infrastructure/security/QuotaService.d.ts.map +1 -0
  187. package/dist/infrastructure/security/QuotaService.js +303 -0
  188. package/dist/infrastructure/security/QuotaService.js.map +1 -0
  189. package/dist/infrastructure/security/RateLimiter.d.ts +104 -0
  190. package/dist/infrastructure/security/RateLimiter.d.ts.map +1 -0
  191. package/dist/infrastructure/security/RateLimiter.js +331 -0
  192. package/dist/infrastructure/security/RateLimiter.js.map +1 -0
  193. package/dist/infrastructure/security/index.d.ts +7 -0
  194. package/dist/infrastructure/security/index.d.ts.map +1 -0
  195. package/dist/infrastructure/security/index.js +10 -0
  196. package/dist/infrastructure/security/index.js.map +1 -0
  197. package/dist/monitoring/index.d.ts +5 -0
  198. package/dist/monitoring/index.d.ts.map +1 -0
  199. package/dist/monitoring/index.js +5 -0
  200. package/dist/monitoring/index.js.map +1 -0
  201. package/dist/monitoring/server.d.ts +14 -0
  202. package/dist/monitoring/server.d.ts.map +1 -0
  203. package/dist/monitoring/server.js +99 -0
  204. package/dist/monitoring/server.js.map +1 -0
  205. package/dist/presentation/cli/commands/cancel.d.ts +8 -0
  206. package/dist/presentation/cli/commands/cancel.d.ts.map +1 -0
  207. package/dist/presentation/cli/commands/cancel.js +57 -0
  208. package/dist/presentation/cli/commands/cancel.js.map +1 -0
  209. package/dist/presentation/cli/commands/create.d.ts +8 -0
  210. package/dist/presentation/cli/commands/create.d.ts.map +1 -0
  211. package/dist/presentation/cli/commands/create.js +368 -0
  212. package/dist/presentation/cli/commands/create.js.map +1 -0
  213. package/dist/presentation/cli/commands/result.d.ts +8 -0
  214. package/dist/presentation/cli/commands/result.d.ts.map +1 -0
  215. package/dist/presentation/cli/commands/result.js +121 -0
  216. package/dist/presentation/cli/commands/result.js.map +1 -0
  217. package/dist/presentation/cli/commands/status.d.ts +8 -0
  218. package/dist/presentation/cli/commands/status.d.ts.map +1 -0
  219. package/dist/presentation/cli/commands/status.js +92 -0
  220. package/dist/presentation/cli/commands/status.js.map +1 -0
  221. package/dist/presentation/cli/index.d.ts +8 -0
  222. package/dist/presentation/cli/index.d.ts.map +1 -0
  223. package/dist/presentation/cli/index.js +32 -0
  224. package/dist/presentation/cli/index.js.map +1 -0
  225. package/dist/presentation/cli/utils/cleanup.d.ts +14 -0
  226. package/dist/presentation/cli/utils/cleanup.d.ts.map +1 -0
  227. package/dist/presentation/cli/utils/cleanup.js +62 -0
  228. package/dist/presentation/cli/utils/cleanup.js.map +1 -0
  229. package/dist/presentation/cli/utils/formatter.d.ts +28 -0
  230. package/dist/presentation/cli/utils/formatter.d.ts.map +1 -0
  231. package/dist/presentation/cli/utils/formatter.js +68 -0
  232. package/dist/presentation/cli/utils/formatter.js.map +1 -0
  233. package/dist/presentation/cli.d.ts +7 -0
  234. package/dist/presentation/cli.d.ts.map +1 -0
  235. package/dist/presentation/cli.js +8 -0
  236. package/dist/presentation/cli.js.map +1 -0
  237. package/dist/presentation/monitor-cli.d.ts +8 -0
  238. package/dist/presentation/monitor-cli.d.ts.map +1 -0
  239. package/dist/presentation/monitor-cli.js +44 -0
  240. package/dist/presentation/monitor-cli.js.map +1 -0
  241. package/dist/presentation/worker-cli.d.ts +8 -0
  242. package/dist/presentation/worker-cli.d.ts.map +1 -0
  243. package/dist/presentation/worker-cli.js +51 -0
  244. package/dist/presentation/worker-cli.js.map +1 -0
  245. package/dist/schedulers/TaskScheduler.d.ts +99 -0
  246. package/dist/schedulers/TaskScheduler.d.ts.map +1 -0
  247. package/dist/schedulers/TaskScheduler.js +233 -0
  248. package/dist/schedulers/TaskScheduler.js.map +1 -0
  249. package/dist/schedulers/index.d.ts +5 -0
  250. package/dist/schedulers/index.d.ts.map +1 -0
  251. package/dist/schedulers/index.js +5 -0
  252. package/dist/schedulers/index.js.map +1 -0
  253. package/dist/services/image/ImageService.d.ts +68 -0
  254. package/dist/services/image/ImageService.d.ts.map +1 -0
  255. package/dist/services/image/ImageService.js +166 -0
  256. package/dist/services/image/ImageService.js.map +1 -0
  257. package/dist/services/index.d.ts +8 -0
  258. package/dist/services/index.d.ts.map +1 -0
  259. package/dist/services/index.js +12 -0
  260. package/dist/services/index.js.map +1 -0
  261. package/dist/services/llm/EnhancedLLMService.d.ts +148 -0
  262. package/dist/services/llm/EnhancedLLMService.d.ts.map +1 -0
  263. package/dist/services/llm/EnhancedLLMService.js +425 -0
  264. package/dist/services/llm/EnhancedLLMService.js.map +1 -0
  265. package/dist/services/llm/LLMService.d.ts +103 -0
  266. package/dist/services/llm/LLMService.d.ts.map +1 -0
  267. package/dist/services/llm/LLMService.js +212 -0
  268. package/dist/services/llm/LLMService.js.map +1 -0
  269. package/dist/services/quality/HardRuleChecker.d.ts +143 -0
  270. package/dist/services/quality/HardRuleChecker.d.ts.map +1 -0
  271. package/dist/services/quality/HardRuleChecker.js +353 -0
  272. package/dist/services/quality/HardRuleChecker.js.map +1 -0
  273. package/dist/services/quality/LLMEvaluator.d.ts +105 -0
  274. package/dist/services/quality/LLMEvaluator.d.ts.map +1 -0
  275. package/dist/services/quality/LLMEvaluator.js +312 -0
  276. package/dist/services/quality/LLMEvaluator.js.map +1 -0
  277. package/dist/services/quality/QualityCheckService.d.ts +112 -0
  278. package/dist/services/quality/QualityCheckService.d.ts.map +1 -0
  279. package/dist/services/quality/QualityCheckService.js +342 -0
  280. package/dist/services/quality/QualityCheckService.js.map +1 -0
  281. package/dist/services/quality/QualityService.d.ts +75 -0
  282. package/dist/services/quality/QualityService.d.ts.map +1 -0
  283. package/dist/services/quality/QualityService.js +360 -0
  284. package/dist/services/quality/QualityService.js.map +1 -0
  285. package/dist/services/quality/index.d.ts +7 -0
  286. package/dist/services/quality/index.d.ts.map +1 -0
  287. package/dist/services/quality/index.js +10 -0
  288. package/dist/services/quality/index.js.map +1 -0
  289. package/dist/services/search/SearchService.d.ts +79 -0
  290. package/dist/services/search/SearchService.d.ts.map +1 -0
  291. package/dist/services/search/SearchService.js +193 -0
  292. package/dist/services/search/SearchService.js.map +1 -0
  293. package/dist/workers/TaskWorker.d.ts +61 -0
  294. package/dist/workers/TaskWorker.d.ts.map +1 -0
  295. package/dist/workers/TaskWorker.js +256 -0
  296. package/dist/workers/TaskWorker.js.map +1 -0
  297. package/dist/workers/index.d.ts +5 -0
  298. package/dist/workers/index.d.ts.map +1 -0
  299. package/dist/workers/index.js +5 -0
  300. package/dist/workers/index.js.map +1 -0
  301. package/docs/DOCUMENTATION-ANALYSIS.md +190 -0
  302. package/docs/README.md +145 -0
  303. package/docs/SOURCE-CODE-ANALYSIS.md +1107 -0
  304. package/docs/architecture-complete.md +5524 -0
  305. package/docs/archive/implementation/implementation-analysis/README.md +244 -0
  306. package/docs/archive/implementation/implementation-analysis/implementation-analysis-context.md +483 -0
  307. package/docs/archive/implementation/implementation-analysis/implementation-analysis-plan.md +1242 -0
  308. package/docs/archive/implementation/implementation-analysis/implementation-analysis-tasks.md +777 -0
  309. package/docs/archive/phases/phase-1/phase-1-completion-summary.md +284 -0
  310. package/docs/archive/phases/phase-1/phase-1-implementation-guide.md +1380 -0
  311. package/docs/archive/phases/phase-2/phase-2a/phase-2a-completion-summary.md +443 -0
  312. package/docs/archive/phases/phase-2/phase-2b/phase-2b-completion-report.md +430 -0
  313. package/docs/archive/phases/phase-2/phase-2b/phase-2b-completion-summary.md +592 -0
  314. package/docs/archive/phases/phase-2/phase-2b/phase-2b-final-summary.md +371 -0
  315. package/docs/archive/phases/phase-2/phase-2b/phase-2b-preparation-complete.md +343 -0
  316. package/docs/archive/phases/phase-2/phase-2b/phase-2b-preparation.md +945 -0
  317. package/docs/archive/phases/phase-2/phase-2b/phase-2b-progress-update.md +366 -0
  318. package/docs/archive/phases/phase-3/phase-3-completion-summary.md +354 -0
  319. package/docs/archive/phases/phase-3/phase-3-development-plan.md +878 -0
  320. package/docs/archive/phases/phase-3/phase-3-quick-start.md +324 -0
  321. package/docs/archive/phases/phase-4/phase-4-completion-summary.md +708 -0
  322. package/docs/archive/phases/phase-4/phase-4-development-plan.md +740 -0
  323. package/docs/archive/phases/phase-4/phase-4-quick-start.md +632 -0
  324. package/docs/archive/phases/phase-4/phase-4-session-3-security-testing.md +484 -0
  325. package/docs/archive/phases/phase-4/phase-4-session-4-unit-tests.md +550 -0
  326. package/docs/archive/phases/phase-4/phase-4-session-5-security-tests.md +564 -0
  327. package/docs/archive/phases/phase-4/phase-4-session-6-cache-integration.md +456 -0
  328. package/docs/archive/phases/phase-4/phase-4-session-7-test-fixes.md +348 -0
  329. package/docs/archive/phases/phase-4/phase-4-session-8-taskqueue-fixes.md +323 -0
  330. package/docs/archive/phases/phase-4/phase-4-session-summary-continued.md +373 -0
  331. package/docs/archive/phases/phase-4/phase-4-session-summary.md +595 -0
  332. package/docs/archive/reports/progress-reports/PHASE_0_PROGRESS.md +242 -0
  333. package/docs/archive/reports/progress-reports/PHASE_0_SUMMARY.md +262 -0
  334. package/docs/archive/reports/progress-reports/PHASE_1_2_ISSUES.md +399 -0
  335. package/docs/archive/reports/progress-reports/PHASE_1_PROGRESS.md +388 -0
  336. package/docs/archive/reports/progress-reports/PHASE_3_PREPARATION.md +574 -0
  337. package/docs/archive/reports/progress-reports/current-progress-update.md +294 -0
  338. package/docs/archive/reports/progress-reports/final-summary.md +215 -0
  339. package/docs/archive/reports/progress-reports/implementation-summary.md +287 -0
  340. package/docs/archive/reports/progress-reports/project-progress-report.md +440 -0
  341. package/docs/archive/reports/progress-reports/project-progress.md +386 -0
  342. package/docs/archive/reports/test-reports/TEST-COVERAGE-REPORT.md +441 -0
  343. package/docs/archive/reports/test-reports/e2e-test-report.md +293 -0
  344. package/docs/archive/reports/test-reports/final-test-report.md +367 -0
  345. package/docs/archive/reports/test-reports/real-env-test-report.md +391 -0
  346. package/docs/archive/reports/test-reports/test-completion-summary.md +356 -0
  347. package/docs/archive/reports/test-reports/test-report.md +371 -0
  348. package/docs/archive/sessions/session-2-summary.md +429 -0
  349. package/docs/archive/sessions/session-3-summary.md +395 -0
  350. package/docs/archive/sessions/session-summary.md +370 -0
  351. package/docs/config-system-update.md +239 -0
  352. package/docs/database-refactoring-PLAN.md +199 -0
  353. package/docs/database-refactoring-SUMMARY.md +384 -0
  354. package/docs/quality-check-architecture.md +1030 -0
  355. package/docs/quick-start.md +388 -0
  356. package/docs/references/bullmq-quick-reference.md +525 -0
  357. package/docs/references/monitoring-optimization-guide.md +871 -0
  358. package/docs/references/performance-optimization-guide.md +933 -0
  359. package/docs/storage-guide.md +612 -0
  360. package/docs/test-implementation-PLAN.md +223 -0
  361. package/docs/test-implementation-SUMMARY.md +194 -0
  362. package/docs/user-guide.md +719 -0
  363. package/docs/workflow-architecture.md +549 -0
  364. package/package.json +126 -0
  365. package/src/application/workflow/SyncExecutor.ts +444 -0
  366. package/src/application/workflow/types.ts +57 -0
  367. package/src/config/index.ts +352 -0
  368. package/src/domain/entities/QualityCheck.ts +202 -0
  369. package/src/domain/entities/Result.ts +130 -0
  370. package/src/domain/entities/Task.ts +178 -0
  371. package/src/domain/entities/TaskStep.ts +188 -0
  372. package/src/domain/entities/TokenUsage.ts +119 -0
  373. package/src/domain/entities/index.ts +20 -0
  374. package/src/domain/repositories/QualityCheckRepository.ts +52 -0
  375. package/src/domain/repositories/ResultRepository.ts +47 -0
  376. package/src/domain/repositories/TaskRepository.ts +271 -0
  377. package/src/domain/workflow/CheckpointManager.ts +283 -0
  378. package/src/domain/workflow/ContentCreatorGraph.ts +446 -0
  379. package/src/domain/workflow/State.ts +321 -0
  380. package/src/domain/workflow/index.ts +18 -0
  381. package/src/domain/workflow/nodes/BaseNode.ts +325 -0
  382. package/src/domain/workflow/nodes/CheckImageNode.ts +325 -0
  383. package/src/domain/workflow/nodes/CheckTextNode.ts +709 -0
  384. package/src/domain/workflow/nodes/GenerateImageNode.ts +342 -0
  385. package/src/domain/workflow/nodes/OrganizeNode.ts +304 -0
  386. package/src/domain/workflow/nodes/SearchNode.ts +192 -0
  387. package/src/domain/workflow/nodes/WriteNode.ts +505 -0
  388. package/src/domain/workflow/nodes/index.ts +13 -0
  389. package/src/index.ts +43 -0
  390. package/src/infrastructure/cache/CacheService.ts +483 -0
  391. package/src/infrastructure/cache/index.ts +6 -0
  392. package/src/infrastructure/database/BaseRepository.ts +214 -0
  393. package/src/infrastructure/database/MemoryTaskRepository.ts +377 -0
  394. package/src/infrastructure/database/PostgresQualityCheckRepository.ts +115 -0
  395. package/src/infrastructure/database/PostgresTaskRepository.ts +424 -0
  396. package/src/infrastructure/database/ResultRepository.ts +113 -0
  397. package/src/infrastructure/database/SQLiteTaskRepository.ts +651 -0
  398. package/src/infrastructure/database/index.ts +83 -0
  399. package/src/infrastructure/logging/logger.ts +231 -0
  400. package/src/infrastructure/monitoring/LoggingService.ts +292 -0
  401. package/src/infrastructure/monitoring/MetricsService.ts +468 -0
  402. package/src/infrastructure/monitoring/SentryService.ts +345 -0
  403. package/src/infrastructure/monitoring/index.ts +12 -0
  404. package/src/infrastructure/queue/TaskQueue.ts +429 -0
  405. package/src/infrastructure/queue/index.ts +5 -0
  406. package/src/infrastructure/redis/connection.ts +215 -0
  407. package/src/infrastructure/redis/index.ts +5 -0
  408. package/src/infrastructure/security/ApiKeyService.ts +340 -0
  409. package/src/infrastructure/security/QuotaService.ts +411 -0
  410. package/src/infrastructure/security/RateLimiter.ts +417 -0
  411. package/src/infrastructure/security/index.ts +12 -0
  412. package/src/monitoring/index.ts +5 -0
  413. package/src/monitoring/server.ts +109 -0
  414. package/src/presentation/cli/commands/cancel.ts +64 -0
  415. package/src/presentation/cli/commands/create.ts +400 -0
  416. package/src/presentation/cli/commands/result.ts +136 -0
  417. package/src/presentation/cli/commands/status.ts +102 -0
  418. package/src/presentation/cli/index.ts +39 -0
  419. package/src/presentation/cli/utils/cleanup.ts +65 -0
  420. package/src/presentation/cli/utils/formatter.ts +74 -0
  421. package/src/presentation/cli.ts +8 -0
  422. package/src/presentation/monitor-cli.ts +52 -0
  423. package/src/presentation/worker-cli.ts +62 -0
  424. package/src/schedulers/TaskScheduler.ts +314 -0
  425. package/src/schedulers/index.ts +11 -0
  426. package/src/services/image/ImageService.ts +221 -0
  427. package/src/services/index.ts +15 -0
  428. package/src/services/llm/EnhancedLLMService.ts +596 -0
  429. package/src/services/llm/LLMService.ts +310 -0
  430. package/src/services/quality/HardRuleChecker.ts +509 -0
  431. package/src/services/quality/LLMEvaluator.ts +400 -0
  432. package/src/services/quality/QualityCheckService.ts +473 -0
  433. package/src/services/quality/QualityService.ts +445 -0
  434. package/src/services/quality/index.ts +12 -0
  435. package/src/services/search/SearchService.ts +266 -0
  436. package/src/types/global.d.ts +17 -0
  437. package/src/workers/TaskWorker.ts +320 -0
  438. package/src/workers/index.ts +5 -0
@@ -0,0 +1,468 @@
1
+ /**
2
+ * Prometheus 指标服务
3
+ *
4
+ * 基于 prom-client 的指标采集服务
5
+ * 收集任务、LLM、队列、系统等关键指标
6
+ */
7
+
8
+ import { register, Counter, Histogram, Gauge } from 'prom-client';
9
+ import { createLogger } from '../logging/logger.js';
10
+
11
+ const logger = createLogger('Metrics');
12
+
13
+ /**
14
+ * 指标标签
15
+ */
16
+ export interface MetricLabels {
17
+ // 通用标签
18
+ status?: string;
19
+ error?: string;
20
+ workerId?: string;
21
+ taskId?: string;
22
+
23
+ // LLM 标签
24
+ model?: string;
25
+ operation?: string;
26
+
27
+ // 队列标签
28
+ queueName?: string;
29
+ jobState?: string;
30
+
31
+ // 自定义标签
32
+ [key: string]: string | number | undefined;
33
+ }
34
+
35
+ /**
36
+ * Prometheus 指标服务类
37
+ */
38
+ export class MetricsService {
39
+ // 任务相关指标
40
+ private taskCreated: Counter<string>;
41
+ private taskCompleted: Counter<string>;
42
+ private taskFailed: Counter<string>;
43
+ private taskCancelled: Counter<string>;
44
+ private taskDuration: Histogram<string>;
45
+ private taskProgress: Gauge<string>;
46
+
47
+ // 系统指标收集定时器
48
+ private systemMetricsInterval: NodeJS.Timeout | null = null;
49
+
50
+ // LLM 相关指标
51
+ private llmRequests: Counter<string>;
52
+ private llmRequestDuration: Histogram<string>;
53
+ private llmTokenUsage: Counter<string>;
54
+ private llmRetry: Counter<string>;
55
+ private llmErrors: Counter<string>;
56
+
57
+ // 队列相关指标
58
+ private queueJobsWaiting: Gauge<string>;
59
+ private queueJobsActive: Gauge<string>;
60
+ private queueJobsCompleted: Counter<string>;
61
+ private queueJobsFailed: Counter<string>;
62
+ private queueJobDuration: Histogram<string>;
63
+
64
+ // 质量检查相关指标
65
+ private qualityChecks: Counter<string>;
66
+ private qualityCheckDuration: Histogram<string>;
67
+ private qualityCheckPassed: Counter<string>;
68
+ private qualityCheckFailed: Counter<string>;
69
+ private qualityCheckScore: Histogram<string>;
70
+
71
+ // 缓存相关指标
72
+ private cacheHits: Counter<string>;
73
+ private cacheMisses: Counter<string>;
74
+ private cacheSet: Counter<string>;
75
+ private cacheDelete: Counter<string>;
76
+ private cacheSize: Gauge<string>;
77
+
78
+ // 系统相关指标
79
+ private memoryUsage: Gauge<string>;
80
+ private activeWorkers: Gauge<string>;
81
+ private uptime: Gauge<string>;
82
+
83
+ constructor() {
84
+ // 初始化任务指标
85
+ this.taskCreated = new Counter({
86
+ name: 'task_created_total',
87
+ help: 'Total number of tasks created',
88
+ labelNames: ['workerId', 'mode'],
89
+ });
90
+
91
+ this.taskCompleted = new Counter({
92
+ name: 'task_completed_total',
93
+ help: 'Total number of tasks completed',
94
+ labelNames: ['workerId', 'mode'],
95
+ });
96
+
97
+ this.taskFailed = new Counter({
98
+ name: 'task_failed_total',
99
+ help: 'Total number of tasks failed',
100
+ labelNames: ['workerId', 'mode', 'error'],
101
+ });
102
+
103
+ this.taskCancelled = new Counter({
104
+ name: 'task_cancelled_total',
105
+ help: 'Total number of tasks cancelled',
106
+ labelNames: ['workerId'],
107
+ });
108
+
109
+ this.taskDuration = new Histogram({
110
+ name: 'task_duration_seconds',
111
+ help: 'Task execution duration in seconds',
112
+ labelNames: ['workerId', 'mode'],
113
+ buckets: [10, 30, 60, 120, 300, 600, 1800, 3600], // 10s 到 1h
114
+ });
115
+
116
+ this.taskProgress = new Gauge({
117
+ name: 'task_progress_percentage',
118
+ help: 'Current task progress percentage',
119
+ labelNames: ['workerId', 'taskId'],
120
+ });
121
+
122
+ // 初始化 LLM 指标
123
+ this.llmRequests = new Counter({
124
+ name: 'llm_request_total',
125
+ help: 'Total number of LLM requests',
126
+ labelNames: ['model', 'operation'],
127
+ });
128
+
129
+ this.llmRequestDuration = new Histogram({
130
+ name: 'llm_request_duration_seconds',
131
+ help: 'LLM request duration in seconds',
132
+ labelNames: ['model', 'operation'],
133
+ buckets: [1, 5, 10, 20, 30, 60, 120], // 1s 到 2min
134
+ });
135
+
136
+ this.llmTokenUsage = new Counter({
137
+ name: 'llm_token_usage_total',
138
+ help: 'Total number of tokens used',
139
+ labelNames: ['model', 'type'], // type: prompt, completion
140
+ });
141
+
142
+ this.llmRetry = new Counter({
143
+ name: 'llm_retry_total',
144
+ help: 'Total number of LLM request retries',
145
+ labelNames: ['model', 'operation'],
146
+ });
147
+
148
+ this.llmErrors = new Counter({
149
+ name: 'llm_error_total',
150
+ help: 'Total number of LLM errors',
151
+ labelNames: ['model', 'operation', 'error'],
152
+ });
153
+
154
+ // 初始化队列指标
155
+ this.queueJobsWaiting = new Gauge({
156
+ name: 'queue_jobs_waiting',
157
+ help: 'Number of jobs waiting in queue',
158
+ labelNames: ['queueName'],
159
+ });
160
+
161
+ this.queueJobsActive = new Gauge({
162
+ name: 'queue_jobs_active',
163
+ help: 'Number of active jobs being processed',
164
+ labelNames: ['queueName'],
165
+ });
166
+
167
+ this.queueJobsCompleted = new Counter({
168
+ name: 'queue_jobs_completed_total',
169
+ help: 'Total number of jobs completed',
170
+ labelNames: ['queueName'],
171
+ });
172
+
173
+ this.queueJobsFailed = new Counter({
174
+ name: 'queue_jobs_failed_total',
175
+ help: 'Total number of jobs failed',
176
+ labelNames: ['queueName', 'error'],
177
+ });
178
+
179
+ this.queueJobDuration = new Histogram({
180
+ name: 'queue_job_duration_seconds',
181
+ help: 'Queue job duration in seconds',
182
+ labelNames: ['queueName'],
183
+ buckets: [1, 5, 10, 30, 60, 300, 600],
184
+ });
185
+
186
+ // 初始化质量检查指标
187
+ this.qualityChecks = new Counter({
188
+ name: 'quality_check_total',
189
+ help: 'Total number of quality checks',
190
+ labelNames: ['type'], // type: hard, soft, full
191
+ });
192
+
193
+ this.qualityCheckDuration = new Histogram({
194
+ name: 'quality_check_duration_seconds',
195
+ help: 'Quality check duration in seconds',
196
+ labelNames: ['type'],
197
+ buckets: [1, 5, 10, 20, 30],
198
+ });
199
+
200
+ this.qualityCheckPassed = new Counter({
201
+ name: 'quality_check_passed_total',
202
+ help: 'Total number of quality checks passed',
203
+ labelNames: ['type'],
204
+ });
205
+
206
+ this.qualityCheckFailed = new Counter({
207
+ name: 'quality_check_failed_total',
208
+ help: 'Total number of quality checks failed',
209
+ labelNames: ['type', 'reason'],
210
+ });
211
+
212
+ this.qualityCheckScore = new Histogram({
213
+ name: 'quality_check_score',
214
+ help: 'Quality check score distribution',
215
+ labelNames: ['type'],
216
+ buckets: [2, 4, 6, 7, 8, 9, 10], // 对应评分等级
217
+ });
218
+
219
+ // 初始化缓存指标
220
+ this.cacheHits = new Counter({
221
+ name: 'cache_hits_total',
222
+ help: 'Total number of cache hits',
223
+ labelNames: ['cacheName'],
224
+ });
225
+
226
+ this.cacheMisses = new Counter({
227
+ name: 'cache_misses_total',
228
+ help: 'Total number of cache misses',
229
+ labelNames: ['cacheName'],
230
+ });
231
+
232
+ this.cacheSet = new Counter({
233
+ name: 'cache_set_total',
234
+ help: 'Total number of cache sets',
235
+ labelNames: ['cacheName'],
236
+ });
237
+
238
+ this.cacheDelete = new Counter({
239
+ name: 'cache_delete_total',
240
+ help: 'Total number of cache deletes',
241
+ labelNames: ['cacheName'],
242
+ });
243
+
244
+ this.cacheSize = new Gauge({
245
+ name: 'cache_size',
246
+ help: 'Current cache size',
247
+ labelNames: ['cacheName'],
248
+ });
249
+
250
+ // 初始化系统指标
251
+ this.memoryUsage = new Gauge({
252
+ name: 'memory_usage_bytes',
253
+ help: 'Memory usage in bytes',
254
+ labelNames: ['type'], // type: heap, rss, external
255
+ });
256
+
257
+ this.activeWorkers = new Gauge({
258
+ name: 'active_workers_total',
259
+ help: 'Number of active workers',
260
+ });
261
+
262
+ this.uptime = new Gauge({
263
+ name: 'uptime_seconds',
264
+ help: 'Service uptime in seconds',
265
+ });
266
+
267
+ // 启动系统指标收集
268
+ this.startSystemMetricsCollection();
269
+
270
+ logger.info('Metrics service initialized');
271
+ }
272
+
273
+ // ==================== 任务相关方法 ====================
274
+
275
+ recordTaskCreated(workerId: string, mode: string): void {
276
+ this.taskCreated.inc({ workerId, mode });
277
+ }
278
+
279
+ recordTaskCompleted(workerId: string, mode: string, duration: number): void {
280
+ this.taskCompleted.inc({ workerId, mode });
281
+ this.taskDuration.observe({ workerId, mode }, duration / 1000);
282
+ }
283
+
284
+ recordTaskFailed(workerId: string, mode: string, error: string): void {
285
+ this.taskFailed.inc({ workerId, mode, error });
286
+ }
287
+
288
+ recordTaskCancelled(workerId: string): void {
289
+ this.taskCancelled.inc({ workerId });
290
+ }
291
+
292
+ recordTaskProgress(workerId: string, taskId: string, progress: number): void {
293
+ this.taskProgress.set({ workerId, taskId }, progress);
294
+ }
295
+
296
+ // ==================== LLM 相关方法 ====================
297
+
298
+ recordLLMRequest(model: string, operation: string): void {
299
+ this.llmRequests.inc({ model, operation });
300
+ }
301
+
302
+ recordLLMRequestDuration(model: string, operation: string, duration: number): void {
303
+ this.llmRequestDuration.observe({ model, operation }, duration / 1000);
304
+ }
305
+
306
+ recordLLMTokenUsage(model: string, type: 'prompt' | 'completion', count: number): void {
307
+ this.llmTokenUsage.inc({ model, type }, count);
308
+ }
309
+
310
+ recordLLMRetry(model: string, operation: string): void {
311
+ this.llmRetry.inc({ model, operation });
312
+ }
313
+
314
+ recordLLMError(model: string, operation: string, error: string): void {
315
+ this.llmErrors.inc({ model, operation, error });
316
+ }
317
+
318
+ // ==================== 队列相关方法 ====================
319
+
320
+ recordQueueJobsWaiting(queueName: string, count: number): void {
321
+ this.queueJobsWaiting.set({ queueName }, count);
322
+ }
323
+
324
+ recordQueueJobsActive(queueName: string, count: number): void {
325
+ this.queueJobsActive.set({ queueName }, count);
326
+ }
327
+
328
+ recordQueueJobCompleted(queueName: string): void {
329
+ this.queueJobsCompleted.inc({ queueName });
330
+ }
331
+
332
+ recordQueueJobFailed(queueName: string, error: string): void {
333
+ this.queueJobsFailed.inc({ queueName, error });
334
+ }
335
+
336
+ recordQueueJobDuration(queueName: string, duration: number): void {
337
+ this.queueJobDuration.observe({ queueName }, duration / 1000);
338
+ }
339
+
340
+ // ==================== 质量检查相关方法 ====================
341
+
342
+ recordQualityCheck(type: 'hard' | 'soft' | 'full'): void {
343
+ this.qualityChecks.inc({ type });
344
+ }
345
+
346
+ recordQualityCheckDuration(type: 'hard' | 'soft' | 'full', duration: number): void {
347
+ this.qualityCheckDuration.observe({ type }, duration / 1000);
348
+ }
349
+
350
+ recordQualityCheckPassed(type: 'hard' | 'soft' | 'full'): void {
351
+ this.qualityCheckPassed.inc({ type });
352
+ }
353
+
354
+ recordQualityCheckFailed(type: 'hard' | 'soft' | 'full', reason: string): void {
355
+ this.qualityCheckFailed.inc({ type, reason });
356
+ }
357
+
358
+ recordQualityCheckScore(type: 'hard' | 'soft' | 'full', score: number): void {
359
+ this.qualityCheckScore.observe({ type }, score);
360
+ }
361
+
362
+ // ==================== 缓存相关方法 ====================
363
+
364
+ recordCacheHit(cacheName: string): void {
365
+ this.cacheHits.inc({ cacheName });
366
+ }
367
+
368
+ recordCacheMiss(cacheName: string): void {
369
+ this.cacheMisses.inc({ cacheName });
370
+ }
371
+
372
+ recordCacheSet(cacheName: string): void {
373
+ this.cacheSet.inc({ cacheName });
374
+ }
375
+
376
+ recordCacheDelete(cacheName: string): void {
377
+ this.cacheDelete.inc({ cacheName });
378
+ }
379
+
380
+ recordCacheSize(cacheName: string, size: number): void {
381
+ this.cacheSize.set({ cacheName }, size);
382
+ }
383
+
384
+ // ==================== 系统相关方法 ====================
385
+
386
+ recordActiveWorkers(count: number): void {
387
+ this.activeWorkers.set(count);
388
+ }
389
+
390
+ recordUptime(seconds: number): void {
391
+ this.uptime.set(seconds);
392
+ }
393
+
394
+ /**
395
+ * 启动系统指标收集
396
+ */
397
+ private startSystemMetricsCollection(): void {
398
+ const startTime = Date.now();
399
+
400
+ // 每 5 秒收集一次系统指标
401
+ this.systemMetricsInterval = setInterval(() => {
402
+ const memUsage = process.memoryUsage();
403
+
404
+ this.memoryUsage.set({ type: 'rss' }, memUsage.rss);
405
+ this.memoryUsage.set({ type: 'heapTotal' }, memUsage.heapTotal);
406
+ this.memoryUsage.set({ type: 'heapUsed' }, memUsage.heapUsed);
407
+ this.memoryUsage.set({ type: 'external' }, memUsage.external);
408
+
409
+ this.uptime.set((Date.now() - startTime) / 1000);
410
+ }, 5000);
411
+
412
+ logger.info('System metrics collection started');
413
+ }
414
+
415
+ /**
416
+ * 停止系统指标收集
417
+ */
418
+ stop(): void {
419
+ if (this.systemMetricsInterval) {
420
+ clearInterval(this.systemMetricsInterval);
421
+ this.systemMetricsInterval = null;
422
+ logger.info('System metrics collection stopped');
423
+ }
424
+ }
425
+
426
+ /**
427
+ * 获取 Prometheus 指标
428
+ */
429
+ async getMetrics(): Promise<string> {
430
+ return await register.metrics();
431
+ }
432
+
433
+ /**
434
+ * 获取内容类型
435
+ */
436
+ getContentType(): string {
437
+ return register.contentType;
438
+ }
439
+
440
+ /**
441
+ * 清空所有指标
442
+ */
443
+ resetMetrics(): void {
444
+ register.clear();
445
+ logger.info('Metrics reset');
446
+ }
447
+
448
+ /**
449
+ * 获取指标统计
450
+ */
451
+ async getMetricsStats(): Promise<any> {
452
+ const metrics = await register.getMetricsAsJSON();
453
+
454
+ return {
455
+ totalMetrics: metrics.length,
456
+ metrics: metrics.map(m => ({
457
+ name: m.name,
458
+ type: m.type,
459
+ help: m.help,
460
+ })),
461
+ };
462
+ }
463
+ }
464
+
465
+ /**
466
+ * Metrics 服务单例
467
+ */
468
+ export const metricsService = new MetricsService();