backlog-mcp-server 0.17.0 → 0.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +31 -32
- package/README.md +36 -32
- package/build/auth/oauthRoutes.js +53 -1
- package/build/backlog/customFields.js +12 -9
- package/build/createBacklogMcpServer.d.ts +4 -6
- package/build/createBacklogMcpServer.js +4 -12
- package/build/handlers/builders/composeToolHandler.d.ts +1 -1
- package/build/handlers/builders/composeToolHandler.js +15 -9
- package/build/handlers/transformers/wrapWithFieldPicking.d.ts +14 -1
- package/build/handlers/transformers/wrapWithFieldPicking.js +30 -36
- package/build/httpMcpServer.js +8 -1
- package/build/index.js +20 -15
- package/build/lib.d.ts +1 -1
- package/build/loadDescriptionOverrides.js +2 -2
- package/build/reportUnknownOverrideKeys.js +0 -1
- package/build/tools/addDocument.d.ts +3 -3
- package/build/tools/addDocument.js +18 -3
- package/build/tools/addIssue.d.ts +3 -3
- package/build/tools/addIssue.js +32 -2
- package/build/tools/addIssueComment.d.ts +3 -3
- package/build/tools/addIssueComment.js +14 -2
- package/build/tools/addProject.d.ts +3 -3
- package/build/tools/addProject.js +22 -2
- package/build/tools/addPullRequest.d.ts +3 -3
- package/build/tools/addPullRequest.js +26 -2
- package/build/tools/addPullRequestComment.d.ts +3 -3
- package/build/tools/addPullRequestComment.js +12 -2
- package/build/tools/addRelatedIssue.d.ts +3 -3
- package/build/tools/addRelatedIssue.js +33 -2
- package/build/tools/addVersionMilestone.d.ts +3 -3
- package/build/tools/addVersionMilestone.js +12 -2
- package/build/tools/addWatching.d.ts +3 -3
- package/build/tools/addWatching.js +12 -2
- package/build/tools/addWiki.d.ts +3 -3
- package/build/tools/addWiki.js +16 -2
- package/build/tools/countIssues.d.ts +3 -3
- package/build/tools/countIssues.js +3 -2
- package/build/tools/deleteIssue.d.ts +3 -3
- package/build/tools/deleteIssue.js +32 -2
- package/build/tools/deleteProject.d.ts +3 -3
- package/build/tools/deleteProject.js +22 -2
- package/build/tools/deleteVersion.d.ts +3 -3
- package/build/tools/deleteVersion.js +12 -2
- package/build/tools/deleteWatching.d.ts +3 -3
- package/build/tools/deleteWatching.js +12 -2
- package/build/tools/getCategories.d.ts +3 -3
- package/build/tools/getCategories.js +8 -2
- package/build/tools/getCustomFields.d.ts +3 -3
- package/build/tools/getCustomFields.js +22 -2
- package/build/tools/getDocument.d.ts +3 -3
- package/build/tools/getDocument.js +17 -2
- package/build/tools/getDocumentTree.d.ts +3 -3
- package/build/tools/getDocumentTree.js +7 -2
- package/build/tools/getDocuments.d.ts +3 -3
- package/build/tools/getDocuments.js +17 -2
- package/build/tools/getGitRepositories.d.ts +3 -3
- package/build/tools/getGitRepositories.js +17 -2
- package/build/tools/getGitRepository.d.ts +3 -3
- package/build/tools/getGitRepository.js +17 -2
- package/build/tools/getIssue.d.ts +3 -3
- package/build/tools/getIssue.js +32 -2
- package/build/tools/getIssueComments.d.ts +3 -3
- package/build/tools/getIssueComments.js +14 -2
- package/build/tools/getIssueTypes.d.ts +3 -3
- package/build/tools/getIssueTypes.js +11 -2
- package/build/tools/getIssues.d.ts +17 -17
- package/build/tools/getIssues.js +32 -2
- package/build/tools/getMyself.d.ts +3 -3
- package/build/tools/getMyself.js +11 -2
- package/build/tools/getNotifications.d.ts +3 -3
- package/build/tools/getNotifications.js +15 -2
- package/build/tools/getNotificationsCount.d.ts +3 -3
- package/build/tools/getNotificationsCount.js +5 -2
- package/build/tools/getPriorities.d.ts +3 -3
- package/build/tools/getPriorities.js +3 -2
- package/build/tools/getProject.d.ts +3 -3
- package/build/tools/getProject.js +22 -2
- package/build/tools/getProjectList.d.ts +3 -3
- package/build/tools/getProjectList.js +22 -2
- package/build/tools/getProjectUsers.d.ts +3 -3
- package/build/tools/getProjectUsers.js +11 -2
- package/build/tools/getPullRequest.d.ts +3 -3
- package/build/tools/getPullRequest.js +26 -2
- package/build/tools/getPullRequestComments.d.ts +3 -3
- package/build/tools/getPullRequestComments.js +12 -2
- package/build/tools/getPullRequests.d.ts +3 -3
- package/build/tools/getPullRequests.js +26 -2
- package/build/tools/getPullRequestsCount.d.ts +3 -3
- package/build/tools/getPullRequestsCount.js +5 -2
- package/build/tools/getRelatedIssues.d.ts +3 -3
- package/build/tools/getRelatedIssues.js +33 -2
- package/build/tools/getResolutions.d.ts +3 -3
- package/build/tools/getResolutions.js +3 -2
- package/build/tools/getSpace.d.ts +3 -3
- package/build/tools/getSpace.js +13 -2
- package/build/tools/getSpaceActivities.d.ts +3 -3
- package/build/tools/getSpaceActivities.js +12 -2
- package/build/tools/getUserRecentUpdates.d.ts +3 -3
- package/build/tools/getUserRecentUpdates.js +12 -2
- package/build/tools/getUserStarsCount.d.ts +3 -3
- package/build/tools/getUserStarsCount.js +3 -2
- package/build/tools/getUsers.d.ts +3 -3
- package/build/tools/getUsers.js +11 -2
- package/build/tools/getVersionMilestoneList.d.ts +3 -3
- package/build/tools/getVersionMilestoneList.js +12 -2
- package/build/tools/getWatchingListCount.d.ts +3 -3
- package/build/tools/getWatchingListCount.js +5 -2
- package/build/tools/getWatchingListItems.d.ts +3 -3
- package/build/tools/getWatchingListItems.js +12 -2
- package/build/tools/getWiki.d.ts +3 -3
- package/build/tools/getWiki.js +16 -2
- package/build/tools/getWikiPages.d.ts +3 -3
- package/build/tools/getWikiPages.js +12 -2
- package/build/tools/getWikisCount.d.ts +3 -3
- package/build/tools/getWikisCount.js +3 -2
- package/build/tools/markNotificationAsRead.d.ts +7 -2
- package/build/tools/markNotificationAsRead.js +6 -1
- package/build/tools/markWatchingAsRead.d.ts +7 -2
- package/build/tools/markWatchingAsRead.js +6 -1
- package/build/tools/removeRelatedIssue.d.ts +3 -3
- package/build/tools/removeRelatedIssue.js +33 -2
- package/build/tools/resetUnreadNotificationCount.d.ts +3 -3
- package/build/tools/resetUnreadNotificationCount.js +5 -2
- package/build/tools/shared/customFieldFiltersSchema.d.ts +1 -1
- package/build/tools/updateIssue.d.ts +3 -3
- package/build/tools/updateIssue.js +32 -2
- package/build/tools/updateIssueComment.d.ts +3 -3
- package/build/tools/updateIssueComment.js +14 -2
- package/build/tools/updateProject.d.ts +3 -3
- package/build/tools/updateProject.js +22 -2
- package/build/tools/updatePullRequest.d.ts +3 -3
- package/build/tools/updatePullRequest.js +26 -2
- package/build/tools/updatePullRequestComment.d.ts +3 -3
- package/build/tools/updatePullRequestComment.js +12 -2
- package/build/tools/updateVersionMilestone.d.ts +3 -3
- package/build/tools/updateVersionMilestone.js +12 -2
- package/build/tools/updateWatching.d.ts +3 -3
- package/build/tools/updateWatching.js +12 -2
- package/build/tools/updateWiki.d.ts +3 -3
- package/build/tools/updateWiki.js +16 -2
- package/build/types/outputFields.d.ts +26 -0
- package/build/types/outputFields.js +3 -0
- package/build/types/tool.d.ts +22 -9
- package/build/types/zod/activityType.d.ts +38 -0
- package/build/types/zod/activityType.js +38 -0
- package/build/utils/fieldSelection.d.ts +22 -0
- package/build/utils/fieldSelection.js +40 -0
- package/build/utils/logger.js +41 -3
- package/build/utils/resolveIdOrKey.d.ts +2 -2
- package/build/utils/toolsetUtils.d.ts +1 -3
- package/build/utils/toolsetUtils.js +0 -12
- package/package.json +17 -25
- package/build/tools/dynamicTools/toolsets.d.ts +0 -15
- package/build/tools/dynamicTools/toolsets.js +0 -103
- package/build/types/zod/backlogOutputDefinition.d.ts +0 -3334
- package/build/types/zod/backlogOutputDefinition.js +0 -483
- package/build/utils/generateFieldsDescription.d.ts +0 -5
- package/build/utils/generateFieldsDescription.js +0 -50
- package/build/utils/toolRegistrar.d.ts +0 -5
- package/build/utils/toolRegistrar.js +0 -12
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { buildToolSchema } from '../types/tool.js';
|
|
3
|
-
import {
|
|
3
|
+
import { outputFields } from '../types/outputFields.js';
|
|
4
4
|
import { resolveIdOrKey } from '../utils/resolveIdOrKey.js';
|
|
5
5
|
const getWikiPagesSchema = buildToolSchema((t) => ({
|
|
6
6
|
projectId: z
|
|
@@ -21,7 +21,17 @@ export const getWikiPagesTool = (backlog, { t }) => {
|
|
|
21
21
|
name: 'get_wiki_pages',
|
|
22
22
|
description: t('TOOL_GET_WIKI_PAGES_DESCRIPTION', 'Returns list of Wiki pages'),
|
|
23
23
|
schema: z.object(getWikiPagesSchema(t)),
|
|
24
|
-
|
|
24
|
+
returnsList: true,
|
|
25
|
+
outputFields: outputFields()([
|
|
26
|
+
'id',
|
|
27
|
+
'projectId',
|
|
28
|
+
'name',
|
|
29
|
+
'tags',
|
|
30
|
+
'createdUser',
|
|
31
|
+
'created',
|
|
32
|
+
'updatedUser',
|
|
33
|
+
'updated',
|
|
34
|
+
]),
|
|
25
35
|
importantFields: ['projectId', 'name', 'tags'],
|
|
26
36
|
handler: async ({ projectId, projectKey, keyword }) => {
|
|
27
37
|
const result = resolveIdOrKey('project', { id: projectId, key: projectKey }, t);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type { Entity } from 'backlog-js';
|
|
2
3
|
import { Backlog } from 'backlog-js';
|
|
3
4
|
import { ToolDefinition } from '../types/tool.js';
|
|
4
5
|
import { DescriptionHelper } from '../createDescriptionHelper.js';
|
|
5
|
-
|
|
6
|
-
declare const getWikisCountSchema: (t: DescriptionHelper["t"]) => {
|
|
6
|
+
declare const getWikisCountSchema: (t: DescriptionHelper['t']) => {
|
|
7
7
|
projectId: z.ZodOptional<z.ZodNumber>;
|
|
8
8
|
projectKey: z.ZodOptional<z.ZodString>;
|
|
9
9
|
};
|
|
10
|
-
export declare const getWikisCountTool: (backlog: Backlog, { t }: DescriptionHelper) => ToolDefinition<ReturnType<typeof getWikisCountSchema>,
|
|
10
|
+
export declare const getWikisCountTool: (backlog: Backlog, { t }: DescriptionHelper) => ToolDefinition<ReturnType<typeof getWikisCountSchema>, Entity.Wiki.WikiCount>;
|
|
11
11
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { buildToolSchema } from '../types/tool.js';
|
|
3
|
-
import {
|
|
3
|
+
import { outputFields } from '../types/outputFields.js';
|
|
4
4
|
import { resolveIdOrKey } from '../utils/resolveIdOrKey.js';
|
|
5
5
|
const getWikisCountSchema = buildToolSchema((t) => ({
|
|
6
6
|
projectId: z
|
|
@@ -17,7 +17,8 @@ export const getWikisCountTool = (backlog, { t }) => {
|
|
|
17
17
|
name: 'get_wikis_count',
|
|
18
18
|
description: t('TOOL_GET_WIKIS_COUNT_DESCRIPTION', 'Returns count of wiki pages in a project'),
|
|
19
19
|
schema: z.object(getWikisCountSchema(t)),
|
|
20
|
-
|
|
20
|
+
returnsList: false,
|
|
21
|
+
outputFields: outputFields()(['count']),
|
|
21
22
|
handler: async ({ projectId, projectKey }) => {
|
|
22
23
|
const result = resolveIdOrKey('project', { id: projectId, key: projectKey }, t);
|
|
23
24
|
if (!result.ok) {
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { Backlog } from 'backlog-js';
|
|
3
3
|
import { ToolDefinition } from '../types/tool.js';
|
|
4
|
+
/** This tool reports its own outcome; the Backlog call returns nothing. */
|
|
5
|
+
type MarkNotificationAsReadResult = {
|
|
6
|
+
success: boolean;
|
|
7
|
+
message: string;
|
|
8
|
+
};
|
|
4
9
|
import { DescriptionHelper } from '../createDescriptionHelper.js';
|
|
5
|
-
declare const markNotificationAsReadSchema: (t: DescriptionHelper[
|
|
10
|
+
declare const markNotificationAsReadSchema: (t: DescriptionHelper['t']) => {
|
|
6
11
|
id: z.ZodNumber;
|
|
7
12
|
};
|
|
8
13
|
export declare const MarkNotificationAsReadResultSchema: z.ZodObject<{
|
|
9
14
|
success: z.ZodBoolean;
|
|
10
15
|
message: z.ZodString;
|
|
11
16
|
}, z.core.$strip>;
|
|
12
|
-
export declare const markNotificationAsReadTool: (backlog: Backlog, { t }: DescriptionHelper) => ToolDefinition<ReturnType<typeof markNotificationAsReadSchema>,
|
|
17
|
+
export declare const markNotificationAsReadTool: (backlog: Backlog, { t }: DescriptionHelper) => ToolDefinition<ReturnType<typeof markNotificationAsReadSchema>, MarkNotificationAsReadResult>;
|
|
13
18
|
export {};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { buildToolSchema } from '../types/tool.js';
|
|
3
|
+
import { outputFields } from '../types/outputFields.js';
|
|
3
4
|
const markNotificationAsReadSchema = buildToolSchema((t) => ({
|
|
4
5
|
id: z
|
|
5
6
|
.number()
|
|
@@ -14,7 +15,11 @@ export const markNotificationAsReadTool = (backlog, { t }) => {
|
|
|
14
15
|
name: 'mark_notification_as_read',
|
|
15
16
|
description: t('TOOL_MARK_NOTIFICATION_AS_READ_DESCRIPTION', 'Mark a notification as read'),
|
|
16
17
|
schema: z.object(markNotificationAsReadSchema(t)),
|
|
17
|
-
|
|
18
|
+
returnsList: false,
|
|
19
|
+
outputFields: outputFields()([
|
|
20
|
+
'success',
|
|
21
|
+
'message',
|
|
22
|
+
]),
|
|
18
23
|
handler: async ({ id }) => {
|
|
19
24
|
await backlog.markAsReadNotification(id);
|
|
20
25
|
return {
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { Backlog } from 'backlog-js';
|
|
3
3
|
import { ToolDefinition } from '../types/tool.js';
|
|
4
|
+
/** This tool reports its own outcome; the Backlog call returns nothing. */
|
|
5
|
+
type MarkWatchingAsReadResult = {
|
|
6
|
+
success: boolean;
|
|
7
|
+
message: string;
|
|
8
|
+
};
|
|
4
9
|
import { DescriptionHelper } from '../createDescriptionHelper.js';
|
|
5
|
-
declare const markWatchingAsReadSchema: (t: DescriptionHelper[
|
|
10
|
+
declare const markWatchingAsReadSchema: (t: DescriptionHelper['t']) => {
|
|
6
11
|
watchId: z.ZodNumber;
|
|
7
12
|
};
|
|
8
13
|
export declare const MarkWatchingAsReadResultSchema: z.ZodObject<{
|
|
9
14
|
success: z.ZodBoolean;
|
|
10
15
|
message: z.ZodString;
|
|
11
16
|
}, z.core.$strip>;
|
|
12
|
-
export declare const markWatchingAsReadTool: (backlog: Backlog, { t }: DescriptionHelper) => ToolDefinition<ReturnType<typeof markWatchingAsReadSchema>,
|
|
17
|
+
export declare const markWatchingAsReadTool: (backlog: Backlog, { t }: DescriptionHelper) => ToolDefinition<ReturnType<typeof markWatchingAsReadSchema>, MarkWatchingAsReadResult>;
|
|
13
18
|
export {};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { buildToolSchema } from '../types/tool.js';
|
|
3
|
+
import { outputFields } from '../types/outputFields.js';
|
|
3
4
|
const markWatchingAsReadSchema = buildToolSchema((t) => ({
|
|
4
5
|
watchId: z
|
|
5
6
|
.number()
|
|
@@ -14,7 +15,11 @@ export const markWatchingAsReadTool = (backlog, { t }) => {
|
|
|
14
15
|
name: 'mark_watching_as_read',
|
|
15
16
|
description: t('TOOL_MARK_WATCHING_AS_READ_DESCRIPTION', 'Mark a watch as read'),
|
|
16
17
|
schema: z.object(markWatchingAsReadSchema(t)),
|
|
17
|
-
|
|
18
|
+
returnsList: false,
|
|
19
|
+
outputFields: outputFields()([
|
|
20
|
+
'success',
|
|
21
|
+
'message',
|
|
22
|
+
]),
|
|
18
23
|
handler: async ({ watchId }) => {
|
|
19
24
|
await backlog.resetWatchingListItemAsRead(watchId);
|
|
20
25
|
return {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type { Entity } from 'backlog-js';
|
|
2
3
|
import { Backlog } from 'backlog-js';
|
|
3
4
|
import { ToolDefinition } from '../types/tool.js';
|
|
4
5
|
import { DescriptionHelper } from '../createDescriptionHelper.js';
|
|
5
|
-
|
|
6
|
-
declare const removeRelatedIssueSchema: (t: DescriptionHelper["t"]) => {
|
|
6
|
+
declare const removeRelatedIssueSchema: (t: DescriptionHelper['t']) => {
|
|
7
7
|
issueId: z.ZodOptional<z.ZodNumber>;
|
|
8
8
|
issueKey: z.ZodOptional<z.ZodString>;
|
|
9
9
|
relatedIssueId: z.ZodNumber;
|
|
10
10
|
};
|
|
11
|
-
export declare const removeRelatedIssueTool: (backlog: Backlog, { t }: DescriptionHelper) => ToolDefinition<ReturnType<typeof removeRelatedIssueSchema>,
|
|
11
|
+
export declare const removeRelatedIssueTool: (backlog: Backlog, { t }: DescriptionHelper) => ToolDefinition<ReturnType<typeof removeRelatedIssueSchema>, Entity.Issue.RelatedIssue>;
|
|
12
12
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { buildToolSchema } from '../types/tool.js';
|
|
3
|
-
import {
|
|
3
|
+
import { outputFields } from '../types/outputFields.js';
|
|
4
4
|
import { resolveIdOrKey } from '../utils/resolveIdOrKey.js';
|
|
5
5
|
const removeRelatedIssueSchema = buildToolSchema((t) => ({
|
|
6
6
|
issueId: z
|
|
@@ -20,7 +20,38 @@ export const removeRelatedIssueTool = (backlog, { t }) => {
|
|
|
20
20
|
name: 'remove_related_issue',
|
|
21
21
|
description: t('TOOL_REMOVE_RELATED_ISSUE_DESCRIPTION', 'Removes the relation between an issue and a related issue'),
|
|
22
22
|
schema: z.object(removeRelatedIssueSchema(t)),
|
|
23
|
-
|
|
23
|
+
returnsList: false,
|
|
24
|
+
outputFields: outputFields()([
|
|
25
|
+
'id',
|
|
26
|
+
'projectId',
|
|
27
|
+
'issueKey',
|
|
28
|
+
'keyId',
|
|
29
|
+
'issueType',
|
|
30
|
+
'summary',
|
|
31
|
+
'description',
|
|
32
|
+
'resolution',
|
|
33
|
+
'priority',
|
|
34
|
+
'status',
|
|
35
|
+
'assignee',
|
|
36
|
+
'category',
|
|
37
|
+
'versions',
|
|
38
|
+
'milestone',
|
|
39
|
+
'startDate',
|
|
40
|
+
'dueDate',
|
|
41
|
+
'estimatedHours',
|
|
42
|
+
'actualHours',
|
|
43
|
+
'parentIssueId',
|
|
44
|
+
'createdUser',
|
|
45
|
+
'created',
|
|
46
|
+
'updatedUser',
|
|
47
|
+
'updated',
|
|
48
|
+
'customFields',
|
|
49
|
+
'attachments',
|
|
50
|
+
'sharedFiles',
|
|
51
|
+
'stars',
|
|
52
|
+
'childIssueSummary',
|
|
53
|
+
'type',
|
|
54
|
+
]),
|
|
24
55
|
handler: async ({ issueId, issueKey, relatedIssueId }) => {
|
|
25
56
|
const result = resolveIdOrKey('issue', { id: issueId, key: issueKey }, t);
|
|
26
57
|
if (!result.ok) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import type { Entity } from 'backlog-js';
|
|
1
2
|
import { Backlog } from 'backlog-js';
|
|
2
3
|
import { ToolDefinition } from '../types/tool.js';
|
|
3
4
|
import { DescriptionHelper } from '../createDescriptionHelper.js';
|
|
4
|
-
|
|
5
|
-
declare const
|
|
6
|
-
export declare const resetUnreadNotificationCountTool: (backlog: Backlog, { t }: DescriptionHelper) => ToolDefinition<ReturnType<typeof resetUnreadNotificationCountSchema>, (typeof NotificationCountSchema)["shape"]>;
|
|
5
|
+
declare const resetUnreadNotificationCountSchema: (t: DescriptionHelper['t']) => {};
|
|
6
|
+
export declare const resetUnreadNotificationCountTool: (backlog: Backlog, { t }: DescriptionHelper) => ToolDefinition<ReturnType<typeof resetUnreadNotificationCountSchema>, Entity.Notification.NotificationCount>;
|
|
7
7
|
export {};
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { buildToolSchema } from '../types/tool.js';
|
|
3
|
-
import {
|
|
3
|
+
import { outputFields } from '../types/outputFields.js';
|
|
4
4
|
const resetUnreadNotificationCountSchema = buildToolSchema((_t) => ({}));
|
|
5
5
|
export const resetUnreadNotificationCountTool = (backlog, { t }) => {
|
|
6
6
|
return {
|
|
7
7
|
name: 'reset_unread_notification_count',
|
|
8
8
|
description: t('TOOL_RESET_UNREAD_NOTIFICATION_COUNT_DESCRIPTION', 'Reset unread notification count'),
|
|
9
9
|
schema: z.object(resetUnreadNotificationCountSchema(t)),
|
|
10
|
-
|
|
10
|
+
returnsList: false,
|
|
11
|
+
outputFields: outputFields()([
|
|
12
|
+
'count',
|
|
13
|
+
]),
|
|
11
14
|
handler: async () => backlog.resetNotificationsMarkAsRead(),
|
|
12
15
|
};
|
|
13
16
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { DescriptionHelper } from '../../createDescriptionHelper.js';
|
|
3
|
-
export declare const buildCustomFieldFilterSchema: (t: DescriptionHelper[
|
|
3
|
+
export declare const buildCustomFieldFilterSchema: (t: DescriptionHelper['t']) => z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
4
4
|
type: z.ZodLiteral<"text">;
|
|
5
5
|
id: z.ZodNumber;
|
|
6
6
|
value: z.ZodString;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { Backlog } from 'backlog-js';
|
|
3
|
+
import type { Entity } from 'backlog-js';
|
|
3
4
|
import { ToolDefinition } from '../types/tool.js';
|
|
4
5
|
import { DescriptionHelper } from '../createDescriptionHelper.js';
|
|
5
|
-
|
|
6
|
-
declare const updateIssueSchema: (t: DescriptionHelper["t"]) => {
|
|
6
|
+
declare const updateIssueSchema: (t: DescriptionHelper['t']) => {
|
|
7
7
|
issueId: z.ZodOptional<z.ZodNumber>;
|
|
8
8
|
issueKey: z.ZodOptional<z.ZodString>;
|
|
9
9
|
summary: z.ZodOptional<z.ZodString>;
|
|
@@ -30,5 +30,5 @@ declare const updateIssueSchema: (t: DescriptionHelper["t"]) => {
|
|
|
30
30
|
otherValue: z.ZodOptional<z.ZodString>;
|
|
31
31
|
}, z.core.$strip>>>;
|
|
32
32
|
};
|
|
33
|
-
export declare const updateIssueTool: (backlog: Backlog, { t }: DescriptionHelper) => ToolDefinition<ReturnType<typeof updateIssueSchema>,
|
|
33
|
+
export declare const updateIssueTool: (backlog: Backlog, { t }: DescriptionHelper) => ToolDefinition<ReturnType<typeof updateIssueSchema>, Entity.Issue.Issue>;
|
|
34
34
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { buildToolSchema } from '../types/tool.js';
|
|
3
|
-
import {
|
|
3
|
+
import { outputFields } from '../types/outputFields.js';
|
|
4
4
|
import { resolveIdOrKey } from '../utils/resolveIdOrKey.js';
|
|
5
5
|
import { customFieldsToPayload } from '../backlog/customFields.js';
|
|
6
6
|
const updateIssueSchema = buildToolSchema((t) => ({
|
|
@@ -135,7 +135,37 @@ export const updateIssueTool = (backlog, { t }) => {
|
|
|
135
135
|
name: 'update_issue',
|
|
136
136
|
description: t('TOOL_UPDATE_ISSUE_DESCRIPTION', 'Updates an existing issue'),
|
|
137
137
|
schema: z.object(updateIssueSchema(t)),
|
|
138
|
-
|
|
138
|
+
returnsList: false,
|
|
139
|
+
outputFields: outputFields()([
|
|
140
|
+
'id',
|
|
141
|
+
'projectId',
|
|
142
|
+
'issueKey',
|
|
143
|
+
'keyId',
|
|
144
|
+
'issueType',
|
|
145
|
+
'summary',
|
|
146
|
+
'description',
|
|
147
|
+
'resolution',
|
|
148
|
+
'priority',
|
|
149
|
+
'status',
|
|
150
|
+
'assignee',
|
|
151
|
+
'category',
|
|
152
|
+
'versions',
|
|
153
|
+
'milestone',
|
|
154
|
+
'startDate',
|
|
155
|
+
'dueDate',
|
|
156
|
+
'estimatedHours',
|
|
157
|
+
'actualHours',
|
|
158
|
+
'parentIssueId',
|
|
159
|
+
'createdUser',
|
|
160
|
+
'created',
|
|
161
|
+
'updatedUser',
|
|
162
|
+
'updated',
|
|
163
|
+
'customFields',
|
|
164
|
+
'attachments',
|
|
165
|
+
'sharedFiles',
|
|
166
|
+
'stars',
|
|
167
|
+
'childIssueSummary',
|
|
168
|
+
]),
|
|
139
169
|
handler: async ({ issueId, issueKey, customFields, ...params }) => {
|
|
140
170
|
const result = resolveIdOrKey('issue', { id: issueId, key: issueKey }, t);
|
|
141
171
|
if (!result.ok) {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type { Entity } from 'backlog-js';
|
|
2
3
|
import { Backlog } from 'backlog-js';
|
|
3
4
|
import { ToolDefinition } from '../types/tool.js';
|
|
4
5
|
import { DescriptionHelper } from '../createDescriptionHelper.js';
|
|
5
|
-
|
|
6
|
-
declare const updateIssueCommentSchema: (t: DescriptionHelper["t"]) => {
|
|
6
|
+
declare const updateIssueCommentSchema: (t: DescriptionHelper['t']) => {
|
|
7
7
|
issueId: z.ZodOptional<z.ZodNumber>;
|
|
8
8
|
issueKey: z.ZodOptional<z.ZodString>;
|
|
9
9
|
commentId: z.ZodNumber;
|
|
10
10
|
content: z.ZodString;
|
|
11
11
|
};
|
|
12
|
-
export declare const updateIssueCommentTool: (backlog: Backlog, { t }: DescriptionHelper) => ToolDefinition<ReturnType<typeof updateIssueCommentSchema>,
|
|
12
|
+
export declare const updateIssueCommentTool: (backlog: Backlog, { t }: DescriptionHelper) => ToolDefinition<ReturnType<typeof updateIssueCommentSchema>, Entity.Issue.Comment>;
|
|
13
13
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { buildToolSchema } from '../types/tool.js';
|
|
3
|
-
import {
|
|
3
|
+
import { outputFields } from '../types/outputFields.js';
|
|
4
4
|
import { resolveIdOrKey } from '../utils/resolveIdOrKey.js';
|
|
5
5
|
const updateIssueCommentSchema = buildToolSchema((t) => ({
|
|
6
6
|
issueId: z
|
|
@@ -23,7 +23,19 @@ export const updateIssueCommentTool = (backlog, { t }) => {
|
|
|
23
23
|
name: 'update_issue_comment',
|
|
24
24
|
description: t('TOOL_UPDATE_ISSUE_COMMENT_DESCRIPTION', 'Updates a comment on an issue'),
|
|
25
25
|
schema: z.object(updateIssueCommentSchema(t)),
|
|
26
|
-
|
|
26
|
+
returnsList: false,
|
|
27
|
+
outputFields: outputFields()([
|
|
28
|
+
'id',
|
|
29
|
+
'projectId',
|
|
30
|
+
'issueId',
|
|
31
|
+
'content',
|
|
32
|
+
'changeLog',
|
|
33
|
+
'createdUser',
|
|
34
|
+
'created',
|
|
35
|
+
'updated',
|
|
36
|
+
'stars',
|
|
37
|
+
'notifications',
|
|
38
|
+
]),
|
|
27
39
|
importantFields: ['id', 'content', 'createdUser', 'updated'],
|
|
28
40
|
handler: async ({ issueId, issueKey, commentId, content }) => {
|
|
29
41
|
const result = resolveIdOrKey('issue', { id: issueId, key: issueKey }, t);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type { Entity } from 'backlog-js';
|
|
2
3
|
import { Backlog } from 'backlog-js';
|
|
3
4
|
import { ToolDefinition } from '../types/tool.js';
|
|
4
5
|
import { DescriptionHelper } from '../createDescriptionHelper.js';
|
|
5
|
-
|
|
6
|
-
declare const updateProjectSchema: (t: DescriptionHelper["t"]) => {
|
|
6
|
+
declare const updateProjectSchema: (t: DescriptionHelper['t']) => {
|
|
7
7
|
projectId: z.ZodOptional<z.ZodNumber>;
|
|
8
8
|
projectKey: z.ZodOptional<z.ZodString>;
|
|
9
9
|
name: z.ZodOptional<z.ZodString>;
|
|
@@ -17,5 +17,5 @@ declare const updateProjectSchema: (t: DescriptionHelper["t"]) => {
|
|
|
17
17
|
}>>;
|
|
18
18
|
archived: z.ZodOptional<z.ZodBoolean>;
|
|
19
19
|
};
|
|
20
|
-
export declare const updateProjectTool: (backlog: Backlog, { t }: DescriptionHelper) => ToolDefinition<ReturnType<typeof updateProjectSchema>,
|
|
20
|
+
export declare const updateProjectTool: (backlog: Backlog, { t }: DescriptionHelper) => ToolDefinition<ReturnType<typeof updateProjectSchema>, Entity.Project.Project>;
|
|
21
21
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { buildToolSchema } from '../types/tool.js';
|
|
3
|
-
import {
|
|
3
|
+
import { outputFields } from '../types/outputFields.js';
|
|
4
4
|
import { resolveIdOrKey } from '../utils/resolveIdOrKey.js';
|
|
5
5
|
const updateProjectSchema = buildToolSchema((t) => ({
|
|
6
6
|
projectId: z
|
|
@@ -45,7 +45,27 @@ export const updateProjectTool = (backlog, { t }) => {
|
|
|
45
45
|
name: 'update_project',
|
|
46
46
|
description: t('TOOL_UPDATE_PROJECT_DESCRIPTION', 'Updates an existing project'),
|
|
47
47
|
schema: z.object(updateProjectSchema(t)),
|
|
48
|
-
|
|
48
|
+
returnsList: false,
|
|
49
|
+
outputFields: outputFields()([
|
|
50
|
+
'id',
|
|
51
|
+
'projectKey',
|
|
52
|
+
'name',
|
|
53
|
+
'chartEnabled',
|
|
54
|
+
'useResolvedForChart',
|
|
55
|
+
'subtaskingEnabled',
|
|
56
|
+
'projectLeaderCanEditProjectLeader',
|
|
57
|
+
'useWiki',
|
|
58
|
+
'useFileSharing',
|
|
59
|
+
'useWikiTreeView',
|
|
60
|
+
'useOriginalImageSizeAtWiki',
|
|
61
|
+
'useSubversion',
|
|
62
|
+
'useGit',
|
|
63
|
+
'textFormattingRule',
|
|
64
|
+
'archived',
|
|
65
|
+
'displayOrder',
|
|
66
|
+
'useDevAttributes',
|
|
67
|
+
'grandchildIssueEnabled',
|
|
68
|
+
]),
|
|
49
69
|
handler: async ({ projectId, projectKey, ...param }) => {
|
|
50
70
|
const result = resolveIdOrKey('project', { id: projectId, key: projectKey }, t);
|
|
51
71
|
if (!result.ok) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type { Entity } from 'backlog-js';
|
|
2
3
|
import { Backlog } from 'backlog-js';
|
|
3
4
|
import { ToolDefinition } from '../types/tool.js';
|
|
4
5
|
import { DescriptionHelper } from '../createDescriptionHelper.js';
|
|
5
|
-
|
|
6
|
-
declare const updatePullRequestSchema: (t: DescriptionHelper["t"]) => {
|
|
6
|
+
declare const updatePullRequestSchema: (t: DescriptionHelper['t']) => {
|
|
7
7
|
projectId: z.ZodOptional<z.ZodNumber>;
|
|
8
8
|
projectKey: z.ZodOptional<z.ZodString>;
|
|
9
9
|
repoId: z.ZodOptional<z.ZodNumber>;
|
|
@@ -16,5 +16,5 @@ declare const updatePullRequestSchema: (t: DescriptionHelper["t"]) => {
|
|
|
16
16
|
notifiedUserId: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
17
17
|
statusId: z.ZodOptional<z.ZodNumber>;
|
|
18
18
|
};
|
|
19
|
-
export declare const updatePullRequestTool: (backlog: Backlog, { t }: DescriptionHelper) => ToolDefinition<ReturnType<typeof updatePullRequestSchema>,
|
|
19
|
+
export declare const updatePullRequestTool: (backlog: Backlog, { t }: DescriptionHelper) => ToolDefinition<ReturnType<typeof updatePullRequestSchema>, Entity.PullRequest.PullRequest>;
|
|
20
20
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { buildToolSchema } from '../types/tool.js';
|
|
3
|
-
import {
|
|
3
|
+
import { outputFields } from '../types/outputFields.js';
|
|
4
4
|
import { resolveIdOrKey } from '../utils/resolveIdOrKey.js';
|
|
5
5
|
const updatePullRequestSchema = buildToolSchema((t) => ({
|
|
6
6
|
projectId: z
|
|
@@ -52,7 +52,31 @@ export const updatePullRequestTool = (backlog, { t }) => {
|
|
|
52
52
|
name: 'update_pull_request',
|
|
53
53
|
description: t('TOOL_UPDATE_PULL_REQUEST_DESCRIPTION', 'Updates an existing pull request'),
|
|
54
54
|
schema: z.object(updatePullRequestSchema(t)),
|
|
55
|
-
|
|
55
|
+
returnsList: false,
|
|
56
|
+
outputFields: outputFields()([
|
|
57
|
+
'id',
|
|
58
|
+
'projectId',
|
|
59
|
+
'repositoryId',
|
|
60
|
+
'number',
|
|
61
|
+
'summary',
|
|
62
|
+
'description',
|
|
63
|
+
'base',
|
|
64
|
+
'branch',
|
|
65
|
+
'status',
|
|
66
|
+
'assignee',
|
|
67
|
+
'issue',
|
|
68
|
+
'baseCommit',
|
|
69
|
+
'branchCommit',
|
|
70
|
+
'mergeCommit',
|
|
71
|
+
'closeAt',
|
|
72
|
+
'mergeAt',
|
|
73
|
+
'createdUser',
|
|
74
|
+
'created',
|
|
75
|
+
'updatedUser',
|
|
76
|
+
'updated',
|
|
77
|
+
'attachments',
|
|
78
|
+
'stars',
|
|
79
|
+
]),
|
|
56
80
|
handler: async ({ projectId, projectKey, repoId, repoName, number, ...params }) => {
|
|
57
81
|
const result = resolveIdOrKey('project', { id: projectId, key: projectKey }, t);
|
|
58
82
|
if (!result.ok) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type { Entity } from 'backlog-js';
|
|
2
3
|
import { Backlog } from 'backlog-js';
|
|
3
4
|
import { ToolDefinition } from '../types/tool.js';
|
|
4
5
|
import { DescriptionHelper } from '../createDescriptionHelper.js';
|
|
5
|
-
|
|
6
|
-
declare const updatePullRequestCommentSchema: (t: DescriptionHelper["t"]) => {
|
|
6
|
+
declare const updatePullRequestCommentSchema: (t: DescriptionHelper['t']) => {
|
|
7
7
|
projectId: z.ZodOptional<z.ZodNumber>;
|
|
8
8
|
projectKey: z.ZodOptional<z.ZodString>;
|
|
9
9
|
repoId: z.ZodOptional<z.ZodNumber>;
|
|
@@ -12,5 +12,5 @@ declare const updatePullRequestCommentSchema: (t: DescriptionHelper["t"]) => {
|
|
|
12
12
|
commentId: z.ZodNumber;
|
|
13
13
|
content: z.ZodString;
|
|
14
14
|
};
|
|
15
|
-
export declare const updatePullRequestCommentTool: (backlog: Backlog, { t }: DescriptionHelper) => ToolDefinition<ReturnType<typeof updatePullRequestCommentSchema>,
|
|
15
|
+
export declare const updatePullRequestCommentTool: (backlog: Backlog, { t }: DescriptionHelper) => ToolDefinition<ReturnType<typeof updatePullRequestCommentSchema>, Entity.PullRequest.Comment>;
|
|
16
16
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { buildToolSchema } from '../types/tool.js';
|
|
3
|
-
import {
|
|
3
|
+
import { outputFields } from '../types/outputFields.js';
|
|
4
4
|
import { resolveIdOrKey, resolveIdOrName } from '../utils/resolveIdOrKey.js';
|
|
5
5
|
const updatePullRequestCommentSchema = buildToolSchema((t) => ({
|
|
6
6
|
projectId: z
|
|
@@ -34,7 +34,17 @@ export const updatePullRequestCommentTool = (backlog, { t }) => {
|
|
|
34
34
|
name: 'update_pull_request_comment',
|
|
35
35
|
description: t('TOOL_UPDATE_PULL_REQUEST_COMMENT_DESCRIPTION', 'Updates a comment on a pull request'),
|
|
36
36
|
schema: z.object(updatePullRequestCommentSchema(t)),
|
|
37
|
-
|
|
37
|
+
returnsList: false,
|
|
38
|
+
outputFields: outputFields()([
|
|
39
|
+
'id',
|
|
40
|
+
'content',
|
|
41
|
+
'changeLog',
|
|
42
|
+
'createdUser',
|
|
43
|
+
'created',
|
|
44
|
+
'updated',
|
|
45
|
+
'stars',
|
|
46
|
+
'notifications',
|
|
47
|
+
]),
|
|
38
48
|
importantFields: ['id', 'content', 'createdUser', 'updated'],
|
|
39
49
|
handler: async ({ projectId, projectKey, repoId, repoName, number, commentId, content, }) => {
|
|
40
50
|
const result = resolveIdOrKey('project', { id: projectId, key: projectKey }, t);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type { Entity } from 'backlog-js';
|
|
2
3
|
import { Backlog } from 'backlog-js';
|
|
3
4
|
import { ToolDefinition } from '../types/tool.js';
|
|
4
5
|
import { DescriptionHelper } from '../createDescriptionHelper.js';
|
|
5
|
-
|
|
6
|
-
declare const updateVersionMilestoneSchema: (t: DescriptionHelper["t"]) => {
|
|
6
|
+
declare const updateVersionMilestoneSchema: (t: DescriptionHelper['t']) => {
|
|
7
7
|
projectId: z.ZodOptional<z.ZodNumber>;
|
|
8
8
|
projectKey: z.ZodOptional<z.ZodString>;
|
|
9
9
|
id: z.ZodNumber;
|
|
@@ -13,5 +13,5 @@ declare const updateVersionMilestoneSchema: (t: DescriptionHelper["t"]) => {
|
|
|
13
13
|
releaseDueDate: z.ZodOptional<z.ZodString>;
|
|
14
14
|
archived: z.ZodOptional<z.ZodBoolean>;
|
|
15
15
|
};
|
|
16
|
-
export declare const updateVersionMilestoneTool: (backlog: Backlog, { t }: DescriptionHelper) => ToolDefinition<ReturnType<typeof updateVersionMilestoneSchema>,
|
|
16
|
+
export declare const updateVersionMilestoneTool: (backlog: Backlog, { t }: DescriptionHelper) => ToolDefinition<ReturnType<typeof updateVersionMilestoneSchema>, Entity.Project.Version>;
|
|
17
17
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { buildToolSchema } from '../types/tool.js';
|
|
3
|
-
import {
|
|
3
|
+
import { outputFields } from '../types/outputFields.js';
|
|
4
4
|
import { resolveIdOrKey } from '../utils/resolveIdOrKey.js';
|
|
5
5
|
const updateVersionMilestoneSchema = buildToolSchema((t) => ({
|
|
6
6
|
projectId: z
|
|
@@ -37,7 +37,17 @@ export const updateVersionMilestoneTool = (backlog, { t }) => {
|
|
|
37
37
|
name: 'update_version_milestone',
|
|
38
38
|
description: t('TOOL_UPDATE_VERSION_MILESTONE_DESCRIPTION', 'Updates an existing version milestone'),
|
|
39
39
|
schema: z.object(updateVersionMilestoneSchema(t)),
|
|
40
|
-
|
|
40
|
+
returnsList: false,
|
|
41
|
+
outputFields: outputFields()([
|
|
42
|
+
'id',
|
|
43
|
+
'projectId',
|
|
44
|
+
'name',
|
|
45
|
+
'description',
|
|
46
|
+
'startDate',
|
|
47
|
+
'releaseDueDate',
|
|
48
|
+
'archived',
|
|
49
|
+
'displayOrder',
|
|
50
|
+
]),
|
|
41
51
|
importantFields: [
|
|
42
52
|
'id',
|
|
43
53
|
'name',
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type { Entity } from 'backlog-js';
|
|
2
3
|
import { Backlog } from 'backlog-js';
|
|
3
4
|
import { ToolDefinition } from '../types/tool.js';
|
|
4
5
|
import { DescriptionHelper } from '../createDescriptionHelper.js';
|
|
5
|
-
|
|
6
|
-
declare const updateWatchingSchema: (t: DescriptionHelper["t"]) => {
|
|
6
|
+
declare const updateWatchingSchema: (t: DescriptionHelper['t']) => {
|
|
7
7
|
watchId: z.ZodNumber;
|
|
8
8
|
note: z.ZodString;
|
|
9
9
|
};
|
|
10
|
-
export declare const updateWatchingTool: (backlog: Backlog, { t }: DescriptionHelper) => ToolDefinition<ReturnType<typeof updateWatchingSchema>,
|
|
10
|
+
export declare const updateWatchingTool: (backlog: Backlog, { t }: DescriptionHelper) => ToolDefinition<ReturnType<typeof updateWatchingSchema>, Entity.WatchingList.WatchingListItem>;
|
|
11
11
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { buildToolSchema } from '../types/tool.js';
|
|
3
|
-
import {
|
|
3
|
+
import { outputFields } from '../types/outputFields.js';
|
|
4
4
|
const updateWatchingSchema = buildToolSchema((t) => ({
|
|
5
5
|
watchId: z.number().describe(t('TOOL_UPDATE_WATCHING_WATCH_ID', 'Watch ID')),
|
|
6
6
|
note: z
|
|
@@ -12,7 +12,17 @@ export const updateWatchingTool = (backlog, { t }) => {
|
|
|
12
12
|
name: 'update_watching',
|
|
13
13
|
description: t('TOOL_UPDATE_WATCHING_DESCRIPTION', 'Updates an existing watch note'),
|
|
14
14
|
schema: z.object(updateWatchingSchema(t)),
|
|
15
|
-
|
|
15
|
+
returnsList: false,
|
|
16
|
+
outputFields: outputFields()([
|
|
17
|
+
'id',
|
|
18
|
+
'resourceAlreadyRead',
|
|
19
|
+
'note',
|
|
20
|
+
'type',
|
|
21
|
+
'issue',
|
|
22
|
+
'lastContentUpdated',
|
|
23
|
+
'created',
|
|
24
|
+
'updated',
|
|
25
|
+
]),
|
|
16
26
|
handler: async ({ watchId, note }) => backlog.patchWatchingListItem(watchId, note),
|
|
17
27
|
};
|
|
18
28
|
};
|