@andrewkimjoseph/celina-sdk 0.4.9 → 0.4.10
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 +11 -1
- package/build/analytics/config.js +1 -3
- package/build/analytics/config.js.map +1 -1
- package/build/analytics/consumer-package.d.ts +9 -0
- package/build/analytics/consumer-package.js +143 -0
- package/build/analytics/consumer-package.js.map +1 -0
- package/build/config/sdk-config.d.ts +5 -1
- package/build/config/sdk-config.js +6 -1
- package/build/config/sdk-config.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Celina SDK
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
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
|
|
|
@@ -118,6 +118,16 @@ MCP: `get_gooddollar_whitelisting_info`, `get_gooddollar_ubi_entitlement` (read)
|
|
|
118
118
|
- [`celina-mcp-host`](../celina-mcp-host/) — Vercel-hosted MCP endpoint (`https://mcp.usecelina.xyz/api/mcp`) — reads + Carbon prepare
|
|
119
119
|
- [`@selfxyz/agent-sdk`](https://www.npmjs.com/package/@selfxyz/agent-sdk) — Self Agent ID browser flows
|
|
120
120
|
|
|
121
|
+
## Roadmap
|
|
122
|
+
|
|
123
|
+
- [x] Mento FX routing (`getFxQuote`, `estimateFx`, `prepareFx`)
|
|
124
|
+
- [x] Uniswap v4 swaps (`getSwapQuote`, `estimateSwap`, `prepareSwap`)
|
|
125
|
+
- [x] Aave lending tools (`prepareSupply`, `prepareWithdraw`) — USDT, WETH, USDm, USDC, CELO, EURm
|
|
126
|
+
- [x] Self proof verification (`verifySelfAgent`, `verifySelfRequest`, ai.self.xyz)
|
|
127
|
+
- [x] Self Agent ID (`lookupSelfAgent`, registration & lifecycle tools)
|
|
128
|
+
- [x] Carbon DeFi on Celo — 25 operations (12 read + 13 prepare); see [Carbon guide](docs/guides/carbon.md)
|
|
129
|
+
- [ ] Cross-chain bridging — bridge tokens to/from Celo (`getBridgeQuote`, `estimateBridge`, `prepareBridge`)
|
|
130
|
+
|
|
121
131
|
## License
|
|
122
132
|
|
|
123
133
|
MIT
|
|
@@ -23,8 +23,6 @@ export function resolveAmplitudeApiKey(config) {
|
|
|
23
23
|
DEFAULT_AMPLITUDE_API_KEY);
|
|
24
24
|
}
|
|
25
25
|
export function resolveDeviceId(config) {
|
|
26
|
-
return
|
|
27
|
-
process.env.CELINA_ANALYTICS_DEVICE_ID ??
|
|
28
|
-
DEFAULT_DEVICE_ID);
|
|
26
|
+
return config.analyticsDeviceId ?? DEFAULT_DEVICE_ID;
|
|
29
27
|
}
|
|
30
28
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/analytics/config.ts"],"names":[],"mappings":"AAEA,+FAA+F;AAC/F,MAAM,CAAC,MAAM,yBAAyB,GAAG,kCAAkC,CAAC;AAE5E,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAEvC,mEAAmE;AACnE,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,GAAG,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,MAAM,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,CACL,MAAM,CAAC,eAAe;QACtB,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7B,yBAAyB,CAC1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,OAAO,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/analytics/config.ts"],"names":[],"mappings":"AAEA,+FAA+F;AAC/F,MAAM,CAAC,MAAM,yBAAyB,GAAG,kCAAkC,CAAC;AAE5E,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAEvC,mEAAmE;AACnE,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,GAAG,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,MAAM,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,CACL,MAAM,CAAC,eAAe;QACtB,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7B,yBAAyB,CAC1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,OAAO,MAAM,CAAC,iBAAiB,IAAI,iBAAiB,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Amplitude-safe id from npm `package.json` `name` (strip `@`, `/` and `-` → `_`). */
|
|
2
|
+
export declare function sanitizePackageDeviceId(name: string): string;
|
|
3
|
+
/**
|
|
4
|
+
* npm package name of the app that called `createCelinaClient()`, sanitized for Amplitude.
|
|
5
|
+
* Returns `undefined` when detection fails or the consumer is the SDK itself.
|
|
6
|
+
*/
|
|
7
|
+
export declare function detectConsumerPackageName(stack?: string): string | undefined;
|
|
8
|
+
/** Test-only: clear cached consumer detection between cases. */
|
|
9
|
+
export declare function resetConsumerPackageDetectionForTests(): void;
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { dirname, join, resolve, sep } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
const SDK_PACKAGE_NAME = "@andrewkimjoseph/celina-sdk";
|
|
5
|
+
const SDK_DEVICE_IDS = new Set(["andrewkimjoseph_celina_sdk", "celina-sdk"]);
|
|
6
|
+
let detectionCached = false;
|
|
7
|
+
let detectedDeviceId;
|
|
8
|
+
/** Amplitude-safe id from npm `package.json` `name` (strip `@`, `/` and `-` → `_`). */
|
|
9
|
+
export function sanitizePackageDeviceId(name) {
|
|
10
|
+
const stripped = name.startsWith("@") ? name.slice(1) : name;
|
|
11
|
+
return stripped.replace(/\//g, "_").replace(/-/g, "_");
|
|
12
|
+
}
|
|
13
|
+
function getSdkPackageRoot() {
|
|
14
|
+
let dir = dirname(fileURLToPath(import.meta.url));
|
|
15
|
+
for (let i = 0; i < 24; i++) {
|
|
16
|
+
const pkgPath = join(dir, "package.json");
|
|
17
|
+
if (existsSync(pkgPath)) {
|
|
18
|
+
try {
|
|
19
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
|
|
20
|
+
if (pkg.name === SDK_PACKAGE_NAME) {
|
|
21
|
+
return dir;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
// ignore malformed package.json
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const parent = dirname(dir);
|
|
29
|
+
if (parent === dir) {
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
dir = parent;
|
|
33
|
+
}
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
function isSdkFramePath(filePath, sdkRoot) {
|
|
37
|
+
const normalized = resolve(filePath);
|
|
38
|
+
if (sdkRoot) {
|
|
39
|
+
const root = resolve(sdkRoot);
|
|
40
|
+
if (normalized === root || normalized.startsWith(root + sep)) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return normalized.includes(`${sep}node_modules${sep}@andrewkimjoseph${sep}celina-sdk${sep}`);
|
|
45
|
+
}
|
|
46
|
+
function readPackageNameFromFile(filePath) {
|
|
47
|
+
let dir = dirname(resolve(filePath));
|
|
48
|
+
for (let i = 0; i < 24; i++) {
|
|
49
|
+
const pkgPath = join(dir, "package.json");
|
|
50
|
+
if (existsSync(pkgPath)) {
|
|
51
|
+
try {
|
|
52
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
|
|
53
|
+
if (typeof pkg.name === "string" && pkg.name.length > 0) {
|
|
54
|
+
return pkg.name;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const parent = dirname(dir);
|
|
62
|
+
if (parent === dir) {
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
dir = parent;
|
|
66
|
+
}
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
function parseStackFramePaths(stack) {
|
|
70
|
+
const paths = [];
|
|
71
|
+
for (const line of stack.split("\n")) {
|
|
72
|
+
const trimmed = line.trim();
|
|
73
|
+
if (!trimmed.startsWith("at ")) {
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
const parenMatch = /\(([^)]+)\)/.exec(trimmed);
|
|
77
|
+
let loc = parenMatch?.[1];
|
|
78
|
+
if (!loc) {
|
|
79
|
+
const bare = /^at (?:async )?(?:.+ )?(.+)$/.exec(trimmed);
|
|
80
|
+
loc = bare?.[1];
|
|
81
|
+
}
|
|
82
|
+
if (!loc) {
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
let filePath = loc.trim();
|
|
86
|
+
if (filePath.startsWith("file://")) {
|
|
87
|
+
try {
|
|
88
|
+
filePath = fileURLToPath(filePath);
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
filePath = filePath.replace(/:\d+:\d+$/, "").replace(/:\d+$/, "");
|
|
95
|
+
if (filePath) {
|
|
96
|
+
paths.push(filePath);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return paths;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* npm package name of the app that called `createCelinaClient()`, sanitized for Amplitude.
|
|
103
|
+
* Returns `undefined` when detection fails or the consumer is the SDK itself.
|
|
104
|
+
*/
|
|
105
|
+
export function detectConsumerPackageName(stack) {
|
|
106
|
+
if (detectionCached) {
|
|
107
|
+
return detectedDeviceId;
|
|
108
|
+
}
|
|
109
|
+
detectionCached = true;
|
|
110
|
+
detectedDeviceId = undefined;
|
|
111
|
+
if (typeof process === "undefined") {
|
|
112
|
+
return detectedDeviceId;
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
const stackTrace = stack ?? new Error().stack ?? "";
|
|
116
|
+
const sdkRoot = getSdkPackageRoot();
|
|
117
|
+
for (const framePath of parseStackFramePaths(stackTrace)) {
|
|
118
|
+
if (isSdkFramePath(framePath, sdkRoot)) {
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
const rawName = readPackageNameFromFile(framePath);
|
|
122
|
+
if (!rawName) {
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
const deviceId = sanitizePackageDeviceId(rawName);
|
|
126
|
+
if (SDK_DEVICE_IDS.has(deviceId)) {
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
detectedDeviceId = deviceId;
|
|
130
|
+
return detectedDeviceId;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
detectedDeviceId = undefined;
|
|
135
|
+
}
|
|
136
|
+
return detectedDeviceId;
|
|
137
|
+
}
|
|
138
|
+
/** Test-only: clear cached consumer detection between cases. */
|
|
139
|
+
export function resetConsumerPackageDetectionForTests() {
|
|
140
|
+
detectionCached = false;
|
|
141
|
+
detectedDeviceId = undefined;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=consumer-package.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consumer-package.js","sourceRoot":"","sources":["../../src/analytics/consumer-package.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,11 @@ export interface SdkConfig {
|
|
|
16
16
|
analyticsEnabled?: boolean;
|
|
17
17
|
/** Override bundled Amplitude project API key. */
|
|
18
18
|
amplitudeApiKey?: string;
|
|
19
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* Amplitude `device_id`. When omitted, auto-detected from the consuming package
|
|
21
|
+
* `package.json` name (sanitized, e.g. `celeste_ai`, `andrewkimjoseph_celina_mcp`),
|
|
22
|
+
* then `CELINA_ANALYTICS_DEVICE_ID`, then `celina-sdk`.
|
|
23
|
+
*/
|
|
20
24
|
analyticsDeviceId?: string;
|
|
21
25
|
}
|
|
22
26
|
/** Default Celo RPC when `rpcUrl` is omitted. */
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { detectConsumerPackageName } from "../analytics/consumer-package.js";
|
|
1
2
|
/** Default Celo RPC when `rpcUrl` is omitted. */
|
|
2
3
|
export const DEFAULT_RPC_URL = "https://forno.celo.org";
|
|
3
4
|
/**
|
|
@@ -23,7 +24,11 @@ export function resolveSdkConfig(opts) {
|
|
|
23
24
|
: undefined),
|
|
24
25
|
analyticsEnabled: opts?.analyticsEnabled,
|
|
25
26
|
amplitudeApiKey: opts?.amplitudeApiKey,
|
|
26
|
-
analyticsDeviceId: opts?.analyticsDeviceId
|
|
27
|
+
analyticsDeviceId: opts?.analyticsDeviceId ??
|
|
28
|
+
(typeof process !== "undefined"
|
|
29
|
+
? process.env.CELINA_ANALYTICS_DEVICE_ID
|
|
30
|
+
: undefined) ??
|
|
31
|
+
detectConsumerPackageName(),
|
|
27
32
|
};
|
|
28
33
|
}
|
|
29
34
|
//# sourceMappingURL=sdk-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-config.js","sourceRoot":"","sources":["../../src/config/sdk-config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sdk-config.js","sourceRoot":"","sources":["../../src/config/sdk-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AA4B7E,iDAAiD;AACjD,MAAM,CAAC,MAAM,eAAe,GAAG,wBAAwB,CAAC;AAExD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAyB;IACxD,MAAM,mBAAmB,GACvB,IAAI,EAAE,mBAAmB;QACzB,CAAC,OAAO,OAAO,KAAK,WAAW;YAC7B,CAAC,CAAE,OAAO,CAAC,GAAG,CAAC,sBAAoD;YACnE,CAAC,CAAC,SAAS,CAAC,CAAC;IAEjB,OAAO;QACL,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,eAAe;QACvC,SAAS,EAAE,IAAI,EAAE,SAAS;QAC1B,iBAAiB,EACf,IAAI,EAAE,iBAAiB;YACvB,OAAO,CAAC,GAAG,CAAC,mBAAmB;YAC/B,4BAA4B;QAC9B,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,IAAI,IAAI;QAClD,mBAAmB;QACnB,WAAW,EACT,IAAI,EAAE,WAAW;YACjB,CAAC,OAAO,OAAO,KAAK,WAAW;gBAC7B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB;gBACjC,CAAC,CAAC,SAAS,CAAC;QAChB,gBAAgB,EAAE,IAAI,EAAE,gBAAgB;QACxC,eAAe,EAAE,IAAI,EAAE,eAAe;QACtC,iBAAiB,EACf,IAAI,EAAE,iBAAiB;YACvB,CAAC,OAAO,OAAO,KAAK,WAAW;gBAC7B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B;gBACxC,CAAC,CAAC,SAAS,CAAC;YACd,yBAAyB,EAAE;KAC9B,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED