@wassist/sdk 0.1.0 → 0.1.1

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/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.0 (Unreleased)
3
+ ## 0.1.1
4
+
5
+ - **Fix**: `WassistEvent` is now a clean discriminated union — `switch (event.event)` correctly narrows every known case to its specific event type, so fields like `event.message.body` and `event.conversationId` are typed inside the branch (previously they collapsed to `unknown` because the catch-all `WassistEventBase<string> & Record<string, unknown>` member was part of the union). The catch-all has been split out into a separate, opt-in `UnrecognizedWassistEvent` type for forward-compat handling of future event names.
6
+ - Runnable [examples](./examples) for a quickstart agent setup script, a Next.js / Vercel webhook receiver, and a Cloudflare Workers webhook receiver — each with a one-click deploy button where applicable.
7
+
8
+ ## 0.1.0
4
9
 
5
10
  Initial release.
6
11
 
package/README.md CHANGED
@@ -48,6 +48,16 @@ for await (const c of wassist.conversations.list()) {
48
48
 
49
49
  Get your API key at [wassist.app/settings](https://wassist.app/settings).
50
50
 
51
+ ## Examples
52
+
53
+ Runnable, self-contained examples live in [`examples/`](https://github.com/wassist/sdk/tree/main/examples). Each one is its own mini-package — `cd` in, install, and go.
54
+
55
+ | Example | What it shows | Deploy |
56
+ |---------|---------------|--------|
57
+ | [`quickstart-setup-agent`](https://github.com/wassist/sdk/tree/main/examples/quickstart-setup-agent) | One-shot script: create an agent, configure prompts and icebreakers, optionally connect a phone number. | — |
58
+ | [`webhook-receiver-vercel`](https://github.com/wassist/sdk/tree/main/examples/webhook-receiver-vercel) | Next.js App Router route that verifies Wassist webhooks and echoes inbound messages. | [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fwassist%2Fsdk&root-directory=examples%2Fwebhook-receiver-vercel&project-name=wassist-webhook-vercel&env=WASSIST_API_KEY,WASSIST_WEBHOOK_SECRET) |
59
+ | [`webhook-receiver-cloudflare`](https://github.com/wassist/sdk/tree/main/examples/webhook-receiver-cloudflare) | Cloudflare Worker that verifies Wassist webhooks via Web Crypto and echoes inbound messages. | [![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/wassist/sdk/tree/main/examples/webhook-receiver-cloudflare&secrets=WASSIST_API_KEY,WASSIST_WEBHOOK_SECRET) |
60
+
51
61
  ## Configuration
52
62
 
53
63
  ```ts
package/dist/index.d.cts CHANGED
@@ -1399,13 +1399,34 @@ interface TestPingEvent extends WassistEventBase<'test.ping'> {
1399
1399
  message: string;
1400
1400
  }
1401
1401
  /**
1402
- * Discriminated union of every documented Wassist webhook event.
1402
+ * Discriminated union of every documented Wassist webhook event. Designed
1403
+ * for clean narrowing in a `switch (event.event)`:
1403
1404
  *
1404
- * Unknown future events are still typed (as the `unknown` fallback) so a
1405
- * runtime call to {@link Wassist.webhooks.constructEvent} never throws on
1406
- * an unrecognized `event` name.
1405
+ * ```ts
1406
+ * switch (event.event) {
1407
+ * case 'message.received': event.message.body; // typed
1408
+ * case 'subscription.activated': event.webhookId; // typed
1409
+ * }
1410
+ * ```
1411
+ *
1412
+ * For forward-compatibility with new event types Wassist may ship before
1413
+ * you upgrade the SDK, see {@link UnrecognizedWassistEvent}.
1414
+ */
1415
+ type WassistEvent = MessageReceivedEvent | SubscriptionActivatedEvent | SubscriptionRevokedEvent | TestPingEvent;
1416
+ /**
1417
+ * Catch-all shape for events whose name {@link WassistEvent} doesn't yet
1418
+ * know about. `constructEvent` never throws on an unrecognized event name
1419
+ * at runtime — cast to this type when you need to inspect a future event:
1420
+ *
1421
+ * ```ts
1422
+ * const event = Wassist.webhooks.constructEvent(...);
1423
+ * if ((event.event as string).startsWith('beta.')) {
1424
+ * const unknown = event as UnrecognizedWassistEvent;
1425
+ * console.log(unknown.event, unknown.timestamp);
1426
+ * }
1427
+ * ```
1407
1428
  */
1408
- type WassistEvent = MessageReceivedEvent | SubscriptionActivatedEvent | SubscriptionRevokedEvent | TestPingEvent | (WassistEventBase<string> & Record<string, unknown>);
1429
+ type UnrecognizedWassistEvent = WassistEventBase<string> & Record<string, unknown>;
1409
1430
 
1410
1431
  /**
1411
1432
  * Webhook signature verification.
@@ -1623,4 +1644,4 @@ declare class WassistSignatureVerificationError extends WassistError {
1623
1644
  */
1624
1645
  declare const SDK_VERSION = "0.1.0";
1625
1646
 
1626
- export { type AddNumberInput, type Agent, type AgentCreditSettings, type AgentCreditSettingsInput, type AgentDocument, type AgentHandoffTool, type AgentHandoffToolInput, type AgentImageGenerateTool, type AgentImageGenerateToolInput, type AgentMcpConfig, type AgentMcpConfigInput, type AgentMemoryKey, type AgentMemoryKeyInput, type AgentOutboundTrigger, type AgentOutboundTriggerInput, type AgentPaywallConfig, type AgentPaywallConfigInput, type AgentTool, type AgentToolInput, type AgentWakeUpConfig, type AgentWakeUpConfigInput, type AgentWebsiteTool, type AgentWebsiteToolInput, type AgentWhatsAppPhoneNumber, AgentsResource, AutoPaginatedList, type AvailableNumber, type AvailableNumbersResponse, type CTAButtonMessage, type ConnectAgentInput, type Conversation, type ConversationContact, type ConversationLastMessage, ConversationsResource, type CreateAgentInput, type CreateBYOAAgentInput, type CreateConversationInput, type CreateConversationMessageInput, type CreateWhatsAppLinkSessionInput, type CreateWhatsAppTemplateInput, type FetchLike, type FileInfo, type ISODateTime, type ImageInfo, type ImageMessage, type ListConversationsParams, type ListSelectionMessage, type Message, type MessageReceivedEvent, type MessageReceivedMessage, type MessageRole, type MessageStatus, type MessageType, MessagesResource, type Page, type PageParams, type PaginatedResponse, type PhoneNumber, type PhoneNumberBusinessProfile, type PhoneNumberRoutingMode, type PhoneNumberString, PhoneNumbersResource, type PromptAgentInput, type PublicUser, type PublishWhatsAppTemplateInput, type QuickReplyMessage, type RequestOptions, SDK_VERSION, type SendMessageCtaImageInput, type SendMessageCtaInput, type SendMessageInput, type SendMessageTemplateInput, type SendMessageTextInput, type SendUnifiedMessageButtonInput, type SendUnifiedMessageInput, type SendUnifiedMessageMediaInput, type SubscribeConversationInput, type SubscribePhoneNumberInput, type SubscriptionActivatedEvent, type SubscriptionRevokedEvent, type TemplateMessage, type TestPingEvent, type TextMessage, type UUID, type UnifiedMessage, type UnifiedMessageButton, type UnifiedMessageButtonType, type UnifiedMessageMedia, type UnpublishWhatsAppTemplateInput, type UnsubscribePhoneNumberInput, type UpdateAgentInput, type UpdateWhatsAppTemplateInput, Wassist, WassistAPIError, WassistAuthenticationError, type WassistClientConfig, WassistConflictError, WassistConnectionError, WassistError, type WassistErrorOptions, type WassistEvent, type WassistEventBase, WassistInvalidRequestError, WassistNotFoundError, WassistPermissionError, WassistRateLimitError, WassistSignatureVerificationError, WassistTimeoutError, Webhooks, type WhatsAppAccount, type WhatsAppAccountPhoneNumber, WhatsAppAccountsResource, type WhatsAppLinkSession, type WhatsAppLinkSessionStatus, WhatsAppLinkSessionsResource, type WhatsAppTemplate, type WhatsAppTemplateAccountLink, type WhatsAppTemplateButton, type WhatsAppTemplateButtonType, type WhatsAppTemplateCategory, type WhatsAppTemplateComponent, type WhatsAppTemplateComponentExample, type WhatsAppTemplateNamedParam, type WhatsAppTemplateParameterFormat, type WhatsAppTemplatePublishResult, type WhatsAppTemplateQuality, type WhatsAppTemplateStatus, type WhatsAppTemplateUnpublishResult, type WhatsAppTemplateWithPublishResults, WhatsAppTemplatesResource };
1647
+ export { type AddNumberInput, type Agent, type AgentCreditSettings, type AgentCreditSettingsInput, type AgentDocument, type AgentHandoffTool, type AgentHandoffToolInput, type AgentImageGenerateTool, type AgentImageGenerateToolInput, type AgentMcpConfig, type AgentMcpConfigInput, type AgentMemoryKey, type AgentMemoryKeyInput, type AgentOutboundTrigger, type AgentOutboundTriggerInput, type AgentPaywallConfig, type AgentPaywallConfigInput, type AgentTool, type AgentToolInput, type AgentWakeUpConfig, type AgentWakeUpConfigInput, type AgentWebsiteTool, type AgentWebsiteToolInput, type AgentWhatsAppPhoneNumber, AgentsResource, AutoPaginatedList, type AvailableNumber, type AvailableNumbersResponse, type CTAButtonMessage, type ConnectAgentInput, type Conversation, type ConversationContact, type ConversationLastMessage, ConversationsResource, type CreateAgentInput, type CreateBYOAAgentInput, type CreateConversationInput, type CreateConversationMessageInput, type CreateWhatsAppLinkSessionInput, type CreateWhatsAppTemplateInput, type FetchLike, type FileInfo, type ISODateTime, type ImageInfo, type ImageMessage, type ListConversationsParams, type ListSelectionMessage, type Message, type MessageReceivedEvent, type MessageReceivedMessage, type MessageRole, type MessageStatus, type MessageType, MessagesResource, type Page, type PageParams, type PaginatedResponse, type PhoneNumber, type PhoneNumberBusinessProfile, type PhoneNumberRoutingMode, type PhoneNumberString, PhoneNumbersResource, type PromptAgentInput, type PublicUser, type PublishWhatsAppTemplateInput, type QuickReplyMessage, type RequestOptions, SDK_VERSION, type SendMessageCtaImageInput, type SendMessageCtaInput, type SendMessageInput, type SendMessageTemplateInput, type SendMessageTextInput, type SendUnifiedMessageButtonInput, type SendUnifiedMessageInput, type SendUnifiedMessageMediaInput, type SubscribeConversationInput, type SubscribePhoneNumberInput, type SubscriptionActivatedEvent, type SubscriptionRevokedEvent, type TemplateMessage, type TestPingEvent, type TextMessage, type UUID, type UnifiedMessage, type UnifiedMessageButton, type UnifiedMessageButtonType, type UnifiedMessageMedia, type UnpublishWhatsAppTemplateInput, type UnrecognizedWassistEvent, type UnsubscribePhoneNumberInput, type UpdateAgentInput, type UpdateWhatsAppTemplateInput, Wassist, WassistAPIError, WassistAuthenticationError, type WassistClientConfig, WassistConflictError, WassistConnectionError, WassistError, type WassistErrorOptions, type WassistEvent, type WassistEventBase, WassistInvalidRequestError, WassistNotFoundError, WassistPermissionError, WassistRateLimitError, WassistSignatureVerificationError, WassistTimeoutError, Webhooks, type WhatsAppAccount, type WhatsAppAccountPhoneNumber, WhatsAppAccountsResource, type WhatsAppLinkSession, type WhatsAppLinkSessionStatus, WhatsAppLinkSessionsResource, type WhatsAppTemplate, type WhatsAppTemplateAccountLink, type WhatsAppTemplateButton, type WhatsAppTemplateButtonType, type WhatsAppTemplateCategory, type WhatsAppTemplateComponent, type WhatsAppTemplateComponentExample, type WhatsAppTemplateNamedParam, type WhatsAppTemplateParameterFormat, type WhatsAppTemplatePublishResult, type WhatsAppTemplateQuality, type WhatsAppTemplateStatus, type WhatsAppTemplateUnpublishResult, type WhatsAppTemplateWithPublishResults, WhatsAppTemplatesResource };
package/dist/index.d.ts CHANGED
@@ -1399,13 +1399,34 @@ interface TestPingEvent extends WassistEventBase<'test.ping'> {
1399
1399
  message: string;
1400
1400
  }
1401
1401
  /**
1402
- * Discriminated union of every documented Wassist webhook event.
1402
+ * Discriminated union of every documented Wassist webhook event. Designed
1403
+ * for clean narrowing in a `switch (event.event)`:
1403
1404
  *
1404
- * Unknown future events are still typed (as the `unknown` fallback) so a
1405
- * runtime call to {@link Wassist.webhooks.constructEvent} never throws on
1406
- * an unrecognized `event` name.
1405
+ * ```ts
1406
+ * switch (event.event) {
1407
+ * case 'message.received': event.message.body; // typed
1408
+ * case 'subscription.activated': event.webhookId; // typed
1409
+ * }
1410
+ * ```
1411
+ *
1412
+ * For forward-compatibility with new event types Wassist may ship before
1413
+ * you upgrade the SDK, see {@link UnrecognizedWassistEvent}.
1414
+ */
1415
+ type WassistEvent = MessageReceivedEvent | SubscriptionActivatedEvent | SubscriptionRevokedEvent | TestPingEvent;
1416
+ /**
1417
+ * Catch-all shape for events whose name {@link WassistEvent} doesn't yet
1418
+ * know about. `constructEvent` never throws on an unrecognized event name
1419
+ * at runtime — cast to this type when you need to inspect a future event:
1420
+ *
1421
+ * ```ts
1422
+ * const event = Wassist.webhooks.constructEvent(...);
1423
+ * if ((event.event as string).startsWith('beta.')) {
1424
+ * const unknown = event as UnrecognizedWassistEvent;
1425
+ * console.log(unknown.event, unknown.timestamp);
1426
+ * }
1427
+ * ```
1407
1428
  */
1408
- type WassistEvent = MessageReceivedEvent | SubscriptionActivatedEvent | SubscriptionRevokedEvent | TestPingEvent | (WassistEventBase<string> & Record<string, unknown>);
1429
+ type UnrecognizedWassistEvent = WassistEventBase<string> & Record<string, unknown>;
1409
1430
 
1410
1431
  /**
1411
1432
  * Webhook signature verification.
@@ -1623,4 +1644,4 @@ declare class WassistSignatureVerificationError extends WassistError {
1623
1644
  */
1624
1645
  declare const SDK_VERSION = "0.1.0";
1625
1646
 
1626
- export { type AddNumberInput, type Agent, type AgentCreditSettings, type AgentCreditSettingsInput, type AgentDocument, type AgentHandoffTool, type AgentHandoffToolInput, type AgentImageGenerateTool, type AgentImageGenerateToolInput, type AgentMcpConfig, type AgentMcpConfigInput, type AgentMemoryKey, type AgentMemoryKeyInput, type AgentOutboundTrigger, type AgentOutboundTriggerInput, type AgentPaywallConfig, type AgentPaywallConfigInput, type AgentTool, type AgentToolInput, type AgentWakeUpConfig, type AgentWakeUpConfigInput, type AgentWebsiteTool, type AgentWebsiteToolInput, type AgentWhatsAppPhoneNumber, AgentsResource, AutoPaginatedList, type AvailableNumber, type AvailableNumbersResponse, type CTAButtonMessage, type ConnectAgentInput, type Conversation, type ConversationContact, type ConversationLastMessage, ConversationsResource, type CreateAgentInput, type CreateBYOAAgentInput, type CreateConversationInput, type CreateConversationMessageInput, type CreateWhatsAppLinkSessionInput, type CreateWhatsAppTemplateInput, type FetchLike, type FileInfo, type ISODateTime, type ImageInfo, type ImageMessage, type ListConversationsParams, type ListSelectionMessage, type Message, type MessageReceivedEvent, type MessageReceivedMessage, type MessageRole, type MessageStatus, type MessageType, MessagesResource, type Page, type PageParams, type PaginatedResponse, type PhoneNumber, type PhoneNumberBusinessProfile, type PhoneNumberRoutingMode, type PhoneNumberString, PhoneNumbersResource, type PromptAgentInput, type PublicUser, type PublishWhatsAppTemplateInput, type QuickReplyMessage, type RequestOptions, SDK_VERSION, type SendMessageCtaImageInput, type SendMessageCtaInput, type SendMessageInput, type SendMessageTemplateInput, type SendMessageTextInput, type SendUnifiedMessageButtonInput, type SendUnifiedMessageInput, type SendUnifiedMessageMediaInput, type SubscribeConversationInput, type SubscribePhoneNumberInput, type SubscriptionActivatedEvent, type SubscriptionRevokedEvent, type TemplateMessage, type TestPingEvent, type TextMessage, type UUID, type UnifiedMessage, type UnifiedMessageButton, type UnifiedMessageButtonType, type UnifiedMessageMedia, type UnpublishWhatsAppTemplateInput, type UnsubscribePhoneNumberInput, type UpdateAgentInput, type UpdateWhatsAppTemplateInput, Wassist, WassistAPIError, WassistAuthenticationError, type WassistClientConfig, WassistConflictError, WassistConnectionError, WassistError, type WassistErrorOptions, type WassistEvent, type WassistEventBase, WassistInvalidRequestError, WassistNotFoundError, WassistPermissionError, WassistRateLimitError, WassistSignatureVerificationError, WassistTimeoutError, Webhooks, type WhatsAppAccount, type WhatsAppAccountPhoneNumber, WhatsAppAccountsResource, type WhatsAppLinkSession, type WhatsAppLinkSessionStatus, WhatsAppLinkSessionsResource, type WhatsAppTemplate, type WhatsAppTemplateAccountLink, type WhatsAppTemplateButton, type WhatsAppTemplateButtonType, type WhatsAppTemplateCategory, type WhatsAppTemplateComponent, type WhatsAppTemplateComponentExample, type WhatsAppTemplateNamedParam, type WhatsAppTemplateParameterFormat, type WhatsAppTemplatePublishResult, type WhatsAppTemplateQuality, type WhatsAppTemplateStatus, type WhatsAppTemplateUnpublishResult, type WhatsAppTemplateWithPublishResults, WhatsAppTemplatesResource };
1647
+ export { type AddNumberInput, type Agent, type AgentCreditSettings, type AgentCreditSettingsInput, type AgentDocument, type AgentHandoffTool, type AgentHandoffToolInput, type AgentImageGenerateTool, type AgentImageGenerateToolInput, type AgentMcpConfig, type AgentMcpConfigInput, type AgentMemoryKey, type AgentMemoryKeyInput, type AgentOutboundTrigger, type AgentOutboundTriggerInput, type AgentPaywallConfig, type AgentPaywallConfigInput, type AgentTool, type AgentToolInput, type AgentWakeUpConfig, type AgentWakeUpConfigInput, type AgentWebsiteTool, type AgentWebsiteToolInput, type AgentWhatsAppPhoneNumber, AgentsResource, AutoPaginatedList, type AvailableNumber, type AvailableNumbersResponse, type CTAButtonMessage, type ConnectAgentInput, type Conversation, type ConversationContact, type ConversationLastMessage, ConversationsResource, type CreateAgentInput, type CreateBYOAAgentInput, type CreateConversationInput, type CreateConversationMessageInput, type CreateWhatsAppLinkSessionInput, type CreateWhatsAppTemplateInput, type FetchLike, type FileInfo, type ISODateTime, type ImageInfo, type ImageMessage, type ListConversationsParams, type ListSelectionMessage, type Message, type MessageReceivedEvent, type MessageReceivedMessage, type MessageRole, type MessageStatus, type MessageType, MessagesResource, type Page, type PageParams, type PaginatedResponse, type PhoneNumber, type PhoneNumberBusinessProfile, type PhoneNumberRoutingMode, type PhoneNumberString, PhoneNumbersResource, type PromptAgentInput, type PublicUser, type PublishWhatsAppTemplateInput, type QuickReplyMessage, type RequestOptions, SDK_VERSION, type SendMessageCtaImageInput, type SendMessageCtaInput, type SendMessageInput, type SendMessageTemplateInput, type SendMessageTextInput, type SendUnifiedMessageButtonInput, type SendUnifiedMessageInput, type SendUnifiedMessageMediaInput, type SubscribeConversationInput, type SubscribePhoneNumberInput, type SubscriptionActivatedEvent, type SubscriptionRevokedEvent, type TemplateMessage, type TestPingEvent, type TextMessage, type UUID, type UnifiedMessage, type UnifiedMessageButton, type UnifiedMessageButtonType, type UnifiedMessageMedia, type UnpublishWhatsAppTemplateInput, type UnrecognizedWassistEvent, type UnsubscribePhoneNumberInput, type UpdateAgentInput, type UpdateWhatsAppTemplateInput, Wassist, WassistAPIError, WassistAuthenticationError, type WassistClientConfig, WassistConflictError, WassistConnectionError, WassistError, type WassistErrorOptions, type WassistEvent, type WassistEventBase, WassistInvalidRequestError, WassistNotFoundError, WassistPermissionError, WassistRateLimitError, WassistSignatureVerificationError, WassistTimeoutError, Webhooks, type WhatsAppAccount, type WhatsAppAccountPhoneNumber, WhatsAppAccountsResource, type WhatsAppLinkSession, type WhatsAppLinkSessionStatus, WhatsAppLinkSessionsResource, type WhatsAppTemplate, type WhatsAppTemplateAccountLink, type WhatsAppTemplateButton, type WhatsAppTemplateButtonType, type WhatsAppTemplateCategory, type WhatsAppTemplateComponent, type WhatsAppTemplateComponentExample, type WhatsAppTemplateNamedParam, type WhatsAppTemplateParameterFormat, type WhatsAppTemplatePublishResult, type WhatsAppTemplateQuality, type WhatsAppTemplateStatus, type WhatsAppTemplateUnpublishResult, type WhatsAppTemplateWithPublishResults, WhatsAppTemplatesResource };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wassist/sdk",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Wassist SDK – the TypeScript client for the Wassist API",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",