@daxaur/ctrl-mcp 0.1.5 → 0.1.6
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/blocks.d.ts +269 -70
- package/dist/blocks.d.ts.map +1 -1
- package/dist/blocks.js +202 -38
- package/dist/blocks.js.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/create-workflow.d.ts +8 -68
- package/dist/tools/create-workflow.d.ts.map +1 -1
- package/dist/tools/get-block-catalog.d.ts +49 -0
- package/dist/tools/get-block-catalog.d.ts.map +1 -0
- package/dist/tools/get-block-catalog.js +84 -0
- package/dist/tools/get-block-catalog.js.map +1 -0
- package/package.json +1 -1
package/dist/blocks.d.ts
CHANGED
|
@@ -1,101 +1,300 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Block catalog schemas — mirrors
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Block catalog schemas — mirrors only the LIVE production blocks visible in
|
|
3
|
+
* ctrl.build/terminal. Anything marked hidden in block-definitions.ts, or
|
|
4
|
+
* defined there without a keeper executor, is intentionally excluded.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
6
|
+
* Live block count: 9 triggers · 5 actions · 4 conditions · 3 utilities = 21.
|
|
7
|
+
*
|
|
8
|
+
* NOT exposed (and why):
|
|
9
|
+
* - limitless.* + polymarket.* — hidden in block-definitions.ts
|
|
10
|
+
* - social.farcaster_cast — hidden, NEYNAR_API_KEY not in prod
|
|
11
|
+
* - signal.aixbt_mention — hidden, cookie.fun mirror not wired
|
|
12
|
+
* - cond.yield_threshold — hidden, no DefiLlama eval
|
|
13
|
+
* - util.stop / util.snapshot — no keeper case, silently no-op
|
|
14
|
+
*
|
|
15
|
+
* Keep in sync with main repo. Agents can call ctrl_get_block_catalog for the
|
|
16
|
+
* live list if this falls behind.
|
|
7
17
|
*/
|
|
8
18
|
import { z } from 'zod';
|
|
9
19
|
export declare const TRIGGER_TYPES: readonly ["time.interval", "trigger.manual", "price.above", "price.below", "price.change", "pool.created", "watch.whale", "event.transfer", "event.balance"];
|
|
10
20
|
export declare const ACTION_TYPES: readonly ["cypher.swap", "read.balance", "notify.telegram", "notify.discord", "util.webhook"];
|
|
11
21
|
export declare const CONDITION_TYPES: readonly ["cond.price", "cond.balance", "cond.allowed_weekdays", "cond.time_window"];
|
|
12
|
-
export declare const UTILITY_TYPES: readonly ["util.delay", "util.note", "util.log"
|
|
22
|
+
export declare const UTILITY_TYPES: readonly ["util.delay", "util.note", "util.log"];
|
|
13
23
|
export type TriggerType = (typeof TRIGGER_TYPES)[number];
|
|
14
24
|
export type ActionType = (typeof ACTION_TYPES)[number];
|
|
15
25
|
export type ConditionType = (typeof CONDITION_TYPES)[number];
|
|
16
26
|
export type UtilityType = (typeof UTILITY_TYPES)[number];
|
|
17
|
-
|
|
18
|
-
export declare const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
27
|
+
export type BlockType = TriggerType | ActionType | ConditionType | UtilityType;
|
|
28
|
+
export declare const BLOCK_CONFIG_SCHEMAS: {
|
|
29
|
+
readonly 'time.interval': z.ZodObject<{
|
|
30
|
+
minutes: z.ZodNumber;
|
|
31
|
+
}, "strip", z.ZodTypeAny, {
|
|
32
|
+
minutes: number;
|
|
33
|
+
}, {
|
|
34
|
+
minutes: number;
|
|
35
|
+
}>;
|
|
36
|
+
readonly 'trigger.manual': z.ZodObject<{}, "passthrough", z.ZodTypeAny, z.objectOutputType<{}, z.ZodTypeAny, "passthrough">, z.objectInputType<{}, z.ZodTypeAny, "passthrough">>;
|
|
37
|
+
readonly 'price.above': z.ZodObject<{
|
|
38
|
+
token: z.ZodString;
|
|
39
|
+
threshold: z.ZodNumber;
|
|
40
|
+
}, "strip", z.ZodTypeAny, {
|
|
41
|
+
token: string;
|
|
42
|
+
threshold: number;
|
|
43
|
+
}, {
|
|
44
|
+
token: string;
|
|
45
|
+
threshold: number;
|
|
46
|
+
}>;
|
|
47
|
+
readonly 'price.below': z.ZodObject<{
|
|
48
|
+
token: z.ZodString;
|
|
49
|
+
threshold: z.ZodNumber;
|
|
50
|
+
}, "strip", z.ZodTypeAny, {
|
|
51
|
+
token: string;
|
|
52
|
+
threshold: number;
|
|
53
|
+
}, {
|
|
54
|
+
token: string;
|
|
55
|
+
threshold: number;
|
|
56
|
+
}>;
|
|
57
|
+
readonly 'price.change': z.ZodObject<{
|
|
58
|
+
token: z.ZodString;
|
|
59
|
+
percentChange: z.ZodNumber;
|
|
60
|
+
}, "strip", z.ZodTypeAny, {
|
|
61
|
+
token: string;
|
|
62
|
+
percentChange: number;
|
|
63
|
+
}, {
|
|
64
|
+
token: string;
|
|
65
|
+
percentChange: number;
|
|
66
|
+
}>;
|
|
67
|
+
readonly 'pool.created': z.ZodObject<{
|
|
68
|
+
launchpad: z.ZodDefault<z.ZodOptional<z.ZodEnum<["any", "clanker", "flaunch", "zora", "bankr"]>>>;
|
|
69
|
+
quoteToken: z.ZodDefault<z.ZodOptional<z.ZodEnum<["any", "WETH", "USDC"]>>>;
|
|
70
|
+
minLiquidity: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
71
|
+
maxFdv: z.ZodOptional<z.ZodNumber>;
|
|
72
|
+
safetyEnabled: z.ZodOptional<z.ZodBoolean>;
|
|
73
|
+
keywordIncludes: z.ZodOptional<z.ZodString>;
|
|
74
|
+
keywordExcludes: z.ZodOptional<z.ZodString>;
|
|
75
|
+
keywordMatchMode: z.ZodDefault<z.ZodOptional<z.ZodEnum<["any", "all"]>>>;
|
|
76
|
+
}, "strip", z.ZodTypeAny, {
|
|
77
|
+
launchpad: "any" | "clanker" | "flaunch" | "zora" | "bankr";
|
|
78
|
+
quoteToken: "any" | "WETH" | "USDC";
|
|
79
|
+
minLiquidity: number;
|
|
80
|
+
keywordMatchMode: "any" | "all";
|
|
81
|
+
maxFdv?: number | undefined;
|
|
82
|
+
safetyEnabled?: boolean | undefined;
|
|
83
|
+
keywordIncludes?: string | undefined;
|
|
84
|
+
keywordExcludes?: string | undefined;
|
|
85
|
+
}, {
|
|
86
|
+
launchpad?: "any" | "clanker" | "flaunch" | "zora" | "bankr" | undefined;
|
|
87
|
+
quoteToken?: "any" | "WETH" | "USDC" | undefined;
|
|
88
|
+
minLiquidity?: number | undefined;
|
|
89
|
+
maxFdv?: number | undefined;
|
|
90
|
+
safetyEnabled?: boolean | undefined;
|
|
91
|
+
keywordIncludes?: string | undefined;
|
|
92
|
+
keywordExcludes?: string | undefined;
|
|
93
|
+
keywordMatchMode?: "any" | "all" | undefined;
|
|
94
|
+
}>;
|
|
95
|
+
readonly 'watch.whale': z.ZodObject<{
|
|
96
|
+
address: z.ZodString;
|
|
97
|
+
token: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
98
|
+
minAmount: z.ZodNumber;
|
|
99
|
+
direction: z.ZodDefault<z.ZodOptional<z.ZodEnum<["any", "incoming", "outgoing"]>>>;
|
|
100
|
+
}, "strip", z.ZodTypeAny, {
|
|
101
|
+
token: string;
|
|
102
|
+
address: string;
|
|
103
|
+
minAmount: number;
|
|
104
|
+
direction: "any" | "incoming" | "outgoing";
|
|
105
|
+
}, {
|
|
106
|
+
address: string;
|
|
107
|
+
minAmount: number;
|
|
108
|
+
token?: string | undefined;
|
|
109
|
+
direction?: "any" | "incoming" | "outgoing" | undefined;
|
|
110
|
+
}>;
|
|
111
|
+
readonly 'event.transfer': z.ZodObject<{
|
|
112
|
+
tokenAddress: z.ZodString;
|
|
113
|
+
minAmount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
114
|
+
fromAddress: z.ZodOptional<z.ZodString>;
|
|
115
|
+
toAddress: z.ZodOptional<z.ZodString>;
|
|
116
|
+
direction: z.ZodDefault<z.ZodOptional<z.ZodEnum<["any", "incoming", "outgoing"]>>>;
|
|
117
|
+
}, "strip", z.ZodTypeAny, {
|
|
118
|
+
minAmount: number;
|
|
119
|
+
direction: "any" | "incoming" | "outgoing";
|
|
120
|
+
tokenAddress: string;
|
|
121
|
+
fromAddress?: string | undefined;
|
|
122
|
+
toAddress?: string | undefined;
|
|
123
|
+
}, {
|
|
124
|
+
tokenAddress: string;
|
|
125
|
+
minAmount?: number | undefined;
|
|
126
|
+
direction?: "any" | "incoming" | "outgoing" | undefined;
|
|
127
|
+
fromAddress?: string | undefined;
|
|
128
|
+
toAddress?: string | undefined;
|
|
129
|
+
}>;
|
|
130
|
+
readonly 'event.balance': z.ZodObject<{
|
|
131
|
+
token: z.ZodString;
|
|
132
|
+
condition: z.ZodEnum<[">=", "<=", ">", "<"]>;
|
|
133
|
+
threshold: z.ZodNumber;
|
|
134
|
+
}, "strip", z.ZodTypeAny, {
|
|
135
|
+
token: string;
|
|
136
|
+
threshold: number;
|
|
137
|
+
condition: ">=" | "<=" | ">" | "<";
|
|
138
|
+
}, {
|
|
139
|
+
token: string;
|
|
140
|
+
threshold: number;
|
|
141
|
+
condition: ">=" | "<=" | ">" | "<";
|
|
142
|
+
}>;
|
|
143
|
+
readonly 'cypher.swap': z.ZodObject<{
|
|
144
|
+
tokenIn: z.ZodString;
|
|
145
|
+
tokenOut: z.ZodString;
|
|
146
|
+
amount: z.ZodNumber;
|
|
147
|
+
amountMode: z.ZodDefault<z.ZodOptional<z.ZodEnum<["fixed", "percent"]>>>;
|
|
148
|
+
slippage: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
149
|
+
autoSellEnabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
150
|
+
autoSellMultiplier: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
151
|
+
autoSellPercent: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
152
|
+
}, "strip", z.ZodTypeAny, {
|
|
153
|
+
tokenIn: string;
|
|
154
|
+
tokenOut: string;
|
|
155
|
+
amount: number;
|
|
156
|
+
amountMode: "fixed" | "percent";
|
|
157
|
+
slippage: number;
|
|
158
|
+
autoSellEnabled: boolean;
|
|
159
|
+
autoSellMultiplier: number;
|
|
160
|
+
autoSellPercent: number;
|
|
161
|
+
}, {
|
|
162
|
+
tokenIn: string;
|
|
163
|
+
tokenOut: string;
|
|
164
|
+
amount: number;
|
|
165
|
+
amountMode?: "fixed" | "percent" | undefined;
|
|
166
|
+
slippage?: number | undefined;
|
|
167
|
+
autoSellEnabled?: boolean | undefined;
|
|
168
|
+
autoSellMultiplier?: number | undefined;
|
|
169
|
+
autoSellPercent?: number | undefined;
|
|
170
|
+
}>;
|
|
171
|
+
readonly 'read.balance': z.ZodObject<{
|
|
172
|
+
token: z.ZodString;
|
|
173
|
+
walletAddress: z.ZodOptional<z.ZodString>;
|
|
174
|
+
}, "strip", z.ZodTypeAny, {
|
|
175
|
+
token: string;
|
|
176
|
+
walletAddress?: string | undefined;
|
|
177
|
+
}, {
|
|
178
|
+
token: string;
|
|
179
|
+
walletAddress?: string | undefined;
|
|
180
|
+
}>;
|
|
181
|
+
readonly 'notify.telegram': z.ZodObject<{
|
|
182
|
+
message: z.ZodString;
|
|
183
|
+
}, "strip", z.ZodTypeAny, {
|
|
184
|
+
message: string;
|
|
185
|
+
}, {
|
|
186
|
+
message: string;
|
|
187
|
+
}>;
|
|
188
|
+
readonly 'notify.discord': z.ZodObject<{
|
|
189
|
+
webhookUrl: z.ZodEffects<z.ZodString, string, string>;
|
|
190
|
+
message: z.ZodString;
|
|
191
|
+
}, "strip", z.ZodTypeAny, {
|
|
192
|
+
message: string;
|
|
193
|
+
webhookUrl: string;
|
|
194
|
+
}, {
|
|
195
|
+
message: string;
|
|
196
|
+
webhookUrl: string;
|
|
197
|
+
}>;
|
|
198
|
+
readonly 'util.webhook': z.ZodObject<{
|
|
199
|
+
url: z.ZodEffects<z.ZodString, string, string>;
|
|
200
|
+
payload: z.ZodOptional<z.ZodString>;
|
|
201
|
+
}, "strip", z.ZodTypeAny, {
|
|
202
|
+
url: string;
|
|
203
|
+
payload?: string | undefined;
|
|
204
|
+
}, {
|
|
205
|
+
url: string;
|
|
206
|
+
payload?: string | undefined;
|
|
207
|
+
}>;
|
|
208
|
+
readonly 'cond.price': z.ZodObject<{
|
|
209
|
+
token: z.ZodString;
|
|
210
|
+
operator: z.ZodEnum<[">", "<"]>;
|
|
211
|
+
threshold: z.ZodNumber;
|
|
24
212
|
}, "strip", z.ZodTypeAny, {
|
|
25
|
-
|
|
26
|
-
|
|
213
|
+
token: string;
|
|
214
|
+
threshold: number;
|
|
215
|
+
operator: ">" | "<";
|
|
27
216
|
}, {
|
|
28
|
-
|
|
29
|
-
|
|
217
|
+
token: string;
|
|
218
|
+
threshold: number;
|
|
219
|
+
operator: ">" | "<";
|
|
30
220
|
}>;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
221
|
+
readonly 'cond.balance': z.ZodObject<{
|
|
222
|
+
token: z.ZodString;
|
|
223
|
+
operator: z.ZodEnum<[">=", "<", ">", "<="]>;
|
|
224
|
+
minBalance: z.ZodNumber;
|
|
34
225
|
}, "strip", z.ZodTypeAny, {
|
|
35
|
-
|
|
36
|
-
|
|
226
|
+
token: string;
|
|
227
|
+
operator: ">=" | "<=" | ">" | "<";
|
|
228
|
+
minBalance: number;
|
|
37
229
|
}, {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
230
|
+
token: string;
|
|
231
|
+
operator: ">=" | "<=" | ">" | "<";
|
|
232
|
+
minBalance: number;
|
|
233
|
+
}>;
|
|
234
|
+
readonly 'cond.allowed_weekdays': z.ZodObject<{
|
|
235
|
+
weekdays: z.ZodArray<z.ZodNumber, "many">;
|
|
43
236
|
}, "strip", z.ZodTypeAny, {
|
|
44
|
-
|
|
45
|
-
config?: Record<string, any> | undefined;
|
|
237
|
+
weekdays: number[];
|
|
46
238
|
}, {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
239
|
+
weekdays: number[];
|
|
240
|
+
}>;
|
|
241
|
+
readonly 'cond.time_window': z.ZodObject<{
|
|
242
|
+
mode: z.ZodDefault<z.ZodOptional<z.ZodEnum<["during", "skip"]>>>;
|
|
243
|
+
startUTC: z.ZodDefault<z.ZodString>;
|
|
244
|
+
endUTC: z.ZodDefault<z.ZodString>;
|
|
52
245
|
}, "strip", z.ZodTypeAny, {
|
|
53
|
-
|
|
54
|
-
|
|
246
|
+
mode: "during" | "skip";
|
|
247
|
+
startUTC: string;
|
|
248
|
+
endUTC: string;
|
|
55
249
|
}, {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
250
|
+
mode?: "during" | "skip" | undefined;
|
|
251
|
+
startUTC?: string | undefined;
|
|
252
|
+
endUTC?: string | undefined;
|
|
253
|
+
}>;
|
|
254
|
+
readonly 'util.delay': z.ZodObject<{
|
|
255
|
+
seconds: z.ZodNumber;
|
|
256
|
+
}, "strip", z.ZodTypeAny, {
|
|
257
|
+
seconds: number;
|
|
258
|
+
}, {
|
|
259
|
+
seconds: number;
|
|
260
|
+
}>;
|
|
261
|
+
readonly 'util.note': z.ZodObject<{
|
|
262
|
+
note: z.ZodOptional<z.ZodString>;
|
|
263
|
+
}, "strip", z.ZodTypeAny, {
|
|
264
|
+
note?: string | undefined;
|
|
265
|
+
}, {
|
|
266
|
+
note?: string | undefined;
|
|
267
|
+
}>;
|
|
268
|
+
readonly 'util.log': z.ZodObject<{
|
|
269
|
+
level: z.ZodDefault<z.ZodOptional<z.ZodEnum<["info", "success", "warn", "error"]>>>;
|
|
270
|
+
message: z.ZodString;
|
|
271
|
+
}, "strip", z.ZodTypeAny, {
|
|
272
|
+
message: string;
|
|
273
|
+
level: "info" | "success" | "warn" | "error";
|
|
274
|
+
}, {
|
|
275
|
+
message: string;
|
|
276
|
+
level?: "info" | "success" | "warn" | "error" | undefined;
|
|
277
|
+
}>;
|
|
278
|
+
};
|
|
279
|
+
export type BlockConfigSchemas = typeof BLOCK_CONFIG_SCHEMAS;
|
|
280
|
+
/** A workflow = trigger + ordered chain of action/condition/utility blocks. */
|
|
281
|
+
export declare const WorkflowDefinitionSchema: z.ZodObject<{
|
|
282
|
+
name: z.ZodString;
|
|
283
|
+
description: z.ZodOptional<z.ZodString>;
|
|
284
|
+
trigger: z.ZodUnion<[z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]>;
|
|
285
|
+
chain: z.ZodArray<z.ZodUnion<[z.ZodUnion<[z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]>, z.ZodUnion<[z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]>, z.ZodUnion<[z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]>]>, "many">;
|
|
59
286
|
}, "strip", z.ZodTypeAny, {
|
|
60
287
|
name: string;
|
|
61
|
-
|
|
62
|
-
type: "time.interval" | "trigger.manual" | "price.above" | "price.below" | "price.change" | "pool.created" | "watch.whale" | "event.transfer" | "event.balance";
|
|
63
|
-
config?: Record<string, any> | undefined;
|
|
64
|
-
};
|
|
65
|
-
chain: ({
|
|
66
|
-
type: "cypher.swap" | "read.balance" | "notify.telegram" | "notify.discord" | "util.webhook";
|
|
67
|
-
config?: Record<string, any> | undefined;
|
|
68
|
-
} | {
|
|
69
|
-
type: "cond.price" | "cond.balance" | "cond.allowed_weekdays" | "cond.time_window";
|
|
70
|
-
config?: Record<string, any> | undefined;
|
|
71
|
-
} | {
|
|
72
|
-
type: "util.delay" | "util.note" | "util.log" | "util.stop" | "util.snapshot";
|
|
73
|
-
config?: Record<string, any> | undefined;
|
|
74
|
-
})[];
|
|
288
|
+
chain: any[];
|
|
75
289
|
description?: string | undefined;
|
|
290
|
+
trigger?: any;
|
|
76
291
|
}, {
|
|
77
292
|
name: string;
|
|
78
|
-
|
|
79
|
-
type: "time.interval" | "trigger.manual" | "price.above" | "price.below" | "price.change" | "pool.created" | "watch.whale" | "event.transfer" | "event.balance";
|
|
80
|
-
config?: Record<string, any> | undefined;
|
|
81
|
-
};
|
|
82
|
-
chain: ({
|
|
83
|
-
type: "cypher.swap" | "read.balance" | "notify.telegram" | "notify.discord" | "util.webhook";
|
|
84
|
-
config?: Record<string, any> | undefined;
|
|
85
|
-
} | {
|
|
86
|
-
type: "cond.price" | "cond.balance" | "cond.allowed_weekdays" | "cond.time_window";
|
|
87
|
-
config?: Record<string, any> | undefined;
|
|
88
|
-
} | {
|
|
89
|
-
type: "util.delay" | "util.note" | "util.log" | "util.stop" | "util.snapshot";
|
|
90
|
-
config?: Record<string, any> | undefined;
|
|
91
|
-
})[];
|
|
293
|
+
chain: any[];
|
|
92
294
|
description?: string | undefined;
|
|
295
|
+
trigger?: any;
|
|
93
296
|
}>;
|
|
94
297
|
export type WorkflowDefinition = z.infer<typeof WorkflowDefinitionSchema>;
|
|
95
|
-
/**
|
|
96
|
-
* Convert a simple {trigger, chain} schema into CTRL's internal
|
|
97
|
-
* {nodes, edges} shape used by the canvas + keeper.
|
|
98
|
-
*/
|
|
99
298
|
export declare function compileToWorkflowData(def: WorkflowDefinition): {
|
|
100
299
|
nodes: Array<{
|
|
101
300
|
id: string;
|
package/dist/blocks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../src/blocks.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../src/blocks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,aAAa,8JAUhB,CAAA;AAEV,eAAO,MAAM,YAAY,+FAMf,CAAA;AAEV,eAAO,MAAM,eAAe,sFAKlB,CAAA;AAEV,eAAO,MAAM,aAAa,kDAIhB,CAAA;AAEV,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAA;AACxD,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AACtD,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAC5D,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAA;AACxD,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,GAAG,WAAW,CAAA;AAuK9E,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsBmB,CAAA;AAEpD,MAAM,MAAM,kBAAkB,GAAG,OAAO,oBAAoB,CAAA;AAqB5D,+EAA+E;AAC/E,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;EAKnC,CAAA;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAkBzE,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,kBAAkB,GAAG;IAC9D,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,SAAS,EAAE,MAAM,CAAA;QACjB,YAAY,EAAE,MAAM,CAAA;QACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC7B,QAAQ,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KACnC,CAAC,CAAA;IACF,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC7D,CAsCA"}
|
package/dist/blocks.js
CHANGED
|
@@ -1,11 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Block catalog schemas — mirrors
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Block catalog schemas — mirrors only the LIVE production blocks visible in
|
|
3
|
+
* ctrl.build/terminal. Anything marked hidden in block-definitions.ts, or
|
|
4
|
+
* defined there without a keeper executor, is intentionally excluded.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
6
|
+
* Live block count: 9 triggers · 5 actions · 4 conditions · 3 utilities = 21.
|
|
7
|
+
*
|
|
8
|
+
* NOT exposed (and why):
|
|
9
|
+
* - limitless.* + polymarket.* — hidden in block-definitions.ts
|
|
10
|
+
* - social.farcaster_cast — hidden, NEYNAR_API_KEY not in prod
|
|
11
|
+
* - signal.aixbt_mention — hidden, cookie.fun mirror not wired
|
|
12
|
+
* - cond.yield_threshold — hidden, no DefiLlama eval
|
|
13
|
+
* - util.stop / util.snapshot — no keeper case, silently no-op
|
|
14
|
+
*
|
|
15
|
+
* Keep in sync with main repo. Agents can call ctrl_get_block_catalog for the
|
|
16
|
+
* live list if this falls behind.
|
|
7
17
|
*/
|
|
8
18
|
import { z } from 'zod';
|
|
19
|
+
// ─── Block id arrays ────────────────────────────────────────────────────────
|
|
9
20
|
export const TRIGGER_TYPES = [
|
|
10
21
|
'time.interval',
|
|
11
22
|
'trigger.manual',
|
|
@@ -34,64 +45,217 @@ export const UTILITY_TYPES = [
|
|
|
34
45
|
'util.delay',
|
|
35
46
|
'util.note',
|
|
36
47
|
'util.log',
|
|
37
|
-
'util.stop',
|
|
38
|
-
'util.snapshot',
|
|
39
48
|
];
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
49
|
+
// ─── Reusable atoms ─────────────────────────────────────────────────────────
|
|
50
|
+
const tokenRef = z.string().min(1).describe('Token symbol (ETH/WETH/USDC) or 0x address');
|
|
51
|
+
const addressRef = z.string().regex(/^0x[a-fA-F0-9]{40}$/).describe('0x address');
|
|
52
|
+
// ─── Trigger configs ────────────────────────────────────────────────────────
|
|
53
|
+
const TimeIntervalConfig = z.object({
|
|
54
|
+
minutes: z.number().positive(),
|
|
55
|
+
});
|
|
56
|
+
const ManualTriggerConfig = z.object({}).passthrough();
|
|
57
|
+
const PriceAboveConfig = z.object({
|
|
58
|
+
token: tokenRef,
|
|
59
|
+
threshold: z.number().min(0).describe('USD price'),
|
|
60
|
+
});
|
|
61
|
+
const PriceBelowConfig = z.object({
|
|
62
|
+
token: tokenRef,
|
|
63
|
+
threshold: z.number().min(0).describe('USD price'),
|
|
64
|
+
});
|
|
65
|
+
const PriceChangeConfig = z.object({
|
|
66
|
+
token: tokenRef,
|
|
67
|
+
percentChange: z.number().min(0.1).describe('Absolute percent move'),
|
|
68
|
+
});
|
|
69
|
+
const PoolCreatedConfig = z.object({
|
|
70
|
+
launchpad: z
|
|
71
|
+
.enum(['any', 'clanker', 'flaunch', 'zora', 'bankr'])
|
|
72
|
+
.optional()
|
|
73
|
+
.default('any')
|
|
74
|
+
.describe('Launchpad to watch. bankr = Doppler V4.'),
|
|
75
|
+
quoteToken: z.enum(['any', 'WETH', 'USDC']).optional().default('any'),
|
|
76
|
+
minLiquidity: z.number().min(0).optional().default(0).describe('Min pool liquidity in USD'),
|
|
77
|
+
maxFdv: z.number().min(0).optional().describe('Reject launches above this FDV (USD)'),
|
|
78
|
+
safetyEnabled: z
|
|
79
|
+
.boolean()
|
|
80
|
+
.optional()
|
|
81
|
+
.describe('GoPlus honeypot + tax gate. Default ON for non-curated launchpads.'),
|
|
82
|
+
keywordIncludes: z
|
|
83
|
+
.string()
|
|
84
|
+
.optional()
|
|
85
|
+
.describe('Comma-separated keywords token name/ticker must include'),
|
|
86
|
+
keywordExcludes: z.string().optional().describe('Comma-separated keywords that auto-reject'),
|
|
87
|
+
keywordMatchMode: z.enum(['any', 'all']).optional().default('any'),
|
|
88
|
+
});
|
|
89
|
+
const WatchWhaleConfig = z.object({
|
|
90
|
+
address: addressRef.describe('Wallet to watch'),
|
|
91
|
+
token: tokenRef.optional().default('ETH'),
|
|
92
|
+
minAmount: z.number().positive(),
|
|
93
|
+
direction: z.enum(['any', 'incoming', 'outgoing']).optional().default('any'),
|
|
94
|
+
});
|
|
95
|
+
const EventTransferConfig = z.object({
|
|
96
|
+
tokenAddress: addressRef,
|
|
97
|
+
minAmount: z.number().min(0).optional().default(0),
|
|
98
|
+
fromAddress: addressRef.optional(),
|
|
99
|
+
toAddress: addressRef.optional(),
|
|
100
|
+
direction: z.enum(['any', 'incoming', 'outgoing']).optional().default('any'),
|
|
101
|
+
});
|
|
102
|
+
const EventBalanceConfig = z.object({
|
|
103
|
+
token: tokenRef,
|
|
104
|
+
condition: z.enum(['>=', '<=', '>', '<']),
|
|
105
|
+
threshold: z.number(),
|
|
106
|
+
});
|
|
107
|
+
// ─── Action configs ─────────────────────────────────────────────────────────
|
|
108
|
+
const CypherSwapConfig = z.object({
|
|
109
|
+
tokenIn: z
|
|
110
|
+
.string()
|
|
111
|
+
.min(1)
|
|
112
|
+
.describe('Input token symbol/0x, or "{{trigger.tokenAddress}}" for dynamic sells'),
|
|
113
|
+
tokenOut: z
|
|
114
|
+
.string()
|
|
115
|
+
.min(1)
|
|
116
|
+
.describe('Output token symbol/0x, or "{{trigger.tokenAddress}}" for snipes'),
|
|
117
|
+
amount: z.number().positive().describe('Amount of tokenIn (or % of balance if amountMode=percent)'),
|
|
118
|
+
amountMode: z.enum(['fixed', 'percent']).optional().default('fixed'),
|
|
119
|
+
slippage: z.number().min(0.1).max(50).optional().default(15).describe('Slippage %'),
|
|
120
|
+
autoSellEnabled: z.boolean().optional().default(false),
|
|
121
|
+
autoSellMultiplier: z
|
|
122
|
+
.number()
|
|
123
|
+
.min(1.01)
|
|
124
|
+
.optional()
|
|
125
|
+
.default(2)
|
|
126
|
+
.describe('Auto-sell at N× entry price'),
|
|
127
|
+
autoSellPercent: z.number().min(1).max(100).optional().default(50).describe('% of position to sell'),
|
|
128
|
+
});
|
|
129
|
+
const ReadBalanceConfig = z.object({
|
|
130
|
+
token: tokenRef,
|
|
131
|
+
walletAddress: addressRef.optional().describe('Defaults to vault wallet'),
|
|
43
132
|
});
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
133
|
+
const NotifyTelegramConfig = z.object({
|
|
134
|
+
message: z
|
|
135
|
+
.string()
|
|
136
|
+
.min(1)
|
|
137
|
+
.max(4000)
|
|
138
|
+
.describe('Supports {{token}}, {{price}}, {{amount}}, {{txHash}}, {{trigger.*}} vars'),
|
|
139
|
+
});
|
|
140
|
+
const NotifyDiscordConfig = z.object({
|
|
141
|
+
webhookUrl: z
|
|
142
|
+
.string()
|
|
143
|
+
.url()
|
|
144
|
+
.refine((u) => u.startsWith('https://discord.com/api/webhooks/'), {
|
|
145
|
+
message: 'Must be a https://discord.com/api/webhooks/... URL',
|
|
146
|
+
}),
|
|
147
|
+
message: z.string().min(1).max(2000),
|
|
148
|
+
});
|
|
149
|
+
const UtilWebhookConfig = z.object({
|
|
150
|
+
url: z.string().url().refine((u) => u.startsWith('https://'), { message: 'HTTPS only' }),
|
|
151
|
+
payload: z.string().optional().describe('JSON string body; template vars supported'),
|
|
152
|
+
});
|
|
153
|
+
// ─── Condition configs ──────────────────────────────────────────────────────
|
|
154
|
+
const CondPriceConfig = z.object({
|
|
155
|
+
token: z.string().min(1),
|
|
156
|
+
operator: z.enum(['>', '<']),
|
|
157
|
+
threshold: z.number().min(0).describe('USD price'),
|
|
158
|
+
});
|
|
159
|
+
const CondBalanceConfig = z.object({
|
|
160
|
+
token: tokenRef,
|
|
161
|
+
operator: z.enum(['>=', '<', '>', '<=']),
|
|
162
|
+
minBalance: z.number(),
|
|
163
|
+
});
|
|
164
|
+
const CondWeekdaysConfig = z.object({
|
|
165
|
+
weekdays: z.array(z.number().int().min(1).max(7)).describe('ISO weekdays Mon=1..Sun=7'),
|
|
166
|
+
});
|
|
167
|
+
const HHMM = z.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/, { message: 'HH:MM 24h UTC' });
|
|
168
|
+
const CondTimeWindowConfig = z.object({
|
|
169
|
+
mode: z.enum(['during', 'skip']).optional().default('during'),
|
|
170
|
+
startUTC: HHMM.default('13:00'),
|
|
171
|
+
endUTC: HHMM.default('22:00'),
|
|
47
172
|
});
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
173
|
+
// ─── Utility configs ────────────────────────────────────────────────────────
|
|
174
|
+
const UtilDelayConfig = z.object({
|
|
175
|
+
seconds: z.number().positive(),
|
|
51
176
|
});
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
config: z.record(z.any()).optional(),
|
|
177
|
+
const UtilNoteConfig = z.object({
|
|
178
|
+
note: z.string().max(2000).optional(),
|
|
55
179
|
});
|
|
56
|
-
|
|
180
|
+
const UtilLogConfig = z.object({
|
|
181
|
+
level: z.enum(['info', 'success', 'warn', 'error']).optional().default('info'),
|
|
182
|
+
message: z.string().min(1).max(2000),
|
|
183
|
+
});
|
|
184
|
+
// ─── Master per-block schema map ────────────────────────────────────────────
|
|
185
|
+
export const BLOCK_CONFIG_SCHEMAS = {
|
|
186
|
+
'time.interval': TimeIntervalConfig,
|
|
187
|
+
'trigger.manual': ManualTriggerConfig,
|
|
188
|
+
'price.above': PriceAboveConfig,
|
|
189
|
+
'price.below': PriceBelowConfig,
|
|
190
|
+
'price.change': PriceChangeConfig,
|
|
191
|
+
'pool.created': PoolCreatedConfig,
|
|
192
|
+
'watch.whale': WatchWhaleConfig,
|
|
193
|
+
'event.transfer': EventTransferConfig,
|
|
194
|
+
'event.balance': EventBalanceConfig,
|
|
195
|
+
'cypher.swap': CypherSwapConfig,
|
|
196
|
+
'read.balance': ReadBalanceConfig,
|
|
197
|
+
'notify.telegram': NotifyTelegramConfig,
|
|
198
|
+
'notify.discord': NotifyDiscordConfig,
|
|
199
|
+
'util.webhook': UtilWebhookConfig,
|
|
200
|
+
'cond.price': CondPriceConfig,
|
|
201
|
+
'cond.balance': CondBalanceConfig,
|
|
202
|
+
'cond.allowed_weekdays': CondWeekdaysConfig,
|
|
203
|
+
'cond.time_window': CondTimeWindowConfig,
|
|
204
|
+
'util.delay': UtilDelayConfig,
|
|
205
|
+
'util.note': UtilNoteConfig,
|
|
206
|
+
'util.log': UtilLogConfig,
|
|
207
|
+
};
|
|
208
|
+
// ─── Discriminated-union blocks ─────────────────────────────────────────────
|
|
209
|
+
function typedBlockUnion(types) {
|
|
210
|
+
const variants = types.map((t) => z.object({
|
|
211
|
+
type: z.literal(t),
|
|
212
|
+
config: BLOCK_CONFIG_SCHEMAS[t].optional().default({}),
|
|
213
|
+
}));
|
|
214
|
+
return z.union(variants);
|
|
215
|
+
}
|
|
216
|
+
const TriggerBlock = typedBlockUnion(TRIGGER_TYPES);
|
|
217
|
+
const ActionBlock = typedBlockUnion(ACTION_TYPES);
|
|
218
|
+
const ConditionBlock = typedBlockUnion(CONDITION_TYPES);
|
|
219
|
+
const UtilityBlock = typedBlockUnion(UTILITY_TYPES);
|
|
220
|
+
const ChainBlock = z.union([ActionBlock, ConditionBlock, UtilityBlock]);
|
|
221
|
+
/** A workflow = trigger + ordered chain of action/condition/utility blocks. */
|
|
57
222
|
export const WorkflowDefinitionSchema = z.object({
|
|
58
223
|
name: z.string().min(1).max(120),
|
|
59
224
|
description: z.string().max(500).optional(),
|
|
60
|
-
trigger:
|
|
61
|
-
chain: z
|
|
62
|
-
.array(z.union([actionBlock, conditionBlock, utilityBlock]))
|
|
63
|
-
.min(1)
|
|
64
|
-
.max(20),
|
|
225
|
+
trigger: TriggerBlock,
|
|
226
|
+
chain: z.array(ChainBlock).min(1).max(20),
|
|
65
227
|
});
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
228
|
+
// ─── Compile to CTRL canvas {nodes, edges} ──────────────────────────────────
|
|
229
|
+
const ACTION_SET = new Set(ACTION_TYPES);
|
|
230
|
+
const CONDITION_SET = new Set(CONDITION_TYPES);
|
|
231
|
+
function classify(type) {
|
|
232
|
+
if (ACTION_SET.has(type))
|
|
233
|
+
return 'action';
|
|
234
|
+
if (CONDITION_SET.has(type))
|
|
235
|
+
return 'condition';
|
|
236
|
+
return 'utility';
|
|
237
|
+
}
|
|
70
238
|
export function compileToWorkflowData(def) {
|
|
71
239
|
const nodes = [];
|
|
72
240
|
const edges = [];
|
|
241
|
+
const trigger = def.trigger;
|
|
73
242
|
const triggerId = 'n0_trigger';
|
|
74
|
-
const [triggerCategory, triggerSubtype] = def.trigger.type.split('.');
|
|
75
243
|
nodes.push({
|
|
76
244
|
id: triggerId,
|
|
77
245
|
type: 'automation',
|
|
78
246
|
blockType: 'trigger',
|
|
79
|
-
blockSubtype:
|
|
80
|
-
data: { blockId:
|
|
247
|
+
blockSubtype: trigger.type,
|
|
248
|
+
data: { blockId: trigger.type, config: trigger.config ?? {} },
|
|
81
249
|
position: { x: 80, y: 80 },
|
|
82
250
|
});
|
|
83
251
|
let prevId = triggerId;
|
|
84
252
|
def.chain.forEach((block, idx) => {
|
|
85
|
-
const id = `n${idx + 1}_${block.type.replace(
|
|
86
|
-
const [category, subtype] = block.type.split('.');
|
|
87
|
-
const isAction = ACTION_TYPES.includes(block.type);
|
|
88
|
-
const isCondition = CONDITION_TYPES.includes(block.type);
|
|
89
|
-
const blockType = isAction ? 'action' : isCondition ? 'condition' : 'utility';
|
|
253
|
+
const id = `n${idx + 1}_${block.type.replace(/\./g, '_')}`;
|
|
90
254
|
nodes.push({
|
|
91
255
|
id,
|
|
92
256
|
type: 'automation',
|
|
93
|
-
blockType,
|
|
94
|
-
blockSubtype:
|
|
257
|
+
blockType: classify(block.type),
|
|
258
|
+
blockSubtype: block.type,
|
|
95
259
|
data: { blockId: block.type, config: block.config ?? {} },
|
|
96
260
|
position: { x: 80 + (idx + 1) * 320, y: 80 },
|
|
97
261
|
});
|
package/dist/blocks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../src/blocks.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../src/blocks.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -22,6 +22,7 @@ import { ACTIVATE_TOOL, handleActivate, } from './tools/activate-workflow.js';
|
|
|
22
22
|
import { FIRE_MANUAL_TOOL, handleFireManual } from './tools/fire-manual.js';
|
|
23
23
|
import { GET_EXECUTION_LOGS_TOOL, handleGetExecutionLogs, } from './tools/get-execution-logs.js';
|
|
24
24
|
import { VAULT_STATUS_TOOL, handleVaultStatus } from './tools/vault-status.js';
|
|
25
|
+
import { GET_BLOCK_CATALOG_TOOL, handleGetBlockCatalog, } from './tools/get-block-catalog.js';
|
|
25
26
|
import { CtrlApiError } from './client.js';
|
|
26
27
|
const server = new Server({
|
|
27
28
|
name: '@daxaur/ctrl-mcp',
|
|
@@ -33,6 +34,7 @@ const server = new Server({
|
|
|
33
34
|
});
|
|
34
35
|
const TOOLS = [
|
|
35
36
|
VAULT_STATUS_TOOL,
|
|
37
|
+
GET_BLOCK_CATALOG_TOOL,
|
|
36
38
|
CREATE_WORKFLOW_TOOL,
|
|
37
39
|
ACTIVATE_TOOL,
|
|
38
40
|
FIRE_MANUAL_TOOL,
|
|
@@ -40,6 +42,7 @@ const TOOLS = [
|
|
|
40
42
|
];
|
|
41
43
|
const HANDLERS = {
|
|
42
44
|
ctrl_get_vault_status: handleVaultStatus,
|
|
45
|
+
ctrl_get_block_catalog: handleGetBlockCatalog,
|
|
43
46
|
ctrl_create_workflow: handleCreateWorkflow,
|
|
44
47
|
ctrl_activate: handleActivate,
|
|
45
48
|
ctrl_fire_manual: handleFireManual,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,78 +9,18 @@ import { z } from 'zod';
|
|
|
9
9
|
export declare const createWorkflowInputSchema: z.ZodObject<{
|
|
10
10
|
name: z.ZodString;
|
|
11
11
|
description: z.ZodOptional<z.ZodString>;
|
|
12
|
-
trigger: z.
|
|
13
|
-
|
|
14
|
-
config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
15
|
-
}, "strip", z.ZodTypeAny, {
|
|
16
|
-
type: "time.interval" | "trigger.manual" | "price.above" | "price.below" | "price.change" | "pool.created" | "watch.whale" | "event.transfer" | "event.balance";
|
|
17
|
-
config?: Record<string, any> | undefined;
|
|
18
|
-
}, {
|
|
19
|
-
type: "time.interval" | "trigger.manual" | "price.above" | "price.below" | "price.change" | "pool.created" | "watch.whale" | "event.transfer" | "event.balance";
|
|
20
|
-
config?: Record<string, any> | undefined;
|
|
21
|
-
}>;
|
|
22
|
-
chain: z.ZodArray<z.ZodUnion<[z.ZodObject<{
|
|
23
|
-
type: z.ZodEnum<["cypher.swap", "read.balance", "notify.telegram", "notify.discord", "util.webhook"]>;
|
|
24
|
-
config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
25
|
-
}, "strip", z.ZodTypeAny, {
|
|
26
|
-
type: "cypher.swap" | "read.balance" | "notify.telegram" | "notify.discord" | "util.webhook";
|
|
27
|
-
config?: Record<string, any> | undefined;
|
|
28
|
-
}, {
|
|
29
|
-
type: "cypher.swap" | "read.balance" | "notify.telegram" | "notify.discord" | "util.webhook";
|
|
30
|
-
config?: Record<string, any> | undefined;
|
|
31
|
-
}>, z.ZodObject<{
|
|
32
|
-
type: z.ZodEnum<["cond.price", "cond.balance", "cond.allowed_weekdays", "cond.time_window"]>;
|
|
33
|
-
config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
34
|
-
}, "strip", z.ZodTypeAny, {
|
|
35
|
-
type: "cond.price" | "cond.balance" | "cond.allowed_weekdays" | "cond.time_window";
|
|
36
|
-
config?: Record<string, any> | undefined;
|
|
37
|
-
}, {
|
|
38
|
-
type: "cond.price" | "cond.balance" | "cond.allowed_weekdays" | "cond.time_window";
|
|
39
|
-
config?: Record<string, any> | undefined;
|
|
40
|
-
}>, z.ZodObject<{
|
|
41
|
-
type: z.ZodEnum<["util.delay", "util.note", "util.log", "util.stop", "util.snapshot"]>;
|
|
42
|
-
config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
43
|
-
}, "strip", z.ZodTypeAny, {
|
|
44
|
-
type: "util.delay" | "util.note" | "util.log" | "util.stop" | "util.snapshot";
|
|
45
|
-
config?: Record<string, any> | undefined;
|
|
46
|
-
}, {
|
|
47
|
-
type: "util.delay" | "util.note" | "util.log" | "util.stop" | "util.snapshot";
|
|
48
|
-
config?: Record<string, any> | undefined;
|
|
49
|
-
}>]>, "many">;
|
|
12
|
+
trigger: z.ZodUnion<[z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]>;
|
|
13
|
+
chain: z.ZodArray<z.ZodUnion<[z.ZodUnion<[z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]>, z.ZodUnion<[z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]>, z.ZodUnion<[z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]>]>, "many">;
|
|
50
14
|
}, "strip", z.ZodTypeAny, {
|
|
51
15
|
name: string;
|
|
52
|
-
|
|
53
|
-
type: "time.interval" | "trigger.manual" | "price.above" | "price.below" | "price.change" | "pool.created" | "watch.whale" | "event.transfer" | "event.balance";
|
|
54
|
-
config?: Record<string, any> | undefined;
|
|
55
|
-
};
|
|
56
|
-
chain: ({
|
|
57
|
-
type: "cypher.swap" | "read.balance" | "notify.telegram" | "notify.discord" | "util.webhook";
|
|
58
|
-
config?: Record<string, any> | undefined;
|
|
59
|
-
} | {
|
|
60
|
-
type: "cond.price" | "cond.balance" | "cond.allowed_weekdays" | "cond.time_window";
|
|
61
|
-
config?: Record<string, any> | undefined;
|
|
62
|
-
} | {
|
|
63
|
-
type: "util.delay" | "util.note" | "util.log" | "util.stop" | "util.snapshot";
|
|
64
|
-
config?: Record<string, any> | undefined;
|
|
65
|
-
})[];
|
|
16
|
+
chain: any[];
|
|
66
17
|
description?: string | undefined;
|
|
18
|
+
trigger?: any;
|
|
67
19
|
}, {
|
|
68
20
|
name: string;
|
|
69
|
-
|
|
70
|
-
type: "time.interval" | "trigger.manual" | "price.above" | "price.below" | "price.change" | "pool.created" | "watch.whale" | "event.transfer" | "event.balance";
|
|
71
|
-
config?: Record<string, any> | undefined;
|
|
72
|
-
};
|
|
73
|
-
chain: ({
|
|
74
|
-
type: "cypher.swap" | "read.balance" | "notify.telegram" | "notify.discord" | "util.webhook";
|
|
75
|
-
config?: Record<string, any> | undefined;
|
|
76
|
-
} | {
|
|
77
|
-
type: "cond.price" | "cond.balance" | "cond.allowed_weekdays" | "cond.time_window";
|
|
78
|
-
config?: Record<string, any> | undefined;
|
|
79
|
-
} | {
|
|
80
|
-
type: "util.delay" | "util.note" | "util.log" | "util.stop" | "util.snapshot";
|
|
81
|
-
config?: Record<string, any> | undefined;
|
|
82
|
-
})[];
|
|
21
|
+
chain: any[];
|
|
83
22
|
description?: string | undefined;
|
|
23
|
+
trigger?: any;
|
|
84
24
|
}>;
|
|
85
25
|
export declare const CREATE_WORKFLOW_TOOL: {
|
|
86
26
|
readonly name: "ctrl_create_workflow";
|
|
@@ -147,8 +87,8 @@ export declare function handleCreateWorkflow(rawInput: unknown): Promise<{
|
|
|
147
87
|
workflowId: string;
|
|
148
88
|
activateUrl: string;
|
|
149
89
|
status: string;
|
|
150
|
-
trigger:
|
|
151
|
-
chain:
|
|
90
|
+
trigger: any;
|
|
91
|
+
chain: any[];
|
|
152
92
|
};
|
|
153
93
|
}>;
|
|
154
94
|
//# sourceMappingURL=create-workflow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-workflow.d.ts","sourceRoot":"","sources":["../../src/tools/create-workflow.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAQvB,eAAO,MAAM,yBAAyB
|
|
1
|
+
{"version":3,"file":"create-workflow.d.ts","sourceRoot":"","sources":["../../src/tools/create-workflow.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAQvB,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;EAA2B,CAAA;AAEjE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqFvB,CAAA;AAMV,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,OAAO;;;;;;;;;;;;GAmD3D"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ctrl_get_block_catalog — return the live block catalog from /api/mcp/block-catalog.
|
|
3
|
+
*
|
|
4
|
+
* Agents call this when they need the most up-to-date list of supported
|
|
5
|
+
* triggers/actions/conditions/utilities with their config field schemas.
|
|
6
|
+
* The route is auth-free (documentation) so this works without an API key.
|
|
7
|
+
*/
|
|
8
|
+
export interface BlockConfigField {
|
|
9
|
+
name: string;
|
|
10
|
+
type: string;
|
|
11
|
+
required: boolean;
|
|
12
|
+
default?: string | number | boolean;
|
|
13
|
+
enum_values?: string[];
|
|
14
|
+
description: string;
|
|
15
|
+
}
|
|
16
|
+
export interface CatalogEntry {
|
|
17
|
+
id: string;
|
|
18
|
+
label: string;
|
|
19
|
+
description: string;
|
|
20
|
+
config_fields: BlockConfigField[];
|
|
21
|
+
}
|
|
22
|
+
export interface BlockCatalog {
|
|
23
|
+
triggers: CatalogEntry[];
|
|
24
|
+
actions: CatalogEntry[];
|
|
25
|
+
conditions: CatalogEntry[];
|
|
26
|
+
utilities: CatalogEntry[];
|
|
27
|
+
}
|
|
28
|
+
export declare const GET_BLOCK_CATALOG_TOOL: {
|
|
29
|
+
readonly name: "ctrl_get_block_catalog";
|
|
30
|
+
readonly description: "Return the live catalog of every CTRL workflow block (trigger, action, condition, utility) with id, label, description, and config-field schemas. Call this BEFORE ctrl_create_workflow whenever you're unsure about a block's exact config shape, or whenever you want the freshest list of supported blocks (CTRL ships new blocks regularly — the static plugin schema may lag). Optional input: { category } to narrow to a single bucket.";
|
|
31
|
+
readonly inputSchema: {
|
|
32
|
+
readonly type: "object";
|
|
33
|
+
readonly properties: {
|
|
34
|
+
readonly category: {
|
|
35
|
+
readonly type: "string";
|
|
36
|
+
readonly enum: readonly ["trigger", "action", "condition", "utility"];
|
|
37
|
+
readonly description: "Optional. Filter to a single block bucket. Omit to get all four.";
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
export declare function handleGetBlockCatalog(rawInput: unknown): Promise<{
|
|
43
|
+
content: {
|
|
44
|
+
type: "text";
|
|
45
|
+
text: string;
|
|
46
|
+
}[];
|
|
47
|
+
structuredContent: Record<string, unknown>;
|
|
48
|
+
}>;
|
|
49
|
+
//# sourceMappingURL=get-block-catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-block-catalog.d.ts","sourceRoot":"","sources":["../../src/tools/get-block-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;IACnC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,gBAAgB,EAAE,CAAA;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,UAAU,EAAE,YAAY,EAAE,CAAA;IAC1B,SAAS,EAAE,YAAY,EAAE,CAAA;CAC1B;AAED,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;CAezB,CAAA;AAkBV,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,OAAO;;;;;uBAsDhB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;GAEnE"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ctrl_get_block_catalog — return the live block catalog from /api/mcp/block-catalog.
|
|
3
|
+
*
|
|
4
|
+
* Agents call this when they need the most up-to-date list of supported
|
|
5
|
+
* triggers/actions/conditions/utilities with their config field schemas.
|
|
6
|
+
* The route is auth-free (documentation) so this works without an API key.
|
|
7
|
+
*/
|
|
8
|
+
import { CTRL_API_BASE } from '../config.js';
|
|
9
|
+
export const GET_BLOCK_CATALOG_TOOL = {
|
|
10
|
+
name: 'ctrl_get_block_catalog',
|
|
11
|
+
description: "Return the live catalog of every CTRL workflow block (trigger, action, condition, utility) with id, label, description, and config-field schemas. Call this BEFORE ctrl_create_workflow whenever you're unsure about a block's exact config shape, or whenever you want the freshest list of supported blocks (CTRL ships new blocks regularly — the static plugin schema may lag). Optional input: { category } to narrow to a single bucket.",
|
|
12
|
+
inputSchema: {
|
|
13
|
+
type: 'object',
|
|
14
|
+
properties: {
|
|
15
|
+
category: {
|
|
16
|
+
type: 'string',
|
|
17
|
+
enum: ['trigger', 'action', 'condition', 'utility'],
|
|
18
|
+
description: 'Optional. Filter to a single block bucket. Omit to get all four.',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
function isCategory(v) {
|
|
24
|
+
return v === 'trigger' || v === 'action' || v === 'condition' || v === 'utility';
|
|
25
|
+
}
|
|
26
|
+
function summarize(entries) {
|
|
27
|
+
return entries
|
|
28
|
+
.map((e) => {
|
|
29
|
+
const req = e.config_fields.filter((f) => f.required).map((f) => f.name);
|
|
30
|
+
const reqStr = req.length ? ` [required: ${req.join(', ')}]` : '';
|
|
31
|
+
return ` • ${e.id} — ${e.description}${reqStr}`;
|
|
32
|
+
})
|
|
33
|
+
.join('\n');
|
|
34
|
+
}
|
|
35
|
+
export async function handleGetBlockCatalog(rawInput) {
|
|
36
|
+
const input = (rawInput ?? {});
|
|
37
|
+
const category = isCategory(input.category) ? input.category : undefined;
|
|
38
|
+
const url = new URL('/api/mcp/block-catalog', CTRL_API_BASE);
|
|
39
|
+
if (category)
|
|
40
|
+
url.searchParams.set('category', category);
|
|
41
|
+
const controller = new AbortController();
|
|
42
|
+
const timeout = setTimeout(() => controller.abort(), 15_000);
|
|
43
|
+
let res;
|
|
44
|
+
try {
|
|
45
|
+
res = await fetch(url, {
|
|
46
|
+
method: 'GET',
|
|
47
|
+
headers: {
|
|
48
|
+
Accept: 'application/json',
|
|
49
|
+
'User-Agent': '@daxaur/ctrl-mcp',
|
|
50
|
+
},
|
|
51
|
+
signal: controller.signal,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
finally {
|
|
55
|
+
clearTimeout(timeout);
|
|
56
|
+
}
|
|
57
|
+
if (!res.ok) {
|
|
58
|
+
throw new Error(`Block catalog fetch failed: HTTP ${res.status} ${res.statusText}`);
|
|
59
|
+
}
|
|
60
|
+
const catalog = (await res.json());
|
|
61
|
+
const lines = [];
|
|
62
|
+
if (!category || category === 'trigger') {
|
|
63
|
+
lines.push(`Triggers (${catalog.triggers.length}):`);
|
|
64
|
+
lines.push(summarize(catalog.triggers));
|
|
65
|
+
}
|
|
66
|
+
if (!category || category === 'action') {
|
|
67
|
+
lines.push(`\nActions (${catalog.actions.length}):`);
|
|
68
|
+
lines.push(summarize(catalog.actions));
|
|
69
|
+
}
|
|
70
|
+
if (!category || category === 'condition') {
|
|
71
|
+
lines.push(`\nConditions (${catalog.conditions.length}):`);
|
|
72
|
+
lines.push(summarize(catalog.conditions));
|
|
73
|
+
}
|
|
74
|
+
if (!category || category === 'utility') {
|
|
75
|
+
lines.push(`\nUtilities (${catalog.utilities.length}):`);
|
|
76
|
+
lines.push(summarize(catalog.utilities));
|
|
77
|
+
}
|
|
78
|
+
lines.push('\nUse the structuredContent payload for full config_fields metadata when wiring up ctrl_create_workflow.');
|
|
79
|
+
return {
|
|
80
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
81
|
+
structuredContent: catalog,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=get-block-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-block-catalog.js","sourceRoot":"","sources":["../../src/tools/get-block-catalog.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED