@t4dhg/mcp-factorial 10.2.0 → 11.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.
Files changed (67) hide show
  1. package/README.md +54 -43
  2. package/dist/api/attendance.d.ts +17 -1
  3. package/dist/api/attendance.d.ts.map +1 -1
  4. package/dist/api/attendance.js +38 -1
  5. package/dist/api/attendance.js.map +1 -1
  6. package/dist/api/index.d.ts +1 -1
  7. package/dist/api/index.d.ts.map +1 -1
  8. package/dist/api/index.js +1 -1
  9. package/dist/api/index.js.map +1 -1
  10. package/dist/attendance/backfill.d.ts +18 -3
  11. package/dist/attendance/backfill.d.ts.map +1 -1
  12. package/dist/attendance/backfill.js +51 -9
  13. package/dist/attendance/backfill.js.map +1 -1
  14. package/dist/attendance/planner.d.ts +64 -4
  15. package/dist/attendance/planner.d.ts.map +1 -1
  16. package/dist/attendance/planner.js +145 -16
  17. package/dist/attendance/planner.js.map +1 -1
  18. package/dist/attendance/report.d.ts +3 -0
  19. package/dist/attendance/report.d.ts.map +1 -1
  20. package/dist/attendance/report.js +92 -12
  21. package/dist/attendance/report.js.map +1 -1
  22. package/dist/endpoints.d.ts +2 -0
  23. package/dist/endpoints.d.ts.map +1 -1
  24. package/dist/endpoints.js +2 -0
  25. package/dist/endpoints.js.map +1 -1
  26. package/dist/errors.d.ts +6 -1
  27. package/dist/errors.d.ts.map +1 -1
  28. package/dist/errors.js +10 -5
  29. package/dist/errors.js.map +1 -1
  30. package/dist/http-client.d.ts +6 -0
  31. package/dist/http-client.d.ts.map +1 -1
  32. package/dist/http-client.js +28 -4
  33. package/dist/http-client.js.map +1 -1
  34. package/dist/prompts/attendance.d.ts +19 -2
  35. package/dist/prompts/attendance.d.ts.map +1 -1
  36. package/dist/prompts/attendance.js +297 -40
  37. package/dist/prompts/attendance.js.map +1 -1
  38. package/dist/schemas/attendance.d.ts +123 -0
  39. package/dist/schemas/attendance.d.ts.map +1 -1
  40. package/dist/schemas/attendance.js +58 -0
  41. package/dist/schemas/attendance.js.map +1 -1
  42. package/dist/schemas/documents.d.ts +2 -2
  43. package/dist/schemas/index.d.ts +1 -1
  44. package/dist/schemas/index.d.ts.map +1 -1
  45. package/dist/schemas/index.js +1 -1
  46. package/dist/schemas/index.js.map +1 -1
  47. package/dist/schemas/projects.d.ts +2 -2
  48. package/dist/tools/attendance.d.ts.map +1 -1
  49. package/dist/tools/attendance.js +325 -50
  50. package/dist/tools/attendance.js.map +1 -1
  51. package/dist/tools/index.d.ts +1 -0
  52. package/dist/tools/index.d.ts.map +1 -1
  53. package/dist/tools/index.js +6 -8
  54. package/dist/tools/index.js.map +1 -1
  55. package/dist/tools/shared.d.ts +10 -1
  56. package/dist/tools/shared.d.ts.map +1 -1
  57. package/dist/tools/shared.js +33 -0
  58. package/dist/tools/shared.js.map +1 -1
  59. package/dist/tools/time-off.d.ts.map +1 -1
  60. package/dist/tools/time-off.js +9 -1
  61. package/dist/tools/time-off.js.map +1 -1
  62. package/dist/write-safety.d.ts +6 -0
  63. package/dist/write-safety.d.ts.map +1 -1
  64. package/dist/write-safety.js +7 -0
  65. package/dist/write-safety.js.map +1 -1
  66. package/llms.txt +11 -6
  67. package/package.json +4 -3
@@ -13,11 +13,11 @@ import * as z from 'zod';
13
13
  import { checkConfirmation } from './shared.js';
14
14
  import { textResponse, formatToolError } from '../tool-utils.js';
15
15
  import { formatPaginationInfo } from '../pagination.js';
16
- import { listShifts, getShift, createShift, updateShift, deleteShift, listOpenShifts, clockIn, clockOut, formatLocalIso, } from '../api/index.js';
16
+ import { listShifts, getShift, createShift, updateShift, deleteShift, listOpenShifts, clockIn, clockOut, formatLocalIso, listEditTimesheetRequests, createEditTimesheetRequest, } from '../api/index.js';
17
17
  import { hhmm, isoWithOffset, LOCATION_TYPES, HALF_DAY_VALUES, SegmentInputSchema, DayInputSchema, } from '../schemas.js';
18
- import { enumerateDates, formatCoverage, formatPlanPreview, hours, parseHHMM, planFingerprint, } from '../attendance/planner.js';
19
- import { formatAudit, formatGaps } from '../attendance/report.js';
20
- import { buildLedger, executeBackfill, findGaps, planBackfill, requestWindow, } from '../attendance/backfill.js';
18
+ import { declaredMoment, enumerateDates, formatPlanPreview, hours, parseHHMM, planFingerprint, } from '../attendance/planner.js';
19
+ import { formatAudit, formatGaps, ENTRY_TIME_NOTE } from '../attendance/report.js';
20
+ import { buildLedger, CONSECUTIVE_FAILURE_ABORT, executeBackfill, findGaps, planBackfill, requestWindow, } from '../attendance/backfill.js';
21
21
  import { getConfiguredEmployeeId, resolveEmployeeName, resolveTargetEmployeeId, } from '../attendance/identity.js';
22
22
  import { payloadFingerprint, requireTargetConfirmation } from '../attendance/gate.js';
23
23
  const RETRY_NOTE = 'Re-running the identical call is safe against this run: the planner re-reads existing shifts ' +
@@ -40,7 +40,7 @@ function describeWrites(writes) {
40
40
  }
41
41
  return [...byMonth.entries()]
42
42
  .sort(([a], [b]) => a.localeCompare(b))
43
- .map(([month, e]) => ` ${month} ${e.days.size} days, ${e.records} records, ${hours(e.minutes)}`)
43
+ .map(([month, e]) => ` ${month} ${e.days.size} day${e.days.size === 1 ? '' : 's'}, ${e.records} record${e.records === 1 ? '' : 's'}, ${hours(e.minutes)}`)
44
44
  .join('\n');
45
45
  }
46
46
  function shiftLine(shift) {
@@ -50,10 +50,33 @@ export function registerAttendanceTool(server) {
50
50
  server.registerTool('factorial_attendance', {
51
51
  title: 'FactorialHR Attendance',
52
52
  description: 'Attendance (registro horario): list/get/create/update/delete shift records, clock_in, ' +
53
- 'clock_out and status for live clocking, gaps to find days with missing hours, and ' +
54
- 'log_range / log_days to enter many days at once. Bulk writes and writes for another ' +
55
- 'employee return a preview plus a confirmation_token first; nothing is written until the ' +
56
- 'call is repeated with that token. Times are HH:MM in company local time.',
53
+ 'clock_out and status for live clocking, gaps and audit to find days that do not match ' +
54
+ 'the contract, log_range / log_days to enter many days at once, and list_edit_requests / ' +
55
+ 'create_edit_request for days whose timesheet has already been signed off. ' +
56
+ 'Without date and time, clock_in and clock_out record the current moment; given both, ' +
57
+ 'they record the declared moment instead, for someone who forgot to clock and knows when ' +
58
+ 'they started or stopped. A declared moment in the future is refused before anything is ' +
59
+ 'sent, and clock_out with a declared moment is refused if nothing is open or if it would ' +
60
+ 'close a shift before it started. ' +
61
+ 'Bulk writes, writes for another employee and edit requests preview first: the call ' +
62
+ 'returns a plan and a confirmation_token, and nothing is written until the identical ' +
63
+ 'call is repeated with that token within 15 minutes. ' +
64
+ 'audit, gaps and every preview begin with a Data read line saying how much of the window ' +
65
+ 'was actually read; audit reports a day Factorial returned nothing for as ' +
66
+ 'no_contract_data, and log_range never writes such a day (log_days, which takes explicit ' +
67
+ 'dates, will). Times are HH:MM in company local time, applied by Factorial in the ' +
68
+ 'company zone; the server never converts.\n\n' +
69
+ 'Declared time versus entry time: a shift carries two independent sets of timestamps. ' +
70
+ 'The declared working time is date, clock_in, clock_out and, for a shift that crosses ' +
71
+ 'midnight, reference_date; these are inputs, and they are what the attendance sheet and ' +
72
+ 'the hour totals show. Separately, Factorial sets created_at, updated_at, in_source and ' +
73
+ 'out_source on the server to record when and how the record was entered; they are ' +
74
+ 'read-only through this API and no action here can set or change them. For example, a ' +
75
+ 'record written on 2026-09-07 for 2024-01-02 09:59 comes back with date: 2024-01-02, ' +
76
+ 'clock_in: 09:59, created_at of 2026-09-07 and in_source: api; that is the correct and ' +
77
+ 'only correct outcome. Both facts are true at once: a backfilled record shows the real ' +
78
+ "working day on the attendance sheet while Factorial's activity log shows it was entered " +
79
+ 'later through the API.',
57
80
  inputSchema: {
58
81
  action: z
59
82
  .enum([
@@ -69,6 +92,8 @@ export function registerAttendanceTool(server) {
69
92
  'audit',
70
93
  'log_range',
71
94
  'log_days',
95
+ 'list_edit_requests',
96
+ 'create_edit_request',
72
97
  ])
73
98
  .describe('Action'),
74
99
  id: z.number().optional().describe('Shift ID (get, update, delete)'),
@@ -85,12 +110,28 @@ export function registerAttendanceTool(server) {
85
110
  ids: z.array(z.number()).optional().describe('Shift IDs (list)'),
86
111
  updated_at: z.string().optional().describe('Shifts updated at this date (list)'),
87
112
  workable: z.boolean().optional().describe('Filter or set the workable flag'),
88
- half_day: z.enum(HALF_DAY_VALUES).optional().describe('Half day marker'),
89
- date: z.string().optional().describe('Shift date YYYY-MM-DD (create, update)'),
113
+ half_day: z
114
+ .enum(HALF_DAY_VALUES)
115
+ .optional()
116
+ .describe('Half day marker. "beggining_of_day" is Factorial\'s own spelling of the value and ' +
117
+ 'must be sent exactly as it is; do not correct it.'),
118
+ date: z
119
+ .string()
120
+ .optional()
121
+ .describe('Shift date YYYY-MM-DD (create, update). For clock_in/clock_out, the declared day; ' +
122
+ 'give it together with time to record a declared moment instead of the current one'),
123
+ time: z
124
+ .string()
125
+ .optional()
126
+ .describe('clock_in/clock_out: the declared time HH:MM in company local time. Without date and ' +
127
+ 'time the action records the current moment; with them it records the declared moment. ' +
128
+ 'Use this when the person forgot to clock and knows when they started or stopped'),
90
129
  reference_date: z
91
130
  .string()
92
131
  .optional()
93
- .describe('Reference date YYYY-MM-DD (create, update)'),
132
+ .describe('The day an overnight shift is attributed to (create, update). It must equal date ' +
133
+ 'unless the shift crosses midnight. This is not when the record was entered; that ' +
134
+ 'is created_at, which Factorial sets and is read-only.'),
94
135
  clock_in: z
95
136
  .union([hhmm, isoWithOffset])
96
137
  .optional()
@@ -125,15 +166,21 @@ export function registerAttendanceTool(server) {
125
166
  .max(30)
126
167
  .optional()
127
168
  .default(0)
128
- .describe('log_range/log_days: vary each written time by up to this many minutes so a month of ' +
129
- 'entries does not all read 09:00 exactly. Recommended 5 to 10 when reconstructing ' +
130
- 'approximate hours. Deterministic per record; the preview lists the exact times.'),
169
+ .describe('log_range/log_days: shift each segment by up to this many minutes, normally keeping ' +
170
+ 'its length (only a segment that would otherwise run into its neighbour or past ' +
171
+ 'midnight is shortened instead), so a month of entries does not all read 09:00 ' +
172
+ 'exactly. Recommended 5 to 10 when reconstructing approximate hours. It varies ' +
173
+ 'segments within a day; for the start time to drift from day to day use ' +
174
+ 'variation_minutes. Deterministic per record, so the preview lists the exact times ' +
175
+ 'that will be written.'),
131
176
  format: z
132
177
  .enum(['summary', 'table', 'json'])
133
178
  .optional()
134
179
  .default('summary')
135
- .describe('audit: "summary" (default) lists only the days that need attention, "table" lists every ' +
136
- 'day, "json" returns the full ledger as JSON'),
180
+ .describe('audit: "summary" (default) lists only the days that need attention, "table" lists ' +
181
+ 'every day, "json" returns the full ledger. expected counts bank holidays and ' +
182
+ 'leave at full contract minutes; the header also gives the workday expected ' +
183
+ 'total, which is the number tracked hours should meet.'),
137
184
  tolerance_minutes: z
138
185
  .number()
139
186
  .int()
@@ -141,14 +188,82 @@ export function registerAttendanceTool(server) {
141
188
  .max(120)
142
189
  .optional()
143
190
  .default(15)
144
- .describe('gaps/audit: a day within this many minutes of the expected total counts as complete (default 15)'),
191
+ .describe('gaps/audit: a day within this many minutes of the expected total counts as complete ' +
192
+ '(default 15). Real clocks are never exact, so a day a few minutes over is normal ' +
193
+ 'and needs no correction.'),
194
+ statuses: z
195
+ .array(z.enum([
196
+ 'future',
197
+ 'weekend',
198
+ 'bank_holiday',
199
+ 'not_workable',
200
+ 'no_contract_data',
201
+ 'on_leave',
202
+ 'half_day_leave',
203
+ 'complete',
204
+ 'missing',
205
+ 'short',
206
+ 'over',
207
+ ]))
208
+ .optional()
209
+ .describe('audit: list only days with these statuses. Default lists everything needing attention: ' +
210
+ 'missing, short, over, half_day_leave and no_contract_data'),
211
+ exclude_dates: z
212
+ .array(z.string())
213
+ .optional()
214
+ .describe('log_range: dates (YYYY-MM-DD) inside the range to leave alone, for days that were not worked. ' +
215
+ 'The preview lists them so the omission is visible before confirming'),
216
+ variation_minutes: z
217
+ .number()
218
+ .int()
219
+ .min(0)
220
+ .max(120)
221
+ .optional()
222
+ .default(0)
223
+ .describe('log_range/log_days: shift each whole day by up to this many minutes, the segments moving ' +
224
+ 'together, so the start time drifts from day to day. This is the variation jitter_minutes ' +
225
+ 'cannot produce, since jitter varies segments within a day. Deterministic per day'),
226
+ fields: z
227
+ .enum(['full', 'compact'])
228
+ .optional()
229
+ .default('full')
230
+ .describe('list: "compact" returns date, clock_in, clock_out, minutes and in_source only; ' +
231
+ '"full" (default) returns id, employee_id, date, clock_in, clock_out, minutes, ' +
232
+ 'in_source and observations. Neither is every field of the raw record; use ' +
233
+ 'action: "get" for the complete record.'),
145
234
  confirmation_token: z
146
235
  .string()
147
236
  .optional()
148
- .describe('Token from a previous preview, to execute a gated write'),
149
- page: z.number().optional().default(1).describe('Page number (list, client-side)'),
150
- limit: z.number().optional().default(100).describe('Items per page (list, client-side)'),
237
+ .describe('Token from a previous preview, to execute a gated write. Valid for 15 minutes and ' +
238
+ 'bound to exactly the plan that was previewed; if anything changed in between it ' +
239
+ 'is refused and a fresh preview is returned.'),
240
+ page: z
241
+ .number()
242
+ .optional()
243
+ .default(1)
244
+ .describe('Page number (list, client-side). The API returns every record in range in one ' +
245
+ 'response, so paging only slices output that has already been read.'),
246
+ limit: z
247
+ .number()
248
+ .optional()
249
+ .default(100)
250
+ .describe('Items per page (list, client-side). The API returns every record in range in one ' +
251
+ 'response, so this only slices output that has already been read.'),
151
252
  confirm: z.boolean().optional().describe('Confirm delete'),
253
+ reason: z
254
+ .string()
255
+ .optional()
256
+ .describe('Why the timesheet needs changing (create_edit_request, required)'),
257
+ request_type: z
258
+ .enum(['create_shift', 'delete_shift', 'update_shift'])
259
+ .optional()
260
+ .describe('What the edit request asks for (create_edit_request, default create_shift). ' +
261
+ 'create_shift requires date; update_shift and delete_shift require attendance_shift_id'),
262
+ attendance_shift_id: z
263
+ .number()
264
+ .optional()
265
+ .describe('The shift this edit request refers to (create_edit_request). Required for ' +
266
+ 'update_shift and delete_shift, since without it the request names no shift'),
152
267
  },
153
268
  }, async (args) => {
154
269
  try {
@@ -175,17 +290,25 @@ export function registerAttendanceTool(server) {
175
290
  page: args.page,
176
291
  limit: args.limit,
177
292
  });
178
- const summary = result.data.map(s => ({
179
- id: s.id,
180
- employee_id: s.employee_id,
181
- date: s.date,
182
- clock_in: s.clock_in,
183
- clock_out: s.clock_out,
184
- minutes: s.minutes,
185
- in_source: s.in_source,
186
- observations: s.observations,
187
- }));
188
- return textResponse(`Found ${result.meta.total} shifts ${scope} (${formatPaginationInfo(result.meta)}; paging is ` +
293
+ const summary = result.data.map(s => args.fields === 'compact'
294
+ ? {
295
+ date: s.date,
296
+ clock_in: s.clock_in,
297
+ clock_out: s.clock_out,
298
+ minutes: s.minutes,
299
+ in_source: s.in_source,
300
+ }
301
+ : {
302
+ id: s.id,
303
+ employee_id: s.employee_id,
304
+ date: s.date,
305
+ clock_in: s.clock_in,
306
+ clock_out: s.clock_out,
307
+ minutes: s.minutes,
308
+ in_source: s.in_source,
309
+ observations: s.observations,
310
+ });
311
+ return textResponse(`Found ${result.meta.total} shift${result.meta.total === 1 ? '' : 's'} ${scope} (${formatPaginationInfo(result.meta)}; paging is ` +
189
312
  `client-side, the API returned everything in range). Times are HH:MM company local.\n\n` +
190
313
  JSON.stringify(summary, null, 2));
191
314
  }
@@ -222,7 +345,8 @@ export function registerAttendanceTool(server) {
222
345
  if (!gate.proceed)
223
346
  return textResponse(gate.message);
224
347
  const shift = await createShift(input);
225
- return textResponse(`Shift created for ${name} (${employeeId}):\n\n${JSON.stringify(shift, null, 2)}`);
348
+ return textResponse(`Shift created for ${name} (${employeeId}): ${args.date} ${args.clock_in ?? '?'}-${args.clock_out ?? 'open'}.\n\n` +
349
+ `${JSON.stringify(shift, null, 2)}\n\n${ENTRY_TIME_NOTE}`);
226
350
  }
227
351
  case 'update': {
228
352
  if (!args.id)
@@ -257,7 +381,8 @@ export function registerAttendanceTool(server) {
257
381
  if (!gate.proceed)
258
382
  return textResponse(gate.message);
259
383
  const shift = await updateShift(args.id, input);
260
- return textResponse(`Shift updated:\n\n${JSON.stringify(shift, null, 2)}`);
384
+ return textResponse(`Shift updated: ${shift.date} ${shift.clock_in ?? '?'}-${shift.clock_out ?? 'open'}.\n\n` +
385
+ `${JSON.stringify(shift, null, 2)}\n\n${ENTRY_TIME_NOTE}`);
261
386
  }
262
387
  case 'delete': {
263
388
  if (!args.id)
@@ -284,7 +409,52 @@ export function registerAttendanceTool(server) {
284
409
  case 'clock_out': {
285
410
  const employeeId = resolveTargetEmployeeId(args.employee_id);
286
411
  const name = await resolveEmployeeName(employeeId);
287
- const now = new Date();
412
+ const wallClock = new Date();
413
+ let now = wallClock;
414
+ const declared = args.date !== undefined || args.time !== undefined;
415
+ // Both are set together whenever declared is true; the block below
416
+ // returns before this point otherwise. Narrowed once here so the
417
+ // declared-path calls below don't have to repeat the check.
418
+ let declaredDate;
419
+ let declaredTime;
420
+ if (declared) {
421
+ if (args.date === undefined || args.time === undefined) {
422
+ return textResponse('Error: date and time must be given together to declare a moment. Give both, or ' +
423
+ 'neither to record the current moment.');
424
+ }
425
+ declaredDate = args.date;
426
+ declaredTime = args.time;
427
+ // Compared against wall clock below purely to refuse a future
428
+ // moment; this Date is never sent to Factorial. What is sent for
429
+ // a declared moment is the bare HH:MM, via createShift/updateShift
430
+ // below, which Factorial applies in the company zone, not the
431
+ // server's. Only the undeclared (live) path below still sends an
432
+ // absolute instant, where the server's offset is correct because
433
+ // the instant is unambiguous regardless of zone.
434
+ now = declaredMoment(declaredDate, declaredTime);
435
+ // A declared moment in the future is never a record of work done.
436
+ if (now.getTime() > wallClock.getTime()) {
437
+ return textResponse(`Error: ${args.date} ${args.time} is in the future. A shift records work that has ` +
438
+ 'already happened, so the declared moment must not be later than now.');
439
+ }
440
+ }
441
+ let openShift;
442
+ if (args.action === 'clock_out' && declared) {
443
+ const open = await listOpenShifts(employeeId);
444
+ if (open.length === 0) {
445
+ return textResponse(`Nothing is open for ${name} (${employeeId}), so there is no shift to close at ` +
446
+ `${args.date} ${args.time}. Nothing was written. To record a whole past shift, ` +
447
+ 'use action create with date, clock_in and clock_out.');
448
+ }
449
+ openShift = open[0];
450
+ const startedAt = declaredMoment(openShift.date, openShift.clock_in.includes('T')
451
+ ? openShift.clock_in.slice(11, 16)
452
+ : openShift.clock_in);
453
+ if (now.getTime() < startedAt.getTime()) {
454
+ return textResponse(`Error: ${args.date} ${args.time} is before the open shift started ` +
455
+ `(${openShift.date} ${openShift.clock_in}). Nothing was written.`);
456
+ }
457
+ }
288
458
  const input = {
289
459
  employee_id: employeeId,
290
460
  location_type: args.location_type,
@@ -292,19 +462,56 @@ export function registerAttendanceTool(server) {
292
462
  observations: args.observations,
293
463
  };
294
464
  const verb = args.action === 'clock_in' ? 'Clock in' : 'Clock out';
465
+ const moment = declared ? `${args.date} ${args.time}` : `now (${formatLocalIso(now)})`;
295
466
  const gate = requireTargetConfirmation({
296
467
  operation: args.action,
297
468
  employeeId,
298
- // The preview is bound to the person and the payload, not the second.
299
- fingerprint: payloadFingerprint({ action: args.action, input }),
300
- preview: `${verb} ${name} (${employeeId}) now (${formatLocalIso(now)})`,
469
+ // Bound to the person, the payload and the declared moment (if any), not the second.
470
+ fingerprint: payloadFingerprint({
471
+ action: args.action,
472
+ input,
473
+ declared: declared ? { date: args.date, time: args.time } : null,
474
+ }),
475
+ preview: `${verb} ${name} (${employeeId}) ${moment}`,
301
476
  token: args.confirmation_token,
302
477
  });
303
478
  if (!gate.proceed)
304
479
  return textResponse(gate.message);
305
- const shift = args.action === 'clock_in' ? await clockIn(input, now) : await clockOut(input, now);
306
- return textResponse(`${verb} recorded for ${name} (${employeeId}) at ${formatLocalIso(now)}:\n\n` +
307
- JSON.stringify(shift, null, 2));
480
+ // A declared moment is a company-local wall-clock time (bare
481
+ // HH:MM), never an absolute instant: it goes through the same
482
+ // create/update shift endpoints the create/update actions use,
483
+ // which Factorial applies in the company zone. The clock_in/
484
+ // clock_out endpoints below take an absolute instant (`now` with a
485
+ // server offset) and are only correct when there is no declared
486
+ // moment, because an instant is unambiguous regardless of the
487
+ // server's zone.
488
+ const shift = declared
489
+ ? args.action === 'clock_in'
490
+ ? await createShift({
491
+ employee_id: employeeId,
492
+ date: declaredDate,
493
+ clock_in: declaredTime,
494
+ location_type: args.location_type,
495
+ workplace_id: args.workplace_id,
496
+ observations: args.observations,
497
+ })
498
+ : await updateShift(Number(openShift.id), {
499
+ date: declaredDate,
500
+ clock_out: declaredTime,
501
+ location_type: args.location_type,
502
+ workplace_id: args.workplace_id,
503
+ observations: args.observations,
504
+ })
505
+ : args.action === 'clock_in'
506
+ ? await clockIn(input, now)
507
+ : await clockOut(input, now);
508
+ // Unlike `moment` above (which wraps the live case in "now (...)"
509
+ // for the preview), the result names the bare declared HH:MM for a
510
+ // declared write, since that is the value actually sent; the live
511
+ // case keeps the exact instant it always reported.
512
+ const resultMoment = declared ? `${args.date} ${args.time}` : formatLocalIso(now);
513
+ return textResponse(`${verb} recorded for ${name} (${employeeId}) at ${resultMoment}:\n\n` +
514
+ `${JSON.stringify(shift, null, 2)}\n\n${ENTRY_TIME_NOTE}`);
308
515
  }
309
516
  case 'status': {
310
517
  const employeeId = resolveTargetEmployeeId(args.employee_id);
@@ -363,8 +570,65 @@ export function registerAttendanceTool(server) {
363
570
  coverage,
364
571
  toleranceMinutes: args.tolerance_minutes,
365
572
  format: args.format,
573
+ statuses: args.statuses,
366
574
  }));
367
575
  }
576
+ case 'list_edit_requests': {
577
+ const configured = getConfiguredEmployeeId();
578
+ const employeeIds = args.employee_ids ??
579
+ (args.employee_id ? [args.employee_id] : configured ? [configured] : undefined);
580
+ const requests = await listEditTimesheetRequests(employeeIds);
581
+ if (requests.length === 0) {
582
+ return textResponse('No edit timesheet requests on record.');
583
+ }
584
+ const lines = requests.map(r => ` ${r.date ?? '-'} ${r.request_type.padEnd(12)} ${r.approved === true ? 'approved' : r.approved === false ? 'rejected' : 'pending'} ${r.clock_in ?? '-'}-${r.clock_out ?? '-'} ${r.reason ?? ''}`);
585
+ return textResponse(`${requests.length} edit timesheet request${requests.length === 1 ? '' : 's'}:\n\n${lines.join('\n')}`);
586
+ }
587
+ case 'create_edit_request': {
588
+ const requestType = args.request_type ?? 'create_shift';
589
+ if (requestType === 'create_shift' && !args.date) {
590
+ return textResponse('Error: date (YYYY-MM-DD) is required for a create_shift edit request');
591
+ }
592
+ if ((requestType === 'update_shift' || requestType === 'delete_shift') &&
593
+ !args.attendance_shift_id) {
594
+ return textResponse(`Error: attendance_shift_id is required for a ${requestType} edit request, ` +
595
+ 'so the request names the shift it refers to');
596
+ }
597
+ if (!args.reason || args.reason.trim() === '') {
598
+ return textResponse('Error: reason is required. A person approves this request and needs to know why it was filed.');
599
+ }
600
+ const employeeId = resolveTargetEmployeeId(args.employee_id);
601
+ const name = await resolveEmployeeName(employeeId);
602
+ const input = {
603
+ employee_id: employeeId,
604
+ request_type: requestType,
605
+ date: args.date,
606
+ clock_in: args.clock_in,
607
+ clock_out: args.clock_out,
608
+ reason: args.reason,
609
+ observations: args.observations,
610
+ attendance_shift_id: args.attendance_shift_id,
611
+ };
612
+ const gate = requireTargetConfirmation({
613
+ operation: 'create_edit_request',
614
+ employeeId,
615
+ fingerprint: payloadFingerprint(input),
616
+ preview: `File an edit timesheet request for ${name} (${employeeId}): ${requestType}` +
617
+ (args.date ? ` on ${args.date}` : '') +
618
+ (args.attendance_shift_id ? ` for shift ${args.attendance_shift_id}` : '') +
619
+ ` ${args.clock_in ?? '?'}-${args.clock_out ?? '?'}\n` +
620
+ `Reason: ${args.reason}\n` +
621
+ 'A person approves this request in Factorial and is notified of it.',
622
+ token: args.confirmation_token,
623
+ always: true,
624
+ });
625
+ if (!gate.proceed)
626
+ return textResponse(gate.message);
627
+ const created = await createEditTimesheetRequest(input);
628
+ return textResponse(`Edit request ${created.id} filed for ${name} (${employeeId}). ` +
629
+ 'It takes effect only once someone approves it in Factorial.\n\n' +
630
+ JSON.stringify(created, null, 2));
631
+ }
368
632
  case 'log_range':
369
633
  case 'log_days': {
370
634
  if (args.observations !== undefined && args.observations.length > 500) {
@@ -384,6 +648,8 @@ export function registerAttendanceTool(server) {
384
648
  segments: args.segments,
385
649
  skip_leave: args.skip_leave,
386
650
  jitter_minutes: args.jitter_minutes,
651
+ exclude_dates: args.exclude_dates,
652
+ variation_minutes: args.variation_minutes,
387
653
  };
388
654
  }
389
655
  else {
@@ -396,11 +662,12 @@ export function registerAttendanceTool(server) {
396
662
  days: args.days,
397
663
  skip_leave: args.skip_leave,
398
664
  jitter_minutes: args.jitter_minutes,
665
+ variation_minutes: args.variation_minutes,
399
666
  };
400
667
  }
401
668
  const window = requestWindow(request);
402
669
  const { plan, facts } = await planBackfill(request, window.start, window.end);
403
- const preview = formatPlanPreview(plan, { id: employeeId, name }, window, request, args.observations) + (facts.coverage ? `\n\n${formatCoverage(facts.coverage)}` : '');
670
+ const preview = formatPlanPreview(plan, { id: employeeId, name }, window, request, args.observations, facts.coverage);
404
671
  if (plan.writes.length === 0) {
405
672
  return textResponse(`${preview}\n\nNothing to write.`);
406
673
  }
@@ -417,23 +684,31 @@ export function registerAttendanceTool(server) {
417
684
  const result = await executeBackfill(employeeId, plan.writes, args.observations);
418
685
  const writtenMinutes = result.written.reduce((sum, w) => sum + parseHHMM(w.clock_out) - parseHHMM(w.clock_in), 0);
419
686
  const lines = [
420
- `Wrote ${result.written.length} of ${plan.writes.length} shift records for ${name} (${employeeId}), ${hours(writtenMinutes)}.`,
687
+ `Wrote ${result.written.length} of ${plan.writes.length} shift record${plan.writes.length === 1 ? '' : 's'} for ${name} (${employeeId}), ${hours(writtenMinutes)}.`,
421
688
  ];
422
689
  if (result.failed.length > 0) {
423
- const failed = result.failed[0];
424
- const remaining = plan.writes.length - result.written.length - 1;
425
690
  lines.push('');
426
- lines.push(`Stopped at ${failed.date} ${failed.clock_in}-${failed.clock_out}: ${failed.error}`);
427
- if (remaining > 0)
428
- lines.push(`${remaining} further records were not attempted.`);
691
+ lines.push(`${result.failed.length} record${result.failed.length === 1 ? '' : 's'} failed:`);
692
+ for (const failure of result.failed.slice(0, 20)) {
693
+ lines.push(` ${failure.date} ${failure.clock_in}-${failure.clock_out}: ${failure.error}`);
694
+ }
695
+ if (result.failed.length > 20) {
696
+ const remaining = result.failed.length - 20;
697
+ lines.push(` ... ${remaining} further failure${remaining === 1 ? '' : 's'} not listed ...`);
698
+ }
699
+ if (result.abortedEarly) {
700
+ lines.push('');
701
+ lines.push(`Stopped after ${CONSECUTIVE_FAILURE_ABORT} failures in a row, which points at the ` +
702
+ `request rather than the records. ${result.notAttempted.length} record${result.notAttempted.length === 1 ? '' : 's'} not attempted.`);
703
+ }
429
704
  lines.push('');
430
705
  lines.push(RETRY_NOTE);
431
706
  }
432
- else {
707
+ if (result.written.length > 0) {
433
708
  lines.push('');
434
709
  lines.push(describeWrites(result.written));
435
710
  lines.push('');
436
- lines.push('Records carry source "api", so they are distinguishable from live clocks in Factorial\'s activity log.');
711
+ lines.push(ENTRY_TIME_NOTE);
437
712
  }
438
713
  return textResponse(lines.join('\n'));
439
714
  }
@@ -1 +1 @@
1
- {"version":3,"file":"attendance.js","sourceRoot":"","sources":["../../src/tools/attendance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attendance.js","sourceRoot":"","sources":["../../src/tools/attendance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EACL,UAAU,EACV,QAAQ,EACR,WAAW,EACX,WAAW,EACX,WAAW,EACX,cAAc,EACd,OAAO,EACP,QAAQ,EACR,cAAc,EACd,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,IAAI,EACJ,aAAa,EACb,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,KAAK,EACL,SAAS,EACT,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,EACL,WAAW,EACX,yBAAyB,EACzB,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,aAAa,GACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAEtF,MAAM,UAAU,GACd,+FAA+F;IAC/F,8FAA8F;IAC9F,0FAA0F;IAC1F,6FAA6F,CAAC;AAEhG,iGAAiG;AACjG,SAAS,cAAc,CAAC,MAAsB;IAC5C,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmE,CAAC;IAC3F,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,EAAU,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QACxF,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;SAC1B,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SACtC,GAAG,CACF,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CACb,KAAK,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CACzI;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,KAIlB;IACC,OAAO,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,IAAI,GAAG,IAAI,KAAK,CAAC,SAAS,IAAI,MAAM,EAAE,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EACT,wFAAwF;YACxF,wFAAwF;YACxF,0FAA0F;YAC1F,4EAA4E;YAC5E,uFAAuF;YACvF,0FAA0F;YAC1F,yFAAyF;YACzF,0FAA0F;YAC1F,mCAAmC;YACnC,qFAAqF;YACrF,sFAAsF;YACtF,sDAAsD;YACtD,0FAA0F;YAC1F,2EAA2E;YAC3E,0FAA0F;YAC1F,mFAAmF;YACnF,8CAA8C;YAC9C,uFAAuF;YACvF,uFAAuF;YACvF,yFAAyF;YACzF,yFAAyF;YACzF,mFAAmF;YACnF,uFAAuF;YACvF,sFAAsF;YACtF,wFAAwF;YACxF,wFAAwF;YACxF,0FAA0F;YAC1F,wBAAwB;QAC1B,WAAW,EAAE;YACX,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC;gBACJ,MAAM;gBACN,KAAK;gBACL,QAAQ;gBACR,QAAQ;gBACR,QAAQ;gBACR,UAAU;gBACV,WAAW;gBACX,QAAQ;gBACR,MAAM;gBACN,OAAO;gBACP,WAAW;gBACX,UAAU;gBACV,oBAAoB;gBACpB,qBAAqB;aACtB,CAAC;iBACD,QAAQ,CAAC,QAAQ,CAAC;YACrB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YACpE,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,yDAAyD,CAAC;YACtE,YAAY,EAAE,CAAC;iBACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CACP,uFAAuF,CACxF;YACH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;YACzF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YACrF,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAChE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YAChF,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;YAC5E,QAAQ,EAAE,CAAC;iBACR,IAAI,CAAC,eAAe,CAAC;iBACrB,QAAQ,EAAE;iBACV,QAAQ,CACP,oFAAoF;gBAClF,mDAAmD,CACtD;YACH,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,oFAAoF;gBAClF,mFAAmF,CACtF;YACH,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,sFAAsF;gBACpF,wFAAwF;gBACxF,iFAAiF,CACpF;YACH,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,mFAAmF;gBACjF,mFAAmF;gBACnF,uDAAuD,CAC1D;YACH,QAAQ,EAAE,CAAC;iBACR,KAAK,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;iBAC5B,QAAQ,EAAE;iBACV,QAAQ,CAAC,yEAAyE,CAAC;YACtF,SAAS,EAAE,CAAC;iBACT,KAAK,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;iBAC5B,QAAQ,EAAE;iBACV,QAAQ,CAAC,0EAA0E,CAAC;YACvF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;YACtF,aAAa,EAAE,CAAC;iBACb,IAAI,CAAC,cAAc,CAAC;iBACpB,QAAQ,EAAE;iBACV,QAAQ,CAAC,yCAAyC,CAAC;YACtD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YACvE,QAAQ,EAAE,CAAC;iBACR,KAAK,CAAC,kBAAkB,CAAC;iBACzB,QAAQ,EAAE;iBACV,QAAQ,CACP,+GAA+G,CAChH;YACH,IAAI,EAAE,CAAC;iBACJ,KAAK,CAAC,cAAc,CAAC;iBACrB,QAAQ,EAAE;iBACV,QAAQ,CAAC,uEAAuE,CAAC;YACpF,UAAU,EAAE,CAAC;iBACV,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CAAC,oDAAoD,CAAC;YACjE,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,EAAE,CAAC;iBACP,QAAQ,EAAE;iBACV,OAAO,CAAC,CAAC,CAAC;iBACV,QAAQ,CACP,sFAAsF;gBACpF,iFAAiF;gBACjF,gFAAgF;gBAChF,gFAAgF;gBAChF,yEAAyE;gBACzE,oFAAoF;gBACpF,uBAAuB,CAC1B;YACH,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;iBAClC,QAAQ,EAAE;iBACV,OAAO,CAAC,SAAS,CAAC;iBAClB,QAAQ,CACP,oFAAoF;gBAClF,+EAA+E;gBAC/E,6EAA6E;gBAC7E,uDAAuD,CAC1D;YACH,iBAAiB,EAAE,CAAC;iBACjB,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,OAAO,CAAC,EAAE,CAAC;iBACX,QAAQ,CACP,sFAAsF;gBACpF,mFAAmF;gBACnF,0BAA0B,CAC7B;YACH,QAAQ,EAAE,CAAC;iBACR,KAAK,CACJ,CAAC,CAAC,IAAI,CAAC;gBACL,QAAQ;gBACR,SAAS;gBACT,cAAc;gBACd,cAAc;gBACd,kBAAkB;gBAClB,UAAU;gBACV,gBAAgB;gBAChB,UAAU;gBACV,SAAS;gBACT,OAAO;gBACP,MAAM;aACP,CAAC,CACH;iBACA,QAAQ,EAAE;iBACV,QAAQ,CACP,yFAAyF;gBACvF,2DAA2D,CAC9D;YACH,aAAa,EAAE,CAAC;iBACb,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CACP,gGAAgG;gBAC9F,qEAAqE,CACxE;YACH,iBAAiB,EAAE,CAAC;iBACjB,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,OAAO,CAAC,CAAC,CAAC;iBACV,QAAQ,CACP,2FAA2F;gBACzF,2FAA2F;gBAC3F,kFAAkF,CACrF;YACH,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;iBACzB,QAAQ,EAAE;iBACV,OAAO,CAAC,MAAM,CAAC;iBACf,QAAQ,CACP,iFAAiF;gBAC/E,gFAAgF;gBAChF,4EAA4E;gBAC5E,wCAAwC,CAC3C;YACH,kBAAkB,EAAE,CAAC;iBAClB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,oFAAoF;gBAClF,kFAAkF;gBAClF,6CAA6C,CAChD;YACH,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,OAAO,CAAC,CAAC,CAAC;iBACV,QAAQ,CACP,gFAAgF;gBAC9E,oEAAoE,CACvE;YACH,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,OAAO,CAAC,GAAG,CAAC;iBACZ,QAAQ,CACP,mFAAmF;gBACjF,kEAAkE,CACrE;YACH,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAC1D,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,kEAAkE,CAAC;YAC/E,YAAY,EAAE,CAAC;iBACZ,IAAI,CAAC,CAAC,cAAc,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;iBACtD,QAAQ,EAAE;iBACV,QAAQ,CACP,8EAA8E;gBAC5E,uFAAuF,CAC1F;YACH,mBAAmB,EAAE,CAAC;iBACnB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,4EAA4E;gBAC1E,4EAA4E,CAC/E;SACJ;KACF,EACD,KAAK,EAAC,IAAI,EAAC,EAAE;QACX,IAAI,CAAC;YACH,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;gBACpB,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,qEAAqE;oBACrE,6DAA6D;oBAC7D,MAAM,UAAU,GAAG,uBAAuB,EAAE,CAAC;oBAC7C,MAAM,WAAW,GACf,IAAI,CAAC,YAAY;wBACjB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;oBAClF,MAAM,KAAK,GACT,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;wBACnC,CAAC,CAAC,eAAe,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBAC9E,CAAC,CAAC,UAAU;4BACV,CAAC,CAAC,4CAA4C;4BAC9C,CAAC,CAAC,wEAAwE,CAAC;oBACjF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC;wBAC9B,YAAY,EAAE,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;wBAC7E,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,GAAG,EAAE,IAAI,CAAC,GAAG;wBACb,UAAU,EAAE,IAAI,CAAC,UAAU;wBAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,KAAK,EAAE,IAAI,CAAC,KAAK;qBAClB,CAAC,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAClC,IAAI,CAAC,MAAM,KAAK,SAAS;wBACvB,CAAC,CAAC;4BACE,IAAI,EAAE,CAAC,CAAC,IAAI;4BACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;4BACpB,SAAS,EAAE,CAAC,CAAC,SAAS;4BACtB,OAAO,EAAE,CAAC,CAAC,OAAO;4BAClB,SAAS,EAAE,CAAC,CAAC,SAAS;yBACvB;wBACH,CAAC,CAAC;4BACE,EAAE,EAAE,CAAC,CAAC,EAAE;4BACR,WAAW,EAAE,CAAC,CAAC,WAAW;4BAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;4BACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;4BACpB,SAAS,EAAE,CAAC,CAAC,SAAS;4BACtB,OAAO,EAAE,CAAC,CAAC,OAAO;4BAClB,SAAS,EAAE,CAAC,CAAC,SAAS;4BACtB,YAAY,EAAE,CAAC,CAAC,YAAY;yBAC7B,CACN,CAAC;oBACF,OAAO,YAAY,CACjB,SAAS,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,KAAK,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc;wBAChI,wFAAwF;wBACxF,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CACnC,CAAC;gBACJ,CAAC;gBAED,KAAK,KAAK,CAAC,CAAC,CAAC;oBACX,IAAI,CAAC,IAAI,CAAC,EAAE;wBAAE,OAAO,YAAY,CAAC,uBAAuB,CAAC,CAAC;oBAC3D,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACtC,OAAO,YAAY,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC7E,CAAC;gBAED,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,IAAI,CAAC,IAAI,CAAC,IAAI;wBAAE,OAAO,YAAY,CAAC,sCAAsC,CAAC,CAAC;oBAC5E,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC7D,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;oBACnD,MAAM,KAAK,GAAG;wBACZ,WAAW,EAAE,UAAU;wBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,cAAc,EAAE,IAAI,CAAC,cAAc;wBACnC,YAAY,EAAE,IAAI,CAAC,YAAY;wBAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;wBACjC,YAAY,EAAE,IAAI,CAAC,YAAY;wBAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;qBACxB,CAAC;oBACF,MAAM,IAAI,GAAG,yBAAyB,CAAC;wBACrC,SAAS,EAAE,cAAc;wBACzB,UAAU;wBACV,WAAW,EAAE,kBAAkB,CAAC,KAAK,CAAC;wBACtC,OAAO,EAAE,oBAAoB,IAAI,KAAK,UAAU,QAAQ,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,IAAI,MAAM,EAAE;wBACvH,KAAK,EAAE,IAAI,CAAC,kBAAkB;qBAC/B,CAAC,CAAC;oBACH,IAAI,CAAC,IAAI,CAAC,OAAO;wBAAE,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACrD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;oBACvC,OAAO,YAAY,CACjB,qBAAqB,IAAI,KAAK,UAAU,MAAM,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,IAAI,MAAM,OAAO;wBAChH,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,eAAe,EAAE,CAC5D,CAAC;gBACJ,CAAC;gBAED,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,IAAI,CAAC,IAAI,CAAC,EAAE;wBAAE,OAAO,YAAY,CAAC,uBAAuB,CAAC,CAAC;oBAC3D,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACzC,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;oBAChD,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;oBACnD,MAAM,KAAK,GAAG;wBACZ,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,cAAc,EAAE,IAAI,CAAC,cAAc;wBACnC,YAAY,EAAE,IAAI,CAAC,YAAY;wBAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;wBACjC,YAAY,EAAE,IAAI,CAAC,YAAY;wBAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;qBACxB,CAAC;oBACF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;yBAClC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;yBAClC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;yBACpC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACd,IAAI,CAAC,OAAO;wBAAE,OAAO,YAAY,CAAC,0BAA0B,CAAC,CAAC;oBAC9D,MAAM,IAAI,GAAG,yBAAyB,CAAC;wBACrC,SAAS,EAAE,cAAc;wBACzB,UAAU;wBACV,WAAW,EAAE,kBAAkB,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;wBACvD,OAAO,EAAE,gBAAgB,IAAI,CAAC,EAAE,OAAO,IAAI,KAAK,UAAU,gBAAgB,SAAS,CAAC,QAAQ,CAAC,KAAK,OAAO,EAAE;wBAC3G,KAAK,EAAE,IAAI,CAAC,kBAAkB;qBAC/B,CAAC,CAAC;oBACH,IAAI,CAAC,IAAI,CAAC,OAAO;wBAAE,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACrD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;oBAChD,OAAO,YAAY,CACjB,kBAAkB,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,IAAI,GAAG,IAAI,KAAK,CAAC,SAAS,IAAI,MAAM,OAAO;wBACvF,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,eAAe,EAAE,CAC5D,CAAC;gBACJ,CAAC;gBAED,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,IAAI,CAAC,IAAI,CAAC,EAAE;wBAAE,OAAO,YAAY,CAAC,uBAAuB,CAAC,CAAC;oBAC3D,MAAM,KAAK,GAAG,iBAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC9D,IAAI,KAAK,CAAC,iBAAiB;wBAAE,OAAO,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAChE,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACzC,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;oBAChD,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;oBACnD,MAAM,IAAI,GAAG,yBAAyB,CAAC;wBACrC,SAAS,EAAE,cAAc;wBACzB,UAAU;wBACV,WAAW,EAAE,kBAAkB,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;wBAChD,OAAO,EAAE,gBAAgB,IAAI,CAAC,EAAE,OAAO,IAAI,KAAK,UAAU,MAAM,SAAS,CAAC,QAAQ,CAAC,EAAE;wBACrF,KAAK,EAAE,IAAI,CAAC,kBAAkB;qBAC/B,CAAC,CAAC;oBACH,IAAI,CAAC,IAAI,CAAC,OAAO;wBAAE,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACrD,MAAM,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC3B,OAAO,YAAY,CAAC,SAAS,IAAI,CAAC,EAAE,OAAO,IAAI,wBAAwB,CAAC,CAAC;gBAC3E,CAAC;gBAED,KAAK,UAAU,CAAC;gBAChB,KAAK,WAAW,CAAC,CAAC,CAAC;oBACjB,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC7D,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;oBACnD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;oBAC7B,IAAI,GAAG,GAAG,SAAS,CAAC;oBACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;oBACpE,mEAAmE;oBACnE,iEAAiE;oBACjE,4DAA4D;oBAC5D,IAAI,YAAgC,CAAC;oBACrC,IAAI,YAAgC,CAAC;oBACrC,IAAI,QAAQ,EAAE,CAAC;wBACb,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;4BACvD,OAAO,YAAY,CACjB,iFAAiF;gCAC/E,uCAAuC,CAC1C,CAAC;wBACJ,CAAC;wBACD,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;wBACzB,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;wBACzB,8DAA8D;wBAC9D,iEAAiE;wBACjE,mEAAmE;wBACnE,8DAA8D;wBAC9D,iEAAiE;wBACjE,iEAAiE;wBACjE,iDAAiD;wBACjD,GAAG,GAAG,cAAc,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;wBACjD,kEAAkE;wBAClE,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;4BACxC,OAAO,YAAY,CACjB,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,mDAAmD;gCACjF,sEAAsE,CACzE,CAAC;wBACJ,CAAC;oBACH,CAAC;oBAED,IAAI,SAAyE,CAAC;oBAC9E,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,QAAQ,EAAE,CAAC;wBAC5C,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC;wBAC9C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BACtB,OAAO,YAAY,CACjB,uBAAuB,IAAI,KAAK,UAAU,sCAAsC;gCAC9E,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,uDAAuD;gCAChF,sDAAsD,CACzD,CAAC;wBACJ,CAAC;wBACD,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;wBACpB,MAAM,SAAS,GAAG,cAAc,CAC9B,SAAS,CAAC,IAAI,EACd,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;4BAC9B,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;4BAClC,CAAC,CAAC,SAAS,CAAC,QAAQ,CACvB,CAAC;wBACF,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;4BACxC,OAAO,YAAY,CACjB,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,oCAAoC;gCAClE,IAAI,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,QAAQ,yBAAyB,CACpE,CAAC;wBACJ,CAAC;oBACH,CAAC;oBAED,MAAM,KAAK,GAAG;wBACZ,WAAW,EAAE,UAAU;wBACvB,aAAa,EAAE,IAAI,CAAC,aAAa;wBACjC,YAAY,EAAE,IAAI,CAAC,YAAY;wBAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;qBAChC,CAAC;oBACF,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;oBACnE,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;oBACvF,MAAM,IAAI,GAAG,yBAAyB,CAAC;wBACrC,SAAS,EAAE,IAAI,CAAC,MAAM;wBACtB,UAAU;wBACV,qFAAqF;wBACrF,WAAW,EAAE,kBAAkB,CAAC;4BAC9B,MAAM,EAAE,IAAI,CAAC,MAAM;4BACnB,KAAK;4BACL,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;yBACjE,CAAC;wBACF,OAAO,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,UAAU,KAAK,MAAM,EAAE;wBACpD,KAAK,EAAE,IAAI,CAAC,kBAAkB;qBAC/B,CAAC,CAAC;oBACH,IAAI,CAAC,IAAI,CAAC,OAAO;wBAAE,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAErD,6DAA6D;oBAC7D,8DAA8D;oBAC9D,+DAA+D;oBAC/D,6DAA6D;oBAC7D,mEAAmE;oBACnE,gEAAgE;oBAChE,8DAA8D;oBAC9D,iBAAiB;oBACjB,MAAM,KAAK,GAAG,QAAQ;wBACpB,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,UAAU;4BAC1B,CAAC,CAAC,MAAM,WAAW,CAAC;gCAChB,WAAW,EAAE,UAAU;gCACvB,IAAI,EAAE,YAAsB;gCAC5B,QAAQ,EAAE,YAAsB;gCAChC,aAAa,EAAE,IAAI,CAAC,aAAa;gCACjC,YAAY,EAAE,IAAI,CAAC,YAAY;gCAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;6BAChC,CAAC;4BACJ,CAAC,CAAC,MAAM,WAAW,CAAC,MAAM,CAAE,SAA2C,CAAC,EAAE,CAAC,EAAE;gCACzE,IAAI,EAAE,YAAsB;gCAC5B,SAAS,EAAE,YAAsB;gCACjC,aAAa,EAAE,IAAI,CAAC,aAAa;gCACjC,YAAY,EAAE,IAAI,CAAC,YAAY;gCAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;6BAChC,CAAC;wBACN,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,UAAU;4BAC1B,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;4BAC3B,CAAC,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBACjC,kEAAkE;oBAClE,mEAAmE;oBACnE,kEAAkE;oBAClE,mDAAmD;oBACnD,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;oBAClF,OAAO,YAAY,CACjB,GAAG,IAAI,iBAAiB,IAAI,KAAK,UAAU,QAAQ,YAAY,OAAO;wBACpE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,eAAe,EAAE,CAC5D,CAAC;gBACJ,CAAC;gBAED,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC7D,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;oBACnD,MAAM,UAAU,GAAG,uBAAuB,EAAE,CAAC;oBAC7C,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC;oBAC9C,MAAM,KAAK,GAAa,EAAE,CAAC;oBAC3B,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;wBAC7B,MAAM,cAAc,GAClB,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;wBAC3E,KAAK,CAAC,IAAI,CAAC,wBAAwB,cAAc,KAAK,UAAU,GAAG,CAAC,CAAC;oBACvE,CAAC;yBAAM,CAAC;wBACN,KAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;oBAC7E,CAAC;oBACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACtB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,UAAU,sBAAsB,CAAC,CAAC;oBAC3D,CAAC;yBAAM,CAAC;wBACN,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;4BACzB,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;gCACvC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;gCAC9B,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;4BACnB,KAAK,CAAC,IAAI,CACR,GAAG,IAAI,KAAK,UAAU,yBAAyB,IAAI,OAAO,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,EAAE,KAAK;gCAC1F,uHAAuH,CAC1H,CAAC;wBACJ,CAAC;oBACH,CAAC;oBACD,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACxC,CAAC;gBAED,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;wBACnC,OAAO,YAAY,CAAC,sDAAsD,CAAC,CAAC;oBAC9E,CAAC;oBACD,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC7D,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;oBACnD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,CACvC,UAAU,EACV,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,iBAAiB,CACvB,CAAC;oBACF,OAAO,YAAY,CACjB,UAAU,CAAC;wBACT,QAAQ,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;wBAClC,OAAO,EAAE,IAAI,CAAC,QAAQ;wBACtB,KAAK,EAAE,IAAI,CAAC,MAAM;wBAClB,IAAI;wBACJ,QAAQ;qBACT,CAAC,CACH,CAAC;gBACJ,CAAC;gBAED,KAAK,OAAO,CAAC,CAAC,CAAC;oBACb,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;wBACnC,OAAO,YAAY,CAAC,sDAAsD,CAAC,CAAC;oBAC9E,CAAC;oBACD,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC7D,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;oBACnD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,CAC5C,UAAU,EACV,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,iBAAiB,CACvB,CAAC;oBACF,OAAO,YAAY,CACjB,WAAW,CAAC;wBACV,QAAQ,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;wBAClC,OAAO,EAAE,IAAI,CAAC,QAAQ;wBACtB,KAAK,EAAE,IAAI,CAAC,MAAM;wBAClB,MAAM;wBACN,QAAQ;wBACR,gBAAgB,EAAE,IAAI,CAAC,iBAAiB;wBACxC,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;qBACxB,CAAC,CACH,CAAC;gBACJ,CAAC;gBAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;oBAC1B,MAAM,UAAU,GAAG,uBAAuB,EAAE,CAAC;oBAC7C,MAAM,WAAW,GACf,IAAI,CAAC,YAAY;wBACjB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;oBAClF,MAAM,QAAQ,GAAG,MAAM,yBAAyB,CAAC,WAAW,CAAC,CAAC;oBAC9D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC1B,OAAO,YAAY,CAAC,uCAAuC,CAAC,CAAC;oBAC/D,CAAC;oBACD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CACxB,CAAC,CAAC,EAAE,CACF,KAAK,CAAC,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,IAC9C,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SACzE,KAAK,CAAC,CAAC,QAAQ,IAAI,GAAG,IAAI,CAAC,CAAC,SAAS,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CACpE,CAAC;oBACF,OAAO,YAAY,CACjB,GAAG,QAAQ,CAAC,MAAM,0BAA0B,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvG,CAAC;gBACJ,CAAC;gBAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;oBAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,IAAK,cAAwB,CAAC;oBACnE,IAAI,WAAW,KAAK,cAAc,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;wBACjD,OAAO,YAAY,CACjB,sEAAsE,CACvE,CAAC;oBACJ,CAAC;oBACD,IACE,CAAC,WAAW,KAAK,cAAc,IAAI,WAAW,KAAK,cAAc,CAAC;wBAClE,CAAC,IAAI,CAAC,mBAAmB,EACzB,CAAC;wBACD,OAAO,YAAY,CACjB,gDAAgD,WAAW,iBAAiB;4BAC1E,6CAA6C,CAChD,CAAC;oBACJ,CAAC;oBACD,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;wBAC9C,OAAO,YAAY,CACjB,+FAA+F,CAChG,CAAC;oBACJ,CAAC;oBACD,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC7D,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;oBACnD,MAAM,KAAK,GAAG;wBACZ,WAAW,EAAE,UAAU;wBACvB,YAAY,EAAE,WAAW;wBACzB,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,YAAY,EAAE,IAAI,CAAC,YAAY;wBAC/B,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;qBAC9C,CAAC;oBACF,MAAM,IAAI,GAAG,yBAAyB,CAAC;wBACrC,SAAS,EAAE,qBAAqB;wBAChC,UAAU;wBACV,WAAW,EAAE,kBAAkB,CAAC,KAAK,CAAC;wBACtC,OAAO,EACL,sCAAsC,IAAI,KAAK,UAAU,MAAM,WAAW,EAAE;4BAC5E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BACrC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC1E,IAAI,IAAI,CAAC,QAAQ,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,IAAI,GAAG,IAAI;4BACrD,WAAW,IAAI,CAAC,MAAM,IAAI;4BAC1B,oEAAoE;wBACtE,KAAK,EAAE,IAAI,CAAC,kBAAkB;wBAC9B,MAAM,EAAE,IAAI;qBACb,CAAC,CAAC;oBACH,IAAI,CAAC,IAAI,CAAC,OAAO;wBAAE,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACrD,MAAM,OAAO,GAAG,MAAM,0BAA0B,CAAC,KAAK,CAAC,CAAC;oBACxD,OAAO,YAAY,CACjB,gBAAgB,OAAO,CAAC,EAAE,cAAc,IAAI,KAAK,UAAU,KAAK;wBAC9D,iEAAiE;wBACjE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CACnC,CAAC;gBACJ,CAAC;gBAED,KAAK,WAAW,CAAC;gBACjB,KAAK,UAAU,CAAC,CAAC,CAAC;oBAChB,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;wBACtE,OAAO,YAAY,CAAC,qDAAqD,CAAC,CAAC;oBAC7E,CAAC;oBACD,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC7D,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;oBACnD,IAAI,OAAoB,CAAC;oBACzB,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;wBAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACrD,OAAO,YAAY,CACjB,0FAA0F,CAC3F,CAAC;wBACJ,CAAC;wBACD,OAAO,GAAG;4BACR,IAAI,EAAE,OAAO;4BACb,WAAW,EAAE,UAAU;4BACvB,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;4BACjD,QAAQ,EAAE,IAAI,CAAC,QAAQ;4BACvB,UAAU,EAAE,IAAI,CAAC,UAAU;4BAC3B,cAAc,EAAE,IAAI,CAAC,cAAc;4BACnC,aAAa,EAAE,IAAI,CAAC,aAAa;4BACjC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;yBAC1C,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BACzC,OAAO,YAAY,CAAC,8CAA8C,CAAC,CAAC;wBACtE,CAAC;wBACD,OAAO,GAAG;4BACR,IAAI,EAAE,MAAM;4BACZ,WAAW,EAAE,UAAU;4BACvB,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,UAAU,EAAE,IAAI,CAAC,UAAU;4BAC3B,cAAc,EAAE,IAAI,CAAC,cAAc;4BACnC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;yBAC1C,CAAC;oBACJ,CAAC;oBACD,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;oBACtC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC9E,MAAM,OAAO,GAAG,iBAAiB,CAC/B,IAAI,EACJ,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EACxB,MAAM,EACN,OAAO,EACP,IAAI,CAAC,YAAY,EACjB,KAAK,CAAC,QAAQ,CACf,CAAC;oBAEF,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC7B,OAAO,YAAY,CAAC,GAAG,OAAO,uBAAuB,CAAC,CAAC;oBACzD,CAAC;oBAED,MAAM,IAAI,GAAG,yBAAyB,CAAC;wBACrC,SAAS,EAAE,iBAAiB;wBAC5B,UAAU;wBACV,WAAW,EAAE,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC;wBACxE,OAAO;wBACP,KAAK,EAAE,IAAI,CAAC,kBAAkB;wBAC9B,MAAM,EAAE,IAAI;qBACb,CAAC,CAAC;oBACH,IAAI,CAAC,IAAI,CAAC,OAAO;wBAAE,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAErD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;oBACjF,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAC1C,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAChE,CAAC,CACF,CAAC;oBACF,MAAM,KAAK,GAAG;wBACZ,SAAS,MAAM,CAAC,OAAO,CAAC,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,gBAAgB,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,KAAK,UAAU,MAAM,KAAK,CAAC,cAAc,CAAC,GAAG;qBACpK,CAAC;oBACF,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACf,KAAK,CAAC,IAAI,CACR,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,UAAU,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU,CACjF,CAAC;wBACF,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;4BACjD,KAAK,CAAC,IAAI,CACR,KAAK,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,KAAK,EAAE,CAC/E,CAAC;wBACJ,CAAC;wBACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;4BAC9B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;4BAC5C,KAAK,CAAC,IAAI,CACR,SAAS,SAAS,mBAAmB,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,iBAAiB,CACjF,CAAC;wBACJ,CAAC;wBACD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;4BACxB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;4BACf,KAAK,CAAC,IAAI,CACR,iBAAiB,yBAAyB,0CAA0C;gCAClF,oCAAoC,MAAM,CAAC,YAAY,CAAC,MAAM,UAAU,MAAM,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,iBAAiB,CACvI,CAAC;wBACJ,CAAC;wBACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACf,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACzB,CAAC;oBACD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACf,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;wBAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACf,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;oBAC9B,CAAC;oBACD,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -12,6 +12,7 @@
12
12
  * This reduces context token usage by ~88% while maintaining full functionality.
13
13
  */
14
14
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
15
+ export declare const SERVER_VERSION = "11.0.1";
15
16
  declare const server: McpServer;
16
17
  export { server };
17
18
  //# sourceMappingURL=index.d.ts.map