@brxce/mcp-server 1.0.0 ā 1.0.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.md +3 -3
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -10
- package/dist/index.js.map +1 -1
- package/dist/prompts/worknode-prompts.d.ts.map +1 -1
- package/dist/prompts/worknode-prompts.js +43 -15
- package/dist/prompts/worknode-prompts.js.map +1 -1
- package/dist/prompts/workspace-context-prompt.js +6 -6
- package/dist/prompts/workspace-context-prompt.js.map +1 -1
- package/dist/resources/user-resource.d.ts.map +1 -1
- package/dist/resources/user-resource.js +12 -1
- package/dist/resources/user-resource.js.map +1 -1
- package/dist/resources/workspace-members-resource.d.ts.map +1 -1
- package/dist/resources/workspace-members-resource.js +12 -3
- package/dist/resources/workspace-members-resource.js.map +1 -1
- package/dist/resources/workspace-resource.d.ts.map +1 -1
- package/dist/resources/workspace-resource.js +9 -1
- package/dist/resources/workspace-resource.js.map +1 -1
- package/dist/services/api-client.d.ts.map +1 -1
- package/dist/services/api-client.js +2 -6
- package/dist/services/api-client.js.map +1 -1
- package/dist/tools/meeting-agenda-tool.js +1 -1
- package/dist/tools/meeting-agenda-tool.js.map +1 -1
- package/dist/tools/meeting-create-tool.d.ts.map +1 -1
- package/dist/tools/meeting-create-tool.js +2 -2
- package/dist/tools/meeting-create-tool.js.map +1 -1
- package/dist/tools/meeting-decisions-tool.js +1 -1
- package/dist/tools/meeting-decisions-tool.js.map +1 -1
- package/dist/tools/meeting-list-tool.d.ts.map +1 -1
- package/dist/tools/meeting-list-tool.js +1 -1
- package/dist/tools/meeting-list-tool.js.map +1 -1
- package/dist/tools/tag-category-tool.js +4 -4
- package/dist/tools/tag-category-tool.js.map +1 -1
- package/dist/tools/tag-search-tool.js +3 -3
- package/dist/tools/tag-search-tool.js.map +1 -1
- package/dist/tools/tag-tool.js +5 -5
- package/dist/tools/tag-tool.js.map +1 -1
- package/dist/tools/worknode-archive-tool.d.ts.map +1 -1
- package/dist/tools/worknode-archive-tool.js +2 -2
- package/dist/tools/worknode-archive-tool.js.map +1 -1
- package/dist/tools/worknode-create-tool.d.ts.map +1 -1
- package/dist/tools/worknode-create-tool.js +113 -225
- package/dist/tools/worknode-create-tool.js.map +1 -1
- package/dist/tools/worknode-my-work-tool.d.ts.map +1 -1
- package/dist/tools/worknode-my-work-tool.js +1 -8
- package/dist/tools/worknode-my-work-tool.js.map +1 -1
- package/dist/tools/worknode-plan-organize-tool.d.ts +4 -0
- package/dist/tools/worknode-plan-organize-tool.d.ts.map +1 -0
- package/dist/tools/worknode-plan-organize-tool.js +356 -0
- package/dist/tools/worknode-plan-organize-tool.js.map +1 -0
- package/dist/tools/worknode-read-tool.d.ts +4 -0
- package/dist/tools/worknode-read-tool.d.ts.map +1 -0
- package/dist/tools/worknode-read-tool.js +312 -0
- package/dist/tools/worknode-read-tool.js.map +1 -0
- package/dist/tools/worknode-search-tool.d.ts.map +1 -1
- package/dist/tools/worknode-search-tool.js +25 -44
- package/dist/tools/worknode-search-tool.js.map +1 -1
- package/dist/tools/worknode-subtree-tool.d.ts.map +1 -1
- package/dist/tools/worknode-subtree-tool.js +8 -12
- package/dist/tools/worknode-subtree-tool.js.map +1 -1
- package/dist/tools/worknode-tag-tool.js +8 -8
- package/dist/tools/worknode-tag-tool.js.map +1 -1
- package/dist/tools/worknode-update-tool.d.ts.map +1 -1
- package/dist/tools/worknode-update-tool.js +104 -173
- package/dist/tools/worknode-update-tool.js.map +1 -1
- package/dist/tools/workspace-inbox-tool.d.ts.map +1 -1
- package/dist/tools/workspace-inbox-tool.js +3 -2
- package/dist/tools/workspace-inbox-tool.js.map +1 -1
- package/dist/tools/workspace-list-tool.d.ts +8 -0
- package/dist/tools/workspace-list-tool.d.ts.map +1 -0
- package/dist/tools/workspace-list-tool.js +113 -0
- package/dist/tools/workspace-list-tool.js.map +1 -0
- package/dist/tools/workspace-members-list-tool.d.ts +8 -0
- package/dist/tools/workspace-members-list-tool.d.ts.map +1 -0
- package/dist/tools/workspace-members-list-tool.js +207 -0
- package/dist/tools/workspace-members-list-tool.js.map +1 -0
- package/dist/tools/workspace-statistics-tool.d.ts +8 -0
- package/dist/tools/workspace-statistics-tool.d.ts.map +1 -0
- package/dist/tools/workspace-statistics-tool.js +300 -0
- package/dist/tools/workspace-statistics-tool.js.map +1 -0
- package/dist/tools/workspace-tree-tool.d.ts.map +1 -1
- package/dist/tools/workspace-tree-tool.js +6 -12
- package/dist/tools/workspace-tree-tool.js.map +1 -1
- package/package.json +11 -10
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export function registerWorknodeReadTool(server, apiClient) {
|
|
3
|
+
const userIdentifierSchema = z.union([z.literal('me'), z.string().min(1)]);
|
|
4
|
+
const createdByFilterSchema = z.object({
|
|
5
|
+
equals: userIdentifierSchema.optional(),
|
|
6
|
+
notEquals: userIdentifierSchema.optional()
|
|
7
|
+
}).refine((value) => Boolean(value.equals || value.notEquals), {
|
|
8
|
+
message: 'createdByFilter must include equals or notEquals'
|
|
9
|
+
});
|
|
10
|
+
const assigneeFilterConditionSchema = z.object({
|
|
11
|
+
has: userIdentifierSchema.optional(),
|
|
12
|
+
notHas: userIdentifierSchema.optional(),
|
|
13
|
+
isEmpty: z.boolean().optional(),
|
|
14
|
+
isNotEmpty: z.boolean().optional(),
|
|
15
|
+
hasOnly: userIdentifierSchema.optional(),
|
|
16
|
+
hasOthersThan: userIdentifierSchema.optional()
|
|
17
|
+
});
|
|
18
|
+
const assigneeFilterSchema = assigneeFilterConditionSchema.extend({
|
|
19
|
+
anyOf: z.array(assigneeFilterConditionSchema).min(1).optional()
|
|
20
|
+
}).refine((value) => {
|
|
21
|
+
const hasBase = Boolean(value.has ||
|
|
22
|
+
value.notHas ||
|
|
23
|
+
value.hasOnly ||
|
|
24
|
+
value.hasOthersThan ||
|
|
25
|
+
value.isEmpty === true ||
|
|
26
|
+
value.isNotEmpty === true);
|
|
27
|
+
const hasAnyOf = Array.isArray(value.anyOf) && value.anyOf.length > 0;
|
|
28
|
+
return hasBase || hasAnyOf;
|
|
29
|
+
}, {
|
|
30
|
+
message: 'assigneeFilter must specify at least one condition'
|
|
31
|
+
});
|
|
32
|
+
/**
|
|
33
|
+
* Search WorkNodes by keyword
|
|
34
|
+
*/
|
|
35
|
+
server.registerTool('brxce_read_worknodes', {
|
|
36
|
+
description: `Read WorkNodes by keyword with token-efficient response format.
|
|
37
|
+
|
|
38
|
+
ā ļø **CRITICAL: Workspace Verification (Optional but Recommended)**
|
|
39
|
+
If filtering by workspace:
|
|
40
|
+
1. Read the \`user://me\` resource to get available workspaces
|
|
41
|
+
2. Identify the correct workspaceId from the resource data
|
|
42
|
+
3. If user mentions a specific workspace, verify it exists in user://me
|
|
43
|
+
4. NEVER assume or guess workspaceId values
|
|
44
|
+
5. If workspaceId is omitted, searches across ALL user's accessible workspaces
|
|
45
|
+
|
|
46
|
+
**Example Workflow:**
|
|
47
|
+
\`\`\`
|
|
48
|
+
User: "Find all MCP related tasks in BRXCE Development"
|
|
49
|
+
LLM:
|
|
50
|
+
1. Reads user://me resource
|
|
51
|
+
2. Finds workspace: {id: 138, name: "BRXCE Development"}
|
|
52
|
+
3. Calls brxce_read_worknodes with query="MCP", workspaceId=138, nodeTypes=["task"]
|
|
53
|
+
\`\`\`
|
|
54
|
+
|
|
55
|
+
**When to use this tool:**
|
|
56
|
+
The LLM should automatically call this tool when the user asks about:
|
|
57
|
+
- "Find tasks about X" ā Use query="X", nodeTypes=["task"]
|
|
58
|
+
- "Search for AI projects" ā Use query="AI", nodeTypes=["project"]
|
|
59
|
+
- "Find all MCP-related work" ā Use query="MCP"
|
|
60
|
+
- "Show me critical priority items" ā Use priorities=["critical"]
|
|
61
|
+
- "Find completed tasks about backend" ā Use query="backend", statuses=["completed"]
|
|
62
|
+
|
|
63
|
+
**Response Format:**
|
|
64
|
+
- Returns 11 essential fields: id, title, nodeType, status, priority, parentNodeId, nodeLevel, workspaceId, assignee, dueDate, tags
|
|
65
|
+
- **Tags**: Array of tag names (string[]) for token efficiency
|
|
66
|
+
- **Optimized for LLM token usage**
|
|
67
|
+
|
|
68
|
+
**Search Features:**
|
|
69
|
+
- Keyword search: Searches in both title and description fields (case-insensitive)
|
|
70
|
+
- Filter by workspace: Limit search to specific workspace
|
|
71
|
+
- Filter by nodeType: goal, project, subproject, task, subtask
|
|
72
|
+
- Filter by status: backlog, not_started, in_progress, in_review, completed, cancelled
|
|
73
|
+
- Filter by priority: critical, urgent, high, medium, low
|
|
74
|
+
- Ownership filters: Combine createdBy/createdByFilter with assignee/assigneeFilter (has/notHas/isEmpty/isNotEmpty/hasOnly/hasOthersThan/anyOf, supports "me")
|
|
75
|
+
- Pagination: Use limit and offset for large result sets
|
|
76
|
+
|
|
77
|
+
**Access Control:**
|
|
78
|
+
- Only searches WorkNodes in workspaces the user has access to
|
|
79
|
+
- If workspaceId specified, validates user membership before searching
|
|
80
|
+
|
|
81
|
+
**Best Practices:**
|
|
82
|
+
1. Combine multiple filters for precise searches (e.g., query + nodeTypes + statuses)
|
|
83
|
+
2. Use pagination (limit 50-100) for initial searches
|
|
84
|
+
3. Filter by workspace when user mentions a specific workspace
|
|
85
|
+
4. Use appropriate nodeTypes filter when user asks about specific levels (goals, projects, tasks)
|
|
86
|
+
|
|
87
|
+
**Example Searches:**
|
|
88
|
+
|
|
89
|
+
1. Find all MCP-related work across all workspaces:
|
|
90
|
+
\`\`\`typescript
|
|
91
|
+
brxce_read_worknodes({
|
|
92
|
+
query: "MCP",
|
|
93
|
+
limit: 50
|
|
94
|
+
})
|
|
95
|
+
\`\`\`
|
|
96
|
+
|
|
97
|
+
2. Find high-priority tasks in specific workspace:
|
|
98
|
+
\`\`\`typescript
|
|
99
|
+
brxce_read_worknodes({
|
|
100
|
+
workspaceId: 138,
|
|
101
|
+
nodeTypes: ["task", "subtask"],
|
|
102
|
+
priorities: ["high", "critical"],
|
|
103
|
+
statuses: ["not_started", "in_progress"]
|
|
104
|
+
})
|
|
105
|
+
\`\`\`
|
|
106
|
+
|
|
107
|
+
3. Search for AI-related projects:
|
|
108
|
+
\`\`\`typescript
|
|
109
|
+
brxce_read_worknodes({
|
|
110
|
+
query: "AI",
|
|
111
|
+
nodeTypes: ["project", "subproject"],
|
|
112
|
+
limit: 20
|
|
113
|
+
})
|
|
114
|
+
\`\`\`
|
|
115
|
+
|
|
116
|
+
4. Find all backlog items (inbox) about API:
|
|
117
|
+
\`\`\`typescript
|
|
118
|
+
brxce_read_worknodes({
|
|
119
|
+
query: "API",
|
|
120
|
+
statuses: ["backlog"]
|
|
121
|
+
})
|
|
122
|
+
\`\`\`
|
|
123
|
+
|
|
124
|
+
**Output Format:**
|
|
125
|
+
Returns JSON with:
|
|
126
|
+
- nodes: Array of WorkNode objects (11 fields each)
|
|
127
|
+
- total: Total count of matching WorkNodes
|
|
128
|
+
- limit, offset: Pagination info
|
|
129
|
+
|
|
130
|
+
ā° **TIMEZONE HANDLING:**
|
|
131
|
+
ALL date/time fields in the response are in UTC (ISO 8601 format):
|
|
132
|
+
- completedAt, createdAt, updatedAt, dueDate, startDate
|
|
133
|
+
|
|
134
|
+
When presenting results to the user, you MUST convert UTC timestamps to the user's local timezone:
|
|
135
|
+
1. Check the current date/time from the <env> tag in the system prompt
|
|
136
|
+
2. Identify the user's timezone (e.g., Asia/Seoul = UTC+9)
|
|
137
|
+
3. Convert ALL displayed timestamps from UTC to local time
|
|
138
|
+
4. Format dates in a user-friendly way (e.g., "ģ¤ķ 5:16" not "08:16 UTC")
|
|
139
|
+
|
|
140
|
+
Example conversion (Korea Time, UTC+9):
|
|
141
|
+
- API returns: "completedAt": "2025-10-20T08:16:25.556Z" (UTC)
|
|
142
|
+
- Display to user: "ģė£: 2025-10-20 ģ¤ķ 5:16" (KST)
|
|
143
|
+
|
|
144
|
+
The LLM should format this data into a readable summary for the user.`,
|
|
145
|
+
inputSchema: {
|
|
146
|
+
query: z.string().optional().describe('Search keyword for title/description (case-insensitive)'),
|
|
147
|
+
workspaceId: z.string().uuid().optional().describe('Filter by workspace ID (validates user access)'),
|
|
148
|
+
nodeTypes: z.array(z.enum(['goal', 'project', 'subproject', 'task', 'subtask'])).optional()
|
|
149
|
+
.describe('Filter by node types'),
|
|
150
|
+
statuses: z.array(z.enum(['backlog', 'not_started', 'in_progress', 'in_review', 'completed', 'cancelled'])).optional()
|
|
151
|
+
.describe('Filter by statuses'),
|
|
152
|
+
priorities: z.array(z.enum(['critical', 'urgent', 'high', 'medium', 'low'])).optional()
|
|
153
|
+
.describe('Filter by priorities'),
|
|
154
|
+
createdBy: userIdentifierSchema.optional().describe('Creator user ID or "me"'),
|
|
155
|
+
createdByFilter: createdByFilterSchema.optional().describe('Creator filter object { equals?, notEquals? } (supports "me")'),
|
|
156
|
+
assignee: userIdentifierSchema.optional().describe('Assignee user ID or "me"'),
|
|
157
|
+
assigneeFilter: assigneeFilterSchema.optional().describe('Advanced assignee filter { has?, notHas?, isEmpty?, isNotEmpty?, hasOnly?, hasOthersThan?, anyOf[...] }'),
|
|
158
|
+
limit: z.number().optional().describe('Maximum results (default: 50, max: 200)'),
|
|
159
|
+
offset: z.number().optional().describe('Offset for pagination (default: 0)')
|
|
160
|
+
}
|
|
161
|
+
}, async (args) => {
|
|
162
|
+
try {
|
|
163
|
+
const { query, workspaceId, nodeTypes, statuses, priorities, createdBy, createdByFilter, assignee, assigneeFilter, limit = 50, offset = 0 } = args;
|
|
164
|
+
const requestBody = {
|
|
165
|
+
limit,
|
|
166
|
+
offset
|
|
167
|
+
};
|
|
168
|
+
if (query)
|
|
169
|
+
requestBody.query = query;
|
|
170
|
+
if (workspaceId !== undefined)
|
|
171
|
+
requestBody.workspaceId = workspaceId;
|
|
172
|
+
if (nodeTypes && nodeTypes.length > 0)
|
|
173
|
+
requestBody.nodeTypes = nodeTypes;
|
|
174
|
+
if (statuses && statuses.length > 0)
|
|
175
|
+
requestBody.statuses = statuses;
|
|
176
|
+
if (priorities && priorities.length > 0)
|
|
177
|
+
requestBody.priorities = priorities;
|
|
178
|
+
if (createdBy)
|
|
179
|
+
requestBody.createdBy = createdBy;
|
|
180
|
+
if (createdByFilter)
|
|
181
|
+
requestBody.createdByFilter = createdByFilter;
|
|
182
|
+
if (assignee)
|
|
183
|
+
requestBody.assignee = assignee;
|
|
184
|
+
if (assigneeFilter)
|
|
185
|
+
requestBody.assigneeFilter = assigneeFilter;
|
|
186
|
+
const response = await apiClient.post('/mcp/worknodes/read', requestBody);
|
|
187
|
+
if (!response.success) {
|
|
188
|
+
return {
|
|
189
|
+
content: [
|
|
190
|
+
{
|
|
191
|
+
type: 'text',
|
|
192
|
+
text: `Failed to search WorkNodes: ${response.message || 'Unknown error'}`,
|
|
193
|
+
},
|
|
194
|
+
],
|
|
195
|
+
isError: true,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
const { nodes, total } = response.data;
|
|
199
|
+
let resultText = `## WorkNode Read Results\n\n`;
|
|
200
|
+
// Search criteria
|
|
201
|
+
if (query)
|
|
202
|
+
resultText += `š Query: "${query}"\n`;
|
|
203
|
+
if (workspaceId)
|
|
204
|
+
resultText += `š Workspace: #${workspaceId}\n`;
|
|
205
|
+
if (nodeTypes && nodeTypes.length > 0)
|
|
206
|
+
resultText += `š Types: ${nodeTypes.join(', ')}\n`;
|
|
207
|
+
if (statuses && statuses.length > 0)
|
|
208
|
+
resultText += `š·ļø Statuses: ${statuses.join(', ')}\n`;
|
|
209
|
+
if (priorities && priorities.length > 0)
|
|
210
|
+
resultText += `ā” Priorities: ${priorities.join(', ')}\n`;
|
|
211
|
+
resultText += `š Format: Standard (11 fields, token-efficient)\n`;
|
|
212
|
+
resultText += `\n**Found: ${total} WorkNode(s)** (showing ${nodes.length})\n\n`;
|
|
213
|
+
if (nodes.length === 0) {
|
|
214
|
+
resultText += `No WorkNodes found matching the criteria.\n\n`;
|
|
215
|
+
resultText += `š” **Tip**: Try:\n`;
|
|
216
|
+
resultText += `- Broader search terms\n`;
|
|
217
|
+
resultText += `- Removing filters\n`;
|
|
218
|
+
resultText += `- Checking different workspaces\n`;
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
// Group by nodeType for better organization
|
|
222
|
+
const byType = nodes.reduce((acc, node) => {
|
|
223
|
+
if (!acc[node.nodeType])
|
|
224
|
+
acc[node.nodeType] = [];
|
|
225
|
+
acc[node.nodeType].push(node);
|
|
226
|
+
return acc;
|
|
227
|
+
}, {});
|
|
228
|
+
const typeOrder = ['goal', 'project', 'subproject', 'task', 'subtask'];
|
|
229
|
+
typeOrder.forEach((type) => {
|
|
230
|
+
const typeNodes = byType[type];
|
|
231
|
+
if (!typeNodes || typeNodes.length === 0)
|
|
232
|
+
return;
|
|
233
|
+
const typeEmoji = {
|
|
234
|
+
goal: 'šÆ',
|
|
235
|
+
project: 'š',
|
|
236
|
+
subproject: 'š',
|
|
237
|
+
task: 'ā
',
|
|
238
|
+
subtask: 'āļø'
|
|
239
|
+
}[type] || 'š';
|
|
240
|
+
resultText += `### ${typeEmoji} ${type.charAt(0).toUpperCase() + type.slice(1)}s (${typeNodes.length})\n\n`;
|
|
241
|
+
typeNodes.forEach((node) => {
|
|
242
|
+
const statusEmojiMap = {
|
|
243
|
+
backlog: 'š„',
|
|
244
|
+
not_started: 'ā',
|
|
245
|
+
in_progress: 'š',
|
|
246
|
+
in_review: 'š',
|
|
247
|
+
completed: 'ā
',
|
|
248
|
+
cancelled: 'ā'
|
|
249
|
+
};
|
|
250
|
+
const statusEmoji = statusEmojiMap[node.status] || 'ā';
|
|
251
|
+
const priorityEmojiMap = {
|
|
252
|
+
critical: 'š„',
|
|
253
|
+
urgent: 'ā”',
|
|
254
|
+
high: 'š“',
|
|
255
|
+
medium: 'š”',
|
|
256
|
+
low: 'š¢'
|
|
257
|
+
};
|
|
258
|
+
const priorityEmoji = priorityEmojiMap[node.priority] || '';
|
|
259
|
+
resultText += `**${node.title}** (ID: ${node.id})\n`;
|
|
260
|
+
resultText += ` ${statusEmoji} ${node.status}`;
|
|
261
|
+
if (priorityEmoji)
|
|
262
|
+
resultText += ` | ${priorityEmoji} ${node.priority}`;
|
|
263
|
+
if (node.workspaceId)
|
|
264
|
+
resultText += ` | Workspace: ${node.workspaceId}`;
|
|
265
|
+
if (node.parentNodeId)
|
|
266
|
+
resultText += ` | Parent: #${node.parentNodeId}`;
|
|
267
|
+
// Show additional fields
|
|
268
|
+
if (node.assignee && Array.isArray(node.assignee) && node.assignee.length > 0) {
|
|
269
|
+
resultText += ` | š¤ ${node.assignee.join(', ')}`;
|
|
270
|
+
}
|
|
271
|
+
if (node.dueDate) {
|
|
272
|
+
resultText += ` | š
${node.dueDate}`;
|
|
273
|
+
}
|
|
274
|
+
if (node.tags && Array.isArray(node.tags) && node.tags.length > 0) {
|
|
275
|
+
resultText += ` | š·ļø ${node.tags.join(', ')}`;
|
|
276
|
+
}
|
|
277
|
+
resultText += `\n\n`;
|
|
278
|
+
});
|
|
279
|
+
});
|
|
280
|
+
// Pagination info
|
|
281
|
+
if (total > nodes.length) {
|
|
282
|
+
const remaining = total - (offset + nodes.length);
|
|
283
|
+
resultText += `\n---\n\n`;
|
|
284
|
+
resultText += `š **Pagination**: Showing ${offset + 1}-${offset + nodes.length} of ${total}\n`;
|
|
285
|
+
if (remaining > 0) {
|
|
286
|
+
resultText += `š” **Tip**: Use \`offset: ${offset + limit}\` to see next ${Math.min(remaining, limit)} results\n`;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return {
|
|
291
|
+
content: [
|
|
292
|
+
{
|
|
293
|
+
type: 'text',
|
|
294
|
+
text: resultText,
|
|
295
|
+
},
|
|
296
|
+
],
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
catch (error) {
|
|
300
|
+
return {
|
|
301
|
+
content: [
|
|
302
|
+
{
|
|
303
|
+
type: 'text',
|
|
304
|
+
text: `Error searching WorkNodes: ${error.message || 'Unknown error'}`,
|
|
305
|
+
},
|
|
306
|
+
],
|
|
307
|
+
isError: true,
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
//# sourceMappingURL=worknode-read-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worknode-read-tool.js","sourceRoot":"","sources":["../../src/tools/worknode-read-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worknode-search-tool.d.ts","sourceRoot":"","sources":["../../src/tools/worknode-search-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"worknode-search-tool.d.ts","sourceRoot":"","sources":["../../src/tools/worknode-search-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QA2SjF"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export function registerWorknodeSearchTool(server, apiClient) {
|
|
3
3
|
/**
|
|
4
|
-
* Search WorkNodes by keyword
|
|
4
|
+
* Search WorkNodes by keyword
|
|
5
5
|
*/
|
|
6
6
|
server.registerTool('brxce_search_worknodes', {
|
|
7
|
-
description: `Search WorkNodes by keyword with token-efficient
|
|
7
|
+
description: `Search WorkNodes by keyword with token-efficient response format.
|
|
8
8
|
|
|
9
9
|
ā ļø **CRITICAL: Workspace Verification (Optional but Recommended)**
|
|
10
10
|
If filtering by workspace:
|
|
@@ -31,10 +31,10 @@ The LLM should automatically call this tool when the user asks about:
|
|
|
31
31
|
- "Show me critical priority items" ā Use priorities=["critical"]
|
|
32
32
|
- "Find completed tasks about backend" ā Use query="backend", statuses=["completed"]
|
|
33
33
|
|
|
34
|
-
**
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
34
|
+
**Response Format:**
|
|
35
|
+
- Returns 11 essential fields: id, title, nodeType, status, priority, parentNodeId, nodeLevel, workspaceId, assignee, dueDate, tags
|
|
36
|
+
- **Tags**: Array of tag names (string[]) for token efficiency
|
|
37
|
+
- **Optimized for LLM token usage**
|
|
38
38
|
|
|
39
39
|
**Search Features:**
|
|
40
40
|
- Keyword search: Searches in both title and description fields (case-insensitive)
|
|
@@ -49,11 +49,10 @@ The LLM should automatically call this tool when the user asks about:
|
|
|
49
49
|
- If workspaceId specified, validates user membership before searching
|
|
50
50
|
|
|
51
51
|
**Best Practices:**
|
|
52
|
-
1.
|
|
53
|
-
2.
|
|
54
|
-
3.
|
|
55
|
-
4.
|
|
56
|
-
5. Use appropriate nodeTypes filter when user asks about specific levels (goals, projects, tasks)
|
|
52
|
+
1. Combine multiple filters for precise searches (e.g., query + nodeTypes + statuses)
|
|
53
|
+
2. Use pagination (limit 50-100) for initial searches
|
|
54
|
+
3. Filter by workspace when user mentions a specific workspace
|
|
55
|
+
4. Use appropriate nodeTypes filter when user asks about specific levels (goals, projects, tasks)
|
|
57
56
|
|
|
58
57
|
**Example Searches:**
|
|
59
58
|
|
|
@@ -61,7 +60,6 @@ The LLM should automatically call this tool when the user asks about:
|
|
|
61
60
|
\`\`\`typescript
|
|
62
61
|
brxce_search_worknodes({
|
|
63
62
|
query: "MCP",
|
|
64
|
-
compact: true,
|
|
65
63
|
limit: 50
|
|
66
64
|
})
|
|
67
65
|
\`\`\`
|
|
@@ -72,17 +70,15 @@ brxce_search_worknodes({
|
|
|
72
70
|
workspaceId: 138,
|
|
73
71
|
nodeTypes: ["task", "subtask"],
|
|
74
72
|
priorities: ["high", "critical"],
|
|
75
|
-
statuses: ["not_started", "in_progress"]
|
|
76
|
-
compact: false
|
|
73
|
+
statuses: ["not_started", "in_progress"]
|
|
77
74
|
})
|
|
78
75
|
\`\`\`
|
|
79
76
|
|
|
80
|
-
3. Search for AI-related projects
|
|
77
|
+
3. Search for AI-related projects:
|
|
81
78
|
\`\`\`typescript
|
|
82
79
|
brxce_search_worknodes({
|
|
83
80
|
query: "AI",
|
|
84
81
|
nodeTypes: ["project", "subproject"],
|
|
85
|
-
compact: false,
|
|
86
82
|
limit: 20
|
|
87
83
|
})
|
|
88
84
|
\`\`\`
|
|
@@ -91,17 +87,15 @@ brxce_search_worknodes({
|
|
|
91
87
|
\`\`\`typescript
|
|
92
88
|
brxce_search_worknodes({
|
|
93
89
|
query: "API",
|
|
94
|
-
statuses: ["backlog"]
|
|
95
|
-
compact: true
|
|
90
|
+
statuses: ["backlog"]
|
|
96
91
|
})
|
|
97
92
|
\`\`\`
|
|
98
93
|
|
|
99
94
|
**Output Format:**
|
|
100
95
|
Returns JSON with:
|
|
101
|
-
- nodes: Array of WorkNode objects (
|
|
96
|
+
- nodes: Array of WorkNode objects (11 fields each)
|
|
102
97
|
- total: Total count of matching WorkNodes
|
|
103
98
|
- limit, offset: Pagination info
|
|
104
|
-
- compact: Boolean indicating which mode was used
|
|
105
99
|
|
|
106
100
|
ā° **TIMEZONE HANDLING:**
|
|
107
101
|
ALL date/time fields in the response are in UTC (ISO 8601 format):
|
|
@@ -127,15 +121,13 @@ The LLM should format this data into a readable summary for the user.`,
|
|
|
127
121
|
.describe('Filter by statuses'),
|
|
128
122
|
priorities: z.array(z.enum(['critical', 'urgent', 'high', 'medium', 'low'])).optional()
|
|
129
123
|
.describe('Filter by priorities'),
|
|
130
|
-
compact: z.boolean().optional().describe('Return compact format (minimal fields for token efficiency, default: false)'),
|
|
131
124
|
limit: z.number().optional().describe('Maximum results (default: 50, max: 200)'),
|
|
132
125
|
offset: z.number().optional().describe('Offset for pagination (default: 0)')
|
|
133
126
|
}
|
|
134
127
|
}, async (args) => {
|
|
135
128
|
try {
|
|
136
|
-
const { query, workspaceId, nodeTypes, statuses, priorities,
|
|
129
|
+
const { query, workspaceId, nodeTypes, statuses, priorities, limit = 50, offset = 0 } = args;
|
|
137
130
|
const requestBody = {
|
|
138
|
-
compact,
|
|
139
131
|
limit,
|
|
140
132
|
offset
|
|
141
133
|
};
|
|
@@ -161,7 +153,7 @@ The LLM should format this data into a readable summary for the user.`,
|
|
|
161
153
|
isError: true,
|
|
162
154
|
};
|
|
163
155
|
}
|
|
164
|
-
const { nodes, total
|
|
156
|
+
const { nodes, total } = response.data;
|
|
165
157
|
let resultText = `## WorkNode Search Results\n\n`;
|
|
166
158
|
// Search criteria
|
|
167
159
|
if (query)
|
|
@@ -174,7 +166,7 @@ The LLM should format this data into a readable summary for the user.`,
|
|
|
174
166
|
resultText += `š·ļø Statuses: ${statuses.join(', ')}\n`;
|
|
175
167
|
if (priorities && priorities.length > 0)
|
|
176
168
|
resultText += `ā” Priorities: ${priorities.join(', ')}\n`;
|
|
177
|
-
resultText += `š
|
|
169
|
+
resultText += `š Format: Standard (11 fields, token-efficient)\n`;
|
|
178
170
|
resultText += `\n**Found: ${total} WorkNode(s)** (showing ${nodes.length})\n\n`;
|
|
179
171
|
if (nodes.length === 0) {
|
|
180
172
|
resultText += `No WorkNodes found matching the criteria.\n\n`;
|
|
@@ -230,24 +222,17 @@ The LLM should format this data into a readable summary for the user.`,
|
|
|
230
222
|
resultText += ` | Workspace: ${node.workspaceId}`;
|
|
231
223
|
if (node.parentNodeId)
|
|
232
224
|
resultText += ` | Parent: #${node.parentNodeId}`;
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
const desc = node.description.length > 100
|
|
237
|
-
? node.description.substring(0, 100) + '...'
|
|
238
|
-
: node.description;
|
|
239
|
-
resultText += ` š ${desc}\n`;
|
|
225
|
+
// Show additional fields
|
|
226
|
+
if (node.assignee && Array.isArray(node.assignee) && node.assignee.length > 0) {
|
|
227
|
+
resultText += ` | š¤ ${node.assignee.join(', ')}`;
|
|
240
228
|
}
|
|
241
|
-
if (
|
|
242
|
-
resultText += `
|
|
229
|
+
if (node.dueDate) {
|
|
230
|
+
resultText += ` | š
${node.dueDate}`;
|
|
243
231
|
}
|
|
244
|
-
if (
|
|
245
|
-
resultText += `
|
|
232
|
+
if (node.tags && Array.isArray(node.tags) && node.tags.length > 0) {
|
|
233
|
+
resultText += ` | š·ļø ${node.tags.join(', ')}`;
|
|
246
234
|
}
|
|
247
|
-
|
|
248
|
-
resultText += ` š Progress: ${node.progress}%\n`;
|
|
249
|
-
}
|
|
250
|
-
resultText += `\n`;
|
|
235
|
+
resultText += `\n\n`;
|
|
251
236
|
});
|
|
252
237
|
});
|
|
253
238
|
// Pagination info
|
|
@@ -259,10 +244,6 @@ The LLM should format this data into a readable summary for the user.`,
|
|
|
259
244
|
resultText += `š” **Tip**: Use \`offset: ${offset + limit}\` to see next ${Math.min(remaining, limit)} results\n`;
|
|
260
245
|
}
|
|
261
246
|
}
|
|
262
|
-
// Token efficiency note
|
|
263
|
-
if (!isCompact && total > 20) {
|
|
264
|
-
resultText += `\nš” **Token Tip**: For large result sets, use \`compact: true\` to reduce token usage\n`;
|
|
265
|
-
}
|
|
266
247
|
}
|
|
267
248
|
return {
|
|
268
249
|
content: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worknode-search-tool.js","sourceRoot":"","sources":["../../src/tools/worknode-search-tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,0BAA0B,CAAC,MAAiB,EAAE,SAAoB;IAChF;;OAEG;IACH,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,WAAW,EAAE
|
|
1
|
+
{"version":3,"file":"worknode-search-tool.js","sourceRoot":"","sources":["../../src/tools/worknode-search-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worknode-subtree-tool.d.ts","sourceRoot":"","sources":["../../src/tools/worknode-subtree-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AA8D3D,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"worknode-subtree-tool.d.ts","sourceRoot":"","sources":["../../src/tools/worknode-subtree-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AA8D3D,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QAmKlF"}
|
|
@@ -64,11 +64,10 @@ This tool retrieves a single WorkNode and ALL its child nodes recursively, provi
|
|
|
64
64
|
- Excludes completed and deleted items by default
|
|
65
65
|
- Use filters to include completed work or limit depth
|
|
66
66
|
|
|
67
|
-
**
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
- **
|
|
71
|
-
- Use compact mode when you only need basic hierarchy and don't need detailed metadata
|
|
67
|
+
**Response Format:**
|
|
68
|
+
- Returns 11 essential fields: id, title, nodeType, status, priority, parentNodeId, nodeLevel, workspaceId, assignee, dueDate, tags
|
|
69
|
+
- **Tags**: Array of tag names (string[]) for token efficiency
|
|
70
|
+
- **Optimized for LLM token usage**
|
|
72
71
|
|
|
73
72
|
ā° **TIMEZONE HANDLING:**
|
|
74
73
|
ALL date/time fields in the response are in UTC (ISO 8601 format):
|
|
@@ -86,7 +85,7 @@ Example conversion (Korea Time, UTC+9):
|
|
|
86
85
|
|
|
87
86
|
**Tip:** First use brxce_workspace_overview to find the node ID, then use this tool to drill into that specific node's subtree.`,
|
|
88
87
|
inputSchema: {
|
|
89
|
-
nodeId: z.
|
|
88
|
+
nodeId: z.string().uuid().describe('The WorkNode ID to fetch subtree for'),
|
|
90
89
|
includeCompleted: z.boolean().optional().describe('Include completed descendants (default: false)'),
|
|
91
90
|
includeCancelled: z.boolean().optional().describe('Include cancelled descendants (default: false)'),
|
|
92
91
|
includeAll: z
|
|
@@ -99,12 +98,11 @@ Example conversion (Korea Time, UTC+9):
|
|
|
99
98
|
.number()
|
|
100
99
|
.optional()
|
|
101
100
|
.describe('Maximum depth to traverse from target node (default: unlimited)'),
|
|
102
|
-
compact: z.boolean().optional().describe('Return compact format (minimal fields for token efficiency, ~75% size reduction, default: false)'),
|
|
103
101
|
},
|
|
104
102
|
}, async (args) => {
|
|
105
103
|
const { nodeId, ...filters } = args;
|
|
106
|
-
if (!nodeId
|
|
107
|
-
throw new Error('nodeId is required and must be a
|
|
104
|
+
if (!nodeId) {
|
|
105
|
+
throw new Error('nodeId is required and must be a UUID string');
|
|
108
106
|
}
|
|
109
107
|
try {
|
|
110
108
|
// Build query string
|
|
@@ -120,8 +118,7 @@ Example conversion (Korea Time, UTC+9):
|
|
|
120
118
|
if (!response.success) {
|
|
121
119
|
throw new Error('Failed to fetch worknode subtree');
|
|
122
120
|
}
|
|
123
|
-
//
|
|
124
|
-
const isCompact = response.data.compact || false;
|
|
121
|
+
// Return standard response format
|
|
125
122
|
const nodeData = response.data.node;
|
|
126
123
|
const childrenData = response.data.children;
|
|
127
124
|
return {
|
|
@@ -132,7 +129,6 @@ Example conversion (Korea Time, UTC+9):
|
|
|
132
129
|
node: nodeData,
|
|
133
130
|
children: childrenData,
|
|
134
131
|
statistics: response.data.stats,
|
|
135
|
-
compact: isCompact,
|
|
136
132
|
metadata: response.meta,
|
|
137
133
|
}, null, 2),
|
|
138
134
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worknode-subtree-tool.js","sourceRoot":"","sources":["../../src/tools/worknode-subtree-tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAwCxB;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAS;IAClC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAAiB,EAAE,SAAoB;IACjF,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,WAAW,EAAE
|
|
1
|
+
{"version":3,"file":"worknode-subtree-tool.js","sourceRoot":"","sources":["../../src/tools/worknode-subtree-tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAwCxB;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAS;IAClC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAAiB,EAAE,SAAoB;IACjF,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gIA8D6G;QAC1H,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YAC1E,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;YACnG,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;YACnG,UAAU,EAAE,CAAC;iBACV,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,gFAAgF,CAAC;YAC7F,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;YACjG,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YACpG,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,iEAAiE,CAAC;SAC/E;KACF,EACD,KAAK,EAAE,IAAyB,EAAE,EAAE;QAClC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,GAAG,IAAoD,CAAC;QAEpF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,CAAC;YACH,qBAAqB;YACrB,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;YAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBAC1C,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YAED,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC3C,MAAM,GAAG,GAAG,kBAAkB,MAAM,WAAW,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAEtF,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,CAAkB,GAAG,CAAC,CAAC;YAE3D,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;YAED,kCAAkC;YAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;YAE5C,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,IAAI,EAAE,QAAQ;4BACd,QAAQ,EAAE,YAAY;4BACtB,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK;4BAC/B,QAAQ,EAAE,QAAQ,CAAC,IAAI;yBACxB,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,uBAAuB;YACvB,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC3E,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gCACnB,KAAK,EAAE,oBAAoB;gCAC3B,OAAO,EAAE,oBAAoB,MAAM,iDAAiD;gCACpF,MAAM;6BACP,CAAC;yBACH;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK,EAAE,kCAAkC;4BACzC,OAAO,EAAE,KAAK,CAAC,OAAO;4BACtB,MAAM;yBACP,CAAC;qBACH;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|