@waniwani/sdk 0.12.17 → 0.13.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.
@@ -57,7 +57,7 @@ interface KbClient {
57
57
  sources(): Promise<KbSource[]>;
58
58
  }
59
59
 
60
- type EventType = "session.started" | "tool.called" | "quote.requested" | "quote.succeeded" | "quote.failed" | "link.clicked" | "purchase.completed" | "widget_render" | "widget_click" | "widget_link_click" | "widget_error" | "widget_scroll" | "widget_form_field" | "widget_form_submit" | "user.identified";
60
+ type EventType = "session.started" | "tool.called" | "quote.requested" | "quote.succeeded" | "quote.failed" | "link.clicked" | "purchase.completed" | "widget_render" | "widget_click" | "widget_link_click" | "widget_error" | "widget_scroll" | "widget_form_field" | "widget_form_submit" | "user.identified" | "price_shown" | "prices_compared" | "option_selected" | "lead" | "converted";
61
61
  interface ToolCalledProperties {
62
62
  name?: string;
63
63
  type?: "pricing" | "product_info" | "availability" | "support" | "other";
@@ -73,6 +73,34 @@ interface PurchaseCompletedProperties {
73
73
  amount?: number;
74
74
  currency?: string;
75
75
  }
76
+ interface PriceShownProperties {
77
+ amount: number;
78
+ currency: string;
79
+ itemId?: string;
80
+ label?: string;
81
+ }
82
+ interface ComparedPriceOption {
83
+ id: string;
84
+ amount: number;
85
+ currency: string;
86
+ }
87
+ interface PricesComparedProperties {
88
+ options: ComparedPriceOption[];
89
+ }
90
+ interface OptionSelectedProperties {
91
+ id: string;
92
+ amount: number;
93
+ currency: string;
94
+ }
95
+ interface LeadProperties {
96
+ source?: string;
97
+ }
98
+ interface ConvertedProperties {
99
+ amount: number;
100
+ currency: string;
101
+ /** When the conversion actually happened — for backdated off-platform sales. */
102
+ occurredAt?: string;
103
+ }
76
104
  interface TrackingContext {
77
105
  /**
78
106
  * MCP request metadata passed through to the API.
@@ -122,6 +150,21 @@ type TrackEvent = ({
122
150
  properties?: PurchaseCompletedProperties;
123
151
  } & BaseTrackEvent) | ({
124
152
  event: "user.identified";
153
+ } & BaseTrackEvent) | ({
154
+ event: "price_shown";
155
+ properties?: PriceShownProperties;
156
+ } & BaseTrackEvent) | ({
157
+ event: "prices_compared";
158
+ properties?: PricesComparedProperties;
159
+ } & BaseTrackEvent) | ({
160
+ event: "option_selected";
161
+ properties?: OptionSelectedProperties;
162
+ } & BaseTrackEvent) | ({
163
+ event: "lead";
164
+ properties?: LeadProperties;
165
+ } & BaseTrackEvent) | ({
166
+ event: "converted";
167
+ properties?: ConvertedProperties;
125
168
  } & BaseTrackEvent);
126
169
  /**
127
170
  * Legacy tracking shape supported for existing integrations.
@@ -141,6 +184,54 @@ interface LegacyTrackEvent extends TrackingContext {
141
184
  * Public track input accepted by `client.track()`.
142
185
  */
143
186
  type TrackInput = TrackEvent | LegacyTrackEvent;
187
+ interface RevenuePriceShownInput extends TrackingContext, PriceShownProperties {
188
+ }
189
+ interface RevenuePricesComparedInput extends TrackingContext, PricesComparedProperties {
190
+ }
191
+ interface RevenueOptionSelectedInput extends TrackingContext, OptionSelectedProperties {
192
+ }
193
+ /**
194
+ * Input for `track.lead()`. `source` is the lead's acquisition source
195
+ * (the `lead` event property, e.g. "newsletter") — on this helper it shadows
196
+ * the envelope `source` from the tracking context. To set a custom envelope
197
+ * source on a lead, use the generic `track({ event: "lead", … })`.
198
+ */
199
+ interface RevenueLeadInput extends TrackingContext, LeadProperties {
200
+ }
201
+ interface RevenueConvertedInput extends TrackingContext, ConvertedProperties {
202
+ }
203
+ /**
204
+ * Revenue-oriented helpers, flat on `client.track.*` (e.g.
205
+ * `client.track.priceShown()`, `client.track.converted()`). Decoupled from
206
+ * product primitives — each maps to a typed first-class revenue event.
207
+ */
208
+ interface RevenueTrackingApi {
209
+ priceShown: (input: RevenuePriceShownInput) => Promise<{
210
+ eventId: string;
211
+ }>;
212
+ pricesCompared: (input: RevenuePricesComparedInput) => Promise<{
213
+ eventId: string;
214
+ }>;
215
+ optionSelected: (input: RevenueOptionSelectedInput) => Promise<{
216
+ eventId: string;
217
+ }>;
218
+ lead: (input?: RevenueLeadInput) => Promise<{
219
+ eventId: string;
220
+ }>;
221
+ converted: (input: RevenueConvertedInput) => Promise<{
222
+ eventId: string;
223
+ }>;
224
+ }
225
+ /**
226
+ * `client.track` — callable for generic events (`track(event)`), with the
227
+ * revenue helpers attached flat: `track.priceShown()`, `track.lead()`,
228
+ * `track.converted()`, etc.
229
+ */
230
+ interface TrackFn extends RevenueTrackingApi {
231
+ (event: TrackInput): Promise<{
232
+ eventId: string;
233
+ }>;
234
+ }
144
235
  interface TrackingConfig {
145
236
  /** Events API V2 endpoint path. */
146
237
  endpointPath?: string;
@@ -180,10 +271,11 @@ interface TrackingClient {
180
271
  /**
181
272
  * Track an event using modern or legacy input shape.
182
273
  * Returns a deterministic event id immediately after enqueue.
274
+ *
275
+ * Also exposes the revenue helpers flat: `client.track.priceShown()`,
276
+ * `client.track.lead()`, `client.track.converted()`, etc.
183
277
  */
184
- track: (event: TrackInput) => Promise<{
185
- eventId: string;
186
- }>;
278
+ track: TrackFn;
187
279
  /**
188
280
  * Flush all currently buffered events.
189
281
  */
@@ -74,6 +74,12 @@ interface Messages {
74
74
  failedToLoad: string;
75
75
  retry: string;
76
76
  };
77
+ launcher: {
78
+ prompt: string;
79
+ open: string;
80
+ close: string;
81
+ minimize: string;
82
+ };
77
83
  }
78
84
 
79
85
  type DeepPartial<T> = T extends (...args: never[]) => unknown ? T : T extends object ? {