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,21 @@
1
+ // Plugins Index - 导出所有插件
2
+ // 功能插件
3
+ export { default as cachePlugin } from './cache';
4
+ export { default as presetPlugin } from './preset';
5
+ export { default as billingPlugin } from './billing';
6
+ export { default as taskPlugin } from './task';
7
+ export { default as promptEncodingPlugin } from './prompt-encoding';
8
+ export { default as webuiAuthPlugin } from './webui-auth';
9
+ // 连接器插件
10
+ export { default as dalleConnectorPlugin } from './connector-dalle';
11
+ export { default as sdWebuiConnectorPlugin } from './connector-sd-webui';
12
+ export { default as fluxConnectorPlugin } from './connector-flux';
13
+ export { default as chatApiConnectorPlugin } from './connector-chat-api';
14
+ // 导出服务
15
+ export { CacheService } from './cache';
16
+ export { PresetService, RemoteSyncService } from './preset';
17
+ export { TaskService } from './task';
18
+ export { WebuiAuthService } from './webui-auth';
19
+ // 导出中间件工厂
20
+ export { createPromptEncodingMiddleware } from './prompt-encoding';
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AAEzB,OAAO;AACP,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,UAAU,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,WAAW,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,QAAQ,CAAA;AAC9C,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACnE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,cAAc,CAAA;AAEzD,QAAQ;AACR,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACnE,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AACxE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAUxE,OAAO;AACP,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C,UAAU;AACV,OAAO,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAA"}
@@ -0,0 +1,37 @@
1
+ import type { ConfigField } from '../../core';
2
+ /** 预设中间件配置 */
3
+ export interface PresetMiddlewareConfig {
4
+ /** 默认预设名称 */
5
+ defaultPreset?: string;
6
+ /** 是否启用 */
7
+ enabled?: boolean;
8
+ }
9
+ /** 远程同步配置 */
10
+ export interface RemoteSyncConfig {
11
+ /** 远程 API URL */
12
+ apiUrl: string;
13
+ /** 是否启用自动同步 */
14
+ autoSync: boolean;
15
+ /** 自动同步间隔(分钟) */
16
+ syncInterval: number;
17
+ /** 同步时是否删除远程已移除的预设 */
18
+ deleteRemoved: boolean;
19
+ /** 缩略图下载延迟(毫秒),用于限流 */
20
+ thumbnailDelay: number;
21
+ /** 上次同步的 ETag(用于 304 缓存) */
22
+ lastETag?: string;
23
+ /** 上次同步时间 */
24
+ lastSyncTime?: string;
25
+ }
26
+ /** 预设插件完整配置 */
27
+ export interface PresetPluginConfig extends PresetMiddlewareConfig, RemoteSyncConfig {
28
+ }
29
+ /** 预设中间件配置字段 */
30
+ export declare const presetMiddlewareConfigFields: ConfigField[];
31
+ /** 远程同步配置字段 */
32
+ export declare const remoteSyncConfigFields: ConfigField[];
33
+ /** 全部配置字段 */
34
+ export declare const presetConfigFields: ConfigField[];
35
+ /** 默认配置 */
36
+ export declare const defaultPresetConfig: PresetPluginConfig;
37
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/plugins/preset/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C,cAAc;AACd,MAAM,WAAW,sBAAsB;IACrC,aAAa;IACb,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW;IACX,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,aAAa;AACb,MAAM,WAAW,gBAAgB;IAC/B,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,uBAAuB;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,eAAe;AACf,MAAM,WAAW,kBAAmB,SAAQ,sBAAsB,EAAE,gBAAgB;CAAG;AAEvF,gBAAgB;AAChB,eAAO,MAAM,4BAA4B,EAAE,WAAW,EAerD,CAAA;AAED,eAAe;AACf,eAAO,MAAM,sBAAsB,EAAE,WAAW,EAsC/C,CAAA;AAED,aAAa;AACb,eAAO,MAAM,kBAAkB,EAAE,WAAW,EAG3C,CAAA;AAED,WAAW;AACX,eAAO,MAAM,mBAAmB,EAAE,kBAQjC,CAAA"}
@@ -0,0 +1,74 @@
1
+ // 预设插件配置字段定义
2
+ /** 预设中间件配置字段 */
3
+ export const presetMiddlewareConfigFields = [
4
+ {
5
+ key: 'enabled',
6
+ label: '启用预设处理',
7
+ type: 'boolean',
8
+ default: true,
9
+ description: '是否启用预设中间件'
10
+ },
11
+ {
12
+ key: 'defaultPreset',
13
+ label: '默认预设',
14
+ type: 'text',
15
+ placeholder: '留空则不使用默认预设',
16
+ description: '当用户未指定预设时使用的默认预设名称'
17
+ }
18
+ ];
19
+ /** 远程同步配置字段 */
20
+ export const remoteSyncConfigFields = [
21
+ {
22
+ key: 'apiUrl',
23
+ label: '在线预设api地址',
24
+ type: 'text',
25
+ default: 'https://prompt.vioaki.xyz/api/templates?per_page=-1',
26
+ placeholder: 'https://prompt.vioaki.xyz/api/templates?per_page=-1',
27
+ description: '项目地址:https://github.com/vioaki/Prompt-Manager'
28
+ },
29
+ {
30
+ key: 'autoSync',
31
+ label: '自动同步',
32
+ type: 'boolean',
33
+ default: false,
34
+ description: '启用后将定期从远程同步预设'
35
+ },
36
+ {
37
+ key: 'syncInterval',
38
+ label: '同步间隔',
39
+ type: 'number',
40
+ default: 60,
41
+ description: '自动同步间隔(分钟)',
42
+ showWhen: { field: 'autoSync', value: true }
43
+ },
44
+ {
45
+ key: 'deleteRemoved',
46
+ label: '删除已移除',
47
+ type: 'boolean',
48
+ default: false,
49
+ description: '同步时删除远程已移除的预设'
50
+ },
51
+ {
52
+ key: 'thumbnailDelay',
53
+ label: '下载限流',
54
+ type: 'number',
55
+ default: 100,
56
+ description: '缩略图下载间隔(毫秒),避免对远程服务器造成压力,0 表示不限制'
57
+ }
58
+ ];
59
+ /** 全部配置字段 */
60
+ export const presetConfigFields = [
61
+ ...presetMiddlewareConfigFields,
62
+ ...remoteSyncConfigFields
63
+ ];
64
+ /** 默认配置 */
65
+ export const defaultPresetConfig = {
66
+ enabled: true,
67
+ defaultPreset: '',
68
+ apiUrl: 'https://prompt.vioaki.xyz/api/templates?per_page=-1',
69
+ autoSync: false,
70
+ syncInterval: 60,
71
+ deleteRemoved: false,
72
+ thumbnailDelay: 100
73
+ };
74
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/plugins/preset/config.ts"],"names":[],"mappings":"AAAA,aAAa;AAiCb,gBAAgB;AAChB,MAAM,CAAC,MAAM,4BAA4B,GAAkB;IACzD;QACE,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,WAAW;KACzB;IACD;QACE,GAAG,EAAE,eAAe;QACpB,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,YAAY;QACzB,WAAW,EAAE,oBAAoB;KAClC;CACF,CAAA;AAED,eAAe;AACf,MAAM,CAAC,MAAM,sBAAsB,GAAkB;IACnD;QACE,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,qDAAqD;QAC9D,WAAW,EAAE,qDAAqD;QAClE,WAAW,EAAE,+CAA+C;KAC7D;IACD;QACE,GAAG,EAAE,UAAU;QACf,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,eAAe;KAC7B;IACD;QACE,GAAG,EAAE,cAAc;QACnB,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,YAAY;QACzB,QAAQ,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE;KAC7C;IACD;QACE,GAAG,EAAE,eAAe;QACpB,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,eAAe;KAC7B;IACD;QACE,GAAG,EAAE,gBAAgB;QACrB,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,GAAG;QACZ,WAAW,EAAE,kCAAkC;KAChD;CACF,CAAA;AAED,aAAa;AACb,MAAM,CAAC,MAAM,kBAAkB,GAAkB;IAC/C,GAAG,4BAA4B;IAC/B,GAAG,sBAAsB;CAC1B,CAAA;AAED,WAAW;AACX,MAAM,CAAC,MAAM,mBAAmB,GAAuB;IACrD,OAAO,EAAE,IAAI;IACb,aAAa,EAAE,EAAE;IACjB,MAAM,EAAE,qDAAqD;IAC7D,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,EAAE;IAChB,aAAa,EAAE,KAAK;IACpB,cAAc,EAAE,GAAG;CACpB,CAAA"}
@@ -0,0 +1,6 @@
1
+ declare const _default: import("../../core").PluginDefinition;
2
+ export default _default;
3
+ export { PresetService, PresetData } from './service';
4
+ export { RemoteSyncService, SyncResult } from './remote-sync.service';
5
+ export type { PresetPluginConfig, PresetMiddlewareConfig, RemoteSyncConfig } from './config';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/preset/index.ts"],"names":[],"mappings":";AASA,wBAuDE;AAGF,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AACrE,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA"}
@@ -0,0 +1,58 @@
1
+ // 预设插件入口
2
+ import { definePlugin } from '../../core';
3
+ import { PresetService } from './service';
4
+ import { RemoteSyncService } from './remote-sync.service';
5
+ import { createPresetMiddleware } from './middleware';
6
+ import { presetConfigFields, defaultPresetConfig } from './config';
7
+ export default definePlugin({
8
+ id: 'preset',
9
+ name: '预设管理',
10
+ description: '预设模板和远程同步支持',
11
+ version: '1.0.0',
12
+ services: [
13
+ {
14
+ name: 'preset',
15
+ factory: (ctx) => new PresetService(ctx.ctx)
16
+ },
17
+ {
18
+ name: 'remote-sync',
19
+ factory: (ctx) => {
20
+ const presetService = ctx.getService('preset');
21
+ // 提供一个获取缓存服务的回调,避免直接访问 ctx.mediaLuna 导致的警告
22
+ const getCacheService = () => ctx.getService('cache');
23
+ return new RemoteSyncService(ctx.ctx, presetService, getCacheService);
24
+ }
25
+ }
26
+ ],
27
+ middlewares: [
28
+ createPresetMiddleware()
29
+ ],
30
+ configFields: presetConfigFields,
31
+ configDefaults: defaultPresetConfig,
32
+ settingsActions: [
33
+ {
34
+ name: 'sync',
35
+ label: '立即同步',
36
+ type: 'primary',
37
+ icon: 'sync',
38
+ apiEvent: 'media-luna/presets/sync'
39
+ }
40
+ ],
41
+ async onLoad(ctx) {
42
+ const remoteSyncService = ctx.getService('remote-sync');
43
+ // 启动自动同步
44
+ const config = ctx.getConfig();
45
+ if (config.autoSync && config.apiUrl) {
46
+ remoteSyncService.startAutoSync(config);
47
+ }
48
+ // 注册 dispose 回调
49
+ ctx.onDispose(() => {
50
+ remoteSyncService.dispose();
51
+ });
52
+ ctx.logger.info('Preset plugin loaded');
53
+ }
54
+ });
55
+ // 导出类型和服务
56
+ export { PresetService } from './service';
57
+ export { RemoteSyncService } from './remote-sync.service';
58
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/preset/index.ts"],"names":[],"mappings":"AAAA,SAAS;AAET,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAA2B,MAAM,UAAU,CAAA;AAG3F,eAAe,YAAY,CAAC;IAC1B,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,OAAO;IAEhB,QAAQ,EAAE;QACR;YACE,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;SAC7C;QACD;YACE,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACf,MAAM,aAAa,GAAG,GAAG,CAAC,UAAU,CAAgB,QAAQ,CAAE,CAAA;gBAC9D,2CAA2C;gBAC3C,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,UAAU,CAAe,OAAO,CAAC,CAAA;gBACnE,OAAO,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,eAAe,CAAC,CAAA;YACvE,CAAC;SACF;KACF;IAED,WAAW,EAAE;QACX,sBAAsB,EAAE;KACzB;IAED,YAAY,EAAE,kBAAkB;IAChC,cAAc,EAAE,mBAAmB;IAEnC,eAAe,EAAE;QACf;YACE,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,yBAAyB;SACpC;KACF;IAED,KAAK,CAAC,MAAM,CAAC,GAAG;QACd,MAAM,iBAAiB,GAAG,GAAG,CAAC,UAAU,CAAoB,aAAa,CAAE,CAAA;QAE3E,SAAS;QACT,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAsB,CAAA;QAClD,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACrC,iBAAiB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QACzC,CAAC;QAED,gBAAgB;QAChB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;YACjB,iBAAiB,CAAC,OAAO,EAAE,CAAA;QAC7B,CAAC,CAAC,CAAA;QAEF,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;IACzC,CAAC;CACF,CAAC,CAAA;AAEF,UAAU;AACV,OAAO,EAAE,aAAa,EAAc,MAAM,WAAW,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAc,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { MiddlewareDefinition } from '../../core';
2
+ /**
3
+ * 创建预设中间件
4
+ */
5
+ export declare function createPresetMiddleware(): MiddlewareDefinition;
6
+ //# sourceMappingURL=middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/plugins/preset/middleware.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,oBAAoB,EAIrB,MAAM,YAAY,CAAA;AAInB;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,oBAAoB,CAiE7D"}
@@ -0,0 +1,126 @@
1
+ // 预设中间件
2
+ /**
3
+ * 创建预设中间件
4
+ */
5
+ export function createPresetMiddleware() {
6
+ return {
7
+ name: 'preset',
8
+ displayName: '预设处理',
9
+ description: '应用预设模板和参考图到生成请求',
10
+ category: 'preset',
11
+ phase: 'lifecycle-pre-request',
12
+ // 配置在 preset 插件的扩展插件面板中设置
13
+ async execute(context, next) {
14
+ const config = await context.getMiddlewareConfig('preset');
15
+ if (config?.enabled === false) {
16
+ return next();
17
+ }
18
+ // 从上下文获取 presetService
19
+ const presetService = context.getService('preset');
20
+ if (!presetService) {
21
+ return next();
22
+ }
23
+ const presetName = context.parameters.preset || config?.defaultPreset;
24
+ if (!presetName) {
25
+ return next();
26
+ }
27
+ const preset = await presetService.getByName(presetName);
28
+ if (!preset) {
29
+ return next();
30
+ }
31
+ if (!preset.enabled) {
32
+ return next();
33
+ }
34
+ // 注入预设参考图
35
+ if (preset.referenceImages && preset.referenceImages.length > 0) {
36
+ const presetFiles = await loadReferenceImages(context.ctx, preset.referenceImages);
37
+ context.files = [...presetFiles, ...context.files];
38
+ }
39
+ // 应用预设模板
40
+ const originalPrompt = context.prompt;
41
+ context.prompt = applyTemplate(preset.promptTemplate, originalPrompt);
42
+ // 应用参数覆盖
43
+ if (preset.parameterOverrides) {
44
+ context.parameters = {
45
+ ...context.parameters,
46
+ ...preset.parameterOverrides
47
+ };
48
+ }
49
+ context.setMiddlewareLog('preset', {
50
+ presetId: preset.id,
51
+ presetName: preset.name,
52
+ originalPrompt,
53
+ transformedPrompt: context.prompt,
54
+ referenceImagesInjected: preset.referenceImages?.length ?? 0
55
+ });
56
+ return next();
57
+ }
58
+ };
59
+ }
60
+ /** 加载参考图 */
61
+ async function loadReferenceImages(ctx, urls) {
62
+ const files = [];
63
+ for (const url of urls) {
64
+ try {
65
+ if (url.startsWith('http://') || url.startsWith('https://')) {
66
+ const response = await ctx.http.get(url, {
67
+ responseType: 'arraybuffer'
68
+ });
69
+ const mime = guessMimeFromUrl(url);
70
+ const filename = url.split('/').pop() || 'reference.png';
71
+ files.push({
72
+ data: response,
73
+ mime,
74
+ filename
75
+ });
76
+ }
77
+ else if (url.startsWith('data:')) {
78
+ const matches = url.match(/^data:([^;]+);base64,(.+)$/);
79
+ if (matches) {
80
+ const mime = matches[1];
81
+ const base64 = matches[2];
82
+ const buffer = Buffer.from(base64, 'base64');
83
+ const parts = mime.split('/');
84
+ const ext = parts[1] || 'png';
85
+ files.push({
86
+ data: buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength),
87
+ mime,
88
+ filename: `reference.${ext}`
89
+ });
90
+ }
91
+ }
92
+ }
93
+ catch {
94
+ // 忽略加载失败的图片
95
+ }
96
+ }
97
+ return files;
98
+ }
99
+ /** 从 URL 推断 MIME 类型 */
100
+ function guessMimeFromUrl(url) {
101
+ const ext = url.split('.').pop()?.toLowerCase();
102
+ switch (ext) {
103
+ case 'jpg':
104
+ case 'jpeg':
105
+ return 'image/jpeg';
106
+ case 'png':
107
+ return 'image/png';
108
+ case 'gif':
109
+ return 'image/gif';
110
+ case 'webp':
111
+ return 'image/webp';
112
+ default:
113
+ return 'image/png';
114
+ }
115
+ }
116
+ /** 应用模板替换 */
117
+ function applyTemplate(template, userText) {
118
+ if (template.includes('{prompt}')) {
119
+ return template.replace(/\{prompt\}/g, userText);
120
+ }
121
+ if (template.includes('{{userText}}')) {
122
+ return template.replace(/\{\{userText\}\}/g, userText);
123
+ }
124
+ return `${template}\n\n${userText}`;
125
+ }
126
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/plugins/preset/middleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import { Context } from 'koishi';
2
+ import { PresetService, PresetData } from './service';
3
+ import type { RemoteSyncConfig } from './config';
4
+ import type { CacheService } from '../cache/service';
5
+ /** 远程 API 返回的模板数据 */
6
+ interface RemoteTemplate {
7
+ id: number;
8
+ title: string;
9
+ prompt: string;
10
+ type: string;
11
+ tags: string[];
12
+ category: string;
13
+ file_path: string;
14
+ thumbnail_path: string;
15
+ refs: Array<{
16
+ id: number;
17
+ file_path: string;
18
+ is_placeholder: boolean;
19
+ position: number;
20
+ }>;
21
+ created_at: string;
22
+ description?: string;
23
+ author?: string;
24
+ heat_score?: number;
25
+ }
26
+ /** 同步结果 */
27
+ export interface SyncResult {
28
+ success: boolean;
29
+ added: number;
30
+ updated: number;
31
+ removed: number;
32
+ errors: string[];
33
+ /** 是否命中缓存(304 Not Modified) */
34
+ notModified?: boolean;
35
+ }
36
+ /** 拉取结果 */
37
+ interface FetchResult {
38
+ templates: RemoteTemplate[];
39
+ notModified: boolean;
40
+ etag?: string;
41
+ }
42
+ /**
43
+ * 远程预设同步服务
44
+ */
45
+ export declare class RemoteSyncService {
46
+ private _ctx;
47
+ private _logger;
48
+ private _presetService;
49
+ private _getCacheService;
50
+ private _syncDispose;
51
+ /** 存储每个 API URL 对应的 ETag */
52
+ private _etagCache;
53
+ constructor(ctx: Context, presetService: PresetService, getCacheService: () => CacheService | undefined);
54
+ /** 从远程 API 拉取模板列表(支持 ETag 缓存) */
55
+ fetchRemoteTemplates(apiUrl: string): Promise<FetchResult>;
56
+ /** 将远程模板转换为本地预设数据(不含缓存处理) */
57
+ transformToPreset(template: RemoteTemplate, remoteUrl: string): Omit<PresetData, 'id'>;
58
+ /**
59
+ * 缓存预设的图片资源(缩略图和参考图片)
60
+ * @param presetData 预设数据(需要包含 thumbnailRemote 和 referenceImagesRemote)
61
+ * @param thumbnailDelay 下载间隔(毫秒),用于限流
62
+ * @returns 更新后的预设数据(包含缓存后的 URL)
63
+ */
64
+ cachePresetImages(presetData: Omit<PresetData, 'id'>, thumbnailDelay?: number): Promise<Omit<PresetData, 'id'>>;
65
+ /** 执行同步 */
66
+ sync(apiUrl: string, deleteRemoved?: boolean, thumbnailDelay?: number): Promise<SyncResult>;
67
+ /**
68
+ * 判断是否需要重新缓存图片
69
+ * - 新预设需要缓存
70
+ * - 远程URL变化需要重新缓存
71
+ * - 本地缓存URL为空需要缓存
72
+ */
73
+ private _needsImageCaching;
74
+ /** 启动定时同步 */
75
+ startAutoSync(config: RemoteSyncConfig): void;
76
+ /** 停止定时同步 */
77
+ stopAutoSync(): void;
78
+ /** 清除 ETag 缓存(强制下次完整拉取) */
79
+ clearEtagCache(apiUrl?: string): void;
80
+ /** 销毁服务 */
81
+ dispose(): void;
82
+ }
83
+ export {};
84
+ //# sourceMappingURL=remote-sync.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-sync.service.d.ts","sourceRoot":"","sources":["../../../src/plugins/preset/remote-sync.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAGhC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEpD,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;IAClB,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,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,+BAA+B;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,WAAW;AACX,UAAU,WAAW;IACnB,SAAS,EAAE,cAAc,EAAE,CAAA;IAC3B,WAAW,EAAE,OAAO,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,cAAc,CAAe;IACrC,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,YAAY,CAA4B;IAChD,4BAA4B;IAC5B,OAAO,CAAC,UAAU,CAAiC;gBAGjD,GAAG,EAAE,OAAO,EACZ,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,MAAM,YAAY,GAAG,SAAS;IAQjD,iCAAiC;IAC3B,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA2DhE,6BAA6B;IAC7B,iBAAiB,CAAC,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;IA2BtF;;;;;OAKG;IACG,iBAAiB,CACrB,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAClC,cAAc,GAAE,MAAY,GAC3B,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAoElC,WAAW;IACL,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,GAAE,OAAe,EAAE,cAAc,GAAE,MAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAiG7G;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAuB1B,aAAa;IACb,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IA2C7C,aAAa;IACb,YAAY,IAAI,IAAI;IAQpB,2BAA2B;IAC3B,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IASrC,WAAW;IACX,OAAO,IAAI,IAAI;CAIhB"}