@agllama/mcp 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +248 -0
  3. package/dist/api-client.d.ts +120 -0
  4. package/dist/api-client.d.ts.map +1 -0
  5. package/dist/api-client.js +421 -0
  6. package/dist/api-client.js.map +1 -0
  7. package/dist/index.d.ts +3 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +18 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/server.d.ts +4 -0
  12. package/dist/server.d.ts.map +1 -0
  13. package/dist/server.js +673 -0
  14. package/dist/server.js.map +1 -0
  15. package/dist/tools/backlog.d.ts +22 -0
  16. package/dist/tools/backlog.d.ts.map +1 -0
  17. package/dist/tools/backlog.js +109 -0
  18. package/dist/tools/backlog.js.map +1 -0
  19. package/dist/tools/boardConfig.d.ts +77 -0
  20. package/dist/tools/boardConfig.d.ts.map +1 -0
  21. package/dist/tools/boardConfig.js +154 -0
  22. package/dist/tools/boardConfig.js.map +1 -0
  23. package/dist/tools/boardTemplates.d.ts +47 -0
  24. package/dist/tools/boardTemplates.d.ts.map +1 -0
  25. package/dist/tools/boardTemplates.js +119 -0
  26. package/dist/tools/boardTemplates.js.map +1 -0
  27. package/dist/tools/boards.d.ts +62 -0
  28. package/dist/tools/boards.d.ts.map +1 -0
  29. package/dist/tools/boards.js +260 -0
  30. package/dist/tools/boards.js.map +1 -0
  31. package/dist/tools/comments.d.ts +82 -0
  32. package/dist/tools/comments.d.ts.map +1 -0
  33. package/dist/tools/comments.js +275 -0
  34. package/dist/tools/comments.js.map +1 -0
  35. package/dist/tools/connect.d.ts +7 -0
  36. package/dist/tools/connect.d.ts.map +1 -0
  37. package/dist/tools/connect.js +50 -0
  38. package/dist/tools/connect.js.map +1 -0
  39. package/dist/tools/context.d.ts +19 -0
  40. package/dist/tools/context.d.ts.map +1 -0
  41. package/dist/tools/context.js +136 -0
  42. package/dist/tools/context.js.map +1 -0
  43. package/dist/tools/documents.d.ts +99 -0
  44. package/dist/tools/documents.d.ts.map +1 -0
  45. package/dist/tools/documents.js +252 -0
  46. package/dist/tools/documents.js.map +1 -0
  47. package/dist/tools/help.d.ts +13 -0
  48. package/dist/tools/help.d.ts.map +1 -0
  49. package/dist/tools/help.js +485 -0
  50. package/dist/tools/help.js.map +1 -0
  51. package/dist/tools/index.d.ts +21 -0
  52. package/dist/tools/index.d.ts.map +1 -0
  53. package/dist/tools/index.js +21 -0
  54. package/dist/tools/index.js.map +1 -0
  55. package/dist/tools/issueLinks.d.ts +45 -0
  56. package/dist/tools/issueLinks.d.ts.map +1 -0
  57. package/dist/tools/issueLinks.js +147 -0
  58. package/dist/tools/issueLinks.js.map +1 -0
  59. package/dist/tools/issues.d.ts +307 -0
  60. package/dist/tools/issues.d.ts.map +1 -0
  61. package/dist/tools/issues.js +715 -0
  62. package/dist/tools/issues.js.map +1 -0
  63. package/dist/tools/labels.d.ts +56 -0
  64. package/dist/tools/labels.d.ts.map +1 -0
  65. package/dist/tools/labels.js +213 -0
  66. package/dist/tools/labels.js.map +1 -0
  67. package/dist/tools/members.d.ts +13 -0
  68. package/dist/tools/members.d.ts.map +1 -0
  69. package/dist/tools/members.js +43 -0
  70. package/dist/tools/members.js.map +1 -0
  71. package/dist/tools/organizations.d.ts +35 -0
  72. package/dist/tools/organizations.d.ts.map +1 -0
  73. package/dist/tools/organizations.js +116 -0
  74. package/dist/tools/organizations.js.map +1 -0
  75. package/dist/tools/projects.d.ts +67 -0
  76. package/dist/tools/projects.d.ts.map +1 -0
  77. package/dist/tools/projects.js +165 -0
  78. package/dist/tools/projects.js.map +1 -0
  79. package/dist/tools/search.d.ts +34 -0
  80. package/dist/tools/search.d.ts.map +1 -0
  81. package/dist/tools/search.js +85 -0
  82. package/dist/tools/search.js.map +1 -0
  83. package/dist/tools/session.d.ts +38 -0
  84. package/dist/tools/session.d.ts.map +1 -0
  85. package/dist/tools/session.js +158 -0
  86. package/dist/tools/session.js.map +1 -0
  87. package/dist/tools/sprints.d.ts +141 -0
  88. package/dist/tools/sprints.d.ts.map +1 -0
  89. package/dist/tools/sprints.js +470 -0
  90. package/dist/tools/sprints.js.map +1 -0
  91. package/dist/tools/status.d.ts +22 -0
  92. package/dist/tools/status.d.ts.map +1 -0
  93. package/dist/tools/status.js +81 -0
  94. package/dist/tools/status.js.map +1 -0
  95. package/dist/tools/workflows.d.ts +137 -0
  96. package/dist/tools/workflows.d.ts.map +1 -0
  97. package/dist/tools/workflows.js +355 -0
  98. package/dist/tools/workflows.js.map +1 -0
  99. package/dist/types.d.ts +434 -0
  100. package/dist/types.d.ts.map +1 -0
  101. package/dist/types.js +5 -0
  102. package/dist/types.js.map +1 -0
  103. package/dist/utils/column-instructions.d.ts +21 -0
  104. package/dist/utils/column-instructions.d.ts.map +1 -0
  105. package/dist/utils/column-instructions.js +54 -0
  106. package/dist/utils/column-instructions.js.map +1 -0
  107. package/package.json +63 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprints.d.ts","sourceRoot":"","sources":["../../src/tools/sprints.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,470 @@
1
+ import { z } from 'zod';
2
+ import { getApiClient, LlamaApiError } from '../api-client.js';
3
+ import { getSessionDefaults } from './session.js';
4
+ // ============================================
5
+ // List Sprints
6
+ // ============================================
7
+ export const listSprintsToolName = 'llama_list_sprints';
8
+ export const listSprintsToolDescription = `List all sprints for a project.
9
+ Returns planned, active, and completed sprints with their issues.`;
10
+ export const listSprintsToolSchema = z.object({
11
+ orgSlug: z
12
+ .string()
13
+ .optional()
14
+ .describe('Organization slug (uses session default if not provided)'),
15
+ projectKey: z
16
+ .string()
17
+ .optional()
18
+ .describe('Project key (uses session default if not provided)'),
19
+ });
20
+ export async function executeListSprints(input) {
21
+ try {
22
+ const session = await getSessionDefaults();
23
+ const orgSlug = input.orgSlug ?? session?.orgSlug;
24
+ const projectKey = input.projectKey ?? session?.projectKey;
25
+ if (!orgSlug) {
26
+ return JSON.stringify({
27
+ success: false,
28
+ error: 'orgSlug is required. Either provide it or set session context with llama_set_context first.',
29
+ });
30
+ }
31
+ if (!projectKey) {
32
+ return JSON.stringify({
33
+ success: false,
34
+ error: 'projectKey is required. Either provide it or set session context with llama_set_context first.',
35
+ });
36
+ }
37
+ const client = getApiClient();
38
+ // Record tool call
39
+ try {
40
+ await client.recordToolCall('llama_list_sprints', { orgSlug, projectKey });
41
+ }
42
+ catch {
43
+ // Ignore recording errors
44
+ }
45
+ const sprints = await client.listSprints(orgSlug, projectKey);
46
+ return JSON.stringify({
47
+ success: true,
48
+ sprints: sprints.map((s) => ({
49
+ id: s.id,
50
+ name: s.name,
51
+ status: s.status,
52
+ goal: s.goal,
53
+ period: s.startDate && s.endDate
54
+ ? `${s.startDate.split('T')[0]} to ${s.endDate.split('T')[0]}`
55
+ : 'Not scheduled',
56
+ issueCount: s.issueCount,
57
+ completedCount: s.completedCount,
58
+ })),
59
+ }, null, 2);
60
+ }
61
+ catch (error) {
62
+ if (error instanceof LlamaApiError) {
63
+ return JSON.stringify({
64
+ success: false,
65
+ error: `Failed to list sprints: ${error.message}`,
66
+ statusCode: error.statusCode,
67
+ });
68
+ }
69
+ return JSON.stringify({
70
+ success: false,
71
+ error: error instanceof Error ? error.message : 'Unknown error',
72
+ });
73
+ }
74
+ }
75
+ // ============================================
76
+ // Create Sprint
77
+ // ============================================
78
+ export const createSprintToolName = 'llama_create_sprint';
79
+ export const createSprintToolDescription = `Create a new sprint for a project.
80
+ Sprints start in PLANNED status and can be started later.`;
81
+ export const createSprintToolSchema = z.object({
82
+ orgSlug: z
83
+ .string()
84
+ .optional()
85
+ .describe('Organization slug (uses session default if not provided)'),
86
+ projectKey: z
87
+ .string()
88
+ .optional()
89
+ .describe('Project key (uses session default if not provided)'),
90
+ name: z.string().describe('Sprint name (e.g., "Sprint 5")'),
91
+ goal: z.string().optional().describe('Sprint goal'),
92
+ startDate: z
93
+ .string()
94
+ .optional()
95
+ .describe('Start date (ISO format: YYYY-MM-DD)'),
96
+ endDate: z.string().optional().describe('End date (ISO format: YYYY-MM-DD)'),
97
+ });
98
+ export async function executeCreateSprint(input) {
99
+ try {
100
+ const session = await getSessionDefaults();
101
+ const orgSlug = input.orgSlug ?? session?.orgSlug;
102
+ const projectKey = input.projectKey ?? session?.projectKey;
103
+ if (!orgSlug) {
104
+ return JSON.stringify({
105
+ success: false,
106
+ error: 'orgSlug is required. Either provide it or set session context with llama_set_context first.',
107
+ });
108
+ }
109
+ if (!projectKey) {
110
+ return JSON.stringify({
111
+ success: false,
112
+ error: 'projectKey is required. Either provide it or set session context with llama_set_context first.',
113
+ });
114
+ }
115
+ const client = getApiClient();
116
+ // Record tool call
117
+ try {
118
+ await client.recordToolCall('llama_create_sprint', { orgSlug, projectKey });
119
+ }
120
+ catch {
121
+ // Ignore recording errors
122
+ }
123
+ const sprint = await client.createSprint(orgSlug, projectKey, {
124
+ name: input.name,
125
+ goal: input.goal,
126
+ startDate: input.startDate,
127
+ endDate: input.endDate,
128
+ });
129
+ return JSON.stringify({
130
+ success: true,
131
+ message: `Created sprint "${sprint.name}"`,
132
+ sprint: {
133
+ id: sprint.id,
134
+ name: sprint.name,
135
+ status: sprint.status,
136
+ goal: sprint.goal,
137
+ },
138
+ });
139
+ }
140
+ catch (error) {
141
+ if (error instanceof LlamaApiError) {
142
+ return JSON.stringify({
143
+ success: false,
144
+ error: `Failed to create sprint: ${error.message}`,
145
+ statusCode: error.statusCode,
146
+ });
147
+ }
148
+ return JSON.stringify({
149
+ success: false,
150
+ error: error instanceof Error ? error.message : 'Unknown error',
151
+ });
152
+ }
153
+ }
154
+ // ============================================
155
+ // Add Issues to Sprint
156
+ // ============================================
157
+ export const addToSprintToolName = 'llama_add_to_sprint';
158
+ export const addToSprintToolDescription = `Move one or more issues to a sprint (or remove from sprint).
159
+ Pass null for sprintId to move issues to the backlog.`;
160
+ export const addToSprintToolSchema = z.object({
161
+ orgSlug: z
162
+ .string()
163
+ .optional()
164
+ .describe('Organization slug (uses session default if not provided)'),
165
+ projectKey: z
166
+ .string()
167
+ .optional()
168
+ .describe('Project key (uses session default if not provided)'),
169
+ issueKeys: z
170
+ .array(z.string())
171
+ .min(1)
172
+ .max(20)
173
+ .describe('Issue keys to move (max 20)'),
174
+ sprintId: z
175
+ .string()
176
+ .nullable()
177
+ .describe('Sprint ID to move to, or null for backlog'),
178
+ });
179
+ export async function executeAddToSprint(input) {
180
+ try {
181
+ const session = await getSessionDefaults();
182
+ const orgSlug = input.orgSlug ?? session?.orgSlug;
183
+ const projectKey = input.projectKey ?? session?.projectKey;
184
+ if (!orgSlug) {
185
+ return JSON.stringify({
186
+ success: false,
187
+ error: 'orgSlug is required. Either provide it or set session context with llama_set_context first.',
188
+ });
189
+ }
190
+ if (!projectKey) {
191
+ return JSON.stringify({
192
+ success: false,
193
+ error: 'projectKey is required. Either provide it or set session context with llama_set_context first.',
194
+ });
195
+ }
196
+ const client = getApiClient();
197
+ // Record tool call
198
+ try {
199
+ await client.recordToolCall('llama_add_to_sprint', { orgSlug, projectKey });
200
+ }
201
+ catch {
202
+ // Ignore recording errors
203
+ }
204
+ const issues = await client.addIssuesToSprint(orgSlug, projectKey, input.issueKeys, input.sprintId);
205
+ const destination = input.sprintId ? 'sprint' : 'backlog';
206
+ return JSON.stringify({
207
+ success: true,
208
+ message: `Moved ${issues.length} issue(s) to ${destination}`,
209
+ issues: issues.map((i) => ({
210
+ key: i.key,
211
+ summary: i.summary,
212
+ })),
213
+ }, null, 2);
214
+ }
215
+ catch (error) {
216
+ if (error instanceof LlamaApiError) {
217
+ return JSON.stringify({
218
+ success: false,
219
+ error: `Failed to move issues: ${error.message}`,
220
+ statusCode: error.statusCode,
221
+ });
222
+ }
223
+ return JSON.stringify({
224
+ success: false,
225
+ error: error instanceof Error ? error.message : 'Unknown error',
226
+ });
227
+ }
228
+ }
229
+ // ============================================
230
+ // Get Sprint
231
+ // ============================================
232
+ export const getSprintToolName = 'llama_get_sprint';
233
+ export const getSprintToolDescription = `Get details for a specific sprint by ID.
234
+ Returns sprint info including all issues in the sprint.`;
235
+ export const getSprintToolSchema = z.object({
236
+ sprintId: z.string().describe('Sprint ID'),
237
+ });
238
+ export async function executeGetSprint(input) {
239
+ try {
240
+ const client = getApiClient();
241
+ const sprint = await client.getSprint(input.sprintId);
242
+ return JSON.stringify({
243
+ success: true,
244
+ sprint: {
245
+ id: sprint.id,
246
+ name: sprint.name,
247
+ status: sprint.status,
248
+ goal: sprint.goal,
249
+ startDate: sprint.startDate,
250
+ endDate: sprint.endDate,
251
+ issueCount: sprint.issueCount,
252
+ completedCount: sprint.completedCount,
253
+ issues: sprint.issues?.map((i) => ({
254
+ key: i.key,
255
+ summary: i.summary,
256
+ type: i.type,
257
+ status: i.status,
258
+ priority: i.priority,
259
+ assignee: i.assignee,
260
+ })),
261
+ },
262
+ }, null, 2);
263
+ }
264
+ catch (error) {
265
+ if (error instanceof LlamaApiError) {
266
+ return JSON.stringify({
267
+ success: false,
268
+ error: `Failed to get sprint: ${error.message}`,
269
+ statusCode: error.statusCode,
270
+ });
271
+ }
272
+ return JSON.stringify({
273
+ success: false,
274
+ error: error instanceof Error ? error.message : 'Unknown error',
275
+ });
276
+ }
277
+ }
278
+ // ============================================
279
+ // Start Sprint
280
+ // ============================================
281
+ export const startSprintToolName = 'llama_start_sprint';
282
+ export const startSprintToolDescription = `Start a planned sprint.
283
+ Only one sprint can be active at a time per project.
284
+ Optionally specify start and end dates.`;
285
+ export const startSprintToolSchema = z.object({
286
+ sprintId: z.string().describe('Sprint ID to start'),
287
+ startDate: z
288
+ .string()
289
+ .optional()
290
+ .describe('Start date (ISO format: YYYY-MM-DD). Defaults to today.'),
291
+ endDate: z
292
+ .string()
293
+ .optional()
294
+ .describe('End date (ISO format: YYYY-MM-DD). Typically 2 weeks from start.'),
295
+ });
296
+ export async function executeStartSprint(input) {
297
+ try {
298
+ const client = getApiClient();
299
+ const sprint = await client.startSprint(input.sprintId, {
300
+ startDate: input.startDate,
301
+ endDate: input.endDate,
302
+ });
303
+ return JSON.stringify({
304
+ success: true,
305
+ message: `Started sprint "${sprint.name}"`,
306
+ sprint: {
307
+ id: sprint.id,
308
+ name: sprint.name,
309
+ status: sprint.status,
310
+ startDate: sprint.startDate,
311
+ endDate: sprint.endDate,
312
+ },
313
+ });
314
+ }
315
+ catch (error) {
316
+ if (error instanceof LlamaApiError) {
317
+ return JSON.stringify({
318
+ success: false,
319
+ error: `Failed to start sprint: ${error.message}`,
320
+ statusCode: error.statusCode,
321
+ });
322
+ }
323
+ return JSON.stringify({
324
+ success: false,
325
+ error: error instanceof Error ? error.message : 'Unknown error',
326
+ });
327
+ }
328
+ }
329
+ // ============================================
330
+ // Complete Sprint
331
+ // ============================================
332
+ export const completeSprintToolName = 'llama_complete_sprint';
333
+ export const completeSprintToolDescription = `Complete an active sprint.
334
+ Incomplete issues can be moved to backlog or another sprint.`;
335
+ export const completeSprintToolSchema = z.object({
336
+ sprintId: z.string().describe('Sprint ID to complete'),
337
+ moveIncompleteToBacklog: z
338
+ .boolean()
339
+ .optional()
340
+ .describe('Move incomplete issues to backlog (default: true)'),
341
+ moveIncompleteToSprintId: z
342
+ .string()
343
+ .optional()
344
+ .describe('Move incomplete issues to this sprint instead of backlog'),
345
+ });
346
+ export async function executeCompleteSprint(input) {
347
+ try {
348
+ const client = getApiClient();
349
+ const sprint = await client.completeSprint(input.sprintId, {
350
+ moveIncompleteToBacklog: input.moveIncompleteToBacklog,
351
+ moveIncompleteToSprintId: input.moveIncompleteToSprintId,
352
+ });
353
+ return JSON.stringify({
354
+ success: true,
355
+ message: `Completed sprint "${sprint.name}"`,
356
+ sprint: {
357
+ id: sprint.id,
358
+ name: sprint.name,
359
+ status: sprint.status,
360
+ completedCount: sprint.completedCount,
361
+ issueCount: sprint.issueCount,
362
+ },
363
+ });
364
+ }
365
+ catch (error) {
366
+ if (error instanceof LlamaApiError) {
367
+ return JSON.stringify({
368
+ success: false,
369
+ error: `Failed to complete sprint: ${error.message}`,
370
+ statusCode: error.statusCode,
371
+ });
372
+ }
373
+ return JSON.stringify({
374
+ success: false,
375
+ error: error instanceof Error ? error.message : 'Unknown error',
376
+ });
377
+ }
378
+ }
379
+ // ============================================
380
+ // Update Sprint
381
+ // ============================================
382
+ export const updateSprintToolName = 'llama_update_sprint';
383
+ export const updateSprintToolDescription = `Update a sprint's name, goal, or dates.
384
+ Only include the fields you want to change.`;
385
+ export const updateSprintToolSchema = z.object({
386
+ sprintId: z.string().describe('Sprint ID to update'),
387
+ name: z.string().optional().describe('New sprint name'),
388
+ goal: z.string().optional().describe('New sprint goal'),
389
+ startDate: z.string().optional().describe('New start date (YYYY-MM-DD)'),
390
+ endDate: z.string().optional().describe('New end date (YYYY-MM-DD)'),
391
+ });
392
+ export async function executeUpdateSprint(input) {
393
+ try {
394
+ const { sprintId, ...updates } = input;
395
+ const updateFields = {};
396
+ if (updates.name !== undefined)
397
+ updateFields.name = updates.name;
398
+ if (updates.goal !== undefined)
399
+ updateFields.goal = updates.goal;
400
+ if (updates.startDate !== undefined)
401
+ updateFields.startDate = updates.startDate;
402
+ if (updates.endDate !== undefined)
403
+ updateFields.endDate = updates.endDate;
404
+ const client = getApiClient();
405
+ const sprint = await client.updateSprint(sprintId, updateFields);
406
+ return JSON.stringify({
407
+ success: true,
408
+ message: `Updated sprint "${sprint.name}"`,
409
+ sprint: {
410
+ id: sprint.id,
411
+ name: sprint.name,
412
+ goal: sprint.goal,
413
+ startDate: sprint.startDate,
414
+ endDate: sprint.endDate,
415
+ },
416
+ });
417
+ }
418
+ catch (error) {
419
+ if (error instanceof LlamaApiError) {
420
+ return JSON.stringify({
421
+ success: false,
422
+ error: `Failed to update sprint: ${error.message}`,
423
+ statusCode: error.statusCode,
424
+ });
425
+ }
426
+ return JSON.stringify({
427
+ success: false,
428
+ error: error instanceof Error ? error.message : 'Unknown error',
429
+ });
430
+ }
431
+ }
432
+ // ============================================
433
+ // Delete Sprint
434
+ // ============================================
435
+ export const deleteSprintToolName = 'llama_delete_sprint';
436
+ export const deleteSprintToolDescription = `Delete a sprint.
437
+ Issues in the sprint will be moved to the backlog.
438
+ Cannot delete an active sprint - complete it first.
439
+ Returns the number of issues that were moved to backlog.`;
440
+ export const deleteSprintToolSchema = z.object({
441
+ sprintId: z.string().describe('Sprint ID to delete'),
442
+ });
443
+ export async function executeDeleteSprint(input) {
444
+ try {
445
+ const client = getApiClient();
446
+ const result = await client.deleteSprint(input.sprintId);
447
+ return JSON.stringify({
448
+ success: true,
449
+ message: `Deleted sprint`,
450
+ issuesMovedToBacklog: result.issuesMovedToBacklog,
451
+ impact: result.issuesMovedToBacklog > 0
452
+ ? `${result.issuesMovedToBacklog} issue${result.issuesMovedToBacklog === 1 ? '' : 's'} moved to backlog`
453
+ : 'Sprint had no issues',
454
+ });
455
+ }
456
+ catch (error) {
457
+ if (error instanceof LlamaApiError) {
458
+ return JSON.stringify({
459
+ success: false,
460
+ error: `Failed to delete sprint: ${error.message}`,
461
+ statusCode: error.statusCode,
462
+ });
463
+ }
464
+ return JSON.stringify({
465
+ success: false,
466
+ error: error instanceof Error ? error.message : 'Unknown error',
467
+ });
468
+ }
469
+ }
470
+ //# sourceMappingURL=sprints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprints.js","sourceRoot":"","sources":["../../src/tools/sprints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,+CAA+C;AAC/C,eAAe;AACf,+CAA+C;AAE/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,oBAAoB,CAAC;AAExD,MAAM,CAAC,MAAM,0BAA0B,GAAG;kEACwB,CAAC;AAEnE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,0DAA0D,CAAC;IACvE,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,oDAAoD,CAAC;CAClE,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAA2B;IAE3B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAE3C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,OAAO,EAAE,OAAO,CAAC;QAClD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,OAAO,EAAE,UAAU,CAAC;QAE3D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,SAAS,CACnB;gBACE,OAAO,EAAE,KAAK;gBACd,KAAK,EACH,6FAA6F;aAChG,CAAC,CAAC;QACP,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,SAAS,CACnB;gBACE,OAAO,EAAE,KAAK;gBACd,KAAK,EACH,gGAAgG;aACnG,CAAC,CAAC;QACP,CAAC;QAED,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAE9B,mBAAmB;QACnB,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,cAAc,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QAC7E,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAE9D,OAAO,IAAI,CAAC,SAAS,CACnB;YACE,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3B,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EACJ,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO;oBACtB,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;oBAC9D,CAAC,CAAC,eAAe;gBACrB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,cAAc,EAAE,CAAC,CAAC,cAAc;aACjC,CAAC,CAAC;SACJ,EACD,IAAI,EACJ,CAAC,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,SAAS,CACnB;gBACE,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,2BAA2B,KAAK,CAAC,OAAO,EAAE;gBACjD,UAAU,EAAE,KAAK,CAAC,UAAU;aAC7B,CAAC,CAAC;QACP,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CACnB;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAChE,CAAC,CAAC;IACP,CAAC;AACH,CAAC;AAED,+CAA+C;AAC/C,gBAAgB;AAChB,+CAA+C;AAE/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAE1D,MAAM,CAAC,MAAM,2BAA2B,GAAG;0DACe,CAAC;AAE3D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,0DAA0D,CAAC;IACvE,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,oDAAoD,CAAC;IACjE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC3D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;IACnD,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,qCAAqC,CAAC;IAClD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;CAC7E,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAA4B;IAE5B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAE3C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,OAAO,EAAE,OAAO,CAAC;QAClD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,OAAO,EAAE,UAAU,CAAC;QAE3D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,SAAS,CACnB;gBACE,OAAO,EAAE,KAAK;gBACd,KAAK,EACH,6FAA6F;aAChG,CAAC,CAAC;QACP,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,SAAS,CACnB;gBACE,OAAO,EAAE,KAAK;gBACd,KAAK,EACH,gGAAgG;aACnG,CAAC,CAAC;QACP,CAAC;QAED,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAE9B,mBAAmB;QACnB,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,cAAc,CAAC,qBAAqB,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QAC9E,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE;YAC5D,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,SAAS,CACnB;YACE,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,mBAAmB,MAAM,CAAC,IAAI,GAAG;YAC1C,MAAM,EAAE;gBACN,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB;SACF,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,SAAS,CACnB;gBACE,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,4BAA4B,KAAK,CAAC,OAAO,EAAE;gBAClD,UAAU,EAAE,KAAK,CAAC,UAAU;aAC7B,CAAC,CAAC;QACP,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CACnB;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAChE,CAAC,CAAC;IACP,CAAC;AACH,CAAC;AAED,+CAA+C;AAC/C,uBAAuB;AACvB,+CAA+C;AAE/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAEzD,MAAM,CAAC,MAAM,0BAA0B,GAAG;sDACY,CAAC;AAEvD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,0DAA0D,CAAC;IACvE,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,oDAAoD,CAAC;IACjE,SAAS,EAAE,CAAC;SACT,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,CAAC,6BAA6B,CAAC;IAC1C,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2CAA2C,CAAC;CACzD,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAA2B;IAE3B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAE3C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,OAAO,EAAE,OAAO,CAAC;QAClD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,OAAO,EAAE,UAAU,CAAC;QAE3D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,SAAS,CACnB;gBACE,OAAO,EAAE,KAAK;gBACd,KAAK,EACH,6FAA6F;aAChG,CAAC,CAAC;QACP,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,SAAS,CACnB;gBACE,OAAO,EAAE,KAAK;gBACd,KAAK,EACH,gGAAgG;aACnG,CAAC,CAAC;QACP,CAAC;QAED,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAE9B,mBAAmB;QACnB,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,cAAc,CAAC,qBAAqB,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QAC9E,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAC3C,OAAO,EACP,UAAU,EACV,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,QAAQ,CACf,CAAC;QAEF,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QAE1D,OAAO,IAAI,CAAC,SAAS,CACnB;YACE,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,SAAS,MAAM,CAAC,MAAM,gBAAgB,WAAW,EAAE;YAC5D,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzB,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC;SACJ,EACD,IAAI,EACJ,CAAC,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,SAAS,CACnB;gBACE,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,0BAA0B,KAAK,CAAC,OAAO,EAAE;gBAChD,UAAU,EAAE,KAAK,CAAC,UAAU;aAC7B,CAAC,CAAC;QACP,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CACnB;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAChE,CAAC,CAAC;IACP,CAAC;AACH,CAAC;AAED,+CAA+C;AAC/C,aAAa;AACb,+CAA+C;AAE/C,MAAM,CAAC,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AAEpD,MAAM,CAAC,MAAM,wBAAwB,GAAG;wDACgB,CAAC;AAEzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;CAC3C,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAyB;IAEzB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEtD,OAAO,IAAI,CAAC,SAAS,CACnB;YACE,OAAO,EAAE,IAAI;YACb,MAAM,EAAE;gBACN,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACjC,GAAG,EAAE,CAAC,CAAC,GAAG;oBACV,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;iBACrB,CAAC,CAAC;aACJ;SACF,EACD,IAAI,EACJ,CAAC,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,SAAS,CACnB;gBACE,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,yBAAyB,KAAK,CAAC,OAAO,EAAE;gBAC/C,UAAU,EAAE,KAAK,CAAC,UAAU;aAC7B,CAAC,CAAC;QACP,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CACnB;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAChE,CAAC,CAAC;IACP,CAAC;AACH,CAAC;AAED,+CAA+C;AAC/C,eAAe;AACf,+CAA+C;AAE/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,oBAAoB,CAAC;AAExD,MAAM,CAAC,MAAM,0BAA0B,GAAG;;wCAEF,CAAC;AAEzC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACnD,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,yDAAyD,CAAC;IACtE,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,kEAAkE,CAAC;CAChF,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAA2B;IAE3B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE;YACtD,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,SAAS,CACnB;YACE,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,mBAAmB,MAAM,CAAC,IAAI,GAAG;YAC1C,MAAM,EAAE;gBACN,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB;SACF,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,SAAS,CACnB;gBACE,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,2BAA2B,KAAK,CAAC,OAAO,EAAE;gBACjD,UAAU,EAAE,KAAK,CAAC,UAAU;aAC7B,CAAC,CAAC;QACP,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CACnB;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAChE,CAAC,CAAC;IACP,CAAC;AACH,CAAC;AAED,+CAA+C;AAC/C,kBAAkB;AAClB,+CAA+C;AAE/C,MAAM,CAAC,MAAM,sBAAsB,GAAG,uBAAuB,CAAC;AAE9D,MAAM,CAAC,MAAM,6BAA6B,GAAG;6DACgB,CAAC;AAE9D,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACtD,uBAAuB,EAAE,CAAC;SACvB,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,mDAAmD,CAAC;IAChE,wBAAwB,EAAE,CAAC;SACxB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,0DAA0D,CAAC;CACxE,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAA8B;IAE9B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE;YACzD,uBAAuB,EAAE,KAAK,CAAC,uBAAuB;YACtD,wBAAwB,EAAE,KAAK,CAAC,wBAAwB;SACzD,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,SAAS,CACnB;YACE,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,qBAAqB,MAAM,CAAC,IAAI,GAAG;YAC5C,MAAM,EAAE;gBACN,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B;SACF,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,SAAS,CACnB;gBACE,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,8BAA8B,KAAK,CAAC,OAAO,EAAE;gBACpD,UAAU,EAAE,KAAK,CAAC,UAAU;aAC7B,CAAC,CAAC;QACP,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CACnB;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAChE,CAAC,CAAC;IACP,CAAC;AACH,CAAC;AAED,+CAA+C;AAC/C,gBAAgB;AAChB,+CAA+C;AAE/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAE1D,MAAM,CAAC,MAAM,2BAA2B,GAAG;4CACC,CAAC;AAE7C,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IACpD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACvD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACvD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACxE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CACrE,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAA4B;IAE5B,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC;QAEvC,MAAM,YAAY,GAA4B,EAAE,CAAC;QACjD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;YAAE,YAAY,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACjE,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;YAAE,YAAY,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACjE,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;YAAE,YAAY,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QAChF,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;YAAE,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAE1E,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAEjE,OAAO,IAAI,CAAC,SAAS,CACnB;YACE,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,mBAAmB,MAAM,CAAC,IAAI,GAAG;YAC1C,MAAM,EAAE;gBACN,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB;SACF,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,SAAS,CACnB;gBACE,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,4BAA4B,KAAK,CAAC,OAAO,EAAE;gBAClD,UAAU,EAAE,KAAK,CAAC,UAAU;aAC7B,CAAC,CAAC;QACP,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CACnB;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAChE,CAAC,CAAC;IACP,CAAC;AACH,CAAC;AAED,+CAA+C;AAC/C,gBAAgB;AAChB,+CAA+C;AAE/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAE1D,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;yDAGc,CAAC;AAE1D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;CACrD,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAA4B;IAE5B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEzD,OAAO,IAAI,CAAC,SAAS,CACnB;YACE,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,gBAAgB;YACzB,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;YACjD,MAAM,EAAE,MAAM,CAAC,oBAAoB,GAAG,CAAC;gBACrC,CAAC,CAAC,GAAG,MAAM,CAAC,oBAAoB,SAAS,MAAM,CAAC,oBAAoB,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,mBAAmB;gBACxG,CAAC,CAAC,sBAAsB;SAC3B,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,SAAS,CACnB;gBACE,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,4BAA4B,KAAK,CAAC,OAAO,EAAE;gBAClD,UAAU,EAAE,KAAK,CAAC,UAAU;aAC7B,CAAC,CAAC;QACP,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CACnB;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAChE,CAAC,CAAC;IACP,CAAC;AACH,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { z } from 'zod';
2
+ export declare const updateStatusToolName = "llama_update_status";
3
+ export declare const updateStatusToolDescription = "Move an issue to a different status in the workflow.\nFirst use llama_context to see available statuses for the project.\n\nCommon status names: \"To Do\", \"In Progress\", \"In Review\", \"Done\"\nThe exact names depend on the project's workflow configuration.";
4
+ export declare const updateStatusToolSchema: z.ZodObject<{
5
+ orgSlug: z.ZodOptional<z.ZodString>;
6
+ projectKey: z.ZodOptional<z.ZodString>;
7
+ issueKey: z.ZodString;
8
+ statusId: z.ZodString;
9
+ }, "strip", z.ZodTypeAny, {
10
+ issueKey: string;
11
+ statusId: string;
12
+ orgSlug?: string | undefined;
13
+ projectKey?: string | undefined;
14
+ }, {
15
+ issueKey: string;
16
+ statusId: string;
17
+ orgSlug?: string | undefined;
18
+ projectKey?: string | undefined;
19
+ }>;
20
+ export type UpdateStatusToolInput = z.infer<typeof updateStatusToolSchema>;
21
+ export declare function executeUpdateStatus(input: UpdateStatusToolInput): Promise<string>;
22
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/tools/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,oBAAoB,wBAAwB,CAAC;AAE1D,eAAO,MAAM,2BAA2B,0QAIwB,CAAC;AAEjE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;EAWjC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE3E,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,MAAM,CAAC,CAiFjB"}
@@ -0,0 +1,81 @@
1
+ import { z } from 'zod';
2
+ import { getApiClient, LlamaApiError } from '../api-client.js';
3
+ import { getColumnInstructionsForStatus } from '../utils/column-instructions.js';
4
+ import { getSessionDefaults } from './session.js';
5
+ export const updateStatusToolName = 'llama_update_status';
6
+ export const updateStatusToolDescription = `Move an issue to a different status in the workflow.
7
+ First use llama_context to see available statuses for the project.
8
+
9
+ Common status names: "To Do", "In Progress", "In Review", "Done"
10
+ The exact names depend on the project's workflow configuration.`;
11
+ export const updateStatusToolSchema = z.object({
12
+ orgSlug: z
13
+ .string()
14
+ .optional()
15
+ .describe('Organization slug (uses session default if not provided)'),
16
+ projectKey: z
17
+ .string()
18
+ .optional()
19
+ .describe('Project key (uses session default if not provided)'),
20
+ issueKey: z.string().describe('Issue key to update'),
21
+ statusId: z.string().describe('Status ID to transition to (from workflow.statuses)'),
22
+ });
23
+ export async function executeUpdateStatus(input) {
24
+ try {
25
+ const session = await getSessionDefaults();
26
+ const orgSlug = input.orgSlug ?? session?.orgSlug;
27
+ const projectKey = input.projectKey ?? session?.projectKey;
28
+ if (!orgSlug) {
29
+ return JSON.stringify({
30
+ success: false,
31
+ error: 'orgSlug is required. Either provide it or set session context with llama_set_context first.',
32
+ });
33
+ }
34
+ if (!projectKey) {
35
+ return JSON.stringify({
36
+ success: false,
37
+ error: 'projectKey is required. Either provide it or set session context with llama_set_context first.',
38
+ });
39
+ }
40
+ const client = getApiClient();
41
+ // Record tool call
42
+ try {
43
+ await client.recordToolCall('llama_update_status', { orgSlug, projectKey });
44
+ }
45
+ catch {
46
+ // Ignore recording errors
47
+ }
48
+ const issue = await client.updateIssue(orgSlug, projectKey, input.issueKey, { statusId: input.statusId });
49
+ // Check if the new status has column AI instructions
50
+ const columnInstructions = await getColumnInstructionsForStatus(orgSlug, projectKey, input.statusId);
51
+ const response = {
52
+ success: true,
53
+ message: `Moved ${issue.key} to status "${issue.status.name}"`,
54
+ issue: {
55
+ key: issue.key,
56
+ summary: issue.summary,
57
+ status: issue.status,
58
+ statusCategory: issue.statusCategory,
59
+ },
60
+ };
61
+ // Add column instructions if they exist
62
+ if (columnInstructions) {
63
+ response.columnInstructions = columnInstructions;
64
+ }
65
+ return JSON.stringify(response);
66
+ }
67
+ catch (error) {
68
+ if (error instanceof LlamaApiError) {
69
+ return JSON.stringify({
70
+ success: false,
71
+ error: `Failed to update status: ${error.message}`,
72
+ statusCode: error.statusCode,
73
+ });
74
+ }
75
+ return JSON.stringify({
76
+ success: false,
77
+ error: error instanceof Error ? error.message : 'Unknown error',
78
+ });
79
+ }
80
+ }
81
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/tools/status.ts"],"names":[],"mappings":"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"}