qca-sdk 0.1.0-dev.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 (534) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +134 -0
  3. package/dist/core/api-promise.d.ts +19 -0
  4. package/dist/core/api-promise.d.ts.map +1 -0
  5. package/dist/core/api-promise.js +30 -0
  6. package/dist/core/api-promise.js.map +1 -0
  7. package/dist/core/client.d.ts +52 -0
  8. package/dist/core/client.d.ts.map +1 -0
  9. package/dist/core/client.js +312 -0
  10. package/dist/core/client.js.map +1 -0
  11. package/dist/core/credentials.d.ts +11 -0
  12. package/dist/core/credentials.d.ts.map +1 -0
  13. package/dist/core/credentials.js +21 -0
  14. package/dist/core/credentials.js.map +1 -0
  15. package/dist/core/error.d.ts +39 -0
  16. package/dist/core/error.d.ts.map +1 -0
  17. package/dist/core/error.js +76 -0
  18. package/dist/core/error.js.map +1 -0
  19. package/dist/core/pagination.d.ts +40 -0
  20. package/dist/core/pagination.d.ts.map +1 -0
  21. package/dist/core/pagination.js +101 -0
  22. package/dist/core/pagination.js.map +1 -0
  23. package/dist/core/resource.d.ts +7 -0
  24. package/dist/core/resource.d.ts.map +1 -0
  25. package/dist/core/resource.js +12 -0
  26. package/dist/core/resource.js.map +1 -0
  27. package/dist/core/streaming.d.ts +20 -0
  28. package/dist/core/streaming.d.ts.map +1 -0
  29. package/dist/core/streaming.js +140 -0
  30. package/dist/core/streaming.js.map +1 -0
  31. package/dist/core/uploads.d.ts +9 -0
  32. package/dist/core/uploads.d.ts.map +1 -0
  33. package/dist/core/uploads.js +60 -0
  34. package/dist/core/uploads.js.map +1 -0
  35. package/dist/esm/core/api-promise.d.ts +19 -0
  36. package/dist/esm/core/api-promise.d.ts.map +1 -0
  37. package/dist/esm/core/api-promise.js +26 -0
  38. package/dist/esm/core/api-promise.js.map +1 -0
  39. package/dist/esm/core/client.d.ts +52 -0
  40. package/dist/esm/core/client.d.ts.map +1 -0
  41. package/dist/esm/core/client.js +306 -0
  42. package/dist/esm/core/client.js.map +1 -0
  43. package/dist/esm/core/credentials.d.ts +11 -0
  44. package/dist/esm/core/credentials.d.ts.map +1 -0
  45. package/dist/esm/core/credentials.js +16 -0
  46. package/dist/esm/core/credentials.js.map +1 -0
  47. package/dist/esm/core/error.d.ts +39 -0
  48. package/dist/esm/core/error.d.ts.map +1 -0
  49. package/dist/esm/core/error.js +60 -0
  50. package/dist/esm/core/error.js.map +1 -0
  51. package/dist/esm/core/pagination.d.ts +40 -0
  52. package/dist/esm/core/pagination.d.ts.map +1 -0
  53. package/dist/esm/core/pagination.js +96 -0
  54. package/dist/esm/core/pagination.js.map +1 -0
  55. package/dist/esm/core/resource.d.ts +7 -0
  56. package/dist/esm/core/resource.d.ts.map +1 -0
  57. package/dist/esm/core/resource.js +8 -0
  58. package/dist/esm/core/resource.js.map +1 -0
  59. package/dist/esm/core/streaming.d.ts +20 -0
  60. package/dist/esm/core/streaming.d.ts.map +1 -0
  61. package/dist/esm/core/streaming.js +135 -0
  62. package/dist/esm/core/streaming.js.map +1 -0
  63. package/dist/esm/core/uploads.d.ts +9 -0
  64. package/dist/esm/core/uploads.d.ts.map +1 -0
  65. package/dist/esm/core/uploads.js +56 -0
  66. package/dist/esm/core/uploads.js.map +1 -0
  67. package/dist/esm/forward/_utils.d.ts +6 -0
  68. package/dist/esm/forward/_utils.d.ts.map +1 -0
  69. package/dist/esm/forward/_utils.js +31 -0
  70. package/dist/esm/forward/_utils.js.map +1 -0
  71. package/dist/esm/forward/batch-task.d.ts +15 -0
  72. package/dist/esm/forward/batch-task.d.ts.map +1 -0
  73. package/dist/esm/forward/batch-task.js +16 -0
  74. package/dist/esm/forward/batch-task.js.map +1 -0
  75. package/dist/esm/forward/batch.d.ts +53 -0
  76. package/dist/esm/forward/batch.d.ts.map +1 -0
  77. package/dist/esm/forward/batch.js +93 -0
  78. package/dist/esm/forward/batch.js.map +1 -0
  79. package/dist/esm/forward/channel-pairing.d.ts +22 -0
  80. package/dist/esm/forward/channel-pairing.d.ts.map +1 -0
  81. package/dist/esm/forward/channel-pairing.js +37 -0
  82. package/dist/esm/forward/channel-pairing.js.map +1 -0
  83. package/dist/esm/forward/channel-qr-session.d.ts +22 -0
  84. package/dist/esm/forward/channel-qr-session.d.ts.map +1 -0
  85. package/dist/esm/forward/channel-qr-session.js +36 -0
  86. package/dist/esm/forward/channel-qr-session.js.map +1 -0
  87. package/dist/esm/forward/channel.d.ts +46 -0
  88. package/dist/esm/forward/channel.d.ts.map +1 -0
  89. package/dist/esm/forward/channel.js +80 -0
  90. package/dist/esm/forward/channel.js.map +1 -0
  91. package/dist/esm/forward/environment.d.ts +51 -0
  92. package/dist/esm/forward/environment.d.ts.map +1 -0
  93. package/dist/esm/forward/environment.js +91 -0
  94. package/dist/esm/forward/environment.js.map +1 -0
  95. package/dist/esm/forward/file.d.ts +44 -0
  96. package/dist/esm/forward/file.d.ts.map +1 -0
  97. package/dist/esm/forward/file.js +73 -0
  98. package/dist/esm/forward/file.js.map +1 -0
  99. package/dist/esm/forward/forwardClient.d.ts +35 -0
  100. package/dist/esm/forward/forwardClient.d.ts.map +1 -0
  101. package/dist/esm/forward/forwardClient.js +37 -0
  102. package/dist/esm/forward/forwardClient.js.map +1 -0
  103. package/dist/esm/forward/identity-config.d.ts +37 -0
  104. package/dist/esm/forward/identity-config.d.ts.map +1 -0
  105. package/dist/esm/forward/identity-config.js +61 -0
  106. package/dist/esm/forward/identity-config.js.map +1 -0
  107. package/dist/esm/forward/identity-memory-store.d.ts +29 -0
  108. package/dist/esm/forward/identity-memory-store.d.ts.map +1 -0
  109. package/dist/esm/forward/identity-memory-store.js +49 -0
  110. package/dist/esm/forward/identity-memory-store.js.map +1 -0
  111. package/dist/esm/forward/identity.d.ts +90 -0
  112. package/dist/esm/forward/identity.d.ts.map +1 -0
  113. package/dist/esm/forward/identity.js +167 -0
  114. package/dist/esm/forward/identity.js.map +1 -0
  115. package/dist/esm/forward/index.d.ts +39 -0
  116. package/dist/esm/forward/index.d.ts.map +1 -0
  117. package/dist/esm/forward/index.js +35 -0
  118. package/dist/esm/forward/index.js.map +1 -0
  119. package/dist/esm/forward/memory-store-memory-version.d.ts +30 -0
  120. package/dist/esm/forward/memory-store-memory-version.d.ts.map +1 -0
  121. package/dist/esm/forward/memory-store-memory-version.js +44 -0
  122. package/dist/esm/forward/memory-store-memory-version.js.map +1 -0
  123. package/dist/esm/forward/memory-store-memory.d.ts +44 -0
  124. package/dist/esm/forward/memory-store-memory.d.ts.map +1 -0
  125. package/dist/esm/forward/memory-store-memory.js +74 -0
  126. package/dist/esm/forward/memory-store-memory.js.map +1 -0
  127. package/dist/esm/forward/memory-store.d.ts +55 -0
  128. package/dist/esm/forward/memory-store.d.ts.map +1 -0
  129. package/dist/esm/forward/memory-store.js +94 -0
  130. package/dist/esm/forward/memory-store.js.map +1 -0
  131. package/dist/esm/forward/model.d.ts +15 -0
  132. package/dist/esm/forward/model.d.ts.map +1 -0
  133. package/dist/esm/forward/model.js +19 -0
  134. package/dist/esm/forward/model.js.map +1 -0
  135. package/dist/esm/forward/schedule-run.d.ts +23 -0
  136. package/dist/esm/forward/schedule-run.d.ts.map +1 -0
  137. package/dist/esm/forward/schedule-run.js +31 -0
  138. package/dist/esm/forward/schedule-run.js.map +1 -0
  139. package/dist/esm/forward/schedule.d.ts +72 -0
  140. package/dist/esm/forward/schedule.d.ts.map +1 -0
  141. package/dist/esm/forward/schedule.js +145 -0
  142. package/dist/esm/forward/schedule.js.map +1 -0
  143. package/dist/esm/forward/session-event.d.ts +31 -0
  144. package/dist/esm/forward/session-event.d.ts.map +1 -0
  145. package/dist/esm/forward/session-event.js +51 -0
  146. package/dist/esm/forward/session-event.js.map +1 -0
  147. package/dist/esm/forward/session-resource.d.ts +15 -0
  148. package/dist/esm/forward/session-resource.d.ts.map +1 -0
  149. package/dist/esm/forward/session-resource.js +21 -0
  150. package/dist/esm/forward/session-resource.js.map +1 -0
  151. package/dist/esm/forward/session-thread-event.d.ts +24 -0
  152. package/dist/esm/forward/session-thread-event.d.ts.map +1 -0
  153. package/dist/esm/forward/session-thread-event.js +33 -0
  154. package/dist/esm/forward/session-thread-event.js.map +1 -0
  155. package/dist/esm/forward/session-thread.d.ts +32 -0
  156. package/dist/esm/forward/session-thread.d.ts.map +1 -0
  157. package/dist/esm/forward/session-thread.js +48 -0
  158. package/dist/esm/forward/session-thread.js.map +1 -0
  159. package/dist/esm/forward/session.d.ts +57 -0
  160. package/dist/esm/forward/session.d.ts.map +1 -0
  161. package/dist/esm/forward/session.js +102 -0
  162. package/dist/esm/forward/session.js.map +1 -0
  163. package/dist/esm/forward/skill-version.d.ts +44 -0
  164. package/dist/esm/forward/skill-version.d.ts.map +1 -0
  165. package/dist/esm/forward/skill-version.js +75 -0
  166. package/dist/esm/forward/skill-version.js.map +1 -0
  167. package/dist/esm/forward/skill.d.ts +46 -0
  168. package/dist/esm/forward/skill.d.ts.map +1 -0
  169. package/dist/esm/forward/skill.js +81 -0
  170. package/dist/esm/forward/skill.js.map +1 -0
  171. package/dist/esm/forward/template.d.ts +51 -0
  172. package/dist/esm/forward/template.d.ts.map +1 -0
  173. package/dist/esm/forward/template.js +97 -0
  174. package/dist/esm/forward/template.js.map +1 -0
  175. package/dist/esm/forward/types.d.ts +3153 -0
  176. package/dist/esm/forward/types.d.ts.map +1 -0
  177. package/dist/esm/forward/types.js +2 -0
  178. package/dist/esm/forward/types.js.map +1 -0
  179. package/dist/esm/forward/vault-credential.d.ts +37 -0
  180. package/dist/esm/forward/vault-credential.d.ts.map +1 -0
  181. package/dist/esm/forward/vault-credential.js +62 -0
  182. package/dist/esm/forward/vault-credential.js.map +1 -0
  183. package/dist/esm/forward/vault.d.ts +39 -0
  184. package/dist/esm/forward/vault.d.ts.map +1 -0
  185. package/dist/esm/forward/vault.js +64 -0
  186. package/dist/esm/forward/vault.js.map +1 -0
  187. package/dist/esm/index.d.ts +10 -0
  188. package/dist/esm/index.d.ts.map +1 -0
  189. package/dist/esm/index.js +10 -0
  190. package/dist/esm/index.js.map +1 -0
  191. package/dist/esm/managed/client.d.ts +30 -0
  192. package/dist/esm/managed/client.d.ts.map +1 -0
  193. package/dist/esm/managed/client.js +29 -0
  194. package/dist/esm/managed/client.js.map +1 -0
  195. package/dist/esm/managed/index.d.ts +12 -0
  196. package/dist/esm/managed/index.d.ts.map +1 -0
  197. package/dist/esm/managed/index.js +10 -0
  198. package/dist/esm/managed/index.js.map +1 -0
  199. package/dist/esm/managed/internal.d.ts +11 -0
  200. package/dist/esm/managed/internal.d.ts.map +1 -0
  201. package/dist/esm/managed/internal.js +53 -0
  202. package/dist/esm/managed/internal.js.map +1 -0
  203. package/dist/esm/managed/managedClient.d.ts +3 -0
  204. package/dist/esm/managed/managedClient.d.ts.map +1 -0
  205. package/dist/esm/managed/managedClient.js +2 -0
  206. package/dist/esm/managed/managedClient.js.map +1 -0
  207. package/dist/esm/managed/resources/agent-version.d.ts +13 -0
  208. package/dist/esm/managed/resources/agent-version.d.ts.map +1 -0
  209. package/dist/esm/managed/resources/agent-version.js +14 -0
  210. package/dist/esm/managed/resources/agent-version.js.map +1 -0
  211. package/dist/esm/managed/resources/agent.d.ts +32 -0
  212. package/dist/esm/managed/resources/agent.d.ts.map +1 -0
  213. package/dist/esm/managed/resources/agent.js +44 -0
  214. package/dist/esm/managed/resources/agent.js.map +1 -0
  215. package/dist/esm/managed/resources/deployment-run.d.ts +18 -0
  216. package/dist/esm/managed/resources/deployment-run.d.ts.map +1 -0
  217. package/dist/esm/managed/resources/deployment-run.js +21 -0
  218. package/dist/esm/managed/resources/deployment-run.js.map +1 -0
  219. package/dist/esm/managed/resources/deployment.d.ts +42 -0
  220. package/dist/esm/managed/resources/deployment.d.ts.map +1 -0
  221. package/dist/esm/managed/resources/deployment.js +63 -0
  222. package/dist/esm/managed/resources/deployment.js.map +1 -0
  223. package/dist/esm/managed/resources/dream.d.ts +30 -0
  224. package/dist/esm/managed/resources/dream.d.ts.map +1 -0
  225. package/dist/esm/managed/resources/dream.js +42 -0
  226. package/dist/esm/managed/resources/dream.js.map +1 -0
  227. package/dist/esm/managed/resources/environment-work.d.ts +78 -0
  228. package/dist/esm/managed/resources/environment-work.d.ts.map +1 -0
  229. package/dist/esm/managed/resources/environment-work.js +99 -0
  230. package/dist/esm/managed/resources/environment-work.js.map +1 -0
  231. package/dist/esm/managed/resources/environment.d.ts +37 -0
  232. package/dist/esm/managed/resources/environment.d.ts.map +1 -0
  233. package/dist/esm/managed/resources/environment.js +52 -0
  234. package/dist/esm/managed/resources/environment.js.map +1 -0
  235. package/dist/esm/managed/resources/file.d.ts +30 -0
  236. package/dist/esm/managed/resources/file.d.ts.map +1 -0
  237. package/dist/esm/managed/resources/file.js +44 -0
  238. package/dist/esm/managed/resources/file.js.map +1 -0
  239. package/dist/esm/managed/resources/index.d.ts +22 -0
  240. package/dist/esm/managed/resources/index.d.ts.map +1 -0
  241. package/dist/esm/managed/resources/index.js +22 -0
  242. package/dist/esm/managed/resources/index.js.map +1 -0
  243. package/dist/esm/managed/resources/memory-store-memory-version.d.ts +22 -0
  244. package/dist/esm/managed/resources/memory-store-memory-version.d.ts.map +1 -0
  245. package/dist/esm/managed/resources/memory-store-memory-version.js +28 -0
  246. package/dist/esm/managed/resources/memory-store-memory-version.js.map +1 -0
  247. package/dist/esm/managed/resources/memory-store-memory.d.ts +30 -0
  248. package/dist/esm/managed/resources/memory-store-memory.d.ts.map +1 -0
  249. package/dist/esm/managed/resources/memory-store-memory.js +42 -0
  250. package/dist/esm/managed/resources/memory-store-memory.js.map +1 -0
  251. package/dist/esm/managed/resources/memory-store.d.ts +38 -0
  252. package/dist/esm/managed/resources/memory-store.d.ts.map +1 -0
  253. package/dist/esm/managed/resources/memory-store.js +53 -0
  254. package/dist/esm/managed/resources/memory-store.js.map +1 -0
  255. package/dist/esm/managed/resources/model.d.ts +16 -0
  256. package/dist/esm/managed/resources/model.d.ts.map +1 -0
  257. package/dist/esm/managed/resources/model.js +17 -0
  258. package/dist/esm/managed/resources/model.js.map +1 -0
  259. package/dist/esm/managed/resources/session-event.d.ts +23 -0
  260. package/dist/esm/managed/resources/session-event.d.ts.map +1 -0
  261. package/dist/esm/managed/resources/session-event.js +30 -0
  262. package/dist/esm/managed/resources/session-event.js.map +1 -0
  263. package/dist/esm/managed/resources/session-resource.d.ts +30 -0
  264. package/dist/esm/managed/resources/session-resource.d.ts.map +1 -0
  265. package/dist/esm/managed/resources/session-resource.js +42 -0
  266. package/dist/esm/managed/resources/session-resource.js.map +1 -0
  267. package/dist/esm/managed/resources/session-thread-event.d.ts +19 -0
  268. package/dist/esm/managed/resources/session-thread-event.d.ts.map +1 -0
  269. package/dist/esm/managed/resources/session-thread-event.js +23 -0
  270. package/dist/esm/managed/resources/session-thread-event.js.map +1 -0
  271. package/dist/esm/managed/resources/session-thread.d.ts +24 -0
  272. package/dist/esm/managed/resources/session-thread.d.ts.map +1 -0
  273. package/dist/esm/managed/resources/session-thread.js +30 -0
  274. package/dist/esm/managed/resources/session-thread.js.map +1 -0
  275. package/dist/esm/managed/resources/session.d.ts +40 -0
  276. package/dist/esm/managed/resources/session.d.ts.map +1 -0
  277. package/dist/esm/managed/resources/session.js +55 -0
  278. package/dist/esm/managed/resources/session.js.map +1 -0
  279. package/dist/esm/managed/resources/skill-version.d.ts +30 -0
  280. package/dist/esm/managed/resources/skill-version.d.ts.map +1 -0
  281. package/dist/esm/managed/resources/skill-version.js +44 -0
  282. package/dist/esm/managed/resources/skill-version.js.map +1 -0
  283. package/dist/esm/managed/resources/skill.d.ts +28 -0
  284. package/dist/esm/managed/resources/skill.d.ts.map +1 -0
  285. package/dist/esm/managed/resources/skill.js +37 -0
  286. package/dist/esm/managed/resources/skill.js.map +1 -0
  287. package/dist/esm/managed/resources/vault-credential.d.ts +38 -0
  288. package/dist/esm/managed/resources/vault-credential.d.ts.map +1 -0
  289. package/dist/esm/managed/resources/vault-credential.js +56 -0
  290. package/dist/esm/managed/resources/vault-credential.js.map +1 -0
  291. package/dist/esm/managed/resources/vault.d.ts +32 -0
  292. package/dist/esm/managed/resources/vault.d.ts.map +1 -0
  293. package/dist/esm/managed/resources/vault.js +44 -0
  294. package/dist/esm/managed/resources/vault.js.map +1 -0
  295. package/dist/esm/managed/types.d.ts +10612 -0
  296. package/dist/esm/managed/types.d.ts.map +1 -0
  297. package/dist/esm/managed/types.js +3 -0
  298. package/dist/esm/managed/types.js.map +1 -0
  299. package/dist/esm/package.json +1 -0
  300. package/dist/forward/_utils.d.ts +6 -0
  301. package/dist/forward/_utils.d.ts.map +1 -0
  302. package/dist/forward/_utils.js +35 -0
  303. package/dist/forward/_utils.js.map +1 -0
  304. package/dist/forward/batch-task.d.ts +15 -0
  305. package/dist/forward/batch-task.d.ts.map +1 -0
  306. package/dist/forward/batch-task.js +20 -0
  307. package/dist/forward/batch-task.js.map +1 -0
  308. package/dist/forward/batch.d.ts +53 -0
  309. package/dist/forward/batch.d.ts.map +1 -0
  310. package/dist/forward/batch.js +97 -0
  311. package/dist/forward/batch.js.map +1 -0
  312. package/dist/forward/channel-pairing.d.ts +22 -0
  313. package/dist/forward/channel-pairing.d.ts.map +1 -0
  314. package/dist/forward/channel-pairing.js +41 -0
  315. package/dist/forward/channel-pairing.js.map +1 -0
  316. package/dist/forward/channel-qr-session.d.ts +22 -0
  317. package/dist/forward/channel-qr-session.d.ts.map +1 -0
  318. package/dist/forward/channel-qr-session.js +40 -0
  319. package/dist/forward/channel-qr-session.js.map +1 -0
  320. package/dist/forward/channel.d.ts +46 -0
  321. package/dist/forward/channel.d.ts.map +1 -0
  322. package/dist/forward/channel.js +84 -0
  323. package/dist/forward/channel.js.map +1 -0
  324. package/dist/forward/environment.d.ts +51 -0
  325. package/dist/forward/environment.d.ts.map +1 -0
  326. package/dist/forward/environment.js +95 -0
  327. package/dist/forward/environment.js.map +1 -0
  328. package/dist/forward/file.d.ts +44 -0
  329. package/dist/forward/file.d.ts.map +1 -0
  330. package/dist/forward/file.js +77 -0
  331. package/dist/forward/file.js.map +1 -0
  332. package/dist/forward/forwardClient.d.ts +35 -0
  333. package/dist/forward/forwardClient.d.ts.map +1 -0
  334. package/dist/forward/forwardClient.js +41 -0
  335. package/dist/forward/forwardClient.js.map +1 -0
  336. package/dist/forward/identity-config.d.ts +37 -0
  337. package/dist/forward/identity-config.d.ts.map +1 -0
  338. package/dist/forward/identity-config.js +65 -0
  339. package/dist/forward/identity-config.js.map +1 -0
  340. package/dist/forward/identity-memory-store.d.ts +29 -0
  341. package/dist/forward/identity-memory-store.d.ts.map +1 -0
  342. package/dist/forward/identity-memory-store.js +53 -0
  343. package/dist/forward/identity-memory-store.js.map +1 -0
  344. package/dist/forward/identity.d.ts +90 -0
  345. package/dist/forward/identity.d.ts.map +1 -0
  346. package/dist/forward/identity.js +171 -0
  347. package/dist/forward/identity.js.map +1 -0
  348. package/dist/forward/index.d.ts +39 -0
  349. package/dist/forward/index.d.ts.map +1 -0
  350. package/dist/forward/index.js +86 -0
  351. package/dist/forward/index.js.map +1 -0
  352. package/dist/forward/memory-store-memory-version.d.ts +30 -0
  353. package/dist/forward/memory-store-memory-version.d.ts.map +1 -0
  354. package/dist/forward/memory-store-memory-version.js +48 -0
  355. package/dist/forward/memory-store-memory-version.js.map +1 -0
  356. package/dist/forward/memory-store-memory.d.ts +44 -0
  357. package/dist/forward/memory-store-memory.d.ts.map +1 -0
  358. package/dist/forward/memory-store-memory.js +78 -0
  359. package/dist/forward/memory-store-memory.js.map +1 -0
  360. package/dist/forward/memory-store.d.ts +55 -0
  361. package/dist/forward/memory-store.d.ts.map +1 -0
  362. package/dist/forward/memory-store.js +98 -0
  363. package/dist/forward/memory-store.js.map +1 -0
  364. package/dist/forward/model.d.ts +15 -0
  365. package/dist/forward/model.d.ts.map +1 -0
  366. package/dist/forward/model.js +23 -0
  367. package/dist/forward/model.js.map +1 -0
  368. package/dist/forward/schedule-run.d.ts +23 -0
  369. package/dist/forward/schedule-run.d.ts.map +1 -0
  370. package/dist/forward/schedule-run.js +35 -0
  371. package/dist/forward/schedule-run.js.map +1 -0
  372. package/dist/forward/schedule.d.ts +72 -0
  373. package/dist/forward/schedule.d.ts.map +1 -0
  374. package/dist/forward/schedule.js +149 -0
  375. package/dist/forward/schedule.js.map +1 -0
  376. package/dist/forward/session-event.d.ts +31 -0
  377. package/dist/forward/session-event.d.ts.map +1 -0
  378. package/dist/forward/session-event.js +55 -0
  379. package/dist/forward/session-event.js.map +1 -0
  380. package/dist/forward/session-resource.d.ts +15 -0
  381. package/dist/forward/session-resource.d.ts.map +1 -0
  382. package/dist/forward/session-resource.js +25 -0
  383. package/dist/forward/session-resource.js.map +1 -0
  384. package/dist/forward/session-thread-event.d.ts +24 -0
  385. package/dist/forward/session-thread-event.d.ts.map +1 -0
  386. package/dist/forward/session-thread-event.js +37 -0
  387. package/dist/forward/session-thread-event.js.map +1 -0
  388. package/dist/forward/session-thread.d.ts +32 -0
  389. package/dist/forward/session-thread.d.ts.map +1 -0
  390. package/dist/forward/session-thread.js +52 -0
  391. package/dist/forward/session-thread.js.map +1 -0
  392. package/dist/forward/session.d.ts +57 -0
  393. package/dist/forward/session.d.ts.map +1 -0
  394. package/dist/forward/session.js +106 -0
  395. package/dist/forward/session.js.map +1 -0
  396. package/dist/forward/skill-version.d.ts +44 -0
  397. package/dist/forward/skill-version.d.ts.map +1 -0
  398. package/dist/forward/skill-version.js +79 -0
  399. package/dist/forward/skill-version.js.map +1 -0
  400. package/dist/forward/skill.d.ts +46 -0
  401. package/dist/forward/skill.d.ts.map +1 -0
  402. package/dist/forward/skill.js +85 -0
  403. package/dist/forward/skill.js.map +1 -0
  404. package/dist/forward/template.d.ts +51 -0
  405. package/dist/forward/template.d.ts.map +1 -0
  406. package/dist/forward/template.js +101 -0
  407. package/dist/forward/template.js.map +1 -0
  408. package/dist/forward/types.d.ts +3153 -0
  409. package/dist/forward/types.d.ts.map +1 -0
  410. package/dist/forward/types.js +3 -0
  411. package/dist/forward/types.js.map +1 -0
  412. package/dist/forward/vault-credential.d.ts +37 -0
  413. package/dist/forward/vault-credential.d.ts.map +1 -0
  414. package/dist/forward/vault-credential.js +66 -0
  415. package/dist/forward/vault-credential.js.map +1 -0
  416. package/dist/forward/vault.d.ts +39 -0
  417. package/dist/forward/vault.d.ts.map +1 -0
  418. package/dist/forward/vault.js +68 -0
  419. package/dist/forward/vault.js.map +1 -0
  420. package/dist/index.d.ts +10 -0
  421. package/dist/index.d.ts.map +1 -0
  422. package/dist/index.js +29 -0
  423. package/dist/index.js.map +1 -0
  424. package/dist/managed/client.d.ts +30 -0
  425. package/dist/managed/client.d.ts.map +1 -0
  426. package/dist/managed/client.js +33 -0
  427. package/dist/managed/client.js.map +1 -0
  428. package/dist/managed/index.d.ts +12 -0
  429. package/dist/managed/index.d.ts.map +1 -0
  430. package/dist/managed/index.js +34 -0
  431. package/dist/managed/index.js.map +1 -0
  432. package/dist/managed/internal.d.ts +11 -0
  433. package/dist/managed/internal.d.ts.map +1 -0
  434. package/dist/managed/internal.js +58 -0
  435. package/dist/managed/internal.js.map +1 -0
  436. package/dist/managed/managedClient.d.ts +3 -0
  437. package/dist/managed/managedClient.d.ts.map +1 -0
  438. package/dist/managed/managedClient.js +7 -0
  439. package/dist/managed/managedClient.js.map +1 -0
  440. package/dist/managed/resources/agent-version.d.ts +13 -0
  441. package/dist/managed/resources/agent-version.d.ts.map +1 -0
  442. package/dist/managed/resources/agent-version.js +18 -0
  443. package/dist/managed/resources/agent-version.js.map +1 -0
  444. package/dist/managed/resources/agent.d.ts +32 -0
  445. package/dist/managed/resources/agent.d.ts.map +1 -0
  446. package/dist/managed/resources/agent.js +48 -0
  447. package/dist/managed/resources/agent.js.map +1 -0
  448. package/dist/managed/resources/deployment-run.d.ts +18 -0
  449. package/dist/managed/resources/deployment-run.d.ts.map +1 -0
  450. package/dist/managed/resources/deployment-run.js +25 -0
  451. package/dist/managed/resources/deployment-run.js.map +1 -0
  452. package/dist/managed/resources/deployment.d.ts +42 -0
  453. package/dist/managed/resources/deployment.d.ts.map +1 -0
  454. package/dist/managed/resources/deployment.js +67 -0
  455. package/dist/managed/resources/deployment.js.map +1 -0
  456. package/dist/managed/resources/dream.d.ts +30 -0
  457. package/dist/managed/resources/dream.d.ts.map +1 -0
  458. package/dist/managed/resources/dream.js +46 -0
  459. package/dist/managed/resources/dream.js.map +1 -0
  460. package/dist/managed/resources/environment-work.d.ts +78 -0
  461. package/dist/managed/resources/environment-work.d.ts.map +1 -0
  462. package/dist/managed/resources/environment-work.js +103 -0
  463. package/dist/managed/resources/environment-work.js.map +1 -0
  464. package/dist/managed/resources/environment.d.ts +37 -0
  465. package/dist/managed/resources/environment.d.ts.map +1 -0
  466. package/dist/managed/resources/environment.js +56 -0
  467. package/dist/managed/resources/environment.js.map +1 -0
  468. package/dist/managed/resources/file.d.ts +30 -0
  469. package/dist/managed/resources/file.d.ts.map +1 -0
  470. package/dist/managed/resources/file.js +48 -0
  471. package/dist/managed/resources/file.js.map +1 -0
  472. package/dist/managed/resources/index.d.ts +22 -0
  473. package/dist/managed/resources/index.d.ts.map +1 -0
  474. package/dist/managed/resources/index.js +46 -0
  475. package/dist/managed/resources/index.js.map +1 -0
  476. package/dist/managed/resources/memory-store-memory-version.d.ts +22 -0
  477. package/dist/managed/resources/memory-store-memory-version.d.ts.map +1 -0
  478. package/dist/managed/resources/memory-store-memory-version.js +32 -0
  479. package/dist/managed/resources/memory-store-memory-version.js.map +1 -0
  480. package/dist/managed/resources/memory-store-memory.d.ts +30 -0
  481. package/dist/managed/resources/memory-store-memory.d.ts.map +1 -0
  482. package/dist/managed/resources/memory-store-memory.js +46 -0
  483. package/dist/managed/resources/memory-store-memory.js.map +1 -0
  484. package/dist/managed/resources/memory-store.d.ts +38 -0
  485. package/dist/managed/resources/memory-store.d.ts.map +1 -0
  486. package/dist/managed/resources/memory-store.js +57 -0
  487. package/dist/managed/resources/memory-store.js.map +1 -0
  488. package/dist/managed/resources/model.d.ts +16 -0
  489. package/dist/managed/resources/model.d.ts.map +1 -0
  490. package/dist/managed/resources/model.js +21 -0
  491. package/dist/managed/resources/model.js.map +1 -0
  492. package/dist/managed/resources/session-event.d.ts +23 -0
  493. package/dist/managed/resources/session-event.d.ts.map +1 -0
  494. package/dist/managed/resources/session-event.js +34 -0
  495. package/dist/managed/resources/session-event.js.map +1 -0
  496. package/dist/managed/resources/session-resource.d.ts +30 -0
  497. package/dist/managed/resources/session-resource.d.ts.map +1 -0
  498. package/dist/managed/resources/session-resource.js +46 -0
  499. package/dist/managed/resources/session-resource.js.map +1 -0
  500. package/dist/managed/resources/session-thread-event.d.ts +19 -0
  501. package/dist/managed/resources/session-thread-event.d.ts.map +1 -0
  502. package/dist/managed/resources/session-thread-event.js +27 -0
  503. package/dist/managed/resources/session-thread-event.js.map +1 -0
  504. package/dist/managed/resources/session-thread.d.ts +24 -0
  505. package/dist/managed/resources/session-thread.d.ts.map +1 -0
  506. package/dist/managed/resources/session-thread.js +34 -0
  507. package/dist/managed/resources/session-thread.js.map +1 -0
  508. package/dist/managed/resources/session.d.ts +40 -0
  509. package/dist/managed/resources/session.d.ts.map +1 -0
  510. package/dist/managed/resources/session.js +59 -0
  511. package/dist/managed/resources/session.js.map +1 -0
  512. package/dist/managed/resources/skill-version.d.ts +30 -0
  513. package/dist/managed/resources/skill-version.d.ts.map +1 -0
  514. package/dist/managed/resources/skill-version.js +48 -0
  515. package/dist/managed/resources/skill-version.js.map +1 -0
  516. package/dist/managed/resources/skill.d.ts +28 -0
  517. package/dist/managed/resources/skill.d.ts.map +1 -0
  518. package/dist/managed/resources/skill.js +41 -0
  519. package/dist/managed/resources/skill.js.map +1 -0
  520. package/dist/managed/resources/vault-credential.d.ts +38 -0
  521. package/dist/managed/resources/vault-credential.d.ts.map +1 -0
  522. package/dist/managed/resources/vault-credential.js +60 -0
  523. package/dist/managed/resources/vault-credential.js.map +1 -0
  524. package/dist/managed/resources/vault.d.ts +32 -0
  525. package/dist/managed/resources/vault.d.ts.map +1 -0
  526. package/dist/managed/resources/vault.js +48 -0
  527. package/dist/managed/resources/vault.js.map +1 -0
  528. package/dist/managed/types.d.ts +10612 -0
  529. package/dist/managed/types.d.ts.map +1 -0
  530. package/dist/managed/types.js +4 -0
  531. package/dist/managed/types.js.map +1 -0
  532. package/docs/forward-api.md +2346 -0
  533. package/docs/managed-api.md +2306 -0
  534. package/package.json +88 -0
@@ -0,0 +1,2346 @@
1
+ # Forward API(TypeScript)
2
+
3
+ Forward 模式通过 Template 定义模型和运行配置,通过 Identity 表示业务终端用户,再基于两者创建 Session。当前 SDK 提供 **110 个操作**,覆盖模板、身份、会话、计划任务、批处理、渠道、环境、文件、技能、凭据和记忆。
4
+
5
+ 本文以本仓库当前 TypeScript 实现为准。另一种模式见 [Managed API](managed-api.md)。SDK 要求 Node.js **20.12 或更高版本**,支持 ESM 与 CommonJS。
6
+
7
+ ## 安装和客户端
8
+
9
+ ```sh
10
+ npm install qca-sdk
11
+ export QODER_ACCESS_TOKEN='你的 PAT'
12
+ ```
13
+
14
+ ```ts
15
+ import ForwardClient, { PATCredential } from 'qca-sdk/forward';
16
+
17
+ const client = new ForwardClient({
18
+ credential: PATCredential.fromEnv(),
19
+ baseURL: 'https://api.qoder.com/api/v1/forward',
20
+ timeout: 30_000,
21
+ maxRetries: 2,
22
+ });
23
+
24
+ const models = await client.models.list();
25
+ for (const model of models.data) {
26
+ console.log(model.id);
27
+ }
28
+ ```
29
+
30
+ CommonJS 可使用 `const { ForwardClient } = require('qca-sdk')`。客户端与所有业务类型也可从 `qca-sdk/forward` 导入;包根导出客户端和通用类型,业务类型使用模式入口。
31
+
32
+ `credential` 接受实现 `getToken(): string | Promise<string>` 的对象。也可设置 `accessToken` 为 PAT 字符串或返回字符串的同步/异步函数;同时传入时 `credential` 优先。省略二者时,请求读取 `QODER_ACCESS_TOKEN`。`PATCredential.fromEnv('自定义变量名')` 支持自定义变量,未找到或值为空会立即报错。SDK 发送 `Authorization: Bearer <PAT>`,不会自动加载 `.env` 文件。
33
+
34
+ 默认 `baseURL` 为 `https://api.qoder.com/api/v1/forward`,环境变量 `QODER_FORWARD_BASE_URL` 可覆盖,构造参数 `baseURL` 优先于环境变量。中国站可显式设置 `https://api.qoder.com.cn/api/v1/forward`,凭据须属于对应站点。
35
+
36
+ ## 客户端与请求选项
37
+
38
+ 配置定义见 [ClientOptions / RequestOptions](../src/core/client.ts)。所有时间单位均为毫秒。
39
+
40
+ | 构造选项 | 用途 / 默认值 |
41
+ | --- | --- |
42
+ | `credential` / `accessToken` | PAT 或动态凭据提供者,见上文 |
43
+ | `baseURL` | 包含 `/api/v1/forward` 的 API 基地址 |
44
+ | `timeout` | 单次尝试的超时,含响应体读取;默认 `600_000`,`0` 关闭 |
45
+ | `maxRetries` | 初次请求之外的重试次数,默认 `2` |
46
+ | `defaultHeaders` / `defaultQuery` | 每个 API 请求的默认请求头 / 查询参数 |
47
+ | `fetch` | 自定义 Fetch 实现,默认 `globalThis.fetch` |
48
+ | `middleware` | `(request, next) => Promise<Response>` 中间件数组,按数组顺序进入 |
49
+
50
+ 每个资源方法的最后一个 `options` 支持 `signal`、`timeout`、`maxRetries`、`idempotencyKey`、`headers`、`query` 和 `body`。常规业务数据应使用方法自己的 `params`;`body` 用于需要直接覆盖请求体的底层调用。`headers` 中值为 `null` 可删除默认请求头。Forward 类型中的 `idempotency_key` 会写入 `Idempotency-Key`;也可通过 `options.idempotencyKey` 设置。
51
+
52
+ 默认重试网络错误及符合条件的 `408`、`429`、`5xx`:GET/HEAD 或携带幂等键的可重放请求可重试;无幂等键的可重放写请求仅重试 `429`;`409` 不重试。`x-should-retry` 在这些条件内参与判断,`Retry-After` / `retry-after-ms` 控制等待时间。每次重试重新读取凭据,发送 `X-Qoder-Retry-Count`。流式请求体不可重放。需要停用重试时设置 `maxRetries: 0`。
53
+
54
+ ## 响应、分页和错误
55
+
56
+ 普通资源方法返回 [APIPromise](../src/core/api-promise.ts):调用方法即启动请求,`await` 解析数据。`.withResponse()` 同时取得解析结果、原始 `Response` 和响应头中的 `request_id`;`.asResponse()` 直接取得原始响应,由调用方消费或取消响应体。读取 `.withResponse()` 后不要再次对同一响应调用 `.json()`。
57
+
58
+ ```ts
59
+ const { data, response, request_id } = await client.templates
60
+ .retrieve('template_id', { signal: AbortSignal.timeout(5_000) })
61
+ .withResponse();
62
+ console.log(data.id, response.status, request_id);
63
+
64
+ const raw = await client.templates.retrieve('template_id').asResponse();
65
+ console.log(await raw.json());
66
+ ```
67
+
68
+ 返回 `PagePromise<T>` 的方法支持直接异步迭代;`await` 后得到 [Page](../src/core/pagination.ts),包含 `data`、游标字段、`hasNextPage()`、`getNextPage()`、`iterPages()` 和 `toJSON()`。`getNextPage()` 无下一页时返回 `null`。
69
+
70
+ ```ts
71
+ for await (const template of client.templates.list({ limit: 20 })) {
72
+ console.log(template.id);
73
+ }
74
+
75
+ const page = await client.templates.list({ limit: 20 });
76
+ console.log(page.data);
77
+ if (page.hasNextPage()) console.log((await page.getNextPage())?.data);
78
+ ```
79
+
80
+ Forward 同时存在 ID 游标和不透明分页令牌;每个方法下标明具体机制。自动分页保留初次请求的过滤条件及请求选项,发现游标不前进时抛出 `QoderError`。
81
+
82
+ ```ts
83
+ import { APIError, APIUserAbortError } from 'qca-sdk/forward';
84
+
85
+ try {
86
+ await client.templates.retrieve('template_id', { maxRetries: 0 });
87
+ } catch (error) {
88
+ if (error instanceof APIError) {
89
+ console.error(error.status, error.code, error.request_id, error.message);
90
+ } else if (error instanceof APIUserAbortError) {
91
+ console.error('请求已取消');
92
+ } else {
93
+ throw error;
94
+ }
95
+ }
96
+ ```
97
+
98
+ [APIError](../src/core/error.ts) 包含 `status`、`type`、`code`、`request_id`(别名 `requestID`)、`headers`、`request`、`response`、`error`。错误体中的 `request_id` 优先于响应头。HTTP `400/401/403/404/409/422/429/5xx` 分别对应 `BadRequestError`、`AuthenticationError`、`PermissionDeniedError`、`NotFoundError`、`ConflictError`、`UnprocessableEntityError`、`RateLimitError`、`InternalServerError`;其他状态返回 `APIError`。连接错误为 `APIConnectionError`,超时为其子类 `APIConnectionTimeoutError`,主动取消为 `APIUserAbortError`。
99
+
100
+ ## 创建会话并读取 SSE
101
+
102
+ 以下示例先创建环境、模板与身份,再发送一条消息。`auto` 需在当前账号模型列表中可用。示例创建的资源 ID 应保存供后续复用或清理;完整的清理流程见 [Forward 场景实现](../examples/forward-scenarios.mjs) 和 [资源清理实现](../examples/forward-support.mjs)。
103
+
104
+ ```ts
105
+ const environment = await client.environments.create({ name: `sdk-env-${Date.now()}`, config: { type: 'cloud' } });
106
+ const template = await client.templates.create({
107
+ name: `sdk-template-${Date.now()}`,
108
+ model: 'auto',
109
+ environment_id: environment.id,
110
+ });
111
+ const identity = await client.identities.create({ external_id: `sdk-user-${Date.now()}` });
112
+ const session = await client.sessions.create({ identity_id: identity.id, template_id: template.id });
113
+
114
+ const sent = await client.sessions.events.send(session.id, {
115
+ events: [{ type: 'user.message', content: '请简单介绍你能提供什么帮助。' }],
116
+ });
117
+ const userEventID = sent.data[0]?.id;
118
+ if (!userEventID) throw new Error('发送结果缺少用户事件 ID');
119
+
120
+ const stream = await client.sessions.events.streamEvents(session.id, {
121
+ 'event_deltas[]': ['agent.message'],
122
+ last_event_id: userEventID,
123
+ }, { signal: AbortSignal.timeout(120_000) });
124
+ let sawAssistant = false;
125
+ try {
126
+ for await (const event of stream) {
127
+ console.log(event);
128
+ if (event.type === 'agent.message') sawAssistant = true;
129
+ if (event.type === 'session.error' || event.type === 'session.status_terminated') {
130
+ throw new Error(`会话未正常完成:${event.type}`);
131
+ }
132
+ if (sawAssistant && event.type === 'session.status_idle') break;
133
+ }
134
+ } finally {
135
+ await stream.close();
136
+ }
137
+ ```
138
+
139
+ [Stream](../src/core/streaming.ts) 为单次消费的 `AsyncIterable`,保留重复 ID 的增量事件和未知事件,跳过 ping,遇到 `[DONE]` 正常结束,SSE `error` 帧抛出 `APIError`。业务事件 `session.error` 仍作为数据交给调用方处理。上例用发送结果中的用户事件 ID 作为游标,读取该消息之后的事件,避免漏掉订阅前已经产生的回复。流不会自动重连;可保存 `stream.lastEventID`,下一次使用 `params.last_event_id` 传入 `Last-Event-ID`。线程流使用 `sessions.threads.events.streamEvents(sessionID, threadID, params, options)`,注意两个 ID 的顺序。
140
+
141
+ ## 文件与技能上传
142
+
143
+ ```ts
144
+ import { toFile } from 'qca-sdk/forward';
145
+
146
+ const file = await client.files.upload({
147
+ file: await toFile(new TextEncoder().encode('Hello'), 'hello.txt'),
148
+ purpose: 'session_resource',
149
+ });
150
+ try {
151
+ const response = await client.files.download(file.id);
152
+ console.log(await response.text());
153
+ } finally {
154
+ await client.files.delete(file.id);
155
+ }
156
+
157
+ const skill = await client.skills.create({
158
+ files: [await toFile('---\nname: hello\ndescription: A greeting skill.\n---\nSay hello.\n', 'hello/SKILL.md')],
159
+ });
160
+ console.log(skill.id, skill.latest_version);
161
+ ```
162
+
163
+ [toFile](../src/core/uploads.ts) 接受字符串、Blob/File、字节数组、Response、ReadableStream 和异步可迭代输入(包括 Node.js 文件流)。技能的 `files` 可重复,文件名保留相对目录。上传使用 multipart,由 SDK 设置 boundary;不要自行指定 Content-Type。`files.download()` 先从 API 获取临时链接,再以独立请求下载,不向存储服务传递 API PAT、默认请求头或中间件。
164
+
165
+ ## 资源目录
166
+
167
+ 以下 26 个资源组包含 **110 个 HTTP 操作**,与当前 [API inventory](../src/forward/api-inventory.json) 和源码逐项核对。表中的路径相对于客户端的 `baseURL`;`{…}` 表示路径参数。
168
+
169
+ | 资源组 | 用途 | 操作数 |
170
+ | --- | --- | --- |
171
+ | [`client.templates`](#templates) | 模板 | 6 |
172
+ | [`client.identities`](#identities) | 终端用户身份 | 11 |
173
+ | [`client.identities.configs`](#identities-configs) | 身份的模板配置 | 4 |
174
+ | [`client.identities.memoryStores`](#identities-memoryStores) | 身份的记忆库挂载 | 3 |
175
+ | [`client.sessions`](#sessions) | 会话 | 6 |
176
+ | [`client.sessions.events`](#sessions-events) | 会话事件 | 3 |
177
+ | [`client.sessions.resources`](#sessions-resources) | 会话资源 | 1 |
178
+ | [`client.sessions.threads`](#sessions-threads) | 会话线程 | 3 |
179
+ | [`client.sessions.threads.events`](#sessions-threads-events) | 线程事件 | 2 |
180
+ | [`client.schedules`](#schedules) | 计划任务 | 9 |
181
+ | [`client.scheduleRuns`](#scheduleRuns) | 计划任务运行 | 2 |
182
+ | [`client.batches`](#batches) | 批处理 | 6 |
183
+ | [`client.batches.tasks`](#batches-tasks) | 批处理任务 | 1 |
184
+ | [`client.channels`](#channels) | 渠道 | 5 |
185
+ | [`client.channels.qrSessions`](#channels-qrSessions) | 渠道扫码会话 | 2 |
186
+ | [`client.channelPairings`](#channelPairings) | 渠道配对 | 2 |
187
+ | [`client.environments`](#environments) | 运行环境 | 6 |
188
+ | [`client.files`](#files) | 文件 | 5 |
189
+ | [`client.skills`](#skills) | 技能 | 5 |
190
+ | [`client.skills.versions`](#skills-versions) | 技能版本 | 5 |
191
+ | [`client.vaults`](#vaults) | 凭据库 | 4 |
192
+ | [`client.vaults.credentials`](#vaults-credentials) | 凭据 | 4 |
193
+ | [`client.memoryStores`](#memoryStores) | 记忆库 | 6 |
194
+ | [`client.memoryStores.memories`](#memoryStores-memories) | 记忆条目 | 5 |
195
+ | [`client.memoryStores.memoryVersions`](#memoryStores-memoryVersions) | 记忆版本 | 3 |
196
+ | [`client.models`](#models) | 模型 | 1 |
197
+
198
+ ## 参数和返回值约定
199
+
200
+ 下列签名保留实际参数顺序。`params = {}`、`params?` 或 `options?` 表示可省略;未标可选的参数必须提供。要单独传最后的 `options`,先按签名补齐前面的 `params`(通常传 `{}`)。表中的“必填”指 SDK 类型的必填字段;服务端可能还有组合约束,见字段说明及链接中的完整类型。所有 `options` 均为 [RequestOptions](../src/core/client.ts#L20)。
201
+
202
+ 类型名从 `qca-sdk/forward` 导入;签名中的 `APIPromise`、`PagePromise`、`Stream` 为 SDK 通用类型。类型链接可以查看响应的全部字段、枚举、联合类型和请求中的嵌套结构。位置参数与 `params` 中标为 path 的字段会做 URL 编码;header 字段不会进入 JSON body。
203
+
204
+ JSON 的 `undefined` 字段省略,`null` 显式发送,空数组、空字符串和 `false` 保留。multipart 的 `null`/`undefined` 字段省略。HTTP 响应的未知字段会保留;TypeScript 类型不等同于服务端运行时校验。
205
+
206
+ <a id="templates"></a>
207
+
208
+ ## 模板:`client.templates`
209
+
210
+ ### `templates.list`
211
+
212
+ 列出模板。HTTP:`GET /templates`。
213
+
214
+ ```text
215
+ client.templates.list(params: TemplateListParams = {}, options?: RequestOptions): PagePromise<Template>
216
+ ```
217
+
218
+ [方法源码](../src/forward/template.ts#L16);返回:`PagePromise<Template>`([Template](../src/forward/types.ts#L3104))。
219
+
220
+ 参数对象:[TemplateListParams](../src/forward/types.ts#L2914)。
221
+
222
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
223
+ | --- | --- | --- | --- | --- |
224
+ | `params.status` | 否 | `string \| null` | query / `status` | 按 `active` 或 `archived` 过滤。 |
225
+ | `params.limit` | 否 | `number \| null` | query / `limit` | 分页大小,最大 100。 |
226
+ | `params.after_id` | 否 | `string \| null` | query / `after_id` | 向后翻页游标,不能与 `before_id` 同用。 |
227
+ | `params.before_id` | 否 | `string \| null` | query / `before_id` | 向前翻页游标,不能与 `after_id` 同用。 |
228
+
229
+ 分页使用 `after_id` / `before_id` 游标。`await` 返回 `Page<T>`;直接 `for await` 遍历所有页。
230
+
231
+ ### `templates.create`
232
+
233
+ 创建模板。HTTP:`POST /templates`。
234
+
235
+ ```text
236
+ client.templates.create(params: TemplateCreateParams, options?: RequestOptions): APIPromise<Template>
237
+ ```
238
+
239
+ [方法源码](../src/forward/template.ts#L27);返回:`APIPromise<Template>`([Template](../src/forward/types.ts#L3104))。
240
+
241
+ 参数对象:[TemplateCreateParams](../src/forward/types.ts#L3349);字段定义:[TemplateNewParams](../src/forward/types.ts#L2936)。
242
+
243
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
244
+ | --- | --- | --- | --- | --- |
245
+ | `params.name` | 是 | `string` | body / `name` | Template 名称,1-256 个字符,租户内唯一。 |
246
+ | `params.model` | 是 | `ModelConfigUnionParam`([ModelConfigUnionParam](../src/forward/types.ts#L1816)) | body / `model` | 模型标识。可传 string(如 `"ultimate"`),或传 Agent model 对象以同时配置 `effort` 或 `context_window`。可通过列出模型接口查询可用值。 |
247
+ | `params.environment_id` | 是 | `string` | body / `environment_id` | 创建 Session 时默认使用的 Environment ID。 |
248
+ | `params.description` | 否 | `string \| null` | body / `description` | Template 描述,最多 2048 个字符。 |
249
+ | `params.system` | 否 | `string \| null` | body / `system` | System Prompt,最多 100,000 个字符。 |
250
+ | `params.tools` | 否 | `Array<ToolParam> \| null`([ToolParam](../src/forward/types.ts#L614)) | body / `tools` | 工具配置列表,最多 128 项。 |
251
+ | `params.mcp_servers` | 否 | `Array<MCPServerParam> \| null`([MCPServerParam](../src/forward/types.ts#L637)) | body / `mcp_servers` | MCP Server 配置列表,最多 20 项。 |
252
+ | `params.skills` | 否 | `Array<SkillBindingParam> \| null`([SkillBindingParam](../src/forward/types.ts#L656)) | body / `skills` | Skill 绑定列表,最多 20 项。 |
253
+ | `params.multiagent` | 否 | `MultiagentConfigParam \| null`([MultiagentConfigParam](../src/forward/types.ts#L692)) | body / `multiagent` | Multi-agent 协作配置。`type` 必须为 `coordinator`;省略或传 `null` 表示不启用。 |
254
+ | `params.vaults` | 否 | `Record<string, ResourceBindingParam> \| null`([ResourceBindingParam](../src/forward/types.ts#L542)) | body / `vaults` | 默认 Vault 配置,按 Vault ID 组织。 |
255
+ | `params.files` | 否 | `Record<string, ResourceBindingParam> \| null`([ResourceBindingParam](../src/forward/types.ts#L542)) | body / `files` | 默认文件资源配置,按 file ID 组织。 |
256
+ | `params.github_repositories` | 否 | `Record<string, GitHubRepositoryParam> \| null`([GitHubRepositoryParam](../src/forward/types.ts#L558)) | body / `github_repositories` | 默认 GitHub 仓库配置,按调用方指定的 binding key 组织,最多 20 项。 |
257
+ | `params.environment_variables` | 否 | `EnvironmentVariablesUnionParam \| null`([EnvironmentVariablesUnionParam](../src/forward/types.ts#L1819)) | body / `environment_variables` | 默认 Session 环境变量。 |
258
+ | `params.metadata` | 否 | `Record<string, unknown> \| null` | body / `metadata` | 自定义元数据。 |
259
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 有副作用请求可选的幂等键。 |
260
+ | `params.x_qoder_beta` | 否 | `string \| null` | header / `X-Qoder-Beta` | 启用 Browser Use 时必须设置为 `browser-use-2026-07-14`。 |
261
+
262
+ ### `templates.retrieve`
263
+
264
+ 获取模板。HTTP:`GET /templates/{template_id}`。
265
+
266
+ ```text
267
+ client.templates.retrieve(templateID: string, options?: RequestOptions): APIPromise<Template>
268
+ ```
269
+
270
+ [方法源码](../src/forward/template.ts#L45);返回:`APIPromise<Template>`([Template](../src/forward/types.ts#L3104))。
271
+
272
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
273
+ | --- | --- | --- | --- | --- |
274
+ | `templateID` | 是 | `string` | path / `template_id` | 按签名顺序传入的路径参数。 |
275
+
276
+ ### `templates.update`
277
+
278
+ 更新模板。HTTP:`POST /templates/{template_id}`。
279
+
280
+ ```text
281
+ client.templates.update(templateID: string, params: TemplateUpdateParams = {}, options?: RequestOptions): APIPromise<Template>
282
+ ```
283
+
284
+ [方法源码](../src/forward/template.ts#L60);返回:`APIPromise<Template>`([Template](../src/forward/types.ts#L3104))。
285
+
286
+ 参数对象:[TemplateUpdateParams](../src/forward/types.ts#L3006)。
287
+
288
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
289
+ | --- | --- | --- | --- | --- |
290
+ | `templateID` | 是 | `string` | path / `template_id` | 按签名顺序传入的路径参数。 |
291
+ | `params.name` | 否 | `string \| null` | body / `name` | 新的 Template 名称。 |
292
+ | `params.description` | 否 | `string \| null` | body / `description` | 新的 Template 描述。 |
293
+ | `params.model` | 否 | `ModelConfigUnionParam \| null`([ModelConfigUnionParam](../src/forward/types.ts#L1816)) | body / `model` | 新的模型标识。可传 string,或传 Agent model 对象以同时配置 `effort` 或 `context_window`。可通过列出模型接口查询可用值。 |
294
+ | `params.system` | 否 | `string \| null` | body / `system` | 新的 System Prompt。 |
295
+ | `params.tools` | 否 | `Array<ToolParam> \| null`([ToolParam](../src/forward/types.ts#L614)) | body / `tools` | 整体替换工具配置列表。 |
296
+ | `params.mcp_servers` | 否 | `Array<MCPServerParam> \| null`([MCPServerParam](../src/forward/types.ts#L637)) | body / `mcp_servers` | 整体替换 MCP Server 列表。 |
297
+ | `params.skills` | 否 | `Array<SkillBindingParam> \| null`([SkillBindingParam](../src/forward/types.ts#L656)) | body / `skills` | 整体替换 Skill 绑定列表。 |
298
+ | `params.multiagent` | 否 | `MultiagentConfigParam \| null`([MultiagentConfigParam](../src/forward/types.ts#L692)) | body / `multiagent` | 整体替换 Multi-agent 协作配置;传 `null` 表示清空,省略则保留当前配置。 |
299
+ | `params.environment_id` | 否 | `string \| null` | body / `environment_id` | 替换默认 Environment ID;`null` 或空字符串表示清空。 |
300
+ | `params.vaults` | 否 | `Record<string, ResourceBindingParam> \| null`([ResourceBindingParam](../src/forward/types.ts#L542)) | body / `vaults` | 整体替换默认 Vault 配置;按 Vault ID 组织,`null` 表示清空。 |
301
+ | `params.files` | 否 | `Record<string, ResourceBindingParam> \| null`([ResourceBindingParam](../src/forward/types.ts#L542)) | body / `files` | 整体替换默认文件资源配置;`null` 表示清空。 |
302
+ | `params.github_repositories` | 否 | `Record<string, GitHubRepositoryParam> \| null`([GitHubRepositoryParam](../src/forward/types.ts#L558)) | body / `github_repositories` | 整体替换默认 GitHub 仓库配置;按 binding key 组织,`null` 或空 object 表示清空。 |
303
+ | `params.environment_variables` | 否 | `EnvironmentVariablesUnionParam \| null`([EnvironmentVariablesUnionParam](../src/forward/types.ts#L1819)) | body / `environment_variables` | 整体替换默认环境变量;`null` 表示清空。 |
304
+ | `params.metadata` | 否 | `Record<string, unknown> \| null` | body / `metadata` | 合并更新自定义元数据。 |
305
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 有副作用请求可选的幂等键。 |
306
+ | `params.x_qoder_beta` | 否 | `string \| null` | header / `X-Qoder-Beta` | 更新后的 `tools` 中包含 Browser Use 工具集时,必须设置为 `browser-use-2026-07-14`。 |
307
+
308
+ ### `templates.archive`
309
+
310
+ 归档模板。HTTP:`POST /templates/{template_id}/archive`。
311
+
312
+ ```text
313
+ client.templates.archive(templateID: string, params: TemplateArchiveParams = {}, options?: RequestOptions): APIPromise<Template>
314
+ ```
315
+
316
+ [方法源码](../src/forward/template.ts#L82);返回:`APIPromise<Template>`([Template](../src/forward/types.ts#L3104))。
317
+
318
+ 参数对象:[TemplateArchiveParams](../src/forward/types.ts#L3076)。
319
+
320
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
321
+ | --- | --- | --- | --- | --- |
322
+ | `templateID` | 是 | `string` | path / `template_id` | 按签名顺序传入的路径参数。 |
323
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 有副作用请求可选的幂等键。 |
324
+
325
+ ### `templates.clone`
326
+
327
+ 克隆模板。HTTP:`POST /templates/{template_id}/clone`。
328
+
329
+ ```text
330
+ client.templates.clone(templateID: string, params: TemplateCloneParams = {}, options?: RequestOptions): APIPromise<Template>
331
+ ```
332
+
333
+ [方法源码](../src/forward/template.ts#L103);返回:`APIPromise<Template>`([Template](../src/forward/types.ts#L3104))。
334
+
335
+ 参数对象:[TemplateCloneParams](../src/forward/types.ts#L3086)。
336
+
337
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
338
+ | --- | --- | --- | --- | --- |
339
+ | `templateID` | 是 | `string` | path / `template_id` | 按签名顺序传入的路径参数。 |
340
+ | `params.name` | 否 | `string \| null` | body / `name` | 新 Template 名称;不传时使用 `<源名称> Copy <随机短 ID>`。 |
341
+ | `params.description` | 否 | `string \| null` | body / `description` | 新 Template 描述;不传时沿用源描述。 |
342
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 有副作用请求可选的幂等键。 |
343
+
344
+ <a id="identities"></a>
345
+
346
+ ## 终端用户身份:`client.identities`
347
+
348
+ ### `identities.list`
349
+
350
+ 列出终端用户身份。HTTP:`GET /identities`。
351
+
352
+ ```text
353
+ client.identities.list(params: IdentityListParams = {}, options?: RequestOptions): PagePromise<Identity>
354
+ ```
355
+
356
+ [方法源码](../src/forward/identity.ts#L21);返回:`PagePromise<Identity>`([Identity](../src/forward/types.ts#L1281))。
357
+
358
+ 参数对象:[IdentityListParams](../src/forward/types.ts#L1108)。
359
+
360
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
361
+ | --- | --- | --- | --- | --- |
362
+ | `params.external_id` | 否 | `string \| null` | query / `external_id` | 按集成方终端用户 ID 过滤。 |
363
+ | `params.identity_ids` | 否 | `Array<string> \| null` | query / `identity_ids` | 按多个 Identity ID 过滤;支持逗号分隔或重复 query 参数,去重后最多 100 个。 |
364
+ | `params.search` | 否 | `string \| null` | query / `search` | 匹配 Identity ID、名称或外部 ID。 |
365
+ | `params.enabled` | 否 | `boolean \| null` | query / `enabled` | 按是否启用过滤;非布尔值返回 400。 |
366
+ | `params.limit` | 否 | `number \| null` | query / `limit` | 分页大小,最大 100;超过上限时按最大值处理。 |
367
+ | `params.after_id` | 否 | `string \| null` | query / `after_id` | 向后翻页游标,不能与 `before_id` 同用。 |
368
+ | `params.before_id` | 否 | `string \| null` | query / `before_id` | 向前翻页游标,不能与 `after_id` 同用。 |
369
+
370
+ 分页使用 `after_id` / `before_id` 游标。`await` 返回 `Page<T>`;直接 `for await` 遍历所有页。
371
+
372
+ ### `identities.create`
373
+
374
+ 创建终端用户身份。HTTP:`POST /identities`。
375
+
376
+ ```text
377
+ client.identities.create(params: IdentityCreateParams, options?: RequestOptions): APIPromise<Identity>
378
+ ```
379
+
380
+ [方法源码](../src/forward/identity.ts#L32);返回:`APIPromise<Identity>`([Identity](../src/forward/types.ts#L1281))。
381
+
382
+ 参数对象:[IdentityCreateParams](../src/forward/types.ts#L3331);字段定义:[IdentityNewParams](../src/forward/types.ts#L1142)。
383
+
384
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
385
+ | --- | --- | --- | --- | --- |
386
+ | `params.external_id` | 是 | `string` | body / `external_id` | 集成方系统中的终端用户 ID,不能是空串或纯空白。 |
387
+ | `params.name` | 否 | `string \| null` | body / `name` | 展示名,传入时不能是空串或纯空白。 |
388
+ | `params.enabled` | 否 | `boolean \| null` | body / `enabled` | 是否启用该 Identity,默认 `true`。 |
389
+ | `params.metadata` | 否 | `Record<string, unknown> \| null` | body / `metadata` | 业务元数据,建议最多 16 个 key。 |
390
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 有副作用请求可选的幂等键。 |
391
+
392
+ ### `identities.ensureAdmin`
393
+
394
+ 确保管理员身份存在。HTTP:`POST /identities/admin/ensure`。
395
+
396
+ ```text
397
+ client.identities.ensureAdmin(options?: RequestOptions): APIPromise<Identity>
398
+ ```
399
+
400
+ [方法源码](../src/forward/identity.ts#L50);返回:`APIPromise<Identity>`([Identity](../src/forward/types.ts#L1281))。
401
+
402
+ 无业务参数;可通过最后一个 `options` 设置请求选项。
403
+
404
+ ### `identities.stats`
405
+
406
+ 获取终端用户身份统计。HTTP:`GET /identities/stats`。
407
+
408
+ ```text
409
+ client.identities.stats(options?: RequestOptions): APIPromise<IdentityStats>
410
+ ```
411
+
412
+ [方法源码](../src/forward/identity.ts#L65);返回:`APIPromise<IdentityStats>`([IdentityStats](../src/forward/types.ts#L1259))。
413
+
414
+ 无业务参数;可通过最后一个 `options` 设置请求选项。
415
+
416
+ ### `identities.retrieve`
417
+
418
+ 获取终端用户身份。HTTP:`GET /identities/{identity_id}`。
419
+
420
+ ```text
421
+ client.identities.retrieve(identityID: string, options?: RequestOptions): APIPromise<Identity>
422
+ ```
423
+
424
+ [方法源码](../src/forward/identity.ts#L80);返回:`APIPromise<Identity>`([Identity](../src/forward/types.ts#L1281))。
425
+
426
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
427
+ | --- | --- | --- | --- | --- |
428
+ | `identityID` | 是 | `string` | path / `identity_id` | 按签名顺序传入的路径参数。 |
429
+
430
+ ### `identities.update`
431
+
432
+ 更新终端用户身份。HTTP:`POST /identities/{identity_id}`。
433
+
434
+ ```text
435
+ client.identities.update(identityID: string, params: IdentityUpdateParams = {}, options?: RequestOptions): APIPromise<Identity>
436
+ ```
437
+
438
+ [方法源码](../src/forward/identity.ts#L95);返回:`APIPromise<Identity>`([Identity](../src/forward/types.ts#L1281))。
439
+
440
+ 参数对象:[IdentityUpdateParams](../src/forward/types.ts#L1168)。
441
+
442
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
443
+ | --- | --- | --- | --- | --- |
444
+ | `identityID` | 是 | `string` | path / `identity_id` | 按签名顺序传入的路径参数。 |
445
+ | `params.external_id` | 否 | `string \| null` | body / `external_id` | 替换原有终端用户 ID。 |
446
+ | `params.name` | 否 | `string \| null` | body / `name` | 替换展示名。 |
447
+ | `params.enabled` | 否 | `boolean \| null` | body / `enabled` | 更新 Identity 是否可用。 |
448
+ | `params.metadata` | 否 | `Record<string, unknown> \| null` | body / `metadata` | 合并更新业务元数据;空字符串 value 删除对应 key。 |
449
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 有副作用请求可选的幂等键。 |
450
+
451
+ ### `identities.delete`
452
+
453
+ 删除终端用户身份。HTTP:`DELETE /identities/{identity_id}`。
454
+
455
+ ```text
456
+ client.identities.delete(identityID: string, options?: RequestOptions): APIPromise<DeletedIdentity>
457
+ ```
458
+
459
+ [方法源码](../src/forward/identity.ts#L117);返回:`APIPromise<DeletedIdentity>`([DeletedIdentity](../src/forward/types.ts#L1245))。
460
+
461
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
462
+ | --- | --- | --- | --- | --- |
463
+ | `identityID` | 是 | `string` | path / `identity_id` | 按签名顺序传入的路径参数。 |
464
+
465
+ ### `identities.listTemplates`
466
+
467
+ 列出身份使用的模板。HTTP:`GET /identities/{identity_id}/agents`。
468
+
469
+ ```text
470
+ client.identities.listTemplates(identityID: string, options?: RequestOptions): APIPromise<IdentityListTemplatesResponse>
471
+ ```
472
+
473
+ [方法源码](../src/forward/identity.ts#L132);返回:`APIPromise<IdentityListTemplatesResponse>`([IdentityListTemplatesResponse](../src/forward/types.ts#L1319))。
474
+
475
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
476
+ | --- | --- | --- | --- | --- |
477
+ | `identityID` | 是 | `string` | path / `identity_id` | 按签名顺序传入的路径参数。 |
478
+
479
+ ### `identities.clear`
480
+
481
+ 清理终端用户身份。HTTP:`POST /identities/{identity_id}/clear`。
482
+
483
+ ```text
484
+ client.identities.clear(identityID: string, params: IdentityClearParams = {}, options?: RequestOptions): APIPromise<IdentityClearResponse>
485
+ ```
486
+
487
+ [方法源码](../src/forward/identity.ts#L147);返回:`APIPromise<IdentityClearResponse>`([IdentityClearResponse](../src/forward/types.ts#L1204))。
488
+
489
+ 参数对象:[IdentityClearParams](../src/forward/types.ts#L1194)。
490
+
491
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
492
+ | --- | --- | --- | --- | --- |
493
+ | `identityID` | 是 | `string` | path / `identity_id` | 按签名顺序传入的路径参数。 |
494
+ | `params.reason` | 否 | `string \| null` | body / `reason` | 清理原因,仅用于记录调用意图。 |
495
+
496
+ ### `identities.disable`
497
+
498
+ 停用终端用户身份。HTTP:`POST /identities/{identity_id}/disable`。
499
+
500
+ ```text
501
+ client.identities.disable(identityID: string, options?: RequestOptions): APIPromise<Identity>
502
+ ```
503
+
504
+ [方法源码](../src/forward/identity.ts#L167);返回:`APIPromise<Identity>`([Identity](../src/forward/types.ts#L1281))。
505
+
506
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
507
+ | --- | --- | --- | --- | --- |
508
+ | `identityID` | 是 | `string` | path / `identity_id` | 按签名顺序传入的路径参数。 |
509
+
510
+ ### `identities.enable`
511
+
512
+ 启用终端用户身份。HTTP:`POST /identities/{identity_id}/enable`。
513
+
514
+ ```text
515
+ client.identities.enable(identityID: string, options?: RequestOptions): APIPromise<Identity>
516
+ ```
517
+
518
+ [方法源码](../src/forward/identity.ts#L182);返回:`APIPromise<Identity>`([Identity](../src/forward/types.ts#L1281))。
519
+
520
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
521
+ | --- | --- | --- | --- | --- |
522
+ | `identityID` | 是 | `string` | path / `identity_id` | 按签名顺序传入的路径参数。 |
523
+
524
+ <a id="identities-configs"></a>
525
+
526
+ ## 身份的模板配置:`client.identities.configs`
527
+
528
+ ### `identities.configs.list`
529
+
530
+ 列出身份的模板配置。HTTP:`GET /identities/{identity_id}/templates`。
531
+
532
+ ```text
533
+ client.identities.configs.list(identityID: string, params: IdentityConfigListParams = {}, options?: RequestOptions): PagePromise<IdentityConfig>
534
+ ```
535
+
536
+ [方法源码](../src/forward/identity-config.ts#L16);返回:`PagePromise<IdentityConfig>`([IdentityConfig](../src/forward/types.ts#L1454))。
537
+
538
+ 参数对象:[IdentityConfigListParams](../src/forward/types.ts#L1326)。
539
+
540
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
541
+ | --- | --- | --- | --- | --- |
542
+ | `identityID` | 是 | `string` | path / `identity_id` | 按签名顺序传入的路径参数。 |
543
+ | `params.template_id` | 否 | `string \| null` | query / `template_id` | 按 Forward Template ID 过滤。 |
544
+ | `params.status` | 否 | `string \| null` | query / `status` | 按 `active` 或 `archived` 过滤。 |
545
+ | `params.limit` | 否 | `number \| null` | query / `limit` | 分页大小,最大 100。 |
546
+ | `params.after_id` | 否 | `string \| null` | query / `after_id` | 来自上一页响应 `last_id` 的向后游标。 |
547
+ | `params.before_id` | 否 | `string \| null` | query / `before_id` | 来自上一页响应 `first_id` 的向前游标。 |
548
+
549
+ 分页使用 `after_id` / `before_id` 游标。`await` 返回 `Page<T>`;直接 `for await` 遍历所有页。
550
+
551
+ ### `identities.configs.retrieve`
552
+
553
+ 获取身份的模板配置。HTTP:`GET /identities/{identity_id}/templates/{template_id}/config`。
554
+
555
+ ```text
556
+ client.identities.configs.retrieve(identityID: string, templateID: string, options?: RequestOptions): APIPromise<IdentityConfig>
557
+ ```
558
+
559
+ [方法源码](../src/forward/identity-config.ts#L31);返回:`APIPromise<IdentityConfig>`([IdentityConfig](../src/forward/types.ts#L1454))。
560
+
561
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
562
+ | --- | --- | --- | --- | --- |
563
+ | `identityID` | 是 | `string` | path / `identity_id` | 按签名顺序传入的路径参数。 |
564
+ | `templateID` | 是 | `string` | path / `template_id` | 按签名顺序传入的路径参数。 |
565
+
566
+ ### `identities.configs.upsert`
567
+
568
+ 创建或更新身份的模板配置。HTTP:`POST /identities/{identity_id}/templates/{template_id}/config`。
569
+
570
+ ```text
571
+ client.identities.configs.upsert(identityID: string, templateID: string, params: IdentityConfigUpsertParams, options?: RequestOptions): APIPromise<IdentityConfig>
572
+ ```
573
+
574
+ [方法源码](../src/forward/identity-config.ts#L46);返回:`APIPromise<IdentityConfig>`([IdentityConfig](../src/forward/types.ts#L1454))。
575
+
576
+ 参数对象:[IdentityConfigUpsertParams](../src/forward/types.ts#L1352)。
577
+
578
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
579
+ | --- | --- | --- | --- | --- |
580
+ | `identityID` | 是 | `string` | path / `identity_id` | 按签名顺序传入的路径参数。 |
581
+ | `templateID` | 是 | `string` | path / `template_id` | 按签名顺序传入的路径参数。 |
582
+ | `params.name` | 否 | `string \| null` | body / `name` | Config 展示名。 |
583
+ | `params.identity_config` | 是 | `IdentityConfigSpecParam`([IdentityConfigSpecParam](../src/forward/types.ts#L861)) | body / `identity_config` | 用户级覆盖配置。 |
584
+ | `params.metadata` | 否 | `Record<string, unknown> \| null` | body / `metadata` | 业务元数据;传入时整体替换已有 metadata。 |
585
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 有副作用请求可选的幂等键。 |
586
+
587
+ ### `identities.configs.getEffective`
588
+
589
+ 获取身份与模板组合后的有效配置。HTTP:`GET /identities/{identity_id}/templates/{template_id}/effective`。
590
+
591
+ ```text
592
+ client.identities.configs.getEffective(identityID: string, templateID: string, options?: RequestOptions): APIPromise<EffectiveConfig>
593
+ ```
594
+
595
+ [方法源码](../src/forward/identity-config.ts#L69);返回:`APIPromise<EffectiveConfig>`([EffectiveConfig](../src/forward/types.ts#L1374))。
596
+
597
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
598
+ | --- | --- | --- | --- | --- |
599
+ | `identityID` | 是 | `string` | path / `identity_id` | 按签名顺序传入的路径参数。 |
600
+ | `templateID` | 是 | `string` | path / `template_id` | 按签名顺序传入的路径参数。 |
601
+
602
+ <a id="identities-memoryStores"></a>
603
+
604
+ ## 身份的记忆库挂载:`client.identities.memoryStores`
605
+
606
+ ### `identities.memoryStores.list`
607
+
608
+ 列出身份的记忆库挂载。HTTP:`GET /identities/{identity_id}/templates/{template_id}/memory_stores`。
609
+
610
+ ```text
611
+ client.identities.memoryStores.list(identityID: string, templateID: string, options?: RequestOptions): APIPromise<IdentityMemoryStoreListResponse>
612
+ ```
613
+
614
+ [方法源码](../src/forward/identity-memory-store.ts#L15);返回:`APIPromise<IdentityMemoryStoreListResponse>`([IdentityMemoryStoreListResponse](../src/forward/types.ts#L1529))。
615
+
616
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
617
+ | --- | --- | --- | --- | --- |
618
+ | `identityID` | 是 | `string` | path / `identity_id` | 按签名顺序传入的路径参数。 |
619
+ | `templateID` | 是 | `string` | path / `template_id` | 按签名顺序传入的路径参数。 |
620
+
621
+ ### `identities.memoryStores.mount`
622
+
623
+ 挂载身份的记忆库挂载。HTTP:`POST /identities/{identity_id}/templates/{template_id}/memory_stores`。
624
+
625
+ ```text
626
+ client.identities.memoryStores.mount(identityID: string, templateID: string, params: IdentityMemoryStoreMountParams, options?: RequestOptions): APIPromise<MemoryStoreMount>
627
+ ```
628
+
629
+ [方法源码](../src/forward/identity-memory-store.ts#L34);返回:`APIPromise<MemoryStoreMount>`([MemoryStoreMount](../src/forward/types.ts#L1514))。
630
+
631
+ 参数对象:[IdentityMemoryStoreMountParams](../src/forward/types.ts#L1486)。
632
+
633
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
634
+ | --- | --- | --- | --- | --- |
635
+ | `identityID` | 是 | `string` | path / `identity_id` | 按签名顺序传入的路径参数。 |
636
+ | `templateID` | 是 | `string` | path / `template_id` | 按签名顺序传入的路径参数。 |
637
+ | `params.memory_store_id` | 是 | `string` | body / `memory_store_id` | 要挂载的 Memory Store ID(`memstore_...`)。必须是当前调用方可见的 active Store。 |
638
+
639
+ ### `identities.memoryStores.detach`
640
+
641
+ 解除挂载身份的记忆库挂载。HTTP:`DELETE /identities/{identity_id}/templates/{template_id}/memory_stores/{memory_store_id}`。
642
+
643
+ ```text
644
+ client.identities.memoryStores.detach(identityID: string, templateID: string, memoryStoreID: string, options?: RequestOptions): APIPromise<DeletedMemoryStoreMount>
645
+ ```
646
+
647
+ [方法源码](../src/forward/identity-memory-store.ts#L55);返回:`APIPromise<DeletedMemoryStoreMount>`([DeletedMemoryStoreMount](../src/forward/types.ts#L1496))。
648
+
649
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
650
+ | --- | --- | --- | --- | --- |
651
+ | `identityID` | 是 | `string` | path / `identity_id` | 按签名顺序传入的路径参数。 |
652
+ | `templateID` | 是 | `string` | path / `template_id` | 按签名顺序传入的路径参数。 |
653
+ | `memoryStoreID` | 是 | `string` | path / `memory_store_id` | 按签名顺序传入的路径参数。 |
654
+
655
+ <a id="sessions"></a>
656
+
657
+ ## 会话:`client.sessions`
658
+
659
+ ### `sessions.list`
660
+
661
+ 列出会话。HTTP:`GET /sessions`。
662
+
663
+ ```text
664
+ client.sessions.list(params: SessionListParams = {}, options?: RequestOptions): PagePromise<Session>
665
+ ```
666
+
667
+ [方法源码](../src/forward/session.ts#L23);返回:`PagePromise<Session>`([Session](../src/forward/types.ts#L2398))。
668
+
669
+ 参数对象:[SessionListParams](../src/forward/types.ts#L2247)。
670
+
671
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
672
+ | --- | --- | --- | --- | --- |
673
+ | `params.identity_ids` | 否 | `Array<string> \| null` | query / `identity_ids` | 按一个或多个 Identity ID 过滤,支持逗号分隔。 |
674
+ | `params.template_id` | 否 | `string \| null` | query / `template_id` | 按 Forward Template ID 过滤。 |
675
+ | `params.source_type` | 否 | `string \| null` | query / `source_type` | 按 `api`、`im`、`schedule` 或 `batch` 过滤。 |
676
+ | `params["created_at[gt]"]` | 否 | `string \| null` | query / `created_at[gt]` | 创建时间严格大于该 RFC 3339 时间。 |
677
+ | `params["created_at[gte]"]` | 否 | `string \| null` | query / `created_at[gte]` | 创建时间大于等于该 RFC 3339 时间。 |
678
+ | `params["created_at[lt]"]` | 否 | `string \| null` | query / `created_at[lt]` | 创建时间严格小于该 RFC 3339 时间。 |
679
+ | `params["created_at[lte]"]` | 否 | `string \| null` | query / `created_at[lte]` | 创建时间小于等于该 RFC 3339 时间。 |
680
+ | `params["updated_at[gt]"]` | 否 | `string \| null` | query / `updated_at[gt]` | 更新时间严格大于该 RFC 3339 时间。 |
681
+ | `params["updated_at[gte]"]` | 否 | `string \| null` | query / `updated_at[gte]` | 更新时间大于等于该 RFC 3339 时间。 |
682
+ | `params["updated_at[lt]"]` | 否 | `string \| null` | query / `updated_at[lt]` | 更新时间严格小于该 RFC 3339 时间。 |
683
+ | `params["updated_at[lte]"]` | 否 | `string \| null` | query / `updated_at[lte]` | 更新时间小于等于该 RFC 3339 时间。 |
684
+ | `params.limit` | 否 | `number \| null` | query / `limit` | 分页大小,最大 100。 |
685
+ | `params.after_id` | 否 | `string \| null` | query / `after_id` | 向后翻页游标,传入上一页响应的 `last_id`。 |
686
+ | `params.before_id` | 否 | `string \| null` | query / `before_id` | 向前翻页游标,传入当前页响应的 `first_id`。 |
687
+ | `params.order` | 否 | `string \| null` | query / `order` | 创建时间排序方向:`desc` 或 `asc`。 |
688
+ | `params.include_archived` | 否 | `boolean \| null` | query / `include_archived` | 是否包含已归档 Session。 |
689
+
690
+ 分页使用 `after_id` / `before_id` 游标。`await` 返回 `Page<T>`;直接 `for await` 遍历所有页。
691
+
692
+ ### `sessions.create`
693
+
694
+ 创建会话。HTTP:`POST /sessions`。
695
+
696
+ ```text
697
+ client.sessions.create(params: SessionCreateParams, options?: RequestOptions): APIPromise<Session>
698
+ ```
699
+
700
+ [方法源码](../src/forward/session.ts#L34);返回:`APIPromise<Session>`([Session](../src/forward/types.ts#L2398))。
701
+
702
+ 参数对象:[SessionCreateParams](../src/forward/types.ts#L3341);字段定义:[SessionNewParams](../src/forward/types.ts#L2317)。
703
+
704
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
705
+ | --- | --- | --- | --- | --- |
706
+ | `params.identity_id` | 是 | `string` | body / `identity_id` | Forward Identity ID。 |
707
+ | `params.template_id` | 是 | `string` | body / `template_id` | Forward Template ID。 |
708
+ | `params.title` | 否 | `string \| null` | body / `title` | Session 标题。 |
709
+ | `params.metadata` | 否 | `Record<string, unknown> \| null` | body / `metadata` | 业务元数据。 |
710
+ | `params.config` | 否 | `SessionNewParamsConfigParam \| null`([SessionNewParamsConfigParam](../src/forward/types.ts#L2345)) | body / `config` | 字段结构见类型链接。 |
711
+ | `params.resources` | 否 | `Array<SessionResourceSpecParam> \| null`([SessionResourceSpecParam](../src/forward/types.ts#L751)) | body / `resources` | 字段结构见类型链接。 |
712
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 有副作用请求可选的幂等键。 |
713
+
714
+ ### `sessions.retrieve`
715
+
716
+ 获取会话。HTTP:`GET /sessions/{session_id}`。
717
+
718
+ ```text
719
+ client.sessions.retrieve(sessionID: string, options?: RequestOptions): APIPromise<Session>
720
+ ```
721
+
722
+ [方法源码](../src/forward/session.ts#L52);返回:`APIPromise<Session>`([Session](../src/forward/types.ts#L2398))。
723
+
724
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
725
+ | --- | --- | --- | --- | --- |
726
+ | `sessionID` | 是 | `string` | path / `session_id` | 按签名顺序传入的路径参数。 |
727
+
728
+ ### `sessions.update`
729
+
730
+ 更新会话。HTTP:`POST /sessions/{session_id}`。
731
+
732
+ ```text
733
+ client.sessions.update(sessionID: string, params: SessionUpdateParams = {}, options?: RequestOptions): APIPromise<Session>
734
+ ```
735
+
736
+ [方法源码](../src/forward/session.ts#L67);返回:`APIPromise<Session>`([Session](../src/forward/types.ts#L2398))。
737
+
738
+ 参数对象:[SessionUpdateParams](../src/forward/types.ts#L2352)。
739
+
740
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
741
+ | --- | --- | --- | --- | --- |
742
+ | `sessionID` | 是 | `string` | path / `session_id` | 按签名顺序传入的路径参数。 |
743
+ | `params.title` | 否 | `string \| null` | body / `title` | 新的 Session 标题。 |
744
+ | `params.metadata` | 否 | `Record<string, unknown> \| null` | body / `metadata` | metadata merge patch;传入的 key 覆盖已有 key,未出现的 key 保留。 |
745
+ | `params.config` | 否 | `SessionUpdateParamsConfigParam \| null`([SessionUpdateParamsConfigParam](../src/forward/types.ts#L2371)) | body / `config` | 字段结构见类型链接。 |
746
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 有副作用请求可选的幂等键。 |
747
+
748
+ ### `sessions.archive`
749
+
750
+ 归档会话。HTTP:`POST /sessions/{session_id}/archive`。
751
+
752
+ ```text
753
+ client.sessions.archive(sessionID: string, params: SessionArchiveParams = {}, options?: RequestOptions): APIPromise<Session>
754
+ ```
755
+
756
+ [方法源码](../src/forward/session.ts#L85);返回:`APIPromise<Session>`([Session](../src/forward/types.ts#L2398))。
757
+
758
+ 参数对象:[SessionArchiveParams](../src/forward/types.ts#L2378)。
759
+
760
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
761
+ | --- | --- | --- | --- | --- |
762
+ | `sessionID` | 是 | `string` | path / `session_id` | 按签名顺序传入的路径参数。 |
763
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 有副作用请求可选的幂等键。 |
764
+
765
+ ### `sessions.cancel`
766
+
767
+ 取消会话。HTTP:`POST /sessions/{session_id}/cancel`。
768
+
769
+ ```text
770
+ client.sessions.cancel(sessionID: string, params: SessionCancelParams = {}, options?: RequestOptions): APIPromise<Session>
771
+ ```
772
+
773
+ [方法源码](../src/forward/session.ts#L106);返回:`APIPromise<Session>`([Session](../src/forward/types.ts#L2398))。
774
+
775
+ 参数对象:[SessionCancelParams](../src/forward/types.ts#L2388)。
776
+
777
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
778
+ | --- | --- | --- | --- | --- |
779
+ | `sessionID` | 是 | `string` | path / `session_id` | 按签名顺序传入的路径参数。 |
780
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 有副作用请求可选的幂等键。 |
781
+
782
+ <a id="sessions-events"></a>
783
+
784
+ ## 会话事件:`client.sessions.events`
785
+
786
+ ### `sessions.events.list`
787
+
788
+ 列出会话事件。HTTP:`GET /sessions/{session_id}/events`。
789
+
790
+ ```text
791
+ client.sessions.events.list(sessionID: string, params: SessionEventListParams = {}, options?: RequestOptions): PagePromise<SessionEvent>
792
+ ```
793
+
794
+ [方法源码](../src/forward/session-event.ts#L17);返回:`PagePromise<SessionEvent>`([SessionEvent](../src/forward/types.ts#L2541))。
795
+
796
+ 参数对象:[SessionEventListParams](../src/forward/types.ts#L2470)。
797
+
798
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
799
+ | --- | --- | --- | --- | --- |
800
+ | `sessionID` | 是 | `string` | path / `session_id` | 按签名顺序传入的路径参数。 |
801
+ | `params.limit` | 否 | `number \| null` | query / `limit` | 分页大小,最大 100。 |
802
+ | `params.after_id` | 否 | `string \| null` | query / `after_id` | 返回该 Event ID 之后的事件。 |
803
+ | `params.before_id` | 否 | `string \| null` | query / `before_id` | 返回该 Event ID 之前的事件。 |
804
+ | `params.order` | 否 | `string \| null` | query / `order` | 排序方向:`asc` 或 `desc`。 |
805
+ | `params.type` | 否 | `string \| null` | query / `type` | 按 Event 类型过滤,支持逗号分隔。 |
806
+ | `params["types[]"]` | 否 | `Array<string> \| null` | query / `types[]` | 数组形式的 Event 类型过滤。 |
807
+ | `params.include_tool_calls` | 否 | `boolean \| null` | query / `include_tool_calls` | 是否包含工具调用类事件。 |
808
+ | `params.include_thinking` | 否 | `boolean \| null` | query / `include_thinking` | 是否包含思考过程事件。 |
809
+
810
+ 分页使用 `after_id` / `before_id` 游标。`await` 返回 `Page<T>`;直接 `for await` 遍历所有页。
811
+
812
+ ### `sessions.events.send`
813
+
814
+ 发送会话事件。HTTP:`POST /sessions/{session_id}/events`。
815
+
816
+ ```text
817
+ client.sessions.events.send(sessionID: string, params: SessionEventSendParams, options?: RequestOptions): APIPromise<SessionEventSendResponse>
818
+ ```
819
+
820
+ [方法源码](../src/forward/session-event.ts#L32);返回:`APIPromise<SessionEventSendResponse>`([SessionEventSendResponse](../src/forward/types.ts#L2588))。
821
+
822
+ 参数对象:[SessionEventSendParams](../src/forward/types.ts#L2508)。
823
+
824
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
825
+ | --- | --- | --- | --- | --- |
826
+ | `sessionID` | 是 | `string` | path / `session_id` | 按签名顺序传入的路径参数。 |
827
+ | `params.events` | 是 | `Array<SessionEventParam>`([SessionEventParam](../src/forward/types.ts#L878)) | body / `events` | 字段结构见类型链接。 |
828
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 有副作用请求可选的幂等键。 |
829
+
830
+ ### `sessions.events.streamEvents`
831
+
832
+ 订阅会话事件 SSE 流。HTTP:`GET /sessions/{session_id}/events/stream`。
833
+
834
+ ```text
835
+ client.sessions.events.streamEvents(sessionID: string, params: SessionEventStreamParams = {}, options?: RequestOptions): APIPromise<Stream<SessionEvent>>
836
+ ```
837
+
838
+ [方法源码](../src/forward/session-event.ts#L54);返回:`APIPromise<Stream<SessionEvent>>`([SessionEvent](../src/forward/types.ts#L2541))。
839
+
840
+ 参数对象:[SessionEventStreamParams](../src/forward/types.ts#L2519)。
841
+
842
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
843
+ | --- | --- | --- | --- | --- |
844
+ | `sessionID` | 是 | `string` | path / `session_id` | 按签名顺序传入的路径参数。 |
845
+ | `params["event_deltas[]"]` | 否 | `Array<string> \| null` | query / `event_deltas[]` | 订阅指定公开事件类型的流式增量事件。支持重复传参,取值见 流式增量事件。 |
846
+ | `params.include_tool_calls` | 否 | `boolean \| null` | query / `include_tool_calls` | 是否包含工具调用类事件。 |
847
+ | `params.include_thinking` | 否 | `boolean \| null` | query / `include_thinking` | 是否包含思考过程事件。 |
848
+ | `params.last_event_id` | 否 | `string \| null` | header / `Last-Event-ID` | 从该 Event ID 之后恢复订阅。 |
849
+
850
+ 返回可异步迭代的 SSE 流;使用完毕调用 `await stream.close()`。连接结束不会自动重连。
851
+
852
+ <a id="sessions-resources"></a>
853
+
854
+ ## 会话资源:`client.sessions.resources`
855
+
856
+ ### `sessions.resources.add`
857
+
858
+ 添加会话资源。HTTP:`POST /sessions/{session_id}/resources`。
859
+
860
+ ```text
861
+ client.sessions.resources.add(sessionID: string, params: SessionResourceAddParams, options?: RequestOptions): APIPromise<SessionResource>
862
+ ```
863
+
864
+ [方法源码](../src/forward/session-resource.ts#L15);返回:`APIPromise<SessionResource>`([SessionResource](../src/forward/types.ts#L2613))。
865
+
866
+ 参数对象:[SessionResourceAddParams](../src/forward/types.ts#L2595)。
867
+
868
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
869
+ | --- | --- | --- | --- | --- |
870
+ | `sessionID` | 是 | `string` | path / `session_id` | 按签名顺序传入的路径参数。 |
871
+ | `params.type` | 是 | `string` | body / `type` | 资源类型,必须为 `file`。 |
872
+ | `params.file_id` | 是 | `string` | body / `file_id` | Files API 返回的 File ID,文件必须已上传完成。 |
873
+ | `params.mount_path` | 否 | `string \| null` | body / `mount_path` | Agent 容器内挂载路径;省略时由 Forward 根据文件名生成,默认挂载到 `/data/workspace/<文件名>`。 |
874
+
875
+ <a id="sessions-threads"></a>
876
+
877
+ ## 会话线程:`client.sessions.threads`
878
+
879
+ ### `sessions.threads.list`
880
+
881
+ 列出会话线程。HTTP:`GET /sessions/{session_id}/threads`。
882
+
883
+ ```text
884
+ client.sessions.threads.list(sessionID: string, params: SessionThreadListParams = {}, options?: RequestOptions): PagePromise<SessionThread>
885
+ ```
886
+
887
+ [方法源码](../src/forward/session-thread.ts#L19);返回:`PagePromise<SessionThread>`([SessionThread](../src/forward/types.ts#L2671))。
888
+
889
+ 参数对象:[SessionThreadListParams](../src/forward/types.ts#L2643)。
890
+
891
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
892
+ | --- | --- | --- | --- | --- |
893
+ | `sessionID` | 是 | `string` | path / `session_id` | 按签名顺序传入的路径参数。 |
894
+ | `params.limit` | 否 | `number \| null` | query / `limit` | 分页大小,范围为 1–100。 |
895
+ | `params.after_id` | 否 | `string \| null` | query / `after_id` | 返回该 Thread ID 之后的记录。 |
896
+ | `params.before_id` | 否 | `string \| null` | query / `before_id` | 返回该 Thread ID 之前的记录。 |
897
+
898
+ 分页使用 `after_id` / `before_id` 游标。`await` 返回 `Page<T>`;直接 `for await` 遍历所有页。
899
+
900
+ ### `sessions.threads.retrieve`
901
+
902
+ 获取会话线程。HTTP:`GET /sessions/{session_id}/threads/{thread_id}`。
903
+
904
+ ```text
905
+ client.sessions.threads.retrieve(sessionID: string, threadID: string, options?: RequestOptions): APIPromise<SessionThread>
906
+ ```
907
+
908
+ [方法源码](../src/forward/session-thread.ts#L34);返回:`APIPromise<SessionThread>`([SessionThread](../src/forward/types.ts#L2671))。
909
+
910
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
911
+ | --- | --- | --- | --- | --- |
912
+ | `sessionID` | 是 | `string` | path / `session_id` | 按签名顺序传入的路径参数。 |
913
+ | `threadID` | 是 | `string` | path / `thread_id` | 按签名顺序传入的路径参数。 |
914
+
915
+ ### `sessions.threads.archive`
916
+
917
+ 归档会话线程。HTTP:`POST /sessions/{session_id}/threads/{thread_id}/archive`。
918
+
919
+ ```text
920
+ client.sessions.threads.archive(sessionID: string, threadID: string, params: SessionThreadArchiveParams = {}, options?: RequestOptions): APIPromise<SessionThread>
921
+ ```
922
+
923
+ [方法源码](../src/forward/session-thread.ts#L49);返回:`APIPromise<SessionThread>`([SessionThread](../src/forward/types.ts#L2671))。
924
+
925
+ 参数对象:[SessionThreadArchiveParams](../src/forward/types.ts#L2661)。
926
+
927
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
928
+ | --- | --- | --- | --- | --- |
929
+ | `sessionID` | 是 | `string` | path / `session_id` | 按签名顺序传入的路径参数。 |
930
+ | `threadID` | 是 | `string` | path / `thread_id` | 按签名顺序传入的路径参数。 |
931
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 标识一次逻辑归档尝试;建议为每次新的逻辑尝试生成唯一值。 |
932
+
933
+ <a id="sessions-threads-events"></a>
934
+
935
+ ## 线程事件:`client.sessions.threads.events`
936
+
937
+ ### `sessions.threads.events.list`
938
+
939
+ 列出线程事件。HTTP:`GET /sessions/{session_id}/threads/{thread_id}/events`。
940
+
941
+ ```text
942
+ client.sessions.threads.events.list(sessionID: string, threadID: string, params: SessionThreadEventListParams = {}, options?: RequestOptions): PagePromise<SessionEvent>
943
+ ```
944
+
945
+ [方法源码](../src/forward/session-thread-event.ts#L17);返回:`PagePromise<SessionEvent>`([SessionEvent](../src/forward/types.ts#L2541))。
946
+
947
+ 参数对象:[SessionThreadEventListParams](../src/forward/types.ts#L2697)。
948
+
949
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
950
+ | --- | --- | --- | --- | --- |
951
+ | `sessionID` | 是 | `string` | path / `session_id` | 按签名顺序传入的路径参数。 |
952
+ | `threadID` | 是 | `string` | path / `thread_id` | 按签名顺序传入的路径参数。 |
953
+ | `params.limit` | 否 | `number \| null` | query / `limit` | 分页大小,范围为 1–100。 |
954
+ | `params.after_id` | 否 | `string \| null` | query / `after_id` | 返回该 Event ID 之后的记录。 |
955
+ | `params.before_id` | 否 | `string \| null` | query / `before_id` | 返回该 Event ID 之前的记录。 |
956
+
957
+ 分页使用 `after_id` / `before_id` 游标。`await` 返回 `Page<T>`;直接 `for await` 遍历所有页。
958
+
959
+ ### `sessions.threads.events.streamEvents`
960
+
961
+ 订阅线程事件 SSE 流。HTTP:`GET /sessions/{session_id}/threads/{thread_id}/stream`。
962
+
963
+ ```text
964
+ client.sessions.threads.events.streamEvents(sessionID: string, threadID: string, params: SessionThreadEventStreamParams = {}, options?: RequestOptions): APIPromise<Stream<SessionEvent>>
965
+ ```
966
+
967
+ [方法源码](../src/forward/session-thread-event.ts#L33);返回:`APIPromise<Stream<SessionEvent>>`([SessionEvent](../src/forward/types.ts#L2541))。
968
+
969
+ 参数对象:[SessionThreadEventStreamParams](../src/forward/types.ts#L2715)。
970
+
971
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
972
+ | --- | --- | --- | --- | --- |
973
+ | `sessionID` | 是 | `string` | path / `session_id` | 按签名顺序传入的路径参数。 |
974
+ | `threadID` | 是 | `string` | path / `thread_id` | 按签名顺序传入的路径参数。 |
975
+ | `params.last_event_id` | 否 | `string \| null` | header / `Last-Event-ID` | 从该 Thread Event 之后继续订阅。 |
976
+
977
+ 返回可异步迭代的 SSE 流;使用完毕调用 `await stream.close()`。连接结束不会自动重连。
978
+
979
+ <a id="schedules"></a>
980
+
981
+ ## 计划任务:`client.schedules`
982
+
983
+ ### `schedules.list`
984
+
985
+ 列出计划任务。HTTP:`GET /schedules`。
986
+
987
+ ```text
988
+ client.schedules.list(params: ScheduleListParams = {}, options?: RequestOptions): PagePromise<Schedule>
989
+ ```
990
+
991
+ [方法源码](../src/forward/schedule.ts#L16);返回:`PagePromise<Schedule>`([Schedule](../src/forward/types.ts#L2027))。
992
+
993
+ 参数对象:[ScheduleListParams](../src/forward/types.ts#L1825)。
994
+
995
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
996
+ | --- | --- | --- | --- | --- |
997
+ | `params.identity_id` | 否 | `string \| null` | query / `identity_id` | PAT 或管理员 SAT 可省略,省略时查询当前 owner 全部 Identity;Identity-bound SAT 省略时自动绑定自身,显式传其他 Identity 返回 403。 |
998
+ | `params.template_id` | 否 | `string \| null` | query / `template_id` | 按 Forward Template ID 过滤。 |
999
+ | `params.status` | 否 | `string \| null` | query / `status` | 按 `active` 或 `paused` 过滤。 |
1000
+ | `params.include_archived` | 否 | `boolean \| null` | query / `include_archived` | 是否包含已归档 Schedule。 |
1001
+ | `params.limit` | 否 | `number \| null` | query / `limit` | 分页大小,最大 100。 |
1002
+ | `params.after_id` | 否 | `string \| null` | query / `after_id` | 向后翻页游标。 |
1003
+ | `params.before_id` | 否 | `string \| null` | query / `before_id` | 向前翻页游标。 |
1004
+ | `params.sort_by` | 否 | `string \| null` | query / `sort_by` | 排序字段:`created_at` 或 `upcoming_runs_at`。 |
1005
+ | `params.order` | 否 | `string \| null` | query / `order` | 排序方向:`asc` 或 `desc`。 |
1006
+
1007
+ 分页使用 `after_id` / `before_id` 游标。`await` 返回 `Page<T>`;直接 `for await` 遍历所有页。
1008
+
1009
+ ### `schedules.create`
1010
+
1011
+ 创建计划任务。HTTP:`POST /schedules`。
1012
+
1013
+ ```text
1014
+ client.schedules.create(params: ScheduleCreateParams, options?: RequestOptions): APIPromise<Schedule>
1015
+ ```
1016
+
1017
+ [方法源码](../src/forward/schedule.ts#L27);返回:`APIPromise<Schedule>`([Schedule](../src/forward/types.ts#L2027))。
1018
+
1019
+ 参数对象:[ScheduleCreateParams](../src/forward/types.ts#L3337);字段定义:[ScheduleNewParams](../src/forward/types.ts#L1867)。
1020
+
1021
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1022
+ | --- | --- | --- | --- | --- |
1023
+ | `params.identity_id` | 是 | `string` | body / `identity_id` | Schedule 所属 Forward Identity ID。 |
1024
+ | `params.template_id` | 是 | `string` | body / `template_id` | 要执行的 Forward Template ID。 |
1025
+ | `params.name` | 是 | `string` | body / `name` | Schedule 名称。 |
1026
+ | `params.description` | 否 | `string \| null` | body / `description` | Schedule 描述。 |
1027
+ | `params.initial_events` | 是 | `Array<Record<string, unknown>>` | body / `initial_events` | 每次执行注入的初始事件,当前支持 `user.message`。 |
1028
+ | `params.execution` | 否 | `Record<string, unknown> \| null` | body / `execution` | 执行策略;省略时使用服务端默认值。 |
1029
+ | `params.trigger_policy` | 否 | `Record<string, unknown> \| null` | body / `trigger_policy` | 触发策略;省略或 `null` 时按 `manual` 处理。 |
1030
+ | `params.environment_id` | 是 | `string` | body / `environment_id` | 执行环境。 |
1031
+ | `params.sinks` | 否 | `Array<Record<string, unknown>> \| null` | body / `sinks` | 执行结果推送目标;为兼容性保留数组形式,当前最多允许一个元素。 |
1032
+ | `params.metadata` | 否 | `Record<string, unknown> \| null` | body / `metadata` | 业务元数据,仅用于标签或透传。 |
1033
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 有副作用请求可选的幂等键。 |
1034
+
1035
+ ### `schedules.archiveMany`
1036
+
1037
+ 批量归档计划任务。HTTP:`POST /schedules/archive`。
1038
+
1039
+ ```text
1040
+ client.schedules.archiveMany(params: ScheduleArchiveManyParams, options?: RequestOptions): APIPromise<ScheduleArchiveManyResponse>
1041
+ ```
1042
+
1043
+ [方法源码](../src/forward/schedule.ts#L45);返回:`APIPromise<ScheduleArchiveManyResponse>`([ScheduleArchiveManyResponse](../src/forward/types.ts#L2017))。
1044
+
1045
+ 参数对象:[ScheduleArchiveManyParams](../src/forward/types.ts#L1917)。
1046
+
1047
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1048
+ | --- | --- | --- | --- | --- |
1049
+ | `params.schedule_ids` | 是 | `Array<string>` | body / `schedule_ids` | 去重后必须包含 1~50 个非空 Schedule ID。 |
1050
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 有副作用请求可选的幂等键;相同 owner、路径和请求体可安全重放。 |
1051
+
1052
+ ### `schedules.retrieve`
1053
+
1054
+ 获取计划任务。HTTP:`GET /schedules/{schedule_id}`。
1055
+
1056
+ ```text
1057
+ client.schedules.retrieve(scheduleID: string, options?: RequestOptions): APIPromise<Schedule>
1058
+ ```
1059
+
1060
+ [方法源码](../src/forward/schedule.ts#L66);返回:`APIPromise<Schedule>`([Schedule](../src/forward/types.ts#L2027))。
1061
+
1062
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1063
+ | --- | --- | --- | --- | --- |
1064
+ | `scheduleID` | 是 | `string` | path / `schedule_id` | 按签名顺序传入的路径参数。 |
1065
+
1066
+ ### `schedules.update`
1067
+
1068
+ 更新计划任务。HTTP:`POST /schedules/{schedule_id}`。
1069
+
1070
+ ```text
1071
+ client.schedules.update(scheduleID: string, params: ScheduleUpdateParams = {}, options?: RequestOptions): APIPromise<Schedule>
1072
+ ```
1073
+
1074
+ [方法源码](../src/forward/schedule.ts#L81);返回:`APIPromise<Schedule>`([Schedule](../src/forward/types.ts#L2027))。
1075
+
1076
+ 参数对象:[ScheduleUpdateParams](../src/forward/types.ts#L1931)。
1077
+
1078
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1079
+ | --- | --- | --- | --- | --- |
1080
+ | `scheduleID` | 是 | `string` | path / `schedule_id` | 按签名顺序传入的路径参数。 |
1081
+ | `params.name` | 否 | `string \| null` | body / `name` | 新的 Schedule 名称。 |
1082
+ | `params.description` | 否 | `string \| null` | body / `description` | 新的 Schedule 描述。 |
1083
+ | `params.template_id` | 否 | `string \| null` | body / `template_id` | 新的 Forward Template ID。 |
1084
+ | `params.initial_events` | 否 | `Array<Record<string, unknown>> \| null` | body / `initial_events` | 替换初始事件列表。 |
1085
+ | `params.execution` | 否 | `Record<string, unknown> \| null` | body / `execution` | 合并更新执行策略。 |
1086
+ | `params.trigger_policy` | 否 | `Record<string, unknown> \| null` | body / `trigger_policy` | 更新触发策略;`null` 表示改为 manual。 |
1087
+ | `params.environment_id` | 否 | `string \| null` | body / `environment_id` | 新的执行环境。 |
1088
+ | `params.sinks` | 否 | `Array<Record<string, unknown>> \| null` | body / `sinks` | 执行结果推送目标;为兼容性保留数组形式,当前最多允许一个元素。 |
1089
+ | `params.metadata` | 否 | `Record<string, unknown> \| null` | body / `metadata` | 合并更新 metadata;value 为 `null` 删除 key。 |
1090
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 有副作用请求可选的幂等键。 |
1091
+
1092
+ ### `schedules.archive`
1093
+
1094
+ 归档计划任务。HTTP:`POST /schedules/{schedule_id}/archive`。
1095
+
1096
+ ```text
1097
+ client.schedules.archive(scheduleID: string, params: ScheduleArchiveParams = {}, options?: RequestOptions): APIPromise<Schedule>
1098
+ ```
1099
+
1100
+ [方法源码](../src/forward/schedule.ts#L103);返回:`APIPromise<Schedule>`([Schedule](../src/forward/types.ts#L2027))。
1101
+
1102
+ 参数对象:[ScheduleArchiveParams](../src/forward/types.ts#L1977)。
1103
+
1104
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1105
+ | --- | --- | --- | --- | --- |
1106
+ | `scheduleID` | 是 | `string` | path / `schedule_id` | 按签名顺序传入的路径参数。 |
1107
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 有副作用请求可选的幂等键。 |
1108
+
1109
+ ### `schedules.pause`
1110
+
1111
+ 暂停计划任务。HTTP:`POST /schedules/{schedule_id}/pause`。
1112
+
1113
+ ```text
1114
+ client.schedules.pause(scheduleID: string, params: SchedulePauseParams = {}, options?: RequestOptions): APIPromise<Schedule>
1115
+ ```
1116
+
1117
+ [方法源码](../src/forward/schedule.ts#L124);返回:`APIPromise<Schedule>`([Schedule](../src/forward/types.ts#L2027))。
1118
+
1119
+ 参数对象:[SchedulePauseParams](../src/forward/types.ts#L1987)。
1120
+
1121
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1122
+ | --- | --- | --- | --- | --- |
1123
+ | `scheduleID` | 是 | `string` | path / `schedule_id` | 按签名顺序传入的路径参数。 |
1124
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 有副作用请求可选的幂等键。 |
1125
+
1126
+ ### `schedules.run`
1127
+
1128
+ 手动触发计划任务。HTTP:`POST /schedules/{schedule_id}/run`。
1129
+
1130
+ ```text
1131
+ client.schedules.run(scheduleID: string, params: ScheduleRunParams = {}, options?: RequestOptions): APIPromise<ScheduleRun>
1132
+ ```
1133
+
1134
+ [方法源码](../src/forward/schedule.ts#L145);返回:`APIPromise<ScheduleRun>`([ScheduleRun](../src/forward/types.ts#L2157))。
1135
+
1136
+ 参数对象:[ScheduleRunParams](../src/forward/types.ts#L1997)。
1137
+
1138
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1139
+ | --- | --- | --- | --- | --- |
1140
+ | `scheduleID` | 是 | `string` | path / `schedule_id` | 按签名顺序传入的路径参数。 |
1141
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 有副作用请求可选的幂等键。 |
1142
+
1143
+ ### `schedules.unpause`
1144
+
1145
+ 恢复计划任务运行。HTTP:`POST /schedules/{schedule_id}/unpause`。
1146
+
1147
+ ```text
1148
+ client.schedules.unpause(scheduleID: string, params: ScheduleUnpauseParams = {}, options?: RequestOptions): APIPromise<Schedule>
1149
+ ```
1150
+
1151
+ [方法源码](../src/forward/schedule.ts#L162);返回:`APIPromise<Schedule>`([Schedule](../src/forward/types.ts#L2027))。
1152
+
1153
+ 参数对象:[ScheduleUnpauseParams](../src/forward/types.ts#L2007)。
1154
+
1155
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1156
+ | --- | --- | --- | --- | --- |
1157
+ | `scheduleID` | 是 | `string` | path / `schedule_id` | 按签名顺序传入的路径参数。 |
1158
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 有副作用请求可选的幂等键。 |
1159
+
1160
+ <a id="scheduleRuns"></a>
1161
+
1162
+ ## 计划任务运行:`client.scheduleRuns`
1163
+
1164
+ ### `scheduleRuns.list`
1165
+
1166
+ 列出计划任务运行。HTTP:`GET /schedule_runs`。
1167
+
1168
+ ```text
1169
+ client.scheduleRuns.list(params: ScheduleRunListParams, options?: RequestOptions): PagePromise<ScheduleRun>
1170
+ ```
1171
+
1172
+ [方法源码](../src/forward/schedule-run.ts#L16);返回:`PagePromise<ScheduleRun>`([ScheduleRun](../src/forward/types.ts#L2157))。
1173
+
1174
+ 参数对象:[ScheduleRunListParams](../src/forward/types.ts#L2101)。
1175
+
1176
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1177
+ | --- | --- | --- | --- | --- |
1178
+ | `params.identity_id` | 是 | `string` | query / `identity_id` | Run 所属 Forward Identity ID。 |
1179
+ | `params.schedule_id` | 否 | `string \| null` | query / `schedule_id` | 按 Schedule ID 过滤。 |
1180
+ | `params.status` | 否 | `string \| null` | query / `status` | 按 `pending`、`running`、`completed`、`failed` 或 `skipped` 过滤。 |
1181
+ | `params.trigger_type` | 否 | `string \| null` | query / `trigger_type` | 按 `schedule` 或 `manual` 过滤。 |
1182
+ | `params.has_error` | 否 | `boolean \| null` | query / `has_error` | 是否只返回有错误或无错误的 Run。 |
1183
+ | `params.limit` | 否 | `number \| null` | query / `limit` | 分页大小,最大 100。 |
1184
+ | `params.after_id` | 否 | `string \| null` | query / `after_id` | 向后翻页游标。 |
1185
+ | `params.before_id` | 否 | `string \| null` | query / `before_id` | 向前翻页游标。 |
1186
+ | `params.sort_by` | 否 | `string \| null` | query / `sort_by` | 排序字段:`created_at` 或 `triggered_at`。 |
1187
+ | `params.order` | 否 | `string \| null` | query / `order` | 排序方向:`asc` 或 `desc`。 |
1188
+
1189
+ 分页使用 `after_id` / `before_id` 游标。`await` 返回 `Page<T>`;直接 `for await` 遍历所有页。
1190
+
1191
+ ### `scheduleRuns.retrieve`
1192
+
1193
+ 获取计划任务运行。HTTP:`GET /schedule_runs/{run_id}`。
1194
+
1195
+ ```text
1196
+ client.scheduleRuns.retrieve(runID: string, params: ScheduleRunRetrieveParams = {}, options?: RequestOptions): APIPromise<ScheduleRun>
1197
+ ```
1198
+
1199
+ [方法源码](../src/forward/schedule-run.ts#L27);返回:`APIPromise<ScheduleRun>`([ScheduleRun](../src/forward/types.ts#L2157))。
1200
+
1201
+ 参数对象:[ScheduleRunRetrieveParams](../src/forward/types.ts#L3339);字段定义:[ScheduleRunGetParams](../src/forward/types.ts#L2147)。
1202
+
1203
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1204
+ | --- | --- | --- | --- | --- |
1205
+ | `runID` | 是 | `string` | path / `run_id` | 按签名顺序传入的路径参数。 |
1206
+ | `params.identity_id` | 否 | `string \| null` | query / `identity_id` | 额外归属约束。 |
1207
+
1208
+ <a id="batches"></a>
1209
+
1210
+ ## 批处理:`client.batches`
1211
+
1212
+ ### `batches.list`
1213
+
1214
+ 列出批处理。HTTP:`GET /batches`。
1215
+
1216
+ ```text
1217
+ client.batches.list(params: BatchListParams = {}, options?: RequestOptions): PagePromise<Batch>
1218
+ ```
1219
+
1220
+ [方法源码](../src/forward/batch.ts#L19);返回:`PagePromise<Batch>`([Batch](../src/forward/types.ts#L74))。
1221
+
1222
+ 参数对象:[BatchListParams](../src/forward/types.ts#L6)。
1223
+
1224
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1225
+ | --- | --- | --- | --- | --- |
1226
+ | `params.status` | 否 | `string \| null` | query / `status` | 按状态过滤。 |
1227
+ | `params.limit` | 否 | `number \| null` | query / `limit` | 分页大小,最大 100。 |
1228
+ | `params.after_id` | 否 | `string \| null` | query / `after_id` | 向后翻页游标。 |
1229
+ | `params.before_id` | 否 | `string \| null` | query / `before_id` | 向前翻页游标。 |
1230
+
1231
+ 分页使用 `after_id` / `before_id` 游标。`await` 返回 `Page<T>`;直接 `for await` 遍历所有页。
1232
+
1233
+ ### `batches.create`
1234
+
1235
+ 创建批处理。HTTP:`POST /batches`。
1236
+
1237
+ ```text
1238
+ client.batches.create(params: BatchCreateParams, options?: RequestOptions): APIPromise<Batch>
1239
+ ```
1240
+
1241
+ [方法源码](../src/forward/batch.ts#L30);返回:`APIPromise<Batch>`([Batch](../src/forward/types.ts#L74))。
1242
+
1243
+ 参数对象:[BatchCreateParams](../src/forward/types.ts#L3321);字段定义:[BatchNewParams](../src/forward/types.ts#L28)。
1244
+
1245
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1246
+ | --- | --- | --- | --- | --- |
1247
+ | `params.input_file_id` | 是 | `string` | body / `input_file_id` | 通过 Files API 上传的 JSONL 文件 ID。 |
1248
+ | `params.completion_window` | 是 | `string` | body / `completion_window` | 完成窗口:`24h`、`48h`、`72h`。超时后 Batch 自动进入 `expired` 状态。 |
1249
+ | `params.metadata` | 否 | `Record<string, unknown> \| null` | body / `metadata` | 调用方业务元数据,最多 16 个 key;value 可为任意 JSON 类型;整体序列化后 ≤ 2KB,key ≤ 64 字符,且不得包含 NUL(U+0000)。 |
1250
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 有副作用请求可选的幂等键。 |
1251
+
1252
+ ### `batches.retrieve`
1253
+
1254
+ 获取批处理。HTTP:`GET /batches/{batch_id}`。
1255
+
1256
+ ```text
1257
+ client.batches.retrieve(batchID: string, options?: RequestOptions): APIPromise<Batch>
1258
+ ```
1259
+
1260
+ [方法源码](../src/forward/batch.ts#L48);返回:`APIPromise<Batch>`([Batch](../src/forward/types.ts#L74))。
1261
+
1262
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1263
+ | --- | --- | --- | --- | --- |
1264
+ | `batchID` | 是 | `string` | path / `batch_id` | 按签名顺序传入的路径参数。 |
1265
+
1266
+ ### `batches.cancel`
1267
+
1268
+ 取消批处理。HTTP:`POST /batches/{batch_id}/cancel`。
1269
+
1270
+ ```text
1271
+ client.batches.cancel(batchID: string, params: BatchCancelParams = {}, options?: RequestOptions): APIPromise<Batch>
1272
+ ```
1273
+
1274
+ [方法源码](../src/forward/batch.ts#L63);返回:`APIPromise<Batch>`([Batch](../src/forward/types.ts#L74))。
1275
+
1276
+ 参数对象:[BatchCancelParams](../src/forward/types.ts#L50)。
1277
+
1278
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1279
+ | --- | --- | --- | --- | --- |
1280
+ | `batchID` | 是 | `string` | path / `batch_id` | 按签名顺序传入的路径参数。 |
1281
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 有副作用请求可选的幂等键。 |
1282
+
1283
+ ### `batches.getError`
1284
+
1285
+ 获取批处理错误文件链接。HTTP:`GET /batches/{batch_id}/error`。
1286
+
1287
+ ```text
1288
+ client.batches.getError(batchID: string, options?: RequestOptions): APIPromise<BatchFile>
1289
+ ```
1290
+
1291
+ [方法源码](../src/forward/batch.ts#L80);返回:`APIPromise<BatchFile>`([BatchFile](../src/forward/types.ts#L60))。
1292
+
1293
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1294
+ | --- | --- | --- | --- | --- |
1295
+ | `batchID` | 是 | `string` | path / `batch_id` | 按签名顺序传入的路径参数。 |
1296
+
1297
+ ### `batches.getOutput`
1298
+
1299
+ 获取批处理输出文件链接。HTTP:`GET /batches/{batch_id}/output`。
1300
+
1301
+ ```text
1302
+ client.batches.getOutput(batchID: string, options?: RequestOptions): APIPromise<BatchFile>
1303
+ ```
1304
+
1305
+ [方法源码](../src/forward/batch.ts#L95);返回:`APIPromise<BatchFile>`([BatchFile](../src/forward/types.ts#L60))。
1306
+
1307
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1308
+ | --- | --- | --- | --- | --- |
1309
+ | `batchID` | 是 | `string` | path / `batch_id` | 按签名顺序传入的路径参数。 |
1310
+
1311
+ <a id="batches-tasks"></a>
1312
+
1313
+ ## 批处理任务:`client.batches.tasks`
1314
+
1315
+ ### `batches.tasks.list`
1316
+
1317
+ 列出批处理任务。HTTP:`GET /batches/{batch_id}/tasks`。
1318
+
1319
+ ```text
1320
+ client.batches.tasks.list(batchID: string, params: BatchTaskListParams = {}, options?: RequestOptions): PagePromise<BatchTask>
1321
+ ```
1322
+
1323
+ [方法源码](../src/forward/batch-task.ts#L16);返回:`PagePromise<BatchTask>`([BatchTask](../src/forward/types.ts#L202))。
1324
+
1325
+ 参数对象:[BatchTaskListParams](../src/forward/types.ts#L180)。
1326
+
1327
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1328
+ | --- | --- | --- | --- | --- |
1329
+ | `batchID` | 是 | `string` | path / `batch_id` | 按签名顺序传入的路径参数。 |
1330
+ | `params.status` | 否 | `string \| null` | query / `status` | 按任务状态过滤:`pending`、`running`、`completed`、`failed`、`cancelled`、`expired`。 |
1331
+ | `params.custom_id` | 否 | `string \| null` | query / `custom_id` | 按调用方任务标识精确过滤,仅支持单值;未命中返回空列表。 |
1332
+ | `params.limit` | 否 | `number \| null` | query / `limit` | 分页大小,最大 100。 |
1333
+ | `params.after_id` | 否 | `string \| null` | query / `after_id` | 向后翻页游标,传上一页响应的 `last_id`;游标必须属于当前 Batch。 |
1334
+
1335
+ 分页使用 `after_id` / `before_id` 游标。`await` 返回 `Page<T>`;直接 `for await` 遍历所有页。
1336
+
1337
+ <a id="channels"></a>
1338
+
1339
+ ## 渠道:`client.channels`
1340
+
1341
+ ### `channels.list`
1342
+
1343
+ 列出渠道。HTTP:`GET /channels`。
1344
+
1345
+ ```text
1346
+ client.channels.list(params: ChannelListParams = {}, options?: RequestOptions): PagePromise<Channel>
1347
+ ```
1348
+
1349
+ [方法源码](../src/forward/channel.ts#L19);返回:`PagePromise<Channel>`([Channel](../src/forward/types.ts#L352))。
1350
+
1351
+ 参数对象:[ChannelListParams](../src/forward/types.ts#L241)。
1352
+
1353
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1354
+ | --- | --- | --- | --- | --- |
1355
+ | `params.channel_type` | 否 | `string \| null` | query / `channel_type` | 按 `wechat`、`wecom`、`feishu`、`dingtalk` 或 `teams`(Global)过滤。 |
1356
+ | `params.enabled` | 否 | `boolean \| null` | query / `enabled` | 按人工启停状态过滤。 |
1357
+ | `params.binding_status` | 否 | `string \| null` | query / `binding_status` | 按 `unbound`、`bound` 或 `expired` 过滤。 |
1358
+ | `params.identity_id` | 否 | `string \| null` | query / `identity_id` | 按 Forward Identity ID 过滤。 |
1359
+ | `params.template_id` | 否 | `string \| null` | query / `template_id` | 按 Forward Template ID 过滤。 |
1360
+ | `params.limit` | 否 | `number \| null` | query / `limit` | 分页大小,最大 100。 |
1361
+ | `params.after_id` | 否 | `string \| null` | query / `after_id` | 向后翻页游标。 |
1362
+ | `params.before_id` | 否 | `string \| null` | query / `before_id` | 向前翻页游标。 |
1363
+
1364
+ 分页使用 `after_id` / `before_id` 游标。`await` 返回 `Page<T>`;直接 `for await` 遍历所有页。
1365
+
1366
+ ### `channels.create`
1367
+
1368
+ 创建渠道。HTTP:`POST /channels`。
1369
+
1370
+ ```text
1371
+ client.channels.create(params: ChannelCreateParams, options?: RequestOptions): APIPromise<Channel>
1372
+ ```
1373
+
1374
+ [方法源码](../src/forward/channel.ts#L30);返回:`APIPromise<Channel>`([Channel](../src/forward/types.ts#L352))。
1375
+
1376
+ 参数对象:[ChannelCreateParams](../src/forward/types.ts#L3323);字段定义:[ChannelNewParams](../src/forward/types.ts#L279)。
1377
+
1378
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1379
+ | --- | --- | --- | --- | --- |
1380
+ | `params.identity_id` | 否 | `string \| null` | body / `identity_id` | `fixed` 模式必填;`pairing` 模式不传。 |
1381
+ | `params.identity_resolution` | 否 | `Record<string, unknown> \| null` | body / `identity_resolution` | 字段结构见类型链接。 |
1382
+ | `params.template_id` | 否 | `string \| null` | body / `template_id` | `fixed` 模式必填;`pairing` 模式不传。 |
1383
+ | `params.channel_type` | 是 | `string` | body / `channel_type` | 渠道类型,当前支持 `wechat`、`wecom`、`feishu`、`dingtalk` 和 `teams`(Global)。 |
1384
+ | `params.name` | 否 | `string \| null` | body / `name` | Channel 展示名。 |
1385
+ | `params.enabled` | 否 | `boolean \| null` | body / `enabled` | 人工启停开关,默认 `true`。传 `false` 可创建后暂不处理上行消息。 |
1386
+ | `params.channel_config` | 否 | `Record<string, unknown> \| null` | body / `channel_config` | 字段结构见类型链接。 |
1387
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 有副作用请求可选的幂等键。 |
1388
+
1389
+ ### `channels.retrieve`
1390
+
1391
+ 获取渠道。HTTP:`GET /channels/{channel_id}`。
1392
+
1393
+ ```text
1394
+ client.channels.retrieve(channelID: string, options?: RequestOptions): APIPromise<Channel>
1395
+ ```
1396
+
1397
+ [方法源码](../src/forward/channel.ts#L48);返回:`APIPromise<Channel>`([Channel](../src/forward/types.ts#L352))。
1398
+
1399
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1400
+ | --- | --- | --- | --- | --- |
1401
+ | `channelID` | 是 | `string` | path / `channel_id` | 按签名顺序传入的路径参数。 |
1402
+
1403
+ ### `channels.update`
1404
+
1405
+ 更新渠道。HTTP:`POST /channels/{channel_id}`。
1406
+
1407
+ ```text
1408
+ client.channels.update(channelID: string, params: ChannelUpdateParams = {}, options?: RequestOptions): APIPromise<Channel>
1409
+ ```
1410
+
1411
+ [方法源码](../src/forward/channel.ts#L63);返回:`APIPromise<Channel>`([Channel](../src/forward/types.ts#L352))。
1412
+
1413
+ 参数对象:[ChannelUpdateParams](../src/forward/types.ts#L311)。
1414
+
1415
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1416
+ | --- | --- | --- | --- | --- |
1417
+ | `channelID` | 是 | `string` | path / `channel_id` | 按签名顺序传入的路径参数。 |
1418
+ | `params.name` | 否 | `string \| null` | body / `name` | Channel 展示名。 |
1419
+ | `params.identity_id` | 否 | `string \| null` | body / `identity_id` | `fixed` 模式下新的 Forward Identity ID。 |
1420
+ | `params.template_id` | 否 | `string \| null` | body / `template_id` | `fixed` 模式下新的 Forward Template ID。 |
1421
+ | `params.enabled` | 否 | `boolean \| null` | body / `enabled` | 人工启停开关。 |
1422
+ | `params.channel_config` | 否 | `Record<string, unknown> \| null` | body / `channel_config` | 字段结构见类型链接。 |
1423
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 有副作用请求可选的幂等键。 |
1424
+
1425
+ ### `channels.delete`
1426
+
1427
+ 删除渠道。HTTP:`DELETE /channels/{channel_id}`。
1428
+
1429
+ ```text
1430
+ client.channels.delete(channelID: string, options?: RequestOptions): APIPromise<DeletedChannel>
1431
+ ```
1432
+
1433
+ [方法源码](../src/forward/channel.ts#L81);返回:`APIPromise<DeletedChannel>`([DeletedChannel](../src/forward/types.ts#L338))。
1434
+
1435
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1436
+ | --- | --- | --- | --- | --- |
1437
+ | `channelID` | 是 | `string` | path / `channel_id` | 按签名顺序传入的路径参数。 |
1438
+
1439
+ <a id="channels-qrSessions"></a>
1440
+
1441
+ ## 渠道扫码会话:`client.channels.qrSessions`
1442
+
1443
+ ### `channels.qrSessions.create`
1444
+
1445
+ 创建渠道扫码会话。HTTP:`POST /channels/{channel_id}/qr_sessions`。
1446
+
1447
+ ```text
1448
+ client.channels.qrSessions.create(channelID: string, params: ChannelQRSessionCreateParams = {}, options?: RequestOptions): APIPromise<ChannelQRSession>
1449
+ ```
1450
+
1451
+ [方法源码](../src/forward/channel-qr-session.ts#L15);返回:`APIPromise<ChannelQRSession>`([ChannelQRSession](../src/forward/types.ts#L493))。
1452
+
1453
+ 参数对象:[ChannelQRSessionCreateParams](../src/forward/types.ts#L3327);字段定义:[ChannelQRSessionNewParams](../src/forward/types.ts#L483)。
1454
+
1455
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1456
+ | --- | --- | --- | --- | --- |
1457
+ | `channelID` | 是 | `string` | path / `channel_id` | 按签名顺序传入的路径参数。 |
1458
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 有副作用请求可选的幂等键。 |
1459
+
1460
+ ### `channels.qrSessions.retrieve`
1461
+
1462
+ 获取渠道扫码会话。HTTP:`GET /qr_sessions/{session_key}`。
1463
+
1464
+ ```text
1465
+ client.channels.qrSessions.retrieve(sessionKey: string, options?: RequestOptions): APIPromise<ChannelQRSession>
1466
+ ```
1467
+
1468
+ [方法源码](../src/forward/channel-qr-session.ts#L36);返回:`APIPromise<ChannelQRSession>`([ChannelQRSession](../src/forward/types.ts#L493))。
1469
+
1470
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1471
+ | --- | --- | --- | --- | --- |
1472
+ | `sessionKey` | 是 | `string` | path / `session_key` | 按签名顺序传入的路径参数。 |
1473
+
1474
+ <a id="channelPairings"></a>
1475
+
1476
+ ## 渠道配对:`client.channelPairings`
1477
+
1478
+ ### `channelPairings.create`
1479
+
1480
+ 创建渠道配对。HTTP:`POST /channel_pairings`。
1481
+
1482
+ ```text
1483
+ client.channelPairings.create(params: ChannelPairingCreateParams, options?: RequestOptions): APIPromise<ChannelPairing>
1484
+ ```
1485
+
1486
+ [方法源码](../src/forward/channel-pairing.ts#L15);返回:`APIPromise<ChannelPairing>`([ChannelPairing](../src/forward/types.ts#L449))。
1487
+
1488
+ 参数对象:[ChannelPairingCreateParams](../src/forward/types.ts#L3325);字段定义:[ChannelPairingNewParams](../src/forward/types.ts#L413)。
1489
+
1490
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1491
+ | --- | --- | --- | --- | --- |
1492
+ | `params.code` | 是 | `string` | body / `code` | Channel 消息中显示的 6 位配对码。 |
1493
+ | `params.identity_id` | 是 | `string` | body / `identity_id` | 要绑定的 Forward Identity ID。 |
1494
+ | `params.template_id` | 是 | `string` | body / `template_id` | 要绑定的 Forward Template ID。 |
1495
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 由客户端生成的唯一幂等键,用于安全重试同一次配对请求。 |
1496
+
1497
+ ### `channelPairings.delete`
1498
+
1499
+ 删除渠道配对。HTTP:`DELETE /channel_pairings/{pairing_id}`。
1500
+
1501
+ ```text
1502
+ client.channelPairings.delete(pairingID: string, options?: RequestOptions): APIPromise<DeletedChannelPairing>
1503
+ ```
1504
+
1505
+ [方法源码](../src/forward/channel-pairing.ts#L33);返回:`APIPromise<DeletedChannelPairing>`([DeletedChannelPairing](../src/forward/types.ts#L435))。
1506
+
1507
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1508
+ | --- | --- | --- | --- | --- |
1509
+ | `pairingID` | 是 | `string` | path / `pairing_id` | 按签名顺序传入的路径参数。 |
1510
+
1511
+ <a id="environments"></a>
1512
+
1513
+ ## 运行环境:`client.environments`
1514
+
1515
+ ### `environments.list`
1516
+
1517
+ 列出运行环境。HTTP:`GET /environments`。
1518
+
1519
+ ```text
1520
+ client.environments.list(params: EnvironmentListParams = {}, options?: RequestOptions): PagePromise<Environment>
1521
+ ```
1522
+
1523
+ [方法源码](../src/forward/environment.ts#L16);返回:`PagePromise<Environment>`([Environment](../src/forward/types.ts#L965))。
1524
+
1525
+ 参数对象:[EnvironmentListParams](../src/forward/types.ts#L895)。
1526
+
1527
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1528
+ | --- | --- | --- | --- | --- |
1529
+ | `params.limit` | 否 | `number \| null` | query / `limit` | 分页大小,最大 100。 |
1530
+ | `params.page` | 否 | `string \| null` | query / `page` | 分页游标(推荐使用),取值来自上一页响应的 `next_page`;与 `after_id`、`before_id` 互斥。 |
1531
+ | `params.after_id` | 否 | `string \| null` | query / `after_id` | 向后翻页游标;与 `page`、`before_id` 互斥。 |
1532
+ | `params.before_id` | 否 | `string \| null` | query / `before_id` | 向前翻页游标;与 `page`、`after_id` 互斥。 |
1533
+
1534
+ 分页从响应 `next_page` 读取下一页的 `page`;直接 `for await` 自动续页。
1535
+
1536
+ ### `environments.create`
1537
+
1538
+ 创建运行环境。HTTP:`POST /environments`。
1539
+
1540
+ ```text
1541
+ client.environments.create(params: EnvironmentCreateParams, options?: RequestOptions): APIPromise<Environment>
1542
+ ```
1543
+
1544
+ [方法源码](../src/forward/environment.ts#L27);返回:`APIPromise<Environment>`([Environment](../src/forward/types.ts#L965))。
1545
+
1546
+ 参数对象:[EnvironmentCreateParams](../src/forward/types.ts#L3329);字段定义:[EnvironmentNewParams](../src/forward/types.ts#L917)。
1547
+
1548
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1549
+ | --- | --- | --- | --- | --- |
1550
+ | `params.name` | 是 | `string` | body / `name` | Environment 名称;去除首尾空白后不能为空。 |
1551
+ | `params.description` | 否 | `string \| null` | body / `description` | 描述。 |
1552
+ | `params.config` | 否 | `Record<string, unknown> \| null` | body / `config` | Environment 运行时配置对象;省略时默认使用 `{"type":"cloud"}`。显式传入时不能为 `null` 或空对象。字段详见 schemas。 |
1553
+ | `params.metadata` | 否 | `Record<string, unknown> \| null` | body / `metadata` | Environment metadata;省略时为 `{}`,显式传入时不能为 `null`。 |
1554
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 建议创建请求携带。相同 key 和相同请求可安全重试。 |
1555
+
1556
+ ### `environments.retrieve`
1557
+
1558
+ 获取运行环境。HTTP:`GET /environments/{id}`。
1559
+
1560
+ ```text
1561
+ client.environments.retrieve(id: string, options?: RequestOptions): APIPromise<Environment>
1562
+ ```
1563
+
1564
+ [方法源码](../src/forward/environment.ts#L45);返回:`APIPromise<Environment>`([Environment](../src/forward/types.ts#L965))。
1565
+
1566
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1567
+ | --- | --- | --- | --- | --- |
1568
+ | `id` | 是 | `string` | path / `id` | 按签名顺序传入的路径参数。 |
1569
+
1570
+ ### `environments.update`
1571
+
1572
+ 更新运行环境。HTTP:`POST /environments/{id}`。
1573
+
1574
+ ```text
1575
+ client.environments.update(id: string, params: EnvironmentUpdateParams = {}, options?: RequestOptions): APIPromise<Environment>
1576
+ ```
1577
+
1578
+ [方法源码](../src/forward/environment.ts#L60);返回:`APIPromise<Environment>`([Environment](../src/forward/types.ts#L965))。
1579
+
1580
+ 参数对象:[EnvironmentUpdateParams](../src/forward/types.ts#L943)。
1581
+
1582
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1583
+ | --- | --- | --- | --- | --- |
1584
+ | `id` | 是 | `string` | path / `id` | 按签名顺序传入的路径参数。 |
1585
+ | `params.name` | 否 | `string \| null` | body / `name` | 新名称。 |
1586
+ | `params.description` | 否 | `string \| null` | body / `description` | 新描述。 |
1587
+ | `params.config` | 否 | `Record<string, unknown> \| null` | body / `config` | 新配置;传入时不能为 `null`,显式 `null` 返回 400。字段详见 schemas。 |
1588
+ | `params.metadata` | 否 | `Record<string, unknown> \| null` | body / `metadata` | 要合并的 Environment metadata;传入时不能为 `null`,显式 `null` 返回 400。 |
1589
+
1590
+ ### `environments.archive`
1591
+
1592
+ 归档运行环境。HTTP:`POST /environments/{id}/archive`。
1593
+
1594
+ ```text
1595
+ client.environments.archive(id: string, options?: RequestOptions): APIPromise<Environment>
1596
+ ```
1597
+
1598
+ [方法源码](../src/forward/environment.ts#L80);返回:`APIPromise<Environment>`([Environment](../src/forward/types.ts#L965))。
1599
+
1600
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1601
+ | --- | --- | --- | --- | --- |
1602
+ | `id` | 是 | `string` | path / `id` | 按签名顺序传入的路径参数。 |
1603
+
1604
+ ### `environments.delete`
1605
+
1606
+ 删除运行环境。HTTP:`DELETE /environments/{id}`。
1607
+
1608
+ ```text
1609
+ client.environments.delete(id: string, options?: RequestOptions): APIPromise<void>
1610
+ ```
1611
+
1612
+ [方法源码](../src/forward/environment.ts#L95);返回:`APIPromise<void>`。
1613
+
1614
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1615
+ | --- | --- | --- | --- | --- |
1616
+ | `id` | 是 | `string` | path / `id` | 按签名顺序传入的路径参数。 |
1617
+
1618
+ 成功后返回 `undefined`,不解析 JSON 响应体。
1619
+
1620
+ <a id="files"></a>
1621
+
1622
+ ## 文件:`client.files`
1623
+
1624
+ ### `files.list`
1625
+
1626
+ 列出文件。HTTP:`GET /files`。
1627
+
1628
+ ```text
1629
+ client.files.list(params: FileListParams = {}, options?: RequestOptions): PagePromise<FileMetadata>
1630
+ ```
1631
+
1632
+ [方法源码](../src/forward/file.ts#L17);返回:`PagePromise<FileMetadata>`([FileMetadata](../src/forward/types.ts#L1058))。
1633
+
1634
+ 参数对象:[FileListParams](../src/forward/types.ts#L1002)。
1635
+
1636
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1637
+ | --- | --- | --- | --- | --- |
1638
+ | `params.limit` | 否 | `number \| null` | query / `limit` | 分页大小,最大 100。 |
1639
+ | `params.page` | 否 | `string \| null` | query / `page` | 分页游标(推荐使用),取值来自上一页响应的 `next_page`;与 `after_id`、`before_id` 互斥。 |
1640
+ | `params.after_id` | 否 | `string \| null` | query / `after_id` | 向后翻页游标;与 `page`、`before_id` 互斥。 |
1641
+ | `params.before_id` | 否 | `string \| null` | query / `before_id` | 向前翻页游标;与 `page`、`after_id` 互斥。 |
1642
+ | `params.name` | 否 | `string \| null` | query / `name` | 按文件名搜索。 |
1643
+ | `params.scope_id` | 否 | `string \| null` | query / `scope_id` | 按资源作用域 ID 过滤,常用于 Session 资源文件查询。传入时不要同时使用 `before_id` 或 `after_id`;当前游标参数在该过滤模式下不生效。 |
1644
+
1645
+ 分页从响应 `next_page` 读取下一页的 `page`;直接 `for await` 自动续页。
1646
+
1647
+ ### `files.upload`
1648
+
1649
+ 上传文件。HTTP:`POST /files`。
1650
+
1651
+ ```text
1652
+ client.files.upload(params: FileUploadParams, options?: RequestOptions): APIPromise<FileMetadata>
1653
+ ```
1654
+
1655
+ [方法源码](../src/forward/file.ts#L28);返回:`APIPromise<FileMetadata>`([FileMetadata](../src/forward/types.ts#L1058))。
1656
+
1657
+ 参数对象:[FileUploadParams](../src/forward/types.ts#L1032)。
1658
+
1659
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1660
+ | --- | --- | --- | --- | --- |
1661
+ | `params.file` | 是 | `Uploadable` | body / `file` | 待上传文件内容。支持类型见支持上传的文件类型。 |
1662
+ | `params.name` | 否 | `string \| null` | body / `name` | 文件展示名,未传时使用 multipart 文件名;规范化后长度为 1-255 bytes。 |
1663
+ | `params.purpose` | 否 | `string \| null` | body / `purpose` | 文件用途,默认 `user_upload`;作为 Batch 输入文件时必须传 `session_resource`。 |
1664
+ | `params.metadata` | 否 | `Record<string, unknown> \| null` | body / `metadata` | 元数据对象;`created_by` 为保留字段,不可传入(传入返回 400)。 |
1665
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 可选创建请求幂等键。传入时相同 key 只能用于相同请求;不传时不提供本地幂等重放保护。 |
1666
+
1667
+ 请求使用 `multipart/form-data`;由 SDK 生成 boundary,不要手工设置 Content-Type。
1668
+
1669
+ ### `files.getMetadata`
1670
+
1671
+ 获取文件元数据。HTTP:`GET /files/{file_id}`。
1672
+
1673
+ ```text
1674
+ client.files.getMetadata(fileID: string, options?: RequestOptions): APIPromise<FileMetadata>
1675
+ ```
1676
+
1677
+ [方法源码](../src/forward/file.ts#L46);返回:`APIPromise<FileMetadata>`([FileMetadata](../src/forward/types.ts#L1058))。
1678
+
1679
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1680
+ | --- | --- | --- | --- | --- |
1681
+ | `fileID` | 是 | `string` | path / `file_id` | 按签名顺序传入的路径参数。 |
1682
+
1683
+ ### `files.delete`
1684
+
1685
+ 删除文件。HTTP:`DELETE /files/{file_id}`。
1686
+
1687
+ ```text
1688
+ client.files.delete(fileID: string, options?: RequestOptions): APIPromise<void>
1689
+ ```
1690
+
1691
+ [方法源码](../src/forward/file.ts#L61);返回:`APIPromise<void>`。
1692
+
1693
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1694
+ | --- | --- | --- | --- | --- |
1695
+ | `fileID` | 是 | `string` | path / `file_id` | 按签名顺序传入的路径参数。 |
1696
+
1697
+ 成功后返回 `undefined`,不解析 JSON 响应体。
1698
+
1699
+ ### `files.download`
1700
+
1701
+ 下载文件。HTTP:`GET /files/{file_id}/content`。
1702
+
1703
+ ```text
1704
+ client.files.download(fileID: string, options?: RequestOptions): APIPromise<Response>
1705
+ ```
1706
+
1707
+ [方法源码](../src/forward/file.ts#L77);返回:`APIPromise<Response>`。
1708
+
1709
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1710
+ | --- | --- | --- | --- | --- |
1711
+ | `fileID` | 是 | `string` | path / `file_id` | 按签名顺序传入的路径参数。 |
1712
+
1713
+ 返回下载请求的原生 `Response`,调用 `arrayBuffer()` / `text()` / `body` 读取内容;不是 JSON 对象。
1714
+
1715
+ <a id="skills"></a>
1716
+
1717
+ ## 技能:`client.skills`
1718
+
1719
+ ### `skills.list`
1720
+
1721
+ 列出技能。HTTP:`GET /skills`。
1722
+
1723
+ ```text
1724
+ client.skills.list(params: SkillListParams = {}, options?: RequestOptions): PagePromise<Skill>
1725
+ ```
1726
+
1727
+ [方法源码](../src/forward/skill.ts#L20);返回:`PagePromise<Skill>`([Skill](../src/forward/types.ts#L2837))。
1728
+
1729
+ 参数对象:[SkillListParams](../src/forward/types.ts#L2725)。
1730
+
1731
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1732
+ | --- | --- | --- | --- | --- |
1733
+ | `params.limit` | 否 | `number \| null` | query / `limit` | 分页大小,最大 100。 |
1734
+ | `params.page` | 否 | `string \| null` | query / `page` | 分页游标(推荐使用),取值来自上一页响应的 `next_page`;与 `after_id`、`before_id` 互斥。 |
1735
+ | `params.after_id` | 否 | `string \| null` | query / `after_id` | 向后翻页游标;与 `page`、`before_id` 互斥。 |
1736
+ | `params.before_id` | 否 | `string \| null` | query / `before_id` | 向前翻页游标;与 `page`、`after_id` 互斥。 |
1737
+ | `params.display_title` | 否 | `string \| null` | query / `display_title` | 按 Skill 展示名前缀搜索,不区分大小写。 |
1738
+ | `params.source` | 否 | `string \| null` | query / `source` | 按 Skill 来源过滤,可选 `custom`、`qoder`。传 `source` 时不支持 `before_id`。 |
1739
+ | `params.name` | 否 | `string \| null` | query / `name` | ⚠️ **已弃用**:`display_title` 的兼容别名,语义完全一致。请使用 `display_title`。 |
1740
+
1741
+ 分页从响应 `next_page` 读取下一页的 `page`;直接 `for await` 自动续页。
1742
+
1743
+ ### `skills.create`
1744
+
1745
+ 创建技能。HTTP:`POST /skills`。
1746
+
1747
+ ```text
1748
+ client.skills.create(params: SkillCreateParams = {}, options?: RequestOptions): APIPromise<Skill>
1749
+ ```
1750
+
1751
+ [方法源码](../src/forward/skill.ts#L31);返回:`APIPromise<Skill>`([Skill](../src/forward/types.ts#L2837))。
1752
+
1753
+ 参数对象:[SkillCreateParams](../src/forward/types.ts#L3343);字段定义:[SkillNewParams](../src/forward/types.ts#L2759)。
1754
+
1755
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1756
+ | --- | --- | --- | --- | --- |
1757
+ | `params.files` | 否 | `Array<Uploadable> \| null` | body / `files` | 推荐上传字段,可**重复出现**多次。支持两种形态: ① 单个 `.zip` 包; ② 裸文件树——每个 part 独立上传一个文件,`filename` 携带相对路径(如 `code-review/SKILL.md`、`code-review/scripts/run.sh`)。 压缩包本身与解压后总大小均不超过 50 MB。 |
1758
+ | `params.metadata` | 否 | `Record<string, unknown> \| null` | body / `metadata` | 调用方元数据对象,最多 15 个键;`created_by` 为保留字段,不可传入(传入返回 400)。 |
1759
+ | `params.icon_id` | 否 | `string \| null` | body / `icon_id` | Forward Resource icon 公开 ID。 |
1760
+ | `params.file` | 否 | `Uploadable \| null` | body / `file` | ⚠️ **已弃用**:单个 `.zip` 包,宽松包规则。命中时响应头返回 `Deprecation: true`。请迁移到 `files`。 |
1761
+ | `params.name` | 否 | `string \| null` | body / `name` | ⚠️ **已弃用**:最终名称始终从上传包内 `SKILL.md` frontmatter 的 `name` 解析。字段保留仅为兼容,传入将被忽略。 |
1762
+ | `params.description` | 否 | `string \| null` | body / `description` | ⚠️ **已弃用**:最终描述始终从 `SKILL.md` 解析。 |
1763
+ | `params.type` | 否 | `string \| null` | body / `type` | ⚠️ **已弃用**:Skill 创建类型,可选 `custom`、`prebuilt`,默认 `custom`。`prebuilt` 会使响应 `source` 字段返回 `qoder`(其余为 `custom`)。 |
1764
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 建议提供。相同 key 且规范化后的 `files` 指纹一致时可安全重试。 |
1765
+
1766
+ 请求使用 `multipart/form-data`;由 SDK 生成 boundary,不要手工设置 Content-Type。
1767
+
1768
+ ### `skills.retrieve`
1769
+
1770
+ 获取技能。HTTP:`GET /skills/{id}`。
1771
+
1772
+ ```text
1773
+ client.skills.retrieve(id: string, params: SkillRetrieveParams = {}, options?: RequestOptions): APIPromise<Skill>
1774
+ ```
1775
+
1776
+ [方法源码](../src/forward/skill.ts#L49);返回:`APIPromise<Skill>`([Skill](../src/forward/types.ts#L2837))。
1777
+
1778
+ 参数对象:[SkillRetrieveParams](../src/forward/types.ts#L3345);字段定义:[SkillGetParams](../src/forward/types.ts#L2797)。
1779
+
1780
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1781
+ | --- | --- | --- | --- | --- |
1782
+ | `id` | 是 | `string` | path / `id` | 按签名顺序传入的路径参数。 |
1783
+ | `params.include_content` | 否 | `boolean \| null` | query / `include_content` | ⚠️ **已弃用**:为 `true` 时随响应返回 `content` 与 `content_encoding`(base64 zip)。命中时响应头会返回 `Deprecation: true`。请改用 下载 Skill 版本内容。 |
1784
+
1785
+ ### `skills.update`
1786
+
1787
+ 更新技能。HTTP:`PUT /skills/{id}`。
1788
+
1789
+ ```text
1790
+ client.skills.update(id: string, params: SkillUpdateParams = {}, options?: RequestOptions): APIPromise<Skill>
1791
+ ```
1792
+
1793
+ [方法源码](../src/forward/skill.ts#L65);返回:`APIPromise<Skill>`([Skill](../src/forward/types.ts#L2837))。
1794
+
1795
+ 参数对象:[SkillUpdateParams](../src/forward/types.ts#L2807)。
1796
+
1797
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1798
+ | --- | --- | --- | --- | --- |
1799
+ | `id` | 是 | `string` | path / `id` | 按签名顺序传入的路径参数。 |
1800
+ | `params.description` | 否 | `string \| null` | body / `description` | 新描述。 |
1801
+ | `params.content` | 否 | `string \| null` | body / `content` | 新内容(zip 包内容)。压缩包本身与解压后总大小均不超过 50 MB,超过返回 400;请求体整体(含 base64 编码与 JSON 信封)上限约 67.7 MB,超过返回 413。 |
1802
+ | `params.content_encoding` | 否 | `string \| null` | body / `content_encoding` | `content` 的编码。支持 `base64`、`utf-8`、`utf8`、`plain`、`text`;省略时按 UTF-8 文本处理。传入该字段时必须同时提供非空 `content`。 |
1803
+ | `params.metadata` | 否 | `Record<string, unknown> \| null` | body / `metadata` | 元数据对象,会**替换**当前 metadata(非合并);传入时不能为 `null`,value 必须为 string。`created_by` 为保留字段,不可传入(传入返回 400)。 |
1804
+ | `params.icon_id` | 否 | `string \| null` | body / `icon_id` | 更新或清空 Forward icon。 |
1805
+ | `params.name` | 否 | `string \| null` | body / `name` | ⚠️ **已弃用**:技能名不可修改。传入必须与当前规范名完全一致,否则返回 400;一致时为空操作。 |
1806
+
1807
+ ### `skills.delete`
1808
+
1809
+ 删除技能。HTTP:`DELETE /skills/{id}`。
1810
+
1811
+ ```text
1812
+ client.skills.delete(id: string, options?: RequestOptions): APIPromise<void>
1813
+ ```
1814
+
1815
+ [方法源码](../src/forward/skill.ts#L81);返回:`APIPromise<void>`。
1816
+
1817
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1818
+ | --- | --- | --- | --- | --- |
1819
+ | `id` | 是 | `string` | path / `id` | 按签名顺序传入的路径参数。 |
1820
+
1821
+ 成功后返回 `undefined`,不解析 JSON 响应体。
1822
+
1823
+ <a id="skills-versions"></a>
1824
+
1825
+ ## 技能版本:`client.skills.versions`
1826
+
1827
+ ### `skills.versions.list`
1828
+
1829
+ 列出技能版本。HTTP:`GET /skills/{id}/versions`。
1830
+
1831
+ ```text
1832
+ client.skills.versions.list(id: string, params: SkillVersionListParams = {}, options?: RequestOptions): PagePromise<SkillVersion>
1833
+ ```
1834
+
1835
+ [方法源码](../src/forward/skill-version.ts#L17);返回:`PagePromise<SkillVersion>`([SkillVersion](../src/forward/types.ts#L2897))。
1836
+
1837
+ 参数对象:[SkillVersionListParams](../src/forward/types.ts#L2855)。
1838
+
1839
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1840
+ | --- | --- | --- | --- | --- |
1841
+ | `id` | 是 | `string` | path / `id` | 按签名顺序传入的路径参数。 |
1842
+ | `params.limit` | 否 | `number \| null` | query / `limit` | 分页大小,最大 100,默认 20。 |
1843
+ | `params.page` | 否 | `string \| null` | query / `page` | 向后翻页游标;取值来自上一页响应的 `next_page`;不传即从第一页开始。 |
1844
+
1845
+ 分页从响应 `next_page` 读取下一页的 `page`;直接 `for await` 自动续页。
1846
+
1847
+ ### `skills.versions.create`
1848
+
1849
+ 创建技能版本。HTTP:`POST /skills/{id}/versions`。
1850
+
1851
+ ```text
1852
+ client.skills.versions.create(id: string, params: SkillVersionCreateParams, options?: RequestOptions): APIPromise<SkillVersion>
1853
+ ```
1854
+
1855
+ [方法源码](../src/forward/skill-version.ts#L28);返回:`APIPromise<SkillVersion>`([SkillVersion](../src/forward/types.ts#L2897))。
1856
+
1857
+ 参数对象:[SkillVersionCreateParams](../src/forward/types.ts#L3347);字段定义:[SkillVersionNewParams](../src/forward/types.ts#L2869)。
1858
+
1859
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1860
+ | --- | --- | --- | --- | --- |
1861
+ | `id` | 是 | `string` | path / `id` | 按签名顺序传入的路径参数。 |
1862
+ | `params.files` | 是 | `Array<Uploadable>` | body / `files` | 上传字段,可**重复**出现多次。支持两种形态: • 单个 `.zip` 包; • 裸文件树——每个 part 独立上传一个文件,`filename` 携带相对路径(如 `customer-reply/SKILL.md`、`customer-reply/scripts/run.sh`)。 压缩包本身与解压后总大小均不超过 50 MB。 |
1863
+
1864
+ 请求使用 `multipart/form-data`;由 SDK 生成 boundary,不要手工设置 Content-Type。
1865
+
1866
+ ### `skills.versions.retrieve`
1867
+
1868
+ 获取技能版本。HTTP:`GET /skills/{id}/versions/{version}`。
1869
+
1870
+ ```text
1871
+ client.skills.versions.retrieve(id: string, version: string, options?: RequestOptions): APIPromise<SkillVersion>
1872
+ ```
1873
+
1874
+ [方法源码](../src/forward/skill-version.ts#L44);返回:`APIPromise<SkillVersion>`([SkillVersion](../src/forward/types.ts#L2897))。
1875
+
1876
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1877
+ | --- | --- | --- | --- | --- |
1878
+ | `id` | 是 | `string` | path / `id` | 按签名顺序传入的路径参数。 |
1879
+ | `version` | 是 | `string` | path / `version` | 按签名顺序传入的路径参数。 |
1880
+
1881
+ ### `skills.versions.delete`
1882
+
1883
+ 删除技能版本。HTTP:`DELETE /skills/{id}/versions/{version}`。
1884
+
1885
+ ```text
1886
+ client.skills.versions.delete(id: string, version: string, options?: RequestOptions): APIPromise<DeletedSkillVersion>
1887
+ ```
1888
+
1889
+ [方法源码](../src/forward/skill-version.ts#L59);返回:`APIPromise<DeletedSkillVersion>`([DeletedSkillVersion](../src/forward/types.ts#L2879))。
1890
+
1891
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1892
+ | --- | --- | --- | --- | --- |
1893
+ | `id` | 是 | `string` | path / `id` | 按签名顺序传入的路径参数。 |
1894
+ | `version` | 是 | `string` | path / `version` | 按签名顺序传入的路径参数。 |
1895
+
1896
+ ### `skills.versions.download`
1897
+
1898
+ 下载技能版本。HTTP:`GET /skills/{id}/versions/{version}/content`。
1899
+
1900
+ ```text
1901
+ client.skills.versions.download(id: string, version: string, options?: RequestOptions): APIPromise<Response>
1902
+ ```
1903
+
1904
+ [方法源码](../src/forward/skill-version.ts#L74);返回:`APIPromise<Response>`。
1905
+
1906
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1907
+ | --- | --- | --- | --- | --- |
1908
+ | `id` | 是 | `string` | path / `id` | 按签名顺序传入的路径参数。 |
1909
+ | `version` | 是 | `string` | path / `version` | 按签名顺序传入的路径参数。 |
1910
+
1911
+ 返回下载请求的原生 `Response`,调用 `arrayBuffer()` / `text()` / `body` 读取内容;不是 JSON 对象。
1912
+
1913
+ <a id="vaults"></a>
1914
+
1915
+ ## 凭据库:`client.vaults`
1916
+
1917
+ ### `vaults.list`
1918
+
1919
+ 列出凭据库。HTTP:`GET /vaults`。
1920
+
1921
+ ```text
1922
+ client.vaults.list(params: VaultListParams = {}, options?: RequestOptions): PagePromise<Vault>
1923
+ ```
1924
+
1925
+ [方法源码](../src/forward/vault.ts#L19);返回:`PagePromise<Vault>`([Vault](../src/forward/types.ts#L3194))。
1926
+
1927
+ 参数对象:[VaultListParams](../src/forward/types.ts#L3150)。
1928
+
1929
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1930
+ | --- | --- | --- | --- | --- |
1931
+ | `params.limit` | 否 | `number \| null` | query / `limit` | 分页大小,最大 100。 |
1932
+ | `params.page` | 否 | `string \| null` | query / `page` | 分页游标(推荐使用),取值来自上一页响应的 `next_page`;与 `after_id`、`before_id` 互斥。 |
1933
+ | `params.after_id` | 否 | `string \| null` | query / `after_id` | 向后翻页游标;与 `page`、`before_id` 互斥。 |
1934
+ | `params.before_id` | 否 | `string \| null` | query / `before_id` | 向前翻页游标;与 `page`、`after_id` 互斥。 |
1935
+ | `params.name` | 否 | `string \| null` | query / `name` | 按 `display_name` 搜索。 |
1936
+
1937
+ 分页从响应 `next_page` 读取下一页的 `page`;直接 `for await` 自动续页。
1938
+
1939
+ ### `vaults.create`
1940
+
1941
+ 创建凭据库。HTTP:`POST /vaults`。
1942
+
1943
+ ```text
1944
+ client.vaults.create(params: VaultCreateParams, options?: RequestOptions): APIPromise<Vault>
1945
+ ```
1946
+
1947
+ [方法源码](../src/forward/vault.ts#L30);返回:`APIPromise<Vault>`([Vault](../src/forward/types.ts#L3194))。
1948
+
1949
+ 参数对象:[VaultCreateParams](../src/forward/types.ts#L3351);字段定义:[VaultNewParams](../src/forward/types.ts#L3176)。
1950
+
1951
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1952
+ | --- | --- | --- | --- | --- |
1953
+ | `params.display_name` | 是 | `string` | body / `display_name` | Vault 展示名。 |
1954
+ | `params.metadata` | 否 | `Record<string, unknown> \| null` | body / `metadata` | 元数据对象;`created_by` 为保留字段,不可传入(传入返回 400)。 |
1955
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 可选创建请求幂等键。传入时相同 key 只能用于相同请求;不传时不提供本地幂等重放保护。 |
1956
+
1957
+ ### `vaults.retrieve`
1958
+
1959
+ 获取凭据库。HTTP:`GET /vaults/{id}`。
1960
+
1961
+ ```text
1962
+ client.vaults.retrieve(id: string, options?: RequestOptions): APIPromise<Vault>
1963
+ ```
1964
+
1965
+ [方法源码](../src/forward/vault.ts#L48);返回:`APIPromise<Vault>`([Vault](../src/forward/types.ts#L3194))。
1966
+
1967
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1968
+ | --- | --- | --- | --- | --- |
1969
+ | `id` | 是 | `string` | path / `id` | 按签名顺序传入的路径参数。 |
1970
+
1971
+ ### `vaults.delete`
1972
+
1973
+ 删除凭据库。HTTP:`DELETE /vaults/{id}`。
1974
+
1975
+ ```text
1976
+ client.vaults.delete(id: string, options?: RequestOptions): APIPromise<void>
1977
+ ```
1978
+
1979
+ [方法源码](../src/forward/vault.ts#L63);返回:`APIPromise<void>`。
1980
+
1981
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
1982
+ | --- | --- | --- | --- | --- |
1983
+ | `id` | 是 | `string` | path / `id` | 按签名顺序传入的路径参数。 |
1984
+
1985
+ 成功后返回 `undefined`,不解析 JSON 响应体。
1986
+
1987
+ <a id="vaults-credentials"></a>
1988
+
1989
+ ## 凭据:`client.vaults.credentials`
1990
+
1991
+ ### `vaults.credentials.list`
1992
+
1993
+ 列出凭据。HTTP:`GET /vaults/{id}/credentials`。
1994
+
1995
+ ```text
1996
+ client.vaults.credentials.list(id: string, params: VaultCredentialListParams = {}, options?: RequestOptions): PagePromise<VaultCredential>
1997
+ ```
1998
+
1999
+ [方法源码](../src/forward/vault-credential.ts#L16);返回:`PagePromise<VaultCredential>`([VaultCredential](../src/forward/types.ts#L3276))。
2000
+
2001
+ 参数对象:[VaultCredentialListParams](../src/forward/types.ts#L3228)。
2002
+
2003
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
2004
+ | --- | --- | --- | --- | --- |
2005
+ | `id` | 是 | `string` | path / `id` | 按签名顺序传入的路径参数。 |
2006
+ | `params.limit` | 否 | `number \| null` | query / `limit` | 分页大小,最大 100。 |
2007
+ | `params.page` | 否 | `string \| null` | query / `page` | 分页游标(推荐使用),取值来自上一页响应的 `next_page`;与 `after_id`、`before_id` 互斥。 |
2008
+ | `params.after_id` | 否 | `string \| null` | query / `after_id` | 向后翻页游标;与 `page`、`before_id` 互斥。 |
2009
+ | `params.before_id` | 否 | `string \| null` | query / `before_id` | 向前翻页游标;与 `page`、`after_id` 互斥。 |
2010
+ | `params.name` | 否 | `string \| null` | query / `name` | 按 `mcp_server_url` 搜索。 |
2011
+
2012
+ 分页从响应 `next_page` 读取下一页的 `page`;直接 `for await` 自动续页。
2013
+
2014
+ ### `vaults.credentials.create`
2015
+
2016
+ 创建凭据。HTTP:`POST /vaults/{id}/credentials`。
2017
+
2018
+ ```text
2019
+ client.vaults.credentials.create(id: string, params: VaultCredentialCreateParams, options?: RequestOptions): APIPromise<VaultCredential>
2020
+ ```
2021
+
2022
+ [方法源码](../src/forward/vault-credential.ts#L31);返回:`APIPromise<VaultCredential>`([VaultCredential](../src/forward/types.ts#L3276))。
2023
+
2024
+ 参数对象:[VaultCredentialCreateParams](../src/forward/types.ts#L3353);字段定义:[VaultCredentialNewParams](../src/forward/types.ts#L3254)。
2025
+
2026
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
2027
+ | --- | --- | --- | --- | --- |
2028
+ | `id` | 是 | `string` | path / `id` | 按签名顺序传入的路径参数。 |
2029
+ | `params.auth` | 是 | `Record<string, unknown>` | body / `auth` | Credential 认证信息,支持 `static_bearer`、`mcp_oauth`;响应只返回脱敏后的非密文字段。 |
2030
+ | `params.display_name` | 否 | `string \| null` | body / `display_name` | 兼容字段;当前不持久化,Forward 响应固定为空字符串。 |
2031
+ | `params.metadata` | 否 | `Record<string, unknown> \| null` | body / `metadata` | 元数据对象;`created_by` 为保留字段,不可传入(传入返回 400)。 |
2032
+ | `params.idempotency_key` | 否 | `string \| null` | header / `Idempotency-Key` | 可选创建请求幂等键。相同 key 只能用于相同请求。 |
2033
+
2034
+ ### `vaults.credentials.retrieve`
2035
+
2036
+ 获取凭据。HTTP:`GET /vaults/{id}/credentials/{cred_id}`。
2037
+
2038
+ ```text
2039
+ client.vaults.credentials.retrieve(id: string, credID: string, options?: RequestOptions): APIPromise<VaultCredential>
2040
+ ```
2041
+
2042
+ [方法源码](../src/forward/vault-credential.ts#L53);返回:`APIPromise<VaultCredential>`([VaultCredential](../src/forward/types.ts#L3276))。
2043
+
2044
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
2045
+ | --- | --- | --- | --- | --- |
2046
+ | `id` | 是 | `string` | path / `id` | 按签名顺序传入的路径参数。 |
2047
+ | `credID` | 是 | `string` | path / `cred_id` | 按签名顺序传入的路径参数。 |
2048
+
2049
+ ### `vaults.credentials.delete`
2050
+
2051
+ 删除凭据。HTTP:`DELETE /vaults/{id}/credentials/{cred_id}`。
2052
+
2053
+ ```text
2054
+ client.vaults.credentials.delete(id: string, credID: string, options?: RequestOptions): APIPromise<void>
2055
+ ```
2056
+
2057
+ [方法源码](../src/forward/vault-credential.ts#L68);返回:`APIPromise<void>`。
2058
+
2059
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
2060
+ | --- | --- | --- | --- | --- |
2061
+ | `id` | 是 | `string` | path / `id` | 按签名顺序传入的路径参数。 |
2062
+ | `credID` | 是 | `string` | path / `cred_id` | 按签名顺序传入的路径参数。 |
2063
+
2064
+ 成功后返回 `undefined`,不解析 JSON 响应体。
2065
+
2066
+ <a id="memoryStores"></a>
2067
+
2068
+ ## 记忆库:`client.memoryStores`
2069
+
2070
+ ### `memoryStores.list`
2071
+
2072
+ 列出记忆库。HTTP:`GET /memory_stores`。
2073
+
2074
+ ```text
2075
+ client.memoryStores.list(params: MemoryStoreListParams = {}, options?: RequestOptions): PagePromise<MemoryStore>
2076
+ ```
2077
+
2078
+ [方法源码](../src/forward/memory-store.ts#L21);返回:`PagePromise<MemoryStore>`([MemoryStore](../src/forward/types.ts#L1617))。
2079
+
2080
+ 参数对象:[MemoryStoreListParams](../src/forward/types.ts#L1537)。
2081
+
2082
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
2083
+ | --- | --- | --- | --- | --- |
2084
+ | `params.limit` | 否 | `number \| null` | query / `limit` | 每页返回数量上限,1..100,默认 20。 |
2085
+ | `params.before_id` | 否 | `string \| null` | query / `before_id` | 向前翻页游标,与 `after_id` 互斥。 |
2086
+ | `params.after_id` | 否 | `string \| null` | query / `after_id` | 向后翻页游标,与 `before_id` 互斥。 |
2087
+ | `params.system_managed` | 否 | `boolean \| null` | query / `system_managed` | 三态过滤:`true` 只返回系统默认库;`false` 只返回用户创建的库;不传不过滤。 |
2088
+
2089
+ 分页使用 `after_id` / `before_id` 游标。`await` 返回 `Page<T>`;直接 `for await` 遍历所有页。
2090
+
2091
+ ### `memoryStores.create`
2092
+
2093
+ 创建记忆库。HTTP:`POST /memory_stores`。
2094
+
2095
+ ```text
2096
+ client.memoryStores.create(params: MemoryStoreCreateParams, options?: RequestOptions): APIPromise<MemoryStore>
2097
+ ```
2098
+
2099
+ [方法源码](../src/forward/memory-store.ts#L32);返回:`APIPromise<MemoryStore>`([MemoryStore](../src/forward/types.ts#L1617))。
2100
+
2101
+ 参数对象:[MemoryStoreCreateParams](../src/forward/types.ts#L3333);字段定义:[MemoryStoreNewParams](../src/forward/types.ts#L1559)。
2102
+
2103
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
2104
+ | --- | --- | --- | --- | --- |
2105
+ | `params.name` | 是 | `string` | body / `name` | Store 展示名,非空。不允许非打印控制字符(`U+0000`–`U+001F`、`U+007F`),换行 `\n`、回车 `\r`、制表 `\t` 除外。 |
2106
+ | `params.description` | 否 | `string \| null` | body / `description` | 自由文本描述。不允许非打印控制字符。 |
2107
+ | `params.metadata` | 否 | `Record<string, unknown> \| null` | body / `metadata` | 键值元数据,值必须为字符串。最多 **15** 个键;键 1..64 字符;值 ≤512 字符。`created_by` 是 Forward 保留键,服务端自动写入 `"forward"`;调用方传入 `created_by` 会返回 `400 invalid_request_error`。详见 Store metadata 约束。 |
2108
+ | `params.idempotency_key` | 是 | `string` | header / `Idempotency-Key` | 创建请求幂等键。相同 key 只能用于相同请求体;不传返回 `400`。 |
2109
+
2110
+ ### `memoryStores.retrieve`
2111
+
2112
+ 获取记忆库。HTTP:`GET /memory_stores/{memory_store_id}`。
2113
+
2114
+ ```text
2115
+ client.memoryStores.retrieve(memoryStoreID: string, options?: RequestOptions): APIPromise<MemoryStore>
2116
+ ```
2117
+
2118
+ [方法源码](../src/forward/memory-store.ts#L50);返回:`APIPromise<MemoryStore>`([MemoryStore](../src/forward/types.ts#L1617))。
2119
+
2120
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
2121
+ | --- | --- | --- | --- | --- |
2122
+ | `memoryStoreID` | 是 | `string` | path / `memory_store_id` | 按签名顺序传入的路径参数。 |
2123
+
2124
+ ### `memoryStores.update`
2125
+
2126
+ 更新记忆库。HTTP:`POST /memory_stores/{memory_store_id}`。
2127
+
2128
+ ```text
2129
+ client.memoryStores.update(memoryStoreID: string, params: MemoryStoreUpdateParams = {}, options?: RequestOptions): APIPromise<MemoryStore>
2130
+ ```
2131
+
2132
+ [方法源码](../src/forward/memory-store.ts#L65);返回:`APIPromise<MemoryStore>`([MemoryStore](../src/forward/types.ts#L1617))。
2133
+
2134
+ 参数对象:[MemoryStoreUpdateParams](../src/forward/types.ts#L1581)。
2135
+
2136
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
2137
+ | --- | --- | --- | --- | --- |
2138
+ | `memoryStoreID` | 是 | `string` | path / `memory_store_id` | 按签名顺序传入的路径参数。 |
2139
+ | `params.name` | 否 | `string \| null` | body / `name` | 新名称。传入时非空且不含非打印控制字符。 |
2140
+ | `params.description` | 否 | `string \| null` | body / `description` | 新描述。传入时不含非打印控制字符。 |
2141
+ | `params.metadata` | 否 | `Record<string, unknown> \| null` | body / `metadata` | 新元数据,**整体替换**当前 metadata(非合并)。约束详见 Store metadata 约束。 |
2142
+
2143
+ ### `memoryStores.delete`
2144
+
2145
+ 删除记忆库。HTTP:`DELETE /memory_stores/{memory_store_id}`。
2146
+
2147
+ ```text
2148
+ client.memoryStores.delete(memoryStoreID: string, options?: RequestOptions): APIPromise<DeletedMemoryStore>
2149
+ ```
2150
+
2151
+ [方法源码](../src/forward/memory-store.ts#L85);返回:`APIPromise<DeletedMemoryStore>`([DeletedMemoryStore](../src/forward/types.ts#L1599))。
2152
+
2153
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
2154
+ | --- | --- | --- | --- | --- |
2155
+ | `memoryStoreID` | 是 | `string` | path / `memory_store_id` | 按签名顺序传入的路径参数。 |
2156
+
2157
+ ### `memoryStores.archive`
2158
+
2159
+ 归档记忆库。HTTP:`POST /memory_stores/{memory_store_id}/archive`。
2160
+
2161
+ ```text
2162
+ client.memoryStores.archive(memoryStoreID: string, options?: RequestOptions): APIPromise<MemoryStore>
2163
+ ```
2164
+
2165
+ [方法源码](../src/forward/memory-store.ts#L100);返回:`APIPromise<MemoryStore>`([MemoryStore](../src/forward/types.ts#L1617))。
2166
+
2167
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
2168
+ | --- | --- | --- | --- | --- |
2169
+ | `memoryStoreID` | 是 | `string` | path / `memory_store_id` | 按签名顺序传入的路径参数。 |
2170
+
2171
+ <a id="memoryStores-memories"></a>
2172
+
2173
+ ## 记忆条目:`client.memoryStores.memories`
2174
+
2175
+ ### `memoryStores.memories.list`
2176
+
2177
+ 列出记忆条目。HTTP:`GET /memory_stores/{memory_store_id}/memories`。
2178
+
2179
+ ```text
2180
+ client.memoryStores.memories.list(memoryStoreID: string, params: MemoryStoreMemoryListParams = {}, options?: RequestOptions): PagePromise<Memory>
2181
+ ```
2182
+
2183
+ [方法源码](../src/forward/memory-store-memory.ts#L16);返回:`PagePromise<Memory>`([Memory](../src/forward/types.ts#L1713))。
2184
+
2185
+ 参数对象:[MemoryStoreMemoryListParams](../src/forward/types.ts#L1637)。
2186
+
2187
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
2188
+ | --- | --- | --- | --- | --- |
2189
+ | `memoryStoreID` | 是 | `string` | path / `memory_store_id` | 按签名顺序传入的路径参数。 |
2190
+ | `params.limit` | 否 | `number \| null` | query / `limit` | 每页返回数量上限,1..100,默认 20。 |
2191
+ | `params.before_id` | 否 | `string \| null` | query / `before_id` | 向前翻页游标,与 `after_id` 互斥。 |
2192
+ | `params.after_id` | 否 | `string \| null` | query / `after_id` | 向后翻页游标,与 `before_id` 互斥。 |
2193
+ | `params.path_prefix` | 否 | `string \| null` | query / `path_prefix` | 按 `path` 前缀过滤。**这是纯字符串前缀匹配,不是目录语义** —— `path_prefix=a/b` 也会命中 `a/bc.md`。 |
2194
+
2195
+ 分页使用 `after_id` / `before_id` 游标。`await` 返回 `Page<T>`;直接 `for await` 遍历所有页。
2196
+
2197
+ ### `memoryStores.memories.create`
2198
+
2199
+ 创建记忆条目。HTTP:`POST /memory_stores/{memory_store_id}/memories`。
2200
+
2201
+ ```text
2202
+ client.memoryStores.memories.create(memoryStoreID: string, params: MemoryStoreMemoryCreateParams, options?: RequestOptions): APIPromise<Memory>
2203
+ ```
2204
+
2205
+ [方法源码](../src/forward/memory-store-memory.ts#L31);返回:`APIPromise<Memory>`([Memory](../src/forward/types.ts#L1713))。
2206
+
2207
+ 参数对象:[MemoryStoreMemoryCreateParams](../src/forward/types.ts#L3335);字段定义:[MemoryStoreMemoryNewParams](../src/forward/types.ts#L1659)。
2208
+
2209
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
2210
+ | --- | --- | --- | --- | --- |
2211
+ | `memoryStoreID` | 是 | `string` | path / `memory_store_id` | 按签名顺序传入的路径参数。 |
2212
+ | `params.path` | 是 | `string` | body / `path` | 库内相对路径,大小写敏感。约束详见 path 规则。 |
2213
+ | `params.content` | 是 | `string` | body / `content` | UTF-8 明文内容,非 base64;原始字节 ≤100 KiB。约束详见 content 约束。 |
2214
+ | `params.metadata` | 否 | `Record<string, unknown> \| null` | body / `metadata` | 键值元数据,值必须为字符串。最多 **16** 个键。约束详见 Memory metadata 约束。 |
2215
+
2216
+ ### `memoryStores.memories.retrieve`
2217
+
2218
+ 获取记忆条目。HTTP:`GET /memory_stores/{memory_store_id}/memories/{memory_id}`。
2219
+
2220
+ ```text
2221
+ client.memoryStores.memories.retrieve(memoryStoreID: string, memoryID: string, options?: RequestOptions): APIPromise<Memory>
2222
+ ```
2223
+
2224
+ [方法源码](../src/forward/memory-store-memory.ts#L51);返回:`APIPromise<Memory>`([Memory](../src/forward/types.ts#L1713))。
2225
+
2226
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
2227
+ | --- | --- | --- | --- | --- |
2228
+ | `memoryStoreID` | 是 | `string` | path / `memory_store_id` | 按签名顺序传入的路径参数。 |
2229
+ | `memoryID` | 是 | `string` | path / `memory_id` | 按签名顺序传入的路径参数。 |
2230
+
2231
+ ### `memoryStores.memories.update`
2232
+
2233
+ 更新记忆条目。HTTP:`POST /memory_stores/{memory_store_id}/memories/{memory_id}`。
2234
+
2235
+ ```text
2236
+ client.memoryStores.memories.update(memoryStoreID: string, memoryID: string, params: MemoryStoreMemoryUpdateParams, options?: RequestOptions): APIPromise<Memory>
2237
+ ```
2238
+
2239
+ [方法源码](../src/forward/memory-store-memory.ts#L66);返回:`APIPromise<Memory>`([Memory](../src/forward/types.ts#L1713))。
2240
+
2241
+ 参数对象:[MemoryStoreMemoryUpdateParams](../src/forward/types.ts#L1677)。
2242
+
2243
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
2244
+ | --- | --- | --- | --- | --- |
2245
+ | `memoryStoreID` | 是 | `string` | path / `memory_store_id` | 按签名顺序传入的路径参数。 |
2246
+ | `memoryID` | 是 | `string` | path / `memory_id` | 按签名顺序传入的路径参数。 |
2247
+ | `params.content` | 是 | `string` | body / `content` | 新内容,UTF-8 明文;原始字节 ≤100 KiB。约束详见 content 约束。 |
2248
+ | `params.content_sha256` | 否 | `string \| null` | body / `content_sha256` | 期望的当前内容 SHA-256,用于乐观并发控制。不一致时返回 `409`。 |
2249
+ | `params.metadata` | 否 | `Record<string, unknown> \| null` | body / `metadata` | 新元数据,**整体替换**当前 metadata(非合并)。未传入时保持原 metadata 不变。约束详见 Memory metadata 约束。 |
2250
+
2251
+ ### `memoryStores.memories.delete`
2252
+
2253
+ 删除记忆条目。HTTP:`DELETE /memory_stores/{memory_store_id}/memories/{memory_id}`。
2254
+
2255
+ ```text
2256
+ client.memoryStores.memories.delete(memoryStoreID: string, memoryID: string, options?: RequestOptions): APIPromise<DeletedMemory>
2257
+ ```
2258
+
2259
+ [方法源码](../src/forward/memory-store-memory.ts#L87);返回:`APIPromise<DeletedMemory>`([DeletedMemory](../src/forward/types.ts#L1695))。
2260
+
2261
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
2262
+ | --- | --- | --- | --- | --- |
2263
+ | `memoryStoreID` | 是 | `string` | path / `memory_store_id` | 按签名顺序传入的路径参数。 |
2264
+ | `memoryID` | 是 | `string` | path / `memory_id` | 按签名顺序传入的路径参数。 |
2265
+
2266
+ <a id="memoryStores-memoryVersions"></a>
2267
+
2268
+ ## 记忆版本:`client.memoryStores.memoryVersions`
2269
+
2270
+ ### `memoryStores.memoryVersions.list`
2271
+
2272
+ 列出记忆版本。HTTP:`GET /memory_stores/{memory_store_id}/memory_versions`。
2273
+
2274
+ ```text
2275
+ client.memoryStores.memoryVersions.list(memoryStoreID: string, params: MemoryStoreMemoryVersionListParams = {}, options?: RequestOptions): PagePromise<MemoryVersion>
2276
+ ```
2277
+
2278
+ [方法源码](../src/forward/memory-store-memory-version.ts#L16);返回:`PagePromise<MemoryVersion>`([MemoryVersion](../src/forward/types.ts#L1751))。
2279
+
2280
+ 参数对象:[MemoryStoreMemoryVersionListParams](../src/forward/types.ts#L1729)。
2281
+
2282
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
2283
+ | --- | --- | --- | --- | --- |
2284
+ | `memoryStoreID` | 是 | `string` | path / `memory_store_id` | 按签名顺序传入的路径参数。 |
2285
+ | `params.limit` | 否 | `number \| null` | query / `limit` | 每页返回数量上限,1..100,默认 20。 |
2286
+ | `params.before_id` | 否 | `string \| null` | query / `before_id` | 向前翻页游标,与 `after_id` 互斥。 |
2287
+ | `params.after_id` | 否 | `string \| null` | query / `after_id` | 向后翻页游标,与 `before_id` 互斥。 |
2288
+ | `params.memory_id` | 否 | `string \| null` | query / `memory_id` | 只返回该 memory(`mem_...`)的版本,用于查看单条记忆的变更历史。 |
2289
+
2290
+ 分页使用 `after_id` / `before_id` 游标。`await` 返回 `Page<T>`;直接 `for await` 遍历所有页。
2291
+
2292
+ ### `memoryStores.memoryVersions.retrieve`
2293
+
2294
+ 获取记忆版本。HTTP:`GET /memory_stores/{memory_store_id}/memory_versions/{memory_version_id}`。
2295
+
2296
+ ```text
2297
+ client.memoryStores.memoryVersions.retrieve(memoryStoreID: string, memoryVersionID: string, options?: RequestOptions): APIPromise<MemoryVersion>
2298
+ ```
2299
+
2300
+ [方法源码](../src/forward/memory-store-memory-version.ts#L31);返回:`APIPromise<MemoryVersion>`([MemoryVersion](../src/forward/types.ts#L1751))。
2301
+
2302
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
2303
+ | --- | --- | --- | --- | --- |
2304
+ | `memoryStoreID` | 是 | `string` | path / `memory_store_id` | 按签名顺序传入的路径参数。 |
2305
+ | `memoryVersionID` | 是 | `string` | path / `memory_version_id` | 按签名顺序传入的路径参数。 |
2306
+
2307
+ ### `memoryStores.memoryVersions.redact`
2308
+
2309
+ 清除记忆版本中的正文。HTTP:`POST /memory_stores/{memory_store_id}/memory_versions/{memory_version_id}/redact`。
2310
+
2311
+ ```text
2312
+ client.memoryStores.memoryVersions.redact(memoryStoreID: string, memoryVersionID: string, options?: RequestOptions): APIPromise<MemoryVersion>
2313
+ ```
2314
+
2315
+ [方法源码](../src/forward/memory-store-memory-version.ts#L50);返回:`APIPromise<MemoryVersion>`([MemoryVersion](../src/forward/types.ts#L1751))。
2316
+
2317
+ | 参数 | 必填 | 类型 | 位置 / 协议字段 | 说明 |
2318
+ | --- | --- | --- | --- | --- |
2319
+ | `memoryStoreID` | 是 | `string` | path / `memory_store_id` | 按签名顺序传入的路径参数。 |
2320
+ | `memoryVersionID` | 是 | `string` | path / `memory_version_id` | 按签名顺序传入的路径参数。 |
2321
+
2322
+ <a id="models"></a>
2323
+
2324
+ ## 模型:`client.models`
2325
+
2326
+ ### `models.list`
2327
+
2328
+ 列出模型。HTTP:`GET /models`。
2329
+
2330
+ ```text
2331
+ client.models.list(options?: RequestOptions): APIPromise<ModelListResponse>
2332
+ ```
2333
+
2334
+ [方法源码](../src/forward/model.ts#L15);返回:`APIPromise<ModelListResponse>`([ModelListResponse](../src/forward/types.ts#L1788))。
2335
+
2336
+ 无业务参数;可通过最后一个 `options` 设置请求选项。
2337
+
2338
+ ## 验证与场景示例
2339
+
2340
+ 完整的模型、会话、文件和技能、记忆等可运行场景见 [示例说明](../examples/README.md)。运行全量真实场景:
2341
+
2342
+ ```sh
2343
+ npm run example -- -mode forward -scenario all -region international -model auto
2344
+ ```
2345
+
2346
+ `-region` 应与 PAT 所属站点一致;示例程序读取 `.env.live`,执行后清理本轮创建的资源。文档中的资源方法不会自动执行这类清理。