@cossistant/types 0.1.0 → 0.1.2

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.
Files changed (76) hide show
  1. package/analytics.d.ts +31 -0
  2. package/analytics.d.ts.map +1 -0
  3. package/analytics.js +41 -0
  4. package/analytics.js.map +1 -0
  5. package/api/ai-agent-capabilities.d.ts +16 -19
  6. package/api/ai-agent-capabilities.d.ts.map +1 -1
  7. package/api/ai-agent-capabilities.js +215 -286
  8. package/api/ai-agent-capabilities.js.map +1 -1
  9. package/api/ai-agent-defaults.d.ts +6 -0
  10. package/api/ai-agent-defaults.d.ts.map +1 -0
  11. package/api/ai-agent-defaults.js +33 -0
  12. package/api/ai-agent-defaults.js.map +1 -0
  13. package/api/ai-agent.d.ts +314 -207
  14. package/api/ai-agent.d.ts.map +1 -1
  15. package/api/ai-agent.js +175 -111
  16. package/api/ai-agent.js.map +1 -1
  17. package/api/conversation.d.ts +79 -56
  18. package/api/conversation.d.ts.map +1 -1
  19. package/api/conversation.js +7 -2
  20. package/api/conversation.js.map +1 -1
  21. package/api/feedback.d.ts +5 -0
  22. package/api/feedback.d.ts.map +1 -1
  23. package/api/feedback.js +2 -0
  24. package/api/feedback.js.map +1 -1
  25. package/api/index.d.ts +7 -6
  26. package/api/index.js +7 -6
  27. package/api/link-source.d.ts +4 -4
  28. package/api/link-source.d.ts.map +1 -1
  29. package/api/link-source.js +1 -1
  30. package/api/link-source.js.map +1 -1
  31. package/api/timeline-item.d.ts +79 -67
  32. package/api/timeline-item.d.ts.map +1 -1
  33. package/api/timeline-item.js +3 -1
  34. package/api/timeline-item.js.map +1 -1
  35. package/api/user.d.ts +1 -1
  36. package/api/user.d.ts.map +1 -1
  37. package/api/user.js +2 -2
  38. package/api/user.js.map +1 -1
  39. package/api/visitor.d.ts +225 -1
  40. package/api/visitor.d.ts.map +1 -1
  41. package/api/visitor.js +142 -1
  42. package/api/visitor.js.map +1 -1
  43. package/api/website.d.ts +16 -7
  44. package/api/website.d.ts.map +1 -1
  45. package/api/website.js +16 -2
  46. package/api/website.js.map +1 -1
  47. package/enums.d.ts +2 -0
  48. package/enums.d.ts.map +1 -1
  49. package/enums.js +3 -1
  50. package/enums.js.map +1 -1
  51. package/index.d.ts +10 -8
  52. package/index.d.ts.map +1 -1
  53. package/index.js +10 -8
  54. package/package.json +1 -1
  55. package/realtime-events.d.ts +106 -36
  56. package/realtime-events.d.ts.map +1 -1
  57. package/realtime-events.js +6 -2
  58. package/realtime-events.js.map +1 -1
  59. package/schemas.d.ts +13 -11
  60. package/schemas.d.ts.map +1 -1
  61. package/tool-timeline-policy.d.ts +19 -2
  62. package/tool-timeline-policy.d.ts.map +1 -1
  63. package/tool-timeline-policy.js +29 -6
  64. package/tool-timeline-policy.js.map +1 -1
  65. package/trpc/conversation-hard-limit.d.ts +30 -0
  66. package/trpc/conversation-hard-limit.d.ts.map +1 -0
  67. package/trpc/conversation-hard-limit.js +43 -0
  68. package/trpc/conversation-hard-limit.js.map +1 -0
  69. package/trpc/conversation.d.ts +84 -44
  70. package/trpc/conversation.d.ts.map +1 -1
  71. package/trpc/conversation.js +6 -0
  72. package/trpc/conversation.js.map +1 -1
  73. package/trpc/visitor.d.ts +73 -15
  74. package/trpc/visitor.d.ts.map +1 -1
  75. package/trpc/visitor.js +15 -8
  76. package/trpc/visitor.js.map +1 -1
package/api/visitor.js CHANGED
@@ -32,6 +32,143 @@ const publicContactResponseSchema = z.object({
32
32
  example: "a1b2c3d4"
33
33
  })
34
34
  });
35
+ const attributionChannelSchema = z.enum([
36
+ "direct",
37
+ "email",
38
+ "paid",
39
+ "organic_search",
40
+ "social",
41
+ "referral"
42
+ ]);
43
+ const nullableStringSchema = z.string().nullable();
44
+ const nullableUrlSchema = z.string().url().nullable();
45
+ const visitorAttributionReferrerSchema = z.object({
46
+ url: nullableUrlSchema.openapi({
47
+ description: "Sanitized external referrer URL without arbitrary query data.",
48
+ example: "https://news.ycombinator.com/item?id=123"
49
+ }),
50
+ domain: nullableStringSchema.openapi({
51
+ description: "Normalized referrer hostname.",
52
+ example: "news.ycombinator.com"
53
+ })
54
+ });
55
+ const visitorAttributionLandingSchema = z.object({
56
+ url: nullableUrlSchema.openapi({
57
+ description: "Sanitized landing page URL including only supported attribution params.",
58
+ example: "https://app.example.com/pricing?utm_source=hn&utm_medium=community"
59
+ }),
60
+ path: nullableStringSchema.openapi({
61
+ description: "Landing page path.",
62
+ example: "/pricing"
63
+ }),
64
+ title: nullableStringSchema.openapi({
65
+ description: "Document title captured on the landing page.",
66
+ example: "Pricing | Example"
67
+ })
68
+ });
69
+ const visitorAttributionUtmSchema = z.object({
70
+ source: nullableStringSchema.openapi({
71
+ description: "UTM source value.",
72
+ example: "hn"
73
+ }),
74
+ medium: nullableStringSchema.openapi({
75
+ description: "UTM medium value.",
76
+ example: "community"
77
+ }),
78
+ campaign: nullableStringSchema.openapi({
79
+ description: "UTM campaign value.",
80
+ example: "launch_week"
81
+ }),
82
+ content: nullableStringSchema.openapi({
83
+ description: "UTM content value.",
84
+ example: "hero_cta"
85
+ }),
86
+ term: nullableStringSchema.openapi({
87
+ description: "UTM term value.",
88
+ example: "ai support"
89
+ })
90
+ });
91
+ const visitorAttributionClickIdsSchema = z.object({
92
+ gclid: nullableStringSchema.openapi({
93
+ description: "Google Ads click identifier.",
94
+ example: "gclid_123"
95
+ }),
96
+ gbraid: nullableStringSchema.openapi({
97
+ description: "Google iOS app click identifier.",
98
+ example: "gbraid_123"
99
+ }),
100
+ wbraid: nullableStringSchema.openapi({
101
+ description: "Google web-to-app click identifier.",
102
+ example: "wbraid_123"
103
+ }),
104
+ fbclid: nullableStringSchema.openapi({
105
+ description: "Meta click identifier.",
106
+ example: "fbclid_123"
107
+ }),
108
+ msclkid: nullableStringSchema.openapi({
109
+ description: "Microsoft Ads click identifier.",
110
+ example: "msclkid_123"
111
+ }),
112
+ ttclid: nullableStringSchema.openapi({
113
+ description: "TikTok click identifier.",
114
+ example: "ttclid_123"
115
+ }),
116
+ li_fat_id: nullableStringSchema.openapi({
117
+ description: "LinkedIn click identifier.",
118
+ example: "li_fat_id_123"
119
+ }),
120
+ twclid: nullableStringSchema.openapi({
121
+ description: "X/Twitter click identifier.",
122
+ example: "twclid_123"
123
+ })
124
+ });
125
+ const visitorAttributionFirstTouchSchema = z.object({
126
+ channel: attributionChannelSchema.openapi({
127
+ description: "Derived acquisition channel.",
128
+ example: "referral"
129
+ }),
130
+ isDirect: z.boolean().openapi({
131
+ description: "Whether the visit should be treated as direct traffic.",
132
+ example: false
133
+ }),
134
+ referrer: visitorAttributionReferrerSchema,
135
+ landing: visitorAttributionLandingSchema,
136
+ utm: visitorAttributionUtmSchema,
137
+ clickIds: visitorAttributionClickIdsSchema,
138
+ capturedAt: z.string().openapi({
139
+ description: "When the first-touch attribution snapshot was captured.",
140
+ example: "2026-03-12T10:00:00.000Z"
141
+ })
142
+ });
143
+ const visitorAttributionSchema = z.object({
144
+ version: z.literal(1).openapi({
145
+ description: "Schema version for the attribution payload.",
146
+ example: 1
147
+ }),
148
+ firstTouch: visitorAttributionFirstTouchSchema
149
+ });
150
+ const visitorCurrentPageSchema = z.object({
151
+ url: nullableUrlSchema.openapi({
152
+ description: "Sanitized current page URL including only supported attribution params.",
153
+ example: "https://app.example.com/pricing"
154
+ }),
155
+ path: nullableStringSchema.openapi({
156
+ description: "Current page path.",
157
+ example: "/pricing"
158
+ }),
159
+ title: nullableStringSchema.openapi({
160
+ description: "Current document title.",
161
+ example: "Pricing | Example"
162
+ }),
163
+ referrerUrl: nullableUrlSchema.openapi({
164
+ description: "Sanitized document referrer URL for the current page context.",
165
+ example: "https://news.ycombinator.com/item?id=123"
166
+ }),
167
+ updatedAt: z.string().openapi({
168
+ description: "When the current page context was last updated.",
169
+ example: "2026-03-12T10:00:05.000Z"
170
+ })
171
+ });
35
172
  /**
36
173
  * Visitor data update request schema
37
174
  */
@@ -121,6 +258,8 @@ const updateVisitorRequestSchema = z.object({
121
258
  description: "The visitor's viewport size.",
122
259
  example: "1920x900"
123
260
  }).optional(),
261
+ attribution: visitorAttributionSchema.openapi({ description: "Normalized acquisition data captured for this visitor." }).optional(),
262
+ currentPage: visitorCurrentPageSchema.openapi({ description: "Latest page context captured for this visitor." }).optional(),
124
263
  metadata: visitorMetadataSchema.openapi({
125
264
  description: "Additional custom metadata for the visitor.",
126
265
  example: {
@@ -267,6 +406,8 @@ const visitorResponseSchema = z.object({
267
406
  description: "Whether the visitor is currently blocked.",
268
407
  example: true
269
408
  }),
409
+ attribution: visitorAttributionSchema.nullable().openapi({ description: "Normalized acquisition data captured for this visitor." }),
410
+ currentPage: visitorCurrentPageSchema.nullable().openapi({ description: "Latest page context captured for this visitor." }),
270
411
  contact: contactResponseSchema.nullable()
271
412
  });
272
413
  /**
@@ -297,5 +438,5 @@ const publicVisitorResponseSchema = z.object({
297
438
  });
298
439
 
299
440
  //#endregion
300
- export { publicContactResponseSchema, publicVisitorResponseSchema, updateVisitorMetadataRequestSchema, updateVisitorRequestSchema, visitorMetadataSchema, visitorProfileSchema, visitorResponseSchema };
441
+ export { attributionChannelSchema, publicContactResponseSchema, publicVisitorResponseSchema, updateVisitorMetadataRequestSchema, updateVisitorRequestSchema, visitorAttributionClickIdsSchema, visitorAttributionFirstTouchSchema, visitorAttributionLandingSchema, visitorAttributionReferrerSchema, visitorAttributionSchema, visitorAttributionUtmSchema, visitorCurrentPageSchema, visitorMetadataSchema, visitorProfileSchema, visitorResponseSchema };
301
442
  //# sourceMappingURL=visitor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"visitor.js","names":[],"sources":["../../src/api/visitor.ts"],"sourcesContent":["import { z } from \"@hono/zod-openapi\";\nimport { contactResponseSchema } from \"./contact\";\n\n/**\n * Visitor metadata are stored as key value pairs\n * Values can be strings, numbers, booleans, or null\n */\nexport const visitorMetadataSchema = z.record(\n\tz.string(),\n\tz.string().or(z.number()).or(z.boolean()).or(z.null())\n);\n\n/**\n * Contact information for identified visitors\n */\nexport const publicContactResponseSchema = z.object({\n\tid: z.ulid().openapi({\n\t\tdescription: \"The contact's unique identifier.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tname: z.string().nullable().openapi({\n\t\tdescription: \"The contact's name.\",\n\t\texample: \"John Doe\",\n\t}),\n\temail: z.string().nullable().openapi({\n\t\tdescription: \"The contact's email address.\",\n\t\texample: \"john.doe@example.com\",\n\t}),\n\timage: z.string().nullable().openapi({\n\t\tdescription: \"The contact's avatar/profile image URL.\",\n\t\texample: \"https://example.com/avatar.png\",\n\t}),\n\tmetadataHash: z.string().optional().openapi({\n\t\tdescription:\n\t\t\t\"Hash of the contact's metadata. Used to detect if metadata has changed without comparing full objects.\",\n\t\texample: \"a1b2c3d4\",\n\t}),\n});\n\nexport type PublicContact = z.infer<typeof publicContactResponseSchema>;\n\nexport type VisitorMetadata = z.infer<typeof visitorMetadataSchema>;\n\n/**\n * Visitor data update request schema\n */\nexport const updateVisitorRequestSchema = z.object({\n\texternalId: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription:\n\t\t\t\t\"External identifier for the visitor (e.g. from your system).\",\n\t\t\texample: \"user_12345\",\n\t\t})\n\t\t.optional(),\n\tname: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's name.\",\n\t\t\texample: \"John Doe\",\n\t\t})\n\t\t.optional(),\n\temail: z\n\t\t.string()\n\t\t.email()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's email address.\",\n\t\t\texample: \"john.doe@example.com\",\n\t\t})\n\t\t.optional(),\n\tbrowser: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's browser.\",\n\t\t\texample: \"Chrome\",\n\t\t})\n\t\t.optional(),\n\tbrowserVersion: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's browser version.\",\n\t\t\texample: \"120.0.0\",\n\t\t})\n\t\t.optional(),\n\tos: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's operating system.\",\n\t\t\texample: \"Windows\",\n\t\t})\n\t\t.optional(),\n\tosVersion: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's operating system version.\",\n\t\t\texample: \"11\",\n\t\t})\n\t\t.optional(),\n\tdevice: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's device.\",\n\t\t\texample: \"MacBook Pro\",\n\t\t})\n\t\t.optional(),\n\tdeviceType: z\n\t\t.enum([\"desktop\", \"mobile\", \"tablet\", \"unknown\"])\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's device type.\",\n\t\t\texample: \"desktop\",\n\t\t})\n\t\t.optional(),\n\tip: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's IP address.\",\n\t\t\texample: \"192.168.1.1\",\n\t\t})\n\t\t.optional(),\n\tcity: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's city.\",\n\t\t\texample: \"San Francisco\",\n\t\t})\n\t\t.optional(),\n\tregion: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's region/state.\",\n\t\t\texample: \"California\",\n\t\t})\n\t\t.optional(),\n\tcountry: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's country.\",\n\t\t\texample: \"United States\",\n\t\t})\n\t\t.optional(),\n\tcountryCode: z\n\t\t.string()\n\t\t.max(2)\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's country code (ISO 3166-1 alpha-2).\",\n\t\t\texample: \"US\",\n\t\t})\n\t\t.optional(),\n\tlatitude: z\n\t\t.number()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's latitude.\",\n\t\t\texample: 37.7749,\n\t\t})\n\t\t.optional(),\n\tlongitude: z\n\t\t.number()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's longitude.\",\n\t\t\texample: -122.4194,\n\t\t})\n\t\t.optional(),\n\tlanguage: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's preferred language.\",\n\t\t\texample: \"en-US\",\n\t\t})\n\t\t.optional(),\n\ttimezone: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's timezone.\",\n\t\t\texample: \"America/Los_Angeles\",\n\t\t})\n\t\t.optional(),\n\tscreenResolution: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's screen resolution.\",\n\t\t\texample: \"1920x1080\",\n\t\t})\n\t\t.optional(),\n\tviewport: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's viewport size.\",\n\t\t\texample: \"1920x900\",\n\t\t})\n\t\t.optional(),\n\tmetadata: visitorMetadataSchema\n\t\t.openapi({\n\t\t\tdescription: \"Additional custom metadata for the visitor.\",\n\t\t\texample: { plan: \"premium\", role: \"admin\" },\n\t\t})\n\t\t.optional(),\n});\n\nexport type UpdateVisitorRequest = z.infer<typeof updateVisitorRequestSchema>;\n\nexport const updateVisitorMetadataRequestSchema = z.object({\n\tmetadata: visitorMetadataSchema.openapi({\n\t\tdescription: \"Metadata payload to merge into the visitor's profile.\",\n\t\texample: { plan: \"premium\", role: \"admin\" },\n\t}),\n});\n\nexport type UpdateVisitorMetadataRequest = z.infer<\n\ttypeof updateVisitorMetadataRequestSchema\n>;\n\nexport const visitorProfileSchema = z.object({\n\tid: z.ulid().openapi({\n\t\tdescription: \"The visitor's unique identifier (ULID).\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tlastSeenAt: z.string().nullable().openapi({\n\t\tdescription: \"When the visitor was last seen.\",\n\t\texample: \"2021-01-01T00:00:00.000Z\",\n\t}),\n\tblockedAt: z.string().nullable().openapi({\n\t\tdescription: \"When the visitor was blocked, if applicable.\",\n\t\texample: \"2024-01-01T12:00:00.000Z\",\n\t}),\n\tblockedByUserId: z.string().nullable().openapi({\n\t\tdescription: \"Identifier of the team member who blocked the visitor.\",\n\t\texample: \"01JG000000000000000000001\",\n\t}),\n\tisBlocked: z.boolean().openapi({\n\t\tdescription: \"Whether the visitor is currently blocked.\",\n\t\texample: true,\n\t}),\n\tcontact: publicContactResponseSchema.nullable(),\n});\n\n/**\n * Visitor response schema\n */\nexport const visitorResponseSchema = z.object({\n\tid: z.ulid().openapi({\n\t\tdescription: \"The visitor's unique identifier (ULID).\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tbrowser: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's browser.\",\n\t\texample: \"Chrome\",\n\t}),\n\tbrowserVersion: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's browser version.\",\n\t\texample: \"120.0.0\",\n\t}),\n\tos: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's operating system.\",\n\t\texample: \"Windows\",\n\t}),\n\tosVersion: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's operating system version.\",\n\t\texample: \"11\",\n\t}),\n\tdevice: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's device.\",\n\t\texample: \"MacBook Pro\",\n\t}),\n\tdeviceType: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's device type.\",\n\t\texample: \"desktop\",\n\t}),\n\tip: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's IP address.\",\n\t\texample: \"192.168.1.1\",\n\t}),\n\tcity: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's city.\",\n\t\texample: \"San Francisco\",\n\t}),\n\tregion: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's region/state.\",\n\t\texample: \"California\",\n\t}),\n\tcountry: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's country.\",\n\t\texample: \"United States\",\n\t}),\n\tcountryCode: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's country code (ISO 3166-1 alpha-2).\",\n\t\texample: \"US\",\n\t}),\n\tlatitude: z.number().nullable().openapi({\n\t\tdescription: \"The visitor's latitude.\",\n\t\texample: 37.7749,\n\t}),\n\tlongitude: z.number().nullable().openapi({\n\t\tdescription: \"The visitor's longitude.\",\n\t\texample: -122.4194,\n\t}),\n\tlanguage: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's preferred language.\",\n\t\texample: \"en-US\",\n\t}),\n\ttimezone: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's timezone.\",\n\t\texample: \"America/Los_Angeles\",\n\t}),\n\tscreenResolution: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's screen resolution.\",\n\t\texample: \"1920x1080\",\n\t}),\n\tviewport: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's viewport size.\",\n\t\texample: \"1920x900\",\n\t}),\n\tcreatedAt: z.string().openapi({\n\t\tdescription: \"When the visitor was first seen.\",\n\t\texample: \"2021-01-01T00:00:00.000Z\",\n\t}),\n\tupdatedAt: z.string().openapi({\n\t\tdescription: \"When the visitor record was last updated.\",\n\t\texample: \"2021-01-01T00:00:00.000Z\",\n\t}),\n\tlastSeenAt: z.string().nullable().openapi({\n\t\tdescription: \"When the visitor was last connected or active.\",\n\t\texample: \"2021-01-01T00:00:00.000Z\",\n\t}),\n\twebsiteId: z.ulid().openapi({\n\t\tdescription: \"The website's unique identifier that the visitor belongs to.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\torganizationId: z.ulid().openapi({\n\t\tdescription:\n\t\t\t\"The organization's unique identifier that the visitor belongs to.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tblockedAt: z.string().nullable().openapi({\n\t\tdescription: \"When the visitor was blocked, if applicable.\",\n\t\texample: \"2024-01-01T12:00:00.000Z\",\n\t}),\n\tblockedByUserId: z.string().nullable().openapi({\n\t\tdescription: \"Identifier of the team member who blocked the visitor.\",\n\t\texample: \"01JG000000000000000000001\",\n\t}),\n\tisBlocked: z.boolean().openapi({\n\t\tdescription: \"Whether the visitor is currently blocked.\",\n\t\texample: true,\n\t}),\n\tcontact: contactResponseSchema.nullable(),\n});\n\nexport type Visitor = z.infer<typeof visitorResponseSchema>;\nexport type VisitorResponse = Visitor;\n\n/**\n * Visitor response schema\n */\nexport const publicVisitorResponseSchema = z.object({\n\tid: z.ulid().openapi({\n\t\tdescription: \"The visitor's unique identifier (ULID).\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tisBlocked: z.boolean().openapi({\n\t\tdescription: \"Whether the visitor is currently blocked.\",\n\t\texample: false,\n\t}),\n\tlanguage: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's preferred language.\",\n\t\texample: \"en-US\",\n\t}),\n\tcontact: publicContactResponseSchema.nullable().openapi({\n\t\tdescription:\n\t\t\t\"Contact information if the visitor has been identified via .identify().\",\n\t\texample: {\n\t\t\tid: \"01JG000000000000000000000\",\n\t\t\tname: \"John Doe\",\n\t\t\temail: \"john.doe@example.com\",\n\t\t\timage: \"https://example.com/avatar.png\",\n\t\t},\n\t}),\n});\n\nexport type PublicVisitor = z.infer<typeof publicVisitorResponseSchema>;\nexport type PublicVisitorResponse = PublicVisitor;\n"],"mappings":"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"}
1
+ {"version":3,"file":"visitor.js","names":[],"sources":["../../src/api/visitor.ts"],"sourcesContent":["import { z } from \"@hono/zod-openapi\";\nimport { contactResponseSchema } from \"./contact\";\n\n/**\n * Visitor metadata are stored as key value pairs\n * Values can be strings, numbers, booleans, or null\n */\nexport const visitorMetadataSchema = z.record(\n\tz.string(),\n\tz.string().or(z.number()).or(z.boolean()).or(z.null())\n);\n\n/**\n * Contact information for identified visitors\n */\nexport const publicContactResponseSchema = z.object({\n\tid: z.ulid().openapi({\n\t\tdescription: \"The contact's unique identifier.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tname: z.string().nullable().openapi({\n\t\tdescription: \"The contact's name.\",\n\t\texample: \"John Doe\",\n\t}),\n\temail: z.string().nullable().openapi({\n\t\tdescription: \"The contact's email address.\",\n\t\texample: \"john.doe@example.com\",\n\t}),\n\timage: z.string().nullable().openapi({\n\t\tdescription: \"The contact's avatar/profile image URL.\",\n\t\texample: \"https://example.com/avatar.png\",\n\t}),\n\tmetadataHash: z.string().optional().openapi({\n\t\tdescription:\n\t\t\t\"Hash of the contact's metadata. Used to detect if metadata has changed without comparing full objects.\",\n\t\texample: \"a1b2c3d4\",\n\t}),\n});\n\nexport type PublicContact = z.infer<typeof publicContactResponseSchema>;\n\nexport type VisitorMetadata = z.infer<typeof visitorMetadataSchema>;\n\nexport const attributionChannelSchema = z.enum([\n\t\"direct\",\n\t\"email\",\n\t\"paid\",\n\t\"organic_search\",\n\t\"social\",\n\t\"referral\",\n]);\n\nconst nullableStringSchema = z.string().nullable();\nconst nullableUrlSchema = z.string().url().nullable();\n\nexport const visitorAttributionReferrerSchema = z.object({\n\turl: nullableUrlSchema.openapi({\n\t\tdescription:\n\t\t\t\"Sanitized external referrer URL without arbitrary query data.\",\n\t\texample: \"https://news.ycombinator.com/item?id=123\",\n\t}),\n\tdomain: nullableStringSchema.openapi({\n\t\tdescription: \"Normalized referrer hostname.\",\n\t\texample: \"news.ycombinator.com\",\n\t}),\n});\n\nexport const visitorAttributionLandingSchema = z.object({\n\turl: nullableUrlSchema.openapi({\n\t\tdescription:\n\t\t\t\"Sanitized landing page URL including only supported attribution params.\",\n\t\texample:\n\t\t\t\"https://app.example.com/pricing?utm_source=hn&utm_medium=community\",\n\t}),\n\tpath: nullableStringSchema.openapi({\n\t\tdescription: \"Landing page path.\",\n\t\texample: \"/pricing\",\n\t}),\n\ttitle: nullableStringSchema.openapi({\n\t\tdescription: \"Document title captured on the landing page.\",\n\t\texample: \"Pricing | Example\",\n\t}),\n});\n\nexport const visitorAttributionUtmSchema = z.object({\n\tsource: nullableStringSchema.openapi({\n\t\tdescription: \"UTM source value.\",\n\t\texample: \"hn\",\n\t}),\n\tmedium: nullableStringSchema.openapi({\n\t\tdescription: \"UTM medium value.\",\n\t\texample: \"community\",\n\t}),\n\tcampaign: nullableStringSchema.openapi({\n\t\tdescription: \"UTM campaign value.\",\n\t\texample: \"launch_week\",\n\t}),\n\tcontent: nullableStringSchema.openapi({\n\t\tdescription: \"UTM content value.\",\n\t\texample: \"hero_cta\",\n\t}),\n\tterm: nullableStringSchema.openapi({\n\t\tdescription: \"UTM term value.\",\n\t\texample: \"ai support\",\n\t}),\n});\n\nexport const visitorAttributionClickIdsSchema = z.object({\n\tgclid: nullableStringSchema.openapi({\n\t\tdescription: \"Google Ads click identifier.\",\n\t\texample: \"gclid_123\",\n\t}),\n\tgbraid: nullableStringSchema.openapi({\n\t\tdescription: \"Google iOS app click identifier.\",\n\t\texample: \"gbraid_123\",\n\t}),\n\twbraid: nullableStringSchema.openapi({\n\t\tdescription: \"Google web-to-app click identifier.\",\n\t\texample: \"wbraid_123\",\n\t}),\n\tfbclid: nullableStringSchema.openapi({\n\t\tdescription: \"Meta click identifier.\",\n\t\texample: \"fbclid_123\",\n\t}),\n\tmsclkid: nullableStringSchema.openapi({\n\t\tdescription: \"Microsoft Ads click identifier.\",\n\t\texample: \"msclkid_123\",\n\t}),\n\tttclid: nullableStringSchema.openapi({\n\t\tdescription: \"TikTok click identifier.\",\n\t\texample: \"ttclid_123\",\n\t}),\n\tli_fat_id: nullableStringSchema.openapi({\n\t\tdescription: \"LinkedIn click identifier.\",\n\t\texample: \"li_fat_id_123\",\n\t}),\n\ttwclid: nullableStringSchema.openapi({\n\t\tdescription: \"X/Twitter click identifier.\",\n\t\texample: \"twclid_123\",\n\t}),\n});\n\nexport const visitorAttributionFirstTouchSchema = z.object({\n\tchannel: attributionChannelSchema.openapi({\n\t\tdescription: \"Derived acquisition channel.\",\n\t\texample: \"referral\",\n\t}),\n\tisDirect: z.boolean().openapi({\n\t\tdescription: \"Whether the visit should be treated as direct traffic.\",\n\t\texample: false,\n\t}),\n\treferrer: visitorAttributionReferrerSchema,\n\tlanding: visitorAttributionLandingSchema,\n\tutm: visitorAttributionUtmSchema,\n\tclickIds: visitorAttributionClickIdsSchema,\n\tcapturedAt: z.string().openapi({\n\t\tdescription: \"When the first-touch attribution snapshot was captured.\",\n\t\texample: \"2026-03-12T10:00:00.000Z\",\n\t}),\n});\n\nexport const visitorAttributionSchema = z.object({\n\tversion: z.literal(1).openapi({\n\t\tdescription: \"Schema version for the attribution payload.\",\n\t\texample: 1,\n\t}),\n\tfirstTouch: visitorAttributionFirstTouchSchema,\n});\n\nexport const visitorCurrentPageSchema = z.object({\n\turl: nullableUrlSchema.openapi({\n\t\tdescription:\n\t\t\t\"Sanitized current page URL including only supported attribution params.\",\n\t\texample: \"https://app.example.com/pricing\",\n\t}),\n\tpath: nullableStringSchema.openapi({\n\t\tdescription: \"Current page path.\",\n\t\texample: \"/pricing\",\n\t}),\n\ttitle: nullableStringSchema.openapi({\n\t\tdescription: \"Current document title.\",\n\t\texample: \"Pricing | Example\",\n\t}),\n\treferrerUrl: nullableUrlSchema.openapi({\n\t\tdescription:\n\t\t\t\"Sanitized document referrer URL for the current page context.\",\n\t\texample: \"https://news.ycombinator.com/item?id=123\",\n\t}),\n\tupdatedAt: z.string().openapi({\n\t\tdescription: \"When the current page context was last updated.\",\n\t\texample: \"2026-03-12T10:00:05.000Z\",\n\t}),\n});\n\nexport type AttributionChannel = z.infer<typeof attributionChannelSchema>;\nexport type VisitorAttributionReferrer = z.infer<\n\ttypeof visitorAttributionReferrerSchema\n>;\nexport type VisitorAttributionLanding = z.infer<\n\ttypeof visitorAttributionLandingSchema\n>;\nexport type VisitorAttributionUtm = z.infer<typeof visitorAttributionUtmSchema>;\nexport type VisitorAttributionClickIds = z.infer<\n\ttypeof visitorAttributionClickIdsSchema\n>;\nexport type VisitorAttributionFirstTouch = z.infer<\n\ttypeof visitorAttributionFirstTouchSchema\n>;\nexport type VisitorAttribution = z.infer<typeof visitorAttributionSchema>;\nexport type VisitorCurrentPage = z.infer<typeof visitorCurrentPageSchema>;\n\n/**\n * Visitor data update request schema\n */\nexport const updateVisitorRequestSchema = z.object({\n\texternalId: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription:\n\t\t\t\t\"External identifier for the visitor (e.g. from your system).\",\n\t\t\texample: \"user_12345\",\n\t\t})\n\t\t.optional(),\n\tname: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's name.\",\n\t\t\texample: \"John Doe\",\n\t\t})\n\t\t.optional(),\n\temail: z\n\t\t.string()\n\t\t.email()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's email address.\",\n\t\t\texample: \"john.doe@example.com\",\n\t\t})\n\t\t.optional(),\n\tbrowser: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's browser.\",\n\t\t\texample: \"Chrome\",\n\t\t})\n\t\t.optional(),\n\tbrowserVersion: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's browser version.\",\n\t\t\texample: \"120.0.0\",\n\t\t})\n\t\t.optional(),\n\tos: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's operating system.\",\n\t\t\texample: \"Windows\",\n\t\t})\n\t\t.optional(),\n\tosVersion: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's operating system version.\",\n\t\t\texample: \"11\",\n\t\t})\n\t\t.optional(),\n\tdevice: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's device.\",\n\t\t\texample: \"MacBook Pro\",\n\t\t})\n\t\t.optional(),\n\tdeviceType: z\n\t\t.enum([\"desktop\", \"mobile\", \"tablet\", \"unknown\"])\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's device type.\",\n\t\t\texample: \"desktop\",\n\t\t})\n\t\t.optional(),\n\tip: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's IP address.\",\n\t\t\texample: \"192.168.1.1\",\n\t\t})\n\t\t.optional(),\n\tcity: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's city.\",\n\t\t\texample: \"San Francisco\",\n\t\t})\n\t\t.optional(),\n\tregion: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's region/state.\",\n\t\t\texample: \"California\",\n\t\t})\n\t\t.optional(),\n\tcountry: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's country.\",\n\t\t\texample: \"United States\",\n\t\t})\n\t\t.optional(),\n\tcountryCode: z\n\t\t.string()\n\t\t.max(2)\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's country code (ISO 3166-1 alpha-2).\",\n\t\t\texample: \"US\",\n\t\t})\n\t\t.optional(),\n\tlatitude: z\n\t\t.number()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's latitude.\",\n\t\t\texample: 37.7749,\n\t\t})\n\t\t.optional(),\n\tlongitude: z\n\t\t.number()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's longitude.\",\n\t\t\texample: -122.4194,\n\t\t})\n\t\t.optional(),\n\tlanguage: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's preferred language.\",\n\t\t\texample: \"en-US\",\n\t\t})\n\t\t.optional(),\n\ttimezone: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's timezone.\",\n\t\t\texample: \"America/Los_Angeles\",\n\t\t})\n\t\t.optional(),\n\tscreenResolution: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's screen resolution.\",\n\t\t\texample: \"1920x1080\",\n\t\t})\n\t\t.optional(),\n\tviewport: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The visitor's viewport size.\",\n\t\t\texample: \"1920x900\",\n\t\t})\n\t\t.optional(),\n\tattribution: visitorAttributionSchema\n\t\t.openapi({\n\t\t\tdescription: \"Normalized acquisition data captured for this visitor.\",\n\t\t})\n\t\t.optional(),\n\tcurrentPage: visitorCurrentPageSchema\n\t\t.openapi({\n\t\t\tdescription: \"Latest page context captured for this visitor.\",\n\t\t})\n\t\t.optional(),\n\tmetadata: visitorMetadataSchema\n\t\t.openapi({\n\t\t\tdescription: \"Additional custom metadata for the visitor.\",\n\t\t\texample: { plan: \"premium\", role: \"admin\" },\n\t\t})\n\t\t.optional(),\n});\n\nexport type UpdateVisitorRequest = z.infer<typeof updateVisitorRequestSchema>;\n\nexport const updateVisitorMetadataRequestSchema = z.object({\n\tmetadata: visitorMetadataSchema.openapi({\n\t\tdescription: \"Metadata payload to merge into the visitor's profile.\",\n\t\texample: { plan: \"premium\", role: \"admin\" },\n\t}),\n});\n\nexport type UpdateVisitorMetadataRequest = z.infer<\n\ttypeof updateVisitorMetadataRequestSchema\n>;\n\nexport const visitorProfileSchema = z.object({\n\tid: z.ulid().openapi({\n\t\tdescription: \"The visitor's unique identifier (ULID).\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tlastSeenAt: z.string().nullable().openapi({\n\t\tdescription: \"When the visitor was last seen.\",\n\t\texample: \"2021-01-01T00:00:00.000Z\",\n\t}),\n\tblockedAt: z.string().nullable().openapi({\n\t\tdescription: \"When the visitor was blocked, if applicable.\",\n\t\texample: \"2024-01-01T12:00:00.000Z\",\n\t}),\n\tblockedByUserId: z.string().nullable().openapi({\n\t\tdescription: \"Identifier of the team member who blocked the visitor.\",\n\t\texample: \"01JG000000000000000000001\",\n\t}),\n\tisBlocked: z.boolean().openapi({\n\t\tdescription: \"Whether the visitor is currently blocked.\",\n\t\texample: true,\n\t}),\n\tcontact: publicContactResponseSchema.nullable(),\n});\n\n/**\n * Visitor response schema\n */\nexport const visitorResponseSchema = z.object({\n\tid: z.ulid().openapi({\n\t\tdescription: \"The visitor's unique identifier (ULID).\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tbrowser: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's browser.\",\n\t\texample: \"Chrome\",\n\t}),\n\tbrowserVersion: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's browser version.\",\n\t\texample: \"120.0.0\",\n\t}),\n\tos: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's operating system.\",\n\t\texample: \"Windows\",\n\t}),\n\tosVersion: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's operating system version.\",\n\t\texample: \"11\",\n\t}),\n\tdevice: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's device.\",\n\t\texample: \"MacBook Pro\",\n\t}),\n\tdeviceType: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's device type.\",\n\t\texample: \"desktop\",\n\t}),\n\tip: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's IP address.\",\n\t\texample: \"192.168.1.1\",\n\t}),\n\tcity: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's city.\",\n\t\texample: \"San Francisco\",\n\t}),\n\tregion: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's region/state.\",\n\t\texample: \"California\",\n\t}),\n\tcountry: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's country.\",\n\t\texample: \"United States\",\n\t}),\n\tcountryCode: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's country code (ISO 3166-1 alpha-2).\",\n\t\texample: \"US\",\n\t}),\n\tlatitude: z.number().nullable().openapi({\n\t\tdescription: \"The visitor's latitude.\",\n\t\texample: 37.7749,\n\t}),\n\tlongitude: z.number().nullable().openapi({\n\t\tdescription: \"The visitor's longitude.\",\n\t\texample: -122.4194,\n\t}),\n\tlanguage: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's preferred language.\",\n\t\texample: \"en-US\",\n\t}),\n\ttimezone: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's timezone.\",\n\t\texample: \"America/Los_Angeles\",\n\t}),\n\tscreenResolution: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's screen resolution.\",\n\t\texample: \"1920x1080\",\n\t}),\n\tviewport: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's viewport size.\",\n\t\texample: \"1920x900\",\n\t}),\n\tcreatedAt: z.string().openapi({\n\t\tdescription: \"When the visitor was first seen.\",\n\t\texample: \"2021-01-01T00:00:00.000Z\",\n\t}),\n\tupdatedAt: z.string().openapi({\n\t\tdescription: \"When the visitor record was last updated.\",\n\t\texample: \"2021-01-01T00:00:00.000Z\",\n\t}),\n\tlastSeenAt: z.string().nullable().openapi({\n\t\tdescription: \"When the visitor was last connected or active.\",\n\t\texample: \"2021-01-01T00:00:00.000Z\",\n\t}),\n\twebsiteId: z.ulid().openapi({\n\t\tdescription: \"The website's unique identifier that the visitor belongs to.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\torganizationId: z.ulid().openapi({\n\t\tdescription:\n\t\t\t\"The organization's unique identifier that the visitor belongs to.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tblockedAt: z.string().nullable().openapi({\n\t\tdescription: \"When the visitor was blocked, if applicable.\",\n\t\texample: \"2024-01-01T12:00:00.000Z\",\n\t}),\n\tblockedByUserId: z.string().nullable().openapi({\n\t\tdescription: \"Identifier of the team member who blocked the visitor.\",\n\t\texample: \"01JG000000000000000000001\",\n\t}),\n\tisBlocked: z.boolean().openapi({\n\t\tdescription: \"Whether the visitor is currently blocked.\",\n\t\texample: true,\n\t}),\n\tattribution: visitorAttributionSchema.nullable().openapi({\n\t\tdescription: \"Normalized acquisition data captured for this visitor.\",\n\t}),\n\tcurrentPage: visitorCurrentPageSchema.nullable().openapi({\n\t\tdescription: \"Latest page context captured for this visitor.\",\n\t}),\n\tcontact: contactResponseSchema.nullable(),\n});\n\nexport type Visitor = z.infer<typeof visitorResponseSchema>;\nexport type VisitorResponse = Visitor;\n\n/**\n * Visitor response schema\n */\nexport const publicVisitorResponseSchema = z.object({\n\tid: z.ulid().openapi({\n\t\tdescription: \"The visitor's unique identifier (ULID).\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tisBlocked: z.boolean().openapi({\n\t\tdescription: \"Whether the visitor is currently blocked.\",\n\t\texample: false,\n\t}),\n\tlanguage: z.string().nullable().openapi({\n\t\tdescription: \"The visitor's preferred language.\",\n\t\texample: \"en-US\",\n\t}),\n\tcontact: publicContactResponseSchema.nullable().openapi({\n\t\tdescription:\n\t\t\t\"Contact information if the visitor has been identified via .identify().\",\n\t\texample: {\n\t\t\tid: \"01JG000000000000000000000\",\n\t\t\tname: \"John Doe\",\n\t\t\temail: \"john.doe@example.com\",\n\t\t\timage: \"https://example.com/avatar.png\",\n\t\t},\n\t}),\n});\n\nexport type PublicVisitor = z.infer<typeof publicVisitorResponseSchema>;\nexport type PublicVisitorResponse = PublicVisitor;\n"],"mappings":"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"}
package/api/website.d.ts CHANGED
@@ -20,8 +20,8 @@ declare const websiteApiKeySchema: z.ZodObject<{
20
20
  name: z.ZodString;
21
21
  key: z.ZodNullable<z.ZodString>;
22
22
  keyType: z.ZodEnum<{
23
- private: "private";
24
23
  public: "public";
24
+ private: "private";
25
25
  }>;
26
26
  isTest: z.ZodBoolean;
27
27
  isActive: z.ZodBoolean;
@@ -59,8 +59,8 @@ declare const websiteDeveloperSettingsResponseSchema: z.ZodObject<{
59
59
  name: z.ZodString;
60
60
  key: z.ZodNullable<z.ZodString>;
61
61
  keyType: z.ZodEnum<{
62
- private: "private";
63
62
  public: "public";
63
+ private: "private";
64
64
  }>;
65
65
  isTest: z.ZodBoolean;
66
66
  isActive: z.ZodBoolean;
@@ -75,8 +75,8 @@ declare const createWebsiteApiKeyRequestSchema: z.ZodObject<{
75
75
  websiteId: z.ZodULID;
76
76
  name: z.ZodString;
77
77
  keyType: z.ZodEnum<{
78
- private: "private";
79
78
  public: "public";
79
+ private: "private";
80
80
  }>;
81
81
  isTest: z.ZodBoolean;
82
82
  }, z.core.$strip>;
@@ -111,6 +111,15 @@ declare const updateWebsiteRequestSchema: z.ZodObject<{
111
111
  }, z.core.$strip>;
112
112
  }, z.core.$strip>;
113
113
  type UpdateWebsiteRequest = z.infer<typeof updateWebsiteRequestSchema>;
114
+ declare const deleteWebsiteRequestSchema: z.ZodObject<{
115
+ websiteSlug: z.ZodString;
116
+ }, z.core.$strip>;
117
+ type DeleteWebsiteRequest = z.infer<typeof deleteWebsiteRequestSchema>;
118
+ declare const deleteWebsiteResponseSchema: z.ZodObject<{
119
+ id: z.ZodULID;
120
+ slug: z.ZodString;
121
+ }, z.core.$strip>;
122
+ type DeleteWebsiteResponse = z.infer<typeof deleteWebsiteResponseSchema>;
114
123
  /**
115
124
  * Website creation response schema
116
125
  */
@@ -125,8 +134,8 @@ declare const createWebsiteResponseSchema: z.ZodObject<{
125
134
  name: z.ZodString;
126
135
  key: z.ZodNullable<z.ZodString>;
127
136
  keyType: z.ZodEnum<{
128
- private: "private";
129
137
  public: "public";
138
+ private: "private";
130
139
  }>;
131
140
  isTest: z.ZodBoolean;
132
141
  isActive: z.ZodBoolean;
@@ -145,7 +154,7 @@ declare const checkWebsiteDomainRequestSchema: z.ZodObject<{
145
154
  type CheckWebsiteDomainRequest = z.infer<typeof checkWebsiteDomainRequestSchema>;
146
155
  declare const availableHumanAgentSchema: z.ZodObject<{
147
156
  id: z.ZodULID;
148
- name: z.ZodString;
157
+ name: z.ZodNullable<z.ZodString>;
149
158
  image: z.ZodNullable<z.ZodString>;
150
159
  lastSeenAt: z.ZodNullable<z.ZodString>;
151
160
  }, z.core.$strip>;
@@ -168,7 +177,7 @@ declare const publicWebsiteResponseSchema: z.ZodObject<{
168
177
  lastOnlineAt: z.ZodNullable<z.ZodString>;
169
178
  availableHumanAgents: z.ZodArray<z.ZodObject<{
170
179
  id: z.ZodULID;
171
- name: z.ZodString;
180
+ name: z.ZodNullable<z.ZodString>;
172
181
  image: z.ZodNullable<z.ZodString>;
173
182
  lastSeenAt: z.ZodNullable<z.ZodString>;
174
183
  }, z.core.$strip>>;
@@ -213,5 +222,5 @@ declare const websiteListItemSchema: z.ZodObject<{
213
222
  }, z.core.$strip>;
214
223
  type WebsiteListItem = z.infer<typeof websiteListItemSchema>;
215
224
  //#endregion
216
- export { AvailableAIAgent, AvailableAIAgentSchema, AvailableHumanAgent, CheckWebsiteDomainRequest, CreateWebsiteApiKeyRequest, CreateWebsiteRequest, CreateWebsiteResponse, ListByOrganizationRequest, PublicWebsiteResponse, RevokeWebsiteApiKeyRequest, UpdateWebsiteRequest, WebsiteApiKey, WebsiteDeveloperSettingsResponse, WebsiteListItem, WebsiteSummary, availableHumanAgentSchema, checkWebsiteDomainRequestSchema, createWebsiteApiKeyRequestSchema, createWebsiteRequestSchema, createWebsiteResponseSchema, listByOrganizationRequestSchema, publicWebsiteResponseSchema, revokeWebsiteApiKeyRequestSchema, updateWebsiteRequestSchema, websiteApiKeySchema, websiteDeveloperSettingsResponseSchema, websiteListItemSchema, websiteSummarySchema };
225
+ export { AvailableAIAgent, AvailableAIAgentSchema, AvailableHumanAgent, CheckWebsiteDomainRequest, CreateWebsiteApiKeyRequest, CreateWebsiteRequest, CreateWebsiteResponse, DeleteWebsiteRequest, DeleteWebsiteResponse, ListByOrganizationRequest, PublicWebsiteResponse, RevokeWebsiteApiKeyRequest, UpdateWebsiteRequest, WebsiteApiKey, WebsiteDeveloperSettingsResponse, WebsiteListItem, WebsiteSummary, availableHumanAgentSchema, checkWebsiteDomainRequestSchema, createWebsiteApiKeyRequestSchema, createWebsiteRequestSchema, createWebsiteResponseSchema, deleteWebsiteRequestSchema, deleteWebsiteResponseSchema, listByOrganizationRequestSchema, publicWebsiteResponseSchema, revokeWebsiteApiKeyRequestSchema, updateWebsiteRequestSchema, websiteApiKeySchema, websiteDeveloperSettingsResponseSchema, websiteListItemSchema, websiteSummarySchema };
217
226
  //# sourceMappingURL=website.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"website.d.ts","names":[],"sources":["../../src/api/website.ts"],"sourcesContent":[],"mappings":";;;;;;AAOA;cAAa,4BAA0B,CAAA,CAAA;;;;;IAAA,SAAA,MAAA,EAAA,QAAA;IAAA,SAAA,KAAA,EAAA,OAAA;EA8B3B,CAAA,CAAA;AASZ,CAAA,eAAa,CAAA;KATD,oBAAA,GAAuB,CAAA,CAAE,aAAa;cASrC,qBAAmB,CAAA,CAAA;;;;;;;;;;;;EAAA,SAAA,eAAA,YAAA,CAAA;CAAA,eAAA,CAAA;AA6CpB,KAAA,aAAA,GAAgB,CAAA,CAAE,KAAa,CAAA,OAAA,mBAAR,CAAA;AAEtB,cAAA,oBA6CV,EA7C8B,CAAA,CAAA,SA6C9B,CAAA;;;;;;;;;;;KAES,cAAA,GAAiB,CAAA,CAAE,aAAa;cAE/B,wCAAsC,CAAA,CAAA;;;;IAjDlB,IAAA,aAAA;IAAA,MAAA,aAAA;IA+CrB,YAAA,eAAgC,YAAA,CAAA;IAE/B,OAAA,eAAA,SAAA,CAAA;;;;;;;;;;;;;;;;;;;;KAUD,gCAAA,GAAmC,CAAA,CAAE,aACzC;cAGK,kCAAgC,CAAA,CAAA;;;;;;;;;;KA2BjC,0BAAA,GAA6B,CAAA,CAAE,aACnC;cAGK,kCAAgC,CAAA,CAAA;EA7CM,cAAA,WAAA;EAAA,SAAA,WAAA;EAUvC,QAAA,WAAA;AAIZ,CAAA,eAAa,CAAA;KAkDD,0BAAA,GAA6B,CAAA,CAAE,aACnC;cAqBK,4BAA0B,CAAA,CAAA;;;;;IAxEM,IAAA,eAAA,YAAA,CAAA;IAAA,MAAA,eAAA,YAAA,CAAA;IA2BjC,YAAA,eAA0B,cAC9B,YAAA,CAAA,CAAA;IAGK,WAAA,eAAA,cAiBV,YAAA,CAAA,CAAA;;;;;MAjB0C,SAAA,MAAA,EAAA,QAAA;MAAA,SAAA,KAAA,EAAA,OAAA;IAmBjC,CAAA,CAAA,CAAA;IAsBC,MAAA,eAAA,UAgBV,CAAA;;;;;;;KAES,oBAAA,GAAuB,CAAA,CAAE,aAAa;;;;cAKrC,6BAA2B,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;KAsC5B,qBAAA,GAAwB,CAAA,CAAE,aAAa;;;;AA7DZ,cAkE1B,+BAlE0B,EAkEK,CAAA,CAAA,SAlEL,CAAA;EAkB3B,MAAA,aAAA;AAKZ,CAAA,eAAa,CAAA;KAqDD,yBAAA,GAA4B,CAAA,CAAE,aAClC;cAGK,2BAAyB,CAAA,CAAA;;;;;;cAoBzB,wBAAsB,CAAA,CAAA;;;;;;;;cAkBtB,6BAA2B,CAAA,CAAA;;;;;;;EA/FA,MAAA,aAAA;EAAA,YAAA,eAAA,YAAA,CAAA;EAsC5B,oBAAA,YAAqB,YAAkB,CAAA;IAKtC,EAAA,WAAA;;;IAA+B,UAAA,eAAA,YAAA,CAAA;EAAA,CAAA,eAAA,CAAA,CAAA;EAUhC,iBAAA,YAAyB,YAC7B,CAAA;IAGK,EAAA,WAAA;;;;;;;;IAAyB,OAAA,eAAA,YAAA,CAAA;MAAA,EAAA,WAAA;MAoBzB,IAAA,eAaX,YAAA,CAAA;;;;;;CAbiC,eAAA,CAAA;AAAA,KA2DvB,qBAAA,GAAwB,CAAA,CAAE,KA3DH,CAAA,OA2DgB,2BA3DhB,CAAA;AAkBtB,KA0CD,mBAAA,GAAsB,CAAA,CAAE,KAHlC,CAAA,OAG+C,yBAH/C,CAAA;KAIU,gBAAA,GAAmB,CAAA,CAAE,aAAa;;;;cAKjC,iCAA+B,CAAA,CAAA;;;KAOhC,yBAAA,GAA4B,CAAA,CAAE,aAClC;;;;cAMK,uBAAqB,CAAA,CAAA;;;;;;;;KA2BtB,eAAA,GAAkB,CAAA,CAAE,aAAa"}
1
+ {"version":3,"file":"website.d.ts","names":[],"sources":["../../src/api/website.ts"],"sourcesContent":[],"mappings":"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"}
package/api/website.js CHANGED
@@ -166,6 +166,20 @@ const updateWebsiteRequestSchema = z.object({
166
166
  }),
167
167
  data: websiteUpdateDataSchema.openapi({ description: "The fields to update on the website." })
168
168
  }).openapi({ description: "Payload to update website settings." });
169
+ const deleteWebsiteRequestSchema = z.object({ websiteSlug: z.string().openapi({
170
+ description: "The website slug.",
171
+ example: "my-website"
172
+ }) }).openapi({ description: "Payload to permanently delete a website." });
173
+ const deleteWebsiteResponseSchema = z.object({
174
+ id: z.ulid().openapi({
175
+ description: "The deleted website's unique identifier.",
176
+ example: "01JG000000000000000000000"
177
+ }),
178
+ slug: z.string().openapi({
179
+ description: "The deleted website's slug.",
180
+ example: "my-website"
181
+ })
182
+ }).openapi({ description: "Response returned after successful website deletion." });
169
183
  /**
170
184
  * Website creation response schema
171
185
  */
@@ -216,7 +230,7 @@ const availableHumanAgentSchema = z.object({
216
230
  description: "The human agent's unique identifier.",
217
231
  example: "01JG000000000000000000000"
218
232
  }),
219
- name: z.string().openapi({
233
+ name: z.string().nullable().openapi({
220
234
  description: "The agent's name.",
221
235
  example: "John Doe"
222
236
  }),
@@ -321,5 +335,5 @@ const websiteListItemSchema = z.object({
321
335
  });
322
336
 
323
337
  //#endregion
324
- export { AvailableAIAgentSchema, availableHumanAgentSchema, checkWebsiteDomainRequestSchema, createWebsiteApiKeyRequestSchema, createWebsiteRequestSchema, createWebsiteResponseSchema, listByOrganizationRequestSchema, publicWebsiteResponseSchema, revokeWebsiteApiKeyRequestSchema, updateWebsiteRequestSchema, websiteApiKeySchema, websiteDeveloperSettingsResponseSchema, websiteListItemSchema, websiteSummarySchema };
338
+ export { AvailableAIAgentSchema, availableHumanAgentSchema, checkWebsiteDomainRequestSchema, createWebsiteApiKeyRequestSchema, createWebsiteRequestSchema, createWebsiteResponseSchema, deleteWebsiteRequestSchema, deleteWebsiteResponseSchema, listByOrganizationRequestSchema, publicWebsiteResponseSchema, revokeWebsiteApiKeyRequestSchema, updateWebsiteRequestSchema, websiteApiKeySchema, websiteDeveloperSettingsResponseSchema, websiteListItemSchema, websiteSummarySchema };
325
339
  //# sourceMappingURL=website.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"website.js","names":[],"sources":["../../src/api/website.ts"],"sourcesContent":["import { z } from \"@hono/zod-openapi\";\nimport { APIKeyType, WebsiteInstallationTarget, WebsiteStatus } from \"../enums\";\nimport { publicVisitorResponseSchema } from \"./visitor\";\n\n/**\n * Website creation request schema\n */\nexport const createWebsiteRequestSchema = z.object({\n\tname: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The website's name.\",\n\t\t\texample: \"Dub\",\n\t\t})\n\t\t.min(3, {\n\t\t\tmessage: \"Name must be at least 3 characters\",\n\t\t})\n\t\t.max(30, {\n\t\t\tmessage: \"Name must be less than 30 characters\",\n\t\t}),\n\tdomain: z\n\t\t.string()\n\t\t.regex(/^[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*$/)\n\t\t.openapi({\n\t\t\tdescription: \"The website's domain.\",\n\t\t\texample: \"dub.co\",\n\t\t}),\n\torganizationId: z.ulid().openapi({\n\t\tdescription: \"The organization's unique identifier.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tinstallationTarget: z.nativeEnum(WebsiteInstallationTarget).openapi({\n\t\tdescription: \"The website's library installation target.\",\n\t\texample: WebsiteInstallationTarget.NEXTJS,\n\t}),\n});\n\nexport type CreateWebsiteRequest = z.infer<typeof createWebsiteRequestSchema>;\n\nconst API_KEY_TYPE_VALUES = [APIKeyType.PUBLIC, APIKeyType.PRIVATE] as const;\n\nconst WEBSITE_STATUS_VALUES = [\n\tWebsiteStatus.ACTIVE,\n\tWebsiteStatus.INACTIVE,\n] as const;\n\nexport const websiteApiKeySchema = z\n\t.object({\n\t\tid: z.ulid().openapi({\n\t\t\tdescription: \"The API key's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\tname: z.string().openapi({\n\t\t\tdescription: \"The API key's display name.\",\n\t\t\texample: \"Production public key\",\n\t\t}),\n\t\tkey: z.string().nullable().openapi({\n\t\t\tdescription:\n\t\t\t\t\"The API key's raw value when available. Private keys will be null when fetched after creation.\",\n\t\t\texample: \"pk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n\t\t}),\n\t\tkeyType: z.enum(API_KEY_TYPE_VALUES).openapi({\n\t\t\tdescription: \"The API key's type (public or private).\",\n\t\t\texample: APIKeyType.PUBLIC,\n\t\t}),\n\t\tisTest: z.boolean().openapi({\n\t\t\tdescription: \"Whether the API key is a test key.\",\n\t\t\texample: false,\n\t\t}),\n\t\tisActive: z.boolean().openapi({\n\t\t\tdescription: \"Whether the API key is active.\",\n\t\t\texample: true,\n\t\t}),\n\t\tcreatedAt: z.string().openapi({\n\t\t\tdescription: \"Timestamp indicating when the API key was created.\",\n\t\t\texample: \"2024-01-01T00:00:00.000Z\",\n\t\t}),\n\t\tlastUsedAt: z.string().nullable().openapi({\n\t\t\tdescription: \"Timestamp indicating when the API key was last used.\",\n\t\t\texample: \"2024-01-10T12:00:00.000Z\",\n\t\t}),\n\t\trevokedAt: z.string().nullable().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Timestamp indicating when the API key was revoked, if applicable.\",\n\t\t\texample: null,\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"A website API key summary.\",\n\t});\n\nexport type WebsiteApiKey = z.infer<typeof websiteApiKeySchema>;\n\nexport const websiteSummarySchema = z\n\t.object({\n\t\tid: z.ulid().openapi({\n\t\t\tdescription: \"The website's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\tslug: z.string().openapi({\n\t\t\tdescription: \"The website's slug.\",\n\t\t\texample: \"dub-co\",\n\t\t}),\n\t\tname: z.string().openapi({\n\t\t\tdescription: \"The website's name.\",\n\t\t\texample: \"Dub\",\n\t\t}),\n\t\tdomain: z.string().openapi({\n\t\t\tdescription: \"The website's domain.\",\n\t\t\texample: \"dub.co\",\n\t\t}),\n\t\tcontactEmail: z.string().email().nullable().openapi({\n\t\t\tdescription: \"The primary email visitors can use to reach you.\",\n\t\t\texample: \"support@dub.co\",\n\t\t}),\n\t\tlogoUrl: z.url().nullable().openapi({\n\t\t\tdescription: \"Public URL to the website's logo.\",\n\t\t\texample: \"https://cdn.example.com/logo.png\",\n\t\t}),\n\t\torganizationId: z.ulid().openapi({\n\t\t\tdescription: \"The owning organization's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\twhitelistedDomains: z.array(z.url()).openapi({\n\t\t\tdescription: \"The domains allowed to use the website's public keys.\",\n\t\t\texample: [\"https://dub.co\", \"http://localhost:3000\"],\n\t\t}),\n\t\tdefaultParticipantIds: z\n\t\t\t.array(z.string())\n\t\t\t.nullable()\n\t\t\t.openapi({\n\t\t\t\tdescription:\n\t\t\t\t\t\"Default participant user IDs for new conversations. null = disabled, [] = auto (admin/owner), [...ids] = specific users.\",\n\t\t\t\texample: [\"01JG000000000000000000000\"],\n\t\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Summary information for a website used in settings screens.\",\n\t});\n\nexport type WebsiteSummary = z.infer<typeof websiteSummarySchema>;\n\nexport const websiteDeveloperSettingsResponseSchema = z\n\t.object({\n\t\twebsite: websiteSummarySchema,\n\t\tapiKeys: z.array(websiteApiKeySchema),\n\t})\n\t.openapi({\n\t\tdescription:\n\t\t\t\"Developer settings payload including website information and API keys.\",\n\t});\n\nexport type WebsiteDeveloperSettingsResponse = z.infer<\n\ttypeof websiteDeveloperSettingsResponseSchema\n>;\n\nexport const createWebsiteApiKeyRequestSchema = z\n\t.object({\n\t\torganizationId: z.ulid().openapi({\n\t\t\tdescription: \"The organization's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\twebsiteId: z.ulid().openapi({\n\t\t\tdescription: \"The website's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\tname: z.string().min(3).max(80).openapi({\n\t\t\tdescription: \"A human-friendly label for the API key.\",\n\t\t\texample: \"Docs integration\",\n\t\t}),\n\t\tkeyType: z.enum(API_KEY_TYPE_VALUES).openapi({\n\t\t\tdescription: \"The type of API key to generate.\",\n\t\t\texample: APIKeyType.PRIVATE,\n\t\t}),\n\t\tisTest: z.boolean().openapi({\n\t\t\tdescription: \"Whether to generate a test key scoped to localhost.\",\n\t\t\texample: false,\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Payload to create a website API key.\",\n\t});\n\nexport type CreateWebsiteApiKeyRequest = z.infer<\n\ttypeof createWebsiteApiKeyRequestSchema\n>;\n\nexport const revokeWebsiteApiKeyRequestSchema = z\n\t.object({\n\t\torganizationId: z.ulid().openapi({\n\t\t\tdescription: \"The organization's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\twebsiteId: z.ulid().openapi({\n\t\t\tdescription: \"The website's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\tapiKeyId: z.ulid().openapi({\n\t\t\tdescription: \"The API key's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Payload to revoke a website API key.\",\n\t});\n\nexport type RevokeWebsiteApiKeyRequest = z.infer<\n\ttypeof revokeWebsiteApiKeyRequestSchema\n>;\n\nconst websiteUpdateDataSchema = z\n\t.object({\n\t\tname: z.string().min(1).max(120).optional(),\n\t\tslug: z.string().min(1).optional(),\n\t\tdomain: z.string().min(1).optional(),\n\t\tcontactEmail: z.string().email().nullable().optional(),\n\t\tdescription: z.string().nullable().optional(),\n\t\tlogoUrl: z.url().nullable().optional(),\n\t\twhitelistedDomains: z.array(z.url()).optional(),\n\t\tdefaultParticipantIds: z.array(z.string()).nullable().optional(),\n\t\tinstallationTarget: z.nativeEnum(WebsiteInstallationTarget).optional(),\n\t\tstatus: z.enum(WEBSITE_STATUS_VALUES).optional(),\n\t\tteamId: z.string().nullable().optional(),\n\t})\n\t.refine((value) => Object.keys(value).length > 0, {\n\t\tmessage: \"Provide at least one field to update.\",\n\t});\n\nexport const updateWebsiteRequestSchema = z\n\t.object({\n\t\torganizationId: z.ulid().openapi({\n\t\t\tdescription: \"The organization's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\twebsiteId: z.ulid().openapi({\n\t\t\tdescription: \"The website's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\tdata: websiteUpdateDataSchema.openapi({\n\t\t\tdescription: \"The fields to update on the website.\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Payload to update website settings.\",\n\t});\n\nexport type UpdateWebsiteRequest = z.infer<typeof updateWebsiteRequestSchema>;\n\n/**\n * Website creation response schema\n */\nexport const createWebsiteResponseSchema = z.object({\n\tid: z.ulid().openapi({\n\t\tdescription: \"The website's unique identifier.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tname: z.string().openapi({\n\t\tdescription: \"The website's name.\",\n\t\texample: \"Dub\",\n\t}),\n\tslug: z.string().openapi({\n\t\tdescription: \"The website's slug.\",\n\t\texample: \"dubdotco\",\n\t}),\n\twhitelistedDomains: z.array(z.url()).openapi({\n\t\tdescription: \"The website's whitelisted domains.\",\n\t\texample: [\"http://localhost:3000\", \"https://dub.co\"],\n\t}),\n\torganizationId: z.ulid().openapi({\n\t\tdescription: \"The organization's unique identifier.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tapiKeys: z.array(websiteApiKeySchema).openapi({\n\t\tdescription: \"The website's API keys.\",\n\t\texample: [\n\t\t\t{\n\t\t\t\tid: \"01JG000000000000000000000\",\n\t\t\t\tkey: \"pk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n\t\t\t\tcreatedAt: \"2021-01-01T00:00:00.000Z\",\n\t\t\t\tisTest: true,\n\t\t\t\tisActive: true,\n\t\t\t\tkeyType: APIKeyType.PUBLIC,\n\t\t\t\tlastUsedAt: null,\n\t\t\t\trevokedAt: null,\n\t\t\t},\n\t\t],\n\t}),\n});\n\nexport type CreateWebsiteResponse = z.infer<typeof createWebsiteResponseSchema>;\n\n/**\n * Website domain validation request schema\n */\nexport const checkWebsiteDomainRequestSchema = z.object({\n\tdomain: z\n\t\t.string()\n\t\t.regex(/^[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*$/)\n\t\t.openapi({\n\t\t\tdescription: \"The website's domain.\",\n\t\t\texample: \"dub.co\",\n\t\t}),\n});\n\nexport type CheckWebsiteDomainRequest = z.infer<\n\ttypeof checkWebsiteDomainRequestSchema\n>;\n\nexport const availableHumanAgentSchema = z.object({\n\tid: z.ulid().openapi({\n\t\tdescription: \"The human agent's unique identifier.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tname: z.string().openapi({\n\t\tdescription: \"The agent's name.\",\n\t\texample: \"John Doe\",\n\t}),\n\timage: z.string().nullable().openapi({\n\t\tdescription: \"The agent's avatar URL.\",\n\t\texample: \"https://cossistant.com/avatar.png\",\n\t}),\n\tlastSeenAt: z.string().nullable().openapi({\n\t\tdescription:\n\t\t\t\"The agent's last online timestamp, used to determine if the agent is online. If the agent is offline, this will be null or more than 5 minutes ago.\",\n\t\texample: \"2021-01-01T00:00:00.000Z\",\n\t}),\n});\n\nexport const AvailableAIAgentSchema = z.object({\n\tid: z.ulid().openapi({\n\t\tdescription: \"The AI agent's unique identifier.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tname: z.string().openapi({\n\t\tdescription: \"The AI agent's name.\",\n\t\texample: \"John Doe\",\n\t}),\n\timage: z.string().nullable().openapi({\n\t\tdescription: \"The AI agent's avatar URL.\",\n\t\texample: \"https://cossistant.com/avatar.png\",\n\t}),\n});\n\n/**\n * Website information response schema\n */\nexport const publicWebsiteResponseSchema = z.object({\n\tid: z.ulid().openapi({\n\t\tdescription: \"The website's unique identifier.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tname: z.string().openapi({\n\t\tdescription: \"The website's name.\",\n\t\texample: \"Dub\",\n\t}),\n\tdomain: z.string().openapi({\n\t\tdescription: \"The website's domain.\",\n\t\texample: \"dub.co\",\n\t}),\n\tdescription: z.string().nullable().openapi({\n\t\tdescription: \"The website's description.\",\n\t\texample: \"Link management for modern marketing teams.\",\n\t}),\n\tlogoUrl: z.string().nullable().openapi({\n\t\tdescription: \"The website's logo URL.\",\n\t\texample: \"https://dub.co/logo.png\",\n\t}),\n\torganizationId: z.ulid().openapi({\n\t\tdescription: \"The organization's unique identifier.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tstatus: z.string().openapi({\n\t\tdescription: \"The website's status.\",\n\t\texample: \"active\",\n\t}),\n\tlastOnlineAt: z.string().nullable().openapi({\n\t\tdescription: \"The website's support last online date.\",\n\t\texample: \"2021-01-01T00:00:00.000Z\",\n\t}),\n\tavailableHumanAgents: z.array(availableHumanAgentSchema),\n\tavailableAIAgents: z.array(AvailableAIAgentSchema),\n\tvisitor: publicVisitorResponseSchema.openapi({\n\t\tdescription:\n\t\t\t\"The visitor information. Either existing visitor data or newly created visitor.\",\n\t}),\n});\n\nexport type PublicWebsiteResponse = z.infer<typeof publicWebsiteResponseSchema>;\nexport type AvailableHumanAgent = z.infer<typeof availableHumanAgentSchema>;\nexport type AvailableAIAgent = z.infer<typeof AvailableAIAgentSchema>;\n\n/**\n * List websites by organization request schema\n */\nexport const listByOrganizationRequestSchema = z.object({\n\torganizationId: z.ulid().openapi({\n\t\tdescription: \"The organization's unique identifier.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n});\n\nexport type ListByOrganizationRequest = z.infer<\n\ttypeof listByOrganizationRequestSchema\n>;\n\n/**\n * Website list item schema - simplified website info for listing\n */\nexport const websiteListItemSchema = z.object({\n\tid: z.ulid().openapi({\n\t\tdescription: \"The website's unique identifier.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tname: z.string().openapi({\n\t\tdescription: \"The website's name.\",\n\t\texample: \"Dub\",\n\t}),\n\tslug: z.string().openapi({\n\t\tdescription: \"The website's slug.\",\n\t\texample: \"dub-co\",\n\t}),\n\tlogoUrl: z.url().nullable().openapi({\n\t\tdescription: \"Public URL to the website's logo.\",\n\t\texample: \"https://cdn.example.com/logo.png\",\n\t}),\n\tdomain: z.string().openapi({\n\t\tdescription: \"The website's domain.\",\n\t\texample: \"dub.co\",\n\t}),\n\torganizationId: z.ulid().openapi({\n\t\tdescription: \"The owning organization's unique identifier.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n});\n\nexport type WebsiteListItem = z.infer<typeof websiteListItemSchema>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"website.js","names":[],"sources":["../../src/api/website.ts"],"sourcesContent":["import { z } from \"@hono/zod-openapi\";\nimport { APIKeyType, WebsiteInstallationTarget, WebsiteStatus } from \"../enums\";\nimport { publicVisitorResponseSchema } from \"./visitor\";\n\n/**\n * Website creation request schema\n */\nexport const createWebsiteRequestSchema = z.object({\n\tname: z\n\t\t.string()\n\t\t.openapi({\n\t\t\tdescription: \"The website's name.\",\n\t\t\texample: \"Dub\",\n\t\t})\n\t\t.min(3, {\n\t\t\tmessage: \"Name must be at least 3 characters\",\n\t\t})\n\t\t.max(30, {\n\t\t\tmessage: \"Name must be less than 30 characters\",\n\t\t}),\n\tdomain: z\n\t\t.string()\n\t\t.regex(/^[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*$/)\n\t\t.openapi({\n\t\t\tdescription: \"The website's domain.\",\n\t\t\texample: \"dub.co\",\n\t\t}),\n\torganizationId: z.ulid().openapi({\n\t\tdescription: \"The organization's unique identifier.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tinstallationTarget: z.nativeEnum(WebsiteInstallationTarget).openapi({\n\t\tdescription: \"The website's library installation target.\",\n\t\texample: WebsiteInstallationTarget.NEXTJS,\n\t}),\n});\n\nexport type CreateWebsiteRequest = z.infer<typeof createWebsiteRequestSchema>;\n\nconst API_KEY_TYPE_VALUES = [APIKeyType.PUBLIC, APIKeyType.PRIVATE] as const;\n\nconst WEBSITE_STATUS_VALUES = [\n\tWebsiteStatus.ACTIVE,\n\tWebsiteStatus.INACTIVE,\n] as const;\n\nexport const websiteApiKeySchema = z\n\t.object({\n\t\tid: z.ulid().openapi({\n\t\t\tdescription: \"The API key's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\tname: z.string().openapi({\n\t\t\tdescription: \"The API key's display name.\",\n\t\t\texample: \"Production public key\",\n\t\t}),\n\t\tkey: z.string().nullable().openapi({\n\t\t\tdescription:\n\t\t\t\t\"The API key's raw value when available. Private keys will be null when fetched after creation.\",\n\t\t\texample: \"pk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n\t\t}),\n\t\tkeyType: z.enum(API_KEY_TYPE_VALUES).openapi({\n\t\t\tdescription: \"The API key's type (public or private).\",\n\t\t\texample: APIKeyType.PUBLIC,\n\t\t}),\n\t\tisTest: z.boolean().openapi({\n\t\t\tdescription: \"Whether the API key is a test key.\",\n\t\t\texample: false,\n\t\t}),\n\t\tisActive: z.boolean().openapi({\n\t\t\tdescription: \"Whether the API key is active.\",\n\t\t\texample: true,\n\t\t}),\n\t\tcreatedAt: z.string().openapi({\n\t\t\tdescription: \"Timestamp indicating when the API key was created.\",\n\t\t\texample: \"2024-01-01T00:00:00.000Z\",\n\t\t}),\n\t\tlastUsedAt: z.string().nullable().openapi({\n\t\t\tdescription: \"Timestamp indicating when the API key was last used.\",\n\t\t\texample: \"2024-01-10T12:00:00.000Z\",\n\t\t}),\n\t\trevokedAt: z.string().nullable().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Timestamp indicating when the API key was revoked, if applicable.\",\n\t\t\texample: null,\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"A website API key summary.\",\n\t});\n\nexport type WebsiteApiKey = z.infer<typeof websiteApiKeySchema>;\n\nexport const websiteSummarySchema = z\n\t.object({\n\t\tid: z.ulid().openapi({\n\t\t\tdescription: \"The website's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\tslug: z.string().openapi({\n\t\t\tdescription: \"The website's slug.\",\n\t\t\texample: \"dub-co\",\n\t\t}),\n\t\tname: z.string().openapi({\n\t\t\tdescription: \"The website's name.\",\n\t\t\texample: \"Dub\",\n\t\t}),\n\t\tdomain: z.string().openapi({\n\t\t\tdescription: \"The website's domain.\",\n\t\t\texample: \"dub.co\",\n\t\t}),\n\t\tcontactEmail: z.string().email().nullable().openapi({\n\t\t\tdescription: \"The primary email visitors can use to reach you.\",\n\t\t\texample: \"support@dub.co\",\n\t\t}),\n\t\tlogoUrl: z.url().nullable().openapi({\n\t\t\tdescription: \"Public URL to the website's logo.\",\n\t\t\texample: \"https://cdn.example.com/logo.png\",\n\t\t}),\n\t\torganizationId: z.ulid().openapi({\n\t\t\tdescription: \"The owning organization's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\twhitelistedDomains: z.array(z.url()).openapi({\n\t\t\tdescription: \"The domains allowed to use the website's public keys.\",\n\t\t\texample: [\"https://dub.co\", \"http://localhost:3000\"],\n\t\t}),\n\t\tdefaultParticipantIds: z\n\t\t\t.array(z.string())\n\t\t\t.nullable()\n\t\t\t.openapi({\n\t\t\t\tdescription:\n\t\t\t\t\t\"Default participant user IDs for new conversations. null = disabled, [] = auto (admin/owner), [...ids] = specific users.\",\n\t\t\t\texample: [\"01JG000000000000000000000\"],\n\t\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Summary information for a website used in settings screens.\",\n\t});\n\nexport type WebsiteSummary = z.infer<typeof websiteSummarySchema>;\n\nexport const websiteDeveloperSettingsResponseSchema = z\n\t.object({\n\t\twebsite: websiteSummarySchema,\n\t\tapiKeys: z.array(websiteApiKeySchema),\n\t})\n\t.openapi({\n\t\tdescription:\n\t\t\t\"Developer settings payload including website information and API keys.\",\n\t});\n\nexport type WebsiteDeveloperSettingsResponse = z.infer<\n\ttypeof websiteDeveloperSettingsResponseSchema\n>;\n\nexport const createWebsiteApiKeyRequestSchema = z\n\t.object({\n\t\torganizationId: z.ulid().openapi({\n\t\t\tdescription: \"The organization's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\twebsiteId: z.ulid().openapi({\n\t\t\tdescription: \"The website's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\tname: z.string().min(3).max(80).openapi({\n\t\t\tdescription: \"A human-friendly label for the API key.\",\n\t\t\texample: \"Docs integration\",\n\t\t}),\n\t\tkeyType: z.enum(API_KEY_TYPE_VALUES).openapi({\n\t\t\tdescription: \"The type of API key to generate.\",\n\t\t\texample: APIKeyType.PRIVATE,\n\t\t}),\n\t\tisTest: z.boolean().openapi({\n\t\t\tdescription: \"Whether to generate a test key scoped to localhost.\",\n\t\t\texample: false,\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Payload to create a website API key.\",\n\t});\n\nexport type CreateWebsiteApiKeyRequest = z.infer<\n\ttypeof createWebsiteApiKeyRequestSchema\n>;\n\nexport const revokeWebsiteApiKeyRequestSchema = z\n\t.object({\n\t\torganizationId: z.ulid().openapi({\n\t\t\tdescription: \"The organization's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\twebsiteId: z.ulid().openapi({\n\t\t\tdescription: \"The website's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\tapiKeyId: z.ulid().openapi({\n\t\t\tdescription: \"The API key's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Payload to revoke a website API key.\",\n\t});\n\nexport type RevokeWebsiteApiKeyRequest = z.infer<\n\ttypeof revokeWebsiteApiKeyRequestSchema\n>;\n\nconst websiteUpdateDataSchema = z\n\t.object({\n\t\tname: z.string().min(1).max(120).optional(),\n\t\tslug: z.string().min(1).optional(),\n\t\tdomain: z.string().min(1).optional(),\n\t\tcontactEmail: z.string().email().nullable().optional(),\n\t\tdescription: z.string().nullable().optional(),\n\t\tlogoUrl: z.url().nullable().optional(),\n\t\twhitelistedDomains: z.array(z.url()).optional(),\n\t\tdefaultParticipantIds: z.array(z.string()).nullable().optional(),\n\t\tinstallationTarget: z.nativeEnum(WebsiteInstallationTarget).optional(),\n\t\tstatus: z.enum(WEBSITE_STATUS_VALUES).optional(),\n\t\tteamId: z.string().nullable().optional(),\n\t})\n\t.refine((value) => Object.keys(value).length > 0, {\n\t\tmessage: \"Provide at least one field to update.\",\n\t});\n\nexport const updateWebsiteRequestSchema = z\n\t.object({\n\t\torganizationId: z.ulid().openapi({\n\t\t\tdescription: \"The organization's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\twebsiteId: z.ulid().openapi({\n\t\t\tdescription: \"The website's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\tdata: websiteUpdateDataSchema.openapi({\n\t\t\tdescription: \"The fields to update on the website.\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Payload to update website settings.\",\n\t});\n\nexport type UpdateWebsiteRequest = z.infer<typeof updateWebsiteRequestSchema>;\n\nexport const deleteWebsiteRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug.\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Payload to permanently delete a website.\",\n\t});\n\nexport type DeleteWebsiteRequest = z.infer<typeof deleteWebsiteRequestSchema>;\n\nexport const deleteWebsiteResponseSchema = z\n\t.object({\n\t\tid: z.ulid().openapi({\n\t\t\tdescription: \"The deleted website's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\tslug: z.string().openapi({\n\t\t\tdescription: \"The deleted website's slug.\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Response returned after successful website deletion.\",\n\t});\n\nexport type DeleteWebsiteResponse = z.infer<typeof deleteWebsiteResponseSchema>;\n\n/**\n * Website creation response schema\n */\nexport const createWebsiteResponseSchema = z.object({\n\tid: z.ulid().openapi({\n\t\tdescription: \"The website's unique identifier.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tname: z.string().openapi({\n\t\tdescription: \"The website's name.\",\n\t\texample: \"Dub\",\n\t}),\n\tslug: z.string().openapi({\n\t\tdescription: \"The website's slug.\",\n\t\texample: \"dubdotco\",\n\t}),\n\twhitelistedDomains: z.array(z.url()).openapi({\n\t\tdescription: \"The website's whitelisted domains.\",\n\t\texample: [\"http://localhost:3000\", \"https://dub.co\"],\n\t}),\n\torganizationId: z.ulid().openapi({\n\t\tdescription: \"The organization's unique identifier.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tapiKeys: z.array(websiteApiKeySchema).openapi({\n\t\tdescription: \"The website's API keys.\",\n\t\texample: [\n\t\t\t{\n\t\t\t\tid: \"01JG000000000000000000000\",\n\t\t\t\tkey: \"pk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n\t\t\t\tcreatedAt: \"2021-01-01T00:00:00.000Z\",\n\t\t\t\tisTest: true,\n\t\t\t\tisActive: true,\n\t\t\t\tkeyType: APIKeyType.PUBLIC,\n\t\t\t\tlastUsedAt: null,\n\t\t\t\trevokedAt: null,\n\t\t\t},\n\t\t],\n\t}),\n});\n\nexport type CreateWebsiteResponse = z.infer<typeof createWebsiteResponseSchema>;\n\n/**\n * Website domain validation request schema\n */\nexport const checkWebsiteDomainRequestSchema = z.object({\n\tdomain: z\n\t\t.string()\n\t\t.regex(/^[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*$/)\n\t\t.openapi({\n\t\t\tdescription: \"The website's domain.\",\n\t\t\texample: \"dub.co\",\n\t\t}),\n});\n\nexport type CheckWebsiteDomainRequest = z.infer<\n\ttypeof checkWebsiteDomainRequestSchema\n>;\n\nexport const availableHumanAgentSchema = z.object({\n\tid: z.ulid().openapi({\n\t\tdescription: \"The human agent's unique identifier.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tname: z.string().nullable().openapi({\n\t\tdescription: \"The agent's name.\",\n\t\texample: \"John Doe\",\n\t}),\n\timage: z.string().nullable().openapi({\n\t\tdescription: \"The agent's avatar URL.\",\n\t\texample: \"https://cossistant.com/avatar.png\",\n\t}),\n\tlastSeenAt: z.string().nullable().openapi({\n\t\tdescription:\n\t\t\t\"The agent's last online timestamp, used to determine if the agent is online. If the agent is offline, this will be null or more than 5 minutes ago.\",\n\t\texample: \"2021-01-01T00:00:00.000Z\",\n\t}),\n});\n\nexport const AvailableAIAgentSchema = z.object({\n\tid: z.ulid().openapi({\n\t\tdescription: \"The AI agent's unique identifier.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tname: z.string().openapi({\n\t\tdescription: \"The AI agent's name.\",\n\t\texample: \"John Doe\",\n\t}),\n\timage: z.string().nullable().openapi({\n\t\tdescription: \"The AI agent's avatar URL.\",\n\t\texample: \"https://cossistant.com/avatar.png\",\n\t}),\n});\n\n/**\n * Website information response schema\n */\nexport const publicWebsiteResponseSchema = z.object({\n\tid: z.ulid().openapi({\n\t\tdescription: \"The website's unique identifier.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tname: z.string().openapi({\n\t\tdescription: \"The website's name.\",\n\t\texample: \"Dub\",\n\t}),\n\tdomain: z.string().openapi({\n\t\tdescription: \"The website's domain.\",\n\t\texample: \"dub.co\",\n\t}),\n\tdescription: z.string().nullable().openapi({\n\t\tdescription: \"The website's description.\",\n\t\texample: \"Link management for modern marketing teams.\",\n\t}),\n\tlogoUrl: z.string().nullable().openapi({\n\t\tdescription: \"The website's logo URL.\",\n\t\texample: \"https://dub.co/logo.png\",\n\t}),\n\torganizationId: z.ulid().openapi({\n\t\tdescription: \"The organization's unique identifier.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tstatus: z.string().openapi({\n\t\tdescription: \"The website's status.\",\n\t\texample: \"active\",\n\t}),\n\tlastOnlineAt: z.string().nullable().openapi({\n\t\tdescription: \"The website's support last online date.\",\n\t\texample: \"2021-01-01T00:00:00.000Z\",\n\t}),\n\tavailableHumanAgents: z.array(availableHumanAgentSchema),\n\tavailableAIAgents: z.array(AvailableAIAgentSchema),\n\tvisitor: publicVisitorResponseSchema.openapi({\n\t\tdescription:\n\t\t\t\"The visitor information. Either existing visitor data or newly created visitor.\",\n\t}),\n});\n\nexport type PublicWebsiteResponse = z.infer<typeof publicWebsiteResponseSchema>;\nexport type AvailableHumanAgent = z.infer<typeof availableHumanAgentSchema>;\nexport type AvailableAIAgent = z.infer<typeof AvailableAIAgentSchema>;\n\n/**\n * List websites by organization request schema\n */\nexport const listByOrganizationRequestSchema = z.object({\n\torganizationId: z.ulid().openapi({\n\t\tdescription: \"The organization's unique identifier.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n});\n\nexport type ListByOrganizationRequest = z.infer<\n\ttypeof listByOrganizationRequestSchema\n>;\n\n/**\n * Website list item schema - simplified website info for listing\n */\nexport const websiteListItemSchema = z.object({\n\tid: z.ulid().openapi({\n\t\tdescription: \"The website's unique identifier.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tname: z.string().openapi({\n\t\tdescription: \"The website's name.\",\n\t\texample: \"Dub\",\n\t}),\n\tslug: z.string().openapi({\n\t\tdescription: \"The website's slug.\",\n\t\texample: \"dub-co\",\n\t}),\n\tlogoUrl: z.url().nullable().openapi({\n\t\tdescription: \"Public URL to the website's logo.\",\n\t\texample: \"https://cdn.example.com/logo.png\",\n\t}),\n\tdomain: z.string().openapi({\n\t\tdescription: \"The website's domain.\",\n\t\texample: \"dub.co\",\n\t}),\n\torganizationId: z.ulid().openapi({\n\t\tdescription: \"The owning organization's unique identifier.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n});\n\nexport type WebsiteListItem = z.infer<typeof websiteListItemSchema>;\n"],"mappings":"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"}
package/enums.d.ts CHANGED
@@ -46,6 +46,8 @@ declare const ConversationEventType: {
46
46
  readonly AI_ANALYZED: "ai_analyzed";
47
47
  readonly TITLE_GENERATED: "title_generated";
48
48
  readonly AI_ESCALATED: "ai_escalated";
49
+ readonly AI_PAUSED: "ai_paused";
50
+ readonly AI_RESUMED: "ai_resumed";
49
51
  };
50
52
  declare const ConversationParticipationStatus: {
51
53
  readonly REQUESTED: "requested";
package/enums.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"enums.d.ts","names":[],"sources":["../src/enums.ts"],"sourcesContent":[],"mappings":";cAAa;EAAA,SAAA,OAIH,EAAA,SAAA;EAEE,SAAA,WAAU,EAAA,aAAW;EAEpB,SAAA,EAAA,EAAA,IAAA;AAMb,CAAA;AAGa,KAXD,UAAA,GAWC,CAAA,OAXoB,UAgBvB,CAAA,CAAA,MAAA,OAhBgD,UAgBhD,CAAA;AAEG,cAhBA,kBAmBH,EAAA;EAEG,SAAA,IAAA,EAAA,MAAA;EAOD,SAAA,QAAA,EAAA,UAAwB;EAGvB,SAAA,IAAA,EAAA,MAAA;AAqBb,CAAA;AAOa,KArDD,kBAAA,GAyDF,CAAA,OAxDD,kBAwDC,CAAA,CAAA,MAAA,OAxDgC,kBAwDhC,CAAA;AAEE,cAxDC,oBAyDJ,EAAA;EAEG,SAAA,GAAA,EAAA,KAAA;EAGA,SAAA,MAAA,EAAA,QAAqB;EAGrB,SAAA,IAAA,EAAA,MAAA;EAGA,SAAA,MAAA,EAAA,QAAoB;AAGhC,CAAA;AAKa,cArEA,sBAwEH,EAAA;EAEE,SAAA,MAAA,EAAa,QAAA;EAEb,SAAA,OAAA,EAAA,SAAA;AAGZ,CAAA;AAKY,cA/EC,wBA+E6C,EAAA;;;;;;KAxE9C,wBAAA,WACH,uCAAuC;cAEnC;;;;;;;;;;;;;;;;;;;cAqBA;;;;;;cAOA;;;;;KAMD,qBAAA,WACH,oCAAoC;KAEjC,+BAAA,WACH,8CAA8C;KAE3C,qBAAA,WACH,oCAAoC;KAEjC,sBAAA,WACH,qCAAqC;KAElC,oBAAA,WACH,mCAAmC;cAE/B;;;;cAKA;;;;KAKD,aAAA,WAAwB,4BAA4B;KAEpD,yBAAA,WACH,wCAAwC;cAEpC;;;;KAKD,UAAA,WAAqB,yBAAyB"}
1
+ {"version":3,"file":"enums.d.ts","names":[],"sources":["../src/enums.ts"],"sourcesContent":[],"mappings":";cAAa;EAAA,SAAA,OAIH,EAAA,SAAA;EAEE,SAAA,WAAU,EAAA,aAAW;EAEpB,SAAA,EAAA,EAAA,IAAA;AAMb,CAAA;AAGa,KAXD,UAAA,GAWC,CAAA,OAXoB,UAgBvB,CAAA,CAAA,MAAA,OAhBgD,UAgBhD,CAAA;AAEG,cAhBA,kBAmBH,EAAA;EAEG,SAAA,IAAA,EAAA,MAAA;EAOD,SAAA,QAAA,EAAA,UAAwB;EAGvB,SAAA,IAAA,EAAA,MAAA;AAuBb,CAAA;AAOa,KAvDD,kBAAA,GA2DF,CAAA,OA1DD,kBA0DC,CAAA,CAAA,MAAA,OA1DgC,kBA0DhC,CAAA;AAEE,cA1DC,oBA2DJ,EAAA;EAEG,SAAA,GAAA,EAAA,KAAA;EAGA,SAAA,MAAA,EAAA,QAAqB;EAGrB,SAAA,IAAA,EAAA,MAAA;EAGA,SAAA,MAAA,EAAA,QAAoB;AAGhC,CAAA;AAKa,cAvEA,sBA0EH,EAAA;EAEE,SAAA,MAAA,EAAa,QAAA;EAEb,SAAA,OAAA,EAAA,SAAA;AAGZ,CAAA;AAKY,cAjFC,wBAiF6C,EAAA;;;;;;KA1E9C,wBAAA,WACH,uCAAuC;cAEnC;;;;;;;;;;;;;;;;;;;;;cAuBA;;;;;;cAOA;;;;;KAMD,qBAAA,WACH,oCAAoC;KAEjC,+BAAA,WACH,8CAA8C;KAE3C,qBAAA,WACH,oCAAoC;KAEjC,sBAAA,WACH,qCAAqC;KAElC,oBAAA,WACH,mCAAmC;cAE/B;;;;cAKA;;;;KAKD,aAAA,WAAwB,4BAA4B;KAEpD,yBAAA,WACH,wCAAwC;cAEpC;;;;KAKD,UAAA,WAAqB,yBAAyB"}
package/enums.js CHANGED
@@ -42,7 +42,9 @@ const ConversationEventType = {
42
42
  VISITOR_IDENTIFIED: "visitor_identified",
43
43
  AI_ANALYZED: "ai_analyzed",
44
44
  TITLE_GENERATED: "title_generated",
45
- AI_ESCALATED: "ai_escalated"
45
+ AI_ESCALATED: "ai_escalated",
46
+ AI_PAUSED: "ai_paused",
47
+ AI_RESUMED: "ai_resumed"
46
48
  };
47
49
  const ConversationParticipationStatus = {
48
50
  REQUESTED: "requested",
package/enums.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"enums.js","names":[],"sources":["../src/enums.ts"],"sourcesContent":["export const SenderType = {\n\tVISITOR: \"visitor\",\n\tTEAM_MEMBER: \"team_member\",\n\tAI: \"ai\",\n} as const;\n\nexport type SenderType = (typeof SenderType)[keyof typeof SenderType];\n\nexport const ConversationStatus = {\n\tOPEN: \"open\",\n\tRESOLVED: \"resolved\",\n\tSPAM: \"spam\",\n} as const;\n\nexport type ConversationStatus =\n\t(typeof ConversationStatus)[keyof typeof ConversationStatus];\n\nexport const ConversationPriority = {\n\tLOW: \"low\",\n\tNORMAL: \"normal\",\n\tHIGH: \"high\",\n\tURGENT: \"urgent\",\n} as const;\n\nexport const TimelineItemVisibility = {\n\tPUBLIC: \"public\",\n\tPRIVATE: \"private\",\n} as const;\n\nexport const ConversationTimelineType = {\n\tMESSAGE: \"message\",\n\tEVENT: \"event\",\n\tIDENTIFICATION: \"identification\",\n\tTOOL: \"tool\",\n} as const;\n\nexport type ConversationTimelineType =\n\t(typeof ConversationTimelineType)[keyof typeof ConversationTimelineType];\n\nexport const ConversationEventType = {\n\tASSIGNED: \"assigned\",\n\tUNASSIGNED: \"unassigned\",\n\tPARTICIPANT_REQUESTED: \"participant_requested\",\n\tPARTICIPANT_JOINED: \"participant_joined\",\n\tPARTICIPANT_LEFT: \"participant_left\",\n\tSTATUS_CHANGED: \"status_changed\",\n\tPRIORITY_CHANGED: \"priority_changed\",\n\tTAG_ADDED: \"tag_added\",\n\tTAG_REMOVED: \"tag_removed\",\n\tRESOLVED: \"resolved\",\n\tREOPENED: \"reopened\",\n\tVISITOR_BLOCKED: \"visitor_blocked\",\n\tVISITOR_UNBLOCKED: \"visitor_unblocked\",\n\tVISITOR_IDENTIFIED: \"visitor_identified\",\n\t// Private AI events (team only, not visible to visitors)\n\tAI_ANALYZED: \"ai_analyzed\",\n\tTITLE_GENERATED: \"title_generated\",\n\tAI_ESCALATED: \"ai_escalated\",\n} as const;\n\nexport const ConversationParticipationStatus = {\n\tREQUESTED: \"requested\",\n\tACTIVE: \"active\",\n\tLEFT: \"left\",\n\tDECLINED: \"declined\",\n} as const;\n\nexport const ConversationSentiment = {\n\tPOSITIVE: \"positive\",\n\tNEGATIVE: \"negative\",\n\tNEUTRAL: \"neutral\",\n} as const;\n\nexport type ConversationSentiment =\n\t(typeof ConversationSentiment)[keyof typeof ConversationSentiment];\n\nexport type ConversationParticipationStatus =\n\t(typeof ConversationParticipationStatus)[keyof typeof ConversationParticipationStatus];\n\nexport type ConversationEventType =\n\t(typeof ConversationEventType)[keyof typeof ConversationEventType];\n\nexport type TimelineItemVisibility =\n\t(typeof TimelineItemVisibility)[keyof typeof TimelineItemVisibility];\n\nexport type ConversationPriority =\n\t(typeof ConversationPriority)[keyof typeof ConversationPriority];\n\nexport const WebsiteInstallationTarget = {\n\tNEXTJS: \"nextjs\",\n\tREACT: \"react\",\n} as const;\n\nexport const WebsiteStatus = {\n\tACTIVE: \"active\",\n\tINACTIVE: \"inactive\",\n} as const;\n\nexport type WebsiteStatus = (typeof WebsiteStatus)[keyof typeof WebsiteStatus];\n\nexport type WebsiteInstallationTarget =\n\t(typeof WebsiteInstallationTarget)[keyof typeof WebsiteInstallationTarget];\n\nexport const APIKeyType = {\n\tPRIVATE: \"private\",\n\tPUBLIC: \"public\",\n} as const;\n\nexport type APIKeyType = (typeof APIKeyType)[keyof typeof APIKeyType];\n"],"mappings":";AAAA,MAAa,aAAa;CACzB,SAAS;CACT,aAAa;CACb,IAAI;CACJ;AAID,MAAa,qBAAqB;CACjC,MAAM;CACN,UAAU;CACV,MAAM;CACN;AAKD,MAAa,uBAAuB;CACnC,KAAK;CACL,QAAQ;CACR,MAAM;CACN,QAAQ;CACR;AAED,MAAa,yBAAyB;CACrC,QAAQ;CACR,SAAS;CACT;AAED,MAAa,2BAA2B;CACvC,SAAS;CACT,OAAO;CACP,gBAAgB;CAChB,MAAM;CACN;AAKD,MAAa,wBAAwB;CACpC,UAAU;CACV,YAAY;CACZ,uBAAuB;CACvB,oBAAoB;CACpB,kBAAkB;CAClB,gBAAgB;CAChB,kBAAkB;CAClB,WAAW;CACX,aAAa;CACb,UAAU;CACV,UAAU;CACV,iBAAiB;CACjB,mBAAmB;CACnB,oBAAoB;CAEpB,aAAa;CACb,iBAAiB;CACjB,cAAc;CACd;AAED,MAAa,kCAAkC;CAC9C,WAAW;CACX,QAAQ;CACR,MAAM;CACN,UAAU;CACV;AAED,MAAa,wBAAwB;CACpC,UAAU;CACV,UAAU;CACV,SAAS;CACT;AAiBD,MAAa,4BAA4B;CACxC,QAAQ;CACR,OAAO;CACP;AAED,MAAa,gBAAgB;CAC5B,QAAQ;CACR,UAAU;CACV;AAOD,MAAa,aAAa;CACzB,SAAS;CACT,QAAQ;CACR"}
1
+ {"version":3,"file":"enums.js","names":[],"sources":["../src/enums.ts"],"sourcesContent":["export const SenderType = {\n\tVISITOR: \"visitor\",\n\tTEAM_MEMBER: \"team_member\",\n\tAI: \"ai\",\n} as const;\n\nexport type SenderType = (typeof SenderType)[keyof typeof SenderType];\n\nexport const ConversationStatus = {\n\tOPEN: \"open\",\n\tRESOLVED: \"resolved\",\n\tSPAM: \"spam\",\n} as const;\n\nexport type ConversationStatus =\n\t(typeof ConversationStatus)[keyof typeof ConversationStatus];\n\nexport const ConversationPriority = {\n\tLOW: \"low\",\n\tNORMAL: \"normal\",\n\tHIGH: \"high\",\n\tURGENT: \"urgent\",\n} as const;\n\nexport const TimelineItemVisibility = {\n\tPUBLIC: \"public\",\n\tPRIVATE: \"private\",\n} as const;\n\nexport const ConversationTimelineType = {\n\tMESSAGE: \"message\",\n\tEVENT: \"event\",\n\tIDENTIFICATION: \"identification\",\n\tTOOL: \"tool\",\n} as const;\n\nexport type ConversationTimelineType =\n\t(typeof ConversationTimelineType)[keyof typeof ConversationTimelineType];\n\nexport const ConversationEventType = {\n\tASSIGNED: \"assigned\",\n\tUNASSIGNED: \"unassigned\",\n\tPARTICIPANT_REQUESTED: \"participant_requested\",\n\tPARTICIPANT_JOINED: \"participant_joined\",\n\tPARTICIPANT_LEFT: \"participant_left\",\n\tSTATUS_CHANGED: \"status_changed\",\n\tPRIORITY_CHANGED: \"priority_changed\",\n\tTAG_ADDED: \"tag_added\",\n\tTAG_REMOVED: \"tag_removed\",\n\tRESOLVED: \"resolved\",\n\tREOPENED: \"reopened\",\n\tVISITOR_BLOCKED: \"visitor_blocked\",\n\tVISITOR_UNBLOCKED: \"visitor_unblocked\",\n\tVISITOR_IDENTIFIED: \"visitor_identified\",\n\t// Private AI events (team only, not visible to visitors)\n\tAI_ANALYZED: \"ai_analyzed\",\n\tTITLE_GENERATED: \"title_generated\",\n\tAI_ESCALATED: \"ai_escalated\",\n\tAI_PAUSED: \"ai_paused\",\n\tAI_RESUMED: \"ai_resumed\",\n} as const;\n\nexport const ConversationParticipationStatus = {\n\tREQUESTED: \"requested\",\n\tACTIVE: \"active\",\n\tLEFT: \"left\",\n\tDECLINED: \"declined\",\n} as const;\n\nexport const ConversationSentiment = {\n\tPOSITIVE: \"positive\",\n\tNEGATIVE: \"negative\",\n\tNEUTRAL: \"neutral\",\n} as const;\n\nexport type ConversationSentiment =\n\t(typeof ConversationSentiment)[keyof typeof ConversationSentiment];\n\nexport type ConversationParticipationStatus =\n\t(typeof ConversationParticipationStatus)[keyof typeof ConversationParticipationStatus];\n\nexport type ConversationEventType =\n\t(typeof ConversationEventType)[keyof typeof ConversationEventType];\n\nexport type TimelineItemVisibility =\n\t(typeof TimelineItemVisibility)[keyof typeof TimelineItemVisibility];\n\nexport type ConversationPriority =\n\t(typeof ConversationPriority)[keyof typeof ConversationPriority];\n\nexport const WebsiteInstallationTarget = {\n\tNEXTJS: \"nextjs\",\n\tREACT: \"react\",\n} as const;\n\nexport const WebsiteStatus = {\n\tACTIVE: \"active\",\n\tINACTIVE: \"inactive\",\n} as const;\n\nexport type WebsiteStatus = (typeof WebsiteStatus)[keyof typeof WebsiteStatus];\n\nexport type WebsiteInstallationTarget =\n\t(typeof WebsiteInstallationTarget)[keyof typeof WebsiteInstallationTarget];\n\nexport const APIKeyType = {\n\tPRIVATE: \"private\",\n\tPUBLIC: \"public\",\n} as const;\n\nexport type APIKeyType = (typeof APIKeyType)[keyof typeof APIKeyType];\n"],"mappings":";AAAA,MAAa,aAAa;CACzB,SAAS;CACT,aAAa;CACb,IAAI;CACJ;AAID,MAAa,qBAAqB;CACjC,MAAM;CACN,UAAU;CACV,MAAM;CACN;AAKD,MAAa,uBAAuB;CACnC,KAAK;CACL,QAAQ;CACR,MAAM;CACN,QAAQ;CACR;AAED,MAAa,yBAAyB;CACrC,QAAQ;CACR,SAAS;CACT;AAED,MAAa,2BAA2B;CACvC,SAAS;CACT,OAAO;CACP,gBAAgB;CAChB,MAAM;CACN;AAKD,MAAa,wBAAwB;CACpC,UAAU;CACV,YAAY;CACZ,uBAAuB;CACvB,oBAAoB;CACpB,kBAAkB;CAClB,gBAAgB;CAChB,kBAAkB;CAClB,WAAW;CACX,aAAa;CACb,UAAU;CACV,UAAU;CACV,iBAAiB;CACjB,mBAAmB;CACnB,oBAAoB;CAEpB,aAAa;CACb,iBAAiB;CACjB,cAAc;CACd,WAAW;CACX,YAAY;CACZ;AAED,MAAa,kCAAkC;CAC9C,WAAW;CACX,QAAQ;CACR,MAAM;CACN,UAAU;CACV;AAED,MAAa,wBAAwB;CACpC,UAAU;CACV,UAAU;CACV,SAAS;CACT;AAiBD,MAAa,4BAA4B;CACxC,QAAQ;CACR,OAAO;CACP;AAED,MAAa,gBAAgB;CAC5B,QAAQ;CACR,UAAU;CACV;AAOD,MAAa,aAAa;CACzB,SAAS;CACT,QAAQ;CACR"}