@andrewkimjoseph/celina-sdk 0.7.14 → 0.8.1
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 +6 -40
- package/build/analytics/mcp-tool-events.js +0 -12
- package/build/analytics/mcp-tool-events.js.map +1 -1
- package/build/analytics/wallet-extract.js +4 -3
- package/build/analytics/wallet-extract.js.map +1 -1
- package/build/config/chains.js +4 -1
- package/build/config/chains.js.map +1 -1
- package/build/config/sdk-config.d.ts +0 -4
- package/build/config/sdk-config.js +0 -4
- package/build/config/sdk-config.js.map +1 -1
- package/build/index.d.ts +0 -10
- package/build/index.js +0 -7
- package/build/index.js.map +1 -1
- package/build/services/token.service.d.ts +2 -1
- package/build/services/token.service.js +2 -1
- package/build/services/token.service.js.map +1 -1
- package/build/tools/catalog.d.ts +2 -0
- package/build/tools/catalog.js +15 -8
- package/build/tools/catalog.js.map +1 -1
- package/build/tools/domains/blockchain.js +3 -3
- package/build/tools/domains/blockchain.js.map +1 -1
- package/build/tools/domains/governance.js +3 -3
- package/build/tools/domains/governance.js.map +1 -1
- package/build/tools/domains/index.js +0 -2
- package/build/tools/domains/index.js.map +1 -1
- package/build/tools/domains/staking.js +2 -2
- package/build/tools/domains/staking.js.map +1 -1
- package/build/tools/domains/token.js +1 -1
- package/build/tools/domains/token.js.map +1 -1
- package/build/tools/filter.js +0 -13
- package/build/tools/filter.js.map +1 -1
- package/build/tools/index.d.ts +1 -2
- package/build/tools/index.js +1 -2
- package/build/tools/index.js.map +1 -1
- package/build/tools/schemas/common.d.ts +21 -24
- package/build/tools/schemas/common.js +34 -21
- package/build/tools/schemas/common.js.map +1 -1
- package/build/tools/types.d.ts +0 -26
- package/package.json +1 -2
- package/tests/README.md +2 -0
- package/tests/catalog/domains/chain-ext.ts +14 -14
- package/tests/catalog/domains/defi.ts +12 -12
- package/tests/catalog/operations.ts +2 -7
- package/build/clients/carbon-rest.d.ts +0 -17
- package/build/clients/carbon-rest.js +0 -59
- package/build/clients/carbon-rest.js.map +0 -1
- package/build/clients/carbon-sdk.d.ts +0 -31
- package/build/clients/carbon-sdk.js +0 -48
- package/build/clients/carbon-sdk.js.map +0 -1
- package/build/config/carbon.d.ts +0 -15
- package/build/config/carbon.js +0 -18
- package/build/config/carbon.js.map +0 -1
- package/build/services/carbon.service.d.ts +0 -73
- package/build/services/carbon.service.js +0 -204
- package/build/services/carbon.service.js.map +0 -1
- package/build/tools/domains/carbon.d.ts +0 -2
- package/build/tools/domains/carbon.js +0 -200
- package/build/tools/domains/carbon.js.map +0 -1
- package/build/tools/utils/carbon-prepare-handler.d.ts +0 -6
- package/build/tools/utils/carbon-prepare-handler.js +0 -17
- package/build/tools/utils/carbon-prepare-handler.js.map +0 -1
- package/build/types/carbon.d.ts +0 -31
- package/build/types/carbon.js +0 -2
- package/build/types/carbon.js.map +0 -1
- package/build/utils/carbon-execution.d.ts +0 -11
- package/build/utils/carbon-execution.js +0 -106
- package/build/utils/carbon-execution.js.map +0 -1
- package/build/utils/carbon-prepared-flow.d.ts +0 -11
- package/build/utils/carbon-prepared-flow.js +0 -28
- package/build/utils/carbon-prepared-flow.js.map +0 -1
- package/build/utils/carbon-rest-adapter.d.ts +0 -8
- package/build/utils/carbon-rest-adapter.js +0 -79
- package/build/utils/carbon-rest-adapter.js.map +0 -1
- package/build/utils/carbon-step-labels.d.ts +0 -12
- package/build/utils/carbon-step-labels.js +0 -180
- package/build/utils/carbon-step-labels.js.map +0 -1
- package/build/utils/carbon-token.d.ts +0 -10
- package/build/utils/carbon-token.js +0 -39
- package/build/utils/carbon-token.js.map +0 -1
- package/build/utils/finalize-carbon-prepare.d.ts +0 -10
- package/build/utils/finalize-carbon-prepare.js +0 -17
- package/build/utils/finalize-carbon-prepare.js.map +0 -1
- package/tests/catalog/domains/carbon.ts +0 -547
package/build/tools/filter.js
CHANGED
|
@@ -1,16 +1,9 @@
|
|
|
1
1
|
import { requireWalletParamsInInputSchema } from "./schemas/wallet-params.js";
|
|
2
|
-
const CARBON_PREPARE_PREFIX = "prepare_carbon_";
|
|
3
|
-
const CARBON_EXECUTE_PREFIX = "execute_carbon_";
|
|
4
2
|
const ESTIMATE_PREFIX = "estimate_";
|
|
5
|
-
/** Tools where hosted MCP accepts wallet params OR an alternate identifier. */
|
|
6
|
-
const HOSTED_WALLET_ALTERNATIVES = {
|
|
7
|
-
get_carbon_activity: ["strategy_id"],
|
|
8
|
-
};
|
|
9
3
|
function requireExplicitWalletAddresses(definitions) {
|
|
10
4
|
return definitions.map((def) => {
|
|
11
5
|
const inputSchema = requireWalletParamsInInputSchema(def.inputSchema, {
|
|
12
6
|
toolName: def.name,
|
|
13
|
-
walletAlternatives: HOSTED_WALLET_ALTERNATIVES[def.name],
|
|
14
7
|
});
|
|
15
8
|
if (inputSchema === def.inputSchema) {
|
|
16
9
|
return def;
|
|
@@ -34,12 +27,6 @@ export function filterToolDefinitions(definitions, options = {}) {
|
|
|
34
27
|
if (options.names?.length && !options.names.includes(def.name)) {
|
|
35
28
|
return false;
|
|
36
29
|
}
|
|
37
|
-
if (def.name.startsWith(CARBON_PREPARE_PREFIX) && options.carbonPrepareEnabled === false) {
|
|
38
|
-
return false;
|
|
39
|
-
}
|
|
40
|
-
if (def.name.startsWith(CARBON_EXECUTE_PREFIX) && options.carbonExecuteEnabled === false) {
|
|
41
|
-
return false;
|
|
42
|
-
}
|
|
43
30
|
if (def.name.startsWith(ESTIMATE_PREFIX) && options.estimateToolsEnabled === false) {
|
|
44
31
|
return false;
|
|
45
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/tools/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,4BAA4B,CAAC;AAG9E,MAAM,
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/tools/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,4BAA4B,CAAC;AAG9E,MAAM,eAAe,GAAG,WAAW,CAAC;AAEpC,SAAS,8BAA8B,CACrC,WAA6B;IAE7B,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC7B,MAAM,WAAW,GAAG,gCAAgC,CAAC,GAAG,CAAC,WAAW,EAAE;YACpE,QAAQ,EAAE,GAAG,CAAC,IAAI;SACnB,CAAC,CAAC;QACH,IAAI,WAAW,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC;YACpC,OAAO,GAAG,CAAC;QACb,CAAC;QACD,OAAO,EAAE,GAAG,GAAG,EAAE,WAAW,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,WAA6B,EAC7B,UAA8B,EAAE;IAEhC,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QAC1C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,oBAAoB,KAAK,KAAK,EAAE,CAAC;YACnF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,OAAO,CAAC,qBAAqB,KAAK,KAAK,IAAI,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;YACvE,IACE,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC;gBAC5C,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAClD,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,IACE,OAAO,CAAC,uBAAuB,KAAK,KAAK;YACzC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,cAAc,CAAC,EACzC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,qBAAqB,KAAK,KAAK,EAAE,CAAC;QAC5C,OAAO,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/build/tools/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
export { ALL_TOOL_DEFINITIONS, getToolNames, getMcpToolNames, getBrowserToolNames, getToolsByFamily, getToolDefinition, validateToolCatalogSnakeCase, } from "./catalog.js";
|
|
1
|
+
export { ALL_TOOL_DEFINITIONS, getToolNames, getMcpToolNames, getBrowserToolNames, getToolsByFamily, getToolDefinition, validateToolCatalogSnakeCase, assertSnakeCaseRecordKeys, getToolInputSchemaShape, } from "./catalog.js";
|
|
2
2
|
export { filterToolDefinitions } from "./filter.js";
|
|
3
3
|
export { getSwapQuoteWithFallback, prepareSwapWithFallback, type SwapProtocol, type SwapQuoteResult, type SwapPrepareParams, } from "./swap-routing.js";
|
|
4
4
|
export * from "./schemas/common.js";
|
|
5
5
|
export type { FilterToolsOptions, McpToolAnnotations, McpToolMeta, ToolDefinition, ToolFamily, ToolRuntime, ToolRuntimeExecutors, ToolRuntimeHooks, ToolSurface, WalletInput, } from "./types.js";
|
|
6
6
|
export { normalizeRegistryTokenInput } from "./utils/normalize-token.js";
|
|
7
|
-
export { runCarbonPrepare } from "./utils/carbon-prepare-handler.js";
|
package/build/tools/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
export { ALL_TOOL_DEFINITIONS, getToolNames, getMcpToolNames, getBrowserToolNames, getToolsByFamily, getToolDefinition, validateToolCatalogSnakeCase, } from "./catalog.js";
|
|
1
|
+
export { ALL_TOOL_DEFINITIONS, getToolNames, getMcpToolNames, getBrowserToolNames, getToolsByFamily, getToolDefinition, validateToolCatalogSnakeCase, assertSnakeCaseRecordKeys, getToolInputSchemaShape, } from "./catalog.js";
|
|
2
2
|
export { filterToolDefinitions } from "./filter.js";
|
|
3
3
|
export { getSwapQuoteWithFallback, prepareSwapWithFallback, } from "./swap-routing.js";
|
|
4
4
|
export * from "./schemas/common.js";
|
|
5
5
|
export { normalizeRegistryTokenInput } from "./utils/normalize-token.js";
|
|
6
|
-
export { runCarbonPrepare } from "./utils/carbon-prepare-handler.js";
|
|
7
6
|
//# sourceMappingURL=index.js.map
|
package/build/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,4BAA4B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,4BAA4B,EAC5B,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,wBAAwB,EACxB,uBAAuB,GAIxB,MAAM,mBAAmB,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AAapC,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -7,28 +7,25 @@ export declare const WALLET_PARAM_KEYS: readonly ["address", "wallet_address", "
|
|
|
7
7
|
export declare const addressOrEnsSchema: z.ZodString;
|
|
8
8
|
export declare const blockIdSchema: z.ZodEffects<z.ZodUnion<[z.ZodLiteral<"latest">, z.ZodLiteral<"pending">, z.ZodNumber, z.ZodString]>, string | number, unknown>;
|
|
9
9
|
export declare const positiveIntSchema: z.ZodEffects<z.ZodNumber, number, unknown>;
|
|
10
|
+
export declare const nonNegativeIntSchema: z.ZodEffects<z.ZodNumber, number, unknown>;
|
|
11
|
+
export declare const coercedNumberSchema: z.ZodEffects<z.ZodNumber, number, unknown>;
|
|
12
|
+
export declare const slippageToleranceSchema: z.ZodEffects<z.ZodNumber, number, unknown>;
|
|
13
|
+
/** Optional positive integer with an upper bound (e.g. page_size caps). */
|
|
14
|
+
export declare function optionalBoundedPositiveInt(max: number): z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
|
|
15
|
+
/** Optional positive integer with min/max (e.g. get_latest_blocks count). */
|
|
16
|
+
export declare function optionalBoundedPositiveIntRange(min: number, max: number): z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
|
|
10
17
|
export declare const tokenSymbolSchema: z.ZodString;
|
|
11
18
|
export declare const ensNameSchema: z.ZodString;
|
|
12
19
|
export declare const httpRequestPathSchema: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>, string, unknown>;
|
|
13
20
|
export declare const tokenIdSchema: z.ZodString;
|
|
14
21
|
export declare const abiSchema: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">;
|
|
15
22
|
export declare const paginationFields: {
|
|
16
|
-
readonly page: z.ZodOptional<z.ZodNumber
|
|
17
|
-
readonly page_size: z.ZodOptional<z.ZodNumber
|
|
18
|
-
readonly offset: z.ZodOptional<z.ZodNumber
|
|
19
|
-
readonly limit: z.ZodOptional<z.ZodNumber
|
|
23
|
+
readonly page: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
|
|
24
|
+
readonly page_size: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
|
|
25
|
+
readonly offset: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
|
|
26
|
+
readonly limit: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
|
|
20
27
|
};
|
|
21
28
|
export declare const hexDataSchema: z.ZodOptional<z.ZodString>;
|
|
22
|
-
export declare const carbonWriteSchema: z.ZodObject<{
|
|
23
|
-
wallet_address: z.ZodOptional<z.ZodString>;
|
|
24
|
-
from: z.ZodOptional<z.ZodString>;
|
|
25
|
-
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
26
|
-
wallet_address: z.ZodOptional<z.ZodString>;
|
|
27
|
-
from: z.ZodOptional<z.ZodString>;
|
|
28
|
-
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
29
|
-
wallet_address: z.ZodOptional<z.ZodString>;
|
|
30
|
-
from: z.ZodOptional<z.ZodString>;
|
|
31
|
-
}, z.ZodTypeAny, "passthrough">>;
|
|
32
29
|
export declare const mentoFxQuoteSchema: z.ZodObject<{
|
|
33
30
|
token_in: z.ZodString;
|
|
34
31
|
token_out: z.ZodString;
|
|
@@ -52,8 +49,8 @@ export declare const mentoFxWalletSchema: z.ZodObject<{
|
|
|
52
49
|
from: z.ZodOptional<z.ZodString>;
|
|
53
50
|
} & {
|
|
54
51
|
recipient: z.ZodOptional<z.ZodString>;
|
|
55
|
-
slippage_tolerance: z.ZodOptional<z.ZodNumber
|
|
56
|
-
deadline_minutes: z.ZodOptional<z.ZodNumber
|
|
52
|
+
slippage_tolerance: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
|
|
53
|
+
deadline_minutes: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
|
|
57
54
|
}, "strip", z.ZodTypeAny, {
|
|
58
55
|
amount: string;
|
|
59
56
|
token_in: string;
|
|
@@ -68,8 +65,8 @@ export declare const mentoFxWalletSchema: z.ZodObject<{
|
|
|
68
65
|
token_out: string;
|
|
69
66
|
from?: string | undefined;
|
|
70
67
|
recipient?: string | undefined;
|
|
71
|
-
slippage_tolerance?:
|
|
72
|
-
deadline_minutes?:
|
|
68
|
+
slippage_tolerance?: unknown;
|
|
69
|
+
deadline_minutes?: unknown;
|
|
73
70
|
}>;
|
|
74
71
|
export declare const uniswapQuoteSchema: z.ZodObject<{
|
|
75
72
|
token_in: z.ZodString;
|
|
@@ -94,8 +91,8 @@ export declare const uniswapWalletSchema: z.ZodObject<{
|
|
|
94
91
|
from: z.ZodOptional<z.ZodString>;
|
|
95
92
|
} & {
|
|
96
93
|
recipient: z.ZodOptional<z.ZodString>;
|
|
97
|
-
slippage_tolerance: z.ZodOptional<z.ZodNumber
|
|
98
|
-
deadline_minutes: z.ZodOptional<z.ZodNumber
|
|
94
|
+
slippage_tolerance: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
|
|
95
|
+
deadline_minutes: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
|
|
99
96
|
}, "strip", z.ZodTypeAny, {
|
|
100
97
|
amount: string;
|
|
101
98
|
token_in: string;
|
|
@@ -110,8 +107,8 @@ export declare const uniswapWalletSchema: z.ZodObject<{
|
|
|
110
107
|
token_out: string;
|
|
111
108
|
from?: string | undefined;
|
|
112
109
|
recipient?: string | undefined;
|
|
113
|
-
slippage_tolerance?:
|
|
114
|
-
deadline_minutes?:
|
|
110
|
+
slippage_tolerance?: unknown;
|
|
111
|
+
deadline_minutes?: unknown;
|
|
115
112
|
}>;
|
|
116
113
|
export declare const goodDollarReserveQuoteSchema: z.ZodObject<{
|
|
117
114
|
token_in: z.ZodString;
|
|
@@ -136,7 +133,7 @@ export declare const goodDollarReserveWalletSchema: z.ZodObject<{
|
|
|
136
133
|
from: z.ZodOptional<z.ZodString>;
|
|
137
134
|
} & {
|
|
138
135
|
recipient: z.ZodOptional<z.ZodString>;
|
|
139
|
-
slippage_tolerance: z.ZodOptional<z.ZodNumber
|
|
136
|
+
slippage_tolerance: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
|
|
140
137
|
}, "strip", z.ZodTypeAny, {
|
|
141
138
|
amount: string;
|
|
142
139
|
token_in: string;
|
|
@@ -150,5 +147,5 @@ export declare const goodDollarReserveWalletSchema: z.ZodObject<{
|
|
|
150
147
|
token_out: string;
|
|
151
148
|
from?: string | undefined;
|
|
152
149
|
recipient?: string | undefined;
|
|
153
|
-
slippage_tolerance?:
|
|
150
|
+
slippage_tolerance?: unknown;
|
|
154
151
|
}>;
|
|
@@ -41,6 +41,16 @@ function normalizePositiveInt(value) {
|
|
|
41
41
|
}
|
|
42
42
|
return value;
|
|
43
43
|
}
|
|
44
|
+
function normalizeDecimalNumber(value) {
|
|
45
|
+
if (typeof value === "string") {
|
|
46
|
+
const trimmed = value.trim();
|
|
47
|
+
if (/^-?\d+(\.\d+)?$/.test(trimmed)) {
|
|
48
|
+
return Number(trimmed);
|
|
49
|
+
}
|
|
50
|
+
return trimmed;
|
|
51
|
+
}
|
|
52
|
+
return value;
|
|
53
|
+
}
|
|
44
54
|
export const blockIdSchema = z.preprocess(normalizeBlockId, z.union([
|
|
45
55
|
z.literal("latest"),
|
|
46
56
|
z.literal("pending"),
|
|
@@ -48,6 +58,21 @@ export const blockIdSchema = z.preprocess(normalizeBlockId, z.union([
|
|
|
48
58
|
z.string().regex(/^0x[a-fA-F0-9]+$/, "Invalid block hash"),
|
|
49
59
|
]));
|
|
50
60
|
export const positiveIntSchema = z.preprocess(normalizePositiveInt, z.number().int().positive());
|
|
61
|
+
export const nonNegativeIntSchema = z.preprocess(normalizePositiveInt, z.number().int().min(0));
|
|
62
|
+
export const coercedNumberSchema = z.preprocess(normalizeDecimalNumber, z.number());
|
|
63
|
+
export const slippageToleranceSchema = z.preprocess(normalizeDecimalNumber, z.number().min(0).max(20));
|
|
64
|
+
/** Optional positive integer with an upper bound (e.g. page_size caps). */
|
|
65
|
+
export function optionalBoundedPositiveInt(max) {
|
|
66
|
+
return z
|
|
67
|
+
.preprocess(normalizePositiveInt, z.number().int().min(1).max(max))
|
|
68
|
+
.optional();
|
|
69
|
+
}
|
|
70
|
+
/** Optional positive integer with min/max (e.g. get_latest_blocks count). */
|
|
71
|
+
export function optionalBoundedPositiveIntRange(min, max) {
|
|
72
|
+
return z
|
|
73
|
+
.preprocess(normalizePositiveInt, z.number().int().min(min).max(max))
|
|
74
|
+
.optional();
|
|
75
|
+
}
|
|
51
76
|
export const tokenSymbolSchema = z
|
|
52
77
|
.string()
|
|
53
78
|
.describe("Celo mainnet token symbol (e.g. CELO, USDm, USDC, USDT)");
|
|
@@ -73,22 +98,16 @@ export const abiSchema = z
|
|
|
73
98
|
.min(1)
|
|
74
99
|
.describe("Contract ABI as a JSON array");
|
|
75
100
|
export const paginationFields = {
|
|
76
|
-
page:
|
|
77
|
-
page_size:
|
|
78
|
-
offset:
|
|
79
|
-
limit:
|
|
101
|
+
page: positiveIntSchema.optional(),
|
|
102
|
+
page_size: positiveIntSchema.optional(),
|
|
103
|
+
offset: nonNegativeIntSchema.optional(),
|
|
104
|
+
limit: positiveIntSchema.optional(),
|
|
80
105
|
};
|
|
81
106
|
export const hexDataSchema = z
|
|
82
107
|
.string()
|
|
83
108
|
.regex(/^0x[a-fA-F0-9]*$/)
|
|
84
109
|
.optional()
|
|
85
110
|
.describe("Optional transaction calldata (hex)");
|
|
86
|
-
export const carbonWriteSchema = z
|
|
87
|
-
.object({
|
|
88
|
-
wallet_address: optionalWalletAddressSchema,
|
|
89
|
-
from: addressSchema.optional(),
|
|
90
|
-
})
|
|
91
|
-
.passthrough();
|
|
92
111
|
export const mentoFxQuoteSchema = z.object({
|
|
93
112
|
token_in: tokenSymbolSchema.describe("Input token symbol or address"),
|
|
94
113
|
token_out: tokenSymbolSchema.describe("Output token symbol or address"),
|
|
@@ -99,16 +118,10 @@ export const mentoFxWalletSchema = mentoFxQuoteSchema.extend({
|
|
|
99
118
|
recipient: addressSchema
|
|
100
119
|
.optional()
|
|
101
120
|
.describe("Address that receives output tokens (defaults to signer)"),
|
|
102
|
-
slippage_tolerance:
|
|
103
|
-
.number()
|
|
104
|
-
.min(0)
|
|
105
|
-
.max(20)
|
|
121
|
+
slippage_tolerance: slippageToleranceSchema
|
|
106
122
|
.optional()
|
|
107
123
|
.describe("Max slippage in percent (default 0.5)"),
|
|
108
|
-
deadline_minutes:
|
|
109
|
-
.number()
|
|
110
|
-
.int()
|
|
111
|
-
.positive()
|
|
124
|
+
deadline_minutes: positiveIntSchema
|
|
112
125
|
.optional()
|
|
113
126
|
.describe("Transaction deadline in minutes (default 5)"),
|
|
114
127
|
});
|
|
@@ -120,8 +133,8 @@ export const uniswapQuoteSchema = z.object({
|
|
|
120
133
|
});
|
|
121
134
|
export const uniswapWalletSchema = uniswapQuoteSchema.extend({
|
|
122
135
|
recipient: addressSchema.optional(),
|
|
123
|
-
slippage_tolerance:
|
|
124
|
-
deadline_minutes:
|
|
136
|
+
slippage_tolerance: slippageToleranceSchema.optional(),
|
|
137
|
+
deadline_minutes: positiveIntSchema.optional(),
|
|
125
138
|
});
|
|
126
139
|
export const goodDollarReserveQuoteSchema = z.object({
|
|
127
140
|
token_in: tokenSymbolSchema.describe("GoodDollar or G$"),
|
|
@@ -131,6 +144,6 @@ export const goodDollarReserveQuoteSchema = z.object({
|
|
|
131
144
|
});
|
|
132
145
|
export const goodDollarReserveWalletSchema = goodDollarReserveQuoteSchema.extend({
|
|
133
146
|
recipient: addressSchema.optional(),
|
|
134
|
-
slippage_tolerance:
|
|
147
|
+
slippage_tolerance: slippageToleranceSchema.optional(),
|
|
135
148
|
});
|
|
136
149
|
//# sourceMappingURL=common.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/tools/schemas/common.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/tools/schemas/common.ts"],"names":[],"mappings":"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"}
|
package/build/tools/types.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { z } from "zod";
|
|
2
2
|
import type { CelinaClient } from "../index.js";
|
|
3
|
-
import type { CarbonWriteBody } from "../services/carbon.service.js";
|
|
4
3
|
export type ToolSurface = "mcp" | "browser";
|
|
5
4
|
export type ToolFamily = "read" | "prepare" | "execute";
|
|
6
5
|
export type ToolEnvRequirement = "CELO_PRIVATE_KEY" | "SELF_AGENT_PRIVATE_KEY" | "SELF_SESSION";
|
|
@@ -27,13 +26,6 @@ export type ToolRuntimeHooks = {
|
|
|
27
26
|
token: string;
|
|
28
27
|
amount: string;
|
|
29
28
|
}) => Promise<void>;
|
|
30
|
-
carbon?: {
|
|
31
|
-
validateBody?: (toolName: string, body: CarbonWriteBody) => void;
|
|
32
|
-
prepare?: (toolName: string, sender: `0x${string}`, prepareFn: (body: CarbonWriteBody) => Promise<unknown>, body: CarbonWriteBody, options?: {
|
|
33
|
-
marketPriceFallback?: boolean;
|
|
34
|
-
concentrated?: boolean;
|
|
35
|
-
}) => Promise<unknown>;
|
|
36
|
-
};
|
|
37
29
|
};
|
|
38
30
|
export type TransactionExecutors = {
|
|
39
31
|
estimateSend: (to: `0x${string}`, token: string, amount: string) => Promise<unknown>;
|
|
@@ -67,21 +59,6 @@ export type AaveExecutors = {
|
|
|
67
59
|
supply: (token: string, amount: string) => Promise<unknown>;
|
|
68
60
|
withdraw: (token: string, amount?: string, withdrawMax?: boolean) => Promise<unknown>;
|
|
69
61
|
};
|
|
70
|
-
export type CarbonWriteExecutors = {
|
|
71
|
-
executeLimitOrder: (body: Record<string, unknown>) => Promise<unknown>;
|
|
72
|
-
executeRangeOrder: (body: Record<string, unknown>) => Promise<unknown>;
|
|
73
|
-
executeRecurringStrategy: (body: Record<string, unknown>) => Promise<unknown>;
|
|
74
|
-
executeConcentratedStrategy: (body: Record<string, unknown>) => Promise<unknown>;
|
|
75
|
-
executeFullRangeStrategy: (body: Record<string, unknown>) => Promise<unknown>;
|
|
76
|
-
executeRepriceStrategy: (body: Record<string, unknown>) => Promise<unknown>;
|
|
77
|
-
executeEditStrategy: (body: Record<string, unknown>) => Promise<unknown>;
|
|
78
|
-
executeDepositBudget: (body: Record<string, unknown>) => Promise<unknown>;
|
|
79
|
-
executeWithdrawBudget: (body: Record<string, unknown>) => Promise<unknown>;
|
|
80
|
-
executePauseStrategy: (body: Record<string, unknown>) => Promise<unknown>;
|
|
81
|
-
executeResumeStrategy: (body: Record<string, unknown>) => Promise<unknown>;
|
|
82
|
-
executeDeleteStrategy: (body: Record<string, unknown>) => Promise<unknown>;
|
|
83
|
-
executeTrade: (body: Record<string, unknown>) => Promise<unknown>;
|
|
84
|
-
};
|
|
85
62
|
export type GoodDollarWriteExecutors = {
|
|
86
63
|
claimDailyUbi: () => Promise<unknown>;
|
|
87
64
|
estimateReserveSwap: (tokenIn: string, tokenOut: string, amount: string, options?: {
|
|
@@ -110,7 +87,6 @@ export type ToolRuntimeExecutors = {
|
|
|
110
87
|
mentoFx?: MentoFxExecutors;
|
|
111
88
|
uniswap?: UniswapExecutors;
|
|
112
89
|
aave?: AaveExecutors;
|
|
113
|
-
carbonWrite?: CarbonWriteExecutors;
|
|
114
90
|
gooddollarWrite?: GoodDollarWriteExecutors;
|
|
115
91
|
self?: SelfExecutors;
|
|
116
92
|
};
|
|
@@ -139,8 +115,6 @@ export type FilterToolsOptions = {
|
|
|
139
115
|
surface?: ToolSurface;
|
|
140
116
|
families?: ToolFamily[];
|
|
141
117
|
names?: string[];
|
|
142
|
-
carbonPrepareEnabled?: boolean;
|
|
143
|
-
carbonExecuteEnabled?: boolean;
|
|
144
118
|
/** When false, omit tools that require CELO_PRIVATE_KEY or SELF_AGENT_PRIVATE_KEY. Default true. */
|
|
145
119
|
serverKeyToolsEnabled?: boolean;
|
|
146
120
|
/** When false, omit Self registration session tools. Default true. */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@andrewkimjoseph/celina-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"description": "Celina SDK — Celo mainnet reads and unsigned transaction preparation for frontend apps.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -77,7 +77,6 @@
|
|
|
77
77
|
"zod": "^3.24.3",
|
|
78
78
|
"@amplitude/analytics-node": "^1.5.21",
|
|
79
79
|
"@noble/ed25519": "^3.1.0",
|
|
80
|
-
"@bancor/carbon-sdk": "0.0.130-DEV",
|
|
81
80
|
"@mento-protocol/mento-sdk": "^3.2.8",
|
|
82
81
|
"@uniswap/sdk-core": "^7.16.1",
|
|
83
82
|
"@uniswap/universal-router-sdk": "^5.5.1",
|
package/tests/README.md
CHANGED
|
@@ -63,6 +63,8 @@ Writes and destructive Self flows are **off by default** so `npm test` does not
|
|
|
63
63
|
|
|
64
64
|
At least one of `sdk` or `mcp` must be set. SDK-only prepare methods (no MCP tool yet) still belong in the catalog for SDK regression.
|
|
65
65
|
|
|
66
|
+
**Naming:** `sdk.invoke` uses the **camelCase** TypeScript client API (`pageSize`, `tokenIn`, …). `mcp.arguments` must use **snake_case tool input keys only** (`page_size`, `token_in`, …) — never copy SDK option names into MCP arguments. Unit tests enforce this for every `MCP_OPERATIONS` entry.
|
|
67
|
+
|
|
66
68
|
## Fixtures
|
|
67
69
|
|
|
68
70
|
Stable mainnet constants live in `tests/fixtures/mainnet.ts`. A recent transaction hash is resolved once per process from the latest block.
|
|
@@ -13,7 +13,7 @@ export const governanceOperations: OperationSpec[] = [
|
|
|
13
13
|
},
|
|
14
14
|
mcp: {
|
|
15
15
|
tool: "get_governance_proposals",
|
|
16
|
-
arguments: () => ({ page: 1,
|
|
16
|
+
arguments: () => ({ page: 1, page_size: 5 }),
|
|
17
17
|
},
|
|
18
18
|
assert: (result) => {
|
|
19
19
|
const obj = assertHasKeys(result, ["proposals", "pagination"]);
|
|
@@ -30,7 +30,7 @@ export const governanceOperations: OperationSpec[] = [
|
|
|
30
30
|
},
|
|
31
31
|
mcp: {
|
|
32
32
|
tool: "get_proposal_details",
|
|
33
|
-
arguments: (fx) => ({
|
|
33
|
+
arguments: (fx) => ({ proposal_id: fx.proposalId }),
|
|
34
34
|
},
|
|
35
35
|
assert: (result) => {
|
|
36
36
|
assertHasKeys(result, ["proposal"]);
|
|
@@ -79,7 +79,7 @@ export const stakingOperations: OperationSpec[] = [
|
|
|
79
79
|
},
|
|
80
80
|
mcp: {
|
|
81
81
|
tool: "get_validator_groups",
|
|
82
|
-
arguments: () => ({ page: 1,
|
|
82
|
+
arguments: () => ({ page: 1, page_size: 5 }),
|
|
83
83
|
},
|
|
84
84
|
assert: (result) => {
|
|
85
85
|
const obj = assertHasKeys(result, ["groups"]);
|
|
@@ -96,7 +96,7 @@ export const stakingOperations: OperationSpec[] = [
|
|
|
96
96
|
},
|
|
97
97
|
mcp: {
|
|
98
98
|
tool: "get_validator_group_details",
|
|
99
|
-
arguments: (fx) => ({
|
|
99
|
+
arguments: (fx) => ({ group_address: fx.validatorGroup }),
|
|
100
100
|
},
|
|
101
101
|
assert: (result) => {
|
|
102
102
|
assertHasKeys(result, ["address", "name"]);
|
|
@@ -131,8 +131,8 @@ export const nftOperations: OperationSpec[] = [
|
|
|
131
131
|
mcp: {
|
|
132
132
|
tool: "get_nft_info",
|
|
133
133
|
arguments: (fx) => ({
|
|
134
|
-
|
|
135
|
-
|
|
134
|
+
contract_address: fx.saidContract,
|
|
135
|
+
token_id: fx.saidTokenId,
|
|
136
136
|
}),
|
|
137
137
|
},
|
|
138
138
|
assert: (result) => {
|
|
@@ -150,7 +150,7 @@ export const nftOperations: OperationSpec[] = [
|
|
|
150
150
|
mcp: {
|
|
151
151
|
tool: "get_nft_balance",
|
|
152
152
|
arguments: (fx) => ({
|
|
153
|
-
|
|
153
|
+
contract_address: fx.saidContract,
|
|
154
154
|
address: fx.saidOwner,
|
|
155
155
|
}),
|
|
156
156
|
},
|
|
@@ -177,10 +177,10 @@ export const contractOperations: OperationSpec[] = [
|
|
|
177
177
|
mcp: {
|
|
178
178
|
tool: "call_contract_function",
|
|
179
179
|
arguments: (fx) => ({
|
|
180
|
-
|
|
180
|
+
contract_address: fx.usdm,
|
|
181
181
|
abi: fx.erc20SymbolAbi,
|
|
182
|
-
|
|
183
|
-
|
|
182
|
+
function_name: "symbol",
|
|
183
|
+
function_args: [],
|
|
184
184
|
}),
|
|
185
185
|
},
|
|
186
186
|
assert: (result) => {
|
|
@@ -205,11 +205,11 @@ export const contractOperations: OperationSpec[] = [
|
|
|
205
205
|
mcp: {
|
|
206
206
|
tool: "estimate_contract_gas",
|
|
207
207
|
arguments: (fx) => ({
|
|
208
|
-
|
|
208
|
+
contract_address: fx.usdm,
|
|
209
209
|
abi: fx.erc20SymbolAbi,
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
210
|
+
function_name: "symbol",
|
|
211
|
+
function_args: [],
|
|
212
|
+
from_address: fx.signerAddress ?? fx.wallet,
|
|
213
213
|
}),
|
|
214
214
|
},
|
|
215
215
|
assert: (result) => {
|
|
@@ -18,8 +18,8 @@ export const mentoFxOperations: OperationSpec[] = [
|
|
|
18
18
|
mcp: {
|
|
19
19
|
tool: "get_mento_fx_quote",
|
|
20
20
|
arguments: () => ({
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
token_in: "USDm",
|
|
22
|
+
token_out: "EURm",
|
|
23
23
|
amount: "1",
|
|
24
24
|
}),
|
|
25
25
|
},
|
|
@@ -39,8 +39,8 @@ export const mentoFxOperations: OperationSpec[] = [
|
|
|
39
39
|
mcp: {
|
|
40
40
|
tool: "estimate_mento_fx",
|
|
41
41
|
arguments: () => ({
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
token_in: "USDm",
|
|
43
|
+
token_out: "EURm",
|
|
44
44
|
amount: "1",
|
|
45
45
|
}),
|
|
46
46
|
},
|
|
@@ -69,8 +69,8 @@ export const mentoFxOperations: OperationSpec[] = [
|
|
|
69
69
|
mcp: {
|
|
70
70
|
tool: "execute_mento_fx",
|
|
71
71
|
arguments: () => ({
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
token_in: "USDm",
|
|
73
|
+
token_out: "EURm",
|
|
74
74
|
amount: "0.01",
|
|
75
75
|
}),
|
|
76
76
|
},
|
|
@@ -91,8 +91,8 @@ export const uniswapOperations: OperationSpec[] = [
|
|
|
91
91
|
mcp: {
|
|
92
92
|
tool: "get_uniswap_quote",
|
|
93
93
|
arguments: () => ({
|
|
94
|
-
|
|
95
|
-
|
|
94
|
+
token_in: "CELO",
|
|
95
|
+
token_out: "USDC",
|
|
96
96
|
amount: "0.001",
|
|
97
97
|
}),
|
|
98
98
|
},
|
|
@@ -117,8 +117,8 @@ export const uniswapOperations: OperationSpec[] = [
|
|
|
117
117
|
mcp: {
|
|
118
118
|
tool: "estimate_uniswap_swap",
|
|
119
119
|
arguments: () => ({
|
|
120
|
-
|
|
121
|
-
|
|
120
|
+
token_in: "CELO",
|
|
121
|
+
token_out: "USDC",
|
|
122
122
|
amount: "0.001",
|
|
123
123
|
}),
|
|
124
124
|
},
|
|
@@ -152,8 +152,8 @@ export const uniswapOperations: OperationSpec[] = [
|
|
|
152
152
|
mcp: {
|
|
153
153
|
tool: "execute_uniswap_swap",
|
|
154
154
|
arguments: () => ({
|
|
155
|
-
|
|
156
|
-
|
|
155
|
+
token_in: "CELO",
|
|
156
|
+
token_out: "USDC",
|
|
157
157
|
amount: "0.001",
|
|
158
158
|
}),
|
|
159
159
|
},
|
|
@@ -15,7 +15,6 @@ import {
|
|
|
15
15
|
stakingOperations,
|
|
16
16
|
} from "./domains/chain-ext.js";
|
|
17
17
|
import { selfOperations } from "./domains/self.js";
|
|
18
|
-
import { carbonOperations } from "./domains/carbon.js";
|
|
19
18
|
import { getMcpToolNames } from "../../src/tools/catalog.js";
|
|
20
19
|
import type { OperationSpec } from "./types.js";
|
|
21
20
|
|
|
@@ -33,7 +32,6 @@ export const OPERATIONS: OperationSpec[] = [
|
|
|
33
32
|
...nftOperations,
|
|
34
33
|
...contractOperations,
|
|
35
34
|
...selfOperations,
|
|
36
|
-
...carbonOperations,
|
|
37
35
|
];
|
|
38
36
|
|
|
39
37
|
export const MCP_OPERATIONS = OPERATIONS.filter(
|
|
@@ -46,11 +44,8 @@ export const SDK_OPERATIONS = OPERATIONS.filter(
|
|
|
46
44
|
Boolean(spec.sdk),
|
|
47
45
|
);
|
|
48
46
|
|
|
49
|
-
/** MCP tool names from the SDK tools catalog
|
|
50
|
-
export const MCP_TOOL_NAMES = getMcpToolNames(
|
|
51
|
-
carbonPrepareEnabled: true,
|
|
52
|
-
carbonExecuteEnabled: true,
|
|
53
|
-
});
|
|
47
|
+
/** MCP tool names from the SDK tools catalog. */
|
|
48
|
+
export const MCP_TOOL_NAMES = getMcpToolNames();
|
|
54
49
|
|
|
55
50
|
/** @deprecated Use MCP_TOOL_NAMES — kept for tests that import the operations-derived list. */
|
|
56
51
|
export const MCP_TOOL_NAMES_FROM_OPERATIONS = MCP_OPERATIONS.map(
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { CarbonRestSuccess } from "../types/carbon.js";
|
|
2
|
-
export declare class CarbonRestError extends Error {
|
|
3
|
-
readonly toolName: string;
|
|
4
|
-
readonly statusCode?: number | undefined;
|
|
5
|
-
constructor(message: string, toolName: string, statusCode?: number | undefined);
|
|
6
|
-
}
|
|
7
|
-
export type CarbonRestBody = Record<string, unknown>;
|
|
8
|
-
export declare class CarbonRestClient {
|
|
9
|
-
private readonly baseUrl;
|
|
10
|
-
private readonly timeoutMs;
|
|
11
|
-
constructor(baseUrl?: string, timeoutMs?: number);
|
|
12
|
-
private url;
|
|
13
|
-
/**
|
|
14
|
-
* POST to Carbon MCP REST. Always injects `chain: celo` unless caller overrides.
|
|
15
|
-
*/
|
|
16
|
-
postTool<T extends CarbonRestSuccess = CarbonRestSuccess>(toolName: string, body?: CarbonRestBody): Promise<T>;
|
|
17
|
-
}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { CARBON_CHAIN, DEFAULT_CARBON_REST_BASE_URL } from "../config/carbon.js";
|
|
2
|
-
const DEFAULT_TIMEOUT_MS = 60_000;
|
|
3
|
-
export class CarbonRestError extends Error {
|
|
4
|
-
toolName;
|
|
5
|
-
statusCode;
|
|
6
|
-
constructor(message, toolName, statusCode) {
|
|
7
|
-
super(message);
|
|
8
|
-
this.toolName = toolName;
|
|
9
|
-
this.statusCode = statusCode;
|
|
10
|
-
this.name = "CarbonRestError";
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
export class CarbonRestClient {
|
|
14
|
-
baseUrl;
|
|
15
|
-
timeoutMs;
|
|
16
|
-
constructor(baseUrl = DEFAULT_CARBON_REST_BASE_URL, timeoutMs = DEFAULT_TIMEOUT_MS) {
|
|
17
|
-
this.baseUrl = baseUrl;
|
|
18
|
-
this.timeoutMs = timeoutMs;
|
|
19
|
-
}
|
|
20
|
-
url(toolName) {
|
|
21
|
-
const base = this.baseUrl.replace(/\/$/, "");
|
|
22
|
-
return `${base}/tools/${toolName}`;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* POST to Carbon MCP REST. Always injects `chain: celo` unless caller overrides.
|
|
26
|
-
*/
|
|
27
|
-
async postTool(toolName, body = {}) {
|
|
28
|
-
const payload = {
|
|
29
|
-
chain: CARBON_CHAIN,
|
|
30
|
-
...body,
|
|
31
|
-
};
|
|
32
|
-
const response = await fetch(this.url(toolName), {
|
|
33
|
-
method: "POST",
|
|
34
|
-
headers: { "Content-Type": "application/json" },
|
|
35
|
-
body: JSON.stringify(payload),
|
|
36
|
-
signal: AbortSignal.timeout(this.timeoutMs),
|
|
37
|
-
});
|
|
38
|
-
const text = await response.text();
|
|
39
|
-
let json;
|
|
40
|
-
try {
|
|
41
|
-
json = text ? JSON.parse(text) : {};
|
|
42
|
-
}
|
|
43
|
-
catch {
|
|
44
|
-
throw new CarbonRestError(`Carbon API returned non-JSON (${response.status})`, toolName, response.status);
|
|
45
|
-
}
|
|
46
|
-
if (json.error && typeof json.error === "string") {
|
|
47
|
-
throw new CarbonRestError(json.error, toolName, response.status);
|
|
48
|
-
}
|
|
49
|
-
if (json.status === "not_found") {
|
|
50
|
-
const msg = typeof json.message === "string" ? json.message : "Carbon API not found";
|
|
51
|
-
throw new CarbonRestError(msg, toolName, response.status);
|
|
52
|
-
}
|
|
53
|
-
if (!response.ok) {
|
|
54
|
-
throw new CarbonRestError(`Carbon API HTTP ${response.status}`, toolName, response.status);
|
|
55
|
-
}
|
|
56
|
-
return json;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
//# sourceMappingURL=carbon-rest.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"carbon-rest.js","sourceRoot":"","sources":["../../src/clients/carbon-rest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAGjF,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAG7B;IACA;IAHX,YACE,OAAe,EACN,QAAgB,EAChB,UAAmB;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHN,aAAQ,GAAR,QAAQ,CAAQ;QAChB,eAAU,GAAV,UAAU,CAAS;QAG5B,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAID,MAAM,OAAO,gBAAgB;IAER;IACA;IAFnB,YACmB,UAAkB,4BAA4B,EAC9C,YAAoB,kBAAkB;QADtC,YAAO,GAAP,OAAO,CAAuC;QAC9C,cAAS,GAAT,SAAS,CAA6B;IACtD,CAAC;IAEI,GAAG,CAAC,QAAgB;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7C,OAAO,GAAG,IAAI,UAAU,QAAQ,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CACZ,QAAgB,EAChB,OAAuB,EAAE;QAEzB,MAAM,OAAO,GAAG;YACd,KAAK,EAAE,YAAY;YACnB,GAAG,IAAI;SACR,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC/C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;SAC5C,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,IAA6B,CAAC;QAClC,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAA6B,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,eAAe,CACvB,iCAAiC,QAAQ,CAAC,MAAM,GAAG,EACnD,QAAQ,EACR,QAAQ,CAAC,MAAM,CAChB,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACjD,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAChC,MAAM,GAAG,GACP,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC;YAC3E,MAAM,IAAI,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,eAAe,CACvB,mBAAmB,QAAQ,CAAC,MAAM,EAAE,EACpC,QAAQ,EACR,QAAQ,CAAC,MAAM,CAChB,CAAC;QACJ,CAAC;QAED,OAAO,IAAS,CAAC;IACnB,CAAC;CACF"}
|