@andrewkimjoseph/celina-sdk 0.25.26 → 0.26.0
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 +1 -1
- package/build/analytics/config.d.ts +1 -4
- package/build/analytics/config.js +2 -12
- package/build/analytics/config.js.map +1 -1
- package/build/analytics/consumer-package.d.ts +2 -2
- package/build/analytics/consumer-package.js +2 -2
- package/build/analytics/consumer-package.js.map +1 -1
- package/build/analytics/{amplitude.d.ts → events-stats.d.ts} +9 -3
- package/build/analytics/events-stats.js +97 -0
- package/build/analytics/events-stats.js.map +1 -0
- package/build/analytics/wrap-service.d.ts +2 -1
- package/build/analytics/wrap-service.js +3 -2
- package/build/analytics/wrap-service.js.map +1 -1
- package/build/config/sdk-config.d.ts +8 -6
- package/build/config/sdk-config.js +0 -1
- package/build/config/sdk-config.js.map +1 -1
- package/build/index.d.ts +1 -1
- package/build/index.js +1 -1
- package/build/index.js.map +1 -1
- package/build/services/agentkarma.service.d.ts +1 -1
- package/build/services/agentkarma.service.js +1 -1
- package/build/simulation/index.d.ts +1 -1
- package/build/simulation/index.js +1 -1
- package/build/simulation/index.js.map +1 -1
- package/build/simulation/simulate-prepared-step.d.ts +20 -0
- package/build/simulation/simulate-prepared-step.js +47 -0
- package/build/simulation/simulate-prepared-step.js.map +1 -1
- package/build/src/analytics/config.d.ts +1 -4
- package/build/src/analytics/config.js +2 -12
- package/build/src/analytics/config.js.map +1 -1
- package/build/src/analytics/consumer-package.d.ts +2 -2
- package/build/src/analytics/consumer-package.js +2 -2
- package/build/src/analytics/consumer-package.js.map +1 -1
- package/build/src/analytics/{amplitude.d.ts → events-stats.d.ts} +9 -3
- package/build/src/analytics/events-stats.js +97 -0
- package/build/src/analytics/events-stats.js.map +1 -0
- package/build/src/analytics/wrap-service.d.ts +2 -1
- package/build/src/analytics/wrap-service.js +3 -2
- package/build/src/analytics/wrap-service.js.map +1 -1
- package/build/src/config/sdk-config.d.ts +8 -6
- package/build/src/config/sdk-config.js +0 -1
- package/build/src/config/sdk-config.js.map +1 -1
- package/build/src/index.d.ts +1 -1
- package/build/src/index.js +1 -1
- package/build/src/index.js.map +1 -1
- package/build/src/services/agentkarma.service.d.ts +1 -1
- package/build/src/services/agentkarma.service.js +1 -1
- package/build/src/simulation/index.d.ts +1 -1
- package/build/src/simulation/index.js +1 -1
- package/build/src/simulation/index.js.map +1 -1
- package/build/src/simulation/simulate-prepared-step.d.ts +20 -0
- package/build/src/simulation/simulate-prepared-step.js +47 -0
- package/build/src/simulation/simulate-prepared-step.js.map +1 -1
- package/package.json +1 -2
- package/build/analytics/amplitude.js +0 -85
- package/build/analytics/amplitude.js.map +0 -1
- package/build/src/analytics/amplitude.js +0 -85
- package/build/src/analytics/amplitude.js.map +0 -1
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
|
|
72
|
+
- [Telemetry](docs/guides/telemetry.md) — optional read metrics reported to celina-stats-api (`device_id` per project, `user_id` per wallet; opt out with `analyticsEnabled: false`)
|
|
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,7 +1,4 @@
|
|
|
1
1
|
import type { SdkConfig } from "../config/sdk-config.js";
|
|
2
|
-
/**
|
|
3
|
-
export declare const DEFAULT_AMPLITUDE_API_KEY = "f36f9a7fdc253ed864072edc627b2a55";
|
|
4
|
-
/** Whether Amplitude read telemetry is active for this process. */
|
|
2
|
+
/** Whether read telemetry (reported to celina-stats-api) is active for this process. */
|
|
5
3
|
export declare function isAnalyticsEnabled(config: SdkConfig): boolean;
|
|
6
|
-
export declare function resolveAmplitudeApiKey(config: SdkConfig): string | undefined;
|
|
7
4
|
export declare function resolveDeviceId(config: SdkConfig): string;
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const DEFAULT_DEVICE_ID = "celina-sdk";
|
|
4
|
-
/** Whether Amplitude read telemetry is active for this process. */
|
|
1
|
+
const DEFAULT_DEVICE_ID = "celina_sdk";
|
|
2
|
+
/** Whether read telemetry (reported to celina-stats-api) is active for this process. */
|
|
5
3
|
export function isAnalyticsEnabled(config) {
|
|
6
4
|
if (typeof process === "undefined") {
|
|
7
5
|
return false;
|
|
@@ -11,14 +9,6 @@ export function isAnalyticsEnabled(config) {
|
|
|
11
9
|
}
|
|
12
10
|
return true;
|
|
13
11
|
}
|
|
14
|
-
export function resolveAmplitudeApiKey(config) {
|
|
15
|
-
if (!isAnalyticsEnabled(config)) {
|
|
16
|
-
return undefined;
|
|
17
|
-
}
|
|
18
|
-
return (config.amplitudeApiKey ??
|
|
19
|
-
process.env.AMPLITUDE_API_KEY ??
|
|
20
|
-
DEFAULT_AMPLITUDE_API_KEY);
|
|
21
|
-
}
|
|
22
12
|
export function resolveDeviceId(config) {
|
|
23
13
|
return config.analyticsDeviceId ?? DEFAULT_DEVICE_ID;
|
|
24
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/analytics/config.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/analytics/config.ts"],"names":[],"mappings":"AAEA,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAEvC,wFAAwF;AACxF,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACnC,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,eAAe,CAAC,MAAiB;IAC/C,OAAO,MAAM,CAAC,iBAAiB,IAAI,iBAAiB,CAAC;AACvD,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** Telemetry-safe device id from npm `package.json` `name` (strip `@`, `/` and `-` → `_`). */
|
|
2
2
|
export declare function sanitizePackageDeviceId(name: string): string;
|
|
3
3
|
/**
|
|
4
|
-
* npm package name of the app that called `createCelinaClient()`, sanitized for
|
|
4
|
+
* npm package name of the app that called `createCelinaClient()`, sanitized for telemetry.
|
|
5
5
|
* Returns `undefined` when detection fails or the consumer is the SDK itself.
|
|
6
6
|
*/
|
|
7
7
|
export declare function detectConsumerPackageName(stack?: string): string | undefined;
|
|
@@ -5,7 +5,7 @@ const SDK_PACKAGE_NAME = "@andrewkimjoseph/celina-sdk";
|
|
|
5
5
|
const SDK_DEVICE_IDS = new Set(["andrewkimjoseph_celina_sdk", "celina-sdk"]);
|
|
6
6
|
let detectionCached = false;
|
|
7
7
|
let detectedDeviceId;
|
|
8
|
-
/**
|
|
8
|
+
/** Telemetry-safe device id from npm `package.json` `name` (strip `@`, `/` and `-` → `_`). */
|
|
9
9
|
export function sanitizePackageDeviceId(name) {
|
|
10
10
|
const stripped = name.startsWith("@") ? name.slice(1) : name;
|
|
11
11
|
return stripped.replace(/\//g, "_").replace(/-/g, "_");
|
|
@@ -99,7 +99,7 @@ function parseStackFramePaths(stack) {
|
|
|
99
99
|
return paths;
|
|
100
100
|
}
|
|
101
101
|
/**
|
|
102
|
-
* npm package name of the app that called `createCelinaClient()`, sanitized for
|
|
102
|
+
* npm package name of the app that called `createCelinaClient()`, sanitized for telemetry.
|
|
103
103
|
* Returns `undefined` when detection fails or the consumer is the SDK itself.
|
|
104
104
|
*/
|
|
105
105
|
export function detectConsumerPackageName(stack) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumer-package.js","sourceRoot":"","sources":["../../src/analytics/consumer-package.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,gBAAgB,GAAG,6BAA6B,CAAC;AACvD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,4BAA4B,EAAE,YAAY,CAAC,CAAC,CAAC;AAE7E,IAAI,eAAe,GAAG,KAAK,CAAC;AAC5B,IAAI,gBAAoC,CAAC;AAEzC,
|
|
1
|
+
{"version":3,"file":"consumer-package.js","sourceRoot":"","sources":["../../src/analytics/consumer-package.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,17 @@ export type TrackMcpToolContext = {
|
|
|
3
3
|
methodKey: string;
|
|
4
4
|
args: readonly unknown[];
|
|
5
5
|
};
|
|
6
|
-
/** Test-only hook to assert telemetry without
|
|
6
|
+
/** Test-only hook to assert telemetry without POSTing to celina-stats-api. */
|
|
7
7
|
export declare function setTrackFnForTests(fn: ((eventName: string, config: SdkConfig, context: TrackMcpToolContext, userId: string | undefined) => void) | null): void;
|
|
8
|
+
/** Test-only: replace `fetch` used by the real `POST /events` path. */
|
|
9
|
+
export declare function setEventsStatsFetchForTests(fn: typeof fetch | null): void;
|
|
8
10
|
/** Track an MCP tool name event; never throws to callers. */
|
|
9
11
|
export declare function trackMcpTool(eventName: string, config: SdkConfig, context?: TrackMcpToolContext): Promise<void>;
|
|
10
|
-
/** Await in-flight
|
|
12
|
+
/** Await in-flight `POST /events` calls. Use with Worker/Vercel `waitUntil`. */
|
|
11
13
|
export declare function drainCelinaAnalytics(): Promise<void>;
|
|
12
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Await any queued event posts (e.g. end of a Next.js route via `after()`).
|
|
16
|
+
* Alias of {@link drainCelinaAnalytics} — kept as a separate export for API compatibility;
|
|
17
|
+
* there is no separate client-side batch to flush now that events post individually.
|
|
18
|
+
*/
|
|
13
19
|
export declare function flushCelinaAnalytics(): Promise<void>;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { isAnalyticsEnabled, resolveDeviceId, } from "./config.js";
|
|
2
|
+
import { DEFAULT_STATS_API_BASE_URL } from "./onchain-stats.js";
|
|
3
|
+
import { resolveAnalyticsWallet } from "./wallet-context.js";
|
|
4
|
+
const inflight = new Set();
|
|
5
|
+
let testTrackFn = null;
|
|
6
|
+
let testFetch = null;
|
|
7
|
+
/** Test-only hook to assert telemetry without POSTing to celina-stats-api. */
|
|
8
|
+
export function setTrackFnForTests(fn) {
|
|
9
|
+
testTrackFn = fn;
|
|
10
|
+
}
|
|
11
|
+
/** Test-only: replace `fetch` used by the real `POST /events` path. */
|
|
12
|
+
export function setEventsStatsFetchForTests(fn) {
|
|
13
|
+
testFetch = fn;
|
|
14
|
+
}
|
|
15
|
+
function envFlag(name) {
|
|
16
|
+
if (typeof process === "undefined")
|
|
17
|
+
return undefined;
|
|
18
|
+
const value = process.env[name]?.trim();
|
|
19
|
+
return value ? value : undefined;
|
|
20
|
+
}
|
|
21
|
+
/** Resolve celina-stats-api base URL: `statsApiBaseUrl` config -> `CELINA_STATS_API_URL` -> default. */
|
|
22
|
+
function resolveBaseUrl(config) {
|
|
23
|
+
const fromConfig = config.statsApiBaseUrl?.trim();
|
|
24
|
+
const fromEnv = envFlag("CELINA_STATS_API_URL");
|
|
25
|
+
const raw = fromConfig || fromEnv || DEFAULT_STATS_API_BASE_URL;
|
|
26
|
+
return raw.replace(/\/+$/, "");
|
|
27
|
+
}
|
|
28
|
+
function randomInsertId() {
|
|
29
|
+
try {
|
|
30
|
+
return crypto.randomUUID();
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async function postEvent(config, payload) {
|
|
37
|
+
const doFetch = testFetch ?? globalThis.fetch;
|
|
38
|
+
if (typeof doFetch !== "function") {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const url = `${resolveBaseUrl(config)}/events`;
|
|
42
|
+
try {
|
|
43
|
+
await doFetch(url, {
|
|
44
|
+
method: "POST",
|
|
45
|
+
headers: { "Content-Type": "application/json" },
|
|
46
|
+
body: JSON.stringify(payload),
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// telemetry must not break SDK reads
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async function trackMcpToolImpl(eventName, config, context) {
|
|
54
|
+
if (!isAnalyticsEnabled(config)) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const userId = context
|
|
58
|
+
? resolveAnalyticsWallet(context.methodKey, context.args, config)
|
|
59
|
+
: undefined;
|
|
60
|
+
if (testTrackFn) {
|
|
61
|
+
try {
|
|
62
|
+
testTrackFn(eventName, config, context ?? { methodKey: "", args: [] }, userId);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// ignore test hook failures
|
|
66
|
+
}
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const payload = {
|
|
70
|
+
insertId: randomInsertId(),
|
|
71
|
+
event: eventName,
|
|
72
|
+
deviceId: resolveDeviceId(config),
|
|
73
|
+
...(userId ? { userId } : {}),
|
|
74
|
+
occurredAt: new Date().toISOString(),
|
|
75
|
+
};
|
|
76
|
+
await postEvent(config, payload);
|
|
77
|
+
}
|
|
78
|
+
/** Track an MCP tool name event; never throws to callers. */
|
|
79
|
+
export function trackMcpTool(eventName, config, context) {
|
|
80
|
+
const run = trackMcpToolImpl(eventName, config, context);
|
|
81
|
+
inflight.add(run);
|
|
82
|
+
void run.finally(() => inflight.delete(run));
|
|
83
|
+
return run;
|
|
84
|
+
}
|
|
85
|
+
/** Await in-flight `POST /events` calls. Use with Worker/Vercel `waitUntil`. */
|
|
86
|
+
export async function drainCelinaAnalytics() {
|
|
87
|
+
await Promise.allSettled([...inflight]);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Await any queued event posts (e.g. end of a Next.js route via `after()`).
|
|
91
|
+
* Alias of {@link drainCelinaAnalytics} — kept as a separate export for API compatibility;
|
|
92
|
+
* there is no separate client-side batch to flush now that events post individually.
|
|
93
|
+
*/
|
|
94
|
+
export async function flushCelinaAnalytics() {
|
|
95
|
+
await drainCelinaAnalytics();
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=events-stats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events-stats.js","sourceRoot":"","sources":["../../src/analytics/events-stats.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { SdkConfig } from "../config/sdk-config.js";
|
|
2
2
|
/**
|
|
3
|
-
* Wrap a domain service so catalog-mapped async reads
|
|
3
|
+
* Wrap a domain service so catalog-mapped async reads report usage events (MCP tool names)
|
|
4
|
+
* to celina-stats-api.
|
|
4
5
|
*/
|
|
5
6
|
export declare function wrapServiceForAnalytics<T extends object>(serviceKey: string, service: T, config: SdkConfig): T;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { trackMcpTool } from "./amplitude.js";
|
|
2
1
|
import { isAnalyticsEnabled } from "./config.js";
|
|
2
|
+
import { trackMcpTool } from "./events-stats.js";
|
|
3
3
|
import { MCP_TOOL_EVENT_BY_SDK_METHOD } from "./mcp-tool-events.js";
|
|
4
4
|
/**
|
|
5
|
-
* Wrap a domain service so catalog-mapped async reads
|
|
5
|
+
* Wrap a domain service so catalog-mapped async reads report usage events (MCP tool names)
|
|
6
|
+
* to celina-stats-api.
|
|
6
7
|
*/
|
|
7
8
|
export function wrapServiceForAnalytics(serviceKey, service, config) {
|
|
8
9
|
if (!isAnalyticsEnabled(config)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrap-service.js","sourceRoot":"","sources":["../../src/analytics/wrap-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
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,4BAA4B,CAAC,SAAS,CAAC,CAAC;YAC1D,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"}
|
|
@@ -8,14 +8,16 @@ export interface SdkConfig {
|
|
|
8
8
|
selfAgentPrivateKey?: `0x${string}`;
|
|
9
9
|
/** Self Agent ID REST API base (default https://app.ai.self.xyz). */
|
|
10
10
|
selfApiBase?: string;
|
|
11
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Read telemetry reported to celina-stats-api (default on).
|
|
13
|
+
* Opt out with `analyticsEnabled: false`.
|
|
14
|
+
*/
|
|
12
15
|
analyticsEnabled?: boolean;
|
|
13
|
-
/** Override bundled Amplitude project API key. */
|
|
14
|
-
amplitudeApiKey?: string;
|
|
15
16
|
/**
|
|
16
|
-
*
|
|
17
|
-
* `package.json` name (sanitized, e.g. `celeste_ai`,
|
|
18
|
-
* then `
|
|
17
|
+
* `device_id` reported with telemetry events. When omitted, auto-detected from the
|
|
18
|
+
* consuming package `package.json` name (sanitized, e.g. `celeste_ai`,
|
|
19
|
+
* `andrewkimjoseph_celina_mcp`), then `celina_sdk`. Prefer setting this explicitly —
|
|
20
|
+
* auto-detection can be unreliable in bundled/serverless deployments.
|
|
19
21
|
*/
|
|
20
22
|
analyticsDeviceId?: string;
|
|
21
23
|
/**
|
|
@@ -22,7 +22,6 @@ export function resolveSdkConfig(opts) {
|
|
|
22
22
|
? process.env.SELF_AGENT_API_BASE
|
|
23
23
|
: undefined),
|
|
24
24
|
analyticsEnabled: opts?.analyticsEnabled,
|
|
25
|
-
amplitudeApiKey: opts?.amplitudeApiKey,
|
|
26
25
|
analyticsDeviceId: opts?.analyticsDeviceId ?? detectConsumerPackageName(),
|
|
27
26
|
analyticsWalletAddress: opts?.analyticsWalletAddress,
|
|
28
27
|
onchainStatsEnabled: opts?.onchainStatsEnabled,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-config.js","sourceRoot":"","sources":["../../src/config/sdk-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"sdk-config.js","sourceRoot":"","sources":["../../src/config/sdk-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAkD1E,iDAAiD;AACjD,MAAM,CAAC,MAAM,eAAe,GAAG,wBAAwB,CAAC;AAExD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAyB;IACxD,MAAM,sBAAsB,GAC1B,IAAI,EAAE,mBAAmB;QACzB,CAAC,OAAO,OAAO,KAAK,WAAW;YAC7B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB;YACpC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEjB,MAAM,eAAe,GAAG,qBAAqB,CAC3C,sBAAsB,EACtB,wBAAwB,CACzB,CAAC;IACF,MAAM,mBAAmB,GAAG,eAAe,CAAC,KAAK,CAAC;IAElD,OAAO;QACL,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,eAAe;QACvC,SAAS,EAAE,IAAI,EAAE,SAAS;QAC1B,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,iBAAiB,EACf,IAAI,EAAE,iBAAiB,IAAI,yBAAyB,EAAE;QACxD,sBAAsB,EAAE,IAAI,EAAE,sBAAsB;QACpD,mBAAmB,EAAE,IAAI,EAAE,mBAAmB;QAC9C,eAAe,EACb,IAAI,EAAE,eAAe;YACrB,CAAC,OAAO,OAAO,KAAK,WAAW;gBAC7B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB;gBAClC,CAAC,CAAC,SAAS,CAAC;QAChB,eAAe,EAAE,IAAI,EAAE,eAAe;KACvC,CAAC;AACJ,CAAC"}
|
package/build/index.d.ts
CHANGED
|
@@ -120,7 +120,7 @@ export type { SelfRegistrationMode } from "./config/self.js";
|
|
|
120
120
|
export { selfDemoUrl, SELF_DEMO_NETWORK, SELF_HEADERS, } from "./config/self.js";
|
|
121
121
|
export { resolveSelfSessionLinks, formatSelfSessionLinksDisplay, type SelfSessionLinks, } from "./utils/self-format.js";
|
|
122
122
|
export { clearSelfSessionsForTests } from "./services/self-session-store.js";
|
|
123
|
-
export { drainCelinaAnalytics, flushCelinaAnalytics, } from "./analytics/
|
|
123
|
+
export { drainCelinaAnalytics, flushCelinaAnalytics, } from "./analytics/events-stats.js";
|
|
124
124
|
export { runWithAnalyticsWallet } from "./analytics/wallet-context.js";
|
|
125
125
|
export { DEFAULT_STATS_API_BASE_URL, reportCelinaOnchainTxn, } from "./analytics/onchain-stats.js";
|
|
126
126
|
/** Optional read-only AgentKarma reputation adapter (agentkarma.io). */
|
package/build/index.js
CHANGED
|
@@ -81,7 +81,7 @@ export { SelfApiError, SelfExpiredSessionError, } from "./clients/self-api.js";
|
|
|
81
81
|
export { selfDemoUrl, SELF_DEMO_NETWORK, SELF_HEADERS, } from "./config/self.js";
|
|
82
82
|
export { resolveSelfSessionLinks, formatSelfSessionLinksDisplay, } from "./utils/self-format.js";
|
|
83
83
|
export { clearSelfSessionsForTests } from "./services/self-session-store.js";
|
|
84
|
-
export { drainCelinaAnalytics, flushCelinaAnalytics, } from "./analytics/
|
|
84
|
+
export { drainCelinaAnalytics, flushCelinaAnalytics, } from "./analytics/events-stats.js";
|
|
85
85
|
export { runWithAnalyticsWallet } from "./analytics/wallet-context.js";
|
|
86
86
|
export { DEFAULT_STATS_API_BASE_URL, reportCelinaOnchainTxn, } from "./analytics/onchain-stats.js";
|
|
87
87
|
/** Optional read-only AgentKarma reputation adapter (agentkarma.io). */
|
package/build/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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"}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* - non-routing: never proxies an agent call; it only reads reputation.
|
|
13
13
|
* - no private keys / no env requirement.
|
|
14
14
|
*
|
|
15
|
-
* It is intentionally NOT wrapped in Celina's
|
|
15
|
+
* It is intentionally NOT wrapped in Celina's read-telemetry proxy: this
|
|
16
16
|
* is an external reputation service, not a Celo on-chain read Celina tracks.
|
|
17
17
|
*/
|
|
18
18
|
import { type CeloAgentSnapshot, type ClientConfig, type KarmaFaceData, type KarmaSnapshot, type TrustDecision, type TrustPolicy } from "@agentkarma/sdk";
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* - non-routing: never proxies an agent call; it only reads reputation.
|
|
13
13
|
* - no private keys / no env requirement.
|
|
14
14
|
*
|
|
15
|
-
* It is intentionally NOT wrapped in Celina's
|
|
15
|
+
* It is intentionally NOT wrapped in Celina's read-telemetry proxy: this
|
|
16
16
|
* is an external reputation service, not a Celo on-chain read Celina tracks.
|
|
17
17
|
*/
|
|
18
18
|
import { createAgentKarmaClient, evaluateTrust, } from "@agentkarma/sdk";
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
* Browser-safe prepared-step simulation (no Node analytics / wallet product logic).
|
|
3
3
|
*/
|
|
4
4
|
export type { PreparedTx } from "../types/prepared.js";
|
|
5
|
-
export { simulatePreparedStep, type SimulatePreparedStepOptions, type SimulatePreparedStepParams, } from "./simulate-prepared-step.js";
|
|
5
|
+
export { PreparedFlowExecutionError, isPreparedFlowExecutionError, simulatePreparedStep, simulatePreparedStepWithRetry, type SimulatePreparedStepOptions, type SimulatePreparedStepParams, type SimulatePreparedStepRetryOptions, } from "./simulate-prepared-step.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { simulatePreparedStep, } from "./simulate-prepared-step.js";
|
|
1
|
+
export { PreparedFlowExecutionError, isPreparedFlowExecutionError, simulatePreparedStep, simulatePreparedStepWithRetry, } from "./simulate-prepared-step.js";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/simulation/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/simulation/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,oBAAoB,EACpB,6BAA6B,GAI9B,MAAM,6BAA6B,CAAC"}
|
|
@@ -10,8 +10,28 @@ export type SimulatePreparedStepParams = {
|
|
|
10
10
|
account: `0x${string}`;
|
|
11
11
|
step: PreparedTx;
|
|
12
12
|
};
|
|
13
|
+
/** Backoff between simulation retries after a failed `eth_call` / `estimateGas`. */
|
|
14
|
+
export type SimulatePreparedStepRetryOptions = {
|
|
15
|
+
/** Delays in ms after each failed attempt. Default: 750, 1500, 3000. */
|
|
16
|
+
delaysMs?: readonly number[];
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Thrown when a multi-step prepared flow fails after one or more steps already
|
|
20
|
+
* broadcast. Carries confirmed hashes so hosts can report partial progress.
|
|
21
|
+
*/
|
|
22
|
+
export declare class PreparedFlowExecutionError extends Error {
|
|
23
|
+
readonly stepHashes: `0x${string}`[];
|
|
24
|
+
readonly stepCount?: number;
|
|
25
|
+
constructor(message: string, stepHashes?: `0x${string}`[], stepCount?: number);
|
|
26
|
+
}
|
|
27
|
+
export declare function isPreparedFlowExecutionError(error: unknown): error is PreparedFlowExecutionError;
|
|
13
28
|
/**
|
|
14
29
|
* Simulate a prepared transaction step against current chain state.
|
|
15
30
|
* Throws when the transaction would revert — call immediately before send.
|
|
16
31
|
*/
|
|
17
32
|
export declare function simulatePreparedStep(publicClient: PublicClient, params: SimulatePreparedStepParams, options?: SimulatePreparedStepOptions): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Simulate a prepared step, retrying on failure to absorb RPC replica lag
|
|
35
|
+
* after a prior approval is mined. Genuine reverts still fail after retries.
|
|
36
|
+
*/
|
|
37
|
+
export declare function simulatePreparedStepWithRetry(publicClient: PublicClient, params: SimulatePreparedStepParams, options?: SimulatePreparedStepOptions, retry?: SimulatePreparedStepRetryOptions): Promise<void>;
|
|
@@ -1,4 +1,25 @@
|
|
|
1
1
|
import { isInsufficientBalanceSimulationError } from "../utils/transaction-errors.js";
|
|
2
|
+
const DEFAULT_RETRY_DELAYS_MS = [750, 1500, 3000];
|
|
3
|
+
/**
|
|
4
|
+
* Thrown when a multi-step prepared flow fails after one or more steps already
|
|
5
|
+
* broadcast. Carries confirmed hashes so hosts can report partial progress.
|
|
6
|
+
*/
|
|
7
|
+
export class PreparedFlowExecutionError extends Error {
|
|
8
|
+
stepHashes;
|
|
9
|
+
stepCount;
|
|
10
|
+
constructor(message, stepHashes = [], stepCount) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.name = "PreparedFlowExecutionError";
|
|
13
|
+
this.stepHashes = stepHashes;
|
|
14
|
+
this.stepCount = stepCount;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function isPreparedFlowExecutionError(error) {
|
|
18
|
+
return (error instanceof PreparedFlowExecutionError ||
|
|
19
|
+
(error instanceof Error &&
|
|
20
|
+
error.name === "PreparedFlowExecutionError" &&
|
|
21
|
+
Array.isArray(error.stepHashes)));
|
|
22
|
+
}
|
|
2
23
|
function stepRequest(account, step) {
|
|
3
24
|
return {
|
|
4
25
|
account,
|
|
@@ -39,4 +60,30 @@ export async function simulatePreparedStep(publicClient, params, options) {
|
|
|
39
60
|
throw new Error(simulationErrorMessage(params.step, error));
|
|
40
61
|
}
|
|
41
62
|
}
|
|
63
|
+
function sleep(ms) {
|
|
64
|
+
return new Promise((resolve) => {
|
|
65
|
+
setTimeout(resolve, ms);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Simulate a prepared step, retrying on failure to absorb RPC replica lag
|
|
70
|
+
* after a prior approval is mined. Genuine reverts still fail after retries.
|
|
71
|
+
*/
|
|
72
|
+
export async function simulatePreparedStepWithRetry(publicClient, params, options, retry) {
|
|
73
|
+
const delaysMs = retry?.delaysMs ?? DEFAULT_RETRY_DELAYS_MS;
|
|
74
|
+
let lastError;
|
|
75
|
+
for (let attempt = 0; attempt <= delaysMs.length; attempt++) {
|
|
76
|
+
if (attempt > 0) {
|
|
77
|
+
await sleep(delaysMs[attempt - 1]);
|
|
78
|
+
}
|
|
79
|
+
try {
|
|
80
|
+
await simulatePreparedStep(publicClient, params, options);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
lastError = error;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
throw lastError;
|
|
88
|
+
}
|
|
42
89
|
//# sourceMappingURL=simulate-prepared-step.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simulate-prepared-step.js","sourceRoot":"","sources":["../../src/simulation/simulate-prepared-step.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oCAAoC,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"simulate-prepared-step.js","sourceRoot":"","sources":["../../src/simulation/simulate-prepared-step.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oCAAoC,EAAE,MAAM,gCAAgC,CAAC;AAoBtF,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAE3D;;;GAGG;AACH,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IAC1C,UAAU,CAAkB;IAC5B,SAAS,CAAU;IAE5B,YACE,OAAe,EACf,aAA8B,EAAE,EAChC,SAAkB;QAElB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,UAAU,4BAA4B,CAC1C,KAAc;IAEd,OAAO,CACL,KAAK,YAAY,0BAA0B;QAC3C,CAAC,KAAK,YAAY,KAAK;YACrB,KAAK,CAAC,IAAI,KAAK,4BAA4B;YAC3C,KAAK,CAAC,OAAO,CAAE,KAAoC,CAAC,UAAU,CAAC,CAAC,CACnE,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAClB,OAAsB,EACtB,IAAgB;IAOhB,OAAO;QACL,OAAO;QACP,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAQ;QAChC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;KAC5C,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAgB,EAAE,KAAc;IAC9D,MAAM,IAAI,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEpE,IAAI,oCAAoC,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO,CACL,0BAA0B,IAAI,CAAC,WAAW,6BAA6B,IAAI,GAAG,CAC/E,CAAC;IACJ,CAAC;IAED,OAAO,0BAA0B,IAAI,CAAC,WAAW,MAAM,IAAI,EAAE,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,YAA0B,EAC1B,MAAkC,EAClC,OAAqC;IAErC,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,CAAC;IAE7C,IAAI,CAAC;QACH,IAAI,OAAO,EAAE,WAAW,EAAE,CAAC;YACzB,MAAM,YAAY,CAAC,WAAW,CAAC;gBAC7B,GAAG,OAAO;gBACV,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACE,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QAED,MAAM,YAAY,CAAC,IAAI,CAAC;YACtB,GAAG,OAAO;YACV,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5C,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,YAA0B,EAC1B,MAAkC,EAClC,OAAqC,EACrC,KAAwC;IAExC,MAAM,QAAQ,GAAG,KAAK,EAAE,QAAQ,IAAI,uBAAuB,CAAC;IAC5D,IAAI,SAAkB,CAAC;IAEvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;QAC5D,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,MAAM,KAAK,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAE,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAK,CAAC;QACpB,CAAC;IACH,CAAC;IAED,MAAM,SAAS,CAAC;AAClB,CAAC"}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import type { SdkConfig } from "../config/sdk-config.js";
|
|
2
|
-
/**
|
|
3
|
-
export declare const DEFAULT_AMPLITUDE_API_KEY = "f36f9a7fdc253ed864072edc627b2a55";
|
|
4
|
-
/** Whether Amplitude read telemetry is active for this process. */
|
|
2
|
+
/** Whether read telemetry (reported to celina-stats-api) is active for this process. */
|
|
5
3
|
export declare function isAnalyticsEnabled(config: SdkConfig): boolean;
|
|
6
|
-
export declare function resolveAmplitudeApiKey(config: SdkConfig): string | undefined;
|
|
7
4
|
export declare function resolveDeviceId(config: SdkConfig): string;
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const DEFAULT_DEVICE_ID = "celina-sdk";
|
|
4
|
-
/** Whether Amplitude read telemetry is active for this process. */
|
|
1
|
+
const DEFAULT_DEVICE_ID = "celina_sdk";
|
|
2
|
+
/** Whether read telemetry (reported to celina-stats-api) is active for this process. */
|
|
5
3
|
export function isAnalyticsEnabled(config) {
|
|
6
4
|
if (typeof process === "undefined") {
|
|
7
5
|
return false;
|
|
@@ -11,14 +9,6 @@ export function isAnalyticsEnabled(config) {
|
|
|
11
9
|
}
|
|
12
10
|
return true;
|
|
13
11
|
}
|
|
14
|
-
export function resolveAmplitudeApiKey(config) {
|
|
15
|
-
if (!isAnalyticsEnabled(config)) {
|
|
16
|
-
return undefined;
|
|
17
|
-
}
|
|
18
|
-
return (config.amplitudeApiKey ??
|
|
19
|
-
process.env.AMPLITUDE_API_KEY ??
|
|
20
|
-
DEFAULT_AMPLITUDE_API_KEY);
|
|
21
|
-
}
|
|
22
12
|
export function resolveDeviceId(config) {
|
|
23
13
|
return config.analyticsDeviceId ?? DEFAULT_DEVICE_ID;
|
|
24
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/analytics/config.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/analytics/config.ts"],"names":[],"mappings":"AAEA,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAEvC,wFAAwF;AACxF,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACnC,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,eAAe,CAAC,MAAiB;IAC/C,OAAO,MAAM,CAAC,iBAAiB,IAAI,iBAAiB,CAAC;AACvD,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** Telemetry-safe device id from npm `package.json` `name` (strip `@`, `/` and `-` → `_`). */
|
|
2
2
|
export declare function sanitizePackageDeviceId(name: string): string;
|
|
3
3
|
/**
|
|
4
|
-
* npm package name of the app that called `createCelinaClient()`, sanitized for
|
|
4
|
+
* npm package name of the app that called `createCelinaClient()`, sanitized for telemetry.
|
|
5
5
|
* Returns `undefined` when detection fails or the consumer is the SDK itself.
|
|
6
6
|
*/
|
|
7
7
|
export declare function detectConsumerPackageName(stack?: string): string | undefined;
|
|
@@ -5,7 +5,7 @@ const SDK_PACKAGE_NAME = "@andrewkimjoseph/celina-sdk";
|
|
|
5
5
|
const SDK_DEVICE_IDS = new Set(["andrewkimjoseph_celina_sdk", "celina-sdk"]);
|
|
6
6
|
let detectionCached = false;
|
|
7
7
|
let detectedDeviceId;
|
|
8
|
-
/**
|
|
8
|
+
/** Telemetry-safe device id from npm `package.json` `name` (strip `@`, `/` and `-` → `_`). */
|
|
9
9
|
export function sanitizePackageDeviceId(name) {
|
|
10
10
|
const stripped = name.startsWith("@") ? name.slice(1) : name;
|
|
11
11
|
return stripped.replace(/\//g, "_").replace(/-/g, "_");
|
|
@@ -99,7 +99,7 @@ function parseStackFramePaths(stack) {
|
|
|
99
99
|
return paths;
|
|
100
100
|
}
|
|
101
101
|
/**
|
|
102
|
-
* npm package name of the app that called `createCelinaClient()`, sanitized for
|
|
102
|
+
* npm package name of the app that called `createCelinaClient()`, sanitized for telemetry.
|
|
103
103
|
* Returns `undefined` when detection fails or the consumer is the SDK itself.
|
|
104
104
|
*/
|
|
105
105
|
export function detectConsumerPackageName(stack) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumer-package.js","sourceRoot":"","sources":["../../../src/analytics/consumer-package.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,gBAAgB,GAAG,6BAA6B,CAAC;AACvD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,4BAA4B,EAAE,YAAY,CAAC,CAAC,CAAC;AAE7E,IAAI,eAAe,GAAG,KAAK,CAAC;AAC5B,IAAI,gBAAoC,CAAC;AAEzC,
|
|
1
|
+
{"version":3,"file":"consumer-package.js","sourceRoot":"","sources":["../../../src/analytics/consumer-package.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,17 @@ export type TrackMcpToolContext = {
|
|
|
3
3
|
methodKey: string;
|
|
4
4
|
args: readonly unknown[];
|
|
5
5
|
};
|
|
6
|
-
/** Test-only hook to assert telemetry without
|
|
6
|
+
/** Test-only hook to assert telemetry without POSTing to celina-stats-api. */
|
|
7
7
|
export declare function setTrackFnForTests(fn: ((eventName: string, config: SdkConfig, context: TrackMcpToolContext, userId: string | undefined) => void) | null): void;
|
|
8
|
+
/** Test-only: replace `fetch` used by the real `POST /events` path. */
|
|
9
|
+
export declare function setEventsStatsFetchForTests(fn: typeof fetch | null): void;
|
|
8
10
|
/** Track an MCP tool name event; never throws to callers. */
|
|
9
11
|
export declare function trackMcpTool(eventName: string, config: SdkConfig, context?: TrackMcpToolContext): Promise<void>;
|
|
10
|
-
/** Await in-flight
|
|
12
|
+
/** Await in-flight `POST /events` calls. Use with Worker/Vercel `waitUntil`. */
|
|
11
13
|
export declare function drainCelinaAnalytics(): Promise<void>;
|
|
12
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Await any queued event posts (e.g. end of a Next.js route via `after()`).
|
|
16
|
+
* Alias of {@link drainCelinaAnalytics} — kept as a separate export for API compatibility;
|
|
17
|
+
* there is no separate client-side batch to flush now that events post individually.
|
|
18
|
+
*/
|
|
13
19
|
export declare function flushCelinaAnalytics(): Promise<void>;
|