meeglesdk 0.1.5 → 0.1.7

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 (250) hide show
  1. package/README.md +2 -0
  2. package/dist/client.d.ts +9 -1
  3. package/dist/client.js +10 -1
  4. package/dist/core/base-service.d.ts +0 -1
  5. package/dist/core/base-service.js +0 -1
  6. package/dist/core/errors.d.ts +0 -1
  7. package/dist/core/errors.js +0 -1
  8. package/dist/core/rate-limiter.d.ts +0 -1
  9. package/dist/core/rate-limiter.js +0 -1
  10. package/dist/core/request/auth.d.ts +0 -1
  11. package/dist/core/request/auth.js +0 -1
  12. package/dist/core/request/download.d.ts +0 -1
  13. package/dist/core/request/download.js +0 -1
  14. package/dist/core/request/handler.d.ts +0 -1
  15. package/dist/core/request/handler.js +0 -1
  16. package/dist/core/request/index.d.ts +0 -1
  17. package/dist/core/request/index.js +0 -1
  18. package/dist/core/request/json-parser.d.ts +0 -1
  19. package/dist/core/request/json-parser.js +0 -1
  20. package/dist/core/request/path.d.ts +0 -1
  21. package/dist/core/request/path.js +0 -1
  22. package/dist/core/request/response-parser.d.ts +1 -1
  23. package/dist/core/request/response-parser.js +10 -2
  24. package/dist/core/request/retry.d.ts +0 -1
  25. package/dist/core/request/retry.js +0 -1
  26. package/dist/core/request/types.d.ts +0 -1
  27. package/dist/core/request/types.js +0 -1
  28. package/dist/core/request/upload.d.ts +0 -1
  29. package/dist/core/request/upload.js +0 -1
  30. package/dist/core/token-manager.d.ts +0 -1
  31. package/dist/core/token-manager.js +0 -1
  32. package/dist/helpers/auth.d.ts +0 -1
  33. package/dist/helpers/auth.js +0 -1
  34. package/dist/helpers/event.d.ts +0 -1
  35. package/dist/helpers/event.js +0 -1
  36. package/dist/helpers/richtext.d.ts +0 -1
  37. package/dist/helpers/richtext.js +0 -1
  38. package/dist/index.d.ts +3 -1
  39. package/dist/index.js +2 -1
  40. package/dist/service/ainode/index.d.ts +106 -0
  41. package/dist/service/ainode/index.js +111 -0
  42. package/dist/service/auth/index.d.ts +0 -1
  43. package/dist/service/auth/index.js +0 -1
  44. package/dist/service/config/basic.d.ts +0 -1
  45. package/dist/service/config/basic.js +0 -1
  46. package/dist/service/config/config.d.ts +0 -1
  47. package/dist/service/config/config.js +0 -1
  48. package/dist/service/config/field.d.ts +0 -1
  49. package/dist/service/config/field.js +0 -1
  50. package/dist/service/config/relation.d.ts +0 -1
  51. package/dist/service/config/relation.js +0 -1
  52. package/dist/service/config/resource.d.ts +0 -1
  53. package/dist/service/config/resource.js +0 -1
  54. package/dist/service/config/role.d.ts +0 -1
  55. package/dist/service/config/role.js +0 -1
  56. package/dist/service/config/template.d.ts +0 -1
  57. package/dist/service/config/template.js +0 -1
  58. package/dist/service/event/index.d.ts +0 -1
  59. package/dist/service/event/index.js +0 -1
  60. package/dist/service/event/intercept.d.ts +0 -1
  61. package/dist/service/event/intercept.js +0 -1
  62. package/dist/service/measure/index.d.ts +0 -1
  63. package/dist/service/measure/index.js +0 -1
  64. package/dist/service/measure/query.d.ts +0 -1
  65. package/dist/service/measure/query.js +0 -1
  66. package/dist/service/space/relation.d.ts +0 -1
  67. package/dist/service/space/relation.js +0 -1
  68. package/dist/service/space/space.d.ts +0 -1
  69. package/dist/service/space/space.js +0 -1
  70. package/dist/service/tenant/tenant.d.ts +0 -1
  71. package/dist/service/tenant/tenant.js +0 -1
  72. package/dist/service/user/group.d.ts +0 -1
  73. package/dist/service/user/group.js +0 -1
  74. package/dist/service/user/query.d.ts +0 -1
  75. package/dist/service/user/query.js +0 -1
  76. package/dist/service/user/search.d.ts +0 -1
  77. package/dist/service/user/search.js +0 -1
  78. package/dist/service/user/user.d.ts +0 -1
  79. package/dist/service/user/user.js +0 -1
  80. package/dist/service/view/query.d.ts +0 -1
  81. package/dist/service/view/query.js +0 -1
  82. package/dist/service/view/view.d.ts +0 -1
  83. package/dist/service/view/view.js +0 -1
  84. package/dist/service/workitem/attachment.d.ts +0 -1
  85. package/dist/service/workitem/attachment.js +0 -1
  86. package/dist/service/workitem/batch.d.ts +0 -1
  87. package/dist/service/workitem/batch.js +0 -1
  88. package/dist/service/workitem/chat.d.ts +0 -1
  89. package/dist/service/workitem/chat.js +0 -1
  90. package/dist/service/workitem/comment.d.ts +0 -1
  91. package/dist/service/workitem/comment.js +0 -1
  92. package/dist/service/workitem/review.d.ts +0 -1
  93. package/dist/service/workitem/review.js +0 -1
  94. package/dist/service/workitem/search.d.ts +0 -1
  95. package/dist/service/workitem/search.js +0 -1
  96. package/dist/service/workitem/subtask.d.ts +0 -1
  97. package/dist/service/workitem/subtask.js +0 -1
  98. package/dist/service/workitem/workItem.d.ts +0 -1
  99. package/dist/service/workitem/workItem.js +0 -1
  100. package/dist/service/workitem/workflow.d.ts +0 -1
  101. package/dist/service/workitem/workflow.js +0 -1
  102. package/dist/service/workitem/workhour.d.ts +0 -1
  103. package/dist/service/workitem/workhour.js +0 -1
  104. package/dist/types/ainode.d.ts +188 -0
  105. package/dist/types/ainode.js +19 -0
  106. package/dist/types/auth.d.ts +0 -1
  107. package/dist/types/auth.js +0 -1
  108. package/dist/types/common.d.ts +0 -1
  109. package/dist/types/common.js +0 -1
  110. package/dist/types/config.d.ts +0 -1
  111. package/dist/types/config.js +0 -1
  112. package/dist/types/event.d.ts +0 -1
  113. package/dist/types/event.js +0 -1
  114. package/dist/types/index.d.ts +1 -1
  115. package/dist/types/index.js +1 -1
  116. package/dist/types/measure.d.ts +0 -1
  117. package/dist/types/measure.js +0 -1
  118. package/dist/types/space.d.ts +0 -1
  119. package/dist/types/space.js +0 -1
  120. package/dist/types/tenant.d.ts +0 -1
  121. package/dist/types/tenant.js +0 -1
  122. package/dist/types/user.d.ts +0 -1
  123. package/dist/types/user.js +0 -1
  124. package/dist/types/view.d.ts +0 -1
  125. package/dist/types/view.js +0 -1
  126. package/dist/types/workitem.d.ts +0 -1
  127. package/dist/types/workitem.js +0 -1
  128. package/package.json +2 -2
  129. package/dist/client.d.ts.map +0 -1
  130. package/dist/client.js.map +0 -1
  131. package/dist/core/base-service.d.ts.map +0 -1
  132. package/dist/core/base-service.js.map +0 -1
  133. package/dist/core/errors.d.ts.map +0 -1
  134. package/dist/core/errors.js.map +0 -1
  135. package/dist/core/rate-limiter.d.ts.map +0 -1
  136. package/dist/core/rate-limiter.js.map +0 -1
  137. package/dist/core/request/auth.d.ts.map +0 -1
  138. package/dist/core/request/auth.js.map +0 -1
  139. package/dist/core/request/download.d.ts.map +0 -1
  140. package/dist/core/request/download.js.map +0 -1
  141. package/dist/core/request/handler.d.ts.map +0 -1
  142. package/dist/core/request/handler.js.map +0 -1
  143. package/dist/core/request/index.d.ts.map +0 -1
  144. package/dist/core/request/index.js.map +0 -1
  145. package/dist/core/request/json-parser.d.ts.map +0 -1
  146. package/dist/core/request/json-parser.js.map +0 -1
  147. package/dist/core/request/path.d.ts.map +0 -1
  148. package/dist/core/request/path.js.map +0 -1
  149. package/dist/core/request/response-parser.d.ts.map +0 -1
  150. package/dist/core/request/response-parser.js.map +0 -1
  151. package/dist/core/request/retry.d.ts.map +0 -1
  152. package/dist/core/request/retry.js.map +0 -1
  153. package/dist/core/request/types.d.ts.map +0 -1
  154. package/dist/core/request/types.js.map +0 -1
  155. package/dist/core/request/upload.d.ts.map +0 -1
  156. package/dist/core/request/upload.js.map +0 -1
  157. package/dist/core/token-manager.d.ts.map +0 -1
  158. package/dist/core/token-manager.js.map +0 -1
  159. package/dist/helpers/auth.d.ts.map +0 -1
  160. package/dist/helpers/auth.js.map +0 -1
  161. package/dist/helpers/event.d.ts.map +0 -1
  162. package/dist/helpers/event.js.map +0 -1
  163. package/dist/helpers/richtext.d.ts.map +0 -1
  164. package/dist/helpers/richtext.js.map +0 -1
  165. package/dist/index.d.ts.map +0 -1
  166. package/dist/index.js.map +0 -1
  167. package/dist/service/auth/index.d.ts.map +0 -1
  168. package/dist/service/auth/index.js.map +0 -1
  169. package/dist/service/config/basic.d.ts.map +0 -1
  170. package/dist/service/config/basic.js.map +0 -1
  171. package/dist/service/config/config.d.ts.map +0 -1
  172. package/dist/service/config/config.js.map +0 -1
  173. package/dist/service/config/field.d.ts.map +0 -1
  174. package/dist/service/config/field.js.map +0 -1
  175. package/dist/service/config/relation.d.ts.map +0 -1
  176. package/dist/service/config/relation.js.map +0 -1
  177. package/dist/service/config/resource.d.ts.map +0 -1
  178. package/dist/service/config/resource.js.map +0 -1
  179. package/dist/service/config/role.d.ts.map +0 -1
  180. package/dist/service/config/role.js.map +0 -1
  181. package/dist/service/config/template.d.ts.map +0 -1
  182. package/dist/service/config/template.js.map +0 -1
  183. package/dist/service/event/index.d.ts.map +0 -1
  184. package/dist/service/event/index.js.map +0 -1
  185. package/dist/service/event/intercept.d.ts.map +0 -1
  186. package/dist/service/event/intercept.js.map +0 -1
  187. package/dist/service/measure/index.d.ts.map +0 -1
  188. package/dist/service/measure/index.js.map +0 -1
  189. package/dist/service/measure/query.d.ts.map +0 -1
  190. package/dist/service/measure/query.js.map +0 -1
  191. package/dist/service/space/relation.d.ts.map +0 -1
  192. package/dist/service/space/relation.js.map +0 -1
  193. package/dist/service/space/space.d.ts.map +0 -1
  194. package/dist/service/space/space.js.map +0 -1
  195. package/dist/service/tenant/tenant.d.ts.map +0 -1
  196. package/dist/service/tenant/tenant.js.map +0 -1
  197. package/dist/service/user/group.d.ts.map +0 -1
  198. package/dist/service/user/group.js.map +0 -1
  199. package/dist/service/user/query.d.ts.map +0 -1
  200. package/dist/service/user/query.js.map +0 -1
  201. package/dist/service/user/search.d.ts.map +0 -1
  202. package/dist/service/user/search.js.map +0 -1
  203. package/dist/service/user/user.d.ts.map +0 -1
  204. package/dist/service/user/user.js.map +0 -1
  205. package/dist/service/view/query.d.ts.map +0 -1
  206. package/dist/service/view/query.js.map +0 -1
  207. package/dist/service/view/view.d.ts.map +0 -1
  208. package/dist/service/view/view.js.map +0 -1
  209. package/dist/service/workitem/attachment.d.ts.map +0 -1
  210. package/dist/service/workitem/attachment.js.map +0 -1
  211. package/dist/service/workitem/batch.d.ts.map +0 -1
  212. package/dist/service/workitem/batch.js.map +0 -1
  213. package/dist/service/workitem/chat.d.ts.map +0 -1
  214. package/dist/service/workitem/chat.js.map +0 -1
  215. package/dist/service/workitem/comment.d.ts.map +0 -1
  216. package/dist/service/workitem/comment.js.map +0 -1
  217. package/dist/service/workitem/review.d.ts.map +0 -1
  218. package/dist/service/workitem/review.js.map +0 -1
  219. package/dist/service/workitem/search.d.ts.map +0 -1
  220. package/dist/service/workitem/search.js.map +0 -1
  221. package/dist/service/workitem/subtask.d.ts.map +0 -1
  222. package/dist/service/workitem/subtask.js.map +0 -1
  223. package/dist/service/workitem/workItem.d.ts.map +0 -1
  224. package/dist/service/workitem/workItem.js.map +0 -1
  225. package/dist/service/workitem/workflow.d.ts.map +0 -1
  226. package/dist/service/workitem/workflow.js.map +0 -1
  227. package/dist/service/workitem/workhour.d.ts.map +0 -1
  228. package/dist/service/workitem/workhour.js.map +0 -1
  229. package/dist/types/auth.d.ts.map +0 -1
  230. package/dist/types/auth.js.map +0 -1
  231. package/dist/types/common.d.ts.map +0 -1
  232. package/dist/types/common.js.map +0 -1
  233. package/dist/types/config.d.ts.map +0 -1
  234. package/dist/types/config.js.map +0 -1
  235. package/dist/types/event.d.ts.map +0 -1
  236. package/dist/types/event.js.map +0 -1
  237. package/dist/types/index.d.ts.map +0 -1
  238. package/dist/types/index.js.map +0 -1
  239. package/dist/types/measure.d.ts.map +0 -1
  240. package/dist/types/measure.js.map +0 -1
  241. package/dist/types/space.d.ts.map +0 -1
  242. package/dist/types/space.js.map +0 -1
  243. package/dist/types/tenant.d.ts.map +0 -1
  244. package/dist/types/tenant.js.map +0 -1
  245. package/dist/types/user.d.ts.map +0 -1
  246. package/dist/types/user.js.map +0 -1
  247. package/dist/types/view.d.ts.map +0 -1
  248. package/dist/types/view.js.map +0 -1
  249. package/dist/types/workitem.d.ts.map +0 -1
  250. package/dist/types/workitem.js.map +0 -1
package/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  TypeScript SDK for Feishu Project (Meego) Open API.
4
4
 
5
+ Runtime: Node.js 18+ (server-side only; browser usage is not supported).
6
+
5
7
  ## Install
6
8
 
7
9
  ```bash
package/dist/client.d.ts CHANGED
@@ -17,6 +17,7 @@ import { ViewService } from './service/view/view.js';
17
17
  import { MeasureService } from './service/measure/index.js';
18
18
  import { TenantService } from './service/tenant/tenant.js';
19
19
  import { EventService } from './service/event/index.js';
20
+ import { AINodeService } from './service/ainode/index.js';
20
21
  /**
21
22
  * MeegoClient 配置选项
22
23
  */
@@ -156,6 +157,14 @@ export declare class MeegoClient {
156
157
  * - intercept: 拦截事件配置管理
157
158
  */
158
159
  readonly event: EventService;
160
+ /**
161
+ * AI 节点服务
162
+ *
163
+ * - query: 获取 AI 节点信息
164
+ * - edit: 修改 AI 节点数据
165
+ * - confirm: 完成 AI 节点
166
+ */
167
+ readonly aiNode: AINodeService;
159
168
  /** Token 管理器 (内部使用) */
160
169
  private readonly tokenManager;
161
170
  /** 请求处理器 (内部使用) */
@@ -191,4 +200,3 @@ export declare class MeegoClient {
191
200
  */
192
201
  getBaseURL(): string;
193
202
  }
194
- //# sourceMappingURL=client.d.ts.map
package/dist/client.js CHANGED
@@ -14,6 +14,7 @@ import { ViewService } from './service/view/view.js';
14
14
  import { MeasureService } from './service/measure/index.js';
15
15
  import { TenantService } from './service/tenant/tenant.js';
16
16
  import { EventService } from './service/event/index.js';
17
+ import { AINodeService } from './service/ainode/index.js';
17
18
  /** 默认 API 基础 URL */
18
19
  const DEFAULT_BASE_URL = 'https://project.feishu.cn';
19
20
  /** 默认超时 30 秒 */
@@ -113,6 +114,14 @@ export class MeegoClient {
113
114
  * - intercept: 拦截事件配置管理
114
115
  */
115
116
  event;
117
+ /**
118
+ * AI 节点服务
119
+ *
120
+ * - query: 获取 AI 节点信息
121
+ * - edit: 修改 AI 节点数据
122
+ * - confirm: 完成 AI 节点
123
+ */
124
+ aiNode;
116
125
  /** Token 管理器 (内部使用) */
117
126
  tokenManager;
118
127
  /** 请求处理器 (内部使用) */
@@ -162,6 +171,7 @@ export class MeegoClient {
162
171
  this.measure = new MeasureService(this.requestHandler);
163
172
  this.tenant = new TenantService(this.requestHandler);
164
173
  this.event = new EventService(this.requestHandler);
174
+ this.aiNode = new AINodeService(this.requestHandler);
165
175
  this.logger.info('MeegoClient initialized', {
166
176
  baseURL: this.options.baseURL,
167
177
  pluginId: this.options.pluginId,
@@ -203,4 +213,3 @@ export class MeegoClient {
203
213
  return this.options.baseURL;
204
214
  }
205
215
  }
206
- //# sourceMappingURL=client.js.map
@@ -168,4 +168,3 @@ export declare abstract class BaseService {
168
168
  */
169
169
  protected downloadStream(path: string, options?: DownloadOptions): Promise<ReadableStream<Uint8Array>>;
170
170
  }
171
- //# sourceMappingURL=base-service.d.ts.map
@@ -290,4 +290,3 @@ export class BaseService {
290
290
  });
291
291
  }
292
292
  }
293
- //# sourceMappingURL=base-service.js.map
@@ -202,4 +202,3 @@ export declare class MeegoTimeoutError extends MeegoNetworkError {
202
202
  export declare class MeegoAbortError extends MeegoNetworkError {
203
203
  constructor(message?: string);
204
204
  }
205
- //# sourceMappingURL=errors.d.ts.map
@@ -273,4 +273,3 @@ export class MeegoAbortError extends MeegoNetworkError {
273
273
  Object.setPrototypeOf(this, MeegoAbortError.prototype);
274
274
  }
275
275
  }
276
- //# sourceMappingURL=errors.js.map
@@ -69,4 +69,3 @@ export declare class RateLimitManager {
69
69
  private buildKey;
70
70
  private getLimiter;
71
71
  }
72
- //# sourceMappingURL=rate-limiter.d.ts.map
@@ -266,4 +266,3 @@ const compilePathPattern = (path) => {
266
266
  const pattern = escaped.replace(/:[^/]+/g, '[^/]+');
267
267
  return new RegExp(`^${pattern}$`);
268
268
  };
269
- //# sourceMappingURL=rate-limiter.js.map
@@ -16,4 +16,3 @@ export interface AuthHeaderBuilder {
16
16
  * 创建认证头构建器
17
17
  */
18
18
  export declare function createAuthHeaderBuilder(tokenManager: TokenManager, logger: Logger): AuthHeaderBuilder;
19
- //# sourceMappingURL=auth.d.ts.map
@@ -86,4 +86,3 @@ export function createAuthHeaderBuilder(tokenManager, logger) {
86
86
  buildHeadersForUpload,
87
87
  };
88
88
  }
89
- //# sourceMappingURL=auth.js.map
@@ -31,4 +31,3 @@ export declare function parseDownloadResponse(response: Response, options: Downl
31
31
  * 解析流式下载响应
32
32
  */
33
33
  export declare function parseDownloadStreamResponse(response: Response, options: DownloadProgressOptions | undefined, logger: Logger): Promise<ReadableStream<Uint8Array>>;
34
- //# sourceMappingURL=download.d.ts.map
@@ -209,4 +209,3 @@ export async function parseDownloadStreamResponse(response, options, logger) {
209
209
  }
210
210
  return wrapStreamWithProgress(response.body, progressOptions, totalBytes, logger);
211
211
  }
212
- //# sourceMappingURL=download.js.map
@@ -74,4 +74,3 @@ export declare class RequestHandler {
74
74
  */
75
75
  private executeOnce;
76
76
  }
77
- //# sourceMappingURL=handler.d.ts.map
@@ -269,4 +269,3 @@ export class RequestHandler {
269
269
  }
270
270
  }
271
271
  }
272
- //# sourceMappingURL=handler.js.map
@@ -6,4 +6,3 @@ export { RequestHandler } from './handler.js';
6
6
  export type { HttpMethod, AuthMode, AuthContext, ResponseValidator, RetryConfig, DownloadProgress, RequestConfig, UploadConfig, DownloadConfig, RequestHandlerOptions, } from './types.js';
7
7
  export type { BaseRequestConfig, DownloadProgressOptions, ExecutionContext, PaginatedResult, PaginatedObjectResult, } from './types.js';
8
8
  export { DEFAULT_TIMEOUT, DEFAULT_RETRY_CONFIG, DEFAULT_UPLOAD_MAX_BYTES, DEFAULT_UPLOAD_MIN_BYTES, DEFAULT_MAX_RETRY_DELAY, } from './types.js';
9
- //# sourceMappingURL=index.d.ts.map
@@ -6,4 +6,3 @@
6
6
  export { RequestHandler } from './handler.js';
7
7
  // 常量
8
8
  export { DEFAULT_TIMEOUT, DEFAULT_RETRY_CONFIG, DEFAULT_UPLOAD_MAX_BYTES, DEFAULT_UPLOAD_MIN_BYTES, DEFAULT_MAX_RETRY_DELAY, } from './types.js';
9
- //# sourceMappingURL=index.js.map
@@ -12,4 +12,3 @@
12
12
  * - 负数大整数: -1234567890123456789
13
13
  */
14
14
  export declare function parseJsonSafely<T>(text: string): T;
15
- //# sourceMappingURL=json-parser.d.ts.map
@@ -40,4 +40,3 @@ export function parseJsonSafely(text) {
40
40
  .replace(scientificPattern, (match, prefix, spacing, value) => wrapScientific(value) ? `${prefix}${spacing}"${value}"` : match);
41
41
  return JSON.parse(safeText);
42
42
  }
43
- //# sourceMappingURL=json-parser.js.map
@@ -19,4 +19,3 @@ export declare function buildQueryString(query: Record<string, unknown>): string
19
19
  * 构建完整 URL
20
20
  */
21
21
  export declare function buildUrl(baseURL: string, resolvedPath: string, query?: Record<string, unknown>): string;
22
- //# sourceMappingURL=path.d.ts.map
@@ -84,4 +84,3 @@ export function buildUrl(baseURL, resolvedPath, query) {
84
84
  }
85
85
  return url;
86
86
  }
87
- //# sourceMappingURL=path.js.map
@@ -40,6 +40,7 @@ export declare function parseResponseKeyResponse<T>(response: Response, response
40
40
  /**
41
41
  * 解析多字段响应
42
42
  * 用于 data 与其他字段同级的接口(如 disable_intercept + data)
43
+ * 若响应缺少任一字段或字段值为 null/undefined,将抛出错误
43
44
  */
44
45
  export declare function parseMultiFieldResponse<T extends object>(response: Response, fields: string[]): Promise<T>;
45
46
  /**
@@ -47,4 +48,3 @@ export declare function parseMultiFieldResponse<T extends object>(response: Resp
47
48
  * 用于 datas + pagination(search_after) 的接口
48
49
  */
49
50
  export declare function parseCursorPaginatedResponse<T>(response: Response, dataKey: string, validator?: ResponseValidator<T>): Promise<SearchAfterPaginatedResult<T>>;
50
- //# sourceMappingURL=response-parser.d.ts.map
@@ -130,14 +130,23 @@ export async function parseResponseKeyResponse(response, responseKey, validator)
130
130
  /**
131
131
  * 解析多字段响应
132
132
  * 用于 data 与其他字段同级的接口(如 disable_intercept + data)
133
+ * 若响应缺少任一字段或字段值为 null/undefined,将抛出错误
133
134
  */
134
135
  export async function parseMultiFieldResponse(response, fields) {
135
136
  const result = await parseEnvelope(response);
136
137
  const output = {};
138
+ const missingFields = [];
137
139
  for (const field of fields) {
138
- if (field in result) {
140
+ if (field in result && result[field] != null) {
139
141
  output[field] = result[field];
140
142
  }
143
+ else {
144
+ missingFields.push(field);
145
+ }
146
+ }
147
+ if (missingFields.length > 0) {
148
+ const missing = missingFields.join(', ');
149
+ throw new MeegoError(`[-1] Response missing ${missing}`, -1, `Response missing ${missing}`, result.err, response.status);
141
150
  }
142
151
  return output;
143
152
  }
@@ -166,4 +175,3 @@ export async function parseCursorPaginatedResponse(response, dataKey, validator)
166
175
  pagination: result.pagination ?? {},
167
176
  };
168
177
  }
169
- //# sourceMappingURL=response-parser.js.map
@@ -26,4 +26,3 @@ export declare function executeWithRetry<T>(context: ExecutionContext, options:
26
26
  skipRetry?: boolean;
27
27
  retry?: Partial<RetryConfig>;
28
28
  }, executor: () => Promise<T>, retryConfig: RetryConfig, logger: Logger): Promise<T>;
29
- //# sourceMappingURL=retry.d.ts.map
@@ -81,4 +81,3 @@ export async function executeWithRetry(context, options, executor, retryConfig,
81
81
  // 但为了类型安全和防御性编程,添加断言
82
82
  throw lastError;
83
83
  }
84
- //# sourceMappingURL=retry.js.map
@@ -171,4 +171,3 @@ export declare const DEFAULT_UPLOAD_MIN_BYTES = 1;
171
171
  export declare const DEFAULT_MAX_RETRY_DELAY = 30000;
172
172
  /** 默认重试配置 */
173
173
  export declare const DEFAULT_RETRY_CONFIG: RetryConfig;
174
- //# sourceMappingURL=types.d.ts.map
@@ -23,4 +23,3 @@ export const DEFAULT_RETRY_CONFIG = {
23
23
  ErrorCodes.RPC_CALL_ERROR, // 50006
24
24
  ],
25
25
  };
26
- //# sourceMappingURL=types.js.map
@@ -15,4 +15,3 @@ export declare function validateUploadFileSize(fileSize: number | undefined, min
15
15
  * 构建 FormData
16
16
  */
17
17
  export declare function buildFormData(file: Blob | File | Buffer, fileName: string, fieldName: string, formFields?: Record<string, string>): FormData;
18
- //# sourceMappingURL=upload.d.ts.map
@@ -59,4 +59,3 @@ export function buildFormData(file, fileName, fieldName, formFields) {
59
59
  }
60
60
  return formData;
61
61
  }
62
- //# sourceMappingURL=upload.js.map
@@ -131,4 +131,3 @@ export declare class TokenManager {
131
131
  */
132
132
  private sleep;
133
133
  }
134
- //# sourceMappingURL=token-manager.d.ts.map
@@ -409,4 +409,3 @@ export class TokenManager {
409
409
  return new Promise((resolve) => setTimeout(resolve, ms));
410
410
  }
411
411
  }
412
- //# sourceMappingURL=token-manager.js.map
@@ -4,4 +4,3 @@ export declare function withAuth(auth: AuthContext): ServiceRequestOptions;
4
4
  export declare function withUserKey(userKey: string): ServiceRequestOptions;
5
5
  export declare function withUserToken(token: string): ServiceRequestOptions;
6
6
  export declare function withPluginToken(token: string, userKey?: string): ServiceRequestOptions;
7
- //# sourceMappingURL=auth.d.ts.map
@@ -16,4 +16,3 @@ export function withUserToken(token) {
16
16
  export function withPluginToken(token, userKey) {
17
17
  return withAuth({ type: 'plugin', token, userKey });
18
18
  }
19
- //# sourceMappingURL=auth.js.map
@@ -144,4 +144,3 @@ export declare function createInterceptResponse(intercept: boolean, options?: {
144
144
  disable_show_plugin?: boolean;
145
145
  };
146
146
  };
147
- //# sourceMappingURL=event.d.ts.map
@@ -240,4 +240,3 @@ export function createInterceptResponse(intercept, options) {
240
240
  }
241
241
  return response;
242
242
  }
243
- //# sourceMappingURL=event.js.map
@@ -57,4 +57,3 @@ export declare function extractImagesFromMultiTexts(multiTexts?: MultiText[]): R
57
57
  * @returns MIME 类型字符串
58
58
  */
59
59
  export declare function inferImageMimeType(data: ArrayBuffer): string;
60
- //# sourceMappingURL=richtext.d.ts.map
@@ -103,4 +103,3 @@ export function inferImageMimeType(data) {
103
103
  // 默认返回 octet-stream
104
104
  return 'application/octet-stream';
105
105
  }
106
- //# sourceMappingURL=richtext.js.map
package/dist/index.d.ts CHANGED
@@ -50,6 +50,7 @@ export { WorkflowService } from './service/workitem/workflow.js';
50
50
  export { WorkHourService } from './service/workitem/workhour.js';
51
51
  export { ReviewService } from './service/workitem/review.js';
52
52
  export { EventService, InterceptConfigService } from './service/event/index.js';
53
+ export { AINodeService } from './service/ainode/index.js';
53
54
  export { withAuth, withUserKey, withUserToken, withPluginToken } from './helpers/auth.js';
54
55
  export { parseDocImages, extractImagesFromMultiTexts, inferImageMimeType, type RichTextImage, } from './helpers/richtext.js';
55
56
  export { calculateEventSignature, verifyEventSignature, calculateEventSignatureSync, verifyEventSignatureSync, getEventCategory, getEventName, isListenEvent, isInterceptEvent, createInterceptResponse, } from './helpers/event.js';
@@ -65,6 +66,8 @@ export type { SearchGroup, SearchParam, SearchOperator, SearchUser, SearchConjun
65
66
  export type { WorkItemPattern, WorkItemStatus, WorkItemStatusHistory, StateTime, CurrentNode, WorkflowNode, WorkflowInfo, WorkItem, WorkItemInfo, QueryWorkItemExpand, QueryWorkItemRequest, CreateWorkItemRequest, UpdateWorkItemRequest, GetWorkItemMetaResponse, GetOperationRecordsRequest, GetOperationRecordsResponse, UpdateCompoundFieldRequest, WbsViewQueryParams, WbsViewExpand, WbsViewRequest, WbsWorkItem, TransitionRequiredInfoRequest, TransitionRequiredInfo, FlowType, WorkflowQueryExpand, WorkflowQueryRequest, StateChangeRequest, NodeOperateRequest, UpdateNodeRequest, } from './types/workitem.js';
66
67
  export type { WorkHourResourceType, CreateWorkingHourRecord, CreateWorkHourRecordRequest, UpdateWorkingHourRecord, UpdateWorkHourRecordRequest, DeleteWorkHourRecordRequest, ListWorkHourRecordsRequest, WorkHourRecord, ReviewConclusionOptionItem, ReviewOwnerOpinionInfo, ReviewOpinionInfo, ReviewOwnerConclusionInfo, ReviewConclusionInfo, ReviewFinishedInfoItem, ReviewBatchQueryRequest, ReviewBatchQueryResponse, ReviewConclusionOptionRequest, ReviewConclusionOption, UpdateReviewRequest, WorkItemWithImages, } from './types/workitem.js';
67
68
  export type { GetPluginTokenRequest, GetPluginTokenResponseData, GetUserTokenRequest, GetUserTokenResponseData, RefreshUserTokenRequest, RefreshUserTokenResponseData, UserTokenInput, TokenInfo, TokenType, } from './types/auth.js';
69
+ export type { AINodeStatus, AINodeField, AINodePropValue, AINodeProp, AINodeAppIdentity, AINodeInfo, AINodeSubTask, AINodeSubWorkItem, AINodeQueryRequest, AINodeEditRequest, AINodeEditField, AINodeConfirmRequest, AINodeQueryResponse, } from './types/ainode.js';
70
+ export { AINodeRunningState } from './types/ainode.js';
68
71
  export type { EventSource, EventType, WorkItemEventType, NodeEventType, StatusEventType, SubtaskEventType, SpaceEventType, PluginEventType, EventUserInfo, EventWorkItemInfo, EventFieldChange, EventNodeInfo, EventSubtaskInfo, ListenEventBase, ListenEventDataBase, WorkItemEventData, WorkItemListenEvent, NodeEventData, NodeListenEvent, StatusEventData, StatusListenEvent, SubtaskEventData, SubtaskListenEvent, SpaceMemberEventData, SpaceListenEvent, PluginInstallChannel, PluginBuyType, PluginInstallEventData, PluginUninstallEventData, PluginUpdateEventData, PluginPurchaseEventData, PluginEventData, PluginListenEvent, ListenEventData, ListenEvent, InterceptEventBase, InterceptEventDataBase, InterceptEvent, InterceptResponseMessage, InterceptResponseOptions, InterceptResponse, NodeInterceptConfig, StateInterceptConfig, WorkItemInterceptConfig, ProjectInterceptConfig, CreateInterceptConfigRequest, InterceptConfigListResponse, VerifySignatureParams, } from './types/event.js';
69
72
  export type { RequestConfig, RetryConfig, HttpMethod, AuthContext, AuthMode, DownloadProgress, ResponseValidator, } from './core/request/index.js';
70
73
  export type { ServiceRequestOptions, UploadRequestOptions, DownloadOptions } from './core/base-service.js';
@@ -74,4 +77,3 @@ export { RequestHandler } from './core/request/index.js';
74
77
  export { TokenManager } from './core/token-manager.js';
75
78
  export { BaseService } from './core/base-service.js';
76
79
  export { defaultLogger } from './types/common.js';
77
- //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -52,15 +52,16 @@ export { WorkflowService } from './service/workitem/workflow.js';
52
52
  export { WorkHourService } from './service/workitem/workhour.js';
53
53
  export { ReviewService } from './service/workitem/review.js';
54
54
  export { EventService, InterceptConfigService } from './service/event/index.js';
55
+ export { AINodeService } from './service/ainode/index.js';
55
56
  // Auth helper options
56
57
  export { withAuth, withUserKey, withUserToken, withPluginToken } from './helpers/auth.js';
57
58
  // Rich text helper functions
58
59
  export { parseDocImages, extractImagesFromMultiTexts, inferImageMimeType, } from './helpers/richtext.js';
59
60
  // Event helper functions
60
61
  export { calculateEventSignature, verifyEventSignature, calculateEventSignatureSync, verifyEventSignatureSync, getEventCategory, getEventName, isListenEvent, isInterceptEvent, createInterceptResponse, } from './helpers/event.js';
62
+ export { AINodeRunningState } from './types/ainode.js';
61
63
  // 核心模块(供高级用户使用)
62
64
  export { RequestHandler } from './core/request/index.js';
63
65
  export { TokenManager } from './core/token-manager.js';
64
66
  export { BaseService } from './core/base-service.js';
65
67
  export { defaultLogger } from './types/common.js';
66
- //# sourceMappingURL=index.js.map
@@ -0,0 +1,106 @@
1
+ /**
2
+ * AI 节点服务
3
+ * 100% 参考 Meego API 文档
4
+ *
5
+ * 提供 AI 节点的查询、编辑和完成能力
6
+ */
7
+ import { BaseService, type ServiceRequestOptions } from '../../core/base-service.js';
8
+ import type { AINodeQueryRequest, AINodeQueryResponse, AINodeEditRequest, AINodeConfirmRequest } from '../../types/ainode.js';
9
+ /** API 路径 */
10
+ export declare const API_PATHS: {
11
+ /** 获取 AI 节点信息 */
12
+ QUERY: string;
13
+ /** 修改 AI 节点数据 */
14
+ EDIT: string;
15
+ /** 完成 AI 节点 */
16
+ CONFIRM: string;
17
+ };
18
+ /**
19
+ * AI 节点服务
20
+ *
21
+ * 提供 AI 节点的操作能力:
22
+ * - query: 获取 AI 节点信息
23
+ * - edit: 修改 AI 节点数据(状态、字段、表单)
24
+ * - confirm: 完成 AI 节点
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * // 查询 AI 节点信息
29
+ * const nodeInfo = await client.aiNode.query({
30
+ * project_key: 'xxx',
31
+ * work_item_id: 123456,
32
+ * state_key: 'state_1',
33
+ * });
34
+ *
35
+ * // 更新 AI 节点状态
36
+ * await client.aiNode.edit({
37
+ * work_item_id: 123456,
38
+ * node_uuid: 'node_state_1_123456',
39
+ * status: 'done',
40
+ * });
41
+ *
42
+ * // 完成 AI 节点
43
+ * await client.aiNode.confirm({
44
+ * project_key: 'xxx',
45
+ * work_item_id: 123456,
46
+ * state_key: 'state_1',
47
+ * });
48
+ * ```
49
+ */
50
+ export declare class AINodeService extends BaseService {
51
+ /**
52
+ * 获取 AI 节点信息
53
+ *
54
+ * 查询 AI 节点及对应的业务实体信息,包括:
55
+ * - 节点基本属性
56
+ * - 节点表单字段
57
+ * - 节点自定义字段
58
+ * - AI 执行状态
59
+ * - AI 属性配置
60
+ *
61
+ * @param request 请求参数
62
+ * @param request.project_key 空间 ID
63
+ * @param request.work_item_id 工作项实例 ID
64
+ * @param request.state_key 节点 ID(与 node_uuid 二选一)
65
+ * @param request.node_uuid 节点 UUID(与 state_key 二选一)
66
+ * @param options 请求选项
67
+ * @returns AI 节点信息
68
+ */
69
+ query(request: AINodeQueryRequest, options?: ServiceRequestOptions<AINodeQueryResponse>): Promise<AINodeQueryResponse>;
70
+ /**
71
+ * 修改 AI 节点数据
72
+ *
73
+ * 支持更新:
74
+ * - AI 运行状态(目前仅支持从 running 流转到 done)
75
+ * - 节点字段
76
+ * - 节点表单
77
+ *
78
+ * 注意:只有在 AI 节点的 ai_status 为 running 时,才能成功调用该接口
79
+ *
80
+ * @param request 请求参数
81
+ * @param request.project_key 空间 ID(可选)
82
+ * @param request.work_item_id 工作项实例 ID
83
+ * @param request.state_key 节点 ID(与 node_uuid 二选一)
84
+ * @param request.node_uuid 节点 UUID(与 state_key 二选一)
85
+ * @param request.status AI 运行状态(可选)
86
+ * @param request.node_fields 节点字段(可选)
87
+ * @param request.conform_fields 节点表单(可选)
88
+ * @param options 请求选项
89
+ */
90
+ edit(request: AINodeEditRequest, options?: ServiceRequestOptions<void>): Promise<void>;
91
+ /**
92
+ * 完成 AI 节点
93
+ *
94
+ * 用于 AI 应用流转 AI 节点。
95
+ *
96
+ * 注意:只有在 AI 节点的 ai_status 为 done 时,才能成功调用该接口
97
+ *
98
+ * @param request 请求参数
99
+ * @param request.project_key 空间 ID
100
+ * @param request.work_item_id 工作项实例 ID
101
+ * @param request.state_key 节点 ID(与 node_uuid 二选一)
102
+ * @param request.node_uuid 节点 UUID(与 state_key 二选一)
103
+ * @param options 请求选项
104
+ */
105
+ confirm(request: AINodeConfirmRequest, options?: ServiceRequestOptions<void>): Promise<void>;
106
+ }
@@ -0,0 +1,111 @@
1
+ /**
2
+ * AI 节点服务
3
+ * 100% 参考 Meego API 文档
4
+ *
5
+ * 提供 AI 节点的查询、编辑和完成能力
6
+ */
7
+ import { BaseService } from '../../core/base-service.js';
8
+ /** API 路径 */
9
+ export const API_PATHS = {
10
+ /** 获取 AI 节点信息 */
11
+ QUERY: '/open_api/ai_node/query',
12
+ /** 修改 AI 节点数据 */
13
+ EDIT: '/open_api/ai_node/edit',
14
+ /** 完成 AI 节点 */
15
+ CONFIRM: '/open_api/ai_node/confirm',
16
+ };
17
+ /**
18
+ * AI 节点服务
19
+ *
20
+ * 提供 AI 节点的操作能力:
21
+ * - query: 获取 AI 节点信息
22
+ * - edit: 修改 AI 节点数据(状态、字段、表单)
23
+ * - confirm: 完成 AI 节点
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * // 查询 AI 节点信息
28
+ * const nodeInfo = await client.aiNode.query({
29
+ * project_key: 'xxx',
30
+ * work_item_id: 123456,
31
+ * state_key: 'state_1',
32
+ * });
33
+ *
34
+ * // 更新 AI 节点状态
35
+ * await client.aiNode.edit({
36
+ * work_item_id: 123456,
37
+ * node_uuid: 'node_state_1_123456',
38
+ * status: 'done',
39
+ * });
40
+ *
41
+ * // 完成 AI 节点
42
+ * await client.aiNode.confirm({
43
+ * project_key: 'xxx',
44
+ * work_item_id: 123456,
45
+ * state_key: 'state_1',
46
+ * });
47
+ * ```
48
+ */
49
+ export class AINodeService extends BaseService {
50
+ /**
51
+ * 获取 AI 节点信息
52
+ *
53
+ * 查询 AI 节点及对应的业务实体信息,包括:
54
+ * - 节点基本属性
55
+ * - 节点表单字段
56
+ * - 节点自定义字段
57
+ * - AI 执行状态
58
+ * - AI 属性配置
59
+ *
60
+ * @param request 请求参数
61
+ * @param request.project_key 空间 ID
62
+ * @param request.work_item_id 工作项实例 ID
63
+ * @param request.state_key 节点 ID(与 node_uuid 二选一)
64
+ * @param request.node_uuid 节点 UUID(与 state_key 二选一)
65
+ * @param options 请求选项
66
+ * @returns AI 节点信息
67
+ */
68
+ async query(request, options) {
69
+ return this.post(API_PATHS.QUERY, request, options);
70
+ }
71
+ /**
72
+ * 修改 AI 节点数据
73
+ *
74
+ * 支持更新:
75
+ * - AI 运行状态(目前仅支持从 running 流转到 done)
76
+ * - 节点字段
77
+ * - 节点表单
78
+ *
79
+ * 注意:只有在 AI 节点的 ai_status 为 running 时,才能成功调用该接口
80
+ *
81
+ * @param request 请求参数
82
+ * @param request.project_key 空间 ID(可选)
83
+ * @param request.work_item_id 工作项实例 ID
84
+ * @param request.state_key 节点 ID(与 node_uuid 二选一)
85
+ * @param request.node_uuid 节点 UUID(与 state_key 二选一)
86
+ * @param request.status AI 运行状态(可选)
87
+ * @param request.node_fields 节点字段(可选)
88
+ * @param request.conform_fields 节点表单(可选)
89
+ * @param options 请求选项
90
+ */
91
+ async edit(request, options) {
92
+ await this.post(API_PATHS.EDIT, request, options);
93
+ }
94
+ /**
95
+ * 完成 AI 节点
96
+ *
97
+ * 用于 AI 应用流转 AI 节点。
98
+ *
99
+ * 注意:只有在 AI 节点的 ai_status 为 done 时,才能成功调用该接口
100
+ *
101
+ * @param request 请求参数
102
+ * @param request.project_key 空间 ID
103
+ * @param request.work_item_id 工作项实例 ID
104
+ * @param request.state_key 节点 ID(与 node_uuid 二选一)
105
+ * @param request.node_uuid 节点 UUID(与 state_key 二选一)
106
+ * @param options 请求选项
107
+ */
108
+ async confirm(request, options) {
109
+ await this.post(API_PATHS.CONFIRM, request, options);
110
+ }
111
+ }
@@ -93,4 +93,3 @@ export declare class AuthService {
93
93
  */
94
94
  clearAllTokens(): void;
95
95
  }
96
- //# sourceMappingURL=index.d.ts.map
@@ -160,4 +160,3 @@ export class AuthService {
160
160
  this.tokenManager.clearAllTokens();
161
161
  }
162
162
  }
163
- //# sourceMappingURL=index.js.map
@@ -34,4 +34,3 @@ export declare class ConfigBasicService extends BaseService {
34
34
  */
35
35
  updateWorkItemTypeConfig(projectKey: string, workItemTypeKey: string, request: UpdateWorkItemTypeConfigRequest, options?: ServiceRequestOptions<void>): Promise<void>;
36
36
  }
37
- //# sourceMappingURL=basic.d.ts.map
@@ -51,4 +51,3 @@ export class ConfigBasicService extends BaseService {
51
51
  });
52
52
  }
53
53
  }
54
- //# sourceMappingURL=basic.js.map
@@ -24,4 +24,3 @@ export declare class ConfigService extends BaseService {
24
24
  readonly template: ConfigTemplateService;
25
25
  constructor(requestHandler: RequestHandler);
26
26
  }
27
- //# sourceMappingURL=config.d.ts.map
@@ -31,4 +31,3 @@ export class ConfigService extends BaseService {
31
31
  this.template = new ConfigTemplateService(requestHandler);
32
32
  }
33
33
  }
34
- //# sourceMappingURL=config.js.map
@@ -47,4 +47,3 @@ export declare class ConfigFieldService extends BaseService {
47
47
  */
48
48
  update(projectKey: string, workItemTypeKey: string, request: UpdateCustomFieldRequest, options?: ServiceRequestOptions<void>): Promise<void>;
49
49
  }
50
- //# sourceMappingURL=field.d.ts.map
@@ -71,4 +71,3 @@ export class ConfigFieldService extends BaseService {
71
71
  });
72
72
  }
73
73
  }
74
- //# sourceMappingURL=field.js.map
@@ -50,4 +50,3 @@ export declare class ConfigRelationService extends BaseService {
50
50
  */
51
51
  remove(request: DeleteWorkItemRelationRequest, options?: ServiceRequestOptions<void>): Promise<void>;
52
52
  }
53
- //# sourceMappingURL=relation.d.ts.map
@@ -63,4 +63,3 @@ export class ConfigRelationService extends BaseService {
63
63
  await this.deleteWithBody(API_PATHS.DELETE, request, options);
64
64
  }
65
65
  }
66
- //# sourceMappingURL=relation.js.map