@sireai/optimus 0.1.40 → 0.1.43

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 (85) hide show
  1. package/dist/cli/optimus.js +425 -58
  2. package/dist/cli/optimus.js.map +1 -1
  3. package/dist/config/load-config.js +8 -1
  4. package/dist/config/load-config.js.map +1 -1
  5. package/dist/integrations/feishu/feishu-doc-service.d.ts +14 -2
  6. package/dist/integrations/feishu/feishu-doc-service.js +33 -12
  7. package/dist/integrations/feishu/feishu-doc-service.js.map +1 -1
  8. package/dist/integrations/feishu/feishu-document-reader.d.ts +33 -0
  9. package/dist/integrations/feishu/feishu-document-reader.js +597 -0
  10. package/dist/integrations/feishu/feishu-document-reader.js.map +1 -0
  11. package/dist/integrations/jira/jira-access-manager.d.ts +1 -0
  12. package/dist/integrations/jira/jira-access-manager.js +24 -0
  13. package/dist/integrations/jira/jira-access-manager.js.map +1 -1
  14. package/dist/integrations/jira/jira-cli.js +19 -3
  15. package/dist/integrations/jira/jira-cli.js.map +1 -1
  16. package/dist/integrations/jira/jira-submit.js +5 -18
  17. package/dist/integrations/jira/jira-submit.js.map +1 -1
  18. package/dist/integrations/sentry/sentry-cli.js +18 -2
  19. package/dist/integrations/sentry/sentry-cli.js.map +1 -1
  20. package/dist/problem-solving-core/codex/codex-runner.d.ts +2 -0
  21. package/dist/problem-solving-core/codex/codex-runner.js +46 -36
  22. package/dist/problem-solving-core/codex/codex-runner.js.map +1 -1
  23. package/dist/task-environment/delivery/delivery-warning-copy.d.ts +2 -0
  24. package/dist/task-environment/delivery/delivery-warning-copy.js +24 -0
  25. package/dist/task-environment/delivery/delivery-warning-copy.js.map +1 -0
  26. package/dist/task-environment/delivery/feishu-analysis-doc-service.d.ts +32 -1
  27. package/dist/task-environment/delivery/feishu-analysis-doc-service.js +351 -7
  28. package/dist/task-environment/delivery/feishu-analysis-doc-service.js.map +1 -1
  29. package/dist/task-environment/delivery/feishu-card-primitives.d.ts +33 -0
  30. package/dist/task-environment/delivery/feishu-card-primitives.js +95 -0
  31. package/dist/task-environment/delivery/feishu-card-primitives.js.map +1 -0
  32. package/dist/task-environment/delivery/feishu-card-renderer.d.ts +1 -0
  33. package/dist/task-environment/delivery/feishu-card-renderer.js +38 -73
  34. package/dist/task-environment/delivery/feishu-card-renderer.js.map +1 -1
  35. package/dist/task-environment/delivery/feishu-content/feishu-copy-config.js +1 -0
  36. package/dist/task-environment/delivery/feishu-content/feishu-copy-config.js.map +1 -1
  37. package/dist/task-environment/delivery/feishu-notifier.d.ts +5 -0
  38. package/dist/task-environment/delivery/feishu-notifier.js +107 -38
  39. package/dist/task-environment/delivery/feishu-notifier.js.map +1 -1
  40. package/dist/task-environment/delivery/feishu-templates/analysis-message-template.js +3 -0
  41. package/dist/task-environment/delivery/feishu-templates/analysis-message-template.js.map +1 -1
  42. package/dist/task-environment/delivery/pm-feishu-card-renderer.d.ts +19 -0
  43. package/dist/task-environment/delivery/pm-feishu-card-renderer.js +177 -0
  44. package/dist/task-environment/delivery/pm-feishu-card-renderer.js.map +1 -0
  45. package/dist/task-environment/delivery/sentry-feishu-card-renderer.d.ts +1 -0
  46. package/dist/task-environment/delivery/sentry-feishu-card-renderer.js +33 -70
  47. package/dist/task-environment/delivery/sentry-feishu-card-renderer.js.map +1 -1
  48. package/dist/task-environment/delivery/task-delivery-service.d.ts +6 -1
  49. package/dist/task-environment/delivery/task-delivery-service.js +142 -10
  50. package/dist/task-environment/delivery/task-delivery-service.js.map +1 -1
  51. package/dist/task-environment/delivery/task-publication-service.d.ts +1 -0
  52. package/dist/task-environment/delivery/task-publication-service.js +22 -0
  53. package/dist/task-environment/delivery/task-publication-service.js.map +1 -1
  54. package/dist/task-environment/intake/manual-problem-intake.js +54 -0
  55. package/dist/task-environment/intake/manual-problem-intake.js.map +1 -1
  56. package/dist/task-environment/orchestration/execution-context-assembler.d.ts +1 -0
  57. package/dist/task-environment/orchestration/execution-context-assembler.js +58 -3
  58. package/dist/task-environment/orchestration/execution-context-assembler.js.map +1 -1
  59. package/dist/task-environment/orchestration/task-orchestrator.d.ts +1 -0
  60. package/dist/task-environment/orchestration/task-orchestrator.js +41 -5
  61. package/dist/task-environment/orchestration/task-orchestrator.js.map +1 -1
  62. package/dist/task-environment/orchestration/task-package-inputs.d.ts +2 -0
  63. package/dist/task-environment/orchestration/task-package-inputs.js +83 -0
  64. package/dist/task-environment/orchestration/task-package-inputs.js.map +1 -0
  65. package/dist/task-environment/orchestration/task-runtime-policy.d.ts +4 -0
  66. package/dist/task-environment/orchestration/task-runtime-policy.js +38 -0
  67. package/dist/task-environment/orchestration/task-runtime-policy.js.map +1 -0
  68. package/dist/task-environment/result-paths.d.ts +9 -0
  69. package/dist/task-environment/result-paths.js +36 -0
  70. package/dist/task-environment/result-paths.js.map +1 -0
  71. package/dist/types.d.ts +45 -1
  72. package/package.json +1 -1
  73. package/task-harnesses/bugfix/ACCEPT.md +3 -2
  74. package/task-harnesses/bugfix/CONSTRAINTS.md +10 -4
  75. package/task-harnesses/bugfix/EVOLUTION.md +2 -8
  76. package/task-harnesses/bugfix/ROLE.md +7 -11
  77. package/task-harnesses/bugfix/STANDARD.md +81 -0
  78. package/task-harnesses/pm/ACCEPT.md +66 -0
  79. package/task-harnesses/pm/CONSTRAINTS.md +60 -0
  80. package/task-harnesses/pm/CONTEXT.md +50 -0
  81. package/task-harnesses/pm/EVOLUTION.md +77 -0
  82. package/task-harnesses/pm/ROLE.md +44 -0
  83. package/task-harnesses/pm/STANDARD.md +483 -0
  84. package/task-harnesses/pm/manifest.json +13 -0
  85. package/task-harnesses/registry.json +4 -0
@@ -1,13 +1,22 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { basename } from "node:path";
3
+ import { FeishuIntegrationError } from "../../integrations/feishu/feishu-client.js";
1
4
  import { FeishuDocumentService as DefaultFeishuDocumentService } from "../../integrations/feishu/feishu-doc-service.js";
5
+ import { FeishuDocumentReader } from "../../integrations/feishu/feishu-document-reader.js";
2
6
  import { FeishuUserService } from "../../integrations/feishu/feishu-user-service.js";
7
+ import { describeDeliveryWarning } from "./delivery-warning-copy.js";
3
8
  const FEISHU_PUBLISH_TIMEOUT_MS = 30_000;
4
9
  export class FeishuAnalysisDocService {
5
10
  documentService;
11
+ documentReader;
6
12
  userService;
7
13
  constructor(options = {}) {
8
14
  this.documentService = options.documentService ?? new DefaultFeishuDocumentService({
9
15
  ...(options.config ? { config: options.config } : {})
10
16
  });
17
+ this.documentReader = options.documentReader ?? new FeishuDocumentReader({
18
+ ...(options.config ? { config: options.config } : {})
19
+ });
11
20
  this.userService = options.userService ?? new FeishuUserService({
12
21
  ...(options.config ? { config: options.config } : {})
13
22
  });
@@ -17,7 +26,12 @@ export class FeishuAnalysisDocService {
17
26
  return { bundle, status: "skipped", reason: "not_analysis_only" };
18
27
  }
19
28
  if (bundle.summary.analysisDocUrl?.trim()) {
20
- return { bundle, status: "skipped", reason: "analysis_doc_already_present" };
29
+ const enriched = await this.enrichExistingAnalysisDocBundle(bundle);
30
+ return {
31
+ bundle: enriched.bundle,
32
+ status: "skipped",
33
+ reason: enriched.reason ?? "analysis_doc_already_present"
34
+ };
21
35
  }
22
36
  const resultMdPath = bundle.artifacts.resultMd?.trim();
23
37
  if (!resultMdPath) {
@@ -29,22 +43,28 @@ export class FeishuAnalysisDocService {
29
43
  const title = this.buildTitle(bundle);
30
44
  try {
31
45
  return await this.withTimeout(async () => {
32
- const created = await this.documentService.createMarkdownDocument({
33
- title,
34
- markdownPath: resultMdPath
35
- });
46
+ const published = await this.buildPublishedContent(resultMdPath, bundle);
47
+ const created = await this.createAnalysisDocument(title, resultMdPath, published, bundle);
48
+ const artifactAttachment = await this.attachArtifactsBestEffort(created, bundle);
36
49
  const permissionGrantError = await this.configureAccessBestEffort(created, bundle.summary.qAssignee);
50
+ const combinedReason = [artifactAttachment.error, permissionGrantError].filter((value) => Boolean(value)).join("; ");
37
51
  return {
38
52
  bundle: {
39
53
  ...bundle,
40
54
  summary: {
41
55
  ...bundle.summary,
42
- analysisDocUrl: created.url
56
+ analysisDocUrl: created.url,
57
+ ...(artifactAttachment.prototypeUrls?.prototypePreviewUrl
58
+ ? { prototypePreviewUrl: artifactAttachment.prototypeUrls.prototypePreviewUrl }
59
+ : {}),
60
+ ...(artifactAttachment.prototypeUrls?.prototypeDownloadUrl
61
+ ? { prototypeDownloadUrl: artifactAttachment.prototypeUrls.prototypeDownloadUrl }
62
+ : {})
43
63
  }
44
64
  },
45
65
  status: "uploaded",
46
66
  url: created.url,
47
- ...(permissionGrantError ? { reason: permissionGrantError } : {})
67
+ ...(combinedReason ? { reason: combinedReason } : {})
48
68
  };
49
69
  }, FEISHU_PUBLISH_TIMEOUT_MS, "analysis_doc_publish_timeout");
50
70
  }
@@ -62,6 +82,330 @@ export class FeishuAnalysisDocService {
62
82
  const compactTitle = normalizedTitle.length > 80 ? `${normalizedTitle.slice(0, 77)}...` : normalizedTitle;
63
83
  return `Optimus 分析|${compactTitle}`;
64
84
  }
85
+ async buildPublishedContent(resultMdPath, bundle) {
86
+ if (bundle.taskType === "pm") {
87
+ return {
88
+ content: this.buildPmPublishedHtml(bundle),
89
+ contentType: "html"
90
+ };
91
+ }
92
+ const markdown = await readFile(resultMdPath, "utf8");
93
+ const warnings = bundle.warnings;
94
+ if (!warnings?.length) {
95
+ return {
96
+ content: markdown,
97
+ contentType: "markdown"
98
+ };
99
+ }
100
+ const warningLines = warnings.map((warning) => {
101
+ return `- \`${warning}\`:${describeDeliveryWarning(warning)}`;
102
+ }).join("\n");
103
+ const warningSection = [
104
+ "## 交付注意事项",
105
+ "以下交付校验项尚未满足,建议在继续流转前先确认:",
106
+ warningLines
107
+ ].join("\n");
108
+ const normalized = markdown.trimStart();
109
+ const headingMatch = normalized.match(/^(#\s+.+)\r?\n/u);
110
+ if (!headingMatch?.[1]) {
111
+ return {
112
+ content: `${warningSection}\n\n${markdown}`,
113
+ contentType: "markdown"
114
+ };
115
+ }
116
+ const leadingOffset = markdown.length - normalized.length;
117
+ const headingStart = leadingOffset;
118
+ const headingEnd = headingStart + headingMatch[0].length;
119
+ return {
120
+ content: `${markdown.slice(0, headingEnd)}\n${warningSection}\n\n${markdown.slice(headingEnd).trimStart()}`,
121
+ contentType: "markdown"
122
+ };
123
+ }
124
+ buildPmPublishedHtml(bundle) {
125
+ const sourceUrl = bundle.summary.sourceUrl?.trim();
126
+ const sections = [
127
+ "<h2>需求文档</h2>",
128
+ sourceUrl
129
+ ? `<ul><li>查看需求文档:<a href="${this.escapeHtmlAttribute(sourceUrl)}">${this.escapeHtml(sourceUrl)}</a></li></ul>`
130
+ : "<ul><li>查看需求文档:未提供</li></ul>",
131
+ "<h2>产物</h2>",
132
+ "<p>以下为交付产物。每项先给出一句说明,下一行附对应文件。</p>"
133
+ ];
134
+ const warnings = bundle.warnings;
135
+ if (warnings?.length) {
136
+ const warningItems = warnings.map((warning) => {
137
+ return `<li><code>${this.escapeHtml(warning)}</code>:${this.escapeHtml(describeDeliveryWarning(warning))}</li>`;
138
+ }).join("");
139
+ sections.push("<h2>交付注意事项</h2>", "<p>以下交付校验项尚未满足,建议在继续流转前先确认:</p>", `<ul>${warningItems}</ul>`);
140
+ }
141
+ return sections.join("");
142
+ }
143
+ buildPmFallbackMarkdown(bundle) {
144
+ const sourceUrl = bundle.summary.sourceUrl?.trim();
145
+ const sections = [
146
+ "## 需求文档",
147
+ sourceUrl ? `- 查看需求文档:${sourceUrl}` : "- 查看需求文档:未提供",
148
+ "",
149
+ "## 产物",
150
+ "以下为交付产物。每项先给出一句说明,下一行附对应文件。"
151
+ ];
152
+ const warnings = bundle.warnings;
153
+ if (warnings?.length) {
154
+ const warningLines = warnings.map((warning) => {
155
+ return `- \`${warning}\`:${describeDeliveryWarning(warning)}`;
156
+ }).join("\n");
157
+ sections.push("", "## 交付注意事项", "以下交付校验项尚未满足,建议在继续流转前先确认:", warningLines);
158
+ }
159
+ return `${sections.join("\n").trim()}\n`;
160
+ }
161
+ describePmArtifact(fileName) {
162
+ const normalized = fileName.trim().toLowerCase();
163
+ if (normalized === "prototype.html") {
164
+ return "可交互 HTML 原型";
165
+ }
166
+ if (normalized === "result.md") {
167
+ return "规则补充说明";
168
+ }
169
+ if (normalized === "annotations.json") {
170
+ return "结构化注解";
171
+ }
172
+ if (normalized === "requirement-map.md") {
173
+ return "需求映射草稿";
174
+ }
175
+ return "补充材料";
176
+ }
177
+ escapeHtml(value) {
178
+ return value
179
+ .replace(/&/gu, "&amp;")
180
+ .replace(/</gu, "&lt;")
181
+ .replace(/>/gu, "&gt;")
182
+ .replace(/"/gu, "&quot;")
183
+ .replace(/'/gu, "&#39;");
184
+ }
185
+ escapeHtmlAttribute(value) {
186
+ return this.escapeHtml(value);
187
+ }
188
+ async createAnalysisDocument(title, resultMdPath, published, bundle) {
189
+ if (bundle.taskType === "pm") {
190
+ return await this.createPmAnalysisDocument(title, resultMdPath, published, bundle);
191
+ }
192
+ if (!this.documentService.createMarkdownDocumentFromContent) {
193
+ return await this.documentService.createMarkdownDocument({
194
+ title,
195
+ markdownPath: resultMdPath
196
+ });
197
+ }
198
+ try {
199
+ return await this.documentService.createMarkdownDocumentFromContent({
200
+ title,
201
+ markdown: published.content,
202
+ contentType: published.contentType
203
+ });
204
+ }
205
+ catch (error) {
206
+ if (!(bundle.taskType === "pm" && published.contentType === "html" && this.isUnsupportedBlockCreateError(error))) {
207
+ throw error;
208
+ }
209
+ return await this.documentService.createMarkdownDocumentFromContent({
210
+ title,
211
+ markdown: this.buildPmFallbackMarkdown(bundle),
212
+ contentType: "markdown"
213
+ });
214
+ }
215
+ }
216
+ async createPmAnalysisDocument(title, resultMdPath, published, bundle) {
217
+ if (!this.documentService.createEmptyDocument || !this.documentService.appendContentToDocument) {
218
+ return await this.documentService.createMarkdownDocument({
219
+ title,
220
+ markdownPath: resultMdPath
221
+ });
222
+ }
223
+ const created = await this.documentService.createEmptyDocument(title);
224
+ try {
225
+ await this.documentService.appendContentToDocument({
226
+ documentToken: created.token,
227
+ content: published.content,
228
+ contentType: published.contentType
229
+ });
230
+ return created;
231
+ }
232
+ catch (error) {
233
+ if (!(published.contentType === "html" && this.isUnsupportedBlockCreateError(error))) {
234
+ throw error;
235
+ }
236
+ await this.documentService.appendContentToDocument({
237
+ documentToken: created.token,
238
+ content: this.buildPmFallbackMarkdown(bundle),
239
+ contentType: "markdown"
240
+ });
241
+ return created;
242
+ }
243
+ }
244
+ isUnsupportedBlockCreateError(error) {
245
+ return error instanceof FeishuIntegrationError
246
+ && error.diagnostics.status === 400
247
+ && error.diagnostics.code === 1770029;
248
+ }
249
+ async enrichExistingAnalysisDocBundle(bundle) {
250
+ const analysisDocUrl = bundle.summary.analysisDocUrl?.trim();
251
+ if (!analysisDocUrl) {
252
+ return { bundle };
253
+ }
254
+ const hasPrototypeUrls = Boolean(bundle.summary.prototypePreviewUrl?.trim() && bundle.summary.prototypeDownloadUrl?.trim());
255
+ if (hasPrototypeUrls) {
256
+ return { bundle };
257
+ }
258
+ const shouldRecoverPrototypeUrls = bundle.taskType === "pm" || Boolean(bundle.artifacts.prototypeHtml?.trim());
259
+ if (!shouldRecoverPrototypeUrls || !this.documentReader.isConfigured()) {
260
+ return { bundle };
261
+ }
262
+ try {
263
+ const document = await this.documentReader.readFromUrl(analysisDocUrl);
264
+ const prototypeFile = document.referenceMaterials?.find((reference) => {
265
+ const normalizedTitle = reference.title.trim().toLowerCase();
266
+ return reference.type === "file" && reference.token?.trim() && normalizedTitle === "prototype.html";
267
+ });
268
+ const prototypeUrls = this.resolvePrototypeUrlsFromReference(analysisDocUrl, prototypeFile);
269
+ if (!prototypeUrls.prototypePreviewUrl && !prototypeUrls.prototypeDownloadUrl) {
270
+ return { bundle };
271
+ }
272
+ return {
273
+ bundle: {
274
+ ...bundle,
275
+ summary: {
276
+ ...bundle.summary,
277
+ ...(prototypeUrls.prototypePreviewUrl ? { prototypePreviewUrl: prototypeUrls.prototypePreviewUrl } : {}),
278
+ ...(prototypeUrls.prototypeDownloadUrl ? { prototypeDownloadUrl: prototypeUrls.prototypeDownloadUrl } : {})
279
+ }
280
+ }
281
+ };
282
+ }
283
+ catch (error) {
284
+ return {
285
+ bundle,
286
+ reason: `analysis_doc_prototype_url_recovery_failed: ${error instanceof Error ? error.message : String(error)}`
287
+ };
288
+ }
289
+ }
290
+ async attachArtifactsBestEffort(createdDocument, bundle) {
291
+ if (!this.documentService.uploadFileToDocument) {
292
+ return {};
293
+ }
294
+ const attachments = this.collectArtifactAttachments(bundle);
295
+ if (attachments.length === 0) {
296
+ return {};
297
+ }
298
+ const errors = [];
299
+ let prototypeUrls;
300
+ for (const attachment of attachments) {
301
+ try {
302
+ if (bundle.taskType === "pm" && this.documentService.appendContentToDocument) {
303
+ await this.documentService.appendContentToDocument({
304
+ documentToken: createdDocument.token,
305
+ content: this.describePmArtifactLine(attachment.fileName),
306
+ contentType: "markdown"
307
+ });
308
+ }
309
+ const uploaded = await this.documentService.uploadFileToDocument({
310
+ documentToken: createdDocument.token,
311
+ filePath: attachment.filePath,
312
+ fileName: attachment.fileName
313
+ });
314
+ if (attachment.fileName.trim().toLowerCase() === "prototype.html") {
315
+ prototypeUrls = this.resolvePrototypeUrlsFromUpload(createdDocument.url, uploaded.fileToken);
316
+ }
317
+ }
318
+ catch (error) {
319
+ errors.push(`${attachment.errorKey}: ${error instanceof Error ? error.message : String(error)}`);
320
+ }
321
+ }
322
+ return {
323
+ ...(errors.length > 0 ? { error: errors.join("; ") } : {}),
324
+ ...(prototypeUrls ? { prototypeUrls } : {})
325
+ };
326
+ }
327
+ collectArtifactAttachments(bundle) {
328
+ const attachments = [];
329
+ const seen = new Set();
330
+ const push = (filePath, preferredFileName) => {
331
+ const normalized = filePath?.trim();
332
+ if (!normalized || seen.has(normalized)) {
333
+ return;
334
+ }
335
+ seen.add(normalized);
336
+ const rawFileName = preferredFileName?.trim() || basename(normalized);
337
+ const fileName = rawFileName;
338
+ const errorKey = rawFileName.toLowerCase() === "prototype.html"
339
+ ? "analysis_doc_prototype_attach_failed"
340
+ : `analysis_doc_attachment_failed:${rawFileName}`;
341
+ attachments.push({
342
+ filePath: normalized,
343
+ fileName,
344
+ errorKey
345
+ });
346
+ };
347
+ push(bundle.artifacts.resultMd, "result.md");
348
+ push(bundle.artifacts.prototypeHtml, "prototype.html");
349
+ for (const extraPath of bundle.artifacts.extras ?? []) {
350
+ push(extraPath);
351
+ }
352
+ return attachments;
353
+ }
354
+ describePmArtifactLine(fileName) {
355
+ const purpose = this.describePmArtifact(fileName);
356
+ return purpose === "补充材料"
357
+ ? `- \`${fileName}\`:补充材料。`
358
+ : `- \`${fileName}\`:${purpose}。`;
359
+ }
360
+ resolvePrototypeUrlsFromUpload(analysisDocUrl, fileToken) {
361
+ const normalizedToken = fileToken?.trim();
362
+ if (!normalizedToken) {
363
+ return {};
364
+ }
365
+ const previewUrl = this.buildFeishuFileUrl(analysisDocUrl, normalizedToken);
366
+ return {
367
+ prototypePreviewUrl: previewUrl,
368
+ prototypeDownloadUrl: this.buildFeishuFileDownloadUrl(previewUrl)
369
+ };
370
+ }
371
+ resolvePrototypeUrlsFromReference(analysisDocUrl, reference) {
372
+ const previewUrl = reference?.token?.trim()
373
+ ? this.buildFeishuFileUrl(analysisDocUrl, reference.token.trim())
374
+ : reference?.url?.trim();
375
+ if (!previewUrl) {
376
+ return {};
377
+ }
378
+ return {
379
+ prototypePreviewUrl: previewUrl,
380
+ prototypeDownloadUrl: this.buildFeishuFileDownloadUrl(previewUrl)
381
+ };
382
+ }
383
+ buildFeishuFileUrl(analysisDocUrl, fileToken) {
384
+ const origin = this.resolveFeishuWebOrigin(analysisDocUrl);
385
+ return `${origin}/file/${encodeURIComponent(fileToken)}`;
386
+ }
387
+ buildFeishuFileDownloadUrl(previewUrl) {
388
+ try {
389
+ const url = new URL(previewUrl);
390
+ url.searchParams.set("download", "1");
391
+ return url.toString();
392
+ }
393
+ catch {
394
+ return previewUrl;
395
+ }
396
+ }
397
+ resolveFeishuWebOrigin(analysisDocUrl) {
398
+ const normalized = analysisDocUrl?.trim();
399
+ if (normalized) {
400
+ try {
401
+ return new URL(normalized).origin;
402
+ }
403
+ catch {
404
+ // fall through
405
+ }
406
+ }
407
+ return "https://mi.feishu.cn";
408
+ }
65
409
  async configureAccessBestEffort(createdDocument, qAssignee) {
66
410
  const errors = [];
67
411
  const globalShareError = await this.enableTenantEditableShareBestEffort(createdDocument);
@@ -1 +1 @@
1
- {"version":3,"file":"feishu-analysis-doc-service.js","sourceRoot":"","sources":["../../../src/task-environment/delivery/feishu-analysis-doc-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feishu-analysis-doc-service.js","sourceRoot":"","sources":["../../../src/task-environment/delivery/feishu-analysis-doc-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,qBAAqB,IAAI,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AACxH,OAAO,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AAErF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAErE,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAkCzC,MAAM,OAAO,wBAAwB;IAClB,eAAe,CAA6B;IAC5C,cAAc,CAA6D;IAC3E,WAAW,CAA4D;IAExF,YAAmB,UAA2C,EAAE;QAC9D,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,IAAI,4BAA4B,CAAC;YACjF,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,oBAAoB,CAAC;YACvE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,iBAAiB,CAAC;YAC9D,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,MAA0B;QACrD,IAAI,MAAM,CAAC,OAAO,KAAK,eAAe,EAAE,CAAC;YACvC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;QACpE,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,MAAM,CAAC,CAAC;YACpE,OAAO;gBACL,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,8BAA8B;aAC1D,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;QACvD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,EAAE,CAAC;YACzC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;QAC7E,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;gBACvC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;gBACzE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;gBAC1F,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACjF,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACrG,MAAM,cAAc,GAAG,CAAC,kBAAkB,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtI,OAAO;oBACL,MAAM,EAAE;wBACN,GAAG,MAAM;wBACT,OAAO,EAAE;4BACP,GAAG,MAAM,CAAC,OAAO;4BACjB,cAAc,EAAE,OAAO,CAAC,GAAG;4BAC3B,GAAG,CAAC,kBAAkB,CAAC,aAAa,EAAE,mBAAmB;gCACvD,CAAC,CAAC,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,aAAa,CAAC,mBAAmB,EAAE;gCAC/E,CAAC,CAAC,EAAE,CAAC;4BACP,GAAG,CAAC,kBAAkB,CAAC,aAAa,EAAE,oBAAoB;gCACxD,CAAC,CAAC,EAAE,oBAAoB,EAAE,kBAAkB,CAAC,aAAa,CAAC,oBAAoB,EAAE;gCACjF,CAAC,CAAC,EAAE,CAAC;yBACR;qBACF;oBACD,MAAM,EAAE,UAAU;oBAClB,GAAG,EAAE,OAAO,CAAC,GAAG;oBAChB,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACtD,CAAC;YACJ,CAAC,EAAE,yBAAyB,EAAE,8BAA8B,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,MAAM;gBACN,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC/D,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,MAA0B;QAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC;QAC/D,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9D,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC;QAC1G,OAAO,cAAc,YAAY,EAAE,CAAC;IACtC,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,YAAoB,EAAE,MAA0B;QAIlF,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC7B,OAAO;gBACL,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;gBAC1C,WAAW,EAAE,MAAM;aACpB,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YACtB,OAAO;gBACL,OAAO,EAAE,QAAQ;gBACjB,WAAW,EAAE,UAAU;aACxB,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YAC5C,OAAO,OAAO,OAAO,MAAM,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;QAChE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,cAAc,GAAG;YACrB,WAAW;YACX,0BAA0B;YAC1B,YAAY;SACb,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;QACxC,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACzD,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,GAAG,cAAc,OAAO,QAAQ,EAAE;gBAC3C,WAAW,EAAE,UAAU;aACxB,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAC1D,MAAM,YAAY,GAAG,aAAa,CAAC;QACnC,MAAM,UAAU,GAAG,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACzD,OAAO;YACL,OAAO,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,cAAc,OAAO,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,EAAE;YAC3G,WAAW,EAAE,UAAU;SACxB,CAAC;IACJ,CAAC;IAEO,oBAAoB,CAAC,MAA0B;QACrD,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG;YACf,eAAe;YACf,SAAS;gBACP,CAAC,CAAC,2BAA2B,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,gBAAgB;gBAC/G,CAAC,CAAC,8BAA8B;YAClC,aAAa;YACb,oCAAoC;SACrC,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,IAAI,QAAQ,EAAE,MAAM,EAAE,CAAC;YACrB,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC5C,OAAO,aAAa,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;YAClH,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACZ,QAAQ,CAAC,IAAI,CACX,iBAAiB,EACjB,iCAAiC,EACjC,OAAO,YAAY,OAAO,CAC3B,CAAC;QACJ,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAEO,uBAAuB,CAAC,MAA0B;QACxD,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG;YACf,SAAS;YACT,SAAS,CAAC,CAAC,CAAC,YAAY,SAAS,EAAE,CAAC,CAAC,CAAC,cAAc;YACpD,EAAE;YACF,OAAO;YACP,6BAA6B;SAC9B,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,IAAI,QAAQ,EAAE,MAAM,EAAE,CAAC;YACrB,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC5C,OAAO,OAAO,OAAO,MAAM,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;YAChE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,QAAQ,CAAC,IAAI,CACX,EAAE,EACF,WAAW,EACX,0BAA0B,EAC1B,YAAY,CACb,CAAC;QACJ,CAAC;QAED,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;IAC3C,CAAC;IACO,kBAAkB,CAAC,QAAgB;QACzC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACjD,IAAI,UAAU,KAAK,gBAAgB,EAAE,CAAC;YACpC,OAAO,aAAa,CAAC;QACvB,CAAC;QACD,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;YAC/B,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,UAAU,KAAK,kBAAkB,EAAE,CAAC;YACtC,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,IAAI,UAAU,KAAK,oBAAoB,EAAE,CAAC;YACxC,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,UAAU,CAAC,KAAa;QAC9B,OAAO,KAAK;aACT,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;aACvB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;aACtB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;aACtB,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;aACxB,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7B,CAAC;IAEO,mBAAmB,CAAC,KAAa;QACvC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAClC,KAAa,EACb,YAAoB,EACpB,SAAgE,EAChE,MAA0B;QAO1B,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC7B,OAAO,MAAM,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACrF,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,iCAAiC,EAAE,CAAC;YAC5D,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC;gBACvD,KAAK;gBACL,YAAY,EAAE,YAAY;aAC3B,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,iCAAiC,CAAC;gBAClE,KAAK;gBACL,QAAQ,EAAE,SAAS,CAAC,OAAO;gBAC3B,WAAW,EAAE,SAAS,CAAC,WAAW;aACnC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,IAAI,SAAS,CAAC,WAAW,KAAK,MAAM,IAAI,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACjH,MAAM,KAAK,CAAC;YACd,CAAC;YACD,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,iCAAiC,CAAC;gBAClE,KAAK;gBACL,QAAQ,EAAE,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC;gBAC9C,WAAW,EAAE,UAAU;aACxB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,wBAAwB,CACpC,KAAa,EACb,YAAoB,EACpB,SAAgE,EAChE,MAA0B;QAO1B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,uBAAuB,EAAE,CAAC;YAC/F,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC;gBACvD,KAAK;gBACL,YAAY,EAAE,YAAY;aAC3B,CAAC,CAAC;QACL,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACtE,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC;gBACjD,aAAa,EAAE,OAAO,CAAC,KAAK;gBAC5B,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,WAAW,EAAE,SAAS,CAAC,WAAW;aACnC,CAAC,CAAC;YACH,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,KAAK,MAAM,IAAI,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACrF,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC;gBACjD,aAAa,EAAE,OAAO,CAAC,KAAK;gBAC5B,OAAO,EAAE,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC;gBAC7C,WAAW,EAAE,UAAU;aACxB,CAAC,CAAC;YACH,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAEO,6BAA6B,CAAC,KAAc;QAClD,OAAO,KAAK,YAAY,sBAAsB;eACzC,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,GAAG;eAChC,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,OAAO,CAAC;IAC1C,CAAC;IAEO,KAAK,CAAC,+BAA+B,CAAC,MAA0B;QAItE,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;QAC7D,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,CAAC;QAED,MAAM,gBAAgB,GAAG,OAAO,CAC9B,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAC1F,CAAC;QACF,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,CAAC;QAED,MAAM,0BAA0B,GAAG,MAAM,CAAC,QAAQ,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/G,IAAI,CAAC,0BAA0B,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,EAAE,CAAC;YACvE,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACvE,MAAM,aAAa,GAAG,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;gBACpE,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAC7D,OAAO,SAAS,CAAC,IAAI,KAAK,MAAM,IAAI,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,eAAe,KAAK,gBAAgB,CAAC;YACtG,CAAC,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,IAAI,CAAC,iCAAiC,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;YAC5F,IAAI,CAAC,aAAa,CAAC,mBAAmB,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC;gBAC9E,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,CAAC;YACD,OAAO;gBACL,MAAM,EAAE;oBACN,GAAG,MAAM;oBACT,OAAO,EAAE;wBACP,GAAG,MAAM,CAAC,OAAO;wBACjB,GAAG,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,aAAa,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACxG,GAAG,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,aAAa,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC5G;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,MAAM;gBACN,MAAM,EAAE,+CAA+C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aAChH,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,yBAAyB,CACrC,eAIC,EACD,MAA0B;QAK1B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;YAC/C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;QAC5D,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,aAAwC,CAAC;QAC7C,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC;gBACH,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,uBAAuB,EAAE,CAAC;oBAC7E,MAAM,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC;wBACjD,aAAa,EAAE,eAAe,CAAC,KAAK;wBACpC,OAAO,EAAE,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,QAAQ,CAAC;wBACzD,WAAW,EAAE,UAAU;qBACxB,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC;oBAC/D,aAAa,EAAE,eAAe,CAAC,KAAK;oBACpC,QAAQ,EAAE,UAAU,CAAC,QAAQ;oBAC7B,QAAQ,EAAE,UAAU,CAAC,QAAQ;iBAC9B,CAAC,CAAC;gBACH,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,gBAAgB,EAAE,CAAC;oBAClE,aAAa,GAAG,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAC/F,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACnG,CAAC;QACH,CAAC;QAED,OAAO;YACL,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5C,CAAC;IACJ,CAAC;IAEO,0BAA0B,CAAC,MAA0B;QAK3D,MAAM,WAAW,GAIZ,EAAE,CAAC;QACR,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAE/B,MAAM,IAAI,GAAG,CAAC,QAA4B,EAAE,iBAA0B,EAAQ,EAAE;YAC9E,MAAM,UAAU,GAAG,QAAQ,EAAE,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBACxC,OAAO;YACT,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACrB,MAAM,WAAW,GAAG,iBAAiB,EAAE,IAAI,EAAE,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;YACtE,MAAM,QAAQ,GAAG,WAAW,CAAC;YAC7B,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE,KAAK,gBAAgB;gBAC7D,CAAC,CAAC,sCAAsC;gBACxC,CAAC,CAAC,kCAAkC,WAAW,EAAE,CAAC;YACpD,WAAW,CAAC,IAAI,CAAC;gBACf,QAAQ,EAAE,UAAU;gBACpB,QAAQ;gBACR,QAAQ;aACT,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;QACvD,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YACtD,IAAI,CAAC,SAAS,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,sBAAsB,CAAC,QAAgB;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAClD,OAAO,OAAO,KAAK,MAAM;YACvB,CAAC,CAAC,OAAO,QAAQ,UAAU;YAC3B,CAAC,CAAC,OAAO,QAAQ,MAAM,OAAO,GAAG,CAAC;IACtC,CAAC;IAEO,8BAA8B,CAAC,cAAkC,EAAE,SAA6B;QACtG,MAAM,eAAe,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;QAC5E,OAAO;YACL,mBAAmB,EAAE,UAAU;YAC/B,oBAAoB,EAAE,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC;SAClE,CAAC;IACJ,CAAC;IAEO,iCAAiC,CACvC,cAAkC,EAClC,SAGa;QAEb,MAAM,UAAU,GAAG,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;YACzC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACjE,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO;YACL,mBAAmB,EAAE,UAAU;YAC/B,oBAAoB,EAAE,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC;SAClE,CAAC;IACJ,CAAC;IAEO,kBAAkB,CAAC,cAAkC,EAAE,SAAiB;QAC9E,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC;QAC3D,OAAO,GAAG,MAAM,SAAS,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;IAC3D,CAAC;IAEO,0BAA0B,CAAC,UAAkB;QACnD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;YAChC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YACtC,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,cAAkC;QAC/D,MAAM,UAAU,GAAG,cAAc,EAAE,IAAI,EAAE,CAAC;QAC1C,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;YACpC,CAAC;YAAC,MAAM,CAAC;gBACP,eAAe;YACjB,CAAC;QACH,CAAC;QACD,OAAO,sBAAsB,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,yBAAyB,CACrC,eAIC,EACD,SAA6C;QAE7C,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,mCAAmC,CAAC,eAAe,CAAC,CAAC;QACzF,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAClG,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,CAAC;IAEO,KAAK,CAAC,mCAAmC,CAAC,eAIjD;QACC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,6BAA6B,EAAE,CAAC;YACxD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC;gBACvD,aAAa,EAAE,eAAe,CAAC,KAAK;gBACpC,YAAY,EAAE,MAAM;gBACpB,eAAe,EAAE,iBAAiB;aACnC,CAAC,CAAC;YACH,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,sCAAsC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACxG,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,+BAA+B,CAC3C,eAIC,EACD,SAA6C;QAE7C,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,6BAA6B,EAAE,CAAC;YACtE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC;gBACvD,aAAa,EAAE,eAAe,CAAC,KAAK;gBACpC,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,QAAQ;gBACpB,IAAI,EAAE,MAAM;aACb,CAAC,CAAC;YACH,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,yCAAyC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3G,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,QAAgC;QAClE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;QACvC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1F,OAAO,UAAU,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,UAAkB;QACjD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,CAAC;YACrC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAEO,uBAAuB,CAAC,KAAyB;QACvD,MAAM,UAAU,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,UAAU,CAAC,WAAW,EAAE,CAAC;QAClC,CAAC;QACD,IAAI,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,OAAO,GAAG,UAAU,CAAC,WAAW,EAAE,aAAa,CAAC;QAClD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,WAAW,CAAI,SAA2B,EAAE,SAAiB,EAAE,MAAc;QACzF,OAAO,MAAM,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9C,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAC5B,CAAC,EAAE,SAAS,CAAC,CAAC;YAEd,KAAK,SAAS,EAAE;iBACb,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBACd,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACf,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,33 @@
1
+ export interface FeishuCardAction {
2
+ tag: "button";
3
+ text: {
4
+ tag: "plain_text";
5
+ content: string;
6
+ };
7
+ type?: "default" | "primary" | "danger";
8
+ url: string;
9
+ }
10
+ interface EscapeOptions {
11
+ escape: (value: string) => string;
12
+ }
13
+ interface ToneOptions extends EscapeOptions {
14
+ tone?: string | undefined;
15
+ resolveToneTextColor: (tone: string | undefined) => string;
16
+ }
17
+ export declare function buildMetadataFieldsBlock(fields: Array<Record<string, unknown>>): Record<string, unknown>;
18
+ export declare function buildDividerBlock(): Record<string, unknown>;
19
+ export declare function buildActionBlock(actions: FeishuCardAction[]): Record<string, unknown>;
20
+ export declare function buildField(label: string, value: string, options?: EscapeOptions & {
21
+ escapeValue?: boolean;
22
+ preferShort?: boolean;
23
+ }): Record<string, unknown>;
24
+ export declare function buildHeadlineBlock(value: string, options: ToneOptions): Record<string, unknown>;
25
+ export declare function buildInlineRowBlock(label: string, value: string, options: ToneOptions & {
26
+ escapeValue?: boolean;
27
+ emphasize?: boolean;
28
+ }): Record<string, unknown>;
29
+ export declare function buildNoteBlock(value: string, options: ToneOptions): Record<string, unknown>;
30
+ export declare function buildMetricsNoteBlock(value: string, options: EscapeOptions): Record<string, unknown>;
31
+ export declare function resolveCommonToneTextColor(tone: string | undefined): string;
32
+ export declare function isCompactFieldValue(value: string): boolean;
33
+ export {};
@@ -0,0 +1,95 @@
1
+ export function buildMetadataFieldsBlock(fields) {
2
+ return {
3
+ tag: "div",
4
+ fields
5
+ };
6
+ }
7
+ export function buildDividerBlock() {
8
+ return { tag: "hr" };
9
+ }
10
+ export function buildActionBlock(actions) {
11
+ return {
12
+ tag: "action",
13
+ actions
14
+ };
15
+ }
16
+ export function buildField(label, value, options = { escape: (text) => text }) {
17
+ const escapeValue = options.escapeValue ?? true;
18
+ const preferShort = options.preferShort ?? false;
19
+ return {
20
+ is_short: preferShort && isCompactFieldValue(value),
21
+ text: {
22
+ tag: "lark_md",
23
+ content: `**${label}**:${escapeValue ? options.escape(value) : value}`
24
+ }
25
+ };
26
+ }
27
+ export function buildHeadlineBlock(value, options) {
28
+ return {
29
+ tag: "div",
30
+ text: {
31
+ tag: "lark_md",
32
+ content: `<font color='${options.resolveToneTextColor(options.tone)}'>**${options.escape(value)}**</font>`
33
+ }
34
+ };
35
+ }
36
+ export function buildInlineRowBlock(label, value, options) {
37
+ const escapeValue = options.escapeValue ?? true;
38
+ const formattedValue = escapeValue ? options.escape(value) : value;
39
+ const content = options.emphasize
40
+ ? `**${label}**:<font color='${options.resolveToneTextColor(options.tone)}'>${formattedValue}</font>`
41
+ : `**${label}**:${formattedValue}`;
42
+ return {
43
+ tag: "div",
44
+ text: {
45
+ tag: "lark_md",
46
+ content
47
+ }
48
+ };
49
+ }
50
+ export function buildNoteBlock(value, options) {
51
+ const content = options.tone
52
+ ? `<font color='${options.resolveToneTextColor(options.tone)}'>${options.escape(value)}</font>`
53
+ : options.escape(value);
54
+ return {
55
+ tag: "note",
56
+ elements: [{
57
+ tag: "lark_md",
58
+ content
59
+ }]
60
+ };
61
+ }
62
+ export function buildMetricsNoteBlock(value, options) {
63
+ return buildNoteBlock(`指标:${value}`, {
64
+ ...options,
65
+ resolveToneTextColor: resolveCommonToneTextColor
66
+ });
67
+ }
68
+ export function resolveCommonToneTextColor(tone) {
69
+ switch (tone) {
70
+ case "red":
71
+ return "#D83931";
72
+ case "grey":
73
+ return "#8F959E";
74
+ case "blue":
75
+ return "#2468F2";
76
+ case "orange":
77
+ return "#D97904";
78
+ case "green":
79
+ return "#2BA471";
80
+ case "turquoise":
81
+ return "#1593A6";
82
+ default:
83
+ return "#2BA471";
84
+ }
85
+ }
86
+ export function isCompactFieldValue(value) {
87
+ const visibleText = value
88
+ .replace(/\[([^\]]+)\]\([^)]+\)/g, "$1")
89
+ .replace(/<at\b[^>]*><\/at>/g, "@")
90
+ .replace(/[*_`~]/g, "")
91
+ .replace(/\s+/g, " ")
92
+ .trim();
93
+ return visibleText.length > 0 && visibleText.length <= 36 && !visibleText.includes("\n");
94
+ }
95
+ //# sourceMappingURL=feishu-card-primitives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feishu-card-primitives.js","sourceRoot":"","sources":["../../../src/task-environment/delivery/feishu-card-primitives.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ export declare class FeishuCardRenderer {
11
11
  private buildMetadataFields;
12
12
  private buildField;
13
13
  private buildHintBlock;
14
+ private buildMetricsNoteBlock;
14
15
  private buildFailureLogBlock;
15
16
  private renderIssueValue;
16
17
  private renderQAssigneeValue;