@t4dhg/mcp-factorial 2.0.0 → 3.1.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/dist/errors.js CHANGED
@@ -97,6 +97,32 @@ export class ValidationError extends HttpError {
97
97
  this.name = 'ValidationError';
98
98
  }
99
99
  }
100
+ /**
101
+ * Conflict error (409) - Resource already exists or state conflict
102
+ */
103
+ export class ConflictError extends HttpError {
104
+ constructor(endpoint, message, context) {
105
+ super(409, endpoint, message, {
106
+ isRetryable: false,
107
+ context,
108
+ });
109
+ this.name = 'ConflictError';
110
+ }
111
+ }
112
+ /**
113
+ * Unprocessable Entity error (422) - Validation failed on the server
114
+ */
115
+ export class UnprocessableEntityError extends HttpError {
116
+ validationErrors;
117
+ constructor(endpoint, message, context) {
118
+ super(422, endpoint, message, {
119
+ isRetryable: false,
120
+ context,
121
+ });
122
+ this.name = 'UnprocessableEntityError';
123
+ this.validationErrors = context?.raw?.errors || {};
124
+ }
125
+ }
100
126
  /**
101
127
  * Server error (5xx)
102
128
  */
@@ -183,4 +209,43 @@ export function getUserMessage(error) {
183
209
  }
184
210
  return 'An unexpected error occurred';
185
211
  }
212
+ // ============================================================================
213
+ // Write Operation Errors
214
+ // ============================================================================
215
+ /**
216
+ * Operation cancelled by user (e.g., confirmation declined)
217
+ */
218
+ export class OperationCancelledError extends FactorialError {
219
+ operation;
220
+ constructor(operation) {
221
+ super(`Operation "${operation}" was cancelled.`, { isRetryable: false });
222
+ this.name = 'OperationCancelledError';
223
+ this.operation = operation;
224
+ }
225
+ }
226
+ /**
227
+ * Confirmation token expired or invalid
228
+ */
229
+ export class ConfirmationExpiredError extends FactorialError {
230
+ constructor() {
231
+ super('Confirmation token has expired or is invalid. Please try the operation again.', {
232
+ isRetryable: false,
233
+ });
234
+ this.name = 'ConfirmationExpiredError';
235
+ }
236
+ }
237
+ /**
238
+ * Format validation errors from API response into a human-readable message
239
+ */
240
+ export function formatValidationErrors(errorData) {
241
+ if (!errorData)
242
+ return 'Validation failed';
243
+ if (errorData.errors) {
244
+ const messages = Object.entries(errorData.errors)
245
+ .map(([field, errors]) => `${field}: ${errors.join(', ')}`)
246
+ .join('; ');
247
+ return `Validation failed: ${messages}`;
248
+ }
249
+ return errorData.message || 'Validation failed';
250
+ }
186
251
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,10 @@
3
3
  *
4
4
  * Implements exponential backoff retry for transient failures.
5
5
  */
6
+ /**
7
+ * HTTP methods supported by the client
8
+ */
9
+ export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
6
10
  /**
7
11
  * Request options for the HTTP client
8
12
  */
@@ -16,10 +20,22 @@ export interface RequestOptions {
16
20
  /** Skip retry logic */
17
21
  noRetry?: boolean;
18
22
  }
23
+ /**
24
+ * Extended options for write operations (POST, PUT, PATCH, DELETE)
25
+ */
26
+ export interface WriteRequestOptions extends RequestOptions {
27
+ /** HTTP method */
28
+ method?: HttpMethod;
29
+ /** Request body (will be JSON serialized) */
30
+ body?: Record<string, unknown>;
31
+ /** Idempotency key for safe retries */
32
+ idempotencyKey?: string;
33
+ }
19
34
  /**
20
35
  * Make an HTTP request with retry logic
36
+ * Supports both read (GET) and write (POST, PUT, PATCH, DELETE) operations
21
37
  */
22
- export declare function factorialRequest<T>(endpoint: string, options?: RequestOptions): Promise<T>;
38
+ export declare function factorialRequest<T>(endpoint: string, options?: WriteRequestOptions): Promise<T>;
23
39
  /**
24
40
  * Wrapper type for paginated API responses
25
41
  */
@@ -40,4 +56,25 @@ export declare function fetchOne<T>(endpoint: string, options?: RequestOptions):
40
56
  * Make a request expecting a list response
41
57
  */
42
58
  export declare function fetchList<T>(endpoint: string, options?: RequestOptions): Promise<T[]>;
59
+ /**
60
+ * Create a resource (POST request expecting single item response)
61
+ */
62
+ export declare function postOne<T>(endpoint: string, body: Record<string, unknown>, options?: Omit<WriteRequestOptions, 'method' | 'body'>): Promise<T>;
63
+ /**
64
+ * Update a resource (PUT request expecting single item response)
65
+ */
66
+ export declare function putOne<T>(endpoint: string, body: Record<string, unknown>, options?: Omit<WriteRequestOptions, 'method' | 'body'>): Promise<T>;
67
+ /**
68
+ * Partially update a resource (PATCH request expecting single item response)
69
+ */
70
+ export declare function patchOne<T>(endpoint: string, body: Record<string, unknown>, options?: Omit<WriteRequestOptions, 'method' | 'body'>): Promise<T>;
71
+ /**
72
+ * Delete a resource (DELETE request, typically returns 204 No Content)
73
+ */
74
+ export declare function deleteOne(endpoint: string, options?: Omit<WriteRequestOptions, 'method' | 'body'>): Promise<void>;
75
+ /**
76
+ * Perform a custom action on a resource (POST to action endpoint)
77
+ * Used for actions like approve, reject, archive, etc.
78
+ */
79
+ export declare function postAction<T>(endpoint: string, body?: Record<string, unknown>, options?: Omit<WriteRequestOptions, 'method' | 'body'>): Promise<T>;
43
80
  //# sourceMappingURL=http-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IAC/D,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA6ED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,CAAC,CAAC,CA6DZ;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,IAAI,EAAE,CAAC,CAAC;CACT;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,EAAE,CAAC;CACX;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAGxF;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAG3F"}
1
+ {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * Implements exponential backoff retry for transient failures.
5
5
  */
6
6
  import { getConfig, debug, getApiKey } from './config.js';
7
- import { AuthenticationError, AuthorizationError, NotFoundError, RateLimitError, ServerError, TimeoutError, NetworkError, isRetryableError, } from './errors.js';
7
+ import { AuthenticationError, AuthorizationError, NotFoundError, RateLimitError, ServerError, TimeoutError, NetworkError, ValidationError, ConflictError, UnprocessableEntityError, isRetryableError, formatValidationErrors, } from './errors.js';
8
8
  /**
9
9
  * Sleep for a given number of milliseconds
10
10
  */
@@ -40,24 +40,48 @@ function buildUrl(endpoint, params) {
40
40
  }
41
41
  return url.toString();
42
42
  }
43
+ /**
44
+ * Parse error response body
45
+ */
46
+ function parseErrorBody(errorText) {
47
+ try {
48
+ return JSON.parse(errorText);
49
+ }
50
+ catch {
51
+ return null;
52
+ }
53
+ }
43
54
  /**
44
55
  * Handle HTTP response and throw appropriate errors
45
56
  */
46
- async function handleResponse(response, endpoint) {
57
+ async function handleResponse(response, endpoint, method = 'GET') {
47
58
  if (response.ok) {
59
+ // Handle 204 No Content (common for DELETE operations)
60
+ if (response.status === 204) {
61
+ return undefined;
62
+ }
48
63
  const data = (await response.json());
49
- debug('Response received', { endpoint, status: response.status });
64
+ debug('Response received', { endpoint, method, status: response.status });
50
65
  return data;
51
66
  }
52
67
  const errorText = await response.text();
53
- debug(`API error (${response.status})`, { endpoint, error: errorText });
68
+ const errorData = parseErrorBody(errorText);
69
+ debug(`API error (${response.status})`, { endpoint, method, error: errorText });
54
70
  switch (response.status) {
71
+ case 400:
72
+ throw new ValidationError(endpoint, formatValidationErrors(errorData), { raw: errorData });
55
73
  case 401:
56
74
  throw new AuthenticationError(endpoint);
57
75
  case 403:
58
76
  throw new AuthorizationError(endpoint);
59
77
  case 404:
60
78
  throw new NotFoundError(endpoint);
79
+ case 409:
80
+ throw new ConflictError(endpoint, errorData?.message || 'Resource conflict');
81
+ case 422:
82
+ throw new UnprocessableEntityError(endpoint, formatValidationErrors(errorData), {
83
+ raw: errorData,
84
+ });
61
85
  case 429: {
62
86
  const retryAfter = response.headers.get('Retry-After');
63
87
  throw new RateLimitError(endpoint, retryAfter ? parseInt(retryAfter, 10) : undefined);
@@ -71,28 +95,43 @@ async function handleResponse(response, endpoint) {
71
95
  }
72
96
  /**
73
97
  * Make an HTTP request with retry logic
98
+ * Supports both read (GET) and write (POST, PUT, PATCH, DELETE) operations
74
99
  */
75
100
  export async function factorialRequest(endpoint, options = {}) {
76
101
  const config = getConfig();
102
+ const method = options.method ?? 'GET';
77
103
  const url = buildUrl(endpoint, options.params);
78
104
  const timeout = options.timeout ?? config.timeout;
79
- const maxRetries = options.noRetry ? 1 : (options.maxRetries ?? config.maxRetries);
80
- debug(`Fetching: ${url}`);
105
+ // Write operations should not retry by default (except with idempotency key)
106
+ const defaultMaxRetries = method === 'GET' ? config.maxRetries : options.idempotencyKey ? 2 : 1;
107
+ const maxRetries = options.noRetry ? 1 : (options.maxRetries ?? defaultMaxRetries);
108
+ debug(`${method} ${url}`);
81
109
  let lastError;
82
110
  for (let attempt = 1; attempt <= maxRetries; attempt++) {
83
111
  const controller = new AbortController();
84
112
  const timeoutId = setTimeout(() => controller.abort(), timeout);
85
113
  try {
114
+ // Build headers
115
+ const headers = {
116
+ 'x-api-key': getApiKey(),
117
+ Accept: 'application/json',
118
+ };
119
+ // Add Content-Type for requests with body
120
+ if (options.body) {
121
+ headers['Content-Type'] = 'application/json';
122
+ }
123
+ // Add idempotency key header for write operations
124
+ if (options.idempotencyKey) {
125
+ headers['Idempotency-Key'] = options.idempotencyKey;
126
+ }
86
127
  const response = await fetch(url, {
87
- method: 'GET',
88
- headers: {
89
- 'x-api-key': getApiKey(),
90
- Accept: 'application/json',
91
- },
128
+ method,
129
+ headers,
130
+ body: options.body ? JSON.stringify(options.body) : undefined,
92
131
  signal: controller.signal,
93
132
  });
94
133
  clearTimeout(timeoutId);
95
- return await handleResponse(response, endpoint);
134
+ return await handleResponse(response, endpoint, method);
96
135
  }
97
136
  catch (error) {
98
137
  clearTimeout(timeoutId);
@@ -106,8 +145,9 @@ export async function factorialRequest(endpoint, options = {}) {
106
145
  else {
107
146
  lastError = new NetworkError('An unexpected network error occurred');
108
147
  }
109
- // Check if we should retry
110
- const shouldRetry = attempt < maxRetries && isRetryableError(lastError);
148
+ // Only retry writes if idempotent and retryable
149
+ const canRetryWrite = method === 'GET' || options.idempotencyKey;
150
+ const shouldRetry = attempt < maxRetries && isRetryableError(lastError) && canRetryWrite;
111
151
  if (shouldRetry) {
112
152
  // Handle rate limit with Retry-After header
113
153
  let delay;
@@ -143,4 +183,61 @@ export async function fetchList(endpoint, options) {
143
183
  const response = await factorialRequest(endpoint, options);
144
184
  return response.data || [];
145
185
  }
186
+ // ============================================================================
187
+ // Write Operation Helpers
188
+ // ============================================================================
189
+ /**
190
+ * Create a resource (POST request expecting single item response)
191
+ */
192
+ export async function postOne(endpoint, body, options) {
193
+ const response = await factorialRequest(endpoint, {
194
+ ...options,
195
+ method: 'POST',
196
+ body,
197
+ });
198
+ return response.data;
199
+ }
200
+ /**
201
+ * Update a resource (PUT request expecting single item response)
202
+ */
203
+ export async function putOne(endpoint, body, options) {
204
+ const response = await factorialRequest(endpoint, {
205
+ ...options,
206
+ method: 'PUT',
207
+ body,
208
+ });
209
+ return response.data;
210
+ }
211
+ /**
212
+ * Partially update a resource (PATCH request expecting single item response)
213
+ */
214
+ export async function patchOne(endpoint, body, options) {
215
+ const response = await factorialRequest(endpoint, {
216
+ ...options,
217
+ method: 'PATCH',
218
+ body,
219
+ });
220
+ return response.data;
221
+ }
222
+ /**
223
+ * Delete a resource (DELETE request, typically returns 204 No Content)
224
+ */
225
+ export async function deleteOne(endpoint, options) {
226
+ await factorialRequest(endpoint, {
227
+ ...options,
228
+ method: 'DELETE',
229
+ });
230
+ }
231
+ /**
232
+ * Perform a custom action on a resource (POST to action endpoint)
233
+ * Used for actions like approve, reject, archive, etc.
234
+ */
235
+ export async function postAction(endpoint, body, options) {
236
+ const response = await factorialRequest(endpoint, {
237
+ ...options,
238
+ method: 'POST',
239
+ body: body || {},
240
+ });
241
+ return response.data;
242
+ }
146
243
  //# sourceMappingURL=http-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAgBrB;;GAEG;AACH,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CAAC,OAAe,EAAE,SAAS,GAAG,IAAI;IACxD,MAAM,gBAAgB,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,oBAAoB;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IACnD,oBAAoB;IACpB,MAAM,MAAM,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ,CACf,QAAgB,EAChB,MAA8D;IAE9D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC,CAAC;IAEpD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC9C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAAI,QAAkB,EAAE,QAAgB;IACnE,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;QAC1C,KAAK,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACxC,KAAK,CAAC,cAAc,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAExE,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;QACxB,KAAK,GAAG;YACN,MAAM,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC1C,KAAK,GAAG;YACN,MAAM,IAAI,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACzC,KAAK,GAAG;YACN,MAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;QACpC,KAAK,GAAG,CAAC,CAAC,CAAC;YACT,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACvD,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACxF,CAAC;QACD;YACE,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBAC3B,MAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC9D,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAgB,EAChB,UAA0B,EAAE;IAE5B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;IAClD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;IAEnF,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC;IAE1B,IAAI,SAA4B,CAAC;IAEjC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;QAEhE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,WAAW,EAAE,SAAS,EAAE;oBACxB,MAAM,EAAE,kBAAkB;iBAC3B;gBACD,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YAEH,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,OAAO,MAAM,cAAc,CAAI,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,SAAS,CAAC,CAAC;YAExB,iCAAiC;YACjC,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC1D,SAAS,GAAG,IAAI,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAClD,CAAC;iBAAM,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAClC,SAAS,GAAG,KAAK,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,SAAS,GAAG,IAAI,YAAY,CAAC,sCAAsC,CAAC,CAAC;YACvE,CAAC;YAED,2BAA2B;YAC3B,MAAM,WAAW,GAAG,OAAO,GAAG,UAAU,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAExE,IAAI,WAAW,EAAE,CAAC;gBAChB,4CAA4C;gBAC5C,IAAI,KAAa,CAAC;gBAClB,IAAI,SAAS,YAAY,cAAc,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;oBAChE,KAAK,GAAG,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC;gBACtC,CAAC;qBAAM,CAAC;oBACN,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;gBACnC,CAAC;gBAED,KAAK,CAAC,iBAAiB,OAAO,IAAI,UAAU,UAAU,KAAK,IAAI,EAAE;oBAC/D,KAAK,EAAE,SAAS,CAAC,OAAO;iBACzB,CAAC,CAAC;gBACH,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,SAAS,IAAI,IAAI,YAAY,CAAC,kCAAkC,CAAC,CAAC;AAC1E,CAAC;AAgBD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAI,QAAgB,EAAE,OAAwB;IAC1E,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAiB,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3E,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,QAAgB,EAAE,OAAwB;IAC3E,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAqB,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/E,OAAO,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,aAAa,EACb,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAiCrB;;GAEG;AACH,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CAAC,OAAe,EAAE,SAAS,GAAG,IAAI;IACxD,MAAM,gBAAgB,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,oBAAoB;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IACnD,oBAAoB;IACpB,MAAM,MAAM,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ,CACf,QAAgB,EAChB,MAA8D;IAE9D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC,CAAC;IAEpD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC9C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CACrB,SAAiB;IAEjB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAA4D,CAAC;IAC1F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAC3B,QAAkB,EAClB,QAAgB,EAChB,SAAqB,KAAK;IAE1B,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;QAChB,uDAAuD;QACvD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO,SAAc,CAAC;QACxB,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;QAC1C,KAAK,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACxC,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAC5C,KAAK,CAAC,cAAc,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAEhF,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;QACxB,KAAK,GAAG;YACN,MAAM,IAAI,eAAe,CAAC,QAAQ,EAAE,sBAAsB,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7F,KAAK,GAAG;YACN,MAAM,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC1C,KAAK,GAAG;YACN,MAAM,IAAI,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACzC,KAAK,GAAG;YACN,MAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;QACpC,KAAK,GAAG;YACN,MAAM,IAAI,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,IAAI,mBAAmB,CAAC,CAAC;QAC/E,KAAK,GAAG;YACN,MAAM,IAAI,wBAAwB,CAAC,QAAQ,EAAE,sBAAsB,CAAC,SAAS,CAAC,EAAE;gBAC9E,GAAG,EAAE,SAAS;aACf,CAAC,CAAC;QACL,KAAK,GAAG,CAAC,CAAC,CAAC;YACT,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACvD,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACxF,CAAC;QACD;YACE,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBAC3B,MAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC9D,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAgB,EAChB,UAA+B,EAAE;IAEjC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;IACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;IAElD,6EAA6E;IAC7E,MAAM,iBAAiB,GAAG,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChG,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,iBAAiB,CAAC,CAAC;IAEnF,KAAK,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC;IAE1B,IAAI,SAA4B,CAAC;IAEjC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;QAEhE,IAAI,CAAC;YACH,gBAAgB;YAChB,MAAM,OAAO,GAA2B;gBACtC,WAAW,EAAE,SAAS,EAAE;gBACxB,MAAM,EAAE,kBAAkB;aAC3B,CAAC;YAEF,0CAA0C;YAC1C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;YAC/C,CAAC;YAED,kDAAkD;YAClD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;gBAC3B,OAAO,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;YACtD,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM;gBACN,OAAO;gBACP,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC7D,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YAEH,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,OAAO,MAAM,cAAc,CAAI,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,SAAS,CAAC,CAAC;YAExB,iCAAiC;YACjC,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC1D,SAAS,GAAG,IAAI,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAClD,CAAC;iBAAM,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAClC,SAAS,GAAG,KAAK,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,SAAS,GAAG,IAAI,YAAY,CAAC,sCAAsC,CAAC,CAAC;YACvE,CAAC;YAED,gDAAgD;YAChD,MAAM,aAAa,GAAG,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,cAAc,CAAC;YACjE,MAAM,WAAW,GAAG,OAAO,GAAG,UAAU,IAAI,gBAAgB,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC;YAEzF,IAAI,WAAW,EAAE,CAAC;gBAChB,4CAA4C;gBAC5C,IAAI,KAAa,CAAC;gBAClB,IAAI,SAAS,YAAY,cAAc,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;oBAChE,KAAK,GAAG,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC;gBACtC,CAAC;qBAAM,CAAC;oBACN,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;gBACnC,CAAC;gBAED,KAAK,CAAC,iBAAiB,OAAO,IAAI,UAAU,UAAU,KAAK,IAAI,EAAE;oBAC/D,KAAK,EAAE,SAAS,CAAC,OAAO;iBACzB,CAAC,CAAC;gBACH,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,SAAS,IAAI,IAAI,YAAY,CAAC,kCAAkC,CAAC,CAAC;AAC1E,CAAC;AAgBD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAI,QAAgB,EAAE,OAAwB;IAC1E,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAiB,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3E,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,QAAgB,EAAE,OAAwB;IAC3E,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAqB,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/E,OAAO,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,QAAgB,EAChB,IAA6B,EAC7B,OAAsD;IAEtD,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAiB,QAAQ,EAAE;QAChE,GAAG,OAAO;QACV,MAAM,EAAE,MAAM;QACd,IAAI;KACL,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,QAAgB,EAChB,IAA6B,EAC7B,OAAsD;IAEtD,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAiB,QAAQ,EAAE;QAChE,GAAG,OAAO;QACV,MAAM,EAAE,KAAK;QACb,IAAI;KACL,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,QAAgB,EAChB,IAA6B,EAC7B,OAAsD;IAEtD,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAiB,QAAQ,EAAE;QAChE,GAAG,OAAO;QACV,MAAM,EAAE,OAAO;QACf,IAAI;KACL,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,QAAgB,EAChB,OAAsD;IAEtD,MAAM,gBAAgB,CAAO,QAAQ,EAAE;QACrC,GAAG,OAAO;QACV,MAAM,EAAE,QAAQ;KACjB,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,QAAgB,EAChB,IAA8B,EAC9B,OAAsD;IAEtD,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAiB,QAAQ,EAAE;QAChE,GAAG,OAAO;QACV,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,IAAI,EAAE;KACjB,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,15 +2,18 @@
2
2
  /**
3
3
  * MCP Server for FactorialHR
4
4
  *
5
- * Provides access to employee and organizational data from FactorialHR
6
- * through the Model Context Protocol for use with Claude Code and other MCP clients.
5
+ * Provides comprehensive access to FactorialHR data through the Model Context Protocol
6
+ * for use with Claude Code and other MCP clients.
7
7
  *
8
8
  * Features:
9
- * - 22 tools for employees, teams, locations, contracts, time off, attendance, documents, and job catalog
9
+ * - 80+ tools for employees, teams, locations, contracts, time off, attendance,
10
+ * documents, job catalog, projects, training, work areas, recruiting (ATS), and payroll
11
+ * - Full CRUD operations with safety guardrails for high-risk actions
10
12
  * - Pagination support for all list operations
11
13
  * - Caching for improved performance
12
14
  * - Retry logic with exponential backoff
13
15
  * - Runtime validation with Zod schemas
16
+ * - Audit logging for all write operations
14
17
  */
15
18
  export {};
16
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;GAeG"}