@waniwani/sdk 0.0.4 → 0.0.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/dist/index.d.ts CHANGED
@@ -3,82 +3,71 @@ declare class WaniWaniError extends Error {
3
3
  constructor(message: string, status: number);
4
4
  }
5
5
 
6
- type MCPProvider = "openai" | "anthropic" | "unknown";
7
- /** OpenAI-specific MCP metadata structure */
8
- interface OpenAIMeta {
9
- "openai/subject"?: string;
10
- "openai/session"?: string;
11
- "openai/userAgent"?: string;
12
- "openai/locale"?: string;
13
- "openai/userLocation"?: {
14
- city?: string;
15
- region?: string;
16
- country?: string;
17
- timezone?: string;
18
- latitude?: string;
19
- longitude?: string;
20
- };
21
- timezone_offset_minutes?: number;
6
+ type EventType = "tool.called" | "quote.requested" | "quote.succeeded" | "quote.failed" | "link.clicked" | "purchase.completed";
7
+ interface ToolCalledProperties {
8
+ name?: string;
9
+ type?: "pricing" | "product_info" | "availability" | "support" | "other";
22
10
  }
23
- /** Location information (provider-agnostic) */
24
- interface LocationInfo {
25
- city?: string;
26
- region?: string;
27
- country?: string;
28
- timezone?: string;
11
+ interface QuoteSucceededProperties {
12
+ amount?: number;
13
+ currency?: string;
29
14
  }
30
- /** Normalized metadata extracted from any MCP provider */
31
- interface NormalizedMeta {
32
- provider: MCPProvider;
33
- sessionId?: string;
34
- externalUserId?: string;
35
- userAgent?: string;
36
- locale?: string;
37
- location?: LocationInfo;
15
+ interface LinkClickedProperties {
16
+ url?: string;
17
+ }
18
+ interface PurchaseCompletedProperties {
19
+ amount?: number;
20
+ currency?: string;
38
21
  }
39
- type EventType = "session.started" | "tool.called" | "quote.requested" | "quote.succeeded" | "quote.failed" | "link.clicked" | "purchase.completed";
40
- type ToolType = "pricing" | "product_info" | "availability" | "support" | "other";
41
22
  interface BaseEvent {
42
23
  /**
43
- * MCP request metadata. The SDK auto-extracts provider fields
44
- * (sessionId, userId, location, etc.). Can also include custom fields.
24
+ * Event type.
45
25
  *
46
- * Location varies by MCP library:
47
- * - `@vercel/mcp-handler`: `extra._meta`
48
- * - `@modelcontextprotocol/sdk`: `request.params._meta`
26
+ * @example
27
+ * ```typescript
28
+ * wani.track({
29
+ * event: 'tool.called',
30
+ * });
31
+ * ```
32
+ */
33
+ event: EventType;
34
+ /**
35
+ * Event properties.
49
36
  *
50
37
  * @example
51
38
  * ```typescript
52
39
  * wani.track({
53
- * eventType: 'tool.called',
54
- * toolName: 'search',
55
- * meta: extra._meta,
40
+ * event: 'tool.called',
41
+ * properties: { name: 'search' },
56
42
  * });
57
43
  * ```
58
44
  */
45
+ properties?: Record<string, unknown>;
46
+ /**
47
+ * MCP request metadata passed through to the API.
48
+ *
49
+ * Location varies by MCP library:
50
+ * - `@vercel/mcp-handler`: `extra._meta`
51
+ * - `@modelcontextprotocol/sdk`: `request.params._meta`
52
+ */
59
53
  meta?: Record<string, unknown>;
60
54
  }
61
55
  type TrackEvent = ({
62
- eventType: "session.started";
63
- } & BaseEvent) | ({
64
- eventType: "tool.called";
65
- toolName?: string;
66
- toolType?: ToolType;
56
+ event: "tool.called";
57
+ properties: ToolCalledProperties;
67
58
  } & BaseEvent) | ({
68
- eventType: "quote.requested";
59
+ event: "quote.requested";
69
60
  } & BaseEvent) | ({
70
- eventType: "quote.succeeded";
71
- quoteAmount?: number;
72
- quoteCurrency?: string;
61
+ event: "quote.succeeded";
62
+ properties: QuoteSucceededProperties;
73
63
  } & BaseEvent) | ({
74
- eventType: "quote.failed";
64
+ event: "quote.failed";
75
65
  } & BaseEvent) | ({
76
- eventType: "link.clicked";
77
- linkUrl?: string;
66
+ event: "link.clicked";
67
+ properties: LinkClickedProperties;
78
68
  } & BaseEvent) | ({
79
- eventType: "purchase.completed";
80
- purchaseAmount?: number;
81
- purchaseCurrency?: string;
69
+ event: "purchase.completed";
70
+ properties: PurchaseCompletedProperties;
82
71
  } & BaseEvent);
83
72
  /**
84
73
  * Tracking module methods for WaniWaniClient
@@ -120,15 +109,6 @@ interface WaniWaniConfig {
120
109
  interface WaniWaniClient extends TrackingClient {
121
110
  }
122
111
 
123
- /**
124
- * Detect which MCP provider sent the request based on metadata keys
125
- */
126
- declare function detectProvider(meta: Record<string, unknown>): MCPProvider;
127
- /**
128
- * Extract normalized metadata from any MCP provider's metadata
129
- */
130
- declare function extractMetadata(meta: Record<string, unknown>): NormalizedMeta;
131
-
132
112
  /**
133
113
  * Create a WaniWani SDK client
134
114
  *
@@ -150,4 +130,4 @@ declare function extractMetadata(meta: Record<string, unknown>): NormalizedMeta;
150
130
  */
151
131
  declare function waniwani(config?: WaniWaniConfig): WaniWaniClient;
152
132
 
153
- export { type EventType, type LocationInfo, type MCPProvider, type NormalizedMeta, type OpenAIMeta, type ToolType, type TrackEvent, type WaniWaniClient, type WaniWaniConfig, WaniWaniError, detectProvider, extractMetadata, waniwani };
133
+ export { type EventType, type LinkClickedProperties, type PurchaseCompletedProperties, type QuoteSucceededProperties, type ToolCalledProperties, type TrackEvent, type WaniWaniClient, type WaniWaniConfig, WaniWaniError, waniwani };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var r=class extends Error{constructor(t,p){super(t);this.status=p;this.name="WaniWaniError"}};function f(e){return e["openai/subject"]||e["openai/session"]?"openai":"unknown"}function c(e){switch(f(e)){case"openai":return m(e);case"anthropic":return y(e);default:return{provider:"unknown"}}}function m(e){let n=e["openai/userLocation"],t;return n&&(t={city:n.city,region:n.region,country:n.country,timezone:n.timezone}),{provider:"openai",sessionId:e["openai/session"],externalUserId:e["openai/subject"],userAgent:e["openai/userAgent"],locale:e["openai/locale"],location:t}}function y(e){return{provider:"anthropic"}}function l(e){let{baseUrl:n,apiKey:t}=e;function p(){if(!t)throw new Error("WANIWANI_API_KEY is not set")}return{async track(o){try{p();let i=o.meta?c(o.meta):{},d=await fetch(`${n}/api/mcp/events`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify({...o,...i})}),u=await d.json();if(!d.ok)throw new r(u.message??"Request failed",d.status);return{eventId:u.data.eventId}}catch(i){throw console.error("[WaniWani] Track error:",i),i}}}}function g(e){let n=e?.baseUrl??"https://app.waniwani.ai",t=e?.apiKey??process.env.WANIWANI_API_KEY;return{...l({baseUrl:n,apiKey:t})}}export{r as WaniWaniError,f as detectProvider,c as extractMetadata,g as waniwani};
1
+ var n=class extends Error{constructor(e,o){super(e);this.status=o;this.name="WaniWaniError"}};function l(r){let{baseUrl:i,apiKey:e}=r;function o(){if(!e)throw new Error("WANIWANI_API_KEY is not set")}return{async track(p){try{o();let t=await fetch(`${i}/api/mcp/events`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify(p)}),c=await t.json();if(!t.ok)throw new n(c.message??"Request failed",t.status);return{eventId:c.data.eventId}}catch(t){throw console.error("[WaniWani] Track error:",t),t}}}}function f(r){let i=r?.baseUrl??"https://app.waniwani.ai",e=r?.apiKey??process.env.WANIWANI_API_KEY;return{...l({baseUrl:i,apiKey:e})}}export{n as WaniWaniError,f as waniwani};
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/error.ts","../src/tracking/metadata.ts","../src/tracking/index.ts","../src/waniwani.ts"],"sourcesContent":["// WaniWani SDK - Errors\n\nexport class WaniWaniError extends Error {\n\tconstructor(\n\t\tmessage: string,\n\t\tpublic status: number,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"WaniWaniError\";\n\t}\n}\n","// Metadata Extraction Module\n\nimport type {\n\tLocationInfo,\n\tMCPProvider,\n\tNormalizedMeta,\n\tOpenAIMeta,\n} from \"./@types.js\";\n\n/**\n * Detect which MCP provider sent the request based on metadata keys\n */\nexport function detectProvider(meta: Record<string, unknown>): MCPProvider {\n\tif (meta[\"openai/subject\"] || meta[\"openai/session\"]) {\n\t\treturn \"openai\";\n\t}\n\t// Add Anthropic detection when their MCP format is known\n\t// if (meta['anthropic/...']) return 'anthropic';\n\treturn \"unknown\";\n}\n\n/**\n * Extract normalized metadata from any MCP provider's metadata\n */\nexport function extractMetadata(meta: Record<string, unknown>): NormalizedMeta {\n\tconst provider = detectProvider(meta);\n\n\tswitch (provider) {\n\t\tcase \"openai\":\n\t\t\treturn extractOpenAIMeta(meta as unknown as OpenAIMeta);\n\t\tcase \"anthropic\":\n\t\t\treturn extractAnthropicMeta(meta);\n\t\tdefault:\n\t\t\treturn { provider: \"unknown\" };\n\t}\n}\n\nfunction extractOpenAIMeta(meta: OpenAIMeta): NormalizedMeta {\n\tconst rawLocation = meta[\"openai/userLocation\"];\n\tlet location: LocationInfo | undefined;\n\n\tif (rawLocation) {\n\t\tlocation = {\n\t\t\tcity: rawLocation.city,\n\t\t\tregion: rawLocation.region,\n\t\t\tcountry: rawLocation.country,\n\t\t\ttimezone: rawLocation.timezone,\n\t\t};\n\t}\n\n\treturn {\n\t\tprovider: \"openai\",\n\t\tsessionId: meta[\"openai/session\"],\n\t\texternalUserId: meta[\"openai/subject\"],\n\t\tuserAgent: meta[\"openai/userAgent\"],\n\t\tlocale: meta[\"openai/locale\"],\n\t\tlocation,\n\t};\n}\n\nfunction extractAnthropicMeta(_meta: Record<string, unknown>): NormalizedMeta {\n\t// Placeholder for Anthropic extraction logic\n\t// Will be implemented when Anthropic MCP metadata format is known\n\treturn { provider: \"anthropic\" };\n}\n","// Tracking Module\n\nimport { WaniWaniError } from \"../error.js\";\nimport type { InternalConfig } from \"../types.js\";\nimport type { TrackEvent, TrackingClient } from \"./@types.js\";\nimport { extractMetadata } from \"./metadata.js\";\n\n// Re-export types\nexport type {\n\tEventType,\n\tLocationInfo,\n\tMCPProvider,\n\tNormalizedMeta,\n\tOpenAIMeta,\n\tToolType,\n\tTrackEvent,\n\tTrackingClient,\n} from \"./@types.js\";\n\n// Re-export metadata utilities\nexport { detectProvider, extractMetadata } from \"./metadata.js\";\n\nexport function createTrackingClient(config: InternalConfig): TrackingClient {\n\tconst { baseUrl, apiKey } = config;\n\n\tfunction checkIfApiKeyIsSet() {\n\t\tif (!apiKey) {\n\t\t\tthrow new Error(\"WANIWANI_API_KEY is not set\");\n\t\t}\n\t}\n\n\treturn {\n\t\tasync track(event: TrackEvent): Promise<{ eventId: string }> {\n\t\t\ttry {\n\t\t\t\tcheckIfApiKeyIsSet();\n\n\t\t\t\t// Extract provider-specific fields from meta if present\n\t\t\t\tconst normalized = event.meta ? extractMetadata(event.meta) : {};\n\n\t\t\t\tconst response = await fetch(`${baseUrl}/api/mcp/events`, {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\t\tAuthorization: `Bearer ${apiKey}`,\n\t\t\t\t\t},\n\t\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\t\t...event,\n\t\t\t\t\t\t...normalized,\n\t\t\t\t\t}),\n\t\t\t\t});\n\n\t\t\t\tconst data = await response.json();\n\n\t\t\t\tif (!response.ok) {\n\t\t\t\t\tthrow new WaniWaniError(\n\t\t\t\t\t\tdata.message ?? \"Request failed\",\n\t\t\t\t\t\tresponse.status,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn { eventId: data.data.eventId };\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\"[WaniWani] Track error:\", error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t};\n}\n","// WaniWani SDK - Main Entry\n\nimport { createTrackingClient } from \"./tracking/index.js\";\nimport type { WaniWaniClient, WaniWaniConfig } from \"./types.js\";\n\n/**\n * Create a WaniWani SDK client\n *\n * @param config - Configuration options\n * @returns A fully typed WaniWani client\n *\n * @example\n * ```typescript\n * import { waniwani } from \"@waniwani\";\n *\n * const client = waniwani({ apiKey: \"...\" });\n *\n * await client.track({\n * eventType: \"tool.called\",\n * sessionId: \"session-123\",\n * toolName: \"pricing\"\n * });\n * ```\n */\nexport function waniwani(config?: WaniWaniConfig): WaniWaniClient {\n\tconst baseUrl = config?.baseUrl ?? \"https://app.waniwani.ai\";\n\tconst apiKey = config?.apiKey ?? process.env.WANIWANI_API_KEY;\n\n\tconst internalConfig = { baseUrl, apiKey };\n\n\t// Compose client from modules\n\tconst tracking = createTrackingClient(internalConfig);\n\n\treturn {\n\t\t...tracking,\n\t\t// Future modules will be spread here\n\t\t// ...tools,\n\t};\n}\n"],"mappings":"AAEO,IAAMA,EAAN,cAA4B,KAAM,CACxC,YACCC,EACOC,EACN,CACD,MAAMD,CAAO,EAFN,YAAAC,EAGP,KAAK,KAAO,eACb,CACD,ECEO,SAASC,EAAeC,EAA4C,CAC1E,OAAIA,EAAK,gBAAgB,GAAKA,EAAK,gBAAgB,EAC3C,SAID,SACR,CAKO,SAASC,EAAgBD,EAA+C,CAG9E,OAFiBD,EAAeC,CAAI,EAElB,CACjB,IAAK,SACJ,OAAOE,EAAkBF,CAA6B,EACvD,IAAK,YACJ,OAAOG,EAAqBH,CAAI,EACjC,QACC,MAAO,CAAE,SAAU,SAAU,CAC/B,CACD,CAEA,SAASE,EAAkBF,EAAkC,CAC5D,IAAMI,EAAcJ,EAAK,qBAAqB,EAC1CK,EAEJ,OAAID,IACHC,EAAW,CACV,KAAMD,EAAY,KAClB,OAAQA,EAAY,OACpB,QAASA,EAAY,QACrB,SAAUA,EAAY,QACvB,GAGM,CACN,SAAU,SACV,UAAWJ,EAAK,gBAAgB,EAChC,eAAgBA,EAAK,gBAAgB,EACrC,UAAWA,EAAK,kBAAkB,EAClC,OAAQA,EAAK,eAAe,EAC5B,SAAAK,CACD,CACD,CAEA,SAASF,EAAqBG,EAAgD,CAG7E,MAAO,CAAE,SAAU,WAAY,CAChC,CC1CO,SAASC,EAAqBC,EAAwC,CAC5E,GAAM,CAAE,QAAAC,EAAS,OAAAC,CAAO,EAAIF,EAE5B,SAASG,GAAqB,CAC7B,GAAI,CAACD,EACJ,MAAM,IAAI,MAAM,6BAA6B,CAE/C,CAEA,MAAO,CACN,MAAM,MAAME,EAAiD,CAC5D,GAAI,CACHD,EAAmB,EAGnB,IAAME,EAAaD,EAAM,KAAOE,EAAgBF,EAAM,IAAI,EAAI,CAAC,EAEzDG,EAAW,MAAM,MAAM,GAAGN,CAAO,kBAAmB,CACzD,OAAQ,OACR,QAAS,CACR,eAAgB,mBAChB,cAAe,UAAUC,CAAM,EAChC,EACA,KAAM,KAAK,UAAU,CACpB,GAAGE,EACH,GAAGC,CACJ,CAAC,CACF,CAAC,EAEKG,EAAO,MAAMD,EAAS,KAAK,EAEjC,GAAI,CAACA,EAAS,GACb,MAAM,IAAIE,EACTD,EAAK,SAAW,iBAChBD,EAAS,MACV,EAGD,MAAO,CAAE,QAASC,EAAK,KAAK,OAAQ,CACrC,OAASE,EAAO,CACf,cAAQ,MAAM,0BAA2BA,CAAK,EACxCA,CACP,CACD,CACD,CACD,CC3CO,SAASC,EAASC,EAAyC,CACjE,IAAMC,EAAUD,GAAQ,SAAW,0BAC7BE,EAASF,GAAQ,QAAU,QAAQ,IAAI,iBAO7C,MAAO,CACN,GAHgBG,EAHM,CAAE,QAAAF,EAAS,OAAAC,CAAO,CAGW,CAMpD,CACD","names":["WaniWaniError","message","status","detectProvider","meta","extractMetadata","extractOpenAIMeta","extractAnthropicMeta","rawLocation","location","_meta","createTrackingClient","config","baseUrl","apiKey","checkIfApiKeyIsSet","event","normalized","extractMetadata","response","data","WaniWaniError","error","waniwani","config","baseUrl","apiKey","createTrackingClient"]}
1
+ {"version":3,"sources":["../src/error.ts","../src/tracking/index.ts","../src/waniwani.ts"],"sourcesContent":["// WaniWani SDK - Errors\n\nexport class WaniWaniError extends Error {\n\tconstructor(\n\t\tmessage: string,\n\t\tpublic status: number,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"WaniWaniError\";\n\t}\n}\n","// Tracking Module\n\nimport { WaniWaniError } from \"../error.js\";\nimport type { InternalConfig } from \"../types.js\";\nimport type { TrackEvent, TrackingClient } from \"./@types.js\";\n\n// Re-export types\nexport type {\n\tEventType,\n\tLinkClickedProperties,\n\tPurchaseCompletedProperties,\n\tQuoteSucceededProperties,\n\tToolCalledProperties,\n\tTrackEvent,\n\tTrackingClient,\n} from \"./@types.js\";\n\nexport function createTrackingClient(config: InternalConfig): TrackingClient {\n\tconst { baseUrl, apiKey } = config;\n\n\tfunction checkIfApiKeyIsSet() {\n\t\tif (!apiKey) {\n\t\t\tthrow new Error(\"WANIWANI_API_KEY is not set\");\n\t\t}\n\t}\n\n\treturn {\n\t\tasync track(event: TrackEvent): Promise<{ eventId: string }> {\n\t\t\ttry {\n\t\t\t\tcheckIfApiKeyIsSet();\n\n\t\t\t\tconst response = await fetch(`${baseUrl}/api/mcp/events`, {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\t\tAuthorization: `Bearer ${apiKey}`,\n\t\t\t\t\t},\n\t\t\t\t\tbody: JSON.stringify(event),\n\t\t\t\t});\n\n\t\t\t\tconst data = await response.json();\n\n\t\t\t\tif (!response.ok) {\n\t\t\t\t\tthrow new WaniWaniError(\n\t\t\t\t\t\tdata.message ?? \"Request failed\",\n\t\t\t\t\t\tresponse.status,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn { eventId: data.data.eventId };\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\"[WaniWani] Track error:\", error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t};\n}\n","// WaniWani SDK - Main Entry\n\nimport { createTrackingClient } from \"./tracking/index.js\";\nimport type { WaniWaniClient, WaniWaniConfig } from \"./types.js\";\n\n/**\n * Create a WaniWani SDK client\n *\n * @param config - Configuration options\n * @returns A fully typed WaniWani client\n *\n * @example\n * ```typescript\n * import { waniwani } from \"@waniwani\";\n *\n * const client = waniwani({ apiKey: \"...\" });\n *\n * await client.track({\n * eventType: \"tool.called\",\n * sessionId: \"session-123\",\n * toolName: \"pricing\"\n * });\n * ```\n */\nexport function waniwani(config?: WaniWaniConfig): WaniWaniClient {\n\tconst baseUrl = config?.baseUrl ?? \"https://app.waniwani.ai\";\n\tconst apiKey = config?.apiKey ?? process.env.WANIWANI_API_KEY;\n\n\tconst internalConfig = { baseUrl, apiKey };\n\n\t// Compose client from modules\n\tconst tracking = createTrackingClient(internalConfig);\n\n\treturn {\n\t\t...tracking,\n\t\t// Future modules will be spread here\n\t\t// ...tools,\n\t};\n}\n"],"mappings":"AAEO,IAAMA,EAAN,cAA4B,KAAM,CACxC,YACCC,EACOC,EACN,CACD,MAAMD,CAAO,EAFN,YAAAC,EAGP,KAAK,KAAO,eACb,CACD,ECOO,SAASC,EAAqBC,EAAwC,CAC5E,GAAM,CAAE,QAAAC,EAAS,OAAAC,CAAO,EAAIF,EAE5B,SAASG,GAAqB,CAC7B,GAAI,CAACD,EACJ,MAAM,IAAI,MAAM,6BAA6B,CAE/C,CAEA,MAAO,CACN,MAAM,MAAME,EAAiD,CAC5D,GAAI,CACHD,EAAmB,EAEnB,IAAME,EAAW,MAAM,MAAM,GAAGJ,CAAO,kBAAmB,CACzD,OAAQ,OACR,QAAS,CACR,eAAgB,mBAChB,cAAe,UAAUC,CAAM,EAChC,EACA,KAAM,KAAK,UAAUE,CAAK,CAC3B,CAAC,EAEKE,EAAO,MAAMD,EAAS,KAAK,EAEjC,GAAI,CAACA,EAAS,GACb,MAAM,IAAIE,EACTD,EAAK,SAAW,iBAChBD,EAAS,MACV,EAGD,MAAO,CAAE,QAASC,EAAK,KAAK,OAAQ,CACrC,OAASE,EAAO,CACf,cAAQ,MAAM,0BAA2BA,CAAK,EACxCA,CACP,CACD,CACD,CACD,CChCO,SAASC,EAASC,EAAyC,CACjE,IAAMC,EAAUD,GAAQ,SAAW,0BAC7BE,EAASF,GAAQ,QAAU,QAAQ,IAAI,iBAO7C,MAAO,CACN,GAHgBG,EAHM,CAAE,QAAAF,EAAS,OAAAC,CAAO,CAGW,CAMpD,CACD","names":["WaniWaniError","message","status","createTrackingClient","config","baseUrl","apiKey","checkIfApiKeyIsSet","event","response","data","WaniWaniError","error","waniwani","config","baseUrl","apiKey","createTrackingClient"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@waniwani/sdk",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "description": "WaniWani SDK - MCP event tracking and tools",
5
5
  "type": "module",
6
6
  "exports": {