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,168 @@
1
+ import { Context, Service } from 'koishi';
2
+ import type { ConnectorDefinition, MiddlewareDefinition } from './types';
3
+ import type { FrontendExtension, GenerationRequest, GenerationResult, ChannelConfig, SettingsPanelDefinition, SettingsPanelInfo } from '../types';
4
+ import { PluginLoader } from './plugin-loader';
5
+ import { ConfigService } from './config';
6
+ import { ConnectorRegistry } from './registry';
7
+ import { MiddlewareRegistry } from './pipeline';
8
+ import { ChannelService } from './channel.service';
9
+ import type { PresetService } from '../plugins/preset';
10
+ import type { RemoteSyncService } from '../plugins/preset';
11
+ import type { TaskService } from '../plugins/task';
12
+ import type { CacheService } from '../plugins/cache';
13
+ /** 远程预设配置(从 PresetPluginConfig 中提取的配置项) */
14
+ export interface RemotePresetConfig {
15
+ apiUrl: string;
16
+ autoSync: boolean;
17
+ syncInterval: number;
18
+ deleteRemoved: boolean;
19
+ thumbnailDelay?: number;
20
+ }
21
+ /**
22
+ * MediaLunaService - Media Luna 主服务
23
+ *
24
+ * 提供给其他 Koishi 插件的统一 API
25
+ */
26
+ export declare class MediaLunaService extends Service {
27
+ static inject: string[];
28
+ private _logger;
29
+ private _connectorRegistry;
30
+ private _middlewareRegistry;
31
+ private _frontendExtensions;
32
+ private _settingsPanels;
33
+ private _pipeline;
34
+ private _channelService;
35
+ private _configService;
36
+ private _pluginLoader;
37
+ private _serviceRegistry;
38
+ private _requestService;
39
+ constructor(ctx: Context);
40
+ private static readonly DEFAULT_MIDDLEWARES_CONFIG;
41
+ /** 注册默认配置 */
42
+ private _registerDefaultConfigs;
43
+ /** 加载内置插件 */
44
+ private _loadBuiltinPlugins;
45
+ /** 注册内置设置面板 */
46
+ private _registerBuiltinSettingsPanels;
47
+ /**
48
+ * 注册连接器
49
+ * @returns 注销函数
50
+ */
51
+ registerConnector(connector: ConnectorDefinition): () => void;
52
+ /**
53
+ * 注册中间件
54
+ * @returns 注销函数
55
+ */
56
+ registerMiddleware(middleware: MiddlewareDefinition): () => void;
57
+ /**
58
+ * 注册前端扩展
59
+ * @returns 注销函数
60
+ */
61
+ registerFrontendExtension(extension: FrontendExtension): () => void;
62
+ /**
63
+ * 注册设置面板
64
+ * @returns 注销函数
65
+ */
66
+ registerSettingsPanel(panel: SettingsPanelDefinition): () => void;
67
+ /**
68
+ * 执行生成请求
69
+ */
70
+ generate(request: GenerationRequest): Promise<GenerationResult>;
71
+ /** 连接器注册中心 */
72
+ get connectors(): ConnectorRegistry;
73
+ /** 中间件注册中心 */
74
+ get middlewares(): MiddlewareRegistry;
75
+ /** 渠道服务 */
76
+ get channels(): ChannelService;
77
+ /** 预设服务(通过插件提供) */
78
+ get presets(): PresetService | undefined;
79
+ /** 任务服务(通过插件提供) */
80
+ get tasks(): TaskService | undefined;
81
+ /** 缓存服务(通过插件提供) */
82
+ get cache(): CacheService | undefined;
83
+ /** 远程预设同步服务(通过插件提供) */
84
+ get remotePresets(): RemoteSyncService | undefined;
85
+ /** 插件加载器 */
86
+ get pluginLoader(): PluginLoader;
87
+ /** 获取服务(供中间件使用) */
88
+ getService<T>(name: string): T | undefined;
89
+ /**
90
+ * 获取插件信息列表
91
+ */
92
+ getPluginInfos(): Array<{
93
+ id: string;
94
+ name: string;
95
+ description?: string;
96
+ version?: string;
97
+ enabled: boolean;
98
+ configFields: import('../types').ConfigField[];
99
+ config: Record<string, any>;
100
+ actions: Array<{
101
+ name: string;
102
+ label: string;
103
+ type?: string;
104
+ icon?: string;
105
+ apiEvent: string;
106
+ }>;
107
+ middlewares: Array<{
108
+ name: string;
109
+ displayName: string;
110
+ phase: string;
111
+ enabled: boolean;
112
+ }>;
113
+ connector?: {
114
+ id: string;
115
+ name: string;
116
+ supportedTypes: string[];
117
+ };
118
+ }>;
119
+ /** 前端扩展列表 */
120
+ get frontendExtensions(): FrontendExtension[];
121
+ /** 设置面板列表(按 order 排序) */
122
+ get settingsPanels(): SettingsPanelDefinition[];
123
+ /** 获取设置面板完整信息(包含配置数据) */
124
+ getSettingsPanelInfos(): Promise<SettingsPanelInfo[]>;
125
+ /**
126
+ * 获取渠道-预设组合列表(用于 Koishi 层指令注册)
127
+ */
128
+ getChannelPresetCombinations(): Promise<Array<{
129
+ channel: ChannelConfig;
130
+ presets: Array<{
131
+ name: string;
132
+ }>;
133
+ }>>;
134
+ /**
135
+ * 根据渠道名和可选预设名执行生成
136
+ */
137
+ generateByName(options: {
138
+ channelName: string;
139
+ presetName?: string;
140
+ prompt: string;
141
+ files?: import('../types').FileData[];
142
+ session?: import('koishi').Session | null;
143
+ uid?: number;
144
+ }): Promise<GenerationResult>;
145
+ /** 获取中间件配置(从插件配置获取) */
146
+ private _getMiddlewareConfig;
147
+ /** 检查中间件是否启用 */
148
+ private _isMiddlewareEnabled;
149
+ /** 设置中间件配置(保存到 YAML 配置文件) */
150
+ setMiddlewareConfig(name: string, config: Record<string, any>, enabled?: boolean): void;
151
+ /** 获取中间件完整配置(包含 enabled 和 config) */
152
+ getMiddlewareConfig(name: string): {
153
+ enabled: boolean;
154
+ config: Record<string, any>;
155
+ };
156
+ /** 获取所有中间件配置 */
157
+ getAllMiddlewareConfigs(): Record<string, {
158
+ enabled?: boolean;
159
+ config?: Record<string, any>;
160
+ }>;
161
+ /** 获取远程预设配置(从 preset 插件配置中读取) */
162
+ getRemotePresetConfig(): Promise<RemotePresetConfig>;
163
+ /** 设置远程预设配置(更新 preset 插件配置) */
164
+ setRemotePresetConfig(config: Partial<RemotePresetConfig>): Promise<void>;
165
+ /** 配置服务 */
166
+ get configService(): ConfigService;
167
+ }
168
+ //# sourceMappingURL=medialuna.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"medialuna.service.d.ts","sourceRoot":"","sources":["../../src/core/medialuna.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,423 @@
1
+ // MediaLunaService - 主服务
2
+ import { Service } from 'koishi';
3
+ import { PluginLoader } from './plugin-loader';
4
+ import { ConfigService } from './config';
5
+ import { ServiceRegistry, ConnectorRegistry } from './registry';
6
+ import { MiddlewareRegistry, GenerationPipeline } from './pipeline';
7
+ import { RequestService, createRequestMiddleware } from './request.service';
8
+ import { ChannelService } from './channel.service';
9
+ // 导入内置插件
10
+ import { cachePlugin, presetPlugin, billingPlugin, taskPlugin, promptEncodingPlugin, webuiAuthPlugin, dalleConnectorPlugin, sdWebuiConnectorPlugin, fluxConnectorPlugin, chatApiConnectorPlugin } from '../plugins';
11
+ import { defaultPresetConfig } from '../plugins/preset/config';
12
+ /**
13
+ * MediaLunaService - Media Luna 主服务
14
+ *
15
+ * 提供给其他 Koishi 插件的统一 API
16
+ */
17
+ export class MediaLunaService extends Service {
18
+ static inject = ['database'];
19
+ _logger;
20
+ _connectorRegistry;
21
+ _middlewareRegistry;
22
+ _frontendExtensions = new Map();
23
+ _settingsPanels = new Map();
24
+ _pipeline;
25
+ // 业务服务
26
+ _channelService;
27
+ _configService;
28
+ // 插件系统
29
+ _pluginLoader;
30
+ _serviceRegistry;
31
+ _requestService;
32
+ constructor(ctx) {
33
+ super(ctx, 'mediaLuna', true);
34
+ this._logger = ctx.logger('media-luna');
35
+ // 初始化核心配置和服务注册中心
36
+ this._configService = new ConfigService(ctx, { configDir: 'media-luna' });
37
+ this._serviceRegistry = new ServiceRegistry(ctx);
38
+ this._connectorRegistry = new ConnectorRegistry(ctx);
39
+ this._middlewareRegistry = new MiddlewareRegistry(ctx);
40
+ // 初始化业务服务
41
+ this._channelService = new ChannelService(ctx);
42
+ // 注册默认配置
43
+ this._registerDefaultConfigs();
44
+ // 初始化插件加载器
45
+ this._pluginLoader = new PluginLoader(ctx, this._configService, this._middlewareRegistry, this._connectorRegistry, this._serviceRegistry);
46
+ // 初始化请求服务
47
+ this._requestService = new RequestService(ctx, this._connectorRegistry);
48
+ // 初始化执行管道
49
+ this._pipeline = new GenerationPipeline(ctx, this._logger, this._middlewareRegistry.getGraph(), {
50
+ getChannel: (id) => this._channelService.getById(id),
51
+ getMiddlewareConfig: (name) => this._getMiddlewareConfig(name),
52
+ isMiddlewareEnabled: (name, channel) => this._isMiddlewareEnabled(name, channel),
53
+ getService: (name) => this._serviceRegistry.get(name)
54
+ });
55
+ // 注册核心 request 中间件(必须在插件之前)
56
+ this._middlewareRegistry.register(createRequestMiddleware(this._requestService));
57
+ // 注册内置插件
58
+ this._loadBuiltinPlugins();
59
+ // 注册内置设置面板
60
+ this._registerBuiltinSettingsPanels();
61
+ }
62
+ // ============ 默认配置 ============
63
+ static DEFAULT_MIDDLEWARES_CONFIG = {
64
+ 'billing-prepare': { enabled: true, config: {} },
65
+ 'billing-finalize': { enabled: true, config: {} },
66
+ 'task-recorder-prepare': { enabled: true, config: {} },
67
+ 'task-recorder-finalize': { enabled: true, config: {} },
68
+ 'preset': { enabled: true, config: {} },
69
+ 'request': { enabled: true, config: {} },
70
+ 'storage': {
71
+ enabled: true,
72
+ config: {
73
+ backend: 'local',
74
+ localCacheDir: 'data/media-luna/assets',
75
+ localPublicPath: '/media-luna/assets'
76
+ }
77
+ },
78
+ 'storage-input': {
79
+ enabled: true,
80
+ config: {
81
+ backend: 'local',
82
+ localCacheDir: 'data/media-luna/assets',
83
+ localPublicPath: '/media-luna/assets'
84
+ }
85
+ }
86
+ };
87
+ /** 注册默认配置 */
88
+ _registerDefaultConfigs() {
89
+ // 中间件默认配置
90
+ if (!this._configService.get('middlewares')) {
91
+ this._configService.set('middlewares', MediaLunaService.DEFAULT_MIDDLEWARES_CONFIG);
92
+ }
93
+ }
94
+ // ============ 内置注册 ============
95
+ /** 加载内置插件 */
96
+ async _loadBuiltinPlugins() {
97
+ const builtinPlugins = [
98
+ // 功能插件
99
+ cachePlugin,
100
+ presetPlugin,
101
+ billingPlugin,
102
+ taskPlugin,
103
+ promptEncodingPlugin,
104
+ webuiAuthPlugin,
105
+ // 连接器插件
106
+ dalleConnectorPlugin,
107
+ sdWebuiConnectorPlugin,
108
+ fluxConnectorPlugin,
109
+ chatApiConnectorPlugin
110
+ ];
111
+ for (const plugin of builtinPlugins) {
112
+ try {
113
+ await this._pluginLoader.load(plugin);
114
+ this._logger.debug('Loaded builtin plugin: %s', plugin.id);
115
+ }
116
+ catch (error) {
117
+ this._logger.error('Failed to load builtin plugin %s: %s', plugin.id, error);
118
+ }
119
+ }
120
+ this._logger.info('Loaded %d builtin plugins', builtinPlugins.length);
121
+ }
122
+ /** 注册内置设置面板 */
123
+ _registerBuiltinSettingsPanels() {
124
+ // 请求流程配置(中间件开闭管理)
125
+ this._settingsPanels.set('middlewares', {
126
+ id: 'middlewares',
127
+ name: '请求流程',
128
+ icon: 'flow',
129
+ description: '查看请求执行流程,管理中间件的启用状态',
130
+ order: 10,
131
+ type: 'builtin',
132
+ component: 'middlewares'
133
+ });
134
+ // 插件管理(第三方扩展)- 包含所有插件的详细配置(含远程预设等)
135
+ this._settingsPanels.set('plugins', {
136
+ id: 'plugins',
137
+ name: '扩展插件',
138
+ icon: 'apps',
139
+ description: '管理扩展插件及其详细配置',
140
+ order: 20,
141
+ type: 'builtin',
142
+ component: 'plugins'
143
+ });
144
+ this._logger.debug('Registered builtin settings panels');
145
+ }
146
+ // ============ 注册 API ============
147
+ /**
148
+ * 注册连接器
149
+ * @returns 注销函数
150
+ */
151
+ registerConnector(connector) {
152
+ this._logger.info(`Registering connector: ${connector.id}`);
153
+ return this._connectorRegistry.register(connector);
154
+ }
155
+ /**
156
+ * 注册中间件
157
+ * @returns 注销函数
158
+ */
159
+ registerMiddleware(middleware) {
160
+ this._logger.info(`Registering middleware: ${middleware.name}`);
161
+ return this._middlewareRegistry.register(middleware);
162
+ }
163
+ /**
164
+ * 注册前端扩展
165
+ * @returns 注销函数
166
+ */
167
+ registerFrontendExtension(extension) {
168
+ if (this._frontendExtensions.has(extension.id)) {
169
+ throw new Error(`Frontend extension "${extension.id}" is already registered`);
170
+ }
171
+ this._frontendExtensions.set(extension.id, extension);
172
+ this._logger.info(`Registered frontend extension: ${extension.id}`);
173
+ return () => {
174
+ this._frontendExtensions.delete(extension.id);
175
+ };
176
+ }
177
+ /**
178
+ * 注册设置面板
179
+ * @returns 注销函数
180
+ */
181
+ registerSettingsPanel(panel) {
182
+ if (this._settingsPanels.has(panel.id)) {
183
+ throw new Error(`Settings panel "${panel.id}" is already registered`);
184
+ }
185
+ this._settingsPanels.set(panel.id, panel);
186
+ this._logger.info(`Registered settings panel: ${panel.id}`);
187
+ return () => {
188
+ this._settingsPanels.delete(panel.id);
189
+ };
190
+ }
191
+ // ============ 执行 API ============
192
+ /**
193
+ * 执行生成请求
194
+ */
195
+ async generate(request) {
196
+ this._logger.debug(`Generating with channel: ${request.channel}`);
197
+ return this._pipeline.execute(request);
198
+ }
199
+ // ============ 查询 API ============
200
+ /** 连接器注册中心 */
201
+ get connectors() {
202
+ return this._connectorRegistry;
203
+ }
204
+ /** 中间件注册中心 */
205
+ get middlewares() {
206
+ return this._middlewareRegistry;
207
+ }
208
+ /** 渠道服务 */
209
+ get channels() {
210
+ return this._channelService;
211
+ }
212
+ /** 预设服务(通过插件提供) */
213
+ get presets() {
214
+ return this._serviceRegistry.get('preset');
215
+ }
216
+ /** 任务服务(通过插件提供) */
217
+ get tasks() {
218
+ return this._serviceRegistry.get('task');
219
+ }
220
+ /** 缓存服务(通过插件提供) */
221
+ get cache() {
222
+ return this._serviceRegistry.get('cache');
223
+ }
224
+ /** 远程预设同步服务(通过插件提供) */
225
+ get remotePresets() {
226
+ return this._serviceRegistry.get('remote-sync');
227
+ }
228
+ /** 插件加载器 */
229
+ get pluginLoader() {
230
+ return this._pluginLoader;
231
+ }
232
+ /** 获取服务(供中间件使用) */
233
+ getService(name) {
234
+ return this._serviceRegistry.get(name);
235
+ }
236
+ /**
237
+ * 获取插件信息列表
238
+ */
239
+ getPluginInfos() {
240
+ return this._pluginLoader.getPluginInfos();
241
+ }
242
+ /** 前端扩展列表 */
243
+ get frontendExtensions() {
244
+ return Array.from(this._frontendExtensions.values());
245
+ }
246
+ /** 设置面板列表(按 order 排序) */
247
+ get settingsPanels() {
248
+ return Array.from(this._settingsPanels.values())
249
+ .sort((a, b) => (a.order ?? 100) - (b.order ?? 100));
250
+ }
251
+ /** 获取设置面板完整信息(包含配置数据) */
252
+ async getSettingsPanelInfos() {
253
+ const panels = this.settingsPanels;
254
+ const result = [];
255
+ for (const panel of panels) {
256
+ const info = {
257
+ id: panel.id,
258
+ name: panel.name,
259
+ icon: panel.icon,
260
+ description: panel.description,
261
+ order: panel.order ?? 100,
262
+ type: panel.type,
263
+ component: panel.component,
264
+ configFields: panel.configFields,
265
+ configKey: panel.configKey
266
+ };
267
+ // 如果是自定义面板,从 ConfigService 加载配置数据
268
+ if (panel.type === 'custom' && panel.configKey) {
269
+ info.config = this._configService.get(panel.configKey, {});
270
+ }
271
+ result.push(info);
272
+ }
273
+ return result;
274
+ }
275
+ // ============ 指令注册辅助 API ============
276
+ /**
277
+ * 获取渠道-预设组合列表(用于 Koishi 层指令注册)
278
+ */
279
+ async getChannelPresetCombinations() {
280
+ const channels = await this._channelService.listEnabled();
281
+ const presetService = this.presets;
282
+ const result = [];
283
+ for (const channel of channels) {
284
+ const matchingPresets = presetService
285
+ ? await presetService.getMatchingPresets(channel.tags)
286
+ : [];
287
+ result.push({
288
+ channel,
289
+ presets: matchingPresets.map(p => ({
290
+ name: p.name
291
+ }))
292
+ });
293
+ }
294
+ return result;
295
+ }
296
+ /**
297
+ * 根据渠道名和可选预设名执行生成
298
+ */
299
+ async generateByName(options) {
300
+ const channel = await this._channelService.getByName(options.channelName);
301
+ if (!channel) {
302
+ return {
303
+ success: false,
304
+ error: `Channel not found: ${options.channelName}`
305
+ };
306
+ }
307
+ if (!channel.enabled) {
308
+ return {
309
+ success: false,
310
+ error: `Channel is disabled: ${options.channelName}`
311
+ };
312
+ }
313
+ const request = {
314
+ channel: channel.id,
315
+ prompt: options.prompt,
316
+ files: options.files,
317
+ parameters: options.presetName ? { preset: options.presetName } : {},
318
+ session: options.session,
319
+ uid: options.uid
320
+ };
321
+ return this.generate(request);
322
+ }
323
+ // ============ 内部方法 ============
324
+ /** 获取中间件配置(从插件配置获取) */
325
+ async _getMiddlewareConfig(name) {
326
+ // 从对应的插件配置获取 (plugin:xxx)
327
+ // 中间件名通常与插件 ID 相同,或者可以通过 configGroup 指定
328
+ const pluginConfig = this._configService.get(`plugin:${name}`);
329
+ if (pluginConfig && Object.keys(pluginConfig).length > 0) {
330
+ return pluginConfig;
331
+ }
332
+ // 如果中间件有 configGroup,尝试从该插件获取配置
333
+ const middleware = this._middlewareRegistry.get(name);
334
+ const configGroup = middleware?.configGroup;
335
+ if (configGroup && configGroup !== name) {
336
+ const groupConfig = this._configService.get(`plugin:${configGroup}`);
337
+ if (groupConfig && Object.keys(groupConfig).length > 0) {
338
+ return groupConfig;
339
+ }
340
+ }
341
+ return null;
342
+ }
343
+ /** 检查中间件是否启用 */
344
+ async _isMiddlewareEnabled(name, channel) {
345
+ // 获取中间件定义以获取 configGroup
346
+ const middleware = this._middlewareRegistry.get(name);
347
+ const configGroup = middleware?.configGroup || name;
348
+ // 检查渠道级覆盖(优先级最高)
349
+ // 新结构:pluginOverrides[pluginId].middlewares[mwName]
350
+ const channelMwEnabled = channel?.pluginOverrides?.[configGroup]?.middlewares?.[name];
351
+ if (channelMwEnabled !== undefined) {
352
+ return channelMwEnabled;
353
+ }
354
+ // 兼容旧结构:pluginOverrides[configGroup].enabled
355
+ const channelEnabled = channel?.pluginOverrides?.[configGroup]?.enabled;
356
+ if (channelEnabled !== undefined) {
357
+ // 渠道有明确配置时,使用渠道配置
358
+ return channelEnabled;
359
+ }
360
+ // 检查全局配置(从 YAML)
361
+ const middlewareConfigs = this._configService.get('middlewares', {});
362
+ const mwConfig = middlewareConfigs[name];
363
+ // 如果没有配置记录,默认启用
364
+ if (!mwConfig)
365
+ return true;
366
+ return mwConfig.enabled ?? true;
367
+ }
368
+ /** 设置中间件配置(保存到 YAML 配置文件) */
369
+ setMiddlewareConfig(name, config, enabled = true) {
370
+ const middlewareConfigs = this._configService.get('middlewares', {});
371
+ middlewareConfigs[name] = {
372
+ ...middlewareConfigs[name],
373
+ enabled,
374
+ config
375
+ };
376
+ this._configService.set('middlewares', middlewareConfigs);
377
+ }
378
+ /** 获取中间件完整配置(包含 enabled 和 config) */
379
+ getMiddlewareConfig(name) {
380
+ const middlewareConfigs = this._configService.get('middlewares', {});
381
+ const mwConfig = middlewareConfigs[name];
382
+ return {
383
+ enabled: mwConfig?.enabled ?? true,
384
+ config: mwConfig?.config || {}
385
+ };
386
+ }
387
+ /** 获取所有中间件配置 */
388
+ getAllMiddlewareConfigs() {
389
+ return this._configService.get('middlewares', {});
390
+ }
391
+ // ============ 远程预设配置 ============
392
+ /** 获取远程预设配置(从 preset 插件配置中读取) */
393
+ async getRemotePresetConfig() {
394
+ const pluginConfig = this._configService.get('plugin:preset', defaultPresetConfig);
395
+ return {
396
+ apiUrl: pluginConfig.apiUrl,
397
+ autoSync: pluginConfig.autoSync,
398
+ syncInterval: pluginConfig.syncInterval,
399
+ deleteRemoved: pluginConfig.deleteRemoved,
400
+ thumbnailDelay: pluginConfig.thumbnailDelay
401
+ };
402
+ }
403
+ /** 设置远程预设配置(更新 preset 插件配置) */
404
+ async setRemotePresetConfig(config) {
405
+ const updated = this._configService.update('plugin:preset', config);
406
+ // 通过 RemoteSyncService 控制自动同步
407
+ const remoteSyncService = this._serviceRegistry.get('remote-sync');
408
+ if (remoteSyncService) {
409
+ if (updated.autoSync) {
410
+ remoteSyncService.startAutoSync(updated);
411
+ }
412
+ else {
413
+ remoteSyncService.stopAutoSync();
414
+ }
415
+ }
416
+ }
417
+ // ============ 配置服务 ============
418
+ /** 配置服务 */
419
+ get configService() {
420
+ return this._configService;
421
+ }
422
+ }
423
+ //# sourceMappingURL=medialuna.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"medialuna.service.js","sourceRoot":"","sources":["../../src/core/medialuna.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import type { MiddlewareDefinition } from '../types';
2
+ /**
3
+ * 中间件依赖图
4
+ *
5
+ * 使用 Kahn 算法进行拓扑排序,支持:
6
+ * - before/after 依赖声明
7
+ * - 生命周期阶段约束
8
+ * - 并行执行优化(同层中间件可并行)
9
+ * - 循环依赖检测
10
+ */
11
+ export declare class MiddlewareDependencyGraph {
12
+ /** 所有节点 */
13
+ private _nodes;
14
+ /** 依赖边 (from -> Set<to>,表示 from 执行完后 to 可以执行) */
15
+ private _dependencies;
16
+ /** 缓存的拓扑排序结果 */
17
+ private _cachedOrder;
18
+ constructor();
19
+ /** 初始化生命周期节点并建立顺序依赖 */
20
+ private _initLifecycleNodes;
21
+ /** 注册中间件 */
22
+ register(middleware: MiddlewareDefinition): void;
23
+ /** 注销中间件 */
24
+ unregister(name: string): void;
25
+ /** 为中间件添加生命周期约束 */
26
+ private _addLifecycleConstraints;
27
+ /**
28
+ * 构建执行顺序(拓扑排序)
29
+ * 返回二维数组,每个内层数组是可以并行执行的中间件
30
+ */
31
+ build(): MiddlewareDefinition[][];
32
+ /** 查找所有循环依赖 */
33
+ private _findAllCycles;
34
+ /** 获取所有已注册的中间件 */
35
+ getMiddlewares(): MiddlewareDefinition[];
36
+ /** 检查中间件是否已注册 */
37
+ has(name: string): boolean;
38
+ /** 获取中间件定义 */
39
+ get(name: string): MiddlewareDefinition | undefined;
40
+ /** 清空所有中间件(保留生命周期节点) */
41
+ clear(): void;
42
+ }
43
+ //# sourceMappingURL=dependency-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-graph.d.ts","sourceRoot":"","sources":["../../../src/core/pipeline/dependency-graph.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAkB,MAAM,UAAU,CAAA;AAUpE;;;;;;;;GAQG;AACH,qBAAa,yBAAyB;IACpC,WAAW;IACX,OAAO,CAAC,MAAM,CAAyC;IAEvD,iDAAiD;IACjD,OAAO,CAAC,aAAa,CAAsC;IAE3D,gBAAgB;IAChB,OAAO,CAAC,YAAY,CAAwC;;IAM5D,uBAAuB;IACvB,OAAO,CAAC,mBAAmB;IAkB3B,YAAY;IACZ,QAAQ,CAAC,UAAU,EAAE,oBAAoB,GAAG,IAAI;IAgChD,YAAY;IACZ,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAW9B,mBAAmB;IACnB,OAAO,CAAC,wBAAwB;IAehC;;;OAGG;IACH,KAAK,IAAI,oBAAoB,EAAE,EAAE;IA+EjC,eAAe;IACf,OAAO,CAAC,cAAc;IAyCtB,kBAAkB;IAClB,cAAc,IAAI,oBAAoB,EAAE;IAMxC,iBAAiB;IACjB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAK1B,cAAc;IACd,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAInD,wBAAwB;IACxB,KAAK,IAAI,IAAI;CAkBd"}