@andrewkimjoseph/celina-sdk 0.4.6 → 0.4.8
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 +51 -21
- package/build/analytics/mcp-tool-events.js +1 -0
- package/build/analytics/mcp-tool-events.js.map +1 -1
- package/build/index.d.ts +1 -0
- package/build/index.js +1 -0
- package/build/index.js.map +1 -1
- package/build/utils/finalize-carbon-prepare.d.ts +10 -0
- package/build/utils/finalize-carbon-prepare.js +17 -0
- package/build/utils/finalize-carbon-prepare.js.map +1 -0
- package/package.json +1 -1
- package/tests/catalog/domains/blockchain.ts +18 -0
- package/tests/catalog/domains/carbon.ts +138 -0
package/README.md
CHANGED
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
# Celina SDK
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**`@andrewkimjoseph/celina-sdk@0.4.7`** — Celo mainnet library for frontend apps and agents: **reads** and **unsigned transaction preparation** (no private keys).
|
|
4
4
|
|
|
5
5
|
Pair with [wagmi](https://wagmi.sh) / viem — users sign prepared transactions in their wallet.
|
|
6
6
|
|
|
7
|
+
## Stack
|
|
8
|
+
|
|
9
|
+
Celina is layered from chain logic through agent tooling:
|
|
10
|
+
|
|
11
|
+
| Layer | Package | Role |
|
|
12
|
+
|-------|---------|------|
|
|
13
|
+
| **SDK** | `@andrewkimjoseph/celina-sdk` | Reads, gas estimates, `prepare*` flows, Carbon REST + SDK hybrid |
|
|
14
|
+
| **MCP** | `@andrewkimjoseph/celina-mcp` | MCP tools for Cursor / Claude / LM Studio — stdio writes or hosted reads + Carbon prepare |
|
|
15
|
+
| **MCP host** | `celina-mcp-host` | Vercel Streamable HTTP — hosted reads + Carbon prepare (71 tools); no server-key writes or `execute_carbon_*` |
|
|
16
|
+
|
|
17
|
+
This repo is the **SDK**. Downstream packages depend on published npm semver (no local `file:` links in production).
|
|
18
|
+
|
|
7
19
|
## Install
|
|
8
20
|
|
|
9
21
|
```bash
|
|
@@ -17,12 +29,13 @@ Requires Node.js ≥ 20.
|
|
|
17
29
|
**Full docs:** [celina-sdk on GitBook](https://andrewkimjoseph.gitbook.io/celina-sdk)
|
|
18
30
|
|
|
19
31
|
- [Quick start](https://andrewkimjoseph.gitbook.io/celina-sdk/getting-started/quick-start)
|
|
32
|
+
- [Architecture](docs/concepts/architecture.md) — client composition and stack
|
|
33
|
+
- [Prepared flows](docs/concepts/prepared-flows.md) — `SerializedPreparedFlow`, CELINA calldata tag
|
|
20
34
|
- [wagmi integration](https://andrewkimjoseph.gitbook.io/celina-sdk/guides/wagmi-integration)
|
|
21
|
-
- [
|
|
22
|
-
- [GoodDollar UBI](docs/guides/gooddollar.md) — whitelist, daily entitlement, `prepareClaimUbi`
|
|
23
|
-
- [
|
|
24
|
-
- [
|
|
25
|
-
- [Telemetry](docs/guides/telemetry.md) — optional Amplitude read metrics (opt out with `CELINA_ANALYTICS_DISABLED=1`)
|
|
35
|
+
- [Carbon DeFi on Celo](docs/guides/carbon.md) — hybrid REST + `@bancor/carbon-sdk` (25 operations)
|
|
36
|
+
- [GoodDollar UBI](docs/guides/gooddollar.md) — whitelist, daily entitlement, `prepareClaimUbi`
|
|
37
|
+
- [Self Agent ID](docs/guides/self-agent-id.md) — verify, register, refresh human-backed agents
|
|
38
|
+
- [Telemetry](docs/guides/telemetry.md) — optional Amplitude read metrics (`CELINA_ANALYTICS_DISABLED=1`)
|
|
26
39
|
- [API reference](https://andrewkimjoseph.gitbook.io/celina-sdk/api-reference)
|
|
27
40
|
|
|
28
41
|
Docs source lives in [`docs/`](docs/) in this repository.
|
|
@@ -37,7 +50,7 @@ const celina = createCelinaClient();
|
|
|
37
50
|
await celina.token.getStablecoinBalances("0xYourAddress");
|
|
38
51
|
|
|
39
52
|
const flow = await celina.transaction.prepareSend("0xFrom", "0xTo", "USDm", "10");
|
|
40
|
-
// flow.steps → pass to wagmi sendTransaction
|
|
53
|
+
// flow.steps → pass to wagmi sendTransaction (calldata includes CELINA attribution suffix)
|
|
41
54
|
|
|
42
55
|
// Carbon DeFi (reads + unsigned strategy/trade prep)
|
|
43
56
|
const strategies = await celina.carbon.getStrategies("0xYourAddress");
|
|
@@ -49,40 +62,57 @@ const prepared = await celina.carbon.prepareLimitOrder({
|
|
|
49
62
|
price: 0.5,
|
|
50
63
|
budget: 100,
|
|
51
64
|
});
|
|
52
|
-
// prepared.preparedFlow?.steps
|
|
65
|
+
// prepared.preparedFlow?.steps — controller + approve steps, all tagged
|
|
66
|
+
// prepared.deep_link — Carbon trade UI reference (optional)
|
|
67
|
+
// prepared.warnings — always surface to the user
|
|
53
68
|
|
|
54
69
|
// GoodDollar UBI (reads + unsigned claim)
|
|
55
70
|
const eligibility = await celina.gooddollar.getUbiClaimEligibility("0xYourAddress");
|
|
56
71
|
const ubiFlow = await celina.gooddollar.prepareClaimUbi("0xYourAddress");
|
|
57
|
-
// ubiFlow.steps → wagmi sendTransaction (G$ to signer, gas in CELO)
|
|
58
72
|
```
|
|
59
73
|
|
|
60
|
-
##
|
|
74
|
+
## Prepared flows and calldata tagging
|
|
61
75
|
|
|
62
|
-
|
|
76
|
+
All `prepare*` methods return a **`SerializedPreparedFlow`**: ordered unsigned steps for the user's wallet.
|
|
63
77
|
|
|
64
|
-
|
|
65
|
-
|-----------------------------|-------------------|
|
|
66
|
-
| `getWhitelistingInfo`, `getUbiClaimEligibility` | `prepareClaimUbi` |
|
|
78
|
+
Every step with calldata gets a **CELINA attribution suffix** (`appendCelinaCalldataTag`) — sends, Mento FX, Uniswap, Aave, GoodDollar, and **Carbon controller transactions** (not just ERC-20 approvals). Pass `step.data` to wagmi unchanged.
|
|
67
79
|
|
|
68
|
-
|
|
80
|
+
See [Prepared flows](docs/concepts/prepared-flows.md).
|
|
69
81
|
|
|
70
82
|
## Carbon DeFi
|
|
71
83
|
|
|
72
|
-
Hybrid **Carbon REST** (`https://mcp.carbondefi.xyz`) plus **`@bancor/carbon-sdk`** fallback for trade quotes and taker swaps when REST is unavailable. All 25 operations target Celo mainnet
|
|
84
|
+
Hybrid **Carbon REST** (`https://mcp.carbondefi.xyz`) plus **`@bancor/carbon-sdk`** fallback for trade quotes and taker swaps when REST is unavailable. All 25 operations target Celo mainnet.
|
|
73
85
|
|
|
74
86
|
| Reads (`celina.carbon`) | Prepare (unsigned) |
|
|
75
87
|
|-------------------------|-------------------|
|
|
76
|
-
| `getStrategies`, `getStrategy`, `getTradeQuote`, `explorePair`, `resolveToken`, `getActivity`, `findOpportunities`, `getProtocolStats`, `getPriceHistory`, `simulateStrategy`, `help`, `learn` |
|
|
88
|
+
| `getStrategies`, `getStrategy`, `getTradeQuote`, `explorePair`, `resolveToken`, `getActivity`, `findOpportunities`, `getProtocolStats`, `getPriceHistory`, `simulateStrategy`, `help`, `learn` | 13 `prepare*` methods — limit/range/recurring/concentrated/full-range orders, edit/reprice/deposit/withdraw/pause/resume/delete, taker `prepareTrade` |
|
|
89
|
+
|
|
90
|
+
- Token symbols are **normalized to `0x` addresses** before Carbon REST (avoids ENS resolution errors on Celo).
|
|
91
|
+
- **`finalizeCarbonPrepare(carbon, wallet, prepared, orderMeta)`** — merges ERC-20 approve steps via `buildExecutionSteps` into `preparedFlow.steps` (used by MCP `prepare_carbon_*` and browser apps).
|
|
92
|
+
- **`deep_link`** on prepare responses — Carbon REST trade/disposable UI URL (reference only; signing is via your wallet flow).
|
|
93
|
+
- **`carbonActivityDeepLink(wallet)`** — post-execution activity explorer on [celo.carbondefi.xyz](https://celo.carbondefi.xyz).
|
|
94
|
+
|
|
95
|
+
Set `CARBON_API_BASE_URL` to override the REST base. Hosted MCP exposes **12 read + 13 prepare** tools (71 total); `execute_carbon_*` requires local stdio with `CELO_PRIVATE_KEY`.
|
|
96
|
+
|
|
97
|
+
Full workflow: [Carbon DeFi guide](docs/guides/carbon.md).
|
|
98
|
+
|
|
99
|
+
## GoodDollar UBI
|
|
100
|
+
|
|
101
|
+
Identity whitelist reads, daily entitlement checks, and unsigned `UBISchemeV2.claim()` preparation. One claim per verified identity per day.
|
|
102
|
+
|
|
103
|
+
| Reads | Prepare |
|
|
104
|
+
|-------|---------|
|
|
105
|
+
| `getWhitelistingInfo`, `getUbiClaimEligibility` | `prepareClaimUbi` |
|
|
77
106
|
|
|
78
|
-
|
|
107
|
+
MCP: `get_gooddollar_whitelisting_info`, `get_gooddollar_ubi_entitlement` (read); `claim_daily_gooddollar_ubi` (stdio write with server key). Browser apps: `prepareClaimUbi` + wagmi.
|
|
79
108
|
|
|
80
|
-
|
|
109
|
+
[GoodDollar guide](docs/guides/gooddollar.md)
|
|
81
110
|
|
|
82
111
|
## Related packages
|
|
83
112
|
|
|
84
|
-
- [`@andrewkimjoseph/celina-mcp`](https://www.npmjs.com/package/@andrewkimjoseph/celina-mcp) — MCP server
|
|
85
|
-
- [
|
|
113
|
+
- [`@andrewkimjoseph/celina-mcp`](https://www.npmjs.com/package/@andrewkimjoseph/celina-mcp) `@0.8.4` — MCP server (38 Carbon tools on stdio; hosted: 12 read + 13 prepare)
|
|
114
|
+
- [`celina-mcp-host`](../celina-mcp-host/) — Vercel-hosted MCP endpoint (`https://mcp.usecelina.xyz/api/mcp`) — reads + Carbon prepare
|
|
115
|
+
- [`@selfxyz/agent-sdk`](https://www.npmjs.com/package/@selfxyz/agent-sdk) — Self Agent ID browser flows
|
|
86
116
|
|
|
87
117
|
## License
|
|
88
118
|
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export const MCP_TOOL_EVENT_BY_SDK_METHOD = {
|
|
6
6
|
"account.getAccount": "get_account",
|
|
7
|
+
"account.getWalletAddress": "get_wallet_address",
|
|
7
8
|
"blockchain.getBlock": "get_block",
|
|
8
9
|
"blockchain.getLatestBlocks": "get_latest_blocks",
|
|
9
10
|
"blockchain.getNetworkStatus": "get_network_status",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-tool-events.js","sourceRoot":"","sources":["../../src/analytics/mcp-tool-events.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAqC;IAC5E,oBAAoB,EAAE,aAAa;IACnC,qBAAqB,EAAE,WAAW;IAClC,4BAA4B,EAAE,mBAAmB;IACjD,6BAA6B,EAAE,oBAAoB;IACnD,2BAA2B,EAAE,iBAAiB;IAC9C,oBAAoB,EAAE,qBAAqB;IAC3C,0BAA0B,EAAE,2BAA2B;IACvD,oBAAoB,EAAE,qBAAqB;IAC3C,wBAAwB,EAAE,0BAA0B;IACpD,yBAAyB,EAAE,2BAA2B;IACtD,sBAAsB,EAAE,uBAAuB;IAC/C,oBAAoB,EAAE,qBAAqB;IAC3C,sBAAsB,EAAE,wBAAwB;IAChD,aAAa,EAAE,aAAa;IAC5B,cAAc,EAAE,cAAc;IAC9B,qBAAqB,EAAE,sBAAsB;IAC7C,yBAAyB,EAAE,0BAA0B;IACrD,uBAAuB,EAAE,wBAAwB;IACjD,sBAAsB,EAAE,uBAAuB;IAC/C,gBAAgB,EAAE,aAAa;IAC/B,mCAAmC,EAAE,gCAAgC;IACrE,gCAAgC,EAAE,kCAAkC;IACpE,mCAAmC,EAAE,0BAA0B;IAC/D,+BAA+B,EAAE,sBAAsB;IACvD,oBAAoB,EAAE,mBAAmB;IACzC,oBAAoB,EAAE,oBAAoB;IAC1C,mBAAmB,EAAE,iBAAiB;IACtC,gBAAgB,EAAE,cAAc;IAChC,6BAA6B,EAAE,0BAA0B;IACzD,4BAA4B,EAAE,yBAAyB;IACvD,sBAAsB,EAAE,mBAAmB;IAC3C,sBAAsB,EAAE,mBAAmB;IAC3C,sBAAsB,EAAE,mBAAmB;IAC3C,sBAAsB,EAAE,mBAAmB;IAC3C,wBAAwB,EAAE,qBAAqB;IAC/C,8BAA8B,EAAE,wBAAwB;IACxD,4BAA4B,EAAE,sBAAsB;IACpD,6BAA6B,EAAE,wBAAwB;IACvD,kCAAkC,EAAE,6BAA6B;IACjE,4BAA4B,EAAE,sBAAsB;IACpD,mBAAmB,EAAE,mBAAmB;IACxC,6BAA6B,EAAE,yBAAyB;IACxD,uBAAuB,EAAE,mBAAmB;IAC5C,oBAAoB,EAAE,gBAAgB;IACtC,0BAA0B,EAAE,eAAe;IAC3C,iCAAiC,EAAE,sBAAsB;IACzD,2BAA2B,EAAE,kBAAkB;IAC/C,sBAAsB,EAAE,uBAAuB;IAC/C,sBAAsB,EAAE,mBAAmB;CACnC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mcp-tool-events.js","sourceRoot":"","sources":["../../src/analytics/mcp-tool-events.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAqC;IAC5E,oBAAoB,EAAE,aAAa;IACnC,0BAA0B,EAAE,oBAAoB;IAChD,qBAAqB,EAAE,WAAW;IAClC,4BAA4B,EAAE,mBAAmB;IACjD,6BAA6B,EAAE,oBAAoB;IACnD,2BAA2B,EAAE,iBAAiB;IAC9C,oBAAoB,EAAE,qBAAqB;IAC3C,0BAA0B,EAAE,2BAA2B;IACvD,oBAAoB,EAAE,qBAAqB;IAC3C,wBAAwB,EAAE,0BAA0B;IACpD,yBAAyB,EAAE,2BAA2B;IACtD,sBAAsB,EAAE,uBAAuB;IAC/C,oBAAoB,EAAE,qBAAqB;IAC3C,sBAAsB,EAAE,wBAAwB;IAChD,aAAa,EAAE,aAAa;IAC5B,cAAc,EAAE,cAAc;IAC9B,qBAAqB,EAAE,sBAAsB;IAC7C,yBAAyB,EAAE,0BAA0B;IACrD,uBAAuB,EAAE,wBAAwB;IACjD,sBAAsB,EAAE,uBAAuB;IAC/C,gBAAgB,EAAE,aAAa;IAC/B,mCAAmC,EAAE,gCAAgC;IACrE,gCAAgC,EAAE,kCAAkC;IACpE,mCAAmC,EAAE,0BAA0B;IAC/D,+BAA+B,EAAE,sBAAsB;IACvD,oBAAoB,EAAE,mBAAmB;IACzC,oBAAoB,EAAE,oBAAoB;IAC1C,mBAAmB,EAAE,iBAAiB;IACtC,gBAAgB,EAAE,cAAc;IAChC,6BAA6B,EAAE,0BAA0B;IACzD,4BAA4B,EAAE,yBAAyB;IACvD,sBAAsB,EAAE,mBAAmB;IAC3C,sBAAsB,EAAE,mBAAmB;IAC3C,sBAAsB,EAAE,mBAAmB;IAC3C,sBAAsB,EAAE,mBAAmB;IAC3C,wBAAwB,EAAE,qBAAqB;IAC/C,8BAA8B,EAAE,wBAAwB;IACxD,4BAA4B,EAAE,sBAAsB;IACpD,6BAA6B,EAAE,wBAAwB;IACvD,kCAAkC,EAAE,6BAA6B;IACjE,4BAA4B,EAAE,sBAAsB;IACpD,mBAAmB,EAAE,mBAAmB;IACxC,6BAA6B,EAAE,yBAAyB;IACxD,uBAAuB,EAAE,mBAAmB;IAC5C,oBAAoB,EAAE,gBAAgB;IACtC,0BAA0B,EAAE,eAAe;IAC3C,iCAAiC,EAAE,sBAAsB;IACzD,2BAA2B,EAAE,kBAAkB;IAC/C,sBAAsB,EAAE,uBAAuB;IAC/C,sBAAsB,EAAE,mBAAmB;CACnC,CAAC"}
|
package/build/index.d.ts
CHANGED
|
@@ -87,6 +87,7 @@ export type { CarbonWriteBody } from "./services/carbon.service.js";
|
|
|
87
87
|
export { CARBON_APP_BASE_URL, CARBON_CHAIN, CELO_CARBON_CONTRACTS, DEFAULT_CARBON_REST_BASE_URL, carbonActivityDeepLink, } from "./config/carbon.js";
|
|
88
88
|
export { resolveCarbonTokenAddress, normalizeCarbonWriteBody, CARBON_WRITE_TOKEN_FIELDS, } from "./utils/carbon-token.js";
|
|
89
89
|
export { buildCarbonExecutionSteps } from "./utils/carbon-execution.js";
|
|
90
|
+
export { finalizeCarbonPrepare, type FinalizedCarbonPrepareFlow, } from "./utils/finalize-carbon-prepare.js";
|
|
90
91
|
export { CarbonRestError } from "./clients/carbon-rest.js";
|
|
91
92
|
export { SelfService, type VerifySelfAgentParams, type VerifySelfRequestParams, type RegisterSelfAgentParams, } from "./services/self.service.js";
|
|
92
93
|
export { SelfApiError, SelfExpiredSessionError, } from "./clients/self-api.js";
|
package/build/index.js
CHANGED
|
@@ -60,6 +60,7 @@ export { GOODDOLLAR_IDENTITY_ADDRESS, GOODDOLLAR_UBI_SCHEME_ADDRESS, } from "./c
|
|
|
60
60
|
export { CARBON_APP_BASE_URL, CARBON_CHAIN, CELO_CARBON_CONTRACTS, DEFAULT_CARBON_REST_BASE_URL, carbonActivityDeepLink, } from "./config/carbon.js";
|
|
61
61
|
export { resolveCarbonTokenAddress, normalizeCarbonWriteBody, CARBON_WRITE_TOKEN_FIELDS, } from "./utils/carbon-token.js";
|
|
62
62
|
export { buildCarbonExecutionSteps } from "./utils/carbon-execution.js";
|
|
63
|
+
export { finalizeCarbonPrepare, } from "./utils/finalize-carbon-prepare.js";
|
|
63
64
|
export { CarbonRestError } from "./clients/carbon-rest.js";
|
|
64
65
|
export { SelfService, } from "./services/self.service.js";
|
|
65
66
|
export { SelfApiError, SelfExpiredSessionError, } from "./clients/self-api.js";
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAkB,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAuCtE;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAA0B;IAC3D,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,aAAa,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,aAAa,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,CAAmB,GAAW,EAAE,OAAU,EAAE,EAAE,CACzD,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAEhD,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACpE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;QAC3D,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC;QAClC,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACvE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;QAC3D,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;QAC3D,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,WAAW,CAAC,aAAa,CAAC,CAAC;QAClD,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACpE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAClD,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACpE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;QAC3D,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC;QAC/C,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,eAAe,CAAC,aAAa,CAAC,CAAC;QAC9D,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;QAC9E,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;KAC3D,CAAC;AACJ,CAAC;AAYD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAa5D,6DAA6D;AAC7D,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EACL,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,GAC9B,MAAM,wBAAwB,CAAC;AAMhC,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,qBAAqB,EACrB,4BAA4B,EAC5B,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EACL,WAAW,GAIZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,YAAY,EACZ,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,YAAY,GACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,uBAAuB,EACvB,6BAA6B,GAE9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CarbonService } from "../services/carbon.service.js";
|
|
2
|
+
import type { CarbonPrepareResult } from "../types/carbon.js";
|
|
3
|
+
import type { SerializedPreparedFlow } from "../types/prepared.js";
|
|
4
|
+
export type FinalizedCarbonPrepareFlow = SerializedPreparedFlow & {
|
|
5
|
+
deep_link?: string;
|
|
6
|
+
warnings?: string[];
|
|
7
|
+
strategyPreview?: unknown;
|
|
8
|
+
};
|
|
9
|
+
/** Merge Carbon REST prepare + ERC-20 approve steps for external wallet signing. */
|
|
10
|
+
export declare function finalizeCarbonPrepare(carbon: Pick<CarbonService, "buildExecutionSteps">, from: `0x${string}`, prepared: CarbonPrepareResult, orderMeta: Record<string, unknown>): Promise<FinalizedCarbonPrepareFlow>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Merge Carbon REST prepare + ERC-20 approve steps for external wallet signing. */
|
|
2
|
+
export async function finalizeCarbonPrepare(carbon, from, prepared, orderMeta) {
|
|
3
|
+
const steps = await carbon.buildExecutionSteps(from, prepared, orderMeta);
|
|
4
|
+
if (!prepared.preparedFlow) {
|
|
5
|
+
throw new Error("Carbon prepare returned no transaction steps.");
|
|
6
|
+
}
|
|
7
|
+
return {
|
|
8
|
+
...prepared.preparedFlow,
|
|
9
|
+
steps,
|
|
10
|
+
...(prepared.deep_link ? { deep_link: String(prepared.deep_link) } : {}),
|
|
11
|
+
...(prepared.warnings?.length ? { warnings: prepared.warnings } : {}),
|
|
12
|
+
...(prepared.strategyPreview !== undefined
|
|
13
|
+
? { strategyPreview: prepared.strategyPreview }
|
|
14
|
+
: {}),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=finalize-carbon-prepare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finalize-carbon-prepare.js","sourceRoot":"","sources":["../../src/utils/finalize-carbon-prepare.ts"],"names":[],"mappings":"AAUA,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAkD,EAClD,IAAmB,EACnB,QAA6B,EAC7B,SAAkC;IAElC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC1E,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,OAAO;QACL,GAAG,QAAQ,CAAC,YAAY;QACxB,KAAK;QACL,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,GAAG,CAAC,QAAQ,CAAC,eAAe,KAAK,SAAS;YACxC,CAAC,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,eAAe,EAAE;YAC/C,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -88,4 +88,22 @@ export const blockchainOperations: OperationSpec[] = [
|
|
|
88
88
|
assertHasKeys(result, ["address", "balanceWei"]);
|
|
89
89
|
},
|
|
90
90
|
},
|
|
91
|
+
{
|
|
92
|
+
id: "account.getWalletAddress",
|
|
93
|
+
domain: "blockchain",
|
|
94
|
+
layer: "read",
|
|
95
|
+
requiresEnv: ["CELO_PRIVATE_KEY"],
|
|
96
|
+
mcp: {
|
|
97
|
+
tool: "get_wallet_address",
|
|
98
|
+
arguments: () => ({}),
|
|
99
|
+
},
|
|
100
|
+
assert: (result, fx) => {
|
|
101
|
+
const obj = assertHasKeys(result, ["wallet_address", "has_wallet", "source"]);
|
|
102
|
+
expect(obj.has_wallet).toBe(true);
|
|
103
|
+
expect(String(obj.wallet_address).toLowerCase()).toBe(
|
|
104
|
+
fx.wallet.toLowerCase(),
|
|
105
|
+
);
|
|
106
|
+
expect(obj.source).toBe("CELO_PRIVATE_KEY");
|
|
107
|
+
},
|
|
108
|
+
},
|
|
91
109
|
];
|
|
@@ -40,6 +40,23 @@ function carbonPrepare(
|
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
function carbonExecute(
|
|
44
|
+
id: string,
|
|
45
|
+
tool: string,
|
|
46
|
+
args: () => Record<string, unknown>,
|
|
47
|
+
): OperationSpec {
|
|
48
|
+
return {
|
|
49
|
+
id,
|
|
50
|
+
domain: "carbon",
|
|
51
|
+
layer: "write",
|
|
52
|
+
requiresEnv: ["CELO_PRIVATE_KEY"],
|
|
53
|
+
requiresWrites: true,
|
|
54
|
+
mcp: { tool, arguments: args },
|
|
55
|
+
assert: (result) => assertHasKeys(result, ["hash", "from"]),
|
|
56
|
+
skip: () => "Set CELINA_TEST_WRITES=1 to run on-chain Carbon execute tests",
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
43
60
|
export const carbonOperations: OperationSpec[] = [
|
|
44
61
|
carbonRead(
|
|
45
62
|
"carbon.getStrategies",
|
|
@@ -406,4 +423,125 @@ export const carbonOperations: OperationSpec[] = [
|
|
|
406
423
|
min_return: "0",
|
|
407
424
|
}),
|
|
408
425
|
),
|
|
426
|
+
carbonExecute(
|
|
427
|
+
"carbon.executeLimitOrder",
|
|
428
|
+
"execute_carbon_limit_order",
|
|
429
|
+
() => ({
|
|
430
|
+
base_token: CELO,
|
|
431
|
+
quote_token: USDC,
|
|
432
|
+
direction: "buy",
|
|
433
|
+
price: 0.5,
|
|
434
|
+
budget: 1,
|
|
435
|
+
}),
|
|
436
|
+
),
|
|
437
|
+
carbonExecute(
|
|
438
|
+
"carbon.executeRangeOrder",
|
|
439
|
+
"execute_carbon_range_order",
|
|
440
|
+
() => ({
|
|
441
|
+
base_token: CELO,
|
|
442
|
+
quote_token: USDC,
|
|
443
|
+
direction: "buy",
|
|
444
|
+
price: 0.5,
|
|
445
|
+
budget: 1,
|
|
446
|
+
}),
|
|
447
|
+
),
|
|
448
|
+
carbonExecute(
|
|
449
|
+
"carbon.executeRecurringStrategy",
|
|
450
|
+
"execute_carbon_recurring_strategy",
|
|
451
|
+
() => ({
|
|
452
|
+
base_token: CELO,
|
|
453
|
+
quote_token: USDC,
|
|
454
|
+
direction: "buy",
|
|
455
|
+
price: 0.5,
|
|
456
|
+
budget: 1,
|
|
457
|
+
}),
|
|
458
|
+
),
|
|
459
|
+
carbonExecute(
|
|
460
|
+
"carbon.executeConcentratedStrategy",
|
|
461
|
+
"execute_carbon_concentrated_strategy",
|
|
462
|
+
() => ({
|
|
463
|
+
base_token: CELO,
|
|
464
|
+
quote_token: USDC,
|
|
465
|
+
budget: 1,
|
|
466
|
+
}),
|
|
467
|
+
),
|
|
468
|
+
carbonExecute(
|
|
469
|
+
"carbon.executeFullRangeStrategy",
|
|
470
|
+
"execute_carbon_full_range_strategy",
|
|
471
|
+
() => ({
|
|
472
|
+
base_token: CELO,
|
|
473
|
+
quote_token: USDC,
|
|
474
|
+
budget: 1,
|
|
475
|
+
}),
|
|
476
|
+
),
|
|
477
|
+
carbonExecute(
|
|
478
|
+
"carbon.executeRepriceStrategy",
|
|
479
|
+
"execute_carbon_reprice_strategy",
|
|
480
|
+
() => ({
|
|
481
|
+
wallet_address: CARBON_WALLET,
|
|
482
|
+
strategy_id: "1",
|
|
483
|
+
price: 0.5,
|
|
484
|
+
}),
|
|
485
|
+
),
|
|
486
|
+
carbonExecute(
|
|
487
|
+
"carbon.executeEditStrategy",
|
|
488
|
+
"execute_carbon_edit_strategy",
|
|
489
|
+
() => ({
|
|
490
|
+
wallet_address: CARBON_WALLET,
|
|
491
|
+
strategy_id: "1",
|
|
492
|
+
price: 0.5,
|
|
493
|
+
}),
|
|
494
|
+
),
|
|
495
|
+
carbonExecute(
|
|
496
|
+
"carbon.executeDepositBudget",
|
|
497
|
+
"execute_carbon_deposit_budget",
|
|
498
|
+
() => ({
|
|
499
|
+
wallet_address: CARBON_WALLET,
|
|
500
|
+
strategy_id: "1",
|
|
501
|
+
budget: 1,
|
|
502
|
+
}),
|
|
503
|
+
),
|
|
504
|
+
carbonExecute(
|
|
505
|
+
"carbon.executeWithdrawBudget",
|
|
506
|
+
"execute_carbon_withdraw_budget",
|
|
507
|
+
() => ({
|
|
508
|
+
wallet_address: CARBON_WALLET,
|
|
509
|
+
strategy_id: "1",
|
|
510
|
+
budget: 1,
|
|
511
|
+
}),
|
|
512
|
+
),
|
|
513
|
+
carbonExecute(
|
|
514
|
+
"carbon.executePauseStrategy",
|
|
515
|
+
"execute_carbon_pause_strategy",
|
|
516
|
+
() => ({
|
|
517
|
+
wallet_address: CARBON_WALLET,
|
|
518
|
+
strategy_id: "1",
|
|
519
|
+
}),
|
|
520
|
+
),
|
|
521
|
+
carbonExecute(
|
|
522
|
+
"carbon.executeResumeStrategy",
|
|
523
|
+
"execute_carbon_resume_strategy",
|
|
524
|
+
() => ({
|
|
525
|
+
wallet_address: CARBON_WALLET,
|
|
526
|
+
strategy_id: "1",
|
|
527
|
+
}),
|
|
528
|
+
),
|
|
529
|
+
carbonExecute(
|
|
530
|
+
"carbon.executeDeleteStrategy",
|
|
531
|
+
"execute_carbon_delete_strategy",
|
|
532
|
+
() => ({
|
|
533
|
+
wallet_address: CARBON_WALLET,
|
|
534
|
+
strategy_id: "1",
|
|
535
|
+
}),
|
|
536
|
+
),
|
|
537
|
+
carbonExecute(
|
|
538
|
+
"carbon.executeTrade",
|
|
539
|
+
"execute_carbon_trade",
|
|
540
|
+
() => ({
|
|
541
|
+
source_token: CELO,
|
|
542
|
+
target_token: USDC,
|
|
543
|
+
amount: "1",
|
|
544
|
+
min_return: "0",
|
|
545
|
+
}),
|
|
546
|
+
),
|
|
409
547
|
];
|