koishi-plugin-media-luna 0.0.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 (437) hide show
  1. package/client/README.md +558 -0
  2. package/client/api.ts +256 -0
  3. package/client/components/ChannelConfigDialog.vue +1113 -0
  4. package/client/components/ChannelsView.vue +698 -0
  5. package/client/components/ConfigRenderer.vue +164 -0
  6. package/client/components/EmptyState.vue +87 -0
  7. package/client/components/GenerateView.vue +778 -0
  8. package/client/components/HistoryGallery.vue +590 -0
  9. package/client/components/ImageLightbox.vue +510 -0
  10. package/client/components/ImageUpload.vue +298 -0
  11. package/client/components/JsonEditor.vue +68 -0
  12. package/client/components/LoadingState.vue +73 -0
  13. package/client/components/PresetsView.vue +800 -0
  14. package/client/components/ScrollContainer.vue +45 -0
  15. package/client/components/SettingsView.vue +231 -0
  16. package/client/components/StatusBadge.vue +55 -0
  17. package/client/components/TagFilter.vue +139 -0
  18. package/client/components/TagInput.vue +63 -0
  19. package/client/components/TasksView.vue +1074 -0
  20. package/client/components/ViewModeSwitch.vue +78 -0
  21. package/client/components/settings/CachePanel.vue +142 -0
  22. package/client/components/settings/MiddlewaresPanel.vue +480 -0
  23. package/client/components/settings/PluginsPanel.vue +493 -0
  24. package/client/index.ts +13 -0
  25. package/client/pages/index.vue +177 -0
  26. package/client/styles/shared.css +258 -0
  27. package/client/types.ts +158 -0
  28. package/client/utils/format.ts +72 -0
  29. package/dist/index.js +1 -0
  30. package/dist/style.css +1 -0
  31. package/lib/api/README.md +643 -0
  32. package/lib/api/cache-api.d.ts +6 -0
  33. package/lib/api/cache-api.d.ts.map +1 -0
  34. package/lib/api/cache-api.js +147 -0
  35. package/lib/api/cache-api.js.map +1 -0
  36. package/lib/api/channel-api.d.ts +6 -0
  37. package/lib/api/channel-api.d.ts.map +1 -0
  38. package/lib/api/channel-api.js +148 -0
  39. package/lib/api/channel-api.js.map +1 -0
  40. package/lib/api/connector-api.d.ts +6 -0
  41. package/lib/api/connector-api.d.ts.map +1 -0
  42. package/lib/api/connector-api.js +63 -0
  43. package/lib/api/connector-api.js.map +1 -0
  44. package/lib/api/generate-api.d.ts +6 -0
  45. package/lib/api/generate-api.d.ts.map +1 -0
  46. package/lib/api/generate-api.js +123 -0
  47. package/lib/api/generate-api.js.map +1 -0
  48. package/lib/api/index.d.ts +15 -0
  49. package/lib/api/index.d.ts.map +1 -0
  50. package/lib/api/index.js +34 -0
  51. package/lib/api/index.js.map +1 -0
  52. package/lib/api/middleware-api.d.ts +6 -0
  53. package/lib/api/middleware-api.d.ts.map +1 -0
  54. package/lib/api/middleware-api.js +212 -0
  55. package/lib/api/middleware-api.js.map +1 -0
  56. package/lib/api/plugin-api.d.ts +6 -0
  57. package/lib/api/plugin-api.d.ts.map +1 -0
  58. package/lib/api/plugin-api.js +78 -0
  59. package/lib/api/plugin-api.js.map +1 -0
  60. package/lib/api/preset-api.d.ts +6 -0
  61. package/lib/api/preset-api.d.ts.map +1 -0
  62. package/lib/api/preset-api.js +256 -0
  63. package/lib/api/preset-api.js.map +1 -0
  64. package/lib/api/settings-api.d.ts +6 -0
  65. package/lib/api/settings-api.d.ts.map +1 -0
  66. package/lib/api/settings-api.js +118 -0
  67. package/lib/api/settings-api.js.map +1 -0
  68. package/lib/api/task-api.d.ts +6 -0
  69. package/lib/api/task-api.d.ts.map +1 -0
  70. package/lib/api/task-api.js +148 -0
  71. package/lib/api/task-api.js.map +1 -0
  72. package/lib/config.d.ts +6 -0
  73. package/lib/config.d.ts.map +1 -0
  74. package/lib/config.js +8 -0
  75. package/lib/config.js.map +1 -0
  76. package/lib/connectors/builtin/chat-api.d.ts +9 -0
  77. package/lib/connectors/builtin/chat-api.d.ts.map +1 -0
  78. package/lib/connectors/builtin/chat-api.js +351 -0
  79. package/lib/connectors/builtin/chat-api.js.map +1 -0
  80. package/lib/connectors/builtin/dalle.d.ts +6 -0
  81. package/lib/connectors/builtin/dalle.d.ts.map +1 -0
  82. package/lib/connectors/builtin/dalle.js +109 -0
  83. package/lib/connectors/builtin/dalle.js.map +1 -0
  84. package/lib/connectors/builtin/flux.d.ts +7 -0
  85. package/lib/connectors/builtin/flux.d.ts.map +1 -0
  86. package/lib/connectors/builtin/flux.js +199 -0
  87. package/lib/connectors/builtin/flux.js.map +1 -0
  88. package/lib/connectors/builtin/index.d.ts +5 -0
  89. package/lib/connectors/builtin/index.d.ts.map +1 -0
  90. package/lib/connectors/builtin/index.js +6 -0
  91. package/lib/connectors/builtin/index.js.map +1 -0
  92. package/lib/connectors/builtin/sd-webui.d.ts +7 -0
  93. package/lib/connectors/builtin/sd-webui.d.ts.map +1 -0
  94. package/lib/connectors/builtin/sd-webui.js +157 -0
  95. package/lib/connectors/builtin/sd-webui.js.map +1 -0
  96. package/lib/connectors/connector-registry.d.ts +36 -0
  97. package/lib/connectors/connector-registry.d.ts.map +1 -0
  98. package/lib/connectors/connector-registry.js +66 -0
  99. package/lib/connectors/connector-registry.js.map +1 -0
  100. package/lib/connectors/index.d.ts +3 -0
  101. package/lib/connectors/index.d.ts.map +1 -0
  102. package/lib/connectors/index.js +4 -0
  103. package/lib/connectors/index.js.map +1 -0
  104. package/lib/core/api/api-utils.d.ts +46 -0
  105. package/lib/core/api/api-utils.d.ts.map +1 -0
  106. package/lib/core/api/api-utils.js +78 -0
  107. package/lib/core/api/api-utils.js.map +1 -0
  108. package/lib/core/api/cache-api.d.ts +6 -0
  109. package/lib/core/api/cache-api.d.ts.map +1 -0
  110. package/lib/core/api/cache-api.js +147 -0
  111. package/lib/core/api/cache-api.js.map +1 -0
  112. package/lib/core/api/channel-api.d.ts +6 -0
  113. package/lib/core/api/channel-api.d.ts.map +1 -0
  114. package/lib/core/api/channel-api.js +146 -0
  115. package/lib/core/api/channel-api.js.map +1 -0
  116. package/lib/core/api/connector-api.d.ts +6 -0
  117. package/lib/core/api/connector-api.d.ts.map +1 -0
  118. package/lib/core/api/connector-api.js +63 -0
  119. package/lib/core/api/connector-api.js.map +1 -0
  120. package/lib/core/api/generate-api.d.ts +6 -0
  121. package/lib/core/api/generate-api.d.ts.map +1 -0
  122. package/lib/core/api/generate-api.js +124 -0
  123. package/lib/core/api/generate-api.js.map +1 -0
  124. package/lib/core/api/index.d.ts +16 -0
  125. package/lib/core/api/index.d.ts.map +1 -0
  126. package/lib/core/api/index.js +38 -0
  127. package/lib/core/api/index.js.map +1 -0
  128. package/lib/core/api/middleware-api.d.ts +6 -0
  129. package/lib/core/api/middleware-api.d.ts.map +1 -0
  130. package/lib/core/api/middleware-api.js +196 -0
  131. package/lib/core/api/middleware-api.js.map +1 -0
  132. package/lib/core/api/plugin-api.d.ts +6 -0
  133. package/lib/core/api/plugin-api.d.ts.map +1 -0
  134. package/lib/core/api/plugin-api.js +78 -0
  135. package/lib/core/api/plugin-api.js.map +1 -0
  136. package/lib/core/api/preset-api.d.ts +6 -0
  137. package/lib/core/api/preset-api.d.ts.map +1 -0
  138. package/lib/core/api/preset-api.js +272 -0
  139. package/lib/core/api/preset-api.js.map +1 -0
  140. package/lib/core/api/settings-api.d.ts +6 -0
  141. package/lib/core/api/settings-api.d.ts.map +1 -0
  142. package/lib/core/api/settings-api.js +118 -0
  143. package/lib/core/api/settings-api.js.map +1 -0
  144. package/lib/core/api/task-api.d.ts +6 -0
  145. package/lib/core/api/task-api.d.ts.map +1 -0
  146. package/lib/core/api/task-api.js +281 -0
  147. package/lib/core/api/task-api.js.map +1 -0
  148. package/lib/core/channel.service.d.ts +44 -0
  149. package/lib/core/channel.service.d.ts.map +1 -0
  150. package/lib/core/channel.service.js +146 -0
  151. package/lib/core/channel.service.js.map +1 -0
  152. package/lib/core/config/config.service.d.ts +89 -0
  153. package/lib/core/config/config.service.d.ts.map +1 -0
  154. package/lib/core/config/config.service.js +216 -0
  155. package/lib/core/config/config.service.js.map +1 -0
  156. package/lib/core/config/index.d.ts +3 -0
  157. package/lib/core/config/index.d.ts.map +1 -0
  158. package/lib/core/config/index.js +3 -0
  159. package/lib/core/config/index.js.map +1 -0
  160. package/lib/core/error.d.ts +73 -0
  161. package/lib/core/error.d.ts.map +1 -0
  162. package/lib/core/error.js +137 -0
  163. package/lib/core/error.js.map +1 -0
  164. package/lib/core/index.d.ts +12 -0
  165. package/lib/core/index.d.ts.map +1 -0
  166. package/lib/core/index.js +23 -0
  167. package/lib/core/index.js.map +1 -0
  168. package/lib/core/logger.d.ts +18 -0
  169. package/lib/core/logger.d.ts.map +1 -0
  170. package/lib/core/logger.js +39 -0
  171. package/lib/core/logger.js.map +1 -0
  172. package/lib/core/medialuna.service.d.ts +168 -0
  173. package/lib/core/medialuna.service.d.ts.map +1 -0
  174. package/lib/core/medialuna.service.js +423 -0
  175. package/lib/core/medialuna.service.js.map +1 -0
  176. package/lib/core/pipeline/dependency-graph.d.ts +43 -0
  177. package/lib/core/pipeline/dependency-graph.d.ts.map +1 -0
  178. package/lib/core/pipeline/dependency-graph.js +223 -0
  179. package/lib/core/pipeline/dependency-graph.js.map +1 -0
  180. package/lib/core/pipeline/generation-pipeline.d.ts +40 -0
  181. package/lib/core/pipeline/generation-pipeline.d.ts.map +1 -0
  182. package/lib/core/pipeline/generation-pipeline.js +216 -0
  183. package/lib/core/pipeline/generation-pipeline.js.map +1 -0
  184. package/lib/core/pipeline/index.d.ts +4 -0
  185. package/lib/core/pipeline/index.d.ts.map +1 -0
  186. package/lib/core/pipeline/index.js +5 -0
  187. package/lib/core/pipeline/index.js.map +1 -0
  188. package/lib/core/pipeline/middleware-registry.d.ts +33 -0
  189. package/lib/core/pipeline/middleware-registry.d.ts.map +1 -0
  190. package/lib/core/pipeline/middleware-registry.js +78 -0
  191. package/lib/core/pipeline/middleware-registry.js.map +1 -0
  192. package/lib/core/plugin-loader.d.ts +77 -0
  193. package/lib/core/plugin-loader.d.ts.map +1 -0
  194. package/lib/core/plugin-loader.js +300 -0
  195. package/lib/core/plugin-loader.js.map +1 -0
  196. package/lib/core/registry/connector.registry.d.ts +36 -0
  197. package/lib/core/registry/connector.registry.d.ts.map +1 -0
  198. package/lib/core/registry/connector.registry.js +65 -0
  199. package/lib/core/registry/connector.registry.js.map +1 -0
  200. package/lib/core/registry/index.d.ts +3 -0
  201. package/lib/core/registry/index.d.ts.map +1 -0
  202. package/lib/core/registry/index.js +4 -0
  203. package/lib/core/registry/index.js.map +1 -0
  204. package/lib/core/registry/service.registry.d.ts +27 -0
  205. package/lib/core/registry/service.registry.d.ts.map +1 -0
  206. package/lib/core/registry/service.registry.js +54 -0
  207. package/lib/core/registry/service.registry.js.map +1 -0
  208. package/lib/core/request.service.d.ts +83 -0
  209. package/lib/core/request.service.d.ts.map +1 -0
  210. package/lib/core/request.service.js +237 -0
  211. package/lib/core/request.service.js.map +1 -0
  212. package/lib/core/types.d.ts +270 -0
  213. package/lib/core/types.d.ts.map +1 -0
  214. package/lib/core/types.js +17 -0
  215. package/lib/core/types.js.map +1 -0
  216. package/lib/database.d.ts +6 -0
  217. package/lib/database.d.ts.map +1 -0
  218. package/lib/database.js +89 -0
  219. package/lib/database.js.map +1 -0
  220. package/lib/index.d.ts +13 -0
  221. package/lib/index.d.ts.map +1 -0
  222. package/lib/index.js +54 -0
  223. package/lib/index.js.map +1 -0
  224. package/lib/middlewares/builtin/billing.d.ts +45 -0
  225. package/lib/middlewares/builtin/billing.d.ts.map +1 -0
  226. package/lib/middlewares/builtin/billing.js +362 -0
  227. package/lib/middlewares/builtin/billing.js.map +1 -0
  228. package/lib/middlewares/builtin/index.d.ts +6 -0
  229. package/lib/middlewares/builtin/index.d.ts.map +1 -0
  230. package/lib/middlewares/builtin/index.js +7 -0
  231. package/lib/middlewares/builtin/index.js.map +1 -0
  232. package/lib/middlewares/builtin/preset.d.ts +14 -0
  233. package/lib/middlewares/builtin/preset.d.ts.map +1 -0
  234. package/lib/middlewares/builtin/preset.js +156 -0
  235. package/lib/middlewares/builtin/preset.js.map +1 -0
  236. package/lib/middlewares/builtin/remote-preset-sync.d.ts +8 -0
  237. package/lib/middlewares/builtin/remote-preset-sync.d.ts.map +1 -0
  238. package/lib/middlewares/builtin/remote-preset-sync.js +32 -0
  239. package/lib/middlewares/builtin/remote-preset-sync.js.map +1 -0
  240. package/lib/middlewares/builtin/request.d.ts +10 -0
  241. package/lib/middlewares/builtin/request.d.ts.map +1 -0
  242. package/lib/middlewares/builtin/request.js +50 -0
  243. package/lib/middlewares/builtin/request.js.map +1 -0
  244. package/lib/middlewares/builtin/storage.d.ts +64 -0
  245. package/lib/middlewares/builtin/storage.d.ts.map +1 -0
  246. package/lib/middlewares/builtin/storage.js +715 -0
  247. package/lib/middlewares/builtin/storage.js.map +1 -0
  248. package/lib/middlewares/builtin/task-recorder.d.ts +20 -0
  249. package/lib/middlewares/builtin/task-recorder.d.ts.map +1 -0
  250. package/lib/middlewares/builtin/task-recorder.js +138 -0
  251. package/lib/middlewares/builtin/task-recorder.js.map +1 -0
  252. package/lib/middlewares/index.d.ts +2 -0
  253. package/lib/middlewares/index.d.ts.map +1 -0
  254. package/lib/middlewares/index.js +3 -0
  255. package/lib/middlewares/index.js.map +1 -0
  256. package/lib/pipeline/dependency-graph.d.ts +43 -0
  257. package/lib/pipeline/dependency-graph.d.ts.map +1 -0
  258. package/lib/pipeline/dependency-graph.js +240 -0
  259. package/lib/pipeline/dependency-graph.js.map +1 -0
  260. package/lib/pipeline/generation-pipeline.d.ts +38 -0
  261. package/lib/pipeline/generation-pipeline.d.ts.map +1 -0
  262. package/lib/pipeline/generation-pipeline.js +211 -0
  263. package/lib/pipeline/generation-pipeline.js.map +1 -0
  264. package/lib/pipeline/index.d.ts +4 -0
  265. package/lib/pipeline/index.d.ts.map +1 -0
  266. package/lib/pipeline/index.js +5 -0
  267. package/lib/pipeline/index.js.map +1 -0
  268. package/lib/pipeline/middleware-registry.d.ts +36 -0
  269. package/lib/pipeline/middleware-registry.d.ts.map +1 -0
  270. package/lib/pipeline/middleware-registry.js +83 -0
  271. package/lib/pipeline/middleware-registry.js.map +1 -0
  272. package/lib/plugins/billing/config.d.ts +19 -0
  273. package/lib/plugins/billing/config.d.ts.map +1 -0
  274. package/lib/plugins/billing/config.js +98 -0
  275. package/lib/plugins/billing/config.js.map +1 -0
  276. package/lib/plugins/billing/index.d.ts +4 -0
  277. package/lib/plugins/billing/index.d.ts.map +1 -0
  278. package/lib/plugins/billing/index.js +20 -0
  279. package/lib/plugins/billing/index.js.map +1 -0
  280. package/lib/plugins/billing/middleware.d.ts +12 -0
  281. package/lib/plugins/billing/middleware.d.ts.map +1 -0
  282. package/lib/plugins/billing/middleware.js +233 -0
  283. package/lib/plugins/billing/middleware.js.map +1 -0
  284. package/lib/plugins/cache/config.d.ts +44 -0
  285. package/lib/plugins/cache/config.d.ts.map +1 -0
  286. package/lib/plugins/cache/config.js +187 -0
  287. package/lib/plugins/cache/config.js.map +1 -0
  288. package/lib/plugins/cache/index.d.ts +6 -0
  289. package/lib/plugins/cache/index.d.ts.map +1 -0
  290. package/lib/plugins/cache/index.js +87 -0
  291. package/lib/plugins/cache/index.js.map +1 -0
  292. package/lib/plugins/cache/middleware.d.ts +12 -0
  293. package/lib/plugins/cache/middleware.d.ts.map +1 -0
  294. package/lib/plugins/cache/middleware.js +194 -0
  295. package/lib/plugins/cache/middleware.js.map +1 -0
  296. package/lib/plugins/cache/service.d.ts +106 -0
  297. package/lib/plugins/cache/service.d.ts.map +1 -0
  298. package/lib/plugins/cache/service.js +467 -0
  299. package/lib/plugins/cache/service.js.map +1 -0
  300. package/lib/plugins/cache/utils/index.d.ts +4 -0
  301. package/lib/plugins/cache/utils/index.d.ts.map +1 -0
  302. package/lib/plugins/cache/utils/index.js +5 -0
  303. package/lib/plugins/cache/utils/index.js.map +1 -0
  304. package/lib/plugins/cache/utils/mime.d.ts +9 -0
  305. package/lib/plugins/cache/utils/mime.d.ts.map +1 -0
  306. package/lib/plugins/cache/utils/mime.js +65 -0
  307. package/lib/plugins/cache/utils/mime.js.map +1 -0
  308. package/lib/plugins/cache/utils/s3.d.ts +19 -0
  309. package/lib/plugins/cache/utils/s3.d.ts.map +1 -0
  310. package/lib/plugins/cache/utils/s3.js +147 -0
  311. package/lib/plugins/cache/utils/s3.js.map +1 -0
  312. package/lib/plugins/cache/utils/webdav.d.ts +16 -0
  313. package/lib/plugins/cache/utils/webdav.d.ts.map +1 -0
  314. package/lib/plugins/cache/utils/webdav.js +69 -0
  315. package/lib/plugins/cache/utils/webdav.js.map +1 -0
  316. package/lib/plugins/connector-chat-api/index.d.ts +7 -0
  317. package/lib/plugins/connector-chat-api/index.d.ts.map +1 -0
  318. package/lib/plugins/connector-chat-api/index.js +400 -0
  319. package/lib/plugins/connector-chat-api/index.js.map +1 -0
  320. package/lib/plugins/connector-dalle/index.d.ts +7 -0
  321. package/lib/plugins/connector-dalle/index.d.ts.map +1 -0
  322. package/lib/plugins/connector-dalle/index.js +140 -0
  323. package/lib/plugins/connector-dalle/index.js.map +1 -0
  324. package/lib/plugins/connector-flux/index.d.ts +7 -0
  325. package/lib/plugins/connector-flux/index.d.ts.map +1 -0
  326. package/lib/plugins/connector-flux/index.js +232 -0
  327. package/lib/plugins/connector-flux/index.js.map +1 -0
  328. package/lib/plugins/connector-sd-webui/index.d.ts +7 -0
  329. package/lib/plugins/connector-sd-webui/index.d.ts.map +1 -0
  330. package/lib/plugins/connector-sd-webui/index.js +171 -0
  331. package/lib/plugins/connector-sd-webui/index.js.map +1 -0
  332. package/lib/plugins/index.d.ts +22 -0
  333. package/lib/plugins/index.d.ts.map +1 -0
  334. package/lib/plugins/index.js +21 -0
  335. package/lib/plugins/index.js.map +1 -0
  336. package/lib/plugins/preset/config.d.ts +37 -0
  337. package/lib/plugins/preset/config.d.ts.map +1 -0
  338. package/lib/plugins/preset/config.js +74 -0
  339. package/lib/plugins/preset/config.js.map +1 -0
  340. package/lib/plugins/preset/index.d.ts +6 -0
  341. package/lib/plugins/preset/index.d.ts.map +1 -0
  342. package/lib/plugins/preset/index.js +58 -0
  343. package/lib/plugins/preset/index.js.map +1 -0
  344. package/lib/plugins/preset/middleware.d.ts +6 -0
  345. package/lib/plugins/preset/middleware.d.ts.map +1 -0
  346. package/lib/plugins/preset/middleware.js +126 -0
  347. package/lib/plugins/preset/middleware.js.map +1 -0
  348. package/lib/plugins/preset/remote-sync.service.d.ts +84 -0
  349. package/lib/plugins/preset/remote-sync.service.d.ts.map +1 -0
  350. package/lib/plugins/preset/remote-sync.service.js +342 -0
  351. package/lib/plugins/preset/remote-sync.service.js.map +1 -0
  352. package/lib/plugins/preset/service.d.ts +64 -0
  353. package/lib/plugins/preset/service.d.ts.map +1 -0
  354. package/lib/plugins/preset/service.js +196 -0
  355. package/lib/plugins/preset/service.js.map +1 -0
  356. package/lib/plugins/prompt-encoding/config.d.ts +25 -0
  357. package/lib/plugins/prompt-encoding/config.d.ts.map +1 -0
  358. package/lib/plugins/prompt-encoding/config.js +62 -0
  359. package/lib/plugins/prompt-encoding/config.js.map +1 -0
  360. package/lib/plugins/prompt-encoding/index.d.ts +5 -0
  361. package/lib/plugins/prompt-encoding/index.d.ts.map +1 -0
  362. package/lib/plugins/prompt-encoding/index.js +21 -0
  363. package/lib/plugins/prompt-encoding/index.js.map +1 -0
  364. package/lib/plugins/prompt-encoding/middleware.d.ts +6 -0
  365. package/lib/plugins/prompt-encoding/middleware.d.ts.map +1 -0
  366. package/lib/plugins/prompt-encoding/middleware.js +151 -0
  367. package/lib/plugins/prompt-encoding/middleware.js.map +1 -0
  368. package/lib/plugins/task/config.d.ts +15 -0
  369. package/lib/plugins/task/config.d.ts.map +1 -0
  370. package/lib/plugins/task/config.js +33 -0
  371. package/lib/plugins/task/config.js.map +1 -0
  372. package/lib/plugins/task/index.d.ts +5 -0
  373. package/lib/plugins/task/index.d.ts.map +1 -0
  374. package/lib/plugins/task/index.js +58 -0
  375. package/lib/plugins/task/index.js.map +1 -0
  376. package/lib/plugins/task/middleware.d.ts +14 -0
  377. package/lib/plugins/task/middleware.d.ts.map +1 -0
  378. package/lib/plugins/task/middleware.js +123 -0
  379. package/lib/plugins/task/middleware.js.map +1 -0
  380. package/lib/plugins/task/service.d.ts +94 -0
  381. package/lib/plugins/task/service.d.ts.map +1 -0
  382. package/lib/plugins/task/service.js +226 -0
  383. package/lib/plugins/task/service.js.map +1 -0
  384. package/lib/plugins/webui-auth/config.d.ts +12 -0
  385. package/lib/plugins/webui-auth/config.d.ts.map +1 -0
  386. package/lib/plugins/webui-auth/config.js +30 -0
  387. package/lib/plugins/webui-auth/config.js.map +1 -0
  388. package/lib/plugins/webui-auth/index.d.ts +5 -0
  389. package/lib/plugins/webui-auth/index.d.ts.map +1 -0
  390. package/lib/plugins/webui-auth/index.js +99 -0
  391. package/lib/plugins/webui-auth/index.js.map +1 -0
  392. package/lib/plugins/webui-auth/service.d.ts +42 -0
  393. package/lib/plugins/webui-auth/service.d.ts.map +1 -0
  394. package/lib/plugins/webui-auth/service.js +106 -0
  395. package/lib/plugins/webui-auth/service.js.map +1 -0
  396. package/lib/services/asset-cache.service.d.ts +133 -0
  397. package/lib/services/asset-cache.service.d.ts.map +1 -0
  398. package/lib/services/asset-cache.service.js +882 -0
  399. package/lib/services/asset-cache.service.js.map +1 -0
  400. package/lib/services/cache.service.d.ts +110 -0
  401. package/lib/services/cache.service.d.ts.map +1 -0
  402. package/lib/services/cache.service.js +333 -0
  403. package/lib/services/cache.service.js.map +1 -0
  404. package/lib/services/channel.service.d.ts +44 -0
  405. package/lib/services/channel.service.d.ts.map +1 -0
  406. package/lib/services/channel.service.js +154 -0
  407. package/lib/services/channel.service.js.map +1 -0
  408. package/lib/services/config.service.d.ts +73 -0
  409. package/lib/services/config.service.d.ts.map +1 -0
  410. package/lib/services/config.service.js +171 -0
  411. package/lib/services/config.service.js.map +1 -0
  412. package/lib/services/index.d.ts +8 -0
  413. package/lib/services/index.d.ts.map +1 -0
  414. package/lib/services/index.js +9 -0
  415. package/lib/services/index.js.map +1 -0
  416. package/lib/services/medialuna.service.d.ts +173 -0
  417. package/lib/services/medialuna.service.d.ts.map +1 -0
  418. package/lib/services/medialuna.service.js +455 -0
  419. package/lib/services/medialuna.service.js.map +1 -0
  420. package/lib/services/preset.service.d.ts +69 -0
  421. package/lib/services/preset.service.d.ts.map +1 -0
  422. package/lib/services/preset.service.js +202 -0
  423. package/lib/services/preset.service.js.map +1 -0
  424. package/lib/services/remote-preset.service.d.ts +97 -0
  425. package/lib/services/remote-preset.service.d.ts.map +1 -0
  426. package/lib/services/remote-preset.service.js +212 -0
  427. package/lib/services/remote-preset.service.js.map +1 -0
  428. package/lib/services/task.service.d.ts +57 -0
  429. package/lib/services/task.service.d.ts.map +1 -0
  430. package/lib/services/task.service.js +138 -0
  431. package/lib/services/task.service.js.map +1 -0
  432. package/lib/types/index.d.ts +357 -0
  433. package/lib/types/index.d.ts.map +1 -0
  434. package/lib/types/index.js +21 -0
  435. package/lib/types/index.js.map +1 -0
  436. package/package.json +66 -0
  437. package/readme.md +326 -0
@@ -0,0 +1,202 @@
1
+ // 预设服务
2
+ /**
3
+ * 预设服务
4
+ *
5
+ * 管理预设的 CRUD 操作
6
+ */
7
+ export class PresetService {
8
+ _ctx;
9
+ constructor(ctx) {
10
+ this._ctx = ctx;
11
+ }
12
+ /** 将数据库记录转换为 PresetData */
13
+ _toData(record) {
14
+ return {
15
+ id: record.id,
16
+ name: record.name,
17
+ promptTemplate: record.promptTemplate,
18
+ tags: JSON.parse(record.tags || '[]'),
19
+ referenceImages: JSON.parse(record.referenceImages || '[]'),
20
+ parameterOverrides: JSON.parse(record.parameterOverrides || '{}'),
21
+ source: record.source,
22
+ enabled: record.enabled,
23
+ // 远程同步字段
24
+ remoteId: record.remoteId,
25
+ remoteUrl: record.remoteUrl,
26
+ thumbnail: record.thumbnail
27
+ };
28
+ }
29
+ /** 获取所有预设 */
30
+ async list() {
31
+ const records = await this._ctx.database.get('medialuna_preset', {});
32
+ return records.map(r => this._toData(r));
33
+ }
34
+ /** 获取启用的预设 */
35
+ async listEnabled() {
36
+ const records = await this._ctx.database.get('medialuna_preset', { enabled: true });
37
+ return records.map(r => this._toData(r));
38
+ }
39
+ /** 根据 ID 获取预设 */
40
+ async getById(id) {
41
+ const records = await this._ctx.database.get('medialuna_preset', { id });
42
+ return records.length > 0 ? this._toData(records[0]) : null;
43
+ }
44
+ /** 根据名称获取预设 */
45
+ async getByName(name) {
46
+ const records = await this._ctx.database.get('medialuna_preset', { name });
47
+ return records.length > 0 ? this._toData(records[0]) : null;
48
+ }
49
+ /** 根据远程 ID 和 URL 获取预设(用于同步) */
50
+ async getByRemoteId(remoteId, remoteUrl) {
51
+ const records = await this._ctx.database.get('medialuna_preset', { remoteId, remoteUrl });
52
+ return records.length > 0 ? this._toData(records[0]) : null;
53
+ }
54
+ /** 获取指定远程源的所有预设 */
55
+ async listByRemoteUrl(remoteUrl) {
56
+ const records = await this._ctx.database.get('medialuna_preset', { remoteUrl, source: 'api' });
57
+ return records.map(r => this._toData(r));
58
+ }
59
+ /**
60
+ * 根据标签获取预设(匹配任意一个标签)
61
+ * 用于 Koishi 层指令注册:通过 tag 匹配规则注册 渠道名.预设名 指令
62
+ */
63
+ async getByTags(tags) {
64
+ const records = await this._ctx.database.get('medialuna_preset', { enabled: true });
65
+ return records
66
+ .map(r => this._toData(r))
67
+ .filter(p => tags.some(tag => p.tags.includes(tag)));
68
+ }
69
+ /**
70
+ * 根据标签获取预设(匹配所有标签)
71
+ */
72
+ async getByAllTags(tags) {
73
+ const records = await this._ctx.database.get('medialuna_preset', { enabled: true });
74
+ return records
75
+ .map(r => this._toData(r))
76
+ .filter(p => tags.every(tag => p.tags.includes(tag)));
77
+ }
78
+ /** 获取所有唯一标签 */
79
+ async getAllTags() {
80
+ const records = await this._ctx.database.get('medialuna_preset', {});
81
+ const tagSet = new Set();
82
+ for (const record of records) {
83
+ const tags = JSON.parse(record.tags || '[]');
84
+ tags.forEach(tag => tagSet.add(tag));
85
+ }
86
+ return Array.from(tagSet).sort();
87
+ }
88
+ /**
89
+ * 根据渠道标签获取匹配的预设
90
+ * 用于自动匹配:渠道和预设共享相同的 tag 时可以组合
91
+ */
92
+ async getMatchingPresets(channelTags) {
93
+ if (channelTags.length === 0) {
94
+ // 如果渠道没有标签,返回所有启用的预设
95
+ return this.listEnabled();
96
+ }
97
+ return this.getByTags(channelTags);
98
+ }
99
+ /**
100
+ * 生成唯一名称
101
+ * 如果名称已存在,自动添加数字后缀
102
+ */
103
+ async _generateUniqueName(baseName, excludeId) {
104
+ let name = baseName;
105
+ let counter = 1;
106
+ while (true) {
107
+ const existing = await this.getByName(name);
108
+ if (!existing || existing.id === excludeId) {
109
+ return name;
110
+ }
111
+ counter++;
112
+ name = `${baseName}-${counter}`;
113
+ }
114
+ }
115
+ /** 创建预设 */
116
+ async create(data) {
117
+ const now = new Date();
118
+ // 自动处理名称冲突
119
+ const uniqueName = await this._generateUniqueName(data.name);
120
+ const record = await this._ctx.database.create('medialuna_preset', {
121
+ name: uniqueName,
122
+ displayName: uniqueName, // 保持数据库兼容
123
+ promptTemplate: data.promptTemplate,
124
+ tags: JSON.stringify(data.tags),
125
+ referenceImages: JSON.stringify(data.referenceImages),
126
+ parameterOverrides: JSON.stringify(data.parameterOverrides),
127
+ source: data.source,
128
+ enabled: data.enabled,
129
+ // 远程同步字段
130
+ remoteId: data.remoteId,
131
+ remoteUrl: data.remoteUrl,
132
+ thumbnail: data.thumbnail,
133
+ createdAt: now,
134
+ updatedAt: now
135
+ });
136
+ return this._toData(record);
137
+ }
138
+ /** 更新预设 */
139
+ async update(id, data) {
140
+ const existing = await this.getById(id);
141
+ if (!existing)
142
+ return null;
143
+ const updateData = {
144
+ updatedAt: new Date()
145
+ };
146
+ if (data.name !== undefined) {
147
+ // 如果名称变更,检查唯一性
148
+ const uniqueName = await this._generateUniqueName(data.name, id);
149
+ updateData.name = uniqueName;
150
+ updateData.displayName = uniqueName; // 保持数据库兼容
151
+ }
152
+ if (data.promptTemplate !== undefined)
153
+ updateData.promptTemplate = data.promptTemplate;
154
+ if (data.tags !== undefined)
155
+ updateData.tags = JSON.stringify(data.tags);
156
+ if (data.referenceImages !== undefined)
157
+ updateData.referenceImages = JSON.stringify(data.referenceImages);
158
+ if (data.parameterOverrides !== undefined)
159
+ updateData.parameterOverrides = JSON.stringify(data.parameterOverrides);
160
+ if (data.source !== undefined)
161
+ updateData.source = data.source;
162
+ if (data.enabled !== undefined)
163
+ updateData.enabled = data.enabled;
164
+ // 远程同步字段
165
+ if (data.remoteId !== undefined)
166
+ updateData.remoteId = data.remoteId;
167
+ if (data.remoteUrl !== undefined)
168
+ updateData.remoteUrl = data.remoteUrl;
169
+ if (data.thumbnail !== undefined)
170
+ updateData.thumbnail = data.thumbnail;
171
+ await this._ctx.database.set('medialuna_preset', { id }, updateData);
172
+ return this.getById(id);
173
+ }
174
+ /** 删除预设 */
175
+ async delete(id) {
176
+ const existing = await this.getById(id);
177
+ if (!existing)
178
+ return false;
179
+ await this._ctx.database.remove('medialuna_preset', { id });
180
+ return true;
181
+ }
182
+ /** 批量导入预设(用于 API 同步) */
183
+ async bulkUpsert(presets, source = 'api') {
184
+ let count = 0;
185
+ for (const preset of presets) {
186
+ const existing = await this.getByName(preset.name);
187
+ if (existing) {
188
+ // 只更新 API 来源的预设
189
+ if (existing.source === 'api') {
190
+ await this.update(existing.id, { ...preset, source });
191
+ count++;
192
+ }
193
+ }
194
+ else {
195
+ await this.create({ ...preset, source });
196
+ count++;
197
+ }
198
+ }
199
+ return count;
200
+ }
201
+ }
202
+ //# sourceMappingURL=preset.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preset.service.js","sourceRoot":"","sources":["../../src/services/preset.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ import { Context, Logger } from 'koishi';
2
+ import { PresetService, PresetData } from './preset.service';
3
+ import { AssetCacheService } from './asset-cache.service';
4
+ /** 远程 API 返回的模板数据 */
5
+ interface RemoteTemplate {
6
+ id: number;
7
+ title: string;
8
+ prompt: string;
9
+ type: string;
10
+ tags: string[];
11
+ category: string;
12
+ file_path: string;
13
+ thumbnail_path: string;
14
+ refs: Array<{
15
+ id: number;
16
+ file_path: string;
17
+ is_placeholder: boolean;
18
+ position: number;
19
+ }>;
20
+ created_at: string;
21
+ description?: string;
22
+ author?: string;
23
+ heat_score?: number;
24
+ }
25
+ /** 同步结果 */
26
+ export interface SyncResult {
27
+ success: boolean;
28
+ created: number;
29
+ updated: number;
30
+ deleted: number;
31
+ errors: string[];
32
+ }
33
+ /** 同步配置 */
34
+ export interface RemotePresetConfig {
35
+ /** 远程 API URL */
36
+ apiUrl: string;
37
+ /** 是否启用自动同步 */
38
+ autoSync: boolean;
39
+ /** 自动同步间隔(分钟) */
40
+ syncInterval: number;
41
+ /** 同步时是否删除远程已移除的预设 */
42
+ deleteRemoved: boolean;
43
+ /** 缩略图下载延迟(毫秒),用于限流,默认 100ms */
44
+ thumbnailDelay?: number;
45
+ }
46
+ /**
47
+ * 远程预设同步服务
48
+ *
49
+ * 负责从远程 API 拉取模板并同步到本地预设
50
+ */
51
+ export declare class RemotePresetService {
52
+ private _ctx;
53
+ private _logger;
54
+ private _presetService;
55
+ private _assetCacheService;
56
+ private _syncTimer;
57
+ constructor(ctx: Context, logger: Logger, presetService: PresetService);
58
+ /**
59
+ * 设置资源缓存服务(可选)
60
+ * 如果设置了,同步时会自动缓存缩略图
61
+ */
62
+ setAssetCacheService(service: AssetCacheService): void;
63
+ /**
64
+ * 延迟辅助函数(用于限流)
65
+ */
66
+ private _delay;
67
+ /**
68
+ * 从远程 API 拉取模板列表
69
+ */
70
+ fetchRemoteTemplates(apiUrl: string): Promise<RemoteTemplate[]>;
71
+ /**
72
+ * 将远程模板转换为本地预设数据
73
+ * 如果启用了资源缓存,会自动缓存缩略图
74
+ */
75
+ transformToPreset(template: RemoteTemplate, remoteUrl: string): Promise<Omit<PresetData, 'id'>>;
76
+ /**
77
+ * 执行同步
78
+ * @param apiUrl API 地址
79
+ * @param deleteRemoved 是否删除远程已移除的预设
80
+ * @param thumbnailDelay 缩略图下载延迟(毫秒),用于限流
81
+ */
82
+ sync(apiUrl: string, deleteRemoved?: boolean, thumbnailDelay?: number): Promise<SyncResult>;
83
+ /**
84
+ * 启动定时同步
85
+ */
86
+ startAutoSync(config: RemotePresetConfig): void;
87
+ /**
88
+ * 停止定时同步
89
+ */
90
+ stopAutoSync(): void;
91
+ /**
92
+ * 销毁服务
93
+ */
94
+ dispose(): void;
95
+ }
96
+ export {};
97
+ //# sourceMappingURL=remote-preset.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-preset.service.d.ts","sourceRoot":"","sources":["../../src/services/remote-preset.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAEzD,qBAAqB;AACrB,UAAU,cAAc;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,IAAI,EAAE,KAAK,CAAC;QACV,EAAE,EAAE,MAAM,CAAA;QACV,SAAS,EAAE,MAAM,CAAA;QACjB,cAAc,EAAE,OAAO,CAAA;QACvB,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAC,CAAA;IACF,UAAU,EAAE,MAAM,CAAA;IAElB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAcD,WAAW;AACX,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,WAAW;AACX,MAAM,WAAW,kBAAkB;IACjC,iBAAiB;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,eAAe;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,iBAAiB;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,sBAAsB;IACtB,aAAa,EAAE,OAAO,CAAA;IACtB,gCAAgC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;;;GAIG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,cAAc,CAAe;IACrC,OAAO,CAAC,kBAAkB,CAAiC;IAC3D,OAAO,CAAC,UAAU,CAA8B;gBAEpC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa;IAMtE;;;OAGG;IACH,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAItD;;OAEG;IACH,OAAO,CAAC,MAAM;IAId;;OAEG;IACG,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAiBrE;;;OAGG;IACG,iBAAiB,CAAC,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAyCrG;;;;;OAKG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,GAAE,OAAe,EAAE,cAAc,GAAE,MAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAoF7G;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAwB/C;;OAEG;IACH,YAAY,IAAI,IAAI;IAQpB;;OAEG;IACH,OAAO,IAAI,IAAI;CAGhB"}
@@ -0,0 +1,212 @@
1
+ // 远程预设同步服务
2
+ /**
3
+ * 远程预设同步服务
4
+ *
5
+ * 负责从远程 API 拉取模板并同步到本地预设
6
+ */
7
+ export class RemotePresetService {
8
+ _ctx;
9
+ _logger;
10
+ _presetService;
11
+ _assetCacheService = null;
12
+ _syncTimer = null;
13
+ constructor(ctx, logger, presetService) {
14
+ this._ctx = ctx;
15
+ this._logger = logger;
16
+ this._presetService = presetService;
17
+ }
18
+ /**
19
+ * 设置资源缓存服务(可选)
20
+ * 如果设置了,同步时会自动缓存缩略图
21
+ */
22
+ setAssetCacheService(service) {
23
+ this._assetCacheService = service;
24
+ }
25
+ /**
26
+ * 延迟辅助函数(用于限流)
27
+ */
28
+ _delay(ms) {
29
+ return new Promise(resolve => setTimeout(resolve, ms));
30
+ }
31
+ /**
32
+ * 从远程 API 拉取模板列表
33
+ */
34
+ async fetchRemoteTemplates(apiUrl) {
35
+ try {
36
+ const response = await this._ctx.http.get(apiUrl, {
37
+ timeout: 30000
38
+ });
39
+ if (response.code !== 200) {
40
+ throw new Error(`API returned error: ${response.message}`);
41
+ }
42
+ return response.data || [];
43
+ }
44
+ catch (error) {
45
+ this._logger.error('Failed to fetch remote templates:', error);
46
+ throw error;
47
+ }
48
+ }
49
+ /**
50
+ * 将远程模板转换为本地预设数据
51
+ * 如果启用了资源缓存,会自动缓存缩略图
52
+ */
53
+ async transformToPreset(template, remoteUrl) {
54
+ // 提取参考图(非占位符的 refs)
55
+ const referenceImages = template.refs
56
+ .filter(ref => !ref.is_placeholder)
57
+ .sort((a, b) => a.position - b.position)
58
+ .map(ref => ref.file_path);
59
+ // 合并 type 和 tags 作为标签
60
+ const tags = [...new Set([template.type, ...template.tags].filter(Boolean))];
61
+ // 处理缩略图
62
+ let thumbnail = template.thumbnail_path || template.file_path;
63
+ // 如果启用了资源缓存,尝试缓存缩略图
64
+ if (this._assetCacheService && thumbnail) {
65
+ try {
66
+ const cacheResult = await this._assetCacheService.cacheAsset(thumbnail);
67
+ thumbnail = cacheResult.cachedUrl;
68
+ if (!cacheResult.fromCache) {
69
+ this._logger.debug(`Cached thumbnail for template ${template.id}: ${cacheResult.cachedUrl}`);
70
+ }
71
+ }
72
+ catch (e) {
73
+ // 缓存失败,使用原始 URL
74
+ this._logger.warn(`Failed to cache thumbnail for template ${template.id}:`, e);
75
+ }
76
+ }
77
+ return {
78
+ name: template.title,
79
+ promptTemplate: template.prompt,
80
+ tags,
81
+ referenceImages,
82
+ parameterOverrides: {},
83
+ source: 'api',
84
+ enabled: true,
85
+ remoteId: template.id,
86
+ remoteUrl,
87
+ thumbnail
88
+ };
89
+ }
90
+ /**
91
+ * 执行同步
92
+ * @param apiUrl API 地址
93
+ * @param deleteRemoved 是否删除远程已移除的预设
94
+ * @param thumbnailDelay 缩略图下载延迟(毫秒),用于限流
95
+ */
96
+ async sync(apiUrl, deleteRemoved = false, thumbnailDelay = 100) {
97
+ const result = {
98
+ success: false,
99
+ created: 0,
100
+ updated: 0,
101
+ deleted: 0,
102
+ errors: []
103
+ };
104
+ try {
105
+ this._logger.info(`Starting sync from: ${apiUrl}`);
106
+ // 拉取远程模板
107
+ const remoteTemplates = await this.fetchRemoteTemplates(apiUrl);
108
+ this._logger.info(`Fetched ${remoteTemplates.length} templates from remote`);
109
+ // 获取当前该来源的本地预设
110
+ const localPresets = await this._presetService.listByRemoteUrl(apiUrl);
111
+ const localRemoteIds = new Set(localPresets.map(p => p.remoteId));
112
+ const remoteIds = new Set(remoteTemplates.map(t => t.id));
113
+ // 处理每个远程模板(带限流)
114
+ const total = remoteTemplates.length;
115
+ for (let i = 0; i < total; i++) {
116
+ const template = remoteTemplates[i];
117
+ try {
118
+ const presetData = await this.transformToPreset(template, apiUrl);
119
+ const existing = await this._presetService.getByRemoteId(template.id, apiUrl);
120
+ if (existing) {
121
+ // 比较更新时间,决定是否更新
122
+ const remoteTime = new Date(template.created_at).getTime();
123
+ // 注意:这里我们没有 updatedAt 在 PresetData 中,所以每次都更新
124
+ // 实际可以通过比较 promptTemplate 等内容来决定是否更新
125
+ await this._presetService.update(existing.id, presetData);
126
+ result.updated++;
127
+ }
128
+ else {
129
+ await this._presetService.create(presetData);
130
+ result.created++;
131
+ }
132
+ // 每 10 个模板打印一次进度
133
+ if ((i + 1) % 10 === 0 || i === total - 1) {
134
+ this._logger.info(`Sync progress: ${i + 1}/${total} templates processed`);
135
+ }
136
+ // 限流:等待一小段时间再处理下一个(避免对远程服务器造成压力)
137
+ if (thumbnailDelay > 0 && i < total - 1) {
138
+ await this._delay(thumbnailDelay);
139
+ }
140
+ }
141
+ catch (error) {
142
+ const message = `Failed to sync template ${template.id}: ${error instanceof Error ? error.message : String(error)}`;
143
+ result.errors.push(message);
144
+ this._logger.warn(message);
145
+ }
146
+ }
147
+ // 删除远程已移除的预设
148
+ if (deleteRemoved) {
149
+ for (const preset of localPresets) {
150
+ if (preset.remoteId && !remoteIds.has(preset.remoteId)) {
151
+ try {
152
+ await this._presetService.delete(preset.id);
153
+ result.deleted++;
154
+ this._logger.debug(`Deleted preset: ${preset.name}`);
155
+ }
156
+ catch (error) {
157
+ const message = `Failed to delete preset ${preset.id}: ${error instanceof Error ? error.message : String(error)}`;
158
+ result.errors.push(message);
159
+ }
160
+ }
161
+ }
162
+ }
163
+ result.success = result.errors.length === 0;
164
+ this._logger.info(`Sync completed: ${result.created} created, ${result.updated} updated, ${result.deleted} deleted`);
165
+ return result;
166
+ }
167
+ catch (error) {
168
+ result.errors.push(error instanceof Error ? error.message : String(error));
169
+ this._logger.error('Sync failed:', error);
170
+ return result;
171
+ }
172
+ }
173
+ /**
174
+ * 启动定时同步
175
+ */
176
+ startAutoSync(config) {
177
+ this.stopAutoSync();
178
+ if (!config.autoSync || config.syncInterval <= 0) {
179
+ return;
180
+ }
181
+ const intervalMs = config.syncInterval * 60 * 1000;
182
+ const delay = config.thumbnailDelay ?? 100;
183
+ this._logger.info(`Starting auto sync every ${config.syncInterval} minutes (thumbnail delay: ${delay}ms)`);
184
+ // 立即执行一次同步
185
+ this.sync(config.apiUrl, config.deleteRemoved, delay).catch(e => {
186
+ this._logger.error('Initial sync failed:', e);
187
+ });
188
+ // 设置定时器
189
+ this._syncTimer = setInterval(() => {
190
+ this.sync(config.apiUrl, config.deleteRemoved, delay).catch(e => {
191
+ this._logger.error('Scheduled sync failed:', e);
192
+ });
193
+ }, intervalMs);
194
+ }
195
+ /**
196
+ * 停止定时同步
197
+ */
198
+ stopAutoSync() {
199
+ if (this._syncTimer) {
200
+ clearInterval(this._syncTimer);
201
+ this._syncTimer = null;
202
+ this._logger.info('Auto sync stopped');
203
+ }
204
+ }
205
+ /**
206
+ * 销毁服务
207
+ */
208
+ dispose() {
209
+ this.stopAutoSync();
210
+ }
211
+ }
212
+ //# sourceMappingURL=remote-preset.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-preset.service.js","sourceRoot":"","sources":["../../src/services/remote-preset.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import { Context } from 'koishi';
2
+ import { GenerationRequest, OutputAsset } from '../types';
3
+ /** 任务状态 */
4
+ export type TaskStatus = 'pending' | 'processing' | 'success' | 'failed';
5
+ /** 任务数据 */
6
+ export interface TaskData {
7
+ id: number;
8
+ userId: number | null;
9
+ channelId: number;
10
+ requestSnapshot: GenerationRequest;
11
+ responseSnapshot: OutputAsset[] | null;
12
+ status: TaskStatus;
13
+ middlewareLogs: Record<string, any>;
14
+ startTime: Date;
15
+ endTime: Date | null;
16
+ duration: number | null;
17
+ }
18
+ /** 任务查询选项 */
19
+ export interface TaskQueryOptions {
20
+ userId?: number;
21
+ channelId?: number;
22
+ status?: TaskStatus;
23
+ limit?: number;
24
+ offset?: number;
25
+ }
26
+ /**
27
+ * 任务服务
28
+ *
29
+ * 管理任务记录的 CRUD 操作
30
+ */
31
+ export declare class TaskService {
32
+ private _ctx;
33
+ constructor(ctx: Context);
34
+ /** 将数据库记录转换为 TaskData */
35
+ private _toData;
36
+ /** 创建任务 */
37
+ create(userId: number | null, channelId: number, request: GenerationRequest): Promise<TaskData>;
38
+ /** 更新任务状态 */
39
+ updateStatus(id: number, status: TaskStatus, options?: {
40
+ responseSnapshot?: OutputAsset[];
41
+ inputSnapshot?: OutputAsset[];
42
+ middlewareLogs?: Record<string, any>;
43
+ }): Promise<TaskData | null>;
44
+ /** 根据 ID 获取任务 */
45
+ getById(id: number): Promise<TaskData | null>;
46
+ /** 查询任务列表 */
47
+ query(options?: TaskQueryOptions): Promise<TaskData[]>;
48
+ /** 获取用户最近的任务 */
49
+ getRecentByUser(userId: number, limit?: number): Promise<TaskData[]>;
50
+ /** 统计任务数量 */
51
+ count(options?: Omit<TaskQueryOptions, 'limit' | 'offset'>): Promise<number>;
52
+ /** 删除任务 */
53
+ delete(id: number): Promise<boolean>;
54
+ /** 清理旧任务 */
55
+ cleanup(beforeDate: Date): Promise<number>;
56
+ }
57
+ //# sourceMappingURL=task.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.service.d.ts","sourceRoot":"","sources":["../../src/services/task.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEhC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAEzD,WAAW;AACX,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAA;AAExE,WAAW;AACX,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,iBAAiB,CAAA;IAClC,gBAAgB,EAAE,WAAW,EAAE,GAAG,IAAI,CAAA;IACtC,MAAM,EAAE,UAAU,CAAA;IAClB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACnC,SAAS,EAAE,IAAI,CAAA;IACf,OAAO,EAAE,IAAI,GAAG,IAAI,CAAA;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,aAAa;AACb,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAAS;gBAET,GAAG,EAAE,OAAO;IAIxB,yBAAyB;IACzB,OAAO,CAAC,OAAO;IAef,WAAW;IACL,MAAM,CACV,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,QAAQ,CAAC;IAkBpB,aAAa;IACP,YAAY,CAChB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE;QACR,gBAAgB,CAAC,EAAE,WAAW,EAAE,CAAA;QAChC,aAAa,CAAC,EAAE,WAAW,EAAE,CAAA;QAC7B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KACrC,GACA,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAkC3B,iBAAiB;IACX,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAKnD,aAAa;IACP,KAAK,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAsBhE,gBAAgB;IACV,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAI9E,aAAa;IACP,KAAK,CAAC,OAAO,GAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,QAAQ,CAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBtF,WAAW;IACL,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ1C,YAAY;IACN,OAAO,CAAC,UAAU,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;CAejD"}