@t4dhg/mcp-factorial 7.0.1 → 8.2.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.
- package/README.md +321 -49
- package/dist/api/ats.d.ts +78 -0
- package/dist/api/ats.d.ts.map +1 -0
- package/dist/api/ats.js +173 -0
- package/dist/api/ats.js.map +1 -0
- package/dist/api/attendance.d.ts +27 -0
- package/dist/api/attendance.d.ts.map +1 -0
- package/dist/api/attendance.js +62 -0
- package/dist/api/attendance.js.map +1 -0
- package/dist/api/contracts.d.ts +40 -0
- package/dist/api/contracts.d.ts.map +1 -0
- package/dist/api/contracts.js +146 -0
- package/dist/api/contracts.js.map +1 -0
- package/dist/api/documents.d.ts +95 -0
- package/dist/api/documents.d.ts.map +1 -0
- package/dist/api/documents.js +265 -0
- package/dist/api/documents.js.map +1 -0
- package/dist/api/employees.d.ts +35 -0
- package/dist/api/employees.d.ts.map +1 -0
- package/dist/api/employees.js +116 -0
- package/dist/api/employees.js.map +1 -0
- package/dist/api/index.d.ts +22 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +36 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/job-catalog.d.ts +21 -0
- package/dist/api/job-catalog.d.ts.map +1 -0
- package/dist/api/job-catalog.js +34 -0
- package/dist/api/job-catalog.js.map +1 -0
- package/dist/api/locations.d.ts +26 -0
- package/dist/api/locations.d.ts.map +1 -0
- package/dist/api/locations.js +59 -0
- package/dist/api/locations.js.map +1 -0
- package/dist/api/payroll.d.ts +30 -0
- package/dist/api/payroll.d.ts.map +1 -0
- package/dist/api/payroll.js +68 -0
- package/dist/api/payroll.js.map +1 -0
- package/dist/api/projects.d.ts +82 -0
- package/dist/api/projects.d.ts.map +1 -0
- package/dist/api/projects.js +193 -0
- package/dist/api/projects.js.map +1 -0
- package/dist/api/shared.d.ts +12 -0
- package/dist/api/shared.d.ts.map +1 -0
- package/dist/api/shared.js +17 -0
- package/dist/api/shared.js.map +1 -0
- package/dist/api/teams.d.ts +26 -0
- package/dist/api/teams.d.ts.map +1 -0
- package/dist/api/teams.js +59 -0
- package/dist/api/teams.js.map +1 -0
- package/dist/api/time-off.d.ts +47 -0
- package/dist/api/time-off.d.ts.map +1 -0
- package/dist/api/time-off.js +112 -0
- package/dist/api/time-off.js.map +1 -0
- package/dist/api/training.d.ts +62 -0
- package/dist/api/training.d.ts.map +1 -0
- package/dist/api/training.js +147 -0
- package/dist/api/training.js.map +1 -0
- package/dist/api/work-areas.d.ts +30 -0
- package/dist/api/work-areas.d.ts.map +1 -0
- package/dist/api/work-areas.js +71 -0
- package/dist/api/work-areas.js.map +1 -0
- package/dist/api.d.ts +3 -434
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +3 -1154
- package/dist/api.js.map +1 -1
- package/dist/audit.d.ts +8 -3
- package/dist/audit.d.ts.map +1 -1
- package/dist/audit.js +8 -3
- package/dist/audit.js.map +1 -1
- package/dist/index.d.ts +6 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3701
- package/dist/index.js.map +1 -1
- package/dist/oauth.d.ts +63 -0
- package/dist/oauth.d.ts.map +1 -0
- package/dist/oauth.js +143 -0
- package/dist/oauth.js.map +1 -0
- package/dist/schemas/ats.d.ts +326 -0
- package/dist/schemas/ats.d.ts.map +1 -0
- package/dist/schemas/ats.js +121 -0
- package/dist/schemas/ats.js.map +1 -0
- package/dist/schemas/documents.d.ts +78 -0
- package/dist/schemas/documents.d.ts.map +1 -0
- package/dist/schemas/documents.js +34 -0
- package/dist/schemas/documents.js.map +1 -0
- package/dist/schemas/employees.d.ts +528 -0
- package/dist/schemas/employees.d.ts.map +1 -0
- package/dist/schemas/employees.js +206 -0
- package/dist/schemas/employees.js.map +1 -0
- package/dist/schemas/index.d.ts +18 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +28 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/job-catalog.d.ts +57 -0
- package/dist/schemas/job-catalog.d.ts.map +1 -0
- package/dist/schemas/job-catalog.js +27 -0
- package/dist/schemas/job-catalog.js.map +1 -0
- package/dist/schemas/payroll.d.ts +98 -0
- package/dist/schemas/payroll.d.ts.map +1 -0
- package/dist/schemas/payroll.js +43 -0
- package/dist/schemas/payroll.js.map +1 -0
- package/dist/schemas/projects.d.ts +277 -0
- package/dist/schemas/projects.d.ts.map +1 -0
- package/dist/schemas/projects.js +114 -0
- package/dist/schemas/projects.js.map +1 -0
- package/dist/schemas/shared.d.ts +42 -0
- package/dist/schemas/shared.d.ts.map +1 -0
- package/dist/schemas/shared.js +65 -0
- package/dist/schemas/shared.js.map +1 -0
- package/dist/schemas/time-off.d.ts +286 -0
- package/dist/schemas/time-off.d.ts.map +1 -0
- package/dist/schemas/time-off.js +111 -0
- package/dist/schemas/time-off.js.map +1 -0
- package/dist/schemas/training.d.ts +223 -0
- package/dist/schemas/training.d.ts.map +1 -0
- package/dist/schemas/training.js +88 -0
- package/dist/schemas/training.js.map +1 -0
- package/dist/schemas/work-areas.d.ts +71 -0
- package/dist/schemas/work-areas.d.ts.map +1 -0
- package/dist/schemas/work-areas.js +30 -0
- package/dist/schemas/work-areas.js.map +1 -0
- package/dist/schemas.d.ts +4 -1879
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +4 -755
- package/dist/schemas.js.map +1 -1
- package/dist/tool-utils.d.ts +0 -14
- package/dist/tool-utils.d.ts.map +1 -1
- package/dist/tool-utils.js +5 -18
- package/dist/tool-utils.js.map +1 -1
- package/dist/tools/ats.d.ts +6 -0
- package/dist/tools/ats.d.ts.map +1 -0
- package/dist/tools/ats.js +206 -0
- package/dist/tools/ats.js.map +1 -0
- package/dist/tools/attendance.d.ts +6 -0
- package/dist/tools/attendance.d.ts.map +1 -0
- package/dist/tools/attendance.js +86 -0
- package/dist/tools/attendance.js.map +1 -0
- package/dist/tools/contracts.d.ts +6 -0
- package/dist/tools/contracts.d.ts.map +1 -0
- package/dist/tools/contracts.js +63 -0
- package/dist/tools/contracts.js.map +1 -0
- package/dist/tools/documents.d.ts +6 -0
- package/dist/tools/documents.d.ts.map +1 -0
- package/dist/tools/documents.js +135 -0
- package/dist/tools/documents.js.map +1 -0
- package/dist/tools/employees.d.ts +6 -0
- package/dist/tools/employees.d.ts.map +1 -0
- package/dist/tools/employees.js +125 -0
- package/dist/tools/employees.js.map +1 -0
- package/dist/tools/index.d.ts +17 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +221 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/job-catalog.d.ts +6 -0
- package/dist/tools/job-catalog.d.ts.map +1 -0
- package/dist/tools/job-catalog.js +39 -0
- package/dist/tools/job-catalog.js.map +1 -0
- package/dist/tools/locations.d.ts +6 -0
- package/dist/tools/locations.d.ts.map +1 -0
- package/dist/tools/locations.js +93 -0
- package/dist/tools/locations.js.map +1 -0
- package/dist/tools/payroll.d.ts +6 -0
- package/dist/tools/payroll.d.ts.map +1 -0
- package/dist/tools/payroll.js +76 -0
- package/dist/tools/payroll.js.map +1 -0
- package/dist/tools/projects.d.ts +6 -0
- package/dist/tools/projects.d.ts.map +1 -0
- package/dist/tools/projects.js +203 -0
- package/dist/tools/projects.js.map +1 -0
- package/dist/tools/shared.d.ts +84 -0
- package/dist/tools/shared.d.ts.map +1 -0
- package/dist/tools/shared.js +164 -0
- package/dist/tools/shared.js.map +1 -0
- package/dist/tools/teams.d.ts +6 -0
- package/dist/tools/teams.d.ts.map +1 -0
- package/dist/tools/teams.js +81 -0
- package/dist/tools/teams.js.map +1 -0
- package/dist/tools/time-off.d.ts +6 -0
- package/dist/tools/time-off.d.ts.map +1 -0
- package/dist/tools/time-off.js +144 -0
- package/dist/tools/time-off.js.map +1 -0
- package/dist/tools/training.d.ts +6 -0
- package/dist/tools/training.d.ts.map +1 -0
- package/dist/tools/training.js +160 -0
- package/dist/tools/training.js.map +1 -0
- package/dist/tools/work-areas.d.ts +6 -0
- package/dist/tools/work-areas.d.ts.map +1 -0
- package/dist/tools/work-areas.js +85 -0
- package/dist/tools/work-areas.js.map +1 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +35 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +97 -0
- package/dist/utils.js.map +1 -1
- package/dist/write-safety.d.ts +229 -2
- package/dist/write-safety.d.ts.map +1 -1
- package/dist/write-safety.js +42 -3
- package/dist/write-safety.js.map +1 -1
- package/llms.txt +2 -2
- package/package.json +2 -2
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Locations tool registration
|
|
3
|
+
*/
|
|
4
|
+
import * as z from 'zod';
|
|
5
|
+
import { checkConfirmation } from './shared.js';
|
|
6
|
+
import { textResponse, formatToolError } from '../tool-utils.js';
|
|
7
|
+
import { formatPaginationInfo } from '../pagination.js';
|
|
8
|
+
import { listLocations, getLocation, createLocation, updateLocation, deleteLocation, } from '../api/index.js';
|
|
9
|
+
export function registerLocationsTool(server) {
|
|
10
|
+
server.registerTool('factorial_locations', {
|
|
11
|
+
title: 'FactorialHR Locations',
|
|
12
|
+
description: 'Manage locations: list, get, create, update, delete',
|
|
13
|
+
inputSchema: {
|
|
14
|
+
action: z.enum(['list', 'get', 'create', 'update', 'delete']).describe('Action'),
|
|
15
|
+
id: z.number().optional().describe('Location ID (for get/update/delete)'),
|
|
16
|
+
page: z.number().optional().default(1).describe('Page number'),
|
|
17
|
+
limit: z.number().optional().default(100).describe('Items per page'),
|
|
18
|
+
name: z.string().optional().describe('Location name'),
|
|
19
|
+
address_line_1: z.string().optional().describe('Address line 1'),
|
|
20
|
+
address_line_2: z.string().optional().describe('Address line 2'),
|
|
21
|
+
city: z.string().optional().describe('City'),
|
|
22
|
+
state: z.string().optional().describe('State/province'),
|
|
23
|
+
postal_code: z.string().optional().describe('Postal code'),
|
|
24
|
+
country: z.string().optional().describe('Country code (e.g., ES, US)'),
|
|
25
|
+
phone_number: z.string().optional().describe('Phone number'),
|
|
26
|
+
confirm: z.boolean().optional().describe('Confirm delete'),
|
|
27
|
+
},
|
|
28
|
+
}, async (args) => {
|
|
29
|
+
try {
|
|
30
|
+
switch (args.action) {
|
|
31
|
+
case 'list': {
|
|
32
|
+
const result = await listLocations({ page: args.page, limit: args.limit });
|
|
33
|
+
const summary = result.data.map(l => ({
|
|
34
|
+
id: l.id,
|
|
35
|
+
name: l.name,
|
|
36
|
+
city: l.city,
|
|
37
|
+
country: l.country,
|
|
38
|
+
}));
|
|
39
|
+
return textResponse(`Found ${result.data.length} locations (${formatPaginationInfo(result.meta)}):\n\n${JSON.stringify(summary, null, 2)}`);
|
|
40
|
+
}
|
|
41
|
+
case 'get': {
|
|
42
|
+
if (!args.id)
|
|
43
|
+
return textResponse('Error: id is required');
|
|
44
|
+
const location = await getLocation(args.id);
|
|
45
|
+
return textResponse(`Location details:\n\n${JSON.stringify(location, null, 2)}`);
|
|
46
|
+
}
|
|
47
|
+
case 'create': {
|
|
48
|
+
if (!args.name)
|
|
49
|
+
return textResponse('Error: name is required');
|
|
50
|
+
const location = await createLocation({
|
|
51
|
+
name: args.name,
|
|
52
|
+
address_line_1: args.address_line_1,
|
|
53
|
+
address_line_2: args.address_line_2,
|
|
54
|
+
city: args.city,
|
|
55
|
+
state: args.state,
|
|
56
|
+
postal_code: args.postal_code,
|
|
57
|
+
country: args.country,
|
|
58
|
+
phone_number: args.phone_number,
|
|
59
|
+
});
|
|
60
|
+
return textResponse(`Location created:\n\n${JSON.stringify(location, null, 2)}`);
|
|
61
|
+
}
|
|
62
|
+
case 'update': {
|
|
63
|
+
if (!args.id)
|
|
64
|
+
return textResponse('Error: id is required');
|
|
65
|
+
const location = await updateLocation(args.id, {
|
|
66
|
+
name: args.name,
|
|
67
|
+
address_line_1: args.address_line_1,
|
|
68
|
+
address_line_2: args.address_line_2,
|
|
69
|
+
city: args.city,
|
|
70
|
+
state: args.state,
|
|
71
|
+
postal_code: args.postal_code,
|
|
72
|
+
country: args.country,
|
|
73
|
+
phone_number: args.phone_number,
|
|
74
|
+
});
|
|
75
|
+
return textResponse(`Location updated:\n\n${JSON.stringify(location, null, 2)}`);
|
|
76
|
+
}
|
|
77
|
+
case 'delete': {
|
|
78
|
+
if (!args.id)
|
|
79
|
+
return textResponse('Error: id is required');
|
|
80
|
+
const check = checkConfirmation('delete_location', args.confirm);
|
|
81
|
+
if (check.needsConfirmation)
|
|
82
|
+
return textResponse(check.message);
|
|
83
|
+
await deleteLocation(args.id);
|
|
84
|
+
return textResponse(`Location ${args.id} deleted successfully.`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
return formatToolError(error);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=locations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locations.js","sourceRoot":"","sources":["../../src/tools/locations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payroll.d.ts","sourceRoot":"","sources":["../../src/tools/payroll.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,QA+EpD"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Payroll tool registration (Read-only)
|
|
3
|
+
*/
|
|
4
|
+
import * as z from 'zod';
|
|
5
|
+
import { textResponse, formatToolError } from '../tool-utils.js';
|
|
6
|
+
import { listPayrollSupplements, getPayrollSupplement, listTaxIdentifiers, getTaxIdentifier, listFamilySituations, getFamilySituation, } from '../api/index.js';
|
|
7
|
+
export function registerPayrollTool(server) {
|
|
8
|
+
server.registerTool('factorial_payroll', {
|
|
9
|
+
title: 'FactorialHR Payroll',
|
|
10
|
+
description: 'View payroll data: supplements, tax identifiers, family situations (read-only)',
|
|
11
|
+
inputSchema: {
|
|
12
|
+
action: z
|
|
13
|
+
.enum([
|
|
14
|
+
'list_supplements',
|
|
15
|
+
'get_supplement',
|
|
16
|
+
'list_tax_ids',
|
|
17
|
+
'get_tax_id',
|
|
18
|
+
'list_family',
|
|
19
|
+
'get_family',
|
|
20
|
+
])
|
|
21
|
+
.describe('Action'),
|
|
22
|
+
id: z.number().optional().describe('Item ID'),
|
|
23
|
+
employee_id: z.number().optional().describe('Employee ID filter'),
|
|
24
|
+
page: z.number().optional().default(1).describe('Page number'),
|
|
25
|
+
limit: z.number().optional().default(100).describe('Items per page'),
|
|
26
|
+
},
|
|
27
|
+
}, async (args) => {
|
|
28
|
+
try {
|
|
29
|
+
switch (args.action) {
|
|
30
|
+
case 'list_supplements': {
|
|
31
|
+
const result = await listPayrollSupplements(args.employee_id, {
|
|
32
|
+
page: args.page,
|
|
33
|
+
limit: args.limit,
|
|
34
|
+
});
|
|
35
|
+
return textResponse(`Found ${result.data.length} payroll supplements:\n\n${JSON.stringify(result.data, null, 2)}`);
|
|
36
|
+
}
|
|
37
|
+
case 'get_supplement': {
|
|
38
|
+
if (!args.id)
|
|
39
|
+
return textResponse('Error: id is required');
|
|
40
|
+
const supplement = await getPayrollSupplement(args.id);
|
|
41
|
+
return textResponse(`Payroll supplement:\n\n${JSON.stringify(supplement, null, 2)}`);
|
|
42
|
+
}
|
|
43
|
+
case 'list_tax_ids': {
|
|
44
|
+
const result = await listTaxIdentifiers(args.employee_id, {
|
|
45
|
+
page: args.page,
|
|
46
|
+
limit: args.limit,
|
|
47
|
+
});
|
|
48
|
+
return textResponse(`Found ${result.data.length} tax identifiers:\n\n${JSON.stringify(result.data, null, 2)}`);
|
|
49
|
+
}
|
|
50
|
+
case 'get_tax_id': {
|
|
51
|
+
if (!args.id)
|
|
52
|
+
return textResponse('Error: id is required');
|
|
53
|
+
const taxId = await getTaxIdentifier(args.id);
|
|
54
|
+
return textResponse(`Tax identifier:\n\n${JSON.stringify(taxId, null, 2)}`);
|
|
55
|
+
}
|
|
56
|
+
case 'list_family': {
|
|
57
|
+
const result = await listFamilySituations(args.employee_id, {
|
|
58
|
+
page: args.page,
|
|
59
|
+
limit: args.limit,
|
|
60
|
+
});
|
|
61
|
+
return textResponse(`Found ${result.data.length} family situations:\n\n${JSON.stringify(result.data, null, 2)}`);
|
|
62
|
+
}
|
|
63
|
+
case 'get_family': {
|
|
64
|
+
if (!args.id)
|
|
65
|
+
return textResponse('Error: id is required');
|
|
66
|
+
const family = await getFamilySituation(args.id);
|
|
67
|
+
return textResponse(`Family situation:\n\n${JSON.stringify(family, null, 2)}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
return formatToolError(error);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=payroll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payroll.js","sourceRoot":"","sources":["../../src/tools/payroll.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAwBzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,QA+MrD"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Projects tool registration
|
|
3
|
+
*/
|
|
4
|
+
import * as z from 'zod';
|
|
5
|
+
import { checkConfirmation } from './shared.js';
|
|
6
|
+
import { textResponse, formatToolError } from '../tool-utils.js';
|
|
7
|
+
import { formatPaginationInfo } from '../pagination.js';
|
|
8
|
+
import { listProjects, getProject, listProjectTasks, listProjectWorkers, listTimeRecords, createProject, updateProject, deleteProject, createProjectTask, updateProjectTask, deleteProjectTask, assignProjectWorker, removeProjectWorker, createTimeRecord, updateTimeRecord, deleteTimeRecord, } from '../api/index.js';
|
|
9
|
+
export function registerProjectsTool(server) {
|
|
10
|
+
server.registerTool('factorial_projects', {
|
|
11
|
+
title: 'FactorialHR Projects',
|
|
12
|
+
description: 'Project management: projects, tasks, workers, time records. Full CRUD operations.',
|
|
13
|
+
inputSchema: {
|
|
14
|
+
action: z
|
|
15
|
+
.enum([
|
|
16
|
+
'list',
|
|
17
|
+
'get',
|
|
18
|
+
'create',
|
|
19
|
+
'update',
|
|
20
|
+
'delete',
|
|
21
|
+
'list_tasks',
|
|
22
|
+
'create_task',
|
|
23
|
+
'update_task',
|
|
24
|
+
'delete_task',
|
|
25
|
+
'list_workers',
|
|
26
|
+
'assign_worker',
|
|
27
|
+
'remove_worker',
|
|
28
|
+
'list_time',
|
|
29
|
+
'create_time',
|
|
30
|
+
'update_time',
|
|
31
|
+
'delete_time',
|
|
32
|
+
])
|
|
33
|
+
.describe('Action'),
|
|
34
|
+
id: z.number().optional().describe('Project/task/worker/time record ID'),
|
|
35
|
+
project_id: z.number().optional().describe('Project ID'),
|
|
36
|
+
employee_id: z.number().optional().describe('Employee ID'),
|
|
37
|
+
project_worker_id: z.number().optional().describe('Project worker ID'),
|
|
38
|
+
name: z.string().optional().describe('Name'),
|
|
39
|
+
description: z.string().optional().describe('Description'),
|
|
40
|
+
status: z.string().optional().describe('Status'),
|
|
41
|
+
starts_on: z.string().optional().describe('Start date (YYYY-MM-DD)'),
|
|
42
|
+
ends_on: z.string().optional().describe('End date (YYYY-MM-DD)'),
|
|
43
|
+
minutes: z.number().optional().describe('Time in minutes'),
|
|
44
|
+
date: z.string().optional().describe('Date (YYYY-MM-DD)'),
|
|
45
|
+
page: z.number().optional().default(1).describe('Page number'),
|
|
46
|
+
limit: z.number().optional().default(100).describe('Items per page'),
|
|
47
|
+
confirm: z.boolean().optional().describe('Confirm delete'),
|
|
48
|
+
},
|
|
49
|
+
}, async (args) => {
|
|
50
|
+
try {
|
|
51
|
+
switch (args.action) {
|
|
52
|
+
case 'list': {
|
|
53
|
+
const result = await listProjects({ page: args.page, limit: args.limit });
|
|
54
|
+
const summary = result.data.map(p => ({
|
|
55
|
+
id: p.id,
|
|
56
|
+
name: p.name,
|
|
57
|
+
status: p.status,
|
|
58
|
+
}));
|
|
59
|
+
return textResponse(`Found ${result.data.length} projects (${formatPaginationInfo(result.meta)}):\n\n${JSON.stringify(summary, null, 2)}`);
|
|
60
|
+
}
|
|
61
|
+
case 'get': {
|
|
62
|
+
if (!args.id)
|
|
63
|
+
return textResponse('Error: id is required');
|
|
64
|
+
const project = await getProject(args.id);
|
|
65
|
+
return textResponse(`Project details:\n\n${JSON.stringify(project, null, 2)}`);
|
|
66
|
+
}
|
|
67
|
+
case 'create': {
|
|
68
|
+
if (!args.name)
|
|
69
|
+
return textResponse('Error: name is required');
|
|
70
|
+
const project = await createProject({
|
|
71
|
+
name: args.name,
|
|
72
|
+
description: args.description,
|
|
73
|
+
});
|
|
74
|
+
return textResponse(`Project created:\n\n${JSON.stringify(project, null, 2)}`);
|
|
75
|
+
}
|
|
76
|
+
case 'update': {
|
|
77
|
+
if (!args.id)
|
|
78
|
+
return textResponse('Error: id is required');
|
|
79
|
+
const projectStatus = args.status;
|
|
80
|
+
const project = await updateProject(args.id, {
|
|
81
|
+
name: args.name,
|
|
82
|
+
description: args.description,
|
|
83
|
+
status: projectStatus,
|
|
84
|
+
});
|
|
85
|
+
return textResponse(`Project updated:\n\n${JSON.stringify(project, null, 2)}`);
|
|
86
|
+
}
|
|
87
|
+
case 'delete': {
|
|
88
|
+
if (!args.id)
|
|
89
|
+
return textResponse('Error: id is required');
|
|
90
|
+
const check = checkConfirmation('delete_project', args.confirm);
|
|
91
|
+
if (check.needsConfirmation)
|
|
92
|
+
return textResponse(check.message);
|
|
93
|
+
await deleteProject(args.id);
|
|
94
|
+
return textResponse(`Project ${args.id} deleted successfully.`);
|
|
95
|
+
}
|
|
96
|
+
case 'list_tasks': {
|
|
97
|
+
const result = await listProjectTasks(args.project_id, {
|
|
98
|
+
page: args.page,
|
|
99
|
+
limit: args.limit,
|
|
100
|
+
});
|
|
101
|
+
return textResponse(`Found ${result.data.length} tasks:\n\n${JSON.stringify(result.data, null, 2)}`);
|
|
102
|
+
}
|
|
103
|
+
case 'create_task': {
|
|
104
|
+
if (!args.project_id || !args.name) {
|
|
105
|
+
return textResponse('Error: project_id and name are required');
|
|
106
|
+
}
|
|
107
|
+
const task = await createProjectTask({
|
|
108
|
+
project_id: args.project_id,
|
|
109
|
+
name: args.name,
|
|
110
|
+
description: args.description,
|
|
111
|
+
});
|
|
112
|
+
return textResponse(`Task created:\n\n${JSON.stringify(task, null, 2)}`);
|
|
113
|
+
}
|
|
114
|
+
case 'update_task': {
|
|
115
|
+
if (!args.id)
|
|
116
|
+
return textResponse('Error: id is required');
|
|
117
|
+
const task = await updateProjectTask(args.id, {
|
|
118
|
+
name: args.name,
|
|
119
|
+
description: args.description,
|
|
120
|
+
});
|
|
121
|
+
return textResponse(`Task updated:\n\n${JSON.stringify(task, null, 2)}`);
|
|
122
|
+
}
|
|
123
|
+
case 'delete_task': {
|
|
124
|
+
if (!args.id)
|
|
125
|
+
return textResponse('Error: id is required');
|
|
126
|
+
const check = checkConfirmation('delete_task', args.confirm);
|
|
127
|
+
if (check.needsConfirmation)
|
|
128
|
+
return textResponse(check.message);
|
|
129
|
+
await deleteProjectTask(args.id);
|
|
130
|
+
return textResponse(`Task ${args.id} deleted successfully.`);
|
|
131
|
+
}
|
|
132
|
+
case 'list_workers': {
|
|
133
|
+
const result = await listProjectWorkers(args.project_id, {
|
|
134
|
+
page: args.page,
|
|
135
|
+
limit: args.limit,
|
|
136
|
+
});
|
|
137
|
+
return textResponse(`Found ${result.data.length} project workers:\n\n${JSON.stringify(result.data, null, 2)}`);
|
|
138
|
+
}
|
|
139
|
+
case 'assign_worker': {
|
|
140
|
+
if (!args.project_id || !args.employee_id) {
|
|
141
|
+
return textResponse('Error: project_id and employee_id are required');
|
|
142
|
+
}
|
|
143
|
+
const worker = await assignProjectWorker({
|
|
144
|
+
project_id: args.project_id,
|
|
145
|
+
employee_id: args.employee_id,
|
|
146
|
+
});
|
|
147
|
+
return textResponse(`Worker assigned:\n\n${JSON.stringify(worker, null, 2)}`);
|
|
148
|
+
}
|
|
149
|
+
case 'remove_worker': {
|
|
150
|
+
if (!args.id)
|
|
151
|
+
return textResponse('Error: id (project_worker_id) is required');
|
|
152
|
+
const check = checkConfirmation('remove_project_worker', args.confirm);
|
|
153
|
+
if (check.needsConfirmation)
|
|
154
|
+
return textResponse(check.message);
|
|
155
|
+
await removeProjectWorker(args.id);
|
|
156
|
+
return textResponse(`Worker ${args.id} removed from project.`);
|
|
157
|
+
}
|
|
158
|
+
case 'list_time': {
|
|
159
|
+
const result = await listTimeRecords(args.project_worker_id, {
|
|
160
|
+
page: args.page,
|
|
161
|
+
limit: args.limit,
|
|
162
|
+
});
|
|
163
|
+
return textResponse(`Found ${result.data.length} time records:\n\n${JSON.stringify(result.data, null, 2)}`);
|
|
164
|
+
}
|
|
165
|
+
case 'create_time': {
|
|
166
|
+
if (!args.project_worker_id || !args.minutes || !args.date) {
|
|
167
|
+
return textResponse('Error: project_worker_id, minutes, and date are required');
|
|
168
|
+
}
|
|
169
|
+
const record = await createTimeRecord({
|
|
170
|
+
project_worker_id: args.project_worker_id,
|
|
171
|
+
minutes: args.minutes,
|
|
172
|
+
date: args.date,
|
|
173
|
+
description: args.description,
|
|
174
|
+
});
|
|
175
|
+
return textResponse(`Time record created:\n\n${JSON.stringify(record, null, 2)}`);
|
|
176
|
+
}
|
|
177
|
+
case 'update_time': {
|
|
178
|
+
if (!args.id)
|
|
179
|
+
return textResponse('Error: id is required');
|
|
180
|
+
const record = await updateTimeRecord(args.id, {
|
|
181
|
+
minutes: args.minutes,
|
|
182
|
+
date: args.date,
|
|
183
|
+
description: args.description,
|
|
184
|
+
});
|
|
185
|
+
return textResponse(`Time record updated:\n\n${JSON.stringify(record, null, 2)}`);
|
|
186
|
+
}
|
|
187
|
+
case 'delete_time': {
|
|
188
|
+
if (!args.id)
|
|
189
|
+
return textResponse('Error: id is required');
|
|
190
|
+
const check = checkConfirmation('delete_time', args.confirm);
|
|
191
|
+
if (check.needsConfirmation)
|
|
192
|
+
return textResponse(check.message);
|
|
193
|
+
await deleteTimeRecord(args.id);
|
|
194
|
+
return textResponse(`Time record ${args.id} deleted successfully.`);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
return formatToolError(error);
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=projects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared tool utilities and constants
|
|
3
|
+
*/
|
|
4
|
+
import { type OperationName } from '../write-safety.js';
|
|
5
|
+
/**
|
|
6
|
+
* Category definitions for tool discovery
|
|
7
|
+
*/
|
|
8
|
+
export declare const CATEGORIES: {
|
|
9
|
+
readonly employees: {
|
|
10
|
+
readonly name: "Employees";
|
|
11
|
+
readonly description: "Manage employee records";
|
|
12
|
+
readonly actions: readonly ["list", "get", "search", "create", "update", "terminate"];
|
|
13
|
+
};
|
|
14
|
+
readonly teams: {
|
|
15
|
+
readonly name: "Teams";
|
|
16
|
+
readonly description: "Manage team structure";
|
|
17
|
+
readonly actions: readonly ["list", "get", "create", "update", "delete"];
|
|
18
|
+
};
|
|
19
|
+
readonly locations: {
|
|
20
|
+
readonly name: "Locations";
|
|
21
|
+
readonly description: "Manage company locations";
|
|
22
|
+
readonly actions: readonly ["list", "get", "create", "update", "delete"];
|
|
23
|
+
};
|
|
24
|
+
readonly contracts: {
|
|
25
|
+
readonly name: "Contracts";
|
|
26
|
+
readonly description: "Employee contract and salary data";
|
|
27
|
+
readonly actions: readonly ["list", "get_with_employee", "by_job_role", "by_job_level"];
|
|
28
|
+
};
|
|
29
|
+
readonly time_off: {
|
|
30
|
+
readonly name: "Time Off";
|
|
31
|
+
readonly description: "Leave requests and allowances";
|
|
32
|
+
readonly actions: readonly ["list_leaves", "get_leave", "list_types", "get_type", "list_allowances", "create", "update", "cancel", "approve", "reject"];
|
|
33
|
+
};
|
|
34
|
+
readonly attendance: {
|
|
35
|
+
readonly name: "Attendance";
|
|
36
|
+
readonly description: "Clock in/out and shift records";
|
|
37
|
+
readonly actions: readonly ["list", "get", "create", "update", "delete"];
|
|
38
|
+
};
|
|
39
|
+
readonly documents: {
|
|
40
|
+
readonly name: "Documents";
|
|
41
|
+
readonly description: "Document management and downloads";
|
|
42
|
+
readonly actions: readonly ["list_folders", "get_folder", "list", "get", "get_by_employee", "search", "download_payslips", "download"];
|
|
43
|
+
};
|
|
44
|
+
readonly job_catalog: {
|
|
45
|
+
readonly name: "Job Catalog";
|
|
46
|
+
readonly description: "Job roles and levels";
|
|
47
|
+
readonly actions: readonly ["list_roles", "get_role", "list_levels"];
|
|
48
|
+
};
|
|
49
|
+
readonly projects: {
|
|
50
|
+
readonly name: "Projects";
|
|
51
|
+
readonly description: "Project management with tasks, workers, and time tracking";
|
|
52
|
+
readonly actions: readonly ["list", "get", "create", "update", "delete", "list_tasks", "create_task", "update_task", "delete_task", "list_workers", "assign_worker", "remove_worker", "list_time", "create_time", "update_time", "delete_time"];
|
|
53
|
+
};
|
|
54
|
+
readonly training: {
|
|
55
|
+
readonly name: "Training";
|
|
56
|
+
readonly description: "Training programs, sessions, and enrollments";
|
|
57
|
+
readonly actions: readonly ["list", "get", "create", "update", "delete", "list_sessions", "create_session", "update_session", "delete_session", "list_enrollments", "enroll", "unenroll"];
|
|
58
|
+
};
|
|
59
|
+
readonly work_areas: {
|
|
60
|
+
readonly name: "Work Areas";
|
|
61
|
+
readonly description: "Work areas within locations";
|
|
62
|
+
readonly actions: readonly ["list", "get", "create", "update", "archive", "unarchive"];
|
|
63
|
+
};
|
|
64
|
+
readonly ats: {
|
|
65
|
+
readonly name: "ATS (Recruiting)";
|
|
66
|
+
readonly description: "Applicant tracking: job postings, candidates, applications";
|
|
67
|
+
readonly actions: readonly ["list_postings", "get_posting", "create_posting", "update_posting", "delete_posting", "list_candidates", "get_candidate", "create_candidate", "update_candidate", "delete_candidate", "list_applications", "get_application", "create_application", "update_application", "delete_application", "advance_application", "list_stages"];
|
|
68
|
+
};
|
|
69
|
+
readonly payroll: {
|
|
70
|
+
readonly name: "Payroll";
|
|
71
|
+
readonly description: "Payroll supplements, tax IDs, family situations (read-only)";
|
|
72
|
+
readonly actions: readonly ["list_supplements", "get_supplement", "list_tax_ids", "get_tax_id", "list_family", "get_family"];
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Check if confirmation is required for a high-risk operation
|
|
77
|
+
*/
|
|
78
|
+
export declare function checkConfirmation(operationName: OperationName, confirm?: boolean): {
|
|
79
|
+
needsConfirmation: true;
|
|
80
|
+
message: string;
|
|
81
|
+
} | {
|
|
82
|
+
needsConfirmation: false;
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAyC,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE/F;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6Ib,CAAC;AAEX;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,aAAa,EAC5B,OAAO,CAAC,EAAE,OAAO,GAChB;IAAE,iBAAiB,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,iBAAiB,EAAE,KAAK,CAAA;CAAE,CAU7E"}
|