@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
package/dist/index.js
ADDED
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
|
+
import { affiliatePortalStatsPath, projectAffiliatesBreakdownPath, projectAffiliateTotalStatsPath, } from './affiliate-portal/affiliate-portal-queries.js';
|
|
5
|
+
import { assertWriteConfirmedOrDryRun, WriteNotConfirmedError } from './agent/write-confirmation.js';
|
|
6
|
+
import { OAuthClient } from './auth/oauth-client.js';
|
|
7
|
+
import { TokenStore } from './auth/token-store.js';
|
|
8
|
+
import { loadEnv } from './config/env.js';
|
|
9
|
+
import { ApiRequestError, FuulApiClient, NotLoggedInError } from './http/fuul-api-client.js';
|
|
10
|
+
import { MetadataService } from './metadata/metadata-service.js';
|
|
11
|
+
import { runPayoutBatchAction } from './payouts/payout-batch-handlers.js';
|
|
12
|
+
import { APPROVE_PAYOUTS_DESCRIPTION, GET_AFFILIATE_PORTAL_STATS_DESCRIPTION, GET_INCENTIVE_DESCRIPTION, GET_PROJECT_AFFILIATE_TOTAL_STATS_DESCRIPTION, GET_PROJECT_AFFILIATES_BREAKDOWN_DESCRIPTION, GET_PROJECT_DESCRIPTION, GET_TRIGGER_DESCRIPTION, LIST_CHAINS_DESCRIPTION, LIST_INCENTIVES_DESCRIPTION, LIST_PAYOUT_SCHEMAS_DESCRIPTION, LIST_PAYOUTS_PENDING_APPROVAL_DESCRIPTION, LIST_PROJECTS_DESCRIPTION, LIST_REWARDS_PAYOUTS_DESCRIPTION, LIST_TRIGGER_TYPES_DESCRIPTION, PING_DESCRIPTION, REJECT_PAYOUTS_DESCRIPTION, UPDATE_AUDIENCE_DESCRIPTION, UPDATE_PAYOUT_TERM_DESCRIPTION, UPDATE_PROJECT_TIER_DESCRIPTION, UPDATE_TRIGGER_DESCRIPTION, WHOAMI_DESCRIPTION, } from './tools/tool-descriptions.js';
|
|
13
|
+
import { getAffiliatePortalStatsSchema, getIncentiveInputSchema, getProjectAffiliatesBreakdownSchema, getProjectAffiliateTotalStatsSchema, getTriggerInputSchema, listPayoutsPendingApprovalSchema, listProjectsInputSchema, listRewardsPayoutsSchema, payoutBatchActionInputSchema, projectIdParamSchema, updateAudienceFieldsSchema, updateAudienceInputSchema, updatePayoutTermInputSchema, updateProjectTierFieldsSchema, updateProjectTierInputSchema, updateTriggerFieldsSchema, updateTriggerInputSchema, } from './tools/tool-schemas.js';
|
|
14
|
+
import { compactQuery } from './util/compact-query.js';
|
|
15
|
+
import { ToolTimeoutError, withTimeout } from './util/with-timeout.js';
|
|
16
|
+
function toolErrorPayload(e, httpDetail = 'Request failed') {
|
|
17
|
+
const message = e instanceof ToolTimeoutError
|
|
18
|
+
? `${e.message} Increase FUUL_MCP_TOOL_TIMEOUT_MS if the API is slow.`
|
|
19
|
+
: e instanceof NotLoggedInError
|
|
20
|
+
? e.message
|
|
21
|
+
: e instanceof WriteNotConfirmedError
|
|
22
|
+
? e.message
|
|
23
|
+
: e instanceof ApiRequestError
|
|
24
|
+
? e.status === 401
|
|
25
|
+
? `${httpDetail} (HTTP ${e.status}). Run \`fuul-mcp login\` if you are not authenticated.`
|
|
26
|
+
: e.message
|
|
27
|
+
: e instanceof Error
|
|
28
|
+
? e.message
|
|
29
|
+
: String(e);
|
|
30
|
+
return { content: [{ type: 'text', text: message }], isError: true };
|
|
31
|
+
}
|
|
32
|
+
async function main() {
|
|
33
|
+
const env = loadEnv();
|
|
34
|
+
const store = new TokenStore();
|
|
35
|
+
const oauth = new OAuthClient(env, store);
|
|
36
|
+
const api = new FuulApiClient(env, store, oauth);
|
|
37
|
+
const metadata = new MetadataService(api);
|
|
38
|
+
const toolTimeoutMs = env.FUUL_MCP_TOOL_TIMEOUT_MS;
|
|
39
|
+
const server = new McpServer({
|
|
40
|
+
name: '@fuul/mcp-server',
|
|
41
|
+
version: '0.1.0',
|
|
42
|
+
});
|
|
43
|
+
server.tool('ping', PING_DESCRIPTION, {}, async () => ({
|
|
44
|
+
content: [{ type: 'text', text: 'pong' }],
|
|
45
|
+
}));
|
|
46
|
+
server.tool('whoami', WHOAMI_DESCRIPTION, {}, async () => {
|
|
47
|
+
try {
|
|
48
|
+
const user = await withTimeout(api.getAuthUser(), toolTimeoutMs, 'whoami');
|
|
49
|
+
return { content: [{ type: 'text', text: JSON.stringify(user, null, 2) }] };
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
return toolErrorPayload(e, 'Failed to load user');
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
server.tool('list_chains', LIST_CHAINS_DESCRIPTION, {}, async () => {
|
|
56
|
+
try {
|
|
57
|
+
const data = await withTimeout(metadata.getChains(), toolTimeoutMs, 'list_chains');
|
|
58
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
59
|
+
}
|
|
60
|
+
catch (e) {
|
|
61
|
+
return toolErrorPayload(e);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
server.tool('list_trigger_types', LIST_TRIGGER_TYPES_DESCRIPTION, {}, async () => {
|
|
65
|
+
try {
|
|
66
|
+
const data = await withTimeout(metadata.getTriggerTypes(), toolTimeoutMs, 'list_trigger_types');
|
|
67
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
68
|
+
}
|
|
69
|
+
catch (e) {
|
|
70
|
+
return toolErrorPayload(e);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
server.tool('list_payout_schemas', LIST_PAYOUT_SCHEMAS_DESCRIPTION, {}, async () => {
|
|
74
|
+
try {
|
|
75
|
+
const data = await withTimeout(metadata.getPayoutSchemas(), toolTimeoutMs, 'list_payout_schemas');
|
|
76
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
77
|
+
}
|
|
78
|
+
catch (e) {
|
|
79
|
+
return toolErrorPayload(e);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
server.tool('list_projects', LIST_PROJECTS_DESCRIPTION, listProjectsInputSchema.shape, async (args) => {
|
|
83
|
+
try {
|
|
84
|
+
const parsed = listProjectsInputSchema.parse(args);
|
|
85
|
+
const query = {};
|
|
86
|
+
if (parsed.page != null) {
|
|
87
|
+
query.page = parsed.page;
|
|
88
|
+
}
|
|
89
|
+
if (parsed.query != null) {
|
|
90
|
+
query.query = parsed.query;
|
|
91
|
+
}
|
|
92
|
+
const data = await withTimeout(api.getJson('/api/v1/projects', { query }), toolTimeoutMs, 'list_projects');
|
|
93
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
94
|
+
}
|
|
95
|
+
catch (e) {
|
|
96
|
+
return toolErrorPayload(e, 'Failed to list projects');
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
server.tool('get_project', GET_PROJECT_DESCRIPTION, projectIdParamSchema.shape, async (args) => {
|
|
100
|
+
try {
|
|
101
|
+
const { project_id } = projectIdParamSchema.parse(args);
|
|
102
|
+
const data = await withTimeout(api.getJson(`/api/v1/projects/${project_id}`), toolTimeoutMs, 'get_project');
|
|
103
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
104
|
+
}
|
|
105
|
+
catch (e) {
|
|
106
|
+
return toolErrorPayload(e, 'Failed to load project');
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
server.tool('list_incentives', LIST_INCENTIVES_DESCRIPTION, projectIdParamSchema.shape, async (args) => {
|
|
110
|
+
try {
|
|
111
|
+
const { project_id } = projectIdParamSchema.parse(args);
|
|
112
|
+
const data = await withTimeout(api.getJson(`/api/v1/projects/${project_id}/incentives`), toolTimeoutMs, 'list_incentives');
|
|
113
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
114
|
+
}
|
|
115
|
+
catch (e) {
|
|
116
|
+
return toolErrorPayload(e, 'Failed to list incentives');
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
server.tool('get_incentive', GET_INCENTIVE_DESCRIPTION, getIncentiveInputSchema.shape, async (args) => {
|
|
120
|
+
try {
|
|
121
|
+
const { project_id, conversion_id } = getIncentiveInputSchema.parse(args);
|
|
122
|
+
const data = await withTimeout(api.getJson(`/api/v1/projects/${project_id}/incentives/${conversion_id}`), toolTimeoutMs, 'get_incentive');
|
|
123
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
124
|
+
}
|
|
125
|
+
catch (e) {
|
|
126
|
+
return toolErrorPayload(e, 'Failed to load incentive');
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
server.tool('get_trigger', GET_TRIGGER_DESCRIPTION, getTriggerInputSchema.shape, async (args) => {
|
|
130
|
+
try {
|
|
131
|
+
const { project_id, trigger_id } = getTriggerInputSchema.parse(args);
|
|
132
|
+
const data = await withTimeout(api.getJson(`/api/v1/projects/${project_id}/triggers/${trigger_id}`), toolTimeoutMs, 'get_trigger');
|
|
133
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
134
|
+
}
|
|
135
|
+
catch (e) {
|
|
136
|
+
return toolErrorPayload(e, 'Failed to load trigger');
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
server.tool('get_affiliate_portal_stats', GET_AFFILIATE_PORTAL_STATS_DESCRIPTION, getAffiliatePortalStatsSchema.shape, async (args) => {
|
|
140
|
+
try {
|
|
141
|
+
const parsed = getAffiliatePortalStatsSchema.parse(args);
|
|
142
|
+
const data = await withTimeout(api.getJson(affiliatePortalStatsPath(parsed)), toolTimeoutMs, 'get_affiliate_portal_stats');
|
|
143
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
144
|
+
}
|
|
145
|
+
catch (e) {
|
|
146
|
+
return toolErrorPayload(e, 'Failed to load affiliate portal stats');
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
server.tool('get_project_affiliate_total_stats', GET_PROJECT_AFFILIATE_TOTAL_STATS_DESCRIPTION, getProjectAffiliateTotalStatsSchema.shape, async (args) => {
|
|
150
|
+
try {
|
|
151
|
+
const parsed = getProjectAffiliateTotalStatsSchema.parse(args);
|
|
152
|
+
const data = await withTimeout(api.getJson(projectAffiliateTotalStatsPath(parsed)), toolTimeoutMs, 'get_project_affiliate_total_stats');
|
|
153
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
154
|
+
}
|
|
155
|
+
catch (e) {
|
|
156
|
+
return toolErrorPayload(e, 'Failed to load project affiliate total stats');
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
server.tool('get_project_affiliates_breakdown', GET_PROJECT_AFFILIATES_BREAKDOWN_DESCRIPTION, getProjectAffiliatesBreakdownSchema.shape, async (args) => {
|
|
160
|
+
try {
|
|
161
|
+
const parsed = getProjectAffiliatesBreakdownSchema.parse(args);
|
|
162
|
+
const data = await withTimeout(api.getJson(projectAffiliatesBreakdownPath(parsed)), toolTimeoutMs, 'get_project_affiliates_breakdown');
|
|
163
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
164
|
+
}
|
|
165
|
+
catch (e) {
|
|
166
|
+
return toolErrorPayload(e, 'Failed to load project affiliates breakdown');
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
server.tool('list_payouts_pending_approval', LIST_PAYOUTS_PENDING_APPROVAL_DESCRIPTION, listPayoutsPendingApprovalSchema.shape, async (args) => {
|
|
170
|
+
try {
|
|
171
|
+
const parsed = listPayoutsPendingApprovalSchema.parse(args);
|
|
172
|
+
const query = compactQuery({ page: parsed.page, page_size: parsed.page_size });
|
|
173
|
+
const data = await withTimeout(api.getJson(`/api/v1/projects/${parsed.project_id}/payouts/pending-approval`, { query }), toolTimeoutMs, 'list_payouts_pending_approval');
|
|
174
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
175
|
+
}
|
|
176
|
+
catch (e) {
|
|
177
|
+
return toolErrorPayload(e, 'Failed to list pending approval payouts');
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
server.tool('list_rewards_payouts', LIST_REWARDS_PAYOUTS_DESCRIPTION, listRewardsPayoutsSchema.shape, async (args) => {
|
|
181
|
+
try {
|
|
182
|
+
const parsed = listRewardsPayoutsSchema.parse(args);
|
|
183
|
+
const query = compactQuery({
|
|
184
|
+
page: parsed.page,
|
|
185
|
+
page_size: parsed.page_size,
|
|
186
|
+
status: parsed.status,
|
|
187
|
+
from_date: parsed.from_date,
|
|
188
|
+
to_date: parsed.to_date,
|
|
189
|
+
});
|
|
190
|
+
const data = await withTimeout(api.getJson(`/api/v1/projects/${parsed.project_id}/payouts/rewards-payouts`, { query }), toolTimeoutMs, 'list_rewards_payouts');
|
|
191
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
192
|
+
}
|
|
193
|
+
catch (e) {
|
|
194
|
+
return toolErrorPayload(e, 'Failed to list rewards payouts');
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
server.tool('approve_payouts', APPROVE_PAYOUTS_DESCRIPTION, payoutBatchActionInputSchema.shape, async (args) => {
|
|
198
|
+
try {
|
|
199
|
+
const parsed = payoutBatchActionInputSchema.parse(args);
|
|
200
|
+
const data = await withTimeout(runPayoutBatchAction(api, parsed, 'approve'), toolTimeoutMs, 'approve_payouts');
|
|
201
|
+
return { content: [{ type: 'text', text: JSON.stringify(data ?? { ok: true }, null, 2) }] };
|
|
202
|
+
}
|
|
203
|
+
catch (e) {
|
|
204
|
+
return toolErrorPayload(e, 'Failed to approve payouts');
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
server.tool('reject_payouts', REJECT_PAYOUTS_DESCRIPTION, payoutBatchActionInputSchema.shape, async (args) => {
|
|
208
|
+
try {
|
|
209
|
+
const parsed = payoutBatchActionInputSchema.parse(args);
|
|
210
|
+
const data = await withTimeout(runPayoutBatchAction(api, parsed, 'reject'), toolTimeoutMs, 'reject_payouts');
|
|
211
|
+
return { content: [{ type: 'text', text: JSON.stringify(data ?? { ok: true }, null, 2) }] };
|
|
212
|
+
}
|
|
213
|
+
catch (e) {
|
|
214
|
+
return toolErrorPayload(e, 'Failed to reject payouts');
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
server.tool('update_payout_term', UPDATE_PAYOUT_TERM_DESCRIPTION, updatePayoutTermInputSchema.shape, async (args) => {
|
|
218
|
+
try {
|
|
219
|
+
const parsed = updatePayoutTermInputSchema.parse(args);
|
|
220
|
+
assertWriteConfirmedOrDryRun(parsed);
|
|
221
|
+
const path = `/api/v1/projects/${parsed.project_id}/conversions/${parsed.conversion_id}/payout_terms/${parsed.payout_term_id}`;
|
|
222
|
+
if (parsed.dry_run === true) {
|
|
223
|
+
return {
|
|
224
|
+
content: [
|
|
225
|
+
{
|
|
226
|
+
type: 'text',
|
|
227
|
+
text: JSON.stringify({ dry_run: true, would_patch: path, body: parsed.payout_term }, null, 2),
|
|
228
|
+
},
|
|
229
|
+
],
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
const data = await withTimeout(api.patchJson(path, parsed.payout_term), toolTimeoutMs, 'update_payout_term');
|
|
233
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
234
|
+
}
|
|
235
|
+
catch (e) {
|
|
236
|
+
return toolErrorPayload(e, 'Failed to update payout term');
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
server.tool('update_audience', UPDATE_AUDIENCE_DESCRIPTION, updateAudienceFieldsSchema.shape, async (args) => {
|
|
240
|
+
try {
|
|
241
|
+
const parsed = updateAudienceInputSchema.parse(args);
|
|
242
|
+
assertWriteConfirmedOrDryRun(parsed);
|
|
243
|
+
const path = `/api/v1/projects/${parsed.project_id}/audiences/${parsed.audience_id}`;
|
|
244
|
+
const body = { name: parsed.name };
|
|
245
|
+
if (parsed.conditions !== undefined) {
|
|
246
|
+
body.conditions = parsed.conditions;
|
|
247
|
+
}
|
|
248
|
+
if (parsed.condition_match_mode !== undefined) {
|
|
249
|
+
body.condition_match_mode = parsed.condition_match_mode;
|
|
250
|
+
}
|
|
251
|
+
if (parsed.contractId !== undefined) {
|
|
252
|
+
body.contractId = parsed.contractId;
|
|
253
|
+
}
|
|
254
|
+
if (parsed.dry_run === true) {
|
|
255
|
+
return {
|
|
256
|
+
content: [{ type: 'text', text: JSON.stringify({ dry_run: true, would_patch: path, body }, null, 2) }],
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
const data = await withTimeout(api.patchJson(path, body), toolTimeoutMs, 'update_audience');
|
|
260
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
261
|
+
}
|
|
262
|
+
catch (e) {
|
|
263
|
+
return toolErrorPayload(e, 'Failed to update audience');
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
server.tool('update_trigger', UPDATE_TRIGGER_DESCRIPTION, updateTriggerFieldsSchema.shape, async (args) => {
|
|
267
|
+
try {
|
|
268
|
+
const parsed = updateTriggerInputSchema.parse(args);
|
|
269
|
+
assertWriteConfirmedOrDryRun(parsed);
|
|
270
|
+
const path = `/api/v1/projects/${parsed.project_id}/triggers/${parsed.trigger_id}`;
|
|
271
|
+
const body = {};
|
|
272
|
+
if (parsed.name !== undefined) {
|
|
273
|
+
body.name = parsed.name;
|
|
274
|
+
}
|
|
275
|
+
if (parsed.description !== undefined) {
|
|
276
|
+
body.description = parsed.description;
|
|
277
|
+
}
|
|
278
|
+
if (parsed.event_type !== undefined) {
|
|
279
|
+
body.event_type = parsed.event_type;
|
|
280
|
+
}
|
|
281
|
+
if (parsed.condition_expression !== undefined) {
|
|
282
|
+
body.condition_expression = parsed.condition_expression;
|
|
283
|
+
}
|
|
284
|
+
if (parsed.amount_expression !== undefined) {
|
|
285
|
+
body.amount_expression = parsed.amount_expression;
|
|
286
|
+
}
|
|
287
|
+
if (parsed.volume_expression !== undefined) {
|
|
288
|
+
body.volume_expression = parsed.volume_expression;
|
|
289
|
+
}
|
|
290
|
+
if (parsed.revenue_expression !== undefined) {
|
|
291
|
+
body.revenue_expression = parsed.revenue_expression;
|
|
292
|
+
}
|
|
293
|
+
if (parsed.currency_expression !== undefined) {
|
|
294
|
+
body.currency_expression = parsed.currency_expression;
|
|
295
|
+
}
|
|
296
|
+
if (parsed.volume_currency_expression !== undefined) {
|
|
297
|
+
body.volume_currency_expression = parsed.volume_currency_expression;
|
|
298
|
+
}
|
|
299
|
+
if (parsed.revenue_currency_expression !== undefined) {
|
|
300
|
+
body.revenue_currency_expression = parsed.revenue_currency_expression;
|
|
301
|
+
}
|
|
302
|
+
if (parsed.end_user_identifier_property !== undefined) {
|
|
303
|
+
body.end_user_identifier_property = parsed.end_user_identifier_property;
|
|
304
|
+
}
|
|
305
|
+
if (parsed.end_user_identifier_expression !== undefined) {
|
|
306
|
+
body.end_user_identifier_expression = parsed.end_user_identifier_expression;
|
|
307
|
+
}
|
|
308
|
+
if (parsed.payable !== undefined) {
|
|
309
|
+
body.payable = parsed.payable;
|
|
310
|
+
}
|
|
311
|
+
if (parsed.ref !== undefined) {
|
|
312
|
+
body.ref = parsed.ref;
|
|
313
|
+
}
|
|
314
|
+
if (parsed.contract_ids !== undefined) {
|
|
315
|
+
body.contract_ids = parsed.contract_ids;
|
|
316
|
+
}
|
|
317
|
+
if (parsed.dry_run === true) {
|
|
318
|
+
return {
|
|
319
|
+
content: [{ type: 'text', text: JSON.stringify({ dry_run: true, would_patch: path, body }, null, 2) }],
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
const data = await withTimeout(api.patchJson(path, body), toolTimeoutMs, 'update_trigger');
|
|
323
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
324
|
+
}
|
|
325
|
+
catch (e) {
|
|
326
|
+
return toolErrorPayload(e, 'Failed to update trigger');
|
|
327
|
+
}
|
|
328
|
+
});
|
|
329
|
+
server.tool('update_project_tier', UPDATE_PROJECT_TIER_DESCRIPTION, updateProjectTierFieldsSchema.shape, async (args) => {
|
|
330
|
+
try {
|
|
331
|
+
const parsed = updateProjectTierInputSchema.parse(args);
|
|
332
|
+
assertWriteConfirmedOrDryRun(parsed);
|
|
333
|
+
const path = `/api/v1/projects/${parsed.project_id}/tiers/${parsed.tier_id}`;
|
|
334
|
+
const body = {};
|
|
335
|
+
if (parsed.name !== undefined) {
|
|
336
|
+
body.name = parsed.name;
|
|
337
|
+
}
|
|
338
|
+
if (parsed.description !== undefined) {
|
|
339
|
+
body.description = parsed.description;
|
|
340
|
+
}
|
|
341
|
+
if (parsed.rank !== undefined) {
|
|
342
|
+
body.rank = parsed.rank;
|
|
343
|
+
}
|
|
344
|
+
if (parsed.audience_id !== undefined) {
|
|
345
|
+
body.audience_id = parsed.audience_id;
|
|
346
|
+
}
|
|
347
|
+
if (parsed.dry_run === true) {
|
|
348
|
+
return {
|
|
349
|
+
content: [{ type: 'text', text: JSON.stringify({ dry_run: true, would_patch: path, body }, null, 2) }],
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
const data = await withTimeout(api.patchJson(path, body), toolTimeoutMs, 'update_project_tier');
|
|
353
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
354
|
+
}
|
|
355
|
+
catch (e) {
|
|
356
|
+
return toolErrorPayload(e, 'Failed to update project tier');
|
|
357
|
+
}
|
|
358
|
+
});
|
|
359
|
+
const transport = new StdioServerTransport();
|
|
360
|
+
await server.connect(transport);
|
|
361
|
+
}
|
|
362
|
+
main().catch((err) => {
|
|
363
|
+
console.error(err);
|
|
364
|
+
process.exit(1);
|
|
365
|
+
});
|
|
366
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EACL,wBAAwB,EACxB,8BAA8B,EAC9B,8BAA8B,GAC/B,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACrG,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EACL,2BAA2B,EAC3B,sCAAsC,EACtC,yBAAyB,EACzB,6CAA6C,EAC7C,4CAA4C,EAC5C,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,EAC3B,+BAA+B,EAC/B,yCAAyC,EACzC,yBAAyB,EACzB,gCAAgC,EAChC,8BAA8B,EAC9B,gBAAgB,EAChB,0BAA0B,EAC1B,2BAA2B,EAC3B,8BAA8B,EAC9B,+BAA+B,EAC/B,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,6BAA6B,EAC7B,uBAAuB,EACvB,mCAAmC,EACnC,mCAAmC,EACnC,qBAAqB,EACrB,gCAAgC,EAChC,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC5B,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,EAC3B,6BAA6B,EAC7B,4BAA4B,EAC5B,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAEvE,SAAS,gBAAgB,CAAC,CAAU,EAAE,UAAU,GAAG,gBAAgB;IACjE,MAAM,OAAO,GACX,CAAC,YAAY,gBAAgB;QAC3B,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,wDAAwD;QACtE,CAAC,CAAC,CAAC,YAAY,gBAAgB;YAC7B,CAAC,CAAC,CAAC,CAAC,OAAO;YACX,CAAC,CAAC,CAAC,YAAY,sBAAsB;gBACnC,CAAC,CAAC,CAAC,CAAC,OAAO;gBACX,CAAC,CAAC,CAAC,YAAY,eAAe;oBAC1B,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG;wBAChB,CAAC,CAAC,GAAG,UAAU,UAAU,CAAC,CAAC,MAAM,yDAAyD;wBAC1F,CAAC,CAAC,CAAC,CAAC,OAAO;oBACb,CAAC,CAAC,CAAC,YAAY,KAAK;wBAClB,CAAC,CAAC,CAAC,CAAC,OAAO;wBACX,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACvE,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,MAAM,KAAK,GAAG,IAAI,UAAU,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,aAAa,GAAG,GAAG,CAAC,wBAAwB,CAAC;IAEnD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QACrD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;KAC1C,CAAC,CAAC,CAAC;IAEJ,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE;QACvD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;YAC3E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,gBAAgB,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;QACpD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,uBAAuB,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE;QACjE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;YACnF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,8BAA8B,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE;QAC/E,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,aAAa,EAAE,oBAAoB,CAAC,CAAC;YAChG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,+BAA+B,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE;QACjF,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,aAAa,EAAE,qBAAqB,CAAC,CAAC;YAClG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,yBAAyB,EAAE,uBAAuB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACpG,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,KAAK,GAA4B,EAAE,CAAC;YAC1C,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YAC3B,CAAC;YACD,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;gBACzB,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC7B,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;YAC3G,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,gBAAgB,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,uBAAuB,EAAE,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC7F,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,UAAU,EAAE,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;YAC5G,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,gBAAgB,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,2BAA2B,EAAE,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACrG,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,UAAU,aAAa,CAAC,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC;YAC3H,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,gBAAgB,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,yBAAyB,EAAE,uBAAuB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACpG,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1E,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,UAAU,eAAe,aAAa,EAAE,CAAC,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;YAC1I,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,gBAAgB,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,uBAAuB,EAAE,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC9F,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,UAAU,aAAa,UAAU,EAAE,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;YACnI,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,gBAAgB,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,sCAAsC,EAAE,6BAA6B,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACpI,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,6BAA6B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,4BAA4B,CAAC,CAAC;YAC3H,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,gBAAgB,CAAC,CAAC,EAAE,uCAAuC,CAAC,CAAC;QACtE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CACT,mCAAmC,EACnC,6CAA6C,EAC7C,mCAAmC,CAAC,KAAK,EACzC,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,mCAAmC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,mCAAmC,CAAC,CAAC;YACxI,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,gBAAgB,CAAC,CAAC,EAAE,8CAA8C,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,kCAAkC,EAClC,4CAA4C,EAC5C,mCAAmC,CAAC,KAAK,EACzC,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,mCAAmC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,kCAAkC,CAAC,CAAC;YACvI,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,gBAAgB,CAAC,CAAC,EAAE,6CAA6C,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,yCAAyC,EAAE,gCAAgC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC7I,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,gCAAgC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5D,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YAC/E,MAAM,IAAI,GAAG,MAAM,WAAW,CAC5B,GAAG,CAAC,OAAO,CAAC,oBAAoB,MAAM,CAAC,UAAU,2BAA2B,EAAE,EAAE,KAAK,EAAE,CAAC,EACxF,aAAa,EACb,+BAA+B,CAChC,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,gBAAgB,CAAC,CAAC,EAAE,yCAAyC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,gCAAgC,EAAE,wBAAwB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACnH,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,KAAK,GAAG,YAAY,CAAC;gBACzB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAC5B,GAAG,CAAC,OAAO,CAAC,oBAAoB,MAAM,CAAC,UAAU,0BAA0B,EAAE,EAAE,KAAK,EAAE,CAAC,EACvF,aAAa,EACb,sBAAsB,CACvB,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,gBAAgB,CAAC,CAAC,EAAE,gCAAgC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,2BAA2B,EAAE,4BAA4B,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC7G,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,4BAA4B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC;YAC/G,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9F,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,gBAAgB,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,0BAA0B,EAAE,4BAA4B,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC3G,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,4BAA4B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;YAC7G,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9F,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,gBAAgB,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,8BAA8B,EAAE,2BAA2B,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAClH,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,2BAA2B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvD,4BAA4B,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,oBAAoB,MAAM,CAAC,UAAU,gBAAgB,MAAM,CAAC,aAAa,iBAAiB,MAAM,CAAC,cAAc,EAAE,CAAC;YAC/H,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC5B,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;yBAC9F;qBACF;iBACF,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,aAAa,EAAE,oBAAoB,CAAC,CAAC;YAC7G,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,gBAAgB,CAAC,CAAC,EAAE,8BAA8B,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,2BAA2B,EAAE,0BAA0B,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC3G,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrD,4BAA4B,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,oBAAoB,MAAM,CAAC,UAAU,cAAc,MAAM,CAAC,WAAW,EAAE,CAAC;YACrF,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5D,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACpC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;YACtC,CAAC;YACD,IAAI,MAAM,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;gBAC9C,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;YAC1D,CAAC;YACD,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACpC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;YACtC,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC5B,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBACvG,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC;YAC5F,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,gBAAgB,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,0BAA0B,EAAE,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACxG,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpD,4BAA4B,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,oBAAoB,MAAM,CAAC,UAAU,aAAa,MAAM,CAAC,UAAU,EAAE,CAAC;YACnF,MAAM,IAAI,GAA4B,EAAE,CAAC;YACzC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC9B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YAC1B,CAAC;YACD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACrC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;YACxC,CAAC;YACD,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACpC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;YACtC,CAAC;YACD,IAAI,MAAM,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;gBAC9C,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;YAC1D,CAAC;YACD,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;gBAC3C,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;YACpD,CAAC;YACD,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;gBAC3C,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;YACpD,CAAC;YACD,IAAI,MAAM,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;gBAC5C,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;YACtD,CAAC;YACD,IAAI,MAAM,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;gBAC7C,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;YACxD,CAAC;YACD,IAAI,MAAM,CAAC,0BAA0B,KAAK,SAAS,EAAE,CAAC;gBACpD,IAAI,CAAC,0BAA0B,GAAG,MAAM,CAAC,0BAA0B,CAAC;YACtE,CAAC;YACD,IAAI,MAAM,CAAC,2BAA2B,KAAK,SAAS,EAAE,CAAC;gBACrD,IAAI,CAAC,2BAA2B,GAAG,MAAM,CAAC,2BAA2B,CAAC;YACxE,CAAC;YACD,IAAI,MAAM,CAAC,4BAA4B,KAAK,SAAS,EAAE,CAAC;gBACtD,IAAI,CAAC,4BAA4B,GAAG,MAAM,CAAC,4BAA4B,CAAC;YAC1E,CAAC;YACD,IAAI,MAAM,CAAC,8BAA8B,KAAK,SAAS,EAAE,CAAC;gBACxD,IAAI,CAAC,8BAA8B,GAAG,MAAM,CAAC,8BAA8B,CAAC;YAC9E,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACjC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAChC,CAAC;YACD,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;gBAC7B,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;YACxB,CAAC;YACD,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;gBACtC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;YAC1C,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC5B,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBACvG,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;YAC3F,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,gBAAgB,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,+BAA+B,EAAE,6BAA6B,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtH,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,4BAA4B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACxD,4BAA4B,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,oBAAoB,MAAM,CAAC,UAAU,UAAU,MAAM,CAAC,OAAO,EAAE,CAAC;YAC7E,MAAM,IAAI,GAA4B,EAAE,CAAC;YACzC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC9B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YAC1B,CAAC;YACD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACrC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;YACxC,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC9B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YAC1B,CAAC;YACD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACrC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;YACxC,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC5B,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBACvG,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,aAAa,EAAE,qBAAqB,CAAC,CAAC;YAChG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,gBAAgB,CAAC,CAAC,EAAE,+BAA+B,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC5B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type FuulApiClient } from '../http/fuul-api-client.js';
|
|
2
|
+
export declare class MetadataService {
|
|
3
|
+
private readonly api;
|
|
4
|
+
private readonly cache;
|
|
5
|
+
constructor(api: FuulApiClient);
|
|
6
|
+
getChains(): Promise<unknown>;
|
|
7
|
+
getTriggerTypes(): Promise<unknown>;
|
|
8
|
+
getPayoutSchemas(): Promise<unknown>;
|
|
9
|
+
private getCached;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=metadata-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata-service.d.ts","sourceRoot":"","sources":["../../src/metadata/metadata-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAgBjF,qBAAa,eAAe;IAGd,OAAO,CAAC,QAAQ,CAAC,GAAG;IAFhC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;gBAE1B,GAAG,EAAE,aAAa;IAE/C,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAI7B,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAInC,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;YAItB,SAAS;CAuCxB"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { ApiRequestError } from '../http/fuul-api-client.js';
|
|
2
|
+
import { formatRateLimitMessage } from '../http/retry-after.js';
|
|
3
|
+
/** Aligns with server {@link PUBLIC_API_METADATA_CACHE_TTL_MS} when Cache-Control is absent. */
|
|
4
|
+
const DEFAULT_METADATA_FRESH_MS = 15 * 60 * 1000;
|
|
5
|
+
const PATH_CHAINS = '/public-api/v1/metadata/chains';
|
|
6
|
+
const PATH_TRIGGER_TYPES = '/public-api/v1/metadata/trigger-types';
|
|
7
|
+
const PATH_PAYOUT_SCHEMAS = '/public-api/v1/metadata/payout-schemas';
|
|
8
|
+
export class MetadataService {
|
|
9
|
+
api;
|
|
10
|
+
cache = new Map();
|
|
11
|
+
constructor(api) {
|
|
12
|
+
this.api = api;
|
|
13
|
+
}
|
|
14
|
+
getChains() {
|
|
15
|
+
return this.getCached(PATH_CHAINS);
|
|
16
|
+
}
|
|
17
|
+
getTriggerTypes() {
|
|
18
|
+
return this.getCached(PATH_TRIGGER_TYPES);
|
|
19
|
+
}
|
|
20
|
+
getPayoutSchemas() {
|
|
21
|
+
return this.getCached(PATH_PAYOUT_SCHEMAS);
|
|
22
|
+
}
|
|
23
|
+
async getCached(path) {
|
|
24
|
+
const now = Date.now();
|
|
25
|
+
const entry = this.cache.get(path);
|
|
26
|
+
if (entry && now < entry.expiresAt) {
|
|
27
|
+
return entry.data;
|
|
28
|
+
}
|
|
29
|
+
const conditionalHeaders = {};
|
|
30
|
+
if (entry?.etag) {
|
|
31
|
+
conditionalHeaders['If-None-Match'] = entry.etag;
|
|
32
|
+
}
|
|
33
|
+
const res = await this.api.getAuthorized(path, Object.keys(conditionalHeaders).length ? conditionalHeaders : undefined);
|
|
34
|
+
if (res.status === 304) {
|
|
35
|
+
if (!entry) {
|
|
36
|
+
throw new ApiRequestError('Unexpected HTTP 304 without local cache', 304);
|
|
37
|
+
}
|
|
38
|
+
const ttl = parseMaxAgeMs(res.cacheControl) ?? DEFAULT_METADATA_FRESH_MS;
|
|
39
|
+
this.cache.set(path, { ...entry, expiresAt: now + ttl });
|
|
40
|
+
return entry.data;
|
|
41
|
+
}
|
|
42
|
+
if (res.status !== 200) {
|
|
43
|
+
if (res.status === 429) {
|
|
44
|
+
throw new ApiRequestError(formatRateLimitMessage(res.retryAfterSeconds), 429, res.data, res.retryAfterSeconds);
|
|
45
|
+
}
|
|
46
|
+
throw new ApiRequestError(`Metadata request failed (HTTP ${res.status})`, res.status, res.data);
|
|
47
|
+
}
|
|
48
|
+
const ttl = parseMaxAgeMs(res.cacheControl) ?? DEFAULT_METADATA_FRESH_MS;
|
|
49
|
+
this.cache.set(path, {
|
|
50
|
+
data: res.data,
|
|
51
|
+
etag: res.etag,
|
|
52
|
+
expiresAt: now + ttl,
|
|
53
|
+
});
|
|
54
|
+
return res.data;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function parseMaxAgeMs(cacheControl) {
|
|
58
|
+
if (!cacheControl) {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
const m = /max-age=(\d+)/i.exec(cacheControl);
|
|
62
|
+
if (!m) {
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
const sec = Number(m[1]);
|
|
66
|
+
if (!Number.isFinite(sec) || sec < 0) {
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
return sec * 1000;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=metadata-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata-service.js","sourceRoot":"","sources":["../../src/metadata/metadata-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { FuulApiClient } from '../http/fuul-api-client.js';
|
|
2
|
+
import type { PayoutBatchActionInput } from '../tools/tool-schemas.js';
|
|
3
|
+
export declare function runPayoutBatchAction(api: FuulApiClient, input: PayoutBatchActionInput, action: 'approve' | 'reject'): Promise<unknown>;
|
|
4
|
+
//# sourceMappingURL=payout-batch-handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payout-batch-handlers.d.ts","sourceRoot":"","sources":["../../src/payouts/payout-batch-handlers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAsBvE,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAc5I"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { assertWriteConfirmedOrDryRun } from '../agent/write-confirmation.js';
|
|
2
|
+
function buildBody(input) {
|
|
3
|
+
const o = {};
|
|
4
|
+
if (input.payout_ids?.length) {
|
|
5
|
+
o.payout_ids = input.payout_ids;
|
|
6
|
+
}
|
|
7
|
+
if (input.from_date) {
|
|
8
|
+
o.from_date = input.from_date;
|
|
9
|
+
}
|
|
10
|
+
if (input.to_date) {
|
|
11
|
+
o.to_date = input.to_date;
|
|
12
|
+
}
|
|
13
|
+
if (input.user_address) {
|
|
14
|
+
o.user_address = input.user_address;
|
|
15
|
+
}
|
|
16
|
+
if (input.affiliate_address) {
|
|
17
|
+
o.affiliate_address = input.affiliate_address;
|
|
18
|
+
}
|
|
19
|
+
return o;
|
|
20
|
+
}
|
|
21
|
+
export async function runPayoutBatchAction(api, input, action) {
|
|
22
|
+
assertWriteConfirmedOrDryRun(input);
|
|
23
|
+
const body = buildBody(input);
|
|
24
|
+
const path = `/api/v1/projects/${input.project_id}/payouts/${action}`;
|
|
25
|
+
if (input.dry_run === true) {
|
|
26
|
+
return {
|
|
27
|
+
dry_run: true,
|
|
28
|
+
would_patch: `PATCH ${path}`,
|
|
29
|
+
body,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return api.patchJson(path, body);
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=payout-batch-handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payout-batch-handlers.js","sourceRoot":"","sources":["../../src/payouts/payout-batch-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAI9E,SAAS,SAAS,CAAC,KAA6B;IAC9C,MAAM,CAAC,GAA4B,EAAE,CAAC;IACtC,IAAI,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QAC7B,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IAClC,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAChC,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5B,CAAC;IACD,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QACvB,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IACtC,CAAC;IACD,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC5B,CAAC,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAChD,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,GAAkB,EAAE,KAA6B,EAAE,MAA4B;IACxH,4BAA4B,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,oBAAoB,KAAK,CAAC,UAAU,YAAY,MAAM,EAAE,CAAC;IAEtE,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC3B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,SAAS,IAAI,EAAE;YAC5B,IAAI;SACL,CAAC;IACJ,CAAC;IAED,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tool descriptions tuned for LLMs (parameters + short examples).
|
|
3
|
+
*/
|
|
4
|
+
export declare const PING_DESCRIPTION = "Health check: returns \"pong\" if the MCP process is running. No API calls. Example: invoke with empty input {}.";
|
|
5
|
+
export declare const WHOAMI_DESCRIPTION = "Returns the current Fuul dashboard user as JSON from GET /api/v1/auth/user. Requires prior CLI login (tokens in ~/.fuul/tokens.json). Example: {} after `npm run cli -- login`.";
|
|
6
|
+
export declare const LIST_CHAINS_DESCRIPTION = "Lists supported blockchain chains from GET /public-api/v1/metadata/chains. Uses server metadata (not a hardcoded catalog); responses are cached with ETag/Cache-Control. Params: none (pass {}). Pagination: not exposed by this tool until the API adds cursor/limit.";
|
|
7
|
+
export declare const LIST_TRIGGER_TYPES_DESCRIPTION = "Lists trigger type metadata from GET /public-api/v1/metadata/trigger-types (cached). Use ids from this response when building programs/triggers. Params: {}.";
|
|
8
|
+
export declare const LIST_PAYOUT_SCHEMAS_DESCRIPTION = "Lists payout schema metadata from GET /public-api/v1/metadata/payout-schemas (cached). Params: {}.";
|
|
9
|
+
export declare const LIST_PROJECTS_DESCRIPTION = "Lists dashboard projects for the current user: GET /api/v1/projects with optional ?page= (1-based) and ?query=. Example: {\"page\":1} or {\"query\":\"acme\"}.";
|
|
10
|
+
export declare const GET_PROJECT_DESCRIPTION = "Loads one project: GET /api/v1/projects/:projectId. Example: {\"project_id\":\"550e8400-e29b-41d4-a716-446655440000\"}.";
|
|
11
|
+
export declare const LIST_INCENTIVES_DESCRIPTION = "Lists draft incentives (conversions) for a project: GET /api/v1/projects/:projectId/incentives. Example: {\"project_id\":\"<uuid>\"}.";
|
|
12
|
+
export declare const GET_INCENTIVE_DESCRIPTION = "Gets one incentive: GET /api/v1/projects/:projectId/incentives/:conversionId. Example: {\"project_id\":\"<uuid>\",\"conversion_id\":\"<uuid>\"}.";
|
|
13
|
+
export declare const GET_TRIGGER_DESCRIPTION = "Gets trigger details (including triggerType for metadata checks): GET /api/v1/projects/:projectId/triggers/:triggerId. Example: {\"project_id\":\"<uuid>\",\"trigger_id\":\"<uuid>\"}.";
|
|
14
|
+
export declare const UPDATE_PAYOUT_TERM_DESCRIPTION: string;
|
|
15
|
+
export declare const UPDATE_PROJECT_TIER_DESCRIPTION: string;
|
|
16
|
+
export declare const UPDATE_AUDIENCE_DESCRIPTION: string;
|
|
17
|
+
export declare const UPDATE_TRIGGER_DESCRIPTION: string;
|
|
18
|
+
export declare const LIST_PAYOUTS_PENDING_APPROVAL_DESCRIPTION = "Lists payouts pending approval: GET /api/v1/projects/:projectId/payouts/pending-approval. Optional page, page_size. Example: {\"project_id\":\"<uuid>\",\"page\":1,\"page_size\":50}.";
|
|
19
|
+
export declare const LIST_REWARDS_PAYOUTS_DESCRIPTION = "Lists rewards payouts history: GET /api/v1/projects/:projectId/payouts/rewards-payouts. Optional page, page_size, status, from_date, to_date. Example: {\"project_id\":\"<uuid>\",\"page\":1}.";
|
|
20
|
+
export declare const APPROVE_PAYOUTS_DESCRIPTION = "Approves payouts: PATCH /api/v1/projects/:projectId/payouts/approve. Body: payout_ids OR date filters (server validates mutual exclusivity). dry_run then confirmed. Example dry_run: {\"project_id\":\"<uuid>\",\"payout_ids\":[\"<uuid>\"],\"dry_run\":true}.";
|
|
21
|
+
export declare const REJECT_PAYOUTS_DESCRIPTION = "Rejects payouts: PATCH /api/v1/projects/:projectId/payouts/reject. Same body rules as approve_payouts.";
|
|
22
|
+
export declare const GET_AFFILIATE_PORTAL_STATS_DESCRIPTION: string;
|
|
23
|
+
export declare const GET_PROJECT_AFFILIATE_TOTAL_STATS_DESCRIPTION: string;
|
|
24
|
+
export declare const GET_PROJECT_AFFILIATES_BREAKDOWN_DESCRIPTION: string;
|
|
25
|
+
//# sourceMappingURL=tool-descriptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-descriptions.d.ts","sourceRoot":"","sources":["../../src/tools/tool-descriptions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,gBAAgB,qHAAmH,CAAC;AAEjJ,eAAO,MAAM,kBAAkB,oLACoJ,CAAC;AAEpL,eAAO,MAAM,uBAAuB,2QACsO,CAAC;AAE3Q,eAAO,MAAM,8BAA8B,iKACqH,CAAC;AAEjK,eAAO,MAAM,+BAA+B,uGAAuG,CAAC;AAEpJ,eAAO,MAAM,yBAAyB,mKACsH,CAAC;AAE7J,eAAO,MAAM,uBAAuB,4HACmF,CAAC;AAExH,eAAO,MAAM,2BAA2B,0IAC6F,CAAC;AAEtI,eAAO,MAAM,yBAAyB,qJACsG,CAAC;AAE7I,eAAO,MAAM,uBAAuB,2LAC8I,CAAC;AAEnL,eAAO,MAAM,8BAA8B,QAGwF,CAAC;AAEpI,eAAO,MAAM,+BAA+B,QAEyF,CAAC;AAEtI,eAAO,MAAM,2BAA2B,QAEgF,CAAC;AAEzH,eAAO,MAAM,0BAA0B,QAEgE,CAAC;AAExG,eAAO,MAAM,yCAAyC,0LAC2H,CAAC;AAElL,eAAO,MAAM,gCAAgC,mMAC+I,CAAC;AAE7L,eAAO,MAAM,2BAA2B,oQACiN,CAAC;AAE1P,eAAO,MAAM,0BAA0B,2GAA2G,CAAC;AAInJ,eAAO,MAAM,sCAAsC,QAIlC,CAAC;AAElB,eAAO,MAAM,6CAA6C,QAIzC,CAAC;AAElB,eAAO,MAAM,4CAA4C,QAIxC,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tool descriptions tuned for LLMs (parameters + short examples).
|
|
3
|
+
*/
|
|
4
|
+
export const PING_DESCRIPTION = 'Health check: returns "pong" if the MCP process is running. No API calls. Example: invoke with empty input {}.';
|
|
5
|
+
export const WHOAMI_DESCRIPTION = 'Returns the current Fuul dashboard user as JSON from GET /api/v1/auth/user. Requires prior CLI login (tokens in ~/.fuul/tokens.json). Example: {} after `npm run cli -- login`.';
|
|
6
|
+
export const LIST_CHAINS_DESCRIPTION = 'Lists supported blockchain chains from GET /public-api/v1/metadata/chains. Uses server metadata (not a hardcoded catalog); responses are cached with ETag/Cache-Control. Params: none (pass {}). Pagination: not exposed by this tool until the API adds cursor/limit.';
|
|
7
|
+
export const LIST_TRIGGER_TYPES_DESCRIPTION = 'Lists trigger type metadata from GET /public-api/v1/metadata/trigger-types (cached). Use ids from this response when building programs/triggers. Params: {}.';
|
|
8
|
+
export const LIST_PAYOUT_SCHEMAS_DESCRIPTION = 'Lists payout schema metadata from GET /public-api/v1/metadata/payout-schemas (cached). Params: {}.';
|
|
9
|
+
export const LIST_PROJECTS_DESCRIPTION = 'Lists dashboard projects for the current user: GET /api/v1/projects with optional ?page= (1-based) and ?query=. Example: {"page":1} or {"query":"acme"}.';
|
|
10
|
+
export const GET_PROJECT_DESCRIPTION = 'Loads one project: GET /api/v1/projects/:projectId. Example: {"project_id":"550e8400-e29b-41d4-a716-446655440000"}.';
|
|
11
|
+
export const LIST_INCENTIVES_DESCRIPTION = 'Lists draft incentives (conversions) for a project: GET /api/v1/projects/:projectId/incentives. Example: {"project_id":"<uuid>"}.';
|
|
12
|
+
export const GET_INCENTIVE_DESCRIPTION = 'Gets one incentive: GET /api/v1/projects/:projectId/incentives/:conversionId. Example: {"project_id":"<uuid>","conversion_id":"<uuid>"}.';
|
|
13
|
+
export const GET_TRIGGER_DESCRIPTION = 'Gets trigger details (including triggerType for metadata checks): GET /api/v1/projects/:projectId/triggers/:triggerId. Example: {"project_id":"<uuid>","trigger_id":"<uuid>"}.';
|
|
14
|
+
export const UPDATE_PAYOUT_TERM_DESCRIPTION = 'Updates one payout term on a draft conversion: PATCH /api/v1/projects/:projectId/conversions/:conversionId/payout_terms/:payoutTermId. ' +
|
|
15
|
+
'Body is a single PayoutTermDto (use get_incentive or GET the payout term, modify, send as payout_term). dry_run then confirmed. ' +
|
|
16
|
+
'Example dry_run: {"project_id":"<uuid>","conversion_id":"<uuid>","payout_term_id":"<uuid>","payout_term":{...},"dry_run":true}.';
|
|
17
|
+
export const UPDATE_PROJECT_TIER_DESCRIPTION = 'Updates a project affiliate tier: PATCH /api/v1/projects/:projectId/tiers/:tierId. Optional fields: name, description, rank, audience_id (null clears audience). ' +
|
|
18
|
+
'At least one field required. dry_run then confirmed. Example: {"project_id":"<uuid>","tier_id":"<uuid>","rank":2,"dry_run":true}.';
|
|
19
|
+
export const UPDATE_AUDIENCE_DESCRIPTION = 'Updates an audience (user list): PATCH /api/v1/projects/:projectId/audiences/:audienceId. Body matches CreateOrUpdateAudienceDto: name (required), optional conditions[] (signature + parameters), condition_match_mode "any"|"all" (required if conditions non-empty), contractId. ' +
|
|
20
|
+
'dry_run then confirmed. Example dry_run: {"project_id":"<uuid>","audience_id":"<uuid>","name":"VIP","dry_run":true}.';
|
|
21
|
+
export const UPDATE_TRIGGER_DESCRIPTION = 'Updates a trigger: PATCH /api/v1/projects/:projectId/triggers/:triggerId. Partial body matching UpdateTriggerDto (name, description, event_type, expressions, payable, ref, contract_ids as single-element array, etc.). ' +
|
|
22
|
+
'At least one patch field required. dry_run then confirmed. Use get_trigger first for current state.';
|
|
23
|
+
export const LIST_PAYOUTS_PENDING_APPROVAL_DESCRIPTION = 'Lists payouts pending approval: GET /api/v1/projects/:projectId/payouts/pending-approval. Optional page, page_size. Example: {"project_id":"<uuid>","page":1,"page_size":50}.';
|
|
24
|
+
export const LIST_REWARDS_PAYOUTS_DESCRIPTION = 'Lists rewards payouts history: GET /api/v1/projects/:projectId/payouts/rewards-payouts. Optional page, page_size, status, from_date, to_date. Example: {"project_id":"<uuid>","page":1}.';
|
|
25
|
+
export const APPROVE_PAYOUTS_DESCRIPTION = 'Approves payouts: PATCH /api/v1/projects/:projectId/payouts/approve. Body: payout_ids OR date filters (server validates mutual exclusivity). dry_run then confirmed. Example dry_run: {"project_id":"<uuid>","payout_ids":["<uuid>"],"dry_run":true}.';
|
|
26
|
+
export const REJECT_PAYOUTS_DESCRIPTION = 'Rejects payouts: PATCH /api/v1/projects/:projectId/payouts/reject. Same body rules as approve_payouts.';
|
|
27
|
+
const RATE_LIMIT_HINT = ' If the API returns HTTP 429, wait Retry-After seconds (if present) before retrying.';
|
|
28
|
+
export const GET_AFFILIATE_PORTAL_STATS_DESCRIPTION = 'Project affiliate stats for one user identifier: GET /api/v1/projects/:projectId/affiliate-portal/stats. ' +
|
|
29
|
+
'Requires dashboard JWT (same as other project tools). Query params match the dashboard affiliate management UI. ' +
|
|
30
|
+
'Example: {"project_id":"<uuid>","user_identifier":"evm:0x..."}.' +
|
|
31
|
+
RATE_LIMIT_HINT;
|
|
32
|
+
export const GET_PROJECT_AFFILIATE_TOTAL_STATS_DESCRIPTION = 'Aggregated project-wide affiliate totals: GET /api/v1/projects/:projectId/affiliate-portal/total-stats. ' +
|
|
33
|
+
'Optional filters: statuses, regions, audiences, tiers, dateRange, dateFrom, dateTo (see fuul-server GetTotalStatsDto). ' +
|
|
34
|
+
'Example: {"project_id":"<uuid>"} or {"project_id":"<uuid>","dateRange":"30d"}.' +
|
|
35
|
+
RATE_LIMIT_HINT;
|
|
36
|
+
export const GET_PROJECT_AFFILIATES_BREAKDOWN_DESCRIPTION = 'Affiliate breakdown for a project (by audience, tier, region, or status): GET /api/v1/projects/:projectId/affiliate-portal/global-breakdown. ' +
|
|
37
|
+
'groupBy is required (audience | tier | region | status). Optional sortBy, sortOrder, date filters, and dimension filters. ' +
|
|
38
|
+
'Example: {"project_id":"<uuid>","groupBy":"region","dateRange":"30d"}.' +
|
|
39
|
+
RATE_LIMIT_HINT;
|
|
40
|
+
//# sourceMappingURL=tool-descriptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-descriptions.js","sourceRoot":"","sources":["../../src/tools/tool-descriptions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,gHAAgH,CAAC;AAEjJ,MAAM,CAAC,MAAM,kBAAkB,GAC7B,iLAAiL,CAAC;AAEpL,MAAM,CAAC,MAAM,uBAAuB,GAClC,wQAAwQ,CAAC;AAE3Q,MAAM,CAAC,MAAM,8BAA8B,GACzC,8JAA8J,CAAC;AAEjK,MAAM,CAAC,MAAM,+BAA+B,GAAG,oGAAoG,CAAC;AAEpJ,MAAM,CAAC,MAAM,yBAAyB,GACpC,0JAA0J,CAAC;AAE7J,MAAM,CAAC,MAAM,uBAAuB,GAClC,qHAAqH,CAAC;AAExH,MAAM,CAAC,MAAM,2BAA2B,GACtC,mIAAmI,CAAC;AAEtI,MAAM,CAAC,MAAM,yBAAyB,GACpC,0IAA0I,CAAC;AAE7I,MAAM,CAAC,MAAM,uBAAuB,GAClC,gLAAgL,CAAC;AAEnL,MAAM,CAAC,MAAM,8BAA8B,GACzC,yIAAyI;IACzI,kIAAkI;IAClI,iIAAiI,CAAC;AAEpI,MAAM,CAAC,MAAM,+BAA+B,GAC1C,mKAAmK;IACnK,mIAAmI,CAAC;AAEtI,MAAM,CAAC,MAAM,2BAA2B,GACtC,sRAAsR;IACtR,sHAAsH,CAAC;AAEzH,MAAM,CAAC,MAAM,0BAA0B,GACrC,2NAA2N;IAC3N,qGAAqG,CAAC;AAExG,MAAM,CAAC,MAAM,yCAAyC,GACpD,+KAA+K,CAAC;AAElL,MAAM,CAAC,MAAM,gCAAgC,GAC3C,0LAA0L,CAAC;AAE7L,MAAM,CAAC,MAAM,2BAA2B,GACtC,uPAAuP,CAAC;AAE1P,MAAM,CAAC,MAAM,0BAA0B,GAAG,wGAAwG,CAAC;AAEnJ,MAAM,eAAe,GAAG,sFAAsF,CAAC;AAE/G,MAAM,CAAC,MAAM,sCAAsC,GACjD,2GAA2G;IAC3G,kHAAkH;IAClH,iEAAiE;IACjE,eAAe,CAAC;AAElB,MAAM,CAAC,MAAM,6CAA6C,GACxD,0GAA0G;IAC1G,yHAAyH;IACzH,gFAAgF;IAChF,eAAe,CAAC;AAElB,MAAM,CAAC,MAAM,4CAA4C,GACvD,+IAA+I;IAC/I,4HAA4H;IAC5H,wEAAwE;IACxE,eAAe,CAAC"}
|