@andrewkimjoseph/celina-sdk 0.26.0 → 0.26.2
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
CHANGED
|
@@ -69,7 +69,7 @@ Before broadcasting prepared steps, call `simulatePreparedStep` from `@andrewkim
|
|
|
69
69
|
- [Humanness](docs/guides/humanness.md) — dual-rail Self + GoodDollar gate for governance/staking writes
|
|
70
70
|
- [Self Agent ID](docs/guides/self-agent-id.md) — verify, register, refresh human-backed agents
|
|
71
71
|
- [AgentKarma reputation](docs/guides/agentkarma.md) — karma reads and counterparty trust policy
|
|
72
|
-
- [Telemetry](docs/guides/telemetry.md) — optional read metrics reported to celina-stats-api (`device_id` per project
|
|
72
|
+
- [Telemetry](docs/guides/telemetry.md) — optional read metrics reported to celina-stats-api (`device_id` per project — set `analyticsDeviceId` explicitly; `user_id` per wallet; opt out with `analyticsEnabled: false`). On serverless hosts keep the isolate alive with `drainCelinaAnalytics()` via `waitUntil` / `after`.
|
|
73
73
|
- [API reference](https://andrewkimjoseph.gitbook.io/celina-sdk/api-reference)
|
|
74
74
|
|
|
75
75
|
Docs source lives in [`docs/`](docs/) in this repository.
|
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import { isAnalyticsEnabled } from "./config.js";
|
|
2
2
|
import { trackMcpTool } from "./events-stats.js";
|
|
3
3
|
import { MCP_TOOL_EVENT_BY_SDK_METHOD } from "./mcp-tool-events.js";
|
|
4
|
+
/**
|
|
5
|
+
* Catalog ids sometimes include a variant suffix (`gooddollar.getReserveQuote.sell`).
|
|
6
|
+
* SDK wrappers look up `service.method` (`gooddollar.getReserveQuote`). Collapse those
|
|
7
|
+
* suffixes so a direct SDK call still maps to the same MCP tool event.
|
|
8
|
+
*/
|
|
9
|
+
function eventNameForSdkMethod(methodKey) {
|
|
10
|
+
const exact = MCP_TOOL_EVENT_BY_SDK_METHOD[methodKey];
|
|
11
|
+
if (exact)
|
|
12
|
+
return exact;
|
|
13
|
+
const prefix = `${methodKey}.`;
|
|
14
|
+
for (const [id, eventName] of Object.entries(MCP_TOOL_EVENT_BY_SDK_METHOD)) {
|
|
15
|
+
if (id.startsWith(prefix))
|
|
16
|
+
return eventName;
|
|
17
|
+
}
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
4
20
|
/**
|
|
5
21
|
* Wrap a domain service so catalog-mapped async reads report usage events (MCP tool names)
|
|
6
22
|
* to celina-stats-api.
|
|
@@ -16,7 +32,7 @@ export function wrapServiceForAnalytics(serviceKey, service, config) {
|
|
|
16
32
|
return value;
|
|
17
33
|
}
|
|
18
34
|
const methodKey = `${serviceKey}.${prop}`;
|
|
19
|
-
const eventName =
|
|
35
|
+
const eventName = eventNameForSdkMethod(methodKey);
|
|
20
36
|
if (!eventName) {
|
|
21
37
|
return value.bind(target);
|
|
22
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrap-service.js","sourceRoot":"","sources":["../../src/analytics/wrap-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAEpE;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAAkB,EAClB,OAAU,EACV,MAAiB;IAEjB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;QACxB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAClD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAC5D,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,SAAS,GAAG,GAAG,UAAU,IAAI,IAAI,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,
|
|
1
|
+
{"version":3,"file":"wrap-service.js","sourceRoot":"","sources":["../../src/analytics/wrap-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAEpE;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,SAAiB;IAC9C,MAAM,KAAK,GAAG,4BAA4B,CAAC,SAAS,CAAC,CAAC;IACtD,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,MAAM,GAAG,GAAG,SAAS,GAAG,CAAC;IAC/B,KAAK,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,4BAA4B,CAAC,EAAE,CAAC;QAC3E,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,SAAS,CAAC;IAC9C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAAkB,EAClB,OAAU,EACV,MAAiB;IAEjB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;QACxB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAClD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAC5D,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,SAAS,GAAG,GAAG,UAAU,IAAI,IAAI,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;YACnD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;YAED,MAAM,EAAE,GAAG,KAAwC,CAAC;YACpD,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE;gBAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACtC,MAAM,OAAO,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;gBACpC,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;oBACtE,OAAQ,MAA2B,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;wBACpD,KAAK,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;wBAC9C,OAAO,QAAQ,CAAC;oBAClB,CAAC,CAAC,CAAC;gBACL,CAAC;gBACD,KAAK,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC9C,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import { isAnalyticsEnabled } from "./config.js";
|
|
2
2
|
import { trackMcpTool } from "./events-stats.js";
|
|
3
3
|
import { MCP_TOOL_EVENT_BY_SDK_METHOD } from "./mcp-tool-events.js";
|
|
4
|
+
/**
|
|
5
|
+
* Catalog ids sometimes include a variant suffix (`gooddollar.getReserveQuote.sell`).
|
|
6
|
+
* SDK wrappers look up `service.method` (`gooddollar.getReserveQuote`). Collapse those
|
|
7
|
+
* suffixes so a direct SDK call still maps to the same MCP tool event.
|
|
8
|
+
*/
|
|
9
|
+
function eventNameForSdkMethod(methodKey) {
|
|
10
|
+
const exact = MCP_TOOL_EVENT_BY_SDK_METHOD[methodKey];
|
|
11
|
+
if (exact)
|
|
12
|
+
return exact;
|
|
13
|
+
const prefix = `${methodKey}.`;
|
|
14
|
+
for (const [id, eventName] of Object.entries(MCP_TOOL_EVENT_BY_SDK_METHOD)) {
|
|
15
|
+
if (id.startsWith(prefix))
|
|
16
|
+
return eventName;
|
|
17
|
+
}
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
4
20
|
/**
|
|
5
21
|
* Wrap a domain service so catalog-mapped async reads report usage events (MCP tool names)
|
|
6
22
|
* to celina-stats-api.
|
|
@@ -16,7 +32,7 @@ export function wrapServiceForAnalytics(serviceKey, service, config) {
|
|
|
16
32
|
return value;
|
|
17
33
|
}
|
|
18
34
|
const methodKey = `${serviceKey}.${prop}`;
|
|
19
|
-
const eventName =
|
|
35
|
+
const eventName = eventNameForSdkMethod(methodKey);
|
|
20
36
|
if (!eventName) {
|
|
21
37
|
return value.bind(target);
|
|
22
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrap-service.js","sourceRoot":"","sources":["../../../src/analytics/wrap-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAEpE;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAAkB,EAClB,OAAU,EACV,MAAiB;IAEjB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;QACxB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAClD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAC5D,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,SAAS,GAAG,GAAG,UAAU,IAAI,IAAI,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,
|
|
1
|
+
{"version":3,"file":"wrap-service.js","sourceRoot":"","sources":["../../../src/analytics/wrap-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAEpE;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,SAAiB;IAC9C,MAAM,KAAK,GAAG,4BAA4B,CAAC,SAAS,CAAC,CAAC;IACtD,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,MAAM,GAAG,GAAG,SAAS,GAAG,CAAC;IAC/B,KAAK,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,4BAA4B,CAAC,EAAE,CAAC;QAC3E,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,SAAS,CAAC;IAC9C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAAkB,EAClB,OAAU,EACV,MAAiB;IAEjB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;QACxB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAClD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAC5D,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,SAAS,GAAG,GAAG,UAAU,IAAI,IAAI,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;YACnD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;YAED,MAAM,EAAE,GAAG,KAAwC,CAAC;YACpD,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE;gBAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACtC,MAAM,OAAO,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;gBACpC,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;oBACtE,OAAQ,MAA2B,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;wBACpD,KAAK,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;wBAC9C,OAAO,QAAQ,CAAC;oBAClB,CAAC,CAAC,CAAC;gBACL,CAAC;gBACD,KAAK,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC9C,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@andrewkimjoseph/celina-sdk",
|
|
3
|
-
"version": "0.26.
|
|
3
|
+
"version": "0.26.2",
|
|
4
4
|
"description": "Celina SDK — Celo mainnet reads, unsigned transaction preparation, and ERC-4337 createAAClient for sponsored UserOps.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|