@fuul/mcp-server 0.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 +218 -0
- package/dist/affiliate-portal/affiliate-portal-queries.d.ts +15 -0
- package/dist/affiliate-portal/affiliate-portal-queries.d.ts.map +1 -0
- package/dist/affiliate-portal/affiliate-portal-queries.js +35 -0
- package/dist/affiliate-portal/affiliate-portal-queries.js.map +1 -0
- package/dist/agent/write-confirmation.d.ts +20 -0
- package/dist/agent/write-confirmation.d.ts.map +1 -0
- package/dist/agent/write-confirmation.js +34 -0
- package/dist/agent/write-confirmation.js.map +1 -0
- package/dist/auth/oauth-client.d.ts +13 -0
- package/dist/auth/oauth-client.d.ts.map +1 -0
- package/dist/auth/oauth-client.js +185 -0
- package/dist/auth/oauth-client.js.map +1 -0
- package/dist/auth/pkce.d.ts +5 -0
- package/dist/auth/pkce.d.ts.map +1 -0
- package/dist/auth/pkce.js +12 -0
- package/dist/auth/pkce.js.map +1 -0
- package/dist/auth/token-store.d.ts +7 -0
- package/dist/auth/token-store.d.ts.map +1 -0
- package/dist/auth/token-store.js +44 -0
- package/dist/auth/token-store.js.map +1 -0
- package/dist/auth/types.d.ts +13 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +2 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +67 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/env.d.ts +10 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +30 -0
- package/dist/config/env.js.map +1 -0
- package/dist/http/fuul-api-client.d.ts +51 -0
- package/dist/http/fuul-api-client.d.ts.map +1 -0
- package/dist/http/fuul-api-client.js +161 -0
- package/dist/http/fuul-api-client.js.map +1 -0
- package/dist/http/nest-query.d.ts +6 -0
- package/dist/http/nest-query.d.ts.map +1 -0
- package/dist/http/nest-query.js +24 -0
- package/dist/http/nest-query.js.map +1 -0
- package/dist/http/retry-after.d.ts +8 -0
- package/dist/http/retry-after.d.ts.map +1 -0
- package/dist/http/retry-after.js +28 -0
- package/dist/http/retry-after.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +366 -0
- package/dist/index.js.map +1 -0
- package/dist/metadata/metadata-service.d.ts +11 -0
- package/dist/metadata/metadata-service.d.ts.map +1 -0
- package/dist/metadata/metadata-service.js +71 -0
- package/dist/metadata/metadata-service.js.map +1 -0
- package/dist/payouts/payout-batch-handlers.d.ts +4 -0
- package/dist/payouts/payout-batch-handlers.d.ts.map +1 -0
- package/dist/payouts/payout-batch-handlers.js +34 -0
- package/dist/payouts/payout-batch-handlers.js.map +1 -0
- package/dist/tools/tool-descriptions.d.ts +25 -0
- package/dist/tools/tool-descriptions.d.ts.map +1 -0
- package/dist/tools/tool-descriptions.js +40 -0
- package/dist/tools/tool-descriptions.js.map +1 -0
- package/dist/tools/tool-schemas.d.ts +35 -0
- package/dist/tools/tool-schemas.d.ts.map +1 -0
- package/dist/tools/tool-schemas.js +145 -0
- package/dist/tools/tool-schemas.js.map +1 -0
- package/dist/util/compact-query.d.ts +3 -0
- package/dist/util/compact-query.d.ts.map +1 -0
- package/dist/util/compact-query.js +5 -0
- package/dist/util/compact-query.js.map +1 -0
- package/dist/util/with-timeout.d.ts +12 -0
- package/dist/util/with-timeout.d.ts.map +1 -0
- package/dist/util/with-timeout.js +35 -0
- package/dist/util/with-timeout.js.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const listProjectsInputSchema: any;
|
|
3
|
+
export declare const projectIdParamSchema: any;
|
|
4
|
+
export declare const getIncentiveInputSchema: any;
|
|
5
|
+
export declare const getTriggerInputSchema: any;
|
|
6
|
+
export declare const payoutTermSchema: any;
|
|
7
|
+
/** Body must match server PayoutTermDto (see fuul-server payouts/payout-terms/dto/payout-term.dto). */
|
|
8
|
+
export declare const updatePayoutTermInputSchema: any;
|
|
9
|
+
export type UpdatePayoutTermInput = z.infer<typeof updatePayoutTermInputSchema>;
|
|
10
|
+
/** Registered on MCP tools; use {@link updateProjectTierInputSchema} in handlers for full validation. */
|
|
11
|
+
export declare const updateProjectTierFieldsSchema: any;
|
|
12
|
+
export declare const updateProjectTierInputSchema: any;
|
|
13
|
+
export type UpdateProjectTierInput = z.infer<typeof updateProjectTierInputSchema>;
|
|
14
|
+
/** Registered on MCP tools; use {@link updateAudienceInputSchema} in handlers. */
|
|
15
|
+
export declare const updateAudienceFieldsSchema: any;
|
|
16
|
+
export declare const updateAudienceInputSchema: any;
|
|
17
|
+
export type UpdateAudienceInput = z.infer<typeof updateAudienceInputSchema>;
|
|
18
|
+
/** Registered on MCP tools; use {@link updateTriggerInputSchema} in handlers. */
|
|
19
|
+
export declare const updateTriggerFieldsSchema: any;
|
|
20
|
+
export declare const updateTriggerInputSchema: any;
|
|
21
|
+
export type UpdateTriggerInput = z.infer<typeof updateTriggerInputSchema>;
|
|
22
|
+
export declare const listPayoutsPendingApprovalSchema: any;
|
|
23
|
+
export declare const listRewardsPayoutsSchema: any;
|
|
24
|
+
export declare const payoutBatchActionInputSchema: any;
|
|
25
|
+
export type PayoutBatchActionInput = z.infer<typeof payoutBatchActionInputSchema>;
|
|
26
|
+
/** GET .../affiliate-portal/stats — matches fuul-server GetAffiliateStatsDto query names. */
|
|
27
|
+
export declare const getAffiliatePortalStatsSchema: any;
|
|
28
|
+
export type GetAffiliatePortalStatsInput = z.infer<typeof getAffiliatePortalStatsSchema>;
|
|
29
|
+
/** GET .../affiliate-portal/total-stats — matches GetTotalStatsDto. */
|
|
30
|
+
export declare const getProjectAffiliateTotalStatsSchema: any;
|
|
31
|
+
export type GetProjectAffiliateTotalStatsInput = z.infer<typeof getProjectAffiliateTotalStatsSchema>;
|
|
32
|
+
/** GET .../affiliate-portal/global-breakdown — matches GetProjectAffiliatesBreakdownDto (groupBy required). */
|
|
33
|
+
export declare const getProjectAffiliatesBreakdownSchema: any;
|
|
34
|
+
export type GetProjectAffiliatesBreakdownInput = z.infer<typeof getProjectAffiliatesBreakdownSchema>;
|
|
35
|
+
//# sourceMappingURL=tool-schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-schemas.d.ts","sourceRoot":"","sources":["../../src/tools/tool-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,uBAAuB,KAGlC,CAAC;AAEH,eAAO,MAAM,oBAAoB,KAE/B,CAAC;AAEH,eAAO,MAAM,uBAAuB,KAGlC,CAAC;AAEH,eAAO,MAAM,qBAAqB,KAGhC,CAAC;AAEH,eAAO,MAAM,gBAAgB,KAAoC,CAAC;AAElE,uGAAuG;AACvG,eAAO,MAAM,2BAA2B,KAKtC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,yGAAyG;AACzG,eAAO,MAAM,6BAA6B,KAOxC,CAAC;AAEH,eAAO,MAAM,4BAA4B,KAGxC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAOlF,kFAAkF;AAClF,eAAO,MAAM,0BAA0B,KAOrC,CAAC;AAEH,eAAO,MAAM,yBAAyB,KAGrC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,iFAAiF;AACjF,eAAO,MAAM,yBAAyB,KAkBpC,CAAC;AAEH,eAAO,MAAM,wBAAwB,KAkBpC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,gCAAgC,KAI3C,CAAC;AAEH,eAAO,MAAM,wBAAwB,KAOnC,CAAC;AAEH,eAAO,MAAM,4BAA4B,KAOvC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAIlF,6FAA6F;AAC7F,eAAO,MAAM,6BAA6B,KAQxC,CAAC;AAEH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEzF,uEAAuE;AACvE,eAAO,MAAM,mCAAmC,KAS9C,CAAC;AAEH,MAAM,MAAM,kCAAkC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mCAAmC,CAAC,CAAC;AAKrG,+GAA+G;AAC/G,eAAO,MAAM,mCAAmC,KAY9C,CAAC;AAEH,MAAM,MAAM,kCAAkC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mCAAmC,CAAC,CAAC"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { writeConfirmationFieldsSchema } from '../agent/write-confirmation.js';
|
|
3
|
+
const uuid = z.string().uuid();
|
|
4
|
+
export const listProjectsInputSchema = z.object({
|
|
5
|
+
page: z.coerce.number().int().positive().optional().describe('1-based page index; sent as ?page='),
|
|
6
|
+
query: z.string().optional().describe('Search string; sent as ?query='),
|
|
7
|
+
});
|
|
8
|
+
export const projectIdParamSchema = z.object({
|
|
9
|
+
project_id: uuid.describe('Project UUID'),
|
|
10
|
+
});
|
|
11
|
+
export const getIncentiveInputSchema = z.object({
|
|
12
|
+
project_id: uuid,
|
|
13
|
+
conversion_id: uuid.describe('Incentive (conversion) UUID'),
|
|
14
|
+
});
|
|
15
|
+
export const getTriggerInputSchema = z.object({
|
|
16
|
+
project_id: uuid,
|
|
17
|
+
trigger_id: uuid.describe('Trigger UUID'),
|
|
18
|
+
});
|
|
19
|
+
export const payoutTermSchema = z.record(z.string(), z.unknown());
|
|
20
|
+
/** Body must match server PayoutTermDto (see fuul-server payouts/payout-terms/dto/payout-term.dto). */
|
|
21
|
+
export const updatePayoutTermInputSchema = writeConfirmationFieldsSchema.extend({
|
|
22
|
+
project_id: uuid,
|
|
23
|
+
conversion_id: uuid.describe('Incentive (conversion) UUID'),
|
|
24
|
+
payout_term_id: uuid,
|
|
25
|
+
payout_term: payoutTermSchema.describe('Full payout term payload as returned by get_incentive / GET payout_term, with edits applied.'),
|
|
26
|
+
});
|
|
27
|
+
/** Registered on MCP tools; use {@link updateProjectTierInputSchema} in handlers for full validation. */
|
|
28
|
+
export const updateProjectTierFieldsSchema = writeConfirmationFieldsSchema.extend({
|
|
29
|
+
project_id: uuid,
|
|
30
|
+
tier_id: uuid,
|
|
31
|
+
name: z.string().min(1).max(100).optional(),
|
|
32
|
+
description: z.union([z.string().min(1).max(500), z.null()]).optional(),
|
|
33
|
+
rank: z.coerce.number().int().min(1).optional(),
|
|
34
|
+
audience_id: z.string().uuid().nullable().optional(),
|
|
35
|
+
});
|
|
36
|
+
export const updateProjectTierInputSchema = updateProjectTierFieldsSchema.refine((v) => v.name != null || v.description !== undefined || v.rank != null || v.audience_id !== undefined, { message: 'Provide at least one of: name, description, rank, audience_id' });
|
|
37
|
+
const audienceConditionSchema = z.object({
|
|
38
|
+
signature: z.string(),
|
|
39
|
+
parameters: z.record(z.string(), z.unknown()),
|
|
40
|
+
});
|
|
41
|
+
/** Registered on MCP tools; use {@link updateAudienceInputSchema} in handlers. */
|
|
42
|
+
export const updateAudienceFieldsSchema = writeConfirmationFieldsSchema.extend({
|
|
43
|
+
project_id: uuid,
|
|
44
|
+
audience_id: uuid,
|
|
45
|
+
name: z.string().min(1),
|
|
46
|
+
conditions: z.array(audienceConditionSchema).optional(),
|
|
47
|
+
condition_match_mode: z.enum(['any', 'all']).optional().describe('Required when conditions is non-empty.'),
|
|
48
|
+
contractId: z.string().optional(),
|
|
49
|
+
});
|
|
50
|
+
export const updateAudienceInputSchema = updateAudienceFieldsSchema.refine((v) => !v.conditions || v.conditions.length === 0 || (v.condition_match_mode != null && v.condition_match_mode.length > 0), { message: 'condition_match_mode is required when conditions is non-empty' });
|
|
51
|
+
/** Registered on MCP tools; use {@link updateTriggerInputSchema} in handlers. */
|
|
52
|
+
export const updateTriggerFieldsSchema = writeConfirmationFieldsSchema.extend({
|
|
53
|
+
project_id: uuid,
|
|
54
|
+
trigger_id: uuid,
|
|
55
|
+
name: z.string().optional(),
|
|
56
|
+
description: z.string().optional(),
|
|
57
|
+
event_type: z.string().optional(),
|
|
58
|
+
condition_expression: z.string().optional(),
|
|
59
|
+
amount_expression: z.string().optional(),
|
|
60
|
+
volume_expression: z.string().optional(),
|
|
61
|
+
revenue_expression: z.string().optional(),
|
|
62
|
+
currency_expression: z.string().optional(),
|
|
63
|
+
volume_currency_expression: z.string().optional(),
|
|
64
|
+
revenue_currency_expression: z.string().optional(),
|
|
65
|
+
end_user_identifier_property: z.string().optional(),
|
|
66
|
+
end_user_identifier_expression: z.string().optional(),
|
|
67
|
+
payable: z.boolean().optional(),
|
|
68
|
+
ref: z.string().optional(),
|
|
69
|
+
contract_ids: z.array(uuid).length(1).optional().describe('Exactly one contract UUID when updating on-chain contract event triggers.'),
|
|
70
|
+
});
|
|
71
|
+
export const updateTriggerInputSchema = updateTriggerFieldsSchema.refine((v) => v.name !== undefined ||
|
|
72
|
+
v.description !== undefined ||
|
|
73
|
+
v.event_type !== undefined ||
|
|
74
|
+
v.condition_expression !== undefined ||
|
|
75
|
+
v.amount_expression !== undefined ||
|
|
76
|
+
v.volume_expression !== undefined ||
|
|
77
|
+
v.revenue_expression !== undefined ||
|
|
78
|
+
v.currency_expression !== undefined ||
|
|
79
|
+
v.volume_currency_expression !== undefined ||
|
|
80
|
+
v.revenue_currency_expression !== undefined ||
|
|
81
|
+
v.end_user_identifier_property !== undefined ||
|
|
82
|
+
v.end_user_identifier_expression !== undefined ||
|
|
83
|
+
v.payable !== undefined ||
|
|
84
|
+
v.ref !== undefined ||
|
|
85
|
+
v.contract_ids !== undefined, { message: 'Provide at least one trigger field to patch (e.g. name, description, event_type, expressions, contract_ids).' });
|
|
86
|
+
export const listPayoutsPendingApprovalSchema = z.object({
|
|
87
|
+
project_id: uuid,
|
|
88
|
+
page: z.coerce.number().int().positive().optional().describe('Forwarded as ?page='),
|
|
89
|
+
page_size: z.coerce.number().int().positive().max(100).optional().describe('Forwarded as ?page_size='),
|
|
90
|
+
});
|
|
91
|
+
export const listRewardsPayoutsSchema = z.object({
|
|
92
|
+
project_id: uuid,
|
|
93
|
+
page: z.coerce.number().int().positive().optional(),
|
|
94
|
+
page_size: z.coerce.number().int().positive().max(100).optional(),
|
|
95
|
+
status: z.string().optional(),
|
|
96
|
+
from_date: z.string().optional(),
|
|
97
|
+
to_date: z.string().optional(),
|
|
98
|
+
});
|
|
99
|
+
export const payoutBatchActionInputSchema = writeConfirmationFieldsSchema.extend({
|
|
100
|
+
project_id: uuid,
|
|
101
|
+
payout_ids: z.array(uuid).optional().describe('Mutually exclusive with from_date/to_date filters on server.'),
|
|
102
|
+
from_date: z.string().optional(),
|
|
103
|
+
to_date: z.string().optional(),
|
|
104
|
+
user_address: z.string().optional(),
|
|
105
|
+
affiliate_address: z.string().optional(),
|
|
106
|
+
});
|
|
107
|
+
const dateRangePresetSchema = z.enum(['7d', '30d', '90d', 'MTD', 'QTD', 'custom', 'all']);
|
|
108
|
+
/** GET .../affiliate-portal/stats — matches fuul-server GetAffiliateStatsDto query names. */
|
|
109
|
+
export const getAffiliatePortalStatsSchema = z.object({
|
|
110
|
+
project_id: uuid,
|
|
111
|
+
user_identifier: z.string().min(1).describe('Encoded identifier string (e.g. evm:0x..., solana:...).'),
|
|
112
|
+
from: z.string().optional(),
|
|
113
|
+
to: z.string().optional(),
|
|
114
|
+
this_month: z.string().optional().describe('Use "true" for current month (mutually exclusive with from/to).'),
|
|
115
|
+
conversion_external_id: z.coerce.number().int().min(0).optional(),
|
|
116
|
+
conversion_name: z.string().optional(),
|
|
117
|
+
});
|
|
118
|
+
/** GET .../affiliate-portal/total-stats — matches GetTotalStatsDto. */
|
|
119
|
+
export const getProjectAffiliateTotalStatsSchema = z.object({
|
|
120
|
+
project_id: uuid,
|
|
121
|
+
statuses: z.array(z.string()).optional(),
|
|
122
|
+
regions: z.array(z.string()).optional(),
|
|
123
|
+
audiences: z.array(z.string()).optional(),
|
|
124
|
+
tiers: z.array(z.string().uuid()).optional(),
|
|
125
|
+
dateRange: dateRangePresetSchema.optional(),
|
|
126
|
+
dateFrom: z.string().optional(),
|
|
127
|
+
dateTo: z.string().optional(),
|
|
128
|
+
});
|
|
129
|
+
const breakdownGroupBySchema = z.enum(['audience', 'tier', 'region', 'status']);
|
|
130
|
+
const breakdownSortBySchema = z.enum(['totalReferralVolume', 'revenueFromReferrals', 'earnings', 'pointsPaid']);
|
|
131
|
+
/** GET .../affiliate-portal/global-breakdown — matches GetProjectAffiliatesBreakdownDto (groupBy required). */
|
|
132
|
+
export const getProjectAffiliatesBreakdownSchema = z.object({
|
|
133
|
+
project_id: uuid,
|
|
134
|
+
groupBy: breakdownGroupBySchema,
|
|
135
|
+
dateRange: dateRangePresetSchema.optional(),
|
|
136
|
+
dateFrom: z.string().optional(),
|
|
137
|
+
dateTo: z.string().optional(),
|
|
138
|
+
sortBy: breakdownSortBySchema.optional(),
|
|
139
|
+
sortOrder: z.enum(['asc', 'desc']).optional(),
|
|
140
|
+
statuses: z.array(z.string()).optional(),
|
|
141
|
+
regions: z.array(z.string()).optional(),
|
|
142
|
+
audiences: z.array(z.string()).optional(),
|
|
143
|
+
tiers: z.array(z.string().uuid()).optional(),
|
|
144
|
+
});
|
|
145
|
+
//# sourceMappingURL=tool-schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-schemas.js","sourceRoot":"","sources":["../../src/tools/tool-schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compact-query.d.ts","sourceRoot":"","sources":["../../src/util/compact-query.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAErF"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Drop undefined, null, and empty string from a query param object. */
|
|
2
|
+
export function compactQuery(params) {
|
|
3
|
+
return Object.fromEntries(Object.entries(params).filter(([, v]) => v !== undefined && v !== null && v !== ''));
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=compact-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compact-query.js","sourceRoot":"","sources":["../../src/util/compact-query.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,MAAM,UAAU,YAAY,CAAC,MAA+B;IAC1D,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACjH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class ToolTimeoutError extends Error {
|
|
2
|
+
readonly operation: string;
|
|
3
|
+
readonly timeoutMs: number;
|
|
4
|
+
readonly code: "TOOL_TIMEOUT";
|
|
5
|
+
constructor(operation: string, timeoutMs: number);
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Fails fast from the caller's perspective if `promise` never settles (e.g. wedged I/O).
|
|
9
|
+
* The underlying work may still run until its own abort/timeout, if any.
|
|
10
|
+
*/
|
|
11
|
+
export declare function withTimeout<T>(promise: Promise<T>, timeoutMs: number, operation: string): Promise<T>;
|
|
12
|
+
//# sourceMappingURL=with-timeout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-timeout.d.ts","sourceRoot":"","sources":["../../src/util/with-timeout.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAiB,SAAQ,KAAK;IAIvC,QAAQ,CAAC,SAAS,EAAE,MAAM;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM;IAJ5B,QAAQ,CAAC,IAAI,EAAG,cAAc,CAAU;gBAG7B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM;CAM7B;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAgB1G"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export class ToolTimeoutError extends Error {
|
|
2
|
+
operation;
|
|
3
|
+
timeoutMs;
|
|
4
|
+
code = 'TOOL_TIMEOUT';
|
|
5
|
+
constructor(operation, timeoutMs) {
|
|
6
|
+
super(`Operation "${operation}" timed out after ${timeoutMs}ms`);
|
|
7
|
+
this.operation = operation;
|
|
8
|
+
this.timeoutMs = timeoutMs;
|
|
9
|
+
this.name = 'ToolTimeoutError';
|
|
10
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Fails fast from the caller's perspective if `promise` never settles (e.g. wedged I/O).
|
|
15
|
+
* The underlying work may still run until its own abort/timeout, if any.
|
|
16
|
+
*/
|
|
17
|
+
export async function withTimeout(promise, timeoutMs, operation) {
|
|
18
|
+
let timer;
|
|
19
|
+
try {
|
|
20
|
+
return await Promise.race([
|
|
21
|
+
promise,
|
|
22
|
+
new Promise((_, reject) => {
|
|
23
|
+
timer = setTimeout(() => {
|
|
24
|
+
reject(new ToolTimeoutError(operation, timeoutMs));
|
|
25
|
+
}, timeoutMs);
|
|
26
|
+
}),
|
|
27
|
+
]);
|
|
28
|
+
}
|
|
29
|
+
finally {
|
|
30
|
+
if (timer !== undefined) {
|
|
31
|
+
clearTimeout(timer);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=with-timeout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-timeout.js","sourceRoot":"","sources":["../../src/util/with-timeout.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAI9B;IACA;IAJF,IAAI,GAAG,cAAuB,CAAC;IAExC,YACW,SAAiB,EACjB,SAAiB;QAE1B,KAAK,CAAC,cAAc,SAAS,qBAAqB,SAAS,IAAI,CAAC,CAAC;QAHxD,cAAS,GAAT,SAAS,CAAQ;QACjB,cAAS,GAAT,SAAS,CAAQ;QAG1B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAI,OAAmB,EAAE,SAAiB,EAAE,SAAiB;IAC5F,IAAI,KAAgD,CAAC;IACrD,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC;YACxB,OAAO;YACP,IAAI,OAAO,CAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gBAC3B,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBACtB,MAAM,CAAC,IAAI,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;gBACrD,CAAC,EAAE,SAAS,CAAC,CAAC;YAChB,CAAC,CAAC;SACH,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@fuul/mcp-server",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Fuul MCP server for program management via MCP-compatible clients",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"Fuul",
|
|
7
|
+
"Fuul Protocol",
|
|
8
|
+
"MCP",
|
|
9
|
+
"Model Context Protocol",
|
|
10
|
+
"claude-code",
|
|
11
|
+
"claude-plugin"
|
|
12
|
+
],
|
|
13
|
+
"author": "Fuul Team",
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"type": "module",
|
|
16
|
+
"engines": {
|
|
17
|
+
"node": ">=18"
|
|
18
|
+
},
|
|
19
|
+
"main": "./dist/index.js",
|
|
20
|
+
"types": "./dist/index.d.ts",
|
|
21
|
+
"files": [
|
|
22
|
+
"dist"
|
|
23
|
+
],
|
|
24
|
+
"bin": {
|
|
25
|
+
"fuul-mcp": "./dist/cli.js",
|
|
26
|
+
"fuul-mcp-server": "./dist/index.js"
|
|
27
|
+
},
|
|
28
|
+
"scripts": {
|
|
29
|
+
"build": "tsc",
|
|
30
|
+
"start": "node dist/index.js",
|
|
31
|
+
"cli": "tsx src/cli.ts",
|
|
32
|
+
"dev": "tsx src/index.ts",
|
|
33
|
+
"lint": "eslint src",
|
|
34
|
+
"lint:fix": "eslint src --fix",
|
|
35
|
+
"test": "vitest run",
|
|
36
|
+
"test:watch": "vitest",
|
|
37
|
+
"format": "prettier --write 'src/**/*.ts' '*.json' 'eslint.config.js' --config ./.prettierrc"
|
|
38
|
+
},
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
41
|
+
"axios": "^1.7.9",
|
|
42
|
+
"dotenv": "^16.4.7",
|
|
43
|
+
"open": "^10.1.0",
|
|
44
|
+
"zod": "^3.24.0"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@eslint/js": "^9.39.4",
|
|
48
|
+
"@types/node": "^22.10.0",
|
|
49
|
+
"eslint": "^9.39.4",
|
|
50
|
+
"eslint-config-prettier": "^9.1.2",
|
|
51
|
+
"eslint-plugin-prettier": "^5.5.5",
|
|
52
|
+
"eslint-plugin-simple-import-sort": "^12.1.1",
|
|
53
|
+
"prettier": "^3.4.2",
|
|
54
|
+
"tsx": "^4.19.0",
|
|
55
|
+
"typescript": "^5.7.0",
|
|
56
|
+
"typescript-eslint": "^8.58.0",
|
|
57
|
+
"vitest": "^3.0.0"
|
|
58
|
+
},
|
|
59
|
+
"publishConfig": {
|
|
60
|
+
"access": "public"
|
|
61
|
+
},
|
|
62
|
+
"overrides": {
|
|
63
|
+
"minimatch": ">=10.2.4"
|
|
64
|
+
},
|
|
65
|
+
"repository": {
|
|
66
|
+
"type": "git",
|
|
67
|
+
"url": "git+https://github.com/kuyen-labs/mcp_server.git"
|
|
68
|
+
},
|
|
69
|
+
"bugs": {
|
|
70
|
+
"url": "https://github.com/kuyen-labs/mcp_server/issues"
|
|
71
|
+
},
|
|
72
|
+
"homepage": "https://github.com/kuyen-labs/mcp_server#readme"
|
|
73
|
+
}
|