@dofe/infra-clients 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (497) hide show
  1. package/dist/index.d.ts +20 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +36 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/internal/agentx/agentx-client.module.d.ts +10 -0
  6. package/dist/internal/agentx/agentx-client.module.d.ts.map +1 -0
  7. package/dist/internal/agentx/agentx-client.module.js +38 -0
  8. package/dist/internal/agentx/agentx-client.module.js.map +1 -0
  9. package/dist/internal/agentx/agentx-client.service.d.ts +570 -0
  10. package/dist/internal/agentx/agentx-client.service.d.ts.map +1 -0
  11. package/dist/internal/agentx/agentx-client.service.js +912 -0
  12. package/dist/internal/agentx/agentx-client.service.js.map +1 -0
  13. package/dist/internal/agentx/agentx-file-client.service.d.ts +48 -0
  14. package/dist/internal/agentx/agentx-file-client.service.d.ts.map +1 -0
  15. package/dist/internal/agentx/agentx-file-client.service.js +276 -0
  16. package/dist/internal/agentx/agentx-file-client.service.js.map +1 -0
  17. package/dist/internal/agentx/index.d.ts +9 -0
  18. package/dist/internal/agentx/index.d.ts.map +1 -0
  19. package/dist/internal/agentx/index.js +27 -0
  20. package/dist/internal/agentx/index.js.map +1 -0
  21. package/dist/internal/agentx/interfaces/file.interface.d.ts +21 -0
  22. package/dist/internal/agentx/interfaces/file.interface.d.ts.map +1 -0
  23. package/dist/internal/agentx/interfaces/file.interface.js +22 -0
  24. package/dist/internal/agentx/interfaces/file.interface.js.map +1 -0
  25. package/dist/internal/agentx/interfaces/task.interface.d.ts +74 -0
  26. package/dist/internal/agentx/interfaces/task.interface.d.ts.map +1 -0
  27. package/dist/internal/agentx/interfaces/task.interface.js +16 -0
  28. package/dist/internal/agentx/interfaces/task.interface.js.map +1 -0
  29. package/dist/internal/ai/index.d.ts +3 -0
  30. package/dist/internal/ai/index.d.ts.map +1 -0
  31. package/dist/internal/ai/index.js +19 -0
  32. package/dist/internal/ai/index.js.map +1 -0
  33. package/dist/internal/ai/risk-detection.client.d.ts +74 -0
  34. package/dist/internal/ai/risk-detection.client.d.ts.map +1 -0
  35. package/dist/internal/ai/risk-detection.client.js +224 -0
  36. package/dist/internal/ai/risk-detection.client.js.map +1 -0
  37. package/dist/internal/ai/risk-detection.module.d.ts +3 -0
  38. package/dist/internal/ai/risk-detection.module.d.ts.map +1 -0
  39. package/dist/internal/ai/risk-detection.module.js +35 -0
  40. package/dist/internal/ai/risk-detection.module.js.map +1 -0
  41. package/dist/internal/ai-provider/ai-provider.client.d.ts +81 -0
  42. package/dist/internal/ai-provider/ai-provider.client.d.ts.map +1 -0
  43. package/dist/internal/ai-provider/ai-provider.client.js +435 -0
  44. package/dist/internal/ai-provider/ai-provider.client.js.map +1 -0
  45. package/dist/internal/ai-provider/ai-provider.module.d.ts +3 -0
  46. package/dist/internal/ai-provider/ai-provider.module.d.ts.map +1 -0
  47. package/dist/internal/ai-provider/ai-provider.module.js +28 -0
  48. package/dist/internal/ai-provider/ai-provider.module.js.map +1 -0
  49. package/dist/internal/ai-provider/index.d.ts +4 -0
  50. package/dist/internal/ai-provider/index.d.ts.map +1 -0
  51. package/dist/internal/ai-provider/index.js +8 -0
  52. package/dist/internal/ai-provider/index.js.map +1 -0
  53. package/dist/internal/channel-verify/channel-verify.client.d.ts +31 -0
  54. package/dist/internal/channel-verify/channel-verify.client.d.ts.map +1 -0
  55. package/dist/internal/channel-verify/channel-verify.client.js +150 -0
  56. package/dist/internal/channel-verify/channel-verify.client.js.map +1 -0
  57. package/dist/internal/channel-verify/index.d.ts +5 -0
  58. package/dist/internal/channel-verify/index.d.ts.map +1 -0
  59. package/dist/internal/channel-verify/index.js +26 -0
  60. package/dist/internal/channel-verify/index.js.map +1 -0
  61. package/dist/internal/complexity-classifier/complexity-classifier.module.d.ts +3 -0
  62. package/dist/internal/complexity-classifier/complexity-classifier.module.d.ts.map +1 -0
  63. package/dist/internal/complexity-classifier/complexity-classifier.module.js +30 -0
  64. package/dist/internal/complexity-classifier/complexity-classifier.module.js.map +1 -0
  65. package/dist/internal/complexity-classifier/complexity-classifier.service.d.ts +57 -0
  66. package/dist/internal/complexity-classifier/complexity-classifier.service.d.ts.map +1 -0
  67. package/dist/internal/complexity-classifier/complexity-classifier.service.js +285 -0
  68. package/dist/internal/complexity-classifier/complexity-classifier.service.js.map +1 -0
  69. package/dist/internal/complexity-classifier/complexity-classifier.types.d.ts +78 -0
  70. package/dist/internal/complexity-classifier/complexity-classifier.types.d.ts.map +1 -0
  71. package/dist/internal/complexity-classifier/complexity-classifier.types.js +20 -0
  72. package/dist/internal/complexity-classifier/complexity-classifier.types.js.map +1 -0
  73. package/dist/internal/complexity-classifier/index.d.ts +7 -0
  74. package/dist/internal/complexity-classifier/index.d.ts.map +1 -0
  75. package/dist/internal/complexity-classifier/index.js +25 -0
  76. package/dist/internal/complexity-classifier/index.js.map +1 -0
  77. package/dist/internal/crypt/crypt-client.service.spec.d.ts +2 -0
  78. package/dist/internal/crypt/crypt-client.service.spec.d.ts.map +1 -0
  79. package/dist/internal/crypt/crypt-client.service.spec.js +17 -0
  80. package/dist/internal/crypt/crypt-client.service.spec.js.map +1 -0
  81. package/dist/internal/crypt/crypt.client.d.ts +10 -0
  82. package/dist/internal/crypt/crypt.client.d.ts.map +1 -0
  83. package/dist/internal/crypt/crypt.client.js +78 -0
  84. package/dist/internal/crypt/crypt.client.js.map +1 -0
  85. package/dist/internal/crypt/crypt.module.d.ts +3 -0
  86. package/dist/internal/crypt/crypt.module.d.ts.map +1 -0
  87. package/dist/internal/crypt/crypt.module.js +23 -0
  88. package/dist/internal/crypt/crypt.module.js.map +1 -0
  89. package/dist/internal/crypt/index.d.ts +3 -0
  90. package/dist/internal/crypt/index.d.ts.map +1 -0
  91. package/dist/internal/crypt/index.js +19 -0
  92. package/dist/internal/crypt/index.js.map +1 -0
  93. package/dist/internal/email/dto/email.dto.d.ts +62 -0
  94. package/dist/internal/email/dto/email.dto.d.ts.map +1 -0
  95. package/dist/internal/email/dto/email.dto.js +50 -0
  96. package/dist/internal/email/dto/email.dto.js.map +1 -0
  97. package/dist/internal/email/index.d.ts +10 -0
  98. package/dist/internal/email/index.d.ts.map +1 -0
  99. package/dist/internal/email/index.js +29 -0
  100. package/dist/internal/email/index.js.map +1 -0
  101. package/dist/internal/email/sendcloud.client.d.ts +103 -0
  102. package/dist/internal/email/sendcloud.client.d.ts.map +1 -0
  103. package/dist/internal/email/sendcloud.client.js +336 -0
  104. package/dist/internal/email/sendcloud.client.js.map +1 -0
  105. package/dist/internal/exchange-rate/exchange-rate.client.d.ts +49 -0
  106. package/dist/internal/exchange-rate/exchange-rate.client.d.ts.map +1 -0
  107. package/dist/internal/exchange-rate/exchange-rate.client.js +166 -0
  108. package/dist/internal/exchange-rate/exchange-rate.client.js.map +1 -0
  109. package/dist/internal/exchange-rate/exchange-rate.module.d.ts +3 -0
  110. package/dist/internal/exchange-rate/exchange-rate.module.d.ts.map +1 -0
  111. package/dist/internal/exchange-rate/exchange-rate.module.js +23 -0
  112. package/dist/internal/exchange-rate/exchange-rate.module.js.map +1 -0
  113. package/dist/internal/exchange-rate/index.d.ts +3 -0
  114. package/dist/internal/exchange-rate/index.d.ts.map +1 -0
  115. package/dist/internal/exchange-rate/index.js +19 -0
  116. package/dist/internal/exchange-rate/index.js.map +1 -0
  117. package/dist/internal/file-cdn/dto/file-cdn.dto.d.ts +78 -0
  118. package/dist/internal/file-cdn/dto/file-cdn.dto.d.ts.map +1 -0
  119. package/dist/internal/file-cdn/dto/file-cdn.dto.js +70 -0
  120. package/dist/internal/file-cdn/dto/file-cdn.dto.js.map +1 -0
  121. package/dist/internal/file-cdn/file-cdn-client.service.spec.d.ts +2 -0
  122. package/dist/internal/file-cdn/file-cdn-client.service.spec.d.ts.map +1 -0
  123. package/dist/internal/file-cdn/file-cdn-client.service.spec.js +17 -0
  124. package/dist/internal/file-cdn/file-cdn-client.service.spec.js.map +1 -0
  125. package/dist/internal/file-cdn/file-cdn.client.d.ts +283 -0
  126. package/dist/internal/file-cdn/file-cdn.client.d.ts.map +1 -0
  127. package/dist/internal/file-cdn/file-cdn.client.js +526 -0
  128. package/dist/internal/file-cdn/file-cdn.client.js.map +1 -0
  129. package/dist/internal/file-cdn/file-cdn.module.d.ts +3 -0
  130. package/dist/internal/file-cdn/file-cdn.module.d.ts.map +1 -0
  131. package/dist/internal/file-cdn/file-cdn.module.js +32 -0
  132. package/dist/internal/file-cdn/file-cdn.module.js.map +1 -0
  133. package/dist/internal/file-cdn/index.d.ts +35 -0
  134. package/dist/internal/file-cdn/index.d.ts.map +1 -0
  135. package/dist/internal/file-cdn/index.js +54 -0
  136. package/dist/internal/file-cdn/index.js.map +1 -0
  137. package/dist/internal/file-storage/config/file.config.d.ts +12 -0
  138. package/dist/internal/file-storage/config/file.config.d.ts.map +1 -0
  139. package/dist/internal/file-storage/config/file.config.js +15 -0
  140. package/dist/internal/file-storage/config/file.config.js.map +1 -0
  141. package/dist/internal/file-storage/dto/file.dto.d.ts +163 -0
  142. package/dist/internal/file-storage/dto/file.dto.d.ts.map +1 -0
  143. package/dist/internal/file-storage/dto/file.dto.js +98 -0
  144. package/dist/internal/file-storage/dto/file.dto.js.map +1 -0
  145. package/dist/internal/file-storage/file-gcs.client.d.ts +33 -0
  146. package/dist/internal/file-storage/file-gcs.client.d.ts.map +1 -0
  147. package/dist/internal/file-storage/file-gcs.client.js +118 -0
  148. package/dist/internal/file-storage/file-gcs.client.js.map +1 -0
  149. package/dist/internal/file-storage/file-qiniu.client.d.ts +199 -0
  150. package/dist/internal/file-storage/file-qiniu.client.d.ts.map +1 -0
  151. package/dist/internal/file-storage/file-qiniu.client.js +526 -0
  152. package/dist/internal/file-storage/file-qiniu.client.js.map +1 -0
  153. package/dist/internal/file-storage/file-s3.client.d.ts +158 -0
  154. package/dist/internal/file-storage/file-s3.client.d.ts.map +1 -0
  155. package/dist/internal/file-storage/file-s3.client.js +865 -0
  156. package/dist/internal/file-storage/file-s3.client.js.map +1 -0
  157. package/dist/internal/file-storage/file-storage.interface.d.ts +38 -0
  158. package/dist/internal/file-storage/file-storage.interface.d.ts.map +1 -0
  159. package/dist/internal/file-storage/file-storage.interface.js +3 -0
  160. package/dist/internal/file-storage/file-storage.interface.js.map +1 -0
  161. package/dist/internal/file-storage/file-tos.client.d.ts +109 -0
  162. package/dist/internal/file-storage/file-tos.client.d.ts.map +1 -0
  163. package/dist/internal/file-storage/file-tos.client.js +630 -0
  164. package/dist/internal/file-storage/file-tos.client.js.map +1 -0
  165. package/dist/internal/file-storage/file-us3.client.d.ts +30 -0
  166. package/dist/internal/file-storage/file-us3.client.d.ts.map +1 -0
  167. package/dist/internal/file-storage/file-us3.client.js +129 -0
  168. package/dist/internal/file-storage/file-us3.client.js.map +1 -0
  169. package/dist/internal/file-storage/index.d.ts +15 -0
  170. package/dist/internal/file-storage/index.d.ts.map +1 -0
  171. package/dist/internal/file-storage/index.js +37 -0
  172. package/dist/internal/file-storage/index.js.map +1 -0
  173. package/dist/internal/health-check/health-check.client.d.ts +37 -0
  174. package/dist/internal/health-check/health-check.client.d.ts.map +1 -0
  175. package/dist/internal/health-check/health-check.client.js +142 -0
  176. package/dist/internal/health-check/health-check.client.js.map +1 -0
  177. package/dist/internal/health-check/health-check.module.d.ts +3 -0
  178. package/dist/internal/health-check/health-check.module.d.ts.map +1 -0
  179. package/dist/internal/health-check/health-check.module.js +33 -0
  180. package/dist/internal/health-check/health-check.module.js.map +1 -0
  181. package/dist/internal/health-check/index.d.ts +6 -0
  182. package/dist/internal/health-check/index.d.ts.map +1 -0
  183. package/dist/internal/health-check/index.js +11 -0
  184. package/dist/internal/health-check/index.js.map +1 -0
  185. package/dist/internal/ip-info/dto/ip-info.dto.d.ts +16 -0
  186. package/dist/internal/ip-info/dto/ip-info.dto.d.ts.map +1 -0
  187. package/dist/internal/ip-info/dto/ip-info.dto.js +3 -0
  188. package/dist/internal/ip-info/dto/ip-info.dto.js.map +1 -0
  189. package/dist/internal/ip-info/index.d.ts +4 -0
  190. package/dist/internal/ip-info/index.d.ts.map +1 -0
  191. package/dist/internal/ip-info/index.js +20 -0
  192. package/dist/internal/ip-info/index.js.map +1 -0
  193. package/dist/internal/ip-info/ip-info.client.d.ts +16 -0
  194. package/dist/internal/ip-info/ip-info.client.d.ts.map +1 -0
  195. package/dist/internal/ip-info/ip-info.client.js +77 -0
  196. package/dist/internal/ip-info/ip-info.client.js.map +1 -0
  197. package/dist/internal/ip-info/ip-info.module.d.ts +3 -0
  198. package/dist/internal/ip-info/ip-info.module.d.ts.map +1 -0
  199. package/dist/internal/ip-info/ip-info.module.js +28 -0
  200. package/dist/internal/ip-info/ip-info.module.js.map +1 -0
  201. package/dist/internal/mlflow/mlflow.client.d.ts +44 -0
  202. package/dist/internal/mlflow/mlflow.client.d.ts.map +1 -0
  203. package/dist/internal/mlflow/mlflow.client.js +184 -0
  204. package/dist/internal/mlflow/mlflow.client.js.map +1 -0
  205. package/dist/internal/mlflow/mlflow.module.d.ts +3 -0
  206. package/dist/internal/mlflow/mlflow.module.d.ts.map +1 -0
  207. package/dist/internal/mlflow/mlflow.module.js +23 -0
  208. package/dist/internal/mlflow/mlflow.module.js.map +1 -0
  209. package/dist/internal/model-research-proxy/anthropic-proxy-research.client.d.ts +52 -0
  210. package/dist/internal/model-research-proxy/anthropic-proxy-research.client.d.ts.map +1 -0
  211. package/dist/internal/model-research-proxy/anthropic-proxy-research.client.js +174 -0
  212. package/dist/internal/model-research-proxy/anthropic-proxy-research.client.js.map +1 -0
  213. package/dist/internal/model-research-proxy/anthropic-proxy-research.client.spec.d.ts +2 -0
  214. package/dist/internal/model-research-proxy/anthropic-proxy-research.client.spec.d.ts.map +1 -0
  215. package/dist/internal/model-research-proxy/anthropic-proxy-research.client.spec.js +145 -0
  216. package/dist/internal/model-research-proxy/anthropic-proxy-research.client.spec.js.map +1 -0
  217. package/dist/internal/model-research-proxy/anthropic-proxy-research.module.d.ts +3 -0
  218. package/dist/internal/model-research-proxy/anthropic-proxy-research.module.d.ts.map +1 -0
  219. package/dist/internal/model-research-proxy/anthropic-proxy-research.module.js +30 -0
  220. package/dist/internal/model-research-proxy/anthropic-proxy-research.module.js.map +1 -0
  221. package/dist/internal/model-research-proxy/index.d.ts +6 -0
  222. package/dist/internal/model-research-proxy/index.d.ts.map +1 -0
  223. package/dist/internal/model-research-proxy/index.js +24 -0
  224. package/dist/internal/model-research-proxy/index.js.map +1 -0
  225. package/dist/internal/model-verify/index.d.ts +4 -0
  226. package/dist/internal/model-verify/index.d.ts.map +1 -0
  227. package/dist/internal/model-verify/index.js +26 -0
  228. package/dist/internal/model-verify/index.js.map +1 -0
  229. package/dist/internal/model-verify/model-verify.client.d.ts +77 -0
  230. package/dist/internal/model-verify/model-verify.client.d.ts.map +1 -0
  231. package/dist/internal/model-verify/model-verify.client.js +324 -0
  232. package/dist/internal/model-verify/model-verify.client.js.map +1 -0
  233. package/dist/internal/ocr/dto/ocr.dto.d.ts +76 -0
  234. package/dist/internal/ocr/dto/ocr.dto.d.ts.map +1 -0
  235. package/dist/internal/ocr/dto/ocr.dto.js +48 -0
  236. package/dist/internal/ocr/dto/ocr.dto.js.map +1 -0
  237. package/dist/internal/ocr/index.d.ts +4 -0
  238. package/dist/internal/ocr/index.d.ts.map +1 -0
  239. package/dist/internal/ocr/index.js +20 -0
  240. package/dist/internal/ocr/index.js.map +1 -0
  241. package/dist/internal/ocr/ocr.client.d.ts +39 -0
  242. package/dist/internal/ocr/ocr.client.d.ts.map +1 -0
  243. package/dist/internal/ocr/ocr.client.js +112 -0
  244. package/dist/internal/ocr/ocr.client.js.map +1 -0
  245. package/dist/internal/ocr/ocr.module.d.ts +3 -0
  246. package/dist/internal/ocr/ocr.module.d.ts.map +1 -0
  247. package/dist/internal/ocr/ocr.module.js +28 -0
  248. package/dist/internal/ocr/ocr.module.js.map +1 -0
  249. package/dist/internal/openai/index.d.ts +3 -0
  250. package/dist/internal/openai/index.d.ts.map +1 -0
  251. package/dist/internal/openai/index.js +19 -0
  252. package/dist/internal/openai/index.js.map +1 -0
  253. package/dist/internal/openai/openai.client.d.ts +36 -0
  254. package/dist/internal/openai/openai.client.d.ts.map +1 -0
  255. package/dist/internal/openai/openai.client.js +112 -0
  256. package/dist/internal/openai/openai.client.js.map +1 -0
  257. package/dist/internal/openai/openai.module.d.ts +3 -0
  258. package/dist/internal/openai/openai.module.d.ts.map +1 -0
  259. package/dist/internal/openai/openai.module.js +30 -0
  260. package/dist/internal/openai/openai.module.js.map +1 -0
  261. package/dist/internal/openclaw/docker-exec.service.d.ts +132 -0
  262. package/dist/internal/openclaw/docker-exec.service.d.ts.map +1 -0
  263. package/dist/internal/openclaw/docker-exec.service.js +544 -0
  264. package/dist/internal/openclaw/docker-exec.service.js.map +1 -0
  265. package/dist/internal/openclaw/index.d.ts +14 -0
  266. package/dist/internal/openclaw/index.d.ts.map +1 -0
  267. package/dist/internal/openclaw/index.js +32 -0
  268. package/dist/internal/openclaw/index.js.map +1 -0
  269. package/dist/internal/openclaw/openclaw-agent-coordination.client.d.ts +73 -0
  270. package/dist/internal/openclaw/openclaw-agent-coordination.client.d.ts.map +1 -0
  271. package/dist/internal/openclaw/openclaw-agent-coordination.client.js +249 -0
  272. package/dist/internal/openclaw/openclaw-agent-coordination.client.js.map +1 -0
  273. package/dist/internal/openclaw/openclaw-context-status.client.d.ts +66 -0
  274. package/dist/internal/openclaw/openclaw-context-status.client.d.ts.map +1 -0
  275. package/dist/internal/openclaw/openclaw-context-status.client.js +164 -0
  276. package/dist/internal/openclaw/openclaw-context-status.client.js.map +1 -0
  277. package/dist/internal/openclaw/openclaw-cron.client.d.ts +61 -0
  278. package/dist/internal/openclaw/openclaw-cron.client.d.ts.map +1 -0
  279. package/dist/internal/openclaw/openclaw-cron.client.js +416 -0
  280. package/dist/internal/openclaw/openclaw-cron.client.js.map +1 -0
  281. package/dist/internal/openclaw/openclaw-gateway.client.d.ts +41 -0
  282. package/dist/internal/openclaw/openclaw-gateway.client.d.ts.map +1 -0
  283. package/dist/internal/openclaw/openclaw-gateway.client.js +175 -0
  284. package/dist/internal/openclaw/openclaw-gateway.client.js.map +1 -0
  285. package/dist/internal/openclaw/openclaw-skill-sync.client.d.ts +222 -0
  286. package/dist/internal/openclaw/openclaw-skill-sync.client.d.ts.map +1 -0
  287. package/dist/internal/openclaw/openclaw-skill-sync.client.js +720 -0
  288. package/dist/internal/openclaw/openclaw-skill-sync.client.js.map +1 -0
  289. package/dist/internal/openclaw/openclaw.client.d.ts +602 -0
  290. package/dist/internal/openclaw/openclaw.client.d.ts.map +1 -0
  291. package/dist/internal/openclaw/openclaw.client.js +3062 -0
  292. package/dist/internal/openclaw/openclaw.client.js.map +1 -0
  293. package/dist/internal/openclaw/openclaw.module.d.ts +3 -0
  294. package/dist/internal/openclaw/openclaw.module.d.ts.map +1 -0
  295. package/dist/internal/openclaw/openclaw.module.js +62 -0
  296. package/dist/internal/openclaw/openclaw.module.js.map +1 -0
  297. package/dist/internal/openclaw/skill-translation.service.d.ts +39 -0
  298. package/dist/internal/openclaw/skill-translation.service.d.ts.map +1 -0
  299. package/dist/internal/openclaw/skill-translation.service.js +217 -0
  300. package/dist/internal/openclaw/skill-translation.service.js.map +1 -0
  301. package/dist/internal/openclaw/types/cron.types.d.ts +112 -0
  302. package/dist/internal/openclaw/types/cron.types.d.ts.map +1 -0
  303. package/dist/internal/openclaw/types/cron.types.js +9 -0
  304. package/dist/internal/openclaw/types/cron.types.js.map +1 -0
  305. package/dist/internal/openspeech/index.d.ts +35 -0
  306. package/dist/internal/openspeech/index.d.ts.map +1 -0
  307. package/dist/internal/openspeech/index.js +56 -0
  308. package/dist/internal/openspeech/index.js.map +1 -0
  309. package/dist/internal/openspeech/openspeech.client.d.ts +304 -0
  310. package/dist/internal/openspeech/openspeech.client.d.ts.map +1 -0
  311. package/dist/internal/openspeech/openspeech.client.js +405 -0
  312. package/dist/internal/openspeech/openspeech.client.js.map +1 -0
  313. package/dist/internal/openspeech/openspeech.factory.d.ts +247 -0
  314. package/dist/internal/openspeech/openspeech.factory.d.ts.map +1 -0
  315. package/dist/internal/openspeech/openspeech.factory.js +406 -0
  316. package/dist/internal/openspeech/openspeech.factory.js.map +1 -0
  317. package/dist/internal/openspeech/openspeech.module.d.ts +45 -0
  318. package/dist/internal/openspeech/openspeech.module.d.ts.map +1 -0
  319. package/dist/internal/openspeech/openspeech.module.js +68 -0
  320. package/dist/internal/openspeech/openspeech.module.js.map +1 -0
  321. package/dist/internal/openspeech/providers/aliyun.provider.d.ts +125 -0
  322. package/dist/internal/openspeech/providers/aliyun.provider.d.ts.map +1 -0
  323. package/dist/internal/openspeech/providers/aliyun.provider.js +274 -0
  324. package/dist/internal/openspeech/providers/aliyun.provider.js.map +1 -0
  325. package/dist/internal/openspeech/providers/base.provider.d.ts +98 -0
  326. package/dist/internal/openspeech/providers/base.provider.d.ts.map +1 -0
  327. package/dist/internal/openspeech/providers/base.provider.js +87 -0
  328. package/dist/internal/openspeech/providers/base.provider.js.map +1 -0
  329. package/dist/internal/openspeech/providers/index.d.ts +10 -0
  330. package/dist/internal/openspeech/providers/index.d.ts.map +1 -0
  331. package/dist/internal/openspeech/providers/index.js +26 -0
  332. package/dist/internal/openspeech/providers/index.js.map +1 -0
  333. package/dist/internal/openspeech/providers/volcengine-streaming.provider.d.ts +291 -0
  334. package/dist/internal/openspeech/providers/volcengine-streaming.provider.d.ts.map +1 -0
  335. package/dist/internal/openspeech/providers/volcengine-streaming.provider.js +1358 -0
  336. package/dist/internal/openspeech/providers/volcengine-streaming.provider.js.map +1 -0
  337. package/dist/internal/openspeech/providers/volcengine.provider.d.ts +144 -0
  338. package/dist/internal/openspeech/providers/volcengine.provider.d.ts.map +1 -0
  339. package/dist/internal/openspeech/providers/volcengine.provider.js +337 -0
  340. package/dist/internal/openspeech/providers/volcengine.provider.js.map +1 -0
  341. package/dist/internal/openspeech/types.d.ts +408 -0
  342. package/dist/internal/openspeech/types.d.ts.map +1 -0
  343. package/dist/internal/openspeech/types.js +11 -0
  344. package/dist/internal/openspeech/types.js.map +1 -0
  345. package/dist/internal/provider-verify/index.d.ts +6 -0
  346. package/dist/internal/provider-verify/index.d.ts.map +1 -0
  347. package/dist/internal/provider-verify/index.js +24 -0
  348. package/dist/internal/provider-verify/index.js.map +1 -0
  349. package/dist/internal/provider-verify/provider-verify.client.d.ts +55 -0
  350. package/dist/internal/provider-verify/provider-verify.client.d.ts.map +1 -0
  351. package/dist/internal/provider-verify/provider-verify.client.js +284 -0
  352. package/dist/internal/provider-verify/provider-verify.client.js.map +1 -0
  353. package/dist/internal/provider-verify/provider-verify.module.d.ts +3 -0
  354. package/dist/internal/provider-verify/provider-verify.module.d.ts.map +1 -0
  355. package/dist/internal/provider-verify/provider-verify.module.js +28 -0
  356. package/dist/internal/provider-verify/provider-verify.module.js.map +1 -0
  357. package/dist/internal/routing-llm/index.d.ts +7 -0
  358. package/dist/internal/routing-llm/index.d.ts.map +1 -0
  359. package/dist/internal/routing-llm/index.js +25 -0
  360. package/dist/internal/routing-llm/index.js.map +1 -0
  361. package/dist/internal/routing-llm/interfaces/routing-llm.interface.d.ts +88 -0
  362. package/dist/internal/routing-llm/interfaces/routing-llm.interface.d.ts.map +1 -0
  363. package/dist/internal/routing-llm/interfaces/routing-llm.interface.js +64 -0
  364. package/dist/internal/routing-llm/interfaces/routing-llm.interface.js.map +1 -0
  365. package/dist/internal/routing-llm/routing-llm.client.d.ts +32 -0
  366. package/dist/internal/routing-llm/routing-llm.client.d.ts.map +1 -0
  367. package/dist/internal/routing-llm/routing-llm.client.js +275 -0
  368. package/dist/internal/routing-llm/routing-llm.client.js.map +1 -0
  369. package/dist/internal/routing-llm/routing-llm.module.d.ts +3 -0
  370. package/dist/internal/routing-llm/routing-llm.module.d.ts.map +1 -0
  371. package/dist/internal/routing-llm/routing-llm.module.js +28 -0
  372. package/dist/internal/routing-llm/routing-llm.module.js.map +1 -0
  373. package/dist/internal/sms/dto/sms.dto.d.ts +156 -0
  374. package/dist/internal/sms/dto/sms.dto.d.ts.map +1 -0
  375. package/dist/internal/sms/dto/sms.dto.js +78 -0
  376. package/dist/internal/sms/dto/sms.dto.js.map +1 -0
  377. package/dist/internal/sms/index.d.ts +14 -0
  378. package/dist/internal/sms/index.d.ts.map +1 -0
  379. package/dist/internal/sms/index.js +37 -0
  380. package/dist/internal/sms/index.js.map +1 -0
  381. package/dist/internal/sms/sms-aliyun.client.d.ts +19 -0
  382. package/dist/internal/sms/sms-aliyun.client.d.ts.map +1 -0
  383. package/dist/internal/sms/sms-aliyun.client.js +74 -0
  384. package/dist/internal/sms/sms-aliyun.client.js.map +1 -0
  385. package/dist/internal/sms/sms-http.client.d.ts +21 -0
  386. package/dist/internal/sms/sms-http.client.d.ts.map +1 -0
  387. package/dist/internal/sms/sms-http.client.js +76 -0
  388. package/dist/internal/sms/sms-http.client.js.map +1 -0
  389. package/dist/internal/sms/sms-tencent.client.d.ts +18 -0
  390. package/dist/internal/sms/sms-tencent.client.d.ts.map +1 -0
  391. package/dist/internal/sms/sms-tencent.client.js +76 -0
  392. package/dist/internal/sms/sms-tencent.client.js.map +1 -0
  393. package/dist/internal/sms/sms-volcengine.client.d.ts +29 -0
  394. package/dist/internal/sms/sms-volcengine.client.d.ts.map +1 -0
  395. package/dist/internal/sms/sms-volcengine.client.js +124 -0
  396. package/dist/internal/sms/sms-volcengine.client.js.map +1 -0
  397. package/dist/internal/sms/sms-zxjc.client.d.ts +18 -0
  398. package/dist/internal/sms/sms-zxjc.client.d.ts.map +1 -0
  399. package/dist/internal/sms/sms-zxjc.client.js +40 -0
  400. package/dist/internal/sms/sms-zxjc.client.js.map +1 -0
  401. package/dist/internal/sse/index.d.ts +3 -0
  402. package/dist/internal/sse/index.d.ts.map +1 -0
  403. package/dist/internal/sse/index.js +19 -0
  404. package/dist/internal/sse/index.js.map +1 -0
  405. package/dist/internal/sse/sse-client.service.spec.d.ts +2 -0
  406. package/dist/internal/sse/sse-client.service.spec.d.ts.map +1 -0
  407. package/dist/internal/sse/sse-client.service.spec.js +17 -0
  408. package/dist/internal/sse/sse-client.service.spec.js.map +1 -0
  409. package/dist/internal/sse/sse.client.d.ts +63 -0
  410. package/dist/internal/sse/sse.client.d.ts.map +1 -0
  411. package/dist/internal/sse/sse.client.js +304 -0
  412. package/dist/internal/sse/sse.client.js.map +1 -0
  413. package/dist/internal/sse/sse.module.d.ts +3 -0
  414. package/dist/internal/sse/sse.module.d.ts.map +1 -0
  415. package/dist/internal/sse/sse.module.js +30 -0
  416. package/dist/internal/sse/sse.module.js.map +1 -0
  417. package/dist/internal/third-party-sse/index.d.ts +3 -0
  418. package/dist/internal/third-party-sse/index.d.ts.map +1 -0
  419. package/dist/internal/third-party-sse/index.js +19 -0
  420. package/dist/internal/third-party-sse/index.js.map +1 -0
  421. package/dist/internal/third-party-sse/third-party-sse.client.d.ts +14 -0
  422. package/dist/internal/third-party-sse/third-party-sse.client.d.ts.map +1 -0
  423. package/dist/internal/third-party-sse/third-party-sse.client.js +63 -0
  424. package/dist/internal/third-party-sse/third-party-sse.client.js.map +1 -0
  425. package/dist/internal/third-party-sse/third-party-sse.module.d.ts +3 -0
  426. package/dist/internal/third-party-sse/third-party-sse.module.d.ts.map +1 -0
  427. package/dist/internal/third-party-sse/third-party-sse.module.js +23 -0
  428. package/dist/internal/third-party-sse/third-party-sse.module.js.map +1 -0
  429. package/dist/internal/third-party-sse/third-party-sse.service.spec.d.ts +2 -0
  430. package/dist/internal/third-party-sse/third-party-sse.service.spec.d.ts.map +1 -0
  431. package/dist/internal/third-party-sse/third-party-sse.service.spec.js +17 -0
  432. package/dist/internal/third-party-sse/third-party-sse.service.spec.js.map +1 -0
  433. package/dist/internal/verify/index.d.ts +3 -0
  434. package/dist/internal/verify/index.d.ts.map +1 -0
  435. package/dist/internal/verify/index.js +19 -0
  436. package/dist/internal/verify/index.js.map +1 -0
  437. package/dist/internal/verify/verify.client.d.ts +12 -0
  438. package/dist/internal/verify/verify.client.d.ts.map +1 -0
  439. package/dist/internal/verify/verify.client.js +57 -0
  440. package/dist/internal/verify/verify.client.js.map +1 -0
  441. package/dist/internal/verify/verify.module.d.ts +3 -0
  442. package/dist/internal/verify/verify.module.d.ts.map +1 -0
  443. package/dist/internal/verify/verify.module.js +23 -0
  444. package/dist/internal/verify/verify.module.js.map +1 -0
  445. package/dist/internal/volcengine-tts/dto/tts.dto.d.ts +52 -0
  446. package/dist/internal/volcengine-tts/dto/tts.dto.d.ts.map +1 -0
  447. package/dist/internal/volcengine-tts/dto/tts.dto.js +59 -0
  448. package/dist/internal/volcengine-tts/dto/tts.dto.js.map +1 -0
  449. package/dist/internal/volcengine-tts/index.d.ts +4 -0
  450. package/dist/internal/volcengine-tts/index.d.ts.map +1 -0
  451. package/dist/internal/volcengine-tts/index.js +20 -0
  452. package/dist/internal/volcengine-tts/index.js.map +1 -0
  453. package/dist/internal/volcengine-tts/volcengine-tts.client.d.ts +104 -0
  454. package/dist/internal/volcengine-tts/volcengine-tts.client.d.ts.map +1 -0
  455. package/dist/internal/volcengine-tts/volcengine-tts.client.js +690 -0
  456. package/dist/internal/volcengine-tts/volcengine-tts.client.js.map +1 -0
  457. package/dist/internal/volcengine-tts/volcengine-tts.module.d.ts +3 -0
  458. package/dist/internal/volcengine-tts/volcengine-tts.module.d.ts.map +1 -0
  459. package/dist/internal/volcengine-tts/volcengine-tts.module.js +34 -0
  460. package/dist/internal/volcengine-tts/volcengine-tts.module.js.map +1 -0
  461. package/dist/internal/wechat/index.d.ts +3 -0
  462. package/dist/internal/wechat/index.d.ts.map +1 -0
  463. package/dist/internal/wechat/index.js +19 -0
  464. package/dist/internal/wechat/index.js.map +1 -0
  465. package/dist/internal/wechat/wechat-client.service.spec.d.ts +2 -0
  466. package/dist/internal/wechat/wechat-client.service.spec.d.ts.map +1 -0
  467. package/dist/internal/wechat/wechat-client.service.spec.js +17 -0
  468. package/dist/internal/wechat/wechat-client.service.spec.js.map +1 -0
  469. package/dist/internal/wechat/wechat.client.d.ts +3 -0
  470. package/dist/internal/wechat/wechat.client.d.ts.map +1 -0
  471. package/dist/internal/wechat/wechat.client.js +17 -0
  472. package/dist/internal/wechat/wechat.client.js.map +1 -0
  473. package/dist/internal/wechat/wechat.module.d.ts +3 -0
  474. package/dist/internal/wechat/wechat.module.d.ts.map +1 -0
  475. package/dist/internal/wechat/wechat.module.js +21 -0
  476. package/dist/internal/wechat/wechat.module.js.map +1 -0
  477. package/dist/plugin/decorators/inject-client.decorator.d.ts +40 -0
  478. package/dist/plugin/decorators/inject-client.decorator.d.ts.map +1 -0
  479. package/dist/plugin/decorators/inject-client.decorator.js +63 -0
  480. package/dist/plugin/decorators/inject-client.decorator.js.map +1 -0
  481. package/dist/plugin/index.d.ts +14 -0
  482. package/dist/plugin/index.d.ts.map +1 -0
  483. package/dist/plugin/index.js +34 -0
  484. package/dist/plugin/index.js.map +1 -0
  485. package/dist/plugin/interceptors/http-logging.interceptor.d.ts +51 -0
  486. package/dist/plugin/interceptors/http-logging.interceptor.d.ts.map +1 -0
  487. package/dist/plugin/interceptors/http-logging.interceptor.js +84 -0
  488. package/dist/plugin/interceptors/http-logging.interceptor.js.map +1 -0
  489. package/dist/plugin/interfaces/client.interface.d.ts +80 -0
  490. package/dist/plugin/interfaces/client.interface.d.ts.map +1 -0
  491. package/dist/plugin/interfaces/client.interface.js +8 -0
  492. package/dist/plugin/interfaces/client.interface.js.map +1 -0
  493. package/dist/plugin/utils/retry.util.d.ts +49 -0
  494. package/dist/plugin/utils/retry.util.d.ts.map +1 -0
  495. package/dist/plugin/utils/retry.util.js +110 -0
  496. package/dist/plugin/utils/retry.util.js.map +1 -0
  497. package/package.json +55 -0
@@ -0,0 +1,720 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __metadata = (this && this.__metadata) || function (k, v) {
42
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
+ };
44
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
45
+ return function (target, key) { decorator(target, key, paramIndex); }
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.OpenClawSkillSyncClient = void 0;
49
+ /**
50
+ * OpenClaw Skill Sync Client
51
+ *
52
+ * 职责:
53
+ * - 从 GitHub 仓库同步 OpenClaw 技能库
54
+ * - 解析 README.md 提取技能信息
55
+ * - 支持增量同步和全量同步
56
+ * - 支持本地文件缓存(GitHub 不可用时的降级方案)
57
+ */
58
+ const common_1 = require("@nestjs/common");
59
+ const axios_1 = require("@nestjs/axios");
60
+ const config_1 = require("@nestjs/config");
61
+ const nest_winston_1 = require("nest-winston");
62
+ const winston_1 = require("winston");
63
+ const rxjs_1 = require("rxjs");
64
+ const fs = __importStar(require("fs"));
65
+ const path = __importStar(require("path"));
66
+ const yaml = __importStar(require("js-yaml"));
67
+ const infra_contracts_1 = require("@dofe/infra-contracts");
68
+ /**
69
+ * 分类映射(将 README 中的分类名转换为 slug)
70
+ */
71
+ const CATEGORY_MAP = {
72
+ 'Coding Agents & IDEs': 'coding-agents',
73
+ 'Git & GitHub': 'git-github',
74
+ Moltbook: 'moltbook',
75
+ 'Web & Frontend Development': 'web-frontend',
76
+ 'DevOps & Cloud': 'devops-cloud',
77
+ 'Browser & Automation': 'browser-automation',
78
+ 'Image & Video Generation': 'image-video-gen',
79
+ 'Apple Apps & Services': 'apple-apps',
80
+ 'Search & Research': 'search-research',
81
+ 'Clawdbot Tools': 'clawdbot-tools',
82
+ 'CLI Utilities': 'cli-utilities',
83
+ 'Marketing & Sales': 'marketing-sales',
84
+ 'Productivity & Tasks': 'productivity-tasks',
85
+ 'AI & LLMs': 'ai-llms',
86
+ 'Data & Analytics': 'data-analytics',
87
+ Finance: 'finance',
88
+ 'Media & Streaming': 'media-streaming',
89
+ 'Notes & PKM': 'notes-pkm',
90
+ 'iOS & macOS Development': 'ios-macos-dev',
91
+ Transportation: 'transportation',
92
+ 'Personal Development': 'personal-dev',
93
+ 'Health & Fitness': 'health-fitness',
94
+ Communication: 'communication',
95
+ 'Speech & Transcription': 'speech-transcription',
96
+ 'Smart Home & IoT': 'smart-home-iot',
97
+ 'Shopping & E-commerce': 'shopping-ecommerce',
98
+ 'Calendar & Scheduling': 'calendar-scheduling',
99
+ 'PDF & Documents': 'pdf-documents',
100
+ 'Self-Hosted & Automation': 'self-hosted',
101
+ 'Security & Passwords': 'security-passwords',
102
+ Gaming: 'gaming',
103
+ 'Agent-to-Agent Protocols': 'agent-protocols',
104
+ };
105
+ /**
106
+ * 分类中文名称映射
107
+ */
108
+ const CATEGORY_ZH_MAP = {
109
+ 'coding-agents': '编程代理与IDE',
110
+ 'git-github': 'Git与GitHub',
111
+ moltbook: 'Moltbook',
112
+ 'web-frontend': 'Web与前端开发',
113
+ 'devops-cloud': 'DevOps与云服务',
114
+ 'browser-automation': '浏览器与自动化',
115
+ 'image-video-gen': '图像与视频生成',
116
+ 'apple-apps': 'Apple应用与服务',
117
+ 'search-research': '搜索与研究',
118
+ 'clawdbot-tools': 'Clawdbot工具',
119
+ 'cli-utilities': '命令行工具',
120
+ 'marketing-sales': '营销与销售',
121
+ 'productivity-tasks': '生产力与任务',
122
+ 'ai-llms': 'AI与大语言模型',
123
+ 'data-analytics': '数据与分析',
124
+ finance: '金融',
125
+ 'media-streaming': '媒体与流媒体',
126
+ 'notes-pkm': '笔记与知识管理',
127
+ 'ios-macos-dev': 'iOS与macOS开发',
128
+ transportation: '交通出行',
129
+ 'personal-dev': '个人发展',
130
+ 'health-fitness': '健康与健身',
131
+ communication: '通讯',
132
+ 'speech-transcription': '语音与转录',
133
+ 'smart-home-iot': '智能家居与物联网',
134
+ 'shopping-ecommerce': '购物与电商',
135
+ 'calendar-scheduling': '日历与日程',
136
+ 'pdf-documents': 'PDF与文档',
137
+ 'self-hosted': '自托管与自动化',
138
+ 'security-passwords': '安全与密码',
139
+ gaming: '游戏',
140
+ 'agent-protocols': '代理间协议',
141
+ };
142
+ /**
143
+ * 分类图标映射
144
+ */
145
+ const CATEGORY_ICON_MAP = {
146
+ 'coding-agents': '💻',
147
+ 'git-github': '🔀',
148
+ moltbook: '📓',
149
+ 'web-frontend': '🌐',
150
+ 'devops-cloud': '☁️',
151
+ 'browser-automation': '🤖',
152
+ 'image-video-gen': '🎨',
153
+ 'apple-apps': '🍎',
154
+ 'search-research': '🔍',
155
+ 'clawdbot-tools': '🔧',
156
+ 'cli-utilities': '⌨️',
157
+ 'marketing-sales': '📈',
158
+ 'productivity-tasks': '✅',
159
+ 'ai-llms': '🧠',
160
+ 'data-analytics': '📊',
161
+ finance: '💰',
162
+ 'media-streaming': '🎬',
163
+ 'notes-pkm': '📝',
164
+ 'ios-macos-dev': '📱',
165
+ transportation: '🚗',
166
+ 'personal-dev': '🌱',
167
+ 'health-fitness': '💪',
168
+ communication: '💬',
169
+ 'speech-transcription': '🎤',
170
+ 'smart-home-iot': '🏠',
171
+ 'shopping-ecommerce': '🛒',
172
+ 'calendar-scheduling': '📅',
173
+ 'pdf-documents': '📄',
174
+ 'self-hosted': '🖥️',
175
+ 'security-passwords': '🔐',
176
+ gaming: '🎮',
177
+ 'agent-protocols': '🔗',
178
+ };
179
+ let OpenClawSkillSyncClient = class OpenClawSkillSyncClient {
180
+ logger;
181
+ httpService;
182
+ configService;
183
+ repoUrl = 'https://raw.githubusercontent.com/VoltAgent/awesome-openclaw-skills/main/README.md';
184
+ tosSkillsUrl = process.env.SKILLS_URL ||
185
+ 'https://pardx.tos-cn-shanghai.volces.com/clawskills/skills.json';
186
+ requestTimeout = 60000; // 60 秒超时
187
+ localCachePath;
188
+ githubToken;
189
+ githubProxyUrl;
190
+ constructor(logger, httpService, configService) {
191
+ this.logger = logger;
192
+ this.httpService = httpService;
193
+ this.configService = configService;
194
+ // 本地缓存文件路径:apps/api/openclaw-skills/README.md
195
+ this.localCachePath = path.resolve(__dirname, '../../../../../openclaw-skills/README.md');
196
+ // GitHub Token 和代理 URL(可选)
197
+ this.githubToken = this.configService.get('GITHUB_TOKEN');
198
+ this.githubProxyUrl = this.configService.get('GITHUB_PROXY_URL');
199
+ }
200
+ /**
201
+ * 从 GitHub 获取 README 内容,失败时从本地缓存读取
202
+ */
203
+ async fetchReadme() {
204
+ this.logger.info('OpenClawSkillSyncClient: 开始获取 README');
205
+ try {
206
+ // 尝试从 GitHub 获取
207
+ const content = await this.fetchFromGitHub();
208
+ // 成功获取后,保存到本地缓存
209
+ await this.saveToLocalCache(content);
210
+ return content;
211
+ }
212
+ catch (error) {
213
+ this.logger.warn('OpenClawSkillSyncClient: GitHub 获取失败,尝试从本地缓存读取', {
214
+ error: error instanceof Error ? error.message : 'Unknown error',
215
+ });
216
+ // 从本地缓存读取
217
+ return this.readFromLocalCache();
218
+ }
219
+ }
220
+ /**
221
+ * 构建 GitHub 请求的 headers 和 URL
222
+ */
223
+ getGitHubRequestConfig(url) {
224
+ const headers = {};
225
+ if (this.githubToken) {
226
+ headers['Authorization'] = `token ${this.githubToken}`;
227
+ }
228
+ // 如果配置了代理 URL,替换 GitHub 域名
229
+ let finalUrl = url;
230
+ if (this.githubProxyUrl) {
231
+ finalUrl = url.replace('https://raw.githubusercontent.com', this.githubProxyUrl);
232
+ }
233
+ return { url: finalUrl, headers };
234
+ }
235
+ /**
236
+ * 检查 GitHub API Rate Limit 响应头
237
+ * remaining < 10 时告警,429 时抛出友好错误
238
+ */
239
+ checkRateLimit(headers) {
240
+ const remaining = Number(headers['x-ratelimit-remaining']);
241
+ const reset = Number(headers['x-ratelimit-reset']);
242
+ if (isNaN(remaining))
243
+ return;
244
+ if (remaining === 0) {
245
+ const resetTime = reset
246
+ ? new Date(reset * 1000).toLocaleTimeString()
247
+ : 'unknown';
248
+ throw new Error(`GitHub API 请求频率超限,请配置 GITHUB_TOKEN 环境变量以提高限额(60→5000次/小时)。重置时间:${resetTime}`);
249
+ }
250
+ if (remaining < 10) {
251
+ this.logger.warn('OpenClawSkillSyncClient: GitHub API Rate Limit 即将耗尽', {
252
+ remaining,
253
+ resetAt: reset ? new Date(reset * 1000).toISOString() : 'unknown',
254
+ hasToken: !!this.githubToken,
255
+ });
256
+ }
257
+ }
258
+ /**
259
+ * 从 AxiosError 中检测 429 状态码并抛出友好错误
260
+ */
261
+ handleGitHubError(error) {
262
+ const axiosError = error;
263
+ if (axiosError?.response?.status === 429) {
264
+ const reset = Number(axiosError.response.headers?.['x-ratelimit-reset']);
265
+ const resetTime = reset
266
+ ? new Date(reset * 1000).toLocaleTimeString()
267
+ : 'unknown';
268
+ throw new Error(`GitHub API 请求频率超限(429),请配置 GITHUB_TOKEN 环境变量以提高限额(60→5000次/小时)。重置时间:${resetTime}`);
269
+ }
270
+ throw error;
271
+ }
272
+ /**
273
+ * 从 GitHub 获取 README 内容
274
+ */
275
+ async fetchFromGitHub() {
276
+ const { url, headers } = this.getGitHubRequestConfig(this.repoUrl);
277
+ const response = await (0, rxjs_1.firstValueFrom)(this.httpService.get(url, { headers }).pipe((0, rxjs_1.timeout)(this.requestTimeout), (0, rxjs_1.catchError)((error) => {
278
+ this.logger.error('OpenClawSkillSyncClient: GitHub 请求失败', {
279
+ error: error instanceof Error ? error.message : 'Unknown error',
280
+ });
281
+ throw error;
282
+ })));
283
+ this.logger.info('OpenClawSkillSyncClient: GitHub README 获取成功', {
284
+ contentLength: response.data.length,
285
+ });
286
+ return response.data;
287
+ }
288
+ /**
289
+ * 保存内容到本地缓存
290
+ */
291
+ async saveToLocalCache(content) {
292
+ try {
293
+ // 确保目录存在
294
+ const dir = path.dirname(this.localCachePath);
295
+ if (!fs.existsSync(dir)) {
296
+ fs.mkdirSync(dir, { recursive: true });
297
+ }
298
+ fs.writeFileSync(this.localCachePath, content, 'utf-8');
299
+ this.logger.info('OpenClawSkillSyncClient: 已保存到本地缓存', {
300
+ path: this.localCachePath,
301
+ });
302
+ }
303
+ catch (error) {
304
+ this.logger.warn('OpenClawSkillSyncClient: 保存本地缓存失败', {
305
+ error: error instanceof Error ? error.message : 'Unknown error',
306
+ });
307
+ // 保存失败不影响主流程
308
+ }
309
+ }
310
+ /**
311
+ * 从本地缓存读取 README 内容
312
+ */
313
+ readFromLocalCache() {
314
+ if (!fs.existsSync(this.localCachePath)) {
315
+ this.logger.error('OpenClawSkillSyncClient: 本地缓存文件不存在', {
316
+ path: this.localCachePath,
317
+ });
318
+ throw new Error(`本地缓存文件不存在: ${this.localCachePath}`);
319
+ }
320
+ const content = fs.readFileSync(this.localCachePath, 'utf-8');
321
+ this.logger.info('OpenClawSkillSyncClient: 从本地缓存读取成功', {
322
+ path: this.localCachePath,
323
+ contentLength: content.length,
324
+ });
325
+ return content;
326
+ }
327
+ /**
328
+ * 解析 README 内容,提取技能信息
329
+ * 只处理 URL 以 SKILL.md 结尾的技能
330
+ * 自动去重:相同 slug 只保留第一个
331
+ */
332
+ parseReadme(content) {
333
+ const skillsMap = new Map();
334
+ let currentCategory = '';
335
+ let skippedCount = 0;
336
+ let duplicateCount = 0;
337
+ // 按行解析
338
+ const lines = content.split('\n');
339
+ for (const line of lines) {
340
+ // 检测分类标题(<summary><h3>...)
341
+ const categoryMatch = line.match(/<summary><h3[^>]*>([^<]+)<\/h3><\/summary>/);
342
+ if (categoryMatch) {
343
+ currentCategory = categoryMatch[1].trim();
344
+ continue;
345
+ }
346
+ // 检测技能条目(- [slug](url) - description)
347
+ const skillMatch = line.match(/^- \[([^\]]+)\]\(([^)]+)\)\s*-\s*(.+)$/);
348
+ if (skillMatch && currentCategory) {
349
+ const [, slug, sourceUrl, description] = skillMatch;
350
+ // 只处理以 SKILL.md 结尾的 URL
351
+ if (!sourceUrl.trim().endsWith('SKILL.md')) {
352
+ skippedCount++;
353
+ continue;
354
+ }
355
+ const trimmedSlug = slug.trim();
356
+ // 检查是否已存在相同 slug(去重)
357
+ if (skillsMap.has(trimmedSlug)) {
358
+ duplicateCount++;
359
+ this.logger.debug('OpenClawSkillSyncClient: 跳过重复 slug', {
360
+ slug: trimmedSlug,
361
+ sourceUrl: sourceUrl.trim(),
362
+ });
363
+ continue;
364
+ }
365
+ // 从 URL 提取作者
366
+ // URL 格式: https://github.com/openclaw/skills/tree/main/skills/{author}/{slug}/SKILL.md
367
+ const authorMatch = sourceUrl.match(/\/skills\/([^/]+)\/[^/]+\/SKILL\.md/);
368
+ const author = authorMatch ? authorMatch[1] : 'unknown';
369
+ skillsMap.set(trimmedSlug, {
370
+ slug: trimmedSlug,
371
+ name: this.slugToName(trimmedSlug),
372
+ description: description.trim(),
373
+ category: CATEGORY_MAP[currentCategory] || this.slugify(currentCategory),
374
+ author,
375
+ sourceUrl: sourceUrl.trim(),
376
+ });
377
+ }
378
+ }
379
+ const skills = Array.from(skillsMap.values());
380
+ this.logger.info('OpenClawSkillSyncClient: README 解析完成', {
381
+ totalSkills: skills.length,
382
+ skippedSkills: skippedCount,
383
+ duplicateSkills: duplicateCount,
384
+ categories: [...new Set(skills.map((s) => s.category))].length,
385
+ });
386
+ return skills;
387
+ }
388
+ /**
389
+ * 将 slug 转换为可读名称
390
+ */
391
+ slugToName(slug) {
392
+ return slug
393
+ .split('-')
394
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
395
+ .join(' ');
396
+ }
397
+ /**
398
+ * 将字符串转换为 slug
399
+ */
400
+ slugify(text) {
401
+ return text
402
+ .toLowerCase()
403
+ .replace(/[^a-z0-9]+/g, '-')
404
+ .replace(/^-|-$/g, '');
405
+ }
406
+ /**
407
+ * 获取所有分类(包含中英文名称和图标)
408
+ */
409
+ getCategories() {
410
+ return Object.entries(CATEGORY_MAP).map(([name, slug], index) => ({
411
+ slug,
412
+ name,
413
+ nameZh: CATEGORY_ZH_MAP[slug] || name,
414
+ icon: CATEGORY_ICON_MAP[slug] || '📦',
415
+ sortOrder: index + 1,
416
+ }));
417
+ }
418
+ /**
419
+ * 获取单个技能的 SKILL.md 内容
420
+ * 优先使用 raw URL,失败时 fallback 到 GitHub API(适用于 raw.githubusercontent.com 被屏蔽的环境)
421
+ * @param sourceUrl GitHub tree URL (如 https://github.com/openclaw/skills/tree/main/skills/author/slug/SKILL.md)
422
+ */
423
+ async fetchSkillDefinition(sourceUrl) {
424
+ this.logger.info('OpenClawSkillSyncClient: 获取 SKILL.md 内容', {
425
+ sourceUrl,
426
+ });
427
+ // 优先尝试 raw URL
428
+ const rawUrl = this.convertToRawUrl(sourceUrl);
429
+ const { url, headers } = this.getGitHubRequestConfig(rawUrl);
430
+ try {
431
+ const response = await (0, rxjs_1.firstValueFrom)(this.httpService.get(url, { headers }).pipe((0, rxjs_1.timeout)(this.requestTimeout), (0, rxjs_1.catchError)((error) => {
432
+ throw error;
433
+ })));
434
+ const content = response.data;
435
+ this.logger.info('OpenClawSkillSyncClient: SKILL.md 获取成功 (raw)', {
436
+ contentLength: content.length,
437
+ });
438
+ return this.parseSkillMd(content, sourceUrl);
439
+ }
440
+ catch (rawError) {
441
+ this.logger.warn('OpenClawSkillSyncClient: raw URL 获取失败,尝试 GitHub API', {
442
+ rawUrl,
443
+ error: rawError instanceof Error ? rawError.message : 'Unknown error',
444
+ });
445
+ }
446
+ // Fallback: 使用 GitHub API(api.github.com 通常不被屏蔽)
447
+ const apiUrl = this.convertToApiUrl(sourceUrl);
448
+ if (!apiUrl) {
449
+ throw new Error(`无法将 sourceUrl 转换为 GitHub API URL: ${sourceUrl}`);
450
+ }
451
+ const apiHeaders = {
452
+ Accept: 'application/vnd.github.v3+json',
453
+ };
454
+ if (this.githubToken) {
455
+ apiHeaders['Authorization'] = `token ${this.githubToken}`;
456
+ }
457
+ try {
458
+ const response = await (0, rxjs_1.firstValueFrom)(this.httpService
459
+ .get(apiUrl, {
460
+ headers: apiHeaders,
461
+ })
462
+ .pipe((0, rxjs_1.timeout)(this.requestTimeout), (0, rxjs_1.catchError)((error) => {
463
+ this.handleGitHubError(error);
464
+ })));
465
+ this.checkRateLimit(response.headers);
466
+ const content = Buffer.from(response.data.content, 'base64').toString('utf-8');
467
+ this.logger.info('OpenClawSkillSyncClient: SKILL.md 获取成功 (GitHub API)', { contentLength: content.length });
468
+ return this.parseSkillMd(content, sourceUrl);
469
+ }
470
+ catch (error) {
471
+ this.logger.error('OpenClawSkillSyncClient: 获取 SKILL.md 全部失败', {
472
+ sourceUrl,
473
+ error: error instanceof Error ? error.message : 'Unknown error',
474
+ });
475
+ throw error;
476
+ }
477
+ }
478
+ /**
479
+ * 将 GitHub tree URL 转换为 raw URL
480
+ */
481
+ convertToRawUrl(treeUrl) {
482
+ // https://github.com/openclaw/skills/tree/main/skills/author/slug/SKILL.md
483
+ // -> https://raw.githubusercontent.com/openclaw/skills/main/skills/author/slug/SKILL.md
484
+ return treeUrl
485
+ .replace('github.com', 'raw.githubusercontent.com')
486
+ .replace('/tree/', '/');
487
+ }
488
+ /**
489
+ * 将 GitHub tree URL 转换为 GitHub API URL
490
+ * https://github.com/{owner}/{repo}/tree/{ref}/{path}
491
+ * -> https://api.github.com/repos/{owner}/{repo}/contents/{path}?ref={ref}
492
+ */
493
+ convertToApiUrl(treeUrl) {
494
+ const match = treeUrl.match(/github\.com\/([^/]+)\/([^/]+)\/tree\/([^/]+)\/(.+)/);
495
+ if (!match)
496
+ return null;
497
+ const [, owner, repo, ref, filePath] = match;
498
+ return `https://api.github.com/repos/${owner}/${repo}/contents/${filePath}?ref=${ref}`;
499
+ }
500
+ /**
501
+ * 将 SKILL.md 的 GitHub tree URL 转换为其所在目录的 API URL
502
+ */
503
+ convertToDirApiUrl(sourceUrl) {
504
+ const dirUrl = sourceUrl.replace(/\/SKILL\.md$/, '');
505
+ return this.convertToApiUrl(dirUrl);
506
+ }
507
+ /**
508
+ * 解析 SKILL.md 内容
509
+ * 提取 YAML frontmatter 和 Markdown 内容
510
+ */
511
+ parseSkillMd(content, sourceUrl) {
512
+ // 匹配 YAML frontmatter (--- ... ---)
513
+ const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
514
+ if (!frontmatterMatch) {
515
+ // 没有 frontmatter,整个内容作为 Markdown
516
+ return {
517
+ name: '',
518
+ version: '1.0.0',
519
+ description: '',
520
+ content: content,
521
+ frontmatter: {},
522
+ sourceUrl,
523
+ };
524
+ }
525
+ const [, yamlContent, markdownContent] = frontmatterMatch;
526
+ // 使用 js-yaml 解析 YAML frontmatter
527
+ let frontmatter = {};
528
+ try {
529
+ const parsed = yaml.load(yamlContent);
530
+ frontmatter =
531
+ parsed && typeof parsed === 'object'
532
+ ? parsed
533
+ : {};
534
+ }
535
+ catch (error) {
536
+ this.logger.warn('OpenClawSkillSyncClient: YAML 解析失败,使用空对象', {
537
+ error: error instanceof Error ? error.message : 'Unknown error',
538
+ });
539
+ }
540
+ return {
541
+ name: frontmatter.name || '',
542
+ version: String(frontmatter.version || '1.0.0'),
543
+ description: frontmatter.description || '',
544
+ homepage: frontmatter.homepage,
545
+ repository: frontmatter.repository,
546
+ userInvocable: frontmatter['user-invocable'],
547
+ tags: frontmatter.tags,
548
+ metadata: frontmatter.metadata,
549
+ content: markdownContent.trim(),
550
+ frontmatter,
551
+ sourceUrl,
552
+ };
553
+ }
554
+ /**
555
+ * 获取技能的完整目录内容
556
+ * 使用 GitHub Contents API 递归获取目录下所有文件
557
+ */
558
+ async fetchSkillDirectory(sourceUrl) {
559
+ const apiUrl = this.convertToDirApiUrl(sourceUrl);
560
+ if (!apiUrl) {
561
+ throw new Error(`无法解析目录 URL: ${sourceUrl}`);
562
+ }
563
+ const files = [];
564
+ const state = { totalSize: 0 };
565
+ await this.fetchDirectoryRecursive(apiUrl, '', files, state);
566
+ this.logger.info('OpenClawSkillSyncClient: 目录获取完成', {
567
+ sourceUrl,
568
+ fileCount: files.length,
569
+ totalSize: state.totalSize,
570
+ });
571
+ return files;
572
+ }
573
+ /**
574
+ * 递归获取 GitHub 目录内容
575
+ */
576
+ async fetchDirectoryRecursive(apiUrl, basePath, files, state) {
577
+ const apiHeaders = {
578
+ Accept: 'application/vnd.github.v3+json',
579
+ };
580
+ if (this.githubToken) {
581
+ apiHeaders['Authorization'] = `token ${this.githubToken}`;
582
+ }
583
+ const response = await (0, rxjs_1.firstValueFrom)(this.httpService
584
+ .get(apiUrl, { headers: apiHeaders })
585
+ .pipe((0, rxjs_1.timeout)(this.requestTimeout), (0, rxjs_1.catchError)((e) => {
586
+ this.handleGitHubError(e);
587
+ })));
588
+ this.checkRateLimit(response.headers);
589
+ for (const item of response.data) {
590
+ if (infra_contracts_1.SKILL_LIMITS.EXCLUDED_FILES.includes(item.name))
591
+ continue;
592
+ if (item.type === 'file') {
593
+ if (files.length >= infra_contracts_1.SKILL_LIMITS.MAX_FILE_COUNT) {
594
+ throw new Error(`文件数量超过限制: ${infra_contracts_1.SKILL_LIMITS.MAX_FILE_COUNT}`);
595
+ }
596
+ state.totalSize += item.size;
597
+ if (state.totalSize > infra_contracts_1.SKILL_LIMITS.MAX_DIR_SIZE) {
598
+ throw new Error(`目录总大小超过限制: ${infra_contracts_1.SKILL_LIMITS.MAX_DIR_SIZE} bytes`);
599
+ }
600
+ const relativePath = basePath ? `${basePath}/${item.name}` : item.name;
601
+ let content;
602
+ if (item.content && item.encoding === 'base64') {
603
+ content = Buffer.from(item.content, 'base64').toString('utf-8');
604
+ }
605
+ else if (item.download_url) {
606
+ const { url, headers } = this.getGitHubRequestConfig(item.download_url);
607
+ const fileResponse = await (0, rxjs_1.firstValueFrom)(this.httpService
608
+ .get(url, { headers, responseType: 'text' })
609
+ .pipe((0, rxjs_1.timeout)(15000), (0, rxjs_1.catchError)((e) => {
610
+ throw e;
611
+ })));
612
+ content =
613
+ typeof fileResponse.data === 'string'
614
+ ? fileResponse.data
615
+ : JSON.stringify(fileResponse.data);
616
+ }
617
+ else {
618
+ continue;
619
+ }
620
+ files.push({ relativePath, content, size: item.size });
621
+ }
622
+ else if (item.type === 'dir') {
623
+ const subDirUrl = apiUrl.replace(/\/contents\/[^?]+/, `/contents/${item.path}`);
624
+ await this.fetchDirectoryRecursive(subDirUrl, basePath ? `${basePath}/${item.name}` : item.name, files, state);
625
+ }
626
+ }
627
+ }
628
+ /**
629
+ * 获取 Skill 的 _meta.json 版本信息
630
+ * @param sourceUrl GitHub tree URL for SKILL.md
631
+ * @returns SkillMetaInfo or null if not found
632
+ */
633
+ async fetchSkillMeta(sourceUrl) {
634
+ const metaUrl = sourceUrl.replace(/SKILL\.md$/, '_meta.json');
635
+ // 尝试 raw URL
636
+ const rawUrl = this.convertToRawUrl(metaUrl);
637
+ const { url, headers } = this.getGitHubRequestConfig(rawUrl);
638
+ try {
639
+ const response = await (0, rxjs_1.firstValueFrom)(this.httpService.get(url, { headers }).pipe((0, rxjs_1.timeout)(15000), (0, rxjs_1.catchError)((e) => {
640
+ throw e;
641
+ })));
642
+ const data = typeof response.data === 'string'
643
+ ? JSON.parse(response.data)
644
+ : response.data;
645
+ return data;
646
+ }
647
+ catch {
648
+ // Fallback: GitHub API
649
+ }
650
+ const apiUrl = this.convertToApiUrl(metaUrl);
651
+ if (!apiUrl)
652
+ return null;
653
+ const apiHeaders = {
654
+ Accept: 'application/vnd.github.v3+json',
655
+ };
656
+ if (this.githubToken) {
657
+ apiHeaders['Authorization'] = `token ${this.githubToken}`;
658
+ }
659
+ try {
660
+ const response = await (0, rxjs_1.firstValueFrom)(this.httpService
661
+ .get(apiUrl, {
662
+ headers: apiHeaders,
663
+ })
664
+ .pipe((0, rxjs_1.timeout)(15000), (0, rxjs_1.catchError)((e) => {
665
+ this.handleGitHubError(e);
666
+ })));
667
+ this.checkRateLimit(response.headers);
668
+ const content = Buffer.from(response.data.content, 'base64').toString('utf-8');
669
+ return JSON.parse(content);
670
+ }
671
+ catch {
672
+ return null;
673
+ }
674
+ }
675
+ /**
676
+ * 从 TOS 获取技能列表
677
+ * 数据源: https://pardx.tos-cn-shanghai.volces.com/clawskills/skills.json
678
+ */
679
+ async fetchTosSkills() {
680
+ this.logger.info('OpenClawSkillSyncClient: 开始从 TOS 获取技能列表');
681
+ try {
682
+ const response = await (0, rxjs_1.firstValueFrom)(this.httpService.get(this.tosSkillsUrl).pipe((0, rxjs_1.timeout)(this.requestTimeout), (0, rxjs_1.catchError)((error) => {
683
+ this.logger.error('OpenClawSkillSyncClient: TOS 请求失败', {
684
+ url: this.tosSkillsUrl,
685
+ error: error instanceof Error ? error.message : 'Unknown error',
686
+ });
687
+ throw error;
688
+ })));
689
+ // 防御性检查:确保 response.data.skills 存在
690
+ if (!response.data || !Array.isArray(response.data.skills)) {
691
+ this.logger.error('OpenClawSkillSyncClient: TOS 响应格式无效', {
692
+ receivedData: response.data,
693
+ expectedStructure: '{ skills: [], updatedAt, total, baseUrl }',
694
+ });
695
+ throw new Error('Invalid TOS response structure: skills array is missing');
696
+ }
697
+ this.logger.info('OpenClawSkillSyncClient: TOS 技能列表获取成功', {
698
+ total: response.data.total,
699
+ skillsCount: response.data.skills.length,
700
+ updatedAt: response.data.updatedAt,
701
+ });
702
+ return response.data;
703
+ }
704
+ catch (error) {
705
+ this.logger.error('OpenClawSkillSyncClient: 从 TOS 获取技能列表失败', {
706
+ error: error instanceof Error ? error.message : 'Unknown error',
707
+ });
708
+ throw error;
709
+ }
710
+ }
711
+ };
712
+ exports.OpenClawSkillSyncClient = OpenClawSkillSyncClient;
713
+ exports.OpenClawSkillSyncClient = OpenClawSkillSyncClient = __decorate([
714
+ (0, common_1.Injectable)(),
715
+ __param(0, (0, common_1.Inject)(nest_winston_1.WINSTON_MODULE_PROVIDER)),
716
+ __metadata("design:paramtypes", [winston_1.Logger,
717
+ axios_1.HttpService,
718
+ config_1.ConfigService])
719
+ ], OpenClawSkillSyncClient);
720
+ //# sourceMappingURL=openclaw-skill-sync.client.js.map