@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.
- package/README.md +54 -43
- package/dist/api/attendance.d.ts +17 -1
- package/dist/api/attendance.d.ts.map +1 -1
- package/dist/api/attendance.js +38 -1
- package/dist/api/attendance.js.map +1 -1
- package/dist/api/index.d.ts +1 -1
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +1 -1
- package/dist/api/index.js.map +1 -1
- package/dist/attendance/backfill.d.ts +18 -3
- package/dist/attendance/backfill.d.ts.map +1 -1
- package/dist/attendance/backfill.js +51 -9
- package/dist/attendance/backfill.js.map +1 -1
- package/dist/attendance/planner.d.ts +64 -4
- package/dist/attendance/planner.d.ts.map +1 -1
- package/dist/attendance/planner.js +145 -16
- package/dist/attendance/planner.js.map +1 -1
- package/dist/attendance/report.d.ts +3 -0
- package/dist/attendance/report.d.ts.map +1 -1
- package/dist/attendance/report.js +92 -12
- package/dist/attendance/report.js.map +1 -1
- package/dist/endpoints.d.ts +2 -0
- package/dist/endpoints.d.ts.map +1 -1
- package/dist/endpoints.js +2 -0
- package/dist/endpoints.js.map +1 -1
- package/dist/errors.d.ts +6 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +10 -5
- package/dist/errors.js.map +1 -1
- package/dist/http-client.d.ts +6 -0
- package/dist/http-client.d.ts.map +1 -1
- package/dist/http-client.js +28 -4
- package/dist/http-client.js.map +1 -1
- package/dist/prompts/attendance.d.ts +19 -2
- package/dist/prompts/attendance.d.ts.map +1 -1
- package/dist/prompts/attendance.js +297 -40
- package/dist/prompts/attendance.js.map +1 -1
- package/dist/schemas/attendance.d.ts +123 -0
- package/dist/schemas/attendance.d.ts.map +1 -1
- package/dist/schemas/attendance.js +58 -0
- package/dist/schemas/attendance.js.map +1 -1
- package/dist/schemas/documents.d.ts +2 -2
- package/dist/schemas/index.d.ts +1 -1
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +1 -1
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/projects.d.ts +2 -2
- package/dist/tools/attendance.d.ts.map +1 -1
- package/dist/tools/attendance.js +325 -50
- package/dist/tools/attendance.js.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +6 -8
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/shared.d.ts +10 -1
- package/dist/tools/shared.d.ts.map +1 -1
- package/dist/tools/shared.js +33 -0
- package/dist/tools/shared.js.map +1 -1
- package/dist/tools/time-off.d.ts.map +1 -1
- package/dist/tools/time-off.js +9 -1
- package/dist/tools/time-off.js.map +1 -1
- package/dist/write-safety.d.ts +6 -0
- package/dist/write-safety.d.ts.map +1 -1
- package/dist/write-safety.js +7 -0
- package/dist/write-safety.js.map +1 -1
- package/llms.txt +11 -6
- package/package.json +4 -3
package/dist/tools/attendance.js
CHANGED
|
@@ -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 {
|
|
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
|
|
54
|
-
'log_range / log_days to enter many days at once
|
|
55
|
-
'
|
|
56
|
-
'
|
|
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
|
|
89
|
-
|
|
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('
|
|
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:
|
|
129
|
-
'
|
|
130
|
-
'
|
|
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
|
|
136
|
-
'day, "json" returns the full ledger
|
|
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
|
|
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
|
-
|
|
150
|
-
|
|
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
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
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})
|
|
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
|
|
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
|
|
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
|
-
//
|
|
299
|
-
fingerprint: payloadFingerprint({
|
|
300
|
-
|
|
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
|
-
|
|
306
|
-
|
|
307
|
-
|
|
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
|
|
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
|
|
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(
|
|
427
|
-
|
|
428
|
-
lines.push(
|
|
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
|
-
|
|
707
|
+
if (result.written.length > 0) {
|
|
433
708
|
lines.push('');
|
|
434
709
|
lines.push(describeWrites(result.written));
|
|
435
710
|
lines.push('');
|
|
436
|
-
lines.push(
|
|
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":"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"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -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
|