@bowenqt/qiniu-ai-sdk 0.47.0 → 0.49.2

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 (378) hide show
  1. package/README.md +171 -40
  2. package/README.zh-CN.md +185 -41
  3. package/bin/qiniu-ai.mjs +8 -1
  4. package/dist/ai/agent-graph.d.ts +21 -0
  5. package/dist/ai/agent-graph.d.ts.map +1 -1
  6. package/dist/ai/agent-graph.js +141 -8
  7. package/dist/ai/agent-graph.js.map +1 -1
  8. package/dist/ai/agent-graph.mjs +142 -9
  9. package/dist/ai/control-plane/contracts.d.ts +197 -0
  10. package/dist/ai/control-plane/contracts.d.ts.map +1 -0
  11. package/dist/ai/control-plane/contracts.js +43 -0
  12. package/dist/ai/control-plane/contracts.js.map +1 -0
  13. package/dist/ai/control-plane/contracts.mjs +36 -0
  14. package/dist/ai/control-plane/index.d.ts +11 -0
  15. package/dist/ai/control-plane/index.d.ts.map +1 -0
  16. package/dist/ai/control-plane/index.js +33 -0
  17. package/dist/ai/control-plane/index.js.map +1 -0
  18. package/dist/ai/control-plane/index.mjs +6 -0
  19. package/dist/ai/control-plane/optimizer.d.ts +48 -0
  20. package/dist/ai/control-plane/optimizer.d.ts.map +1 -0
  21. package/dist/ai/control-plane/optimizer.js +111 -0
  22. package/dist/ai/control-plane/optimizer.js.map +1 -0
  23. package/dist/ai/control-plane/optimizer.mjs +104 -0
  24. package/dist/ai/control-plane/reflection.d.ts +70 -0
  25. package/dist/ai/control-plane/reflection.d.ts.map +1 -0
  26. package/dist/ai/control-plane/reflection.js +157 -0
  27. package/dist/ai/control-plane/reflection.js.map +1 -0
  28. package/dist/ai/control-plane/reflection.mjs +152 -0
  29. package/dist/ai/control-plane/revisions.d.ts +40 -0
  30. package/dist/ai/control-plane/revisions.d.ts.map +1 -0
  31. package/dist/ai/control-plane/revisions.js +208 -0
  32. package/dist/ai/control-plane/revisions.js.map +1 -0
  33. package/dist/ai/control-plane/revisions.mjs +202 -0
  34. package/dist/ai/control-plane/runtime.d.ts +50 -0
  35. package/dist/ai/control-plane/runtime.d.ts.map +1 -0
  36. package/dist/ai/control-plane/runtime.js +117 -0
  37. package/dist/ai/control-plane/runtime.js.map +1 -0
  38. package/dist/ai/control-plane/runtime.mjs +108 -0
  39. package/dist/ai/create-agent.d.ts +119 -0
  40. package/dist/ai/create-agent.d.ts.map +1 -1
  41. package/dist/ai/create-agent.js +322 -19
  42. package/dist/ai/create-agent.js.map +1 -1
  43. package/dist/ai/create-agent.mjs +322 -19
  44. package/dist/ai/generate-object.js +3 -3
  45. package/dist/ai/generate-object.js.map +1 -1
  46. package/dist/ai/generate-object.mjs +4 -4
  47. package/dist/ai/generate-text.d.ts +16 -0
  48. package/dist/ai/generate-text.d.ts.map +1 -1
  49. package/dist/ai/generate-text.js +71 -25
  50. package/dist/ai/generate-text.js.map +1 -1
  51. package/dist/ai/generate-text.mjs +72 -26
  52. package/dist/ai/graph/checkpointer.d.ts +1 -0
  53. package/dist/ai/graph/checkpointer.d.ts.map +1 -1
  54. package/dist/ai/graph/checkpointer.js +34 -7
  55. package/dist/ai/graph/checkpointer.js.map +1 -1
  56. package/dist/ai/graph/checkpointer.mjs +34 -7
  57. package/dist/ai/graph/state-graph.d.ts.map +1 -1
  58. package/dist/ai/graph/state-graph.js +14 -4
  59. package/dist/ai/graph/state-graph.js.map +1 -1
  60. package/dist/ai/graph/state-graph.mjs +14 -4
  61. package/dist/ai/guardrails/chain.d.ts +1 -1
  62. package/dist/ai/guardrails/chain.d.ts.map +1 -1
  63. package/dist/ai/guardrails/chain.js +3 -2
  64. package/dist/ai/guardrails/chain.js.map +1 -1
  65. package/dist/ai/guardrails/chain.mjs +4 -3
  66. package/dist/ai/guardrails/governance.d.ts +71 -0
  67. package/dist/ai/guardrails/governance.d.ts.map +1 -0
  68. package/dist/ai/guardrails/governance.js +151 -0
  69. package/dist/ai/guardrails/governance.js.map +1 -0
  70. package/dist/ai/guardrails/governance.mjs +143 -0
  71. package/dist/ai/guardrails/index.d.ts +4 -1
  72. package/dist/ai/guardrails/index.d.ts.map +1 -1
  73. package/dist/ai/guardrails/index.js +10 -1
  74. package/dist/ai/guardrails/index.js.map +1 -1
  75. package/dist/ai/guardrails/index.mjs +3 -0
  76. package/dist/ai/guardrails/input-filter.js +1 -1
  77. package/dist/ai/guardrails/input-filter.js.map +1 -1
  78. package/dist/ai/guardrails/input-filter.mjs +1 -1
  79. package/dist/ai/guardrails/output-filter.js +1 -1
  80. package/dist/ai/guardrails/output-filter.js.map +1 -1
  81. package/dist/ai/guardrails/output-filter.mjs +1 -1
  82. package/dist/ai/guardrails/token-limiter.js +1 -1
  83. package/dist/ai/guardrails/token-limiter.js.map +1 -1
  84. package/dist/ai/guardrails/token-limiter.mjs +1 -1
  85. package/dist/ai/guardrails/tool-filter.d.ts +9 -0
  86. package/dist/ai/guardrails/tool-filter.d.ts.map +1 -0
  87. package/dist/ai/guardrails/tool-filter.js +19 -0
  88. package/dist/ai/guardrails/tool-filter.js.map +1 -0
  89. package/dist/ai/guardrails/tool-filter.mjs +16 -0
  90. package/dist/ai/guardrails/types.d.ts +23 -1
  91. package/dist/ai/guardrails/types.d.ts.map +1 -1
  92. package/dist/ai/guardrails/types.js +25 -1
  93. package/dist/ai/guardrails/types.js.map +1 -1
  94. package/dist/ai/guardrails/types.mjs +22 -0
  95. package/dist/ai/nodes/execute-node.d.ts +7 -1
  96. package/dist/ai/nodes/execute-node.d.ts.map +1 -1
  97. package/dist/ai/nodes/execute-node.js +118 -5
  98. package/dist/ai/nodes/execute-node.js.map +1 -1
  99. package/dist/ai/nodes/execute-node.mjs +118 -5
  100. package/dist/ai/session-store.d.ts +70 -0
  101. package/dist/ai/session-store.d.ts.map +1 -0
  102. package/dist/ai/session-store.js +271 -0
  103. package/dist/ai/session-store.js.map +1 -0
  104. package/dist/ai/session-store.mjs +261 -0
  105. package/dist/ai/stream-object.js +3 -3
  106. package/dist/ai/stream-object.js.map +1 -1
  107. package/dist/ai/stream-object.mjs +4 -4
  108. package/dist/ai/stream-text.d.ts +17 -0
  109. package/dist/ai/stream-text.d.ts.map +1 -1
  110. package/dist/ai/stream-text.js +53 -6
  111. package/dist/ai/stream-text.js.map +1 -1
  112. package/dist/ai/stream-text.mjs +53 -6
  113. package/dist/browser/index.d.ts +13 -4
  114. package/dist/browser/index.d.ts.map +1 -1
  115. package/dist/browser/index.js +29 -2
  116. package/dist/browser/index.js.map +1 -1
  117. package/dist/browser/index.mjs +5 -0
  118. package/dist/cli/doctor.d.ts +21 -0
  119. package/dist/cli/doctor.d.ts.map +1 -0
  120. package/dist/cli/doctor.js +481 -0
  121. package/dist/cli/doctor.js.map +1 -0
  122. package/dist/cli/doctor.mjs +445 -0
  123. package/dist/cli/eval-gate.d.ts +10 -0
  124. package/dist/cli/eval-gate.d.ts.map +1 -0
  125. package/dist/cli/eval-gate.js +92 -0
  126. package/dist/cli/eval-gate.js.map +1 -0
  127. package/dist/cli/eval-gate.mjs +53 -0
  128. package/dist/cli/init.d.ts +17 -0
  129. package/dist/cli/init.d.ts.map +1 -0
  130. package/dist/cli/init.js +112 -0
  131. package/dist/cli/init.js.map +1 -0
  132. package/dist/cli/init.mjs +73 -0
  133. package/dist/cli/live-verify-gate.d.ts +3 -0
  134. package/dist/cli/live-verify-gate.d.ts.map +1 -0
  135. package/dist/cli/live-verify-gate.js +270 -0
  136. package/dist/cli/live-verify-gate.js.map +1 -0
  137. package/dist/cli/live-verify-gate.mjs +267 -0
  138. package/dist/cli/live-verify-render.d.ts +3 -0
  139. package/dist/cli/live-verify-render.d.ts.map +1 -0
  140. package/dist/cli/live-verify-render.js +138 -0
  141. package/dist/cli/live-verify-render.js.map +1 -0
  142. package/dist/cli/live-verify-render.mjs +135 -0
  143. package/dist/cli/live-verify.d.ts +4 -0
  144. package/dist/cli/live-verify.d.ts.map +1 -0
  145. package/dist/cli/live-verify.internal.d.ts +274 -0
  146. package/dist/cli/live-verify.internal.d.ts.map +1 -0
  147. package/dist/cli/live-verify.internal.js +1135 -0
  148. package/dist/cli/live-verify.internal.js.map +1 -0
  149. package/dist/cli/live-verify.internal.mjs +1095 -0
  150. package/dist/cli/live-verify.js +23 -0
  151. package/dist/cli/live-verify.js.map +1 -0
  152. package/dist/cli/live-verify.mjs +4 -0
  153. package/dist/cli/package-workflow.d.ts +138 -0
  154. package/dist/cli/package-workflow.d.ts.map +1 -0
  155. package/dist/cli/package-workflow.js +352 -0
  156. package/dist/cli/package-workflow.js.map +1 -0
  157. package/dist/cli/package-workflow.mjs +288 -0
  158. package/dist/cli/skill-cli.d.ts +18 -8
  159. package/dist/cli/skill-cli.d.ts.map +1 -1
  160. package/dist/cli/skill-cli.js +632 -139
  161. package/dist/cli/skill-cli.js.map +1 -1
  162. package/dist/cli/skill-cli.mjs +632 -139
  163. package/dist/cli/verification-report.d.ts +160 -0
  164. package/dist/cli/verification-report.d.ts.map +1 -0
  165. package/dist/cli/verification-report.js +562 -0
  166. package/dist/cli/verification-report.js.map +1 -0
  167. package/dist/cli/verification-report.mjs +549 -0
  168. package/dist/cli/worktree.d.ts +56 -0
  169. package/dist/cli/worktree.d.ts.map +1 -0
  170. package/dist/cli/worktree.js +303 -0
  171. package/dist/cli/worktree.js.map +1 -0
  172. package/dist/cli/worktree.mjs +260 -0
  173. package/dist/core/index.d.ts +9 -7
  174. package/dist/core/index.d.ts.map +1 -1
  175. package/dist/core/index.js +54 -13
  176. package/dist/core/index.js.map +1 -1
  177. package/dist/core/index.mjs +6 -5
  178. package/dist/index.d.ts +16 -5
  179. package/dist/index.d.ts.map +1 -1
  180. package/dist/index.js +56 -3
  181. package/dist/index.js.map +1 -1
  182. package/dist/index.mjs +9 -1
  183. package/dist/lib/capability-evidence.generated.d.ts +308 -0
  184. package/dist/lib/capability-evidence.generated.d.ts.map +1 -0
  185. package/dist/lib/capability-evidence.generated.js +832 -0
  186. package/dist/lib/capability-evidence.generated.js.map +1 -0
  187. package/dist/lib/capability-evidence.generated.mjs +829 -0
  188. package/dist/lib/capability-registry.d.ts +17 -0
  189. package/dist/lib/capability-registry.d.ts.map +1 -0
  190. package/dist/lib/capability-registry.js +140 -0
  191. package/dist/lib/capability-registry.js.map +1 -0
  192. package/dist/lib/capability-registry.mjs +130 -0
  193. package/dist/lib/capability-source.d.ts +11 -0
  194. package/dist/lib/capability-source.d.ts.map +1 -0
  195. package/dist/lib/capability-source.js +69 -0
  196. package/dist/lib/capability-source.js.map +1 -0
  197. package/dist/lib/capability-source.mjs +61 -0
  198. package/dist/lib/capability-types.d.ts +60 -0
  199. package/dist/lib/capability-types.d.ts.map +1 -0
  200. package/dist/lib/capability-types.js +3 -0
  201. package/dist/lib/capability-types.js.map +1 -0
  202. package/dist/lib/capability-types.mjs +2 -0
  203. package/dist/lib/content-converter.d.ts +9 -3
  204. package/dist/lib/content-converter.d.ts.map +1 -1
  205. package/dist/lib/content-converter.js +92 -6
  206. package/dist/lib/content-converter.js.map +1 -1
  207. package/dist/lib/content-converter.mjs +90 -6
  208. package/dist/lib/eval-gate.d.ts +90 -0
  209. package/dist/lib/eval-gate.d.ts.map +1 -0
  210. package/dist/lib/eval-gate.js +151 -0
  211. package/dist/lib/eval-gate.js.map +1 -0
  212. package/dist/lib/eval-gate.mjs +146 -0
  213. package/dist/lib/qiniu-auth.d.ts +31 -0
  214. package/dist/lib/qiniu-auth.d.ts.map +1 -0
  215. package/dist/lib/qiniu-auth.js +78 -0
  216. package/dist/lib/qiniu-auth.js.map +1 -0
  217. package/dist/lib/qiniu-auth.mjs +73 -0
  218. package/dist/lib/task-handle.d.ts +12 -0
  219. package/dist/lib/task-handle.d.ts.map +1 -0
  220. package/dist/lib/task-handle.js +9 -0
  221. package/dist/lib/task-handle.js.map +1 -0
  222. package/dist/lib/task-handle.mjs +6 -0
  223. package/dist/lib/types.d.ts +28 -5
  224. package/dist/lib/types.d.ts.map +1 -1
  225. package/dist/lib/version.d.ts +1 -1
  226. package/dist/lib/version.js +1 -1
  227. package/dist/lib/version.mjs +1 -1
  228. package/dist/modules/account/index.d.ts.map +1 -1
  229. package/dist/modules/account/index.js +7 -58
  230. package/dist/modules/account/index.js.map +1 -1
  231. package/dist/modules/account/index.mjs +7 -58
  232. package/dist/modules/admin/index.d.ts +39 -4
  233. package/dist/modules/admin/index.d.ts.map +1 -1
  234. package/dist/modules/admin/index.js +78 -17
  235. package/dist/modules/admin/index.js.map +1 -1
  236. package/dist/modules/admin/index.mjs +78 -17
  237. package/dist/modules/anthropic/index.d.ts +26 -11
  238. package/dist/modules/anthropic/index.d.ts.map +1 -1
  239. package/dist/modules/anthropic/index.js +59 -3
  240. package/dist/modules/anthropic/index.js.map +1 -1
  241. package/dist/modules/anthropic/index.mjs +59 -3
  242. package/dist/modules/asr/index.d.ts.map +1 -1
  243. package/dist/modules/asr/index.js +14 -10
  244. package/dist/modules/asr/index.js.map +1 -1
  245. package/dist/modules/asr/index.mjs +14 -10
  246. package/dist/modules/batch/index.d.ts +101 -0
  247. package/dist/modules/batch/index.d.ts.map +1 -0
  248. package/dist/modules/batch/index.js +119 -0
  249. package/dist/modules/batch/index.js.map +1 -0
  250. package/dist/modules/batch/index.mjs +115 -0
  251. package/dist/modules/censor/index.d.ts +41 -4
  252. package/dist/modules/censor/index.d.ts.map +1 -1
  253. package/dist/modules/censor/index.js +84 -10
  254. package/dist/modules/censor/index.js.map +1 -1
  255. package/dist/modules/censor/index.mjs +84 -10
  256. package/dist/modules/chat/index.d.ts.map +1 -1
  257. package/dist/modules/chat/index.js +12 -2
  258. package/dist/modules/chat/index.js.map +1 -1
  259. package/dist/modules/chat/index.mjs +12 -2
  260. package/dist/modules/file/index.d.ts +109 -3
  261. package/dist/modules/file/index.d.ts.map +1 -1
  262. package/dist/modules/file/index.js +232 -1
  263. package/dist/modules/file/index.js.map +1 -1
  264. package/dist/modules/file/index.mjs +232 -1
  265. package/dist/modules/image/index.d.ts +7 -5
  266. package/dist/modules/image/index.d.ts.map +1 -1
  267. package/dist/modules/image/index.js +31 -13
  268. package/dist/modules/image/index.js.map +1 -1
  269. package/dist/modules/image/index.mjs +31 -13
  270. package/dist/modules/ocr/index.d.ts.map +1 -1
  271. package/dist/modules/ocr/index.js +9 -6
  272. package/dist/modules/ocr/index.js.map +1 -1
  273. package/dist/modules/ocr/index.mjs +9 -6
  274. package/dist/modules/response/index.d.ts +355 -4
  275. package/dist/modules/response/index.d.ts.map +1 -1
  276. package/dist/modules/response/index.js +925 -4
  277. package/dist/modules/response/index.js.map +1 -1
  278. package/dist/modules/response/index.mjs +916 -3
  279. package/dist/modules/tts/index.d.ts +12 -0
  280. package/dist/modules/tts/index.d.ts.map +1 -1
  281. package/dist/modules/tts/index.js +40 -4
  282. package/dist/modules/tts/index.js.map +1 -1
  283. package/dist/modules/tts/index.mjs +40 -4
  284. package/dist/modules/video/index.d.ts +2 -1
  285. package/dist/modules/video/index.d.ts.map +1 -1
  286. package/dist/modules/video/index.js +33 -5
  287. package/dist/modules/video/index.js.map +1 -1
  288. package/dist/modules/video/index.mjs +33 -5
  289. package/dist/node/index.d.ts +9 -4
  290. package/dist/node/index.d.ts.map +1 -1
  291. package/dist/node/index.js +26 -10
  292. package/dist/node/index.js.map +1 -1
  293. package/dist/node/index.mjs +5 -0
  294. package/dist/node/mcp/http-transport.d.ts +100 -1
  295. package/dist/node/mcp/http-transport.d.ts.map +1 -1
  296. package/dist/node/mcp/http-transport.js +289 -17
  297. package/dist/node/mcp/http-transport.js.map +1 -1
  298. package/dist/node/mcp/http-transport.mjs +289 -17
  299. package/dist/node/mcp/index.d.ts +3 -3
  300. package/dist/node/mcp/index.d.ts.map +1 -1
  301. package/dist/node/mcp/index.js +4 -1
  302. package/dist/node/mcp/index.js.map +1 -1
  303. package/dist/node/mcp/index.mjs +2 -2
  304. package/dist/node/mcp/oauth.d.ts +30 -0
  305. package/dist/node/mcp/oauth.d.ts.map +1 -1
  306. package/dist/node/mcp/oauth.js +70 -0
  307. package/dist/node/mcp/oauth.js.map +1 -1
  308. package/dist/node/mcp/oauth.mjs +67 -0
  309. package/dist/node/mcp/server.d.ts.map +1 -1
  310. package/dist/node/mcp/server.js +4 -2
  311. package/dist/node/mcp/server.js.map +1 -1
  312. package/dist/node/mcp/server.mjs +4 -2
  313. package/dist/node/mcp/types.d.ts +40 -1
  314. package/dist/node/mcp/types.d.ts.map +1 -1
  315. package/dist/node/mcp/types.js +2 -0
  316. package/dist/node/mcp/types.js.map +1 -1
  317. package/dist/node/mcp/types.mjs +2 -0
  318. package/dist/node/mcp-host.d.ts +88 -15
  319. package/dist/node/mcp-host.d.ts.map +1 -1
  320. package/dist/node/mcp-host.js +276 -44
  321. package/dist/node/mcp-host.js.map +1 -1
  322. package/dist/node/mcp-host.mjs +275 -43
  323. package/dist/node/sandbox/index.d.ts +2 -0
  324. package/dist/node/sandbox/index.d.ts.map +1 -1
  325. package/dist/node/sandbox/index.js +3 -1
  326. package/dist/node/sandbox/index.js.map +1 -1
  327. package/dist/node/sandbox/index.mjs +1 -0
  328. package/dist/node/sandbox/skill-trial.d.ts +22 -0
  329. package/dist/node/sandbox/skill-trial.d.ts.map +1 -0
  330. package/dist/node/sandbox/skill-trial.js +51 -0
  331. package/dist/node/sandbox/skill-trial.js.map +1 -0
  332. package/dist/node/sandbox/skill-trial.mjs +47 -0
  333. package/dist/node/skills/index.d.ts +4 -0
  334. package/dist/node/skills/index.d.ts.map +1 -1
  335. package/dist/node/skills/index.js +10 -1
  336. package/dist/node/skills/index.js.map +1 -1
  337. package/dist/node/skills/index.mjs +2 -0
  338. package/dist/node/skills/promotion.d.ts +94 -0
  339. package/dist/node/skills/promotion.d.ts.map +1 -0
  340. package/dist/node/skills/promotion.js +214 -0
  341. package/dist/node/skills/promotion.js.map +1 -0
  342. package/dist/node/skills/promotion.mjs +208 -0
  343. package/dist/node/skills/registry.d.ts +30 -0
  344. package/dist/node/skills/registry.d.ts.map +1 -1
  345. package/dist/node/skills/registry.js +111 -1
  346. package/dist/node/skills/registry.js.map +1 -1
  347. package/dist/node/skills/registry.mjs +111 -1
  348. package/dist/node/skills/trial.d.ts +61 -0
  349. package/dist/node/skills/trial.d.ts.map +1 -0
  350. package/dist/node/skills/trial.js +100 -0
  351. package/dist/node/skills/trial.js.map +1 -0
  352. package/dist/node/skills/trial.mjs +93 -0
  353. package/dist/qiniu/client.d.ts +3 -0
  354. package/dist/qiniu/client.d.ts.map +1 -1
  355. package/dist/qiniu/client.js +6 -0
  356. package/dist/qiniu/client.js.map +1 -1
  357. package/dist/qiniu/client.mjs +6 -0
  358. package/dist/qiniu/index.d.ts +10 -5
  359. package/dist/qiniu/index.d.ts.map +1 -1
  360. package/dist/qiniu/index.js +19 -1
  361. package/dist/qiniu/index.js.map +1 -1
  362. package/dist/qiniu/index.mjs +3 -1
  363. package/package.json +18 -2
  364. package/templates/starters/agent/.env.example +1 -0
  365. package/templates/starters/agent/README.md +13 -0
  366. package/templates/starters/agent/package.json +18 -0
  367. package/templates/starters/agent/src/index.ts +32 -0
  368. package/templates/starters/agent/tsconfig.json +12 -0
  369. package/templates/starters/chat/.env.example +1 -0
  370. package/templates/starters/chat/README.md +13 -0
  371. package/templates/starters/chat/package.json +17 -0
  372. package/templates/starters/chat/src/index.ts +12 -0
  373. package/templates/starters/chat/tsconfig.json +12 -0
  374. package/templates/starters/node-agent/.env.example +1 -0
  375. package/templates/starters/node-agent/README.md +13 -0
  376. package/templates/starters/node-agent/package.json +19 -0
  377. package/templates/starters/node-agent/src/index.ts +28 -0
  378. package/templates/starters/node-agent/tsconfig.json +12 -0
package/README.md CHANGED
@@ -34,12 +34,13 @@
34
34
  - 🏭 **createAgent** — Reusable agent factory with configurable behaviors
35
35
 
36
36
  ### Advanced Capabilities
37
+ - 🧭 **Capability Registry** — Query model capabilities and module maturity from the SDK
37
38
  - 📋 **Skills Injection** — Markdown-based agent knowledge (Claude Skills compatible)
38
39
  - 🏪 **Skill Marketplace** — Remote skill loading with SHA256 integrity verification (v0.32.0+)
39
40
  - 🔐 **Security Hardening** — Atomic remote install, cumulative size limits, deny-first tool policy (v0.38.0+)
40
41
  - ⚡ **MCP Tool Policy** — SDK-native timeout, progress reset, output truncation per server (v0.38.0+)
41
42
  - 🔗 **MCP Host** — `NodeMCPHost` with stdio + HTTP transport + per-server tool policies
42
- - 🖥️ **MCP Server** — Built-in Qiniu MCP server for OCR/Censor/Vframe tools
43
+ - 🖥️ **MCP Server** — Built-in Qiniu MCP server for chat, OCR, image/video censor, and image generation
43
44
  - 💾 **Checkpointer** — State persistence (Memory, Redis, PostgreSQL, Kodo)
44
45
  - 🧠 **Memory Manager** — Short-term + long-term memory with LLM summarization
45
46
  - ✅ **Tool Approval (HITL)** — Human-in-the-loop with deny-first source policy (v0.38.0+)
@@ -57,19 +58,119 @@
57
58
  npm install @bowenqt/qiniu-ai-sdk
58
59
  ```
59
60
 
60
- ### Recommended Imports
61
+ ### Choose Your Entry
61
62
 
62
- ```typescript
63
- import { QiniuAI } from '@bowenqt/qiniu-ai-sdk/qiniu';
64
- import { createAgent, generateText } from '@bowenqt/qiniu-ai-sdk/core';
65
- import { createNodeQiniuAI, NodeMCPHost, FileTokenStore } from '@bowenqt/qiniu-ai-sdk/node';
66
- ```
63
+ | I want to... | Use |
64
+ |--------------|-----|
65
+ | Call Qiniu cloud APIs directly | `@bowenqt/qiniu-ai-sdk/qiniu` |
66
+ | Build agent/runtime workflows | `@bowenqt/qiniu-ai-sdk/qiniu` + `@bowenqt/qiniu-ai-sdk/core` |
67
+ | Add MCP, sandbox, skills, or non-memory checkpointers | `@bowenqt/qiniu-ai-sdk/qiniu` + `@bowenqt/qiniu-ai-sdk/core` + `@bowenqt/qiniu-ai-sdk/node` |
67
68
 
68
69
  ### Entry Guarantees
69
70
 
70
71
  - `@bowenqt/qiniu-ai-sdk/node` is the only supported Node integration surface for MCP, sandbox, audit sinks, and non-memory checkpointers.
71
72
  - `@bowenqt/qiniu-ai-sdk/core` and `@bowenqt/qiniu-ai-sdk/browser` are kept free of Node-only transitive dependencies.
72
- - `ResponseAPI` remains experimental and provider-specific; use `QiniuAI#response` or import it from `@bowenqt/qiniu-ai-sdk/qiniu`, not from the root entry.
73
+ - `ResponseAPI` is promoted to beta for the core subset only: `create`, `followUp`, `createTextResult`, and `followUpTextResult`; the stronger evidence-backed beta basis only applies when fresh nightly `response-api` evidence is present.
74
+ - Other `ResponseAPI` helpers remain deferred/provider-only in this phase, including stream, JSON/messages, reasoning, and chat-completion projection helpers. The recommended access path for that deferred surface is `client.response.experimental.*`; legacy direct helper methods remain compatibility aliases and are not part of the official beta surface.
75
+ - `NodeMCPHost` remains `beta (held)`; it only forwards already-resolved bearer tokens via `token` or `tokenProvider`, and the remaining deferred risks are OAuth token acquisition beyond that boundary plus cross-server routing.
76
+ - The current management surface is intentionally narrow: `client.account` is limited to `usage()`, and `client.admin` is limited to API key CRUD (`createKeys`, `listKeys`, `getKey`, `revokeKey`), not quota/billing/project/tenant administration.
77
+ - The runtime story smoke in this branch is intentionally local-first: it validates `createAgent` plus session/checkpointer, approval resume, and MCP host composition, while leaving the final runtime/node contract to the dedicated lane workers.
78
+ - The root entry remains a compatibility surface, not the recommended teaching surface for new projects.
79
+
80
+ ```typescript
81
+ const text = await client.response.createTextResult({
82
+ model: 'openai/gpt-5',
83
+ input: 'Summarize the request.',
84
+ });
85
+
86
+ const json = await client.response.experimental.createJson({
87
+ model: 'openai/gpt-5',
88
+ input: 'Return {"ok":true}.',
89
+ });
90
+ ```
91
+
92
+ ### Cloud API Quickstart
93
+
94
+ ```typescript
95
+ import { QiniuAI } from '@bowenqt/qiniu-ai-sdk/qiniu';
96
+
97
+ const client = new QiniuAI({
98
+ apiKey: process.env.QINIU_API_KEY || '',
99
+ });
100
+
101
+ const result = await client.chat.create({
102
+ model: 'gemini-2.5-flash',
103
+ messages: [{ role: 'user', content: 'Introduce Qiniu AI SDK in one sentence.' }],
104
+ });
105
+
106
+ console.log(result.choices[0]?.message?.content ?? '');
107
+ ```
108
+
109
+ ### Agent Quickstart
110
+
111
+ ```typescript
112
+ import { z } from 'zod';
113
+ import { zodToJsonSchema } from '@bowenqt/qiniu-ai-sdk/ai-tools';
114
+ import { QiniuAI } from '@bowenqt/qiniu-ai-sdk/qiniu';
115
+ import { generateText } from '@bowenqt/qiniu-ai-sdk/core';
116
+
117
+ const calculatorSchema = z.object({ a: z.number(), b: z.number() });
118
+
119
+ const client = new QiniuAI({
120
+ apiKey: process.env.QINIU_API_KEY || '',
121
+ });
122
+
123
+ const result = await generateText({
124
+ client,
125
+ model: 'gemini-2.5-flash',
126
+ prompt: 'What is 42 multiplied by 17?',
127
+ tools: {
128
+ calculator: {
129
+ description: 'Perform arithmetic',
130
+ parameters: zodToJsonSchema(calculatorSchema),
131
+ execute: async (args) => {
132
+ const { a, b } = calculatorSchema.parse(args);
133
+ return a * b;
134
+ },
135
+ },
136
+ },
137
+ });
138
+
139
+ console.log(result.text);
140
+ ```
141
+
142
+ ### Node Agent Quickstart
143
+
144
+ ```typescript
145
+ import { z } from 'zod';
146
+ import { zodToJsonSchema } from '@bowenqt/qiniu-ai-sdk/ai-tools';
147
+ import { createAgent } from '@bowenqt/qiniu-ai-sdk/core';
148
+ import { createNodeQiniuAI } from '@bowenqt/qiniu-ai-sdk/node';
149
+
150
+ const nowSchema = z.object({});
151
+
152
+ const client = createNodeQiniuAI({
153
+ apiKey: process.env.QINIU_API_KEY || '',
154
+ });
155
+
156
+ const agent = createAgent({
157
+ client,
158
+ model: 'gemini-2.5-flash',
159
+ tools: {
160
+ now: {
161
+ description: 'Return the current ISO timestamp',
162
+ parameters: zodToJsonSchema(nowSchema),
163
+ execute: async () => ({ now: new Date().toISOString() }),
164
+ },
165
+ },
166
+ });
167
+
168
+ const result = await agent.run({
169
+ prompt: 'Use the now tool, then explain why ISO timestamps are useful.',
170
+ });
171
+
172
+ console.log(result.text);
173
+ ```
73
174
 
74
175
  ### v0.46 Migration
75
176
 
@@ -113,6 +214,45 @@ npm install ioredis
113
214
  npm install pg
114
215
  ```
115
216
 
217
+ ### Capability Metadata
218
+
219
+ ```typescript
220
+ import {
221
+ getModelCapabilities,
222
+ getModuleMaturity,
223
+ listModels,
224
+ } from '@bowenqt/qiniu-ai-sdk/qiniu';
225
+
226
+ const featuredChatModels = listModels({ type: 'chat' }).slice(0, 3);
227
+ const responseApi = getModuleMaturity('ResponseAPI');
228
+ const gemini = getModelCapabilities('gemini-2.5-flash');
229
+
230
+ console.log(featuredChatModels.map((model) => model.id));
231
+ console.log(responseApi?.maturity); // beta
232
+ console.log(gemini?.capabilities);
233
+ ```
234
+
235
+ ### Worktree Delivery
236
+
237
+ ```bash
238
+ # Create the integration worktree and default .worktrees/ layout
239
+ qiniu-ai worktree init
240
+
241
+ # Spawn a lane from codex/vnext-integration
242
+ qiniu-ai worktree spawn --lane foundation
243
+
244
+ # Inspect current worktrees and inferred lanes
245
+ qiniu-ai worktree status
246
+
247
+ # Merge a lane back into the integration branch
248
+ qiniu-ai worktree integrate --lane foundation
249
+
250
+ # Run the default live probe for a lane
251
+ qiniu-ai verify live --lane runtime
252
+ ```
253
+
254
+ Use worktree lanes for broad SDK upgrades. Keep the root workspace focused on orchestration and integration, and let each lane own a single subsystem group.
255
+
116
256
  ### Kodo Audit Sink
117
257
 
118
258
  ```typescript
@@ -130,36 +270,6 @@ const logger = auditLogger({
130
270
  });
131
271
  ```
132
272
 
133
- ---
134
-
135
- ## 🚀 Quick Start
136
-
137
- ```typescript
138
- import { QiniuAI } from '@bowenqt/qiniu-ai-sdk/qiniu';
139
-
140
- const client = new QiniuAI({
141
- apiKey: 'Sk-xxxxxxxxxxxxxxxx',
142
- });
143
-
144
- // Chat completion
145
- const chat = await client.chat.create({
146
- model: 'gemini-2.5-flash',
147
- messages: [{ role: 'user', content: 'Hello!' }],
148
- });
149
- console.log(chat.choices[0].message.content);
150
-
151
- // Streaming chat
152
- const stream = await client.chat.createStream({
153
- model: 'gemini-2.5-flash',
154
- messages: [{ role: 'user', content: 'Explain AI briefly' }],
155
- });
156
- for await (const chunk of stream) {
157
- process.stdout.write(chunk.choices[0]?.delta?.content || '');
158
- }
159
- ```
160
-
161
- ---
162
-
163
273
  ## 🤖 Agentic Usage
164
274
 
165
275
  ### Tool Execution with generateText
@@ -241,6 +351,7 @@ const videoTask = await client.video.create({
241
351
  });
242
352
  const videoResult = await client.video.waitForCompletion(videoTask.id);
243
353
  console.log(videoResult.task_result?.videos[0].url);
354
+ // videoTask.cancel() currently rejects explicitly because remote media-task cancellation is unsupported
244
355
 
245
356
  // viduq video generation (v0.36.0+)
246
357
  const viduqTask = await client.video.create({
@@ -251,6 +362,7 @@ const viduqTask = await client.video.create({
251
362
  // Use full handle for reliable polling
252
363
  const viduqResult = await client.video.waitForCompletion(viduqTask);
253
364
  console.log(viduqResult.task_result?.videos[0].url);
365
+ // Use AbortSignal to stop local waiting; viduqTask.cancel() still fails fast today
254
366
 
255
367
  // kling-image-o1 high-quality image (v0.36.0+)
256
368
  const klingImg = await client.image.generate({
@@ -485,8 +597,27 @@ await instance.kill();
485
597
 
486
598
  ## 🛠️ CLI Tools
487
599
 
600
+ ### Project Setup
601
+
602
+ ```bash
603
+ npx qiniu-ai init --template chat
604
+ npx qiniu-ai init --template agent
605
+ npx qiniu-ai init --template node-agent
606
+ npx qiniu-ai doctor --template agent
607
+ ```
608
+
488
609
  ### MCP Server
489
610
 
611
+ The built-in `QiniuMCPServer` currently exposes these built-in tools:
612
+
613
+ - `qiniu_chat`
614
+ - `qiniu_ocr`
615
+ - `qiniu_image_censor`
616
+ - `qiniu_video_censor`
617
+ - `qiniu_image_generate`
618
+
619
+ It does not currently expose `qiniu_vframe`. If you need frame extraction, use the SDK's `@bowenqt/qiniu-ai-sdk/ai-tools` / `QINIU_TOOLS` or asset resolver surface directly.
620
+
490
621
  ```bash
491
622
  npx qiniu-mcp-server
492
623
  ```
@@ -494,6 +625,7 @@ npx qiniu-mcp-server
494
625
  ### Skill Manager (v0.39.0+)
495
626
 
496
627
  ```bash
628
+ npx qiniu-ai doctor --template node-agent # Validate env, peers, and import choices
497
629
  npx qiniu-ai skill list # List installed skills
498
630
  npx qiniu-ai skill add <url> # Install a remote skill from manifest URL
499
631
  npx qiniu-ai skill add <url> --sha256 <hash> # With integrity verification
@@ -503,8 +635,7 @@ npx qiniu-ai skill remove <name> # Remove skill + lockfile entry
503
635
  ```
504
636
 
505
637
  **Environment variables:**
506
- - `QINIU_API_KEY` — API key for OCR/Censor operations
507
- - `QINIU_ACCESS_KEY` / `QINIU_SECRET_KEY` — For Vframe/signed operations
638
+ - `QINIU_API_KEY` — Required API key for the built-in MCP server tools listed above
508
639
 
509
640
  ---
510
641
 
package/README.zh-CN.md CHANGED
@@ -34,12 +34,13 @@
34
34
  - 🏭 **createAgent** — 可复用的 Agent 工厂
35
35
 
36
36
  ### 高级能力
37
+ - 🧭 **能力注册表** — 通过 SDK 查询模型能力和模块成熟度
37
38
  - 📋 **技能注入** — Markdown 格式的 Agent 知识库(兼容 Claude Skills)
38
39
  - 🏪 **Skill 市场** — 远程技能加载 + SHA256 完整性验证 (v0.32.0+)
39
40
  - 🔐 **安全加固** — 原子远程安装、累计大小限制、deny-first 工具策略 (v0.38.0+)
40
41
  - ⚡ **MCP 工具策略** — SDK 原生 timeout、进度重置、输出截断,按服务器配置 (v0.38.0+)
41
42
  - 🔗 **MCP Host** — `NodeMCPHost` 支持 stdio + HTTP 传输 + 按服务器工具策略
42
- - 🖥️ **MCP 服务端** — 内置七牛 MCP ServerOCR/审核/抽帧)
43
+ - 🖥️ **MCP 服务端** — 内置七牛 MCP Server(对话、OCR、图片/视频审核、图片生成)
43
44
  - 💾 **Checkpointer** — 状态持久化(Memory、Redis、PostgreSQL、Kodo)
44
45
  - 🧠 **Memory Manager** — 短期 + 长期记忆,LLM 自动摘要
45
46
  - ✅ **工具审批 (HITL)** — 敏感操作人工确认 + deny-first 来源策略 (v0.38.0+)
@@ -57,19 +58,119 @@
57
58
  npm install @bowenqt/qiniu-ai-sdk
58
59
  ```
59
60
 
60
- ### 推荐导入方式
61
+ ### 如何选择入口
61
62
 
62
- ```typescript
63
- import { QiniuAI } from '@bowenqt/qiniu-ai-sdk/qiniu';
64
- import { createAgent, generateText } from '@bowenqt/qiniu-ai-sdk/core';
65
- import { createNodeQiniuAI, NodeMCPHost, FileTokenStore } from '@bowenqt/qiniu-ai-sdk/node';
66
- ```
63
+ | 我想做什么 | 使用哪个入口 |
64
+ |------------|--------------|
65
+ | 直接调用七牛云 API | `@bowenqt/qiniu-ai-sdk/qiniu` |
66
+ | 构建 agent/runtime 工作流 | `@bowenqt/qiniu-ai-sdk/qiniu` + `@bowenqt/qiniu-ai-sdk/core` |
67
+ | 接入 MCP、sandbox、skills 或非内存 checkpointer | `@bowenqt/qiniu-ai-sdk/qiniu` + `@bowenqt/qiniu-ai-sdk/core` + `@bowenqt/qiniu-ai-sdk/node` |
67
68
 
68
69
  ### 入口契约
69
70
 
70
71
  - `@bowenqt/qiniu-ai-sdk/node` 是 MCP、sandbox、audit sink 以及非内存 checkpointer 的唯一正式 Node integration 入口。
71
72
  - `@bowenqt/qiniu-ai-sdk/core` 和 `@bowenqt/qiniu-ai-sdk/browser` 保持不含 Node-only 传递依赖。
72
- - `ResponseAPI` 继续保持 experimental/provider-only;推荐使用 `QiniuAI#response` 或从 `@bowenqt/qiniu-ai-sdk/qiniu` 导入,不再从 root 入口导入。
73
+ - `ResponseAPI` 仅核心子集晋级为 beta:`create`、`followUp`、`createTextResult`、`followUpTextResult`;只有在存在 fresh nightly `response-api` 证据时,才会启用更强的 evidence-backed beta 结论。
74
+ - 其余 `ResponseAPI` helpers 仍处于 deferred/provider-only(包括 stream、JSON/messages、reasoning、chat-completion projection)。推荐通过 `client.response.experimental.*` 访问这部分 deferred surface;旧的直接 helper 仍保留为兼容别名,但不属于官方 beta surface。
75
+ - `NodeMCPHost` 仍为 `beta (held)`;当前只负责透传已经解析好的 bearer token(`token` / `tokenProvider`),剩余 deferred risks 为超出该边界的 OAuth token acquisition 与 cross-server routing。
76
+ - 当前管理面有意保持很窄:`client.account` 只有 `usage()`,`client.admin` 只覆盖 API key CRUD(`createKeys`、`listKeys`、`getKey`、`revokeKey`),并不代表 quota/billing/project/tenant 一类更大的管理平台能力。
77
+ - 本分支的 runtime story smoke 保持本地优先:只验证 `createAgent` + session/checkpointer、approval resume、MCP host 组合,最终 runtime/node contract 仍由对应 lane worker 收敛。
78
+ - root 入口继续保留兼容性,但不再作为新项目的默认教学入口。
79
+
80
+ ```typescript
81
+ const text = await client.response.createTextResult({
82
+ model: 'openai/gpt-5',
83
+ input: '请总结这个请求。',
84
+ });
85
+
86
+ const json = await client.response.experimental.createJson({
87
+ model: 'openai/gpt-5',
88
+ input: '返回 {"ok":true}。',
89
+ });
90
+ ```
91
+
92
+ ### Cloud API Quickstart
93
+
94
+ ```typescript
95
+ import { QiniuAI } from '@bowenqt/qiniu-ai-sdk/qiniu';
96
+
97
+ const client = new QiniuAI({
98
+ apiKey: process.env.QINIU_API_KEY || '',
99
+ });
100
+
101
+ const result = await client.chat.create({
102
+ model: 'gemini-2.5-flash',
103
+ messages: [{ role: 'user', content: '用一句话介绍七牛 AI SDK。' }],
104
+ });
105
+
106
+ console.log(result.choices[0]?.message?.content ?? '');
107
+ ```
108
+
109
+ ### Agent Quickstart
110
+
111
+ ```typescript
112
+ import { z } from 'zod';
113
+ import { zodToJsonSchema } from '@bowenqt/qiniu-ai-sdk/ai-tools';
114
+ import { QiniuAI } from '@bowenqt/qiniu-ai-sdk/qiniu';
115
+ import { generateText } from '@bowenqt/qiniu-ai-sdk/core';
116
+
117
+ const calculatorSchema = z.object({ a: z.number(), b: z.number() });
118
+
119
+ const client = new QiniuAI({
120
+ apiKey: process.env.QINIU_API_KEY || '',
121
+ });
122
+
123
+ const result = await generateText({
124
+ client,
125
+ model: 'gemini-2.5-flash',
126
+ prompt: '42 乘以 17 等于多少?',
127
+ tools: {
128
+ calculator: {
129
+ description: '做乘法计算',
130
+ parameters: zodToJsonSchema(calculatorSchema),
131
+ execute: async (args) => {
132
+ const { a, b } = calculatorSchema.parse(args);
133
+ return a * b;
134
+ },
135
+ },
136
+ },
137
+ });
138
+
139
+ console.log(result.text);
140
+ ```
141
+
142
+ ### Node Agent Quickstart
143
+
144
+ ```typescript
145
+ import { z } from 'zod';
146
+ import { zodToJsonSchema } from '@bowenqt/qiniu-ai-sdk/ai-tools';
147
+ import { createAgent } from '@bowenqt/qiniu-ai-sdk/core';
148
+ import { createNodeQiniuAI } from '@bowenqt/qiniu-ai-sdk/node';
149
+
150
+ const nowSchema = z.object({});
151
+
152
+ const client = createNodeQiniuAI({
153
+ apiKey: process.env.QINIU_API_KEY || '',
154
+ });
155
+
156
+ const agent = createAgent({
157
+ client,
158
+ model: 'gemini-2.5-flash',
159
+ tools: {
160
+ now: {
161
+ description: '返回当前 ISO 时间戳',
162
+ parameters: zodToJsonSchema(nowSchema),
163
+ execute: async () => ({ now: new Date().toISOString() }),
164
+ },
165
+ },
166
+ });
167
+
168
+ const result = await agent.run({
169
+ prompt: '先调用 now 工具,再说明为什么 ISO 时间戳适合做系统集成。',
170
+ });
171
+
172
+ console.log(result.text);
173
+ ```
73
174
 
74
175
  ### v0.46 迁移表
75
176
 
@@ -113,6 +214,45 @@ npm install ioredis
113
214
  npm install pg
114
215
  ```
115
216
 
217
+ ### 能力元数据
218
+
219
+ ```typescript
220
+ import {
221
+ getModelCapabilities,
222
+ getModuleMaturity,
223
+ listModels,
224
+ } from '@bowenqt/qiniu-ai-sdk/qiniu';
225
+
226
+ const featuredChatModels = listModels({ type: 'chat' }).slice(0, 3);
227
+ const responseApi = getModuleMaturity('ResponseAPI');
228
+ const gemini = getModelCapabilities('gemini-2.5-flash');
229
+
230
+ console.log(featuredChatModels.map((model) => model.id));
231
+ console.log(responseApi?.maturity); // beta
232
+ console.log(gemini?.capabilities);
233
+ ```
234
+
235
+ ### Worktree 交付流
236
+
237
+ ```bash
238
+ # 初始化 integration worktree,并建立默认 .worktrees/ 目录
239
+ qiniu-ai worktree init
240
+
241
+ # 从 codex/vnext-integration 派生 lane
242
+ qiniu-ai worktree spawn --lane foundation
243
+
244
+ # 查看当前 worktree 与推断出来的 lane
245
+ qiniu-ai worktree status
246
+
247
+ # 把 lane 合流回 integration branch
248
+ qiniu-ai worktree integrate --lane foundation
249
+
250
+ # 运行该 lane 的默认 live probe
251
+ qiniu-ai verify live --lane runtime
252
+ ```
253
+
254
+ 适用于跨模块的大规模 SDK 演进:root 工作区只负责编排和集成,每个 lane 只负责一组子系统。
255
+
116
256
  ### Kodo 审计 Sink
117
257
 
118
258
  ```typescript
@@ -130,36 +270,6 @@ const logger = auditLogger({
130
270
  });
131
271
  ```
132
272
 
133
- ---
134
-
135
- ## 🚀 快速开始
136
-
137
- ```typescript
138
- import { QiniuAI } from '@bowenqt/qiniu-ai-sdk/qiniu';
139
-
140
- const client = new QiniuAI({
141
- apiKey: 'Sk-xxxxxxxxxxxxxxxx',
142
- });
143
-
144
- // 对话补全
145
- const chat = await client.chat.create({
146
- model: 'gemini-2.5-flash',
147
- messages: [{ role: 'user', content: '你好!' }],
148
- });
149
- console.log(chat.choices[0].message.content);
150
-
151
- // 流式对话
152
- const stream = await client.chat.createStream({
153
- model: 'gemini-2.5-flash',
154
- messages: [{ role: 'user', content: '简单介绍一下 AI' }],
155
- });
156
- for await (const chunk of stream) {
157
- process.stdout.write(chunk.choices[0]?.delta?.content || '');
158
- }
159
- ```
160
-
161
- ---
162
-
163
273
  ## 🤖 Agent 使用
164
274
 
165
275
  ### 使用 generateText 执行工具
@@ -241,6 +351,7 @@ const videoTask = await client.video.create({
241
351
  });
242
352
  const videoResult = await client.video.waitForCompletion(videoTask.id);
243
353
  console.log(videoResult.task_result?.videos[0].url);
354
+ // videoTask.cancel() 当前会显式报错,因为远端媒体任务取消还不支持
244
355
 
245
356
  // viduq 视频生成 (v0.36.0+)
246
357
  const viduqTask = await client.video.create({
@@ -251,6 +362,7 @@ const viduqTask = await client.video.create({
251
362
  // 使用完整句柄进行可靠轮询
252
363
  const viduqResult = await client.video.waitForCompletion(viduqTask);
253
364
  console.log(viduqResult.task_result?.videos[0].url);
365
+ // 如需停止本地等待,请使用 AbortSignal;viduqTask.cancel() 当前仍为 fail-fast
254
366
 
255
367
  // kling-image-o1 高质量图像 (v0.36.0+)
256
368
  const klingImg = await client.image.generate({
@@ -489,17 +601,49 @@ await instance.kill();
489
601
 
490
602
  ---
491
603
 
492
- ## 🛠️ CLI:MCP Server
604
+ ## 🛠️ CLI
605
+
606
+ ### 项目初始化与诊断
607
+
608
+ ```bash
609
+ npx qiniu-ai init --template chat
610
+ npx qiniu-ai init --template agent
611
+ npx qiniu-ai init --template node-agent
612
+ npx qiniu-ai doctor --template agent
613
+ ```
614
+
615
+ ### MCP Server
493
616
 
494
617
  运行内置的七牛 MCP Server:
495
618
 
619
+ 当前内置 `QiniuMCPServer` 提供的 built-in tools 为:
620
+
621
+ - `qiniu_chat`
622
+ - `qiniu_ocr`
623
+ - `qiniu_image_censor`
624
+ - `qiniu_video_censor`
625
+ - `qiniu_image_generate`
626
+
627
+ 当前不包含 `qiniu_vframe`。如果你需要抽帧,请直接使用 SDK 的 `@bowenqt/qiniu-ai-sdk/ai-tools` / `QINIU_TOOLS` 或 asset resolver 能力。
628
+
496
629
  ```bash
497
630
  npx qiniu-mcp-server
498
631
  ```
499
632
 
633
+ ### Skill CLI
634
+
635
+ ```bash
636
+ npx qiniu-ai doctor --template node-agent # 检查环境、peer deps 与导入路径
637
+ npx qiniu-ai skill list # 列出已安装 skills
638
+ npx qiniu-ai skill add <url> # 从 manifest URL 安装远端 skill
639
+ npx qiniu-ai skill add <url> --sha256 <hash> # 附带完整性校验
640
+ npx qiniu-ai skill verify # 校验 lockfile 与本地文件
641
+ npx qiniu-ai skill verify --fix # 从本地目录重建 lockfile
642
+ npx qiniu-ai skill remove <name> # 删除 skill 与 lockfile 条目
643
+ ```
644
+
500
645
  **环境变量:**
501
- - `QINIU_API_KEY` — OCR/审核操作的 API Key
502
- - `QINIU_ACCESS_KEY` / `QINIU_SECRET_KEY` — 抽帧/签名操作的密钥对
646
+ - `QINIU_API_KEY` — 运行上述内置 MCP tools 所需的 API Key
503
647
 
504
648
  ---
505
649
 
package/bin/qiniu-ai.mjs CHANGED
@@ -3,11 +3,18 @@
3
3
  * Qiniu AI CLI — Skill management and SDK utilities.
4
4
  *
5
5
  * Usage:
6
+ * npx qiniu-ai init --template <chat|agent|node-agent>
7
+ * npx qiniu-ai doctor [--template <chat|agent|node-agent>] [--lane <name>]
8
+ * npx qiniu-ai worktree <init|spawn|status|integrate>
9
+ * npx qiniu-ai verify live --lane <name>
6
10
  * npx qiniu-ai skill list [--dir <skills-dir>]
7
11
  * npx qiniu-ai skill verify [--fix] [--dir <skills-dir>]
8
12
  * npx qiniu-ai skill remove <name> [--dir <skills-dir>]
9
13
  */
10
14
 
15
+ import { fileURLToPath } from 'node:url';
11
16
  import { runCLI } from '../dist/cli/skill-cli.mjs';
12
17
 
13
- runCLI(process.argv.slice(2));
18
+ await runCLI(process.argv.slice(2), {
19
+ packageRoot: fileURLToPath(new URL('..', import.meta.url)),
20
+ });
@@ -9,12 +9,14 @@ import type { ResponseFormat } from '../lib/types';
9
9
  import type { RegisteredTool } from '../lib/tool-registry';
10
10
  import type { Skill } from '../modules/skills/types';
11
11
  import type { ReferenceMode } from '../modules/skills/reference-mode';
12
+ import type { Guardrail } from './guardrails';
12
13
  import { type TokenEstimatorConfig } from '../lib/token-estimator';
13
14
  import type { MemoryManager } from './memory';
14
15
  import type { AgentState, InternalMessage, StepResult, AgentGraphEvents } from './internal-types';
15
16
  import type { ApprovalConfig } from './tool-approval';
16
17
  import type { Checkpointer, PendingApproval } from './graph/checkpointer';
17
18
  import { type AgentMetrics } from '../lib/metrics';
19
+ import type { ControlPlaneRunMetadata, CriticPolicy, PricePolicy, ReflectionLimits, TraceStore, VerifierPolicy } from './control-plane';
18
20
  /** AgentGraph options */
19
21
  export interface AgentGraphOptions {
20
22
  client: LanguageModelClient;
@@ -45,12 +47,28 @@ export interface AgentGraphOptions {
45
47
  memory?: MemoryManager;
46
48
  /** Thread ID for memory isolation (used with memory option) */
47
49
  threadId?: string;
50
+ /** Guardrails applied across runtime phases */
51
+ guardrails?: Guardrail[];
52
+ /** Agent ID for guardrail attribution */
53
+ agentId?: string;
48
54
  /** Auto-retry configuration for RecoverableError handling */
49
55
  autoRetry?: AutoRetryConfig;
50
56
  /** Skill reference injection mode (default: 'none') */
51
57
  skillReferenceMode?: ReferenceMode;
52
58
  /** Token-level event callback for streaming. Fault-isolated at predict-node level. */
53
59
  onTokenEvent?: (event: TokenEvent) => void;
60
+ /** Optional structured trace sink for control-plane integrations */
61
+ traceStore?: TraceStore;
62
+ /** Optional model pricing lookup for per-step cost attribution */
63
+ pricePolicy?: PricePolicy;
64
+ /** Optional run metadata/revision references attached to emitted traces */
65
+ runMetadata?: ControlPlaneRunMetadata;
66
+ /** Optional critic policy for bounded reflection scaffolding */
67
+ criticPolicy?: CriticPolicy;
68
+ /** Optional verifier policy for bounded reflection scaffolding */
69
+ verifierPolicy?: VerifierPolicy;
70
+ /** Optional stop conditions for bounded reflection scaffolding */
71
+ reflectionLimits?: ReflectionLimits;
54
72
  }
55
73
  /** Token-level event emitted during graph execution */
56
74
  export type TokenEvent = {
@@ -164,6 +182,7 @@ export declare class AgentGraph {
164
182
  private compactionOccurred;
165
183
  private droppedSkills;
166
184
  private droppedMessages;
185
+ private traceSteps;
167
186
  constructor(options: AgentGraphOptions);
168
187
  /**
169
188
  * Get current metrics snapshot.
@@ -236,5 +255,7 @@ export declare class AgentGraph {
236
255
  * Each skill becomes a separate system message with _meta.
237
256
  */
238
257
  private injectSkills;
258
+ private resolveToolTraceSource;
259
+ private flushRunTrace;
239
260
  }
240
261
  //# sourceMappingURL=agent-graph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-graph.d.ts","sourceRoot":"","sources":["../../src/ai/agent-graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-graph.d.ts","sourceRoot":"","sources":["../../src/ai/agent-graph.ts"],"names":[],"mappings":"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"}