@xihe-lab/tapd-core 2.0.0-rc.1 → 2.0.0-rc.3
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.
- package/README.md +23 -0
- package/dist/advisor/index.d.ts.map +1 -1
- package/dist/advisor/index.js +2 -0
- package/dist/advisor/index.js.map +1 -1
- package/dist/cache/read-cache.d.ts +136 -0
- package/dist/cache/read-cache.d.ts.map +1 -0
- package/dist/cache/read-cache.js +322 -0
- package/dist/cache/read-cache.js.map +1 -0
- package/dist/cache/read-cache.test.d.ts +2 -0
- package/dist/cache/read-cache.test.d.ts.map +1 -0
- package/dist/cache/read-cache.test.js +429 -0
- package/dist/cache/read-cache.test.js.map +1 -0
- package/dist/errors/index.d.ts +120 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +429 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/registry/registry.d.ts +7 -0
- package/dist/registry/registry.d.ts.map +1 -1
- package/dist/registry/registry.js +9 -3
- package/dist/registry/registry.js.map +1 -1
- package/dist/registry/registry.test.js +293 -2
- package/dist/registry/registry.test.js.map +1 -1
- package/dist/registry/richtext-manifests.generated.d.ts +1 -1
- package/dist/registry/richtext-manifests.generated.d.ts.map +1 -1
- package/dist/registry/richtext-manifests.generated.js +1 -1
- package/dist/registry/richtext-manifests.generated.js.map +1 -1
- package/dist/registry/richtext.d.ts +9 -0
- package/dist/registry/richtext.d.ts.map +1 -1
- package/dist/registry/richtext.js +33 -15
- package/dist/registry/richtext.js.map +1 -1
- package/dist/registry/richtext.test.js +70 -7
- package/dist/registry/richtext.test.js.map +1 -1
- package/dist/richtext/attachment-anchor.d.ts +58 -0
- package/dist/richtext/attachment-anchor.d.ts.map +1 -0
- package/dist/richtext/attachment-anchor.js +221 -0
- package/dist/richtext/attachment-anchor.js.map +1 -0
- package/dist/richtext/attachment-anchor.test.d.ts +2 -0
- package/dist/richtext/attachment-anchor.test.d.ts.map +1 -0
- package/dist/richtext/attachment-anchor.test.js +149 -0
- package/dist/richtext/attachment-anchor.test.js.map +1 -0
- package/dist/richtext/escape.d.ts +7 -0
- package/dist/richtext/escape.d.ts.map +1 -0
- package/dist/richtext/escape.js +60 -0
- package/dist/richtext/escape.js.map +1 -0
- package/dist/richtext/index.d.ts +15 -0
- package/dist/richtext/index.d.ts.map +1 -0
- package/dist/richtext/index.js +35 -0
- package/dist/richtext/index.js.map +1 -0
- package/dist/richtext/mention.d.ts +49 -0
- package/dist/richtext/mention.d.ts.map +1 -0
- package/dist/richtext/mention.js +179 -0
- package/dist/richtext/mention.js.map +1 -0
- package/dist/richtext/mention.test.d.ts +2 -0
- package/dist/richtext/mention.test.d.ts.map +1 -0
- package/dist/richtext/mention.test.js +123 -0
- package/dist/richtext/mention.test.js.map +1 -0
- package/dist/richtext/pipeline.d.ts +5 -0
- package/dist/richtext/pipeline.d.ts.map +1 -0
- package/dist/richtext/pipeline.js +199 -0
- package/dist/richtext/pipeline.js.map +1 -0
- package/dist/richtext/round-trip.test.d.ts +2 -0
- package/dist/richtext/round-trip.test.d.ts.map +1 -0
- package/dist/richtext/round-trip.test.js +105 -0
- package/dist/richtext/round-trip.test.js.map +1 -0
- package/dist/sdk-routes.d.ts.map +1 -1
- package/dist/sdk-routes.js +4 -0
- package/dist/sdk-routes.js.map +1 -1
- package/dist/tapd-client.d.ts +79 -2
- package/dist/tapd-client.d.ts.map +1 -1
- package/dist/tapd-client.js +177 -24
- package/dist/tapd-client.js.map +1 -1
- package/dist/tools/attachment.d.ts +47 -0
- package/dist/tools/attachment.d.ts.map +1 -1
- package/dist/tools/attachment.js +278 -32
- package/dist/tools/attachment.js.map +1 -1
- package/dist/tools/attachment.test.d.ts +2 -0
- package/dist/tools/attachment.test.d.ts.map +1 -0
- package/dist/tools/attachment.test.js +432 -0
- package/dist/tools/attachment.test.js.map +1 -0
- package/dist/tools/board.js +22 -22
- package/dist/tools/board.js.map +1 -1
- package/dist/tools/bug.d.ts.map +1 -1
- package/dist/tools/bug.js +262 -259
- package/dist/tools/bug.js.map +1 -1
- package/dist/tools/changes.js +20 -20
- package/dist/tools/changes.js.map +1 -1
- package/dist/tools/comment.d.ts.map +1 -1
- package/dist/tools/comment.js +26 -23
- package/dist/tools/comment.js.map +1 -1
- package/dist/tools/custom-fields.js +16 -16
- package/dist/tools/custom-fields.js.map +1 -1
- package/dist/tools/image.js +2 -2
- package/dist/tools/image.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/iteration.js +50 -50
- package/dist/tools/iteration.js.map +1 -1
- package/dist/tools/media.d.ts +9 -0
- package/dist/tools/media.d.ts.map +1 -0
- package/dist/tools/media.js +45 -0
- package/dist/tools/media.js.map +1 -0
- package/dist/tools/mini-comment.js +27 -27
- package/dist/tools/mini-comment.js.map +1 -1
- package/dist/tools/mini-item.js +83 -83
- package/dist/tools/mini-item.js.map +1 -1
- package/dist/tools/mini-workspace.js +5 -5
- package/dist/tools/mini-workspace.js.map +1 -1
- package/dist/tools/program.js +7 -7
- package/dist/tools/program.js.map +1 -1
- package/dist/tools/relations.js +14 -14
- package/dist/tools/relations.js.map +1 -1
- package/dist/tools/release.js +53 -53
- package/dist/tools/release.js.map +1 -1
- package/dist/tools/report.js +8 -8
- package/dist/tools/report.js.map +1 -1
- package/dist/tools/richtext-wiring.test.d.ts +2 -0
- package/dist/tools/richtext-wiring.test.d.ts.map +1 -0
- package/dist/tools/richtext-wiring.test.js +302 -0
- package/dist/tools/richtext-wiring.test.js.map +1 -0
- package/dist/tools/settings.js +77 -77
- package/dist/tools/settings.js.map +1 -1
- package/dist/tools/source.js +14 -14
- package/dist/tools/source.js.map +1 -1
- package/dist/tools/story.d.ts.map +1 -1
- package/dist/tools/story.js +123 -120
- package/dist/tools/story.js.map +1 -1
- package/dist/tools/task.d.ts.map +1 -1
- package/dist/tools/task.js +126 -123
- package/dist/tools/task.js.map +1 -1
- package/dist/tools/test.js +117 -117
- package/dist/tools/test.js.map +1 -1
- package/dist/tools/timesheet.js +23 -23
- package/dist/tools/timesheet.js.map +1 -1
- package/dist/tools/user.js +8 -8
- package/dist/tools/user.js.map +1 -1
- package/dist/tools/utility.d.ts +17 -0
- package/dist/tools/utility.d.ts.map +1 -1
- package/dist/tools/utility.js +204 -88
- package/dist/tools/utility.js.map +1 -1
- package/dist/tools/wiki.d.ts.map +1 -1
- package/dist/tools/wiki.js +71 -56
- package/dist/tools/wiki.js.map +1 -1
- package/dist/tools/workflow.js +26 -26
- package/dist/tools/workflow.js.map +1 -1
- package/dist/tools/workspace.js +16 -16
- package/dist/tools/workspace.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +15 -11
- package/dist/tools/zz-acceptance-echo.d.ts +0 -3
- package/dist/tools/zz-acceptance-echo.d.ts.map +0 -1
- package/dist/tools/zz-acceptance-echo.js +0 -9
- package/dist/tools/zz-acceptance-echo.js.map +0 -1
package/dist/tools/utility.js
CHANGED
|
@@ -1,24 +1,145 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
1
2
|
import { z } from 'zod';
|
|
2
|
-
import MarkdownIt from 'markdown-it';
|
|
3
|
-
import TurndownService from 'turndown';
|
|
4
|
-
import { gfm } from 'turndown-plugin-gfm';
|
|
5
3
|
import { TapdClient } from '../tapd-client.js';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
import { TapdError } from '../errors/index.js';
|
|
5
|
+
import { findMentions } from '../richtext/index.js';
|
|
6
|
+
import { htmlToMd, mdToHtml } from '../richtext/pipeline.js';
|
|
7
|
+
import { mediaTools } from './media.js';
|
|
9
8
|
const mdToHtmlSchema = z.object({
|
|
10
9
|
content: z.string().describe('Markdown 内容'),
|
|
10
|
+
upload_images: z.boolean().optional().default(false).describe('显式副作用(默认 false):扫描 md 中 `![]()` 的本地存在图片路径并逐个上传 TAPD 图床,替换为 /tfl/ 远端路径;返回 uploaded_images 清单(失败项列入 failed_images,不影响其余内容)。上传语义为图片资源创建,不计入实体写闸门(FSD §3.4,side_effect: upload)'),
|
|
11
|
+
workspace_id: z.number().optional().describe('项目ID:提供时对 `@昵称` 做成员校验(调 tapd_get_workspace_users;接口 403/失败自动降级跳过并在 warnings 说明),未命中昵称列入 warnings;同时作为 upload_images 的上传项目(省略时取默认项目配置)'),
|
|
11
12
|
});
|
|
12
13
|
const htmlToMdSchema = z.object({
|
|
13
14
|
html: z.string().describe('TAPD 富文本 HTML(description/comment 等)'),
|
|
14
15
|
});
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
/**
|
|
17
|
+
* md 内 `![]()` 图片目的地扫描(支持 `<包角>` 与可选标题)。
|
|
18
|
+
* 每次调用新建正则实例,避免全局正则 lastIndex 状态串扰。
|
|
19
|
+
*/
|
|
20
|
+
function imageMdRe() {
|
|
21
|
+
return /!\[([^\]\n]*)\]\(\s*(<[^>\n]*>|[^)\s\n]+)(?:\s+"[^"\n]*")?\s*\)/g;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 判定图片目的地是否可能为本地路径(需 upload 后再由存在性检查裁决):
|
|
25
|
+
* scheme(http:/https:/attach:/data:...)、锚点、协议相对地址、TAPD 图床 /tfl/ 保留前缀排除;
|
|
26
|
+
* 其余(含 macOS/Linux 绝对路径与相对路径)交由上传 handler 的 existsSync 判定,
|
|
27
|
+
* 不存在的路径进 failed_images 原样保留(绝不猜测改写)。
|
|
28
|
+
*/
|
|
29
|
+
function isLocalPathCandidate(dest) {
|
|
30
|
+
if (dest === '')
|
|
31
|
+
return false;
|
|
32
|
+
if (dest.startsWith('#') || dest.startsWith('//'))
|
|
33
|
+
return false;
|
|
34
|
+
if (dest.startsWith('/tfl/'))
|
|
35
|
+
return false; // TAPD 图床远端路径(上传后的产物,不再二次上传)
|
|
36
|
+
return !/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(dest);
|
|
37
|
+
}
|
|
38
|
+
function unwrapAngleDest(dest) {
|
|
39
|
+
return dest.startsWith('<') && dest.endsWith('>') ? dest.slice(1, -1) : dest;
|
|
40
|
+
}
|
|
41
|
+
/** FSD §3.4:md 本地图 → 上传(复用 tapd_upload_image handler,函数组合)→ /tfl/ 路径替换。 */
|
|
42
|
+
async function uploadLocalImages(client, content, workspaceId) {
|
|
43
|
+
const uploadImage = mediaTools.find(t => t.name === 'tapd_upload_image');
|
|
44
|
+
if (!uploadImage)
|
|
45
|
+
throw new Error('tapd_upload_image tool is not available for upload_images');
|
|
46
|
+
const uploaded = [];
|
|
47
|
+
const failed = [];
|
|
48
|
+
const srcByDest = new Map();
|
|
49
|
+
const srcByResolved = new Map(); // 去重:同一文件的不同写法只上传一次
|
|
50
|
+
const dests = new Set();
|
|
51
|
+
for (const match of content.matchAll(imageMdRe())) {
|
|
52
|
+
const dest = unwrapAngleDest(match[2]);
|
|
53
|
+
if (isLocalPathCandidate(dest))
|
|
54
|
+
dests.add(dest);
|
|
55
|
+
}
|
|
56
|
+
for (const dest of dests) {
|
|
57
|
+
const resolvedKey = path.resolve(dest);
|
|
58
|
+
const reused = srcByResolved.get(resolvedKey);
|
|
59
|
+
if (reused) {
|
|
60
|
+
srcByDest.set(dest, reused);
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
const result = await uploadImage.handler(client, { workspace_id: workspaceId, image_path: dest });
|
|
65
|
+
if (typeof result?.image_src === 'string' && result.image_src !== '') {
|
|
66
|
+
srcByDest.set(dest, result.image_src);
|
|
67
|
+
srcByResolved.set(resolvedKey, result.image_src);
|
|
68
|
+
uploaded.push({ local_path: dest, image_src: result.image_src });
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
failed.push({ local_path: dest, reason: 'upload returned no image_src' });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
failed.push({ local_path: dest, reason: error instanceof Error ? error.message : String(error) });
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (uploaded.length > 0) {
|
|
79
|
+
content = content.replace(imageMdRe(), (whole, alt, dest) => {
|
|
80
|
+
const src = srcByDest.get(unwrapAngleDest(dest));
|
|
81
|
+
return src ? `` : whole;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
return { content, uploaded, failed };
|
|
85
|
+
}
|
|
86
|
+
function extractNicknames(payload) {
|
|
87
|
+
const names = new Set();
|
|
88
|
+
for (const item of Array.isArray(payload) ? payload : []) {
|
|
89
|
+
if (typeof item === 'string' && item !== '') {
|
|
90
|
+
names.add(item);
|
|
91
|
+
}
|
|
92
|
+
else if (item && typeof item === 'object') {
|
|
93
|
+
const rec = item;
|
|
94
|
+
const user = rec.User?.user ?? rec.user;
|
|
95
|
+
if (typeof user === 'string' && user !== '')
|
|
96
|
+
names.add(user);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return names;
|
|
100
|
+
}
|
|
101
|
+
/** FSD §3.6:昵称成员校验(尽力而为;403/失败降级跳过——R4 服务端仍智能识别,欠标记无害)。 */
|
|
102
|
+
async function validateMentionNicknames(client, workspaceId, content) {
|
|
103
|
+
let known;
|
|
104
|
+
try {
|
|
105
|
+
const payload = await client.get('/users', { workspace_id: workspaceId, fields: 'user' });
|
|
106
|
+
known = extractNicknames(payload);
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
110
|
+
return [`成员校验已跳过(tapd_get_workspace_users 不可用:${reason.slice(0, 120)});@昵称 仍由服务端智能识别`];
|
|
111
|
+
}
|
|
112
|
+
if (known.size === 0) {
|
|
113
|
+
return ['成员校验已跳过(成员列表为空或无权限读取);@昵称 仍由服务端智能识别'];
|
|
114
|
+
}
|
|
115
|
+
const misses = [...new Set(findMentions(content).map(m => m.name))].filter(name => !known.has(name));
|
|
116
|
+
return misses.map(name => `@${name} 未命中项目成员昵称(请核对昵称拼写;关键通知场景建议同时填 cc)`);
|
|
117
|
+
}
|
|
118
|
+
const mdToHtmlHandler = async (client, params) => {
|
|
119
|
+
let content = params.content;
|
|
120
|
+
let uploaded = [];
|
|
121
|
+
let failed = [];
|
|
122
|
+
if (params.upload_images) {
|
|
123
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
124
|
+
if (!workspaceId) {
|
|
125
|
+
throw new Error('workspace_id is required for upload_images (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
126
|
+
}
|
|
127
|
+
({ content, uploaded, failed } = await uploadLocalImages(client, content, workspaceId));
|
|
128
|
+
}
|
|
129
|
+
let warnings = [];
|
|
130
|
+
if (params.workspace_id !== undefined) {
|
|
131
|
+
warnings = await validateMentionNicknames(client, params.workspace_id, content);
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
html: mdToHtml(content),
|
|
135
|
+
...(uploaded.length > 0 ? { uploaded_images: uploaded } : {}),
|
|
136
|
+
...(failed.length > 0 ? { failed_images: failed } : {}),
|
|
137
|
+
...(warnings.length > 0 ? { warnings } : {}),
|
|
138
|
+
};
|
|
18
139
|
};
|
|
19
140
|
// eslint-disable-next-line @typescript-eslint/require-await
|
|
20
141
|
const htmlToMdHandler = async (_client, params) => {
|
|
21
|
-
return { markdown:
|
|
142
|
+
return { markdown: htmlToMd(params.html) };
|
|
22
143
|
};
|
|
23
144
|
const shortToLongIdSchema = z.object({
|
|
24
145
|
short_id: z.string().describe('短 ID(纯数字,≤9 位);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
|
|
@@ -35,131 +156,126 @@ const shortToLongIdHandler = async (_client, params) => {
|
|
|
35
156
|
is_converted: result !== params.short_id,
|
|
36
157
|
};
|
|
37
158
|
};
|
|
159
|
+
async function runBatch(items, maxConcurrency) {
|
|
160
|
+
const outcomes = new Array(items.length);
|
|
161
|
+
let cursor = 0;
|
|
162
|
+
const workerCount = Math.max(1, Math.min(maxConcurrency, items.length));
|
|
163
|
+
const workers = Array.from({ length: workerCount }, async () => {
|
|
164
|
+
while (cursor < items.length) {
|
|
165
|
+
const index = cursor;
|
|
166
|
+
cursor++;
|
|
167
|
+
const item = items[index];
|
|
168
|
+
try {
|
|
169
|
+
outcomes[index] = { id: item.id, data: await item.run() };
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
outcomes[index] = { id: item.id, error: error instanceof TapdError ? error : TapdError.wrap(error) };
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
await Promise.all(workers);
|
|
177
|
+
return outcomes;
|
|
178
|
+
}
|
|
38
179
|
/**
|
|
39
|
-
*
|
|
180
|
+
* 批量逐 ID 拉取详情(tapd_batch_fetch_stories/bugs/tasks 共用)。
|
|
181
|
+
* 降级取舍:
|
|
182
|
+
* - 全部成功 → 返回原始数组(与旧契约一致,渲染层零感知)
|
|
183
|
+
* - 部分失败 → 返回 BatchDegradedResult(成功项保留 + 逐项结构化错误 + 汇总),不再让单项失败吞掉整批
|
|
184
|
+
* - 全部失败 → 抛 TAPD_PARTIAL(items 携带逐项错误),保持整体失败语义(ok:false)不误导消费方
|
|
40
185
|
*/
|
|
41
|
-
async function
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
186
|
+
async function batchFetchByIds(client, path, params) {
|
|
187
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
188
|
+
if (!workspaceId) {
|
|
189
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
190
|
+
}
|
|
191
|
+
const requestContext = { method: 'GET', path, params: { workspace_id: workspaceId } };
|
|
192
|
+
const items = params.ids.map(id => ({
|
|
193
|
+
id,
|
|
194
|
+
run: () => client.get(path, {
|
|
195
|
+
workspace_id: workspaceId,
|
|
196
|
+
id: TapdClient.toLongId(id, workspaceId),
|
|
197
|
+
...(params.fields ? { fields: params.fields } : {}),
|
|
198
|
+
}),
|
|
199
|
+
}));
|
|
200
|
+
const outcomes = await runBatch(items, params.max_workers ?? 3);
|
|
201
|
+
const succeeded = [];
|
|
202
|
+
const failed = [];
|
|
203
|
+
for (const outcome of outcomes) {
|
|
204
|
+
if (outcome.error !== undefined) {
|
|
205
|
+
failed.push({ id: outcome.id, error: outcome.error });
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
succeeded.push({ id: outcome.id, data: outcome.data });
|
|
59
209
|
}
|
|
60
210
|
}
|
|
61
|
-
|
|
62
|
-
|
|
211
|
+
if (failed.length === 0) {
|
|
212
|
+
return succeeded.map(item => item.data);
|
|
213
|
+
}
|
|
214
|
+
if (succeeded.length === 0) {
|
|
215
|
+
throw TapdError.partial(requestContext, outcomes.length, failed);
|
|
216
|
+
}
|
|
217
|
+
const degraded = {
|
|
218
|
+
summary: { total: outcomes.length, succeeded: succeeded.length, failed: failed.length },
|
|
219
|
+
succeeded,
|
|
220
|
+
failed: failed.map(item => ({ id: item.id, error: item.error.toJSON() })),
|
|
221
|
+
};
|
|
222
|
+
return degraded;
|
|
63
223
|
}
|
|
64
224
|
const batchFetchStoriesSchema = z.object({
|
|
65
225
|
ids: z.array(z.string()).describe('需求 ID 列表(支持短 ID 和长 ID)'),
|
|
66
|
-
workspace_id: z.number().optional().describe('项目ID
|
|
226
|
+
workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
|
|
67
227
|
fields: z.string().optional().describe('返回字段'),
|
|
68
228
|
max_workers: z.number().optional().default(3).describe('最大并发数(默认 3)'),
|
|
69
229
|
});
|
|
70
230
|
const batchFetchBugsSchema = z.object({
|
|
71
231
|
ids: z.array(z.string()).describe('缺陷 ID 列表(支持短 ID 和长 ID)'),
|
|
72
|
-
workspace_id: z.number().optional().describe('项目ID
|
|
232
|
+
workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
|
|
73
233
|
fields: z.string().optional().describe('返回字段'),
|
|
74
234
|
max_workers: z.number().optional().default(3).describe('最大并发数(默认 3)'),
|
|
75
235
|
});
|
|
76
236
|
const batchFetchTasksSchema = z.object({
|
|
77
237
|
ids: z.array(z.string()).describe('任务 ID 列表(支持短 ID 和长 ID)'),
|
|
78
|
-
workspace_id: z.number().optional().describe('项目ID
|
|
238
|
+
workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
|
|
79
239
|
fields: z.string().optional().describe('返回字段'),
|
|
80
240
|
max_workers: z.number().optional().default(3).describe('最大并发数(默认 3)'),
|
|
81
241
|
});
|
|
82
242
|
export const utilityTools = [
|
|
83
243
|
{
|
|
84
244
|
name: 'tapd_md_to_html',
|
|
85
|
-
description: '
|
|
245
|
+
description: '把 Markdown 转成 TAPD 富文本 HTML(写 description/comment 前先转换,模型产 md 省生成 token)。支持 TAPD 扩展语法:@昵称 → at-who 提及(@@ 为字面 @ 转义)、[📎 文件名](attach:<ws>/<id>) → 附件锚点;代码段/链接 URL 内的 @ 不误伤。upload_images=true 时把 md 中本地存在的图片路径上传图床并替换为 /tfl/(显式副作用,默认关闭);workspace_id 提供时校验 @昵称 是否项目成员(不可用时降级跳过)。读侧配套用反向转换工具。返回 {html, uploaded_images?, failed_images?, warnings?}。',
|
|
86
246
|
inputSchema: mdToHtmlSchema,
|
|
87
247
|
handler: mdToHtmlHandler,
|
|
248
|
+
side_effect: 'upload',
|
|
88
249
|
},
|
|
89
250
|
{
|
|
90
251
|
name: 'tapd_html_to_md',
|
|
91
|
-
description: '
|
|
252
|
+
description: '把 TAPD 富文本 HTML 转成 Markdown(读取 description/comment 后消费用,省输入 token)。at-who 提及还原为 @昵称(不降级为粗体)、附件锚点还原为 [📎 文件名](attach:<ws>/<id>)、图片还原为 。纯本地转换零请求,写入侧配套用正向转换工具。返回 {markdown}。',
|
|
92
253
|
inputSchema: htmlToMdSchema,
|
|
93
254
|
handler: htmlToMdHandler,
|
|
94
255
|
},
|
|
95
256
|
{
|
|
96
257
|
name: 'tapd_short_to_long_id',
|
|
97
|
-
description: '
|
|
258
|
+
description: '把短 ID 转换为长 ID。规则:纯数字且 ≤9 位视为短 ID,云环境前缀 "11",补零到 9 位拼接 workspace_id。列表类工具的 id 参数已内置自动转换,仅手工拼长 ID 时需要本工具。返回 {short_id, workspace_id, long_id, is_converted}。',
|
|
98
259
|
inputSchema: shortToLongIdSchema,
|
|
99
260
|
handler: shortToLongIdHandler,
|
|
100
261
|
},
|
|
101
262
|
{
|
|
102
263
|
name: 'tapd_batch_fetch_stories',
|
|
103
|
-
description: '
|
|
264
|
+
description: '按 ID 列表批量并发获取需求完整详情(支持短 ID 自动转换,max_workers 默认 3)。按条件筛选走列表查询工具;只统计数量用数量统计工具。读操作;ids 为字符串数组。返回按入参顺序的需求详情数组;部分 ID 失败时返回降级聚合 {summary, succeeded, failed}(failed 含逐项结构化错误),仅全部失败才整体报错。',
|
|
104
265
|
inputSchema: batchFetchStoriesSchema,
|
|
105
|
-
handler:
|
|
106
|
-
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
107
|
-
if (!workspaceId) {
|
|
108
|
-
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
109
|
-
}
|
|
110
|
-
const maxConcurrency = params.max_workers ?? 3;
|
|
111
|
-
const tasks = params.ids.map(id => () => {
|
|
112
|
-
const longId = TapdClient.toLongId(id, workspaceId);
|
|
113
|
-
return client.get('/stories', {
|
|
114
|
-
workspace_id: workspaceId,
|
|
115
|
-
id: longId,
|
|
116
|
-
...(params.fields ? { fields: params.fields } : {}),
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
return runWithConcurrency(tasks, maxConcurrency);
|
|
120
|
-
},
|
|
266
|
+
handler: (client, params) => batchFetchByIds(client, '/stories', params),
|
|
121
267
|
},
|
|
122
268
|
{
|
|
123
269
|
name: 'tapd_batch_fetch_bugs',
|
|
124
|
-
description: '
|
|
270
|
+
description: '按 ID 列表批量并发获取缺陷完整详情(支持短 ID 自动转换,max_workers 默认 3)。按条件筛选走列表查询工具;只统计数量用数量统计工具。读操作;ids 为字符串数组。返回按入参顺序的缺陷详情数组;部分 ID 失败时返回降级聚合 {summary, succeeded, failed}(failed 含逐项结构化错误),仅全部失败才整体报错。',
|
|
125
271
|
inputSchema: batchFetchBugsSchema,
|
|
126
|
-
handler:
|
|
127
|
-
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
128
|
-
if (!workspaceId) {
|
|
129
|
-
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
130
|
-
}
|
|
131
|
-
const maxConcurrency = params.max_workers ?? 3;
|
|
132
|
-
const tasks = params.ids.map(id => () => {
|
|
133
|
-
const longId = TapdClient.toLongId(id, workspaceId);
|
|
134
|
-
return client.get('/bugs', {
|
|
135
|
-
workspace_id: workspaceId,
|
|
136
|
-
id: longId,
|
|
137
|
-
...(params.fields ? { fields: params.fields } : {}),
|
|
138
|
-
});
|
|
139
|
-
});
|
|
140
|
-
return runWithConcurrency(tasks, maxConcurrency);
|
|
141
|
-
},
|
|
272
|
+
handler: (client, params) => batchFetchByIds(client, '/bugs', params),
|
|
142
273
|
},
|
|
143
274
|
{
|
|
144
275
|
name: 'tapd_batch_fetch_tasks',
|
|
145
|
-
description: '
|
|
276
|
+
description: '按 ID 列表批量并发获取任务完整详情(支持短 ID 自动转换,max_workers 默认 3)。按条件筛选走列表查询工具;只统计数量用数量统计工具。读操作;ids 为字符串数组。返回按入参顺序的任务详情数组;部分 ID 失败时返回降级聚合 {summary, succeeded, failed}(failed 含逐项结构化错误),仅全部失败才整体报错。',
|
|
146
277
|
inputSchema: batchFetchTasksSchema,
|
|
147
|
-
handler:
|
|
148
|
-
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
149
|
-
if (!workspaceId) {
|
|
150
|
-
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
151
|
-
}
|
|
152
|
-
const maxConcurrency = params.max_workers ?? 3;
|
|
153
|
-
const tasks = params.ids.map(id => () => {
|
|
154
|
-
const longId = TapdClient.toLongId(id, workspaceId);
|
|
155
|
-
return client.get('/tasks', {
|
|
156
|
-
workspace_id: workspaceId,
|
|
157
|
-
id: longId,
|
|
158
|
-
...(params.fields ? { fields: params.fields } : {}),
|
|
159
|
-
});
|
|
160
|
-
});
|
|
161
|
-
return runWithConcurrency(tasks, maxConcurrency);
|
|
162
|
-
},
|
|
278
|
+
handler: (client, params) => batchFetchByIds(client, '/tasks', params),
|
|
163
279
|
},
|
|
164
280
|
];
|
|
165
281
|
//# sourceMappingURL=utility.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utility.js","sourceRoot":"","sources":["../../src/tools/utility.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utility.js","sourceRoot":"","sources":["../../src/tools/utility.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/wiki.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wiki.d.ts","sourceRoot":"","sources":["../../src/tools/wiki.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"wiki.d.ts","sourceRoot":"","sources":["../../src/tools/wiki.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAI3C,eAAO,MAAM,SAAS,EAAE,OAAO,EA4O9B,CAAC"}
|