@andrewkimjoseph/celina-sdk 0.26.4 → 0.26.5
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/build/a2a/agent-card.d.ts +1 -1
- package/build/analytics/events-stats.d.ts +10 -3
- package/build/analytics/events-stats.js +26 -22
- package/build/analytics/events-stats.js.map +1 -1
- package/build/config/sdk-config.d.ts +4 -3
- package/build/config/sdk-config.js.map +1 -1
- package/build/oasf/record.d.ts +1 -1
- package/build/src/a2a/agent-card.d.ts +1 -1
- package/build/src/analytics/events-stats.d.ts +10 -3
- package/build/src/analytics/events-stats.js +26 -22
- package/build/src/analytics/events-stats.js.map +1 -1
- package/build/src/config/sdk-config.d.ts +4 -3
- package/build/src/config/sdk-config.js.map +1 -1
- package/build/src/oasf/record.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type CelinaA2ASkill } from "./skills.js";
|
|
2
2
|
export interface CelinaAgentCardOptions {
|
|
3
|
-
/** Public MCP
|
|
3
|
+
/** Public remote MCP base URL for JSON-RPC execution, e.g. https://mcp.usecelina.xyz */
|
|
4
4
|
mcpBaseUrl?: string;
|
|
5
5
|
/** @deprecated Use mcpBaseUrl. Kept for backward compatibility. */
|
|
6
6
|
baseUrl?: string;
|
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
import type { SdkConfig } from "../config/sdk-config.js";
|
|
2
|
+
/** Amplitude HTTP API v2. Write key only — cannot read the export. */
|
|
3
|
+
export declare const AMPLITUDE_HTTP_API_URL = "https://api2.amplitude.com/2/httpapi";
|
|
4
|
+
/**
|
|
5
|
+
* Celina stats Amplitude project write key.
|
|
6
|
+
* Public ingest credential; the export secret stays on celina-stats-api.
|
|
7
|
+
*/
|
|
8
|
+
export declare const AMPLITUDE_WRITE_API_KEY = "b8d30326c023a17e70f0a42432824279";
|
|
2
9
|
export type TrackMcpToolContext = {
|
|
3
10
|
methodKey: string;
|
|
4
11
|
args: readonly unknown[];
|
|
5
12
|
};
|
|
6
|
-
/** Test-only hook to assert telemetry without POSTing to
|
|
13
|
+
/** Test-only hook to assert telemetry without POSTing to Amplitude. */
|
|
7
14
|
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
|
|
15
|
+
/** Test-only: replace `fetch` used by the Amplitude HTTP API path. */
|
|
9
16
|
export declare function setEventsStatsFetchForTests(fn: typeof fetch | null): void;
|
|
10
17
|
/** Track an MCP tool name event; never throws to callers. */
|
|
11
18
|
export declare function trackMcpTool(eventName: string, config: SdkConfig, context?: TrackMcpToolContext): Promise<void>;
|
|
12
|
-
/** Await in-flight
|
|
19
|
+
/** Await in-flight Amplitude telemetry calls. Use with Worker/Vercel `waitUntil`. */
|
|
13
20
|
export declare function drainCelinaAnalytics(): Promise<void>;
|
|
14
21
|
/**
|
|
15
22
|
* Await any queued event posts (e.g. end of a Next.js route via `after()`).
|
|
@@ -1,30 +1,23 @@
|
|
|
1
1
|
import { isAnalyticsEnabled, resolveDeviceId, } from "./config.js";
|
|
2
|
-
import { DEFAULT_STATS_API_BASE_URL } from "./onchain-stats.js";
|
|
3
2
|
import { resolveAnalyticsWallet } from "./wallet-context.js";
|
|
3
|
+
/** Amplitude HTTP API v2. Write key only — cannot read the export. */
|
|
4
|
+
export const AMPLITUDE_HTTP_API_URL = "https://api2.amplitude.com/2/httpapi";
|
|
5
|
+
/**
|
|
6
|
+
* Celina stats Amplitude project write key.
|
|
7
|
+
* Public ingest credential; the export secret stays on celina-stats-api.
|
|
8
|
+
*/
|
|
9
|
+
export const AMPLITUDE_WRITE_API_KEY = "b8d30326c023a17e70f0a42432824279";
|
|
4
10
|
const inflight = new Set();
|
|
5
11
|
let testTrackFn = null;
|
|
6
12
|
let testFetch = null;
|
|
7
|
-
/** Test-only hook to assert telemetry without POSTing to
|
|
13
|
+
/** Test-only hook to assert telemetry without POSTing to Amplitude. */
|
|
8
14
|
export function setTrackFnForTests(fn) {
|
|
9
15
|
testTrackFn = fn;
|
|
10
16
|
}
|
|
11
|
-
/** Test-only: replace `fetch` used by the
|
|
17
|
+
/** Test-only: replace `fetch` used by the Amplitude HTTP API path. */
|
|
12
18
|
export function setEventsStatsFetchForTests(fn) {
|
|
13
19
|
testFetch = fn;
|
|
14
20
|
}
|
|
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
21
|
function randomInsertId() {
|
|
29
22
|
try {
|
|
30
23
|
return crypto.randomUUID();
|
|
@@ -33,17 +26,28 @@ function randomInsertId() {
|
|
|
33
26
|
return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;
|
|
34
27
|
}
|
|
35
28
|
}
|
|
36
|
-
async function postEvent(
|
|
29
|
+
async function postEvent(payload) {
|
|
37
30
|
const doFetch = testFetch ?? globalThis.fetch;
|
|
38
31
|
if (typeof doFetch !== "function") {
|
|
39
32
|
return;
|
|
40
33
|
}
|
|
41
|
-
const
|
|
34
|
+
const event = {
|
|
35
|
+
event_type: payload.event,
|
|
36
|
+
device_id: payload.deviceId,
|
|
37
|
+
insert_id: payload.insertId,
|
|
38
|
+
time: Date.parse(payload.occurredAt),
|
|
39
|
+
};
|
|
40
|
+
if (payload.userId) {
|
|
41
|
+
event.user_id = payload.userId;
|
|
42
|
+
}
|
|
42
43
|
try {
|
|
43
|
-
await doFetch(
|
|
44
|
+
await doFetch(AMPLITUDE_HTTP_API_URL, {
|
|
44
45
|
method: "POST",
|
|
45
46
|
headers: { "Content-Type": "application/json" },
|
|
46
|
-
body: JSON.stringify(
|
|
47
|
+
body: JSON.stringify({
|
|
48
|
+
api_key: AMPLITUDE_WRITE_API_KEY,
|
|
49
|
+
events: [event],
|
|
50
|
+
}),
|
|
47
51
|
});
|
|
48
52
|
}
|
|
49
53
|
catch {
|
|
@@ -73,7 +77,7 @@ async function trackMcpToolImpl(eventName, config, context) {
|
|
|
73
77
|
...(userId ? { userId } : {}),
|
|
74
78
|
occurredAt: new Date().toISOString(),
|
|
75
79
|
};
|
|
76
|
-
await postEvent(
|
|
80
|
+
await postEvent(payload);
|
|
77
81
|
}
|
|
78
82
|
/** Track an MCP tool name event; never throws to callers. */
|
|
79
83
|
export function trackMcpTool(eventName, config, context) {
|
|
@@ -82,7 +86,7 @@ export function trackMcpTool(eventName, config, context) {
|
|
|
82
86
|
void run.finally(() => inflight.delete(run));
|
|
83
87
|
return run;
|
|
84
88
|
}
|
|
85
|
-
/** Await in-flight
|
|
89
|
+
/** Await in-flight Amplitude telemetry calls. Use with Worker/Vercel `waitUntil`. */
|
|
86
90
|
export async function drainCelinaAnalytics() {
|
|
87
91
|
await Promise.allSettled([...inflight]);
|
|
88
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events-stats.js","sourceRoot":"","sources":["../../src/analytics/events-stats.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"events-stats.js","sourceRoot":"","sources":["../../src/analytics/events-stats.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ export interface SdkConfig {
|
|
|
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
|
|
12
|
+
* Read telemetry reported to Amplitude (default on).
|
|
13
13
|
* Opt out with `analyticsEnabled: false`.
|
|
14
14
|
*/
|
|
15
15
|
analyticsEnabled?: boolean;
|
|
@@ -31,8 +31,9 @@ export interface SdkConfig {
|
|
|
31
31
|
*/
|
|
32
32
|
onchainStatsEnabled?: boolean;
|
|
33
33
|
/**
|
|
34
|
-
* Override celina-stats-api base URL
|
|
35
|
-
* Also reads `CELINA_STATS_API_URL`.
|
|
34
|
+
* Override celina-stats-api base URL for on-chain hash reporting
|
|
35
|
+
* (default `https://api.stats.usecelina.xyz`). Also reads `CELINA_STATS_API_URL`.
|
|
36
|
+
* Read-tool telemetry goes to Amplitude and does not use this URL.
|
|
36
37
|
*/
|
|
37
38
|
statsApiBaseUrl?: string;
|
|
38
39
|
/**
|
|
@@ -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;AAmD1E,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/oasf/record.d.ts
CHANGED
|
@@ -32,7 +32,7 @@ export interface CelinaOasfRecordOptions {
|
|
|
32
32
|
version?: string;
|
|
33
33
|
/** Public site base URL, e.g. https://usecelina.xyz */
|
|
34
34
|
siteBaseUrl?: string;
|
|
35
|
-
/** MCP
|
|
35
|
+
/** Remote MCP base URL for execution endpoints */
|
|
36
36
|
mcpBaseUrl?: string;
|
|
37
37
|
}
|
|
38
38
|
export declare function buildCelinaOasfService(): CelinaOasfService;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type CelinaA2ASkill } from "./skills.js";
|
|
2
2
|
export interface CelinaAgentCardOptions {
|
|
3
|
-
/** Public MCP
|
|
3
|
+
/** Public remote MCP base URL for JSON-RPC execution, e.g. https://mcp.usecelina.xyz */
|
|
4
4
|
mcpBaseUrl?: string;
|
|
5
5
|
/** @deprecated Use mcpBaseUrl. Kept for backward compatibility. */
|
|
6
6
|
baseUrl?: string;
|
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
import type { SdkConfig } from "../config/sdk-config.js";
|
|
2
|
+
/** Amplitude HTTP API v2. Write key only — cannot read the export. */
|
|
3
|
+
export declare const AMPLITUDE_HTTP_API_URL = "https://api2.amplitude.com/2/httpapi";
|
|
4
|
+
/**
|
|
5
|
+
* Celina stats Amplitude project write key.
|
|
6
|
+
* Public ingest credential; the export secret stays on celina-stats-api.
|
|
7
|
+
*/
|
|
8
|
+
export declare const AMPLITUDE_WRITE_API_KEY = "b8d30326c023a17e70f0a42432824279";
|
|
2
9
|
export type TrackMcpToolContext = {
|
|
3
10
|
methodKey: string;
|
|
4
11
|
args: readonly unknown[];
|
|
5
12
|
};
|
|
6
|
-
/** Test-only hook to assert telemetry without POSTing to
|
|
13
|
+
/** Test-only hook to assert telemetry without POSTing to Amplitude. */
|
|
7
14
|
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
|
|
15
|
+
/** Test-only: replace `fetch` used by the Amplitude HTTP API path. */
|
|
9
16
|
export declare function setEventsStatsFetchForTests(fn: typeof fetch | null): void;
|
|
10
17
|
/** Track an MCP tool name event; never throws to callers. */
|
|
11
18
|
export declare function trackMcpTool(eventName: string, config: SdkConfig, context?: TrackMcpToolContext): Promise<void>;
|
|
12
|
-
/** Await in-flight
|
|
19
|
+
/** Await in-flight Amplitude telemetry calls. Use with Worker/Vercel `waitUntil`. */
|
|
13
20
|
export declare function drainCelinaAnalytics(): Promise<void>;
|
|
14
21
|
/**
|
|
15
22
|
* Await any queued event posts (e.g. end of a Next.js route via `after()`).
|
|
@@ -1,30 +1,23 @@
|
|
|
1
1
|
import { isAnalyticsEnabled, resolveDeviceId, } from "./config.js";
|
|
2
|
-
import { DEFAULT_STATS_API_BASE_URL } from "./onchain-stats.js";
|
|
3
2
|
import { resolveAnalyticsWallet } from "./wallet-context.js";
|
|
3
|
+
/** Amplitude HTTP API v2. Write key only — cannot read the export. */
|
|
4
|
+
export const AMPLITUDE_HTTP_API_URL = "https://api2.amplitude.com/2/httpapi";
|
|
5
|
+
/**
|
|
6
|
+
* Celina stats Amplitude project write key.
|
|
7
|
+
* Public ingest credential; the export secret stays on celina-stats-api.
|
|
8
|
+
*/
|
|
9
|
+
export const AMPLITUDE_WRITE_API_KEY = "b8d30326c023a17e70f0a42432824279";
|
|
4
10
|
const inflight = new Set();
|
|
5
11
|
let testTrackFn = null;
|
|
6
12
|
let testFetch = null;
|
|
7
|
-
/** Test-only hook to assert telemetry without POSTing to
|
|
13
|
+
/** Test-only hook to assert telemetry without POSTing to Amplitude. */
|
|
8
14
|
export function setTrackFnForTests(fn) {
|
|
9
15
|
testTrackFn = fn;
|
|
10
16
|
}
|
|
11
|
-
/** Test-only: replace `fetch` used by the
|
|
17
|
+
/** Test-only: replace `fetch` used by the Amplitude HTTP API path. */
|
|
12
18
|
export function setEventsStatsFetchForTests(fn) {
|
|
13
19
|
testFetch = fn;
|
|
14
20
|
}
|
|
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
21
|
function randomInsertId() {
|
|
29
22
|
try {
|
|
30
23
|
return crypto.randomUUID();
|
|
@@ -33,17 +26,28 @@ function randomInsertId() {
|
|
|
33
26
|
return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;
|
|
34
27
|
}
|
|
35
28
|
}
|
|
36
|
-
async function postEvent(
|
|
29
|
+
async function postEvent(payload) {
|
|
37
30
|
const doFetch = testFetch ?? globalThis.fetch;
|
|
38
31
|
if (typeof doFetch !== "function") {
|
|
39
32
|
return;
|
|
40
33
|
}
|
|
41
|
-
const
|
|
34
|
+
const event = {
|
|
35
|
+
event_type: payload.event,
|
|
36
|
+
device_id: payload.deviceId,
|
|
37
|
+
insert_id: payload.insertId,
|
|
38
|
+
time: Date.parse(payload.occurredAt),
|
|
39
|
+
};
|
|
40
|
+
if (payload.userId) {
|
|
41
|
+
event.user_id = payload.userId;
|
|
42
|
+
}
|
|
42
43
|
try {
|
|
43
|
-
await doFetch(
|
|
44
|
+
await doFetch(AMPLITUDE_HTTP_API_URL, {
|
|
44
45
|
method: "POST",
|
|
45
46
|
headers: { "Content-Type": "application/json" },
|
|
46
|
-
body: JSON.stringify(
|
|
47
|
+
body: JSON.stringify({
|
|
48
|
+
api_key: AMPLITUDE_WRITE_API_KEY,
|
|
49
|
+
events: [event],
|
|
50
|
+
}),
|
|
47
51
|
});
|
|
48
52
|
}
|
|
49
53
|
catch {
|
|
@@ -73,7 +77,7 @@ async function trackMcpToolImpl(eventName, config, context) {
|
|
|
73
77
|
...(userId ? { userId } : {}),
|
|
74
78
|
occurredAt: new Date().toISOString(),
|
|
75
79
|
};
|
|
76
|
-
await postEvent(
|
|
80
|
+
await postEvent(payload);
|
|
77
81
|
}
|
|
78
82
|
/** Track an MCP tool name event; never throws to callers. */
|
|
79
83
|
export function trackMcpTool(eventName, config, context) {
|
|
@@ -82,7 +86,7 @@ export function trackMcpTool(eventName, config, context) {
|
|
|
82
86
|
void run.finally(() => inflight.delete(run));
|
|
83
87
|
return run;
|
|
84
88
|
}
|
|
85
|
-
/** Await in-flight
|
|
89
|
+
/** Await in-flight Amplitude telemetry calls. Use with Worker/Vercel `waitUntil`. */
|
|
86
90
|
export async function drainCelinaAnalytics() {
|
|
87
91
|
await Promise.allSettled([...inflight]);
|
|
88
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events-stats.js","sourceRoot":"","sources":["../../../src/analytics/events-stats.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"events-stats.js","sourceRoot":"","sources":["../../../src/analytics/events-stats.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ export interface SdkConfig {
|
|
|
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
|
|
12
|
+
* Read telemetry reported to Amplitude (default on).
|
|
13
13
|
* Opt out with `analyticsEnabled: false`.
|
|
14
14
|
*/
|
|
15
15
|
analyticsEnabled?: boolean;
|
|
@@ -31,8 +31,9 @@ export interface SdkConfig {
|
|
|
31
31
|
*/
|
|
32
32
|
onchainStatsEnabled?: boolean;
|
|
33
33
|
/**
|
|
34
|
-
* Override celina-stats-api base URL
|
|
35
|
-
* Also reads `CELINA_STATS_API_URL`.
|
|
34
|
+
* Override celina-stats-api base URL for on-chain hash reporting
|
|
35
|
+
* (default `https://api.stats.usecelina.xyz`). Also reads `CELINA_STATS_API_URL`.
|
|
36
|
+
* Read-tool telemetry goes to Amplitude and does not use this URL.
|
|
36
37
|
*/
|
|
37
38
|
statsApiBaseUrl?: string;
|
|
38
39
|
/**
|
|
@@ -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;AAmD1E,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"}
|
|
@@ -32,7 +32,7 @@ export interface CelinaOasfRecordOptions {
|
|
|
32
32
|
version?: string;
|
|
33
33
|
/** Public site base URL, e.g. https://usecelina.xyz */
|
|
34
34
|
siteBaseUrl?: string;
|
|
35
|
-
/** MCP
|
|
35
|
+
/** Remote MCP base URL for execution endpoints */
|
|
36
36
|
mcpBaseUrl?: string;
|
|
37
37
|
}
|
|
38
38
|
export declare function buildCelinaOasfService(): CelinaOasfService;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@andrewkimjoseph/celina-sdk",
|
|
3
|
-
"version": "0.26.
|
|
3
|
+
"version": "0.26.5",
|
|
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,
|