@automate.ax/integration-contracts 0.148.0 → 0.150.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/dist/calcom/events.d.ts +1067 -11
- package/dist/calcom/events.js +66 -32
- package/dist/kit/schemas.js +57 -0
- package/dist/kit/types.d.ts +7 -1
- package/dist/krisp/api.d.ts +61 -0
- package/dist/krisp/api.js +170 -0
- package/dist/krisp/index.d.ts +2 -0
- package/dist/krisp/index.js +2 -0
- package/dist/krisp/schemas.d.ts +145 -0
- package/dist/krisp/schemas.js +97 -0
- package/package.json +8 -2
- package/src/calcom/events.ts +149 -30
- package/src/kit/schemas.ts +64 -0
- package/src/kit/types.ts +15 -1
- package/src/krisp/api.ts +215 -0
- package/src/krisp/index.ts +2 -0
- package/src/krisp/schemas.ts +122 -0
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import * as z from "zod"
|
|
2
|
+
import type { Encodable } from "@automate.ax/codec"
|
|
3
|
+
|
|
4
|
+
const DATE_TIME_SCHEMA = z.iso.datetime({ offset: true })
|
|
5
|
+
|
|
6
|
+
/** Krisp profile represented by a personal API key. */
|
|
7
|
+
export const KRISP_PROFILE_SCHEMA = z.object({
|
|
8
|
+
avatar: z.url().nullable().prefault(null),
|
|
9
|
+
email: z.email(),
|
|
10
|
+
firstName: z.string().nullable().prefault(null),
|
|
11
|
+
id: z.number().int().positive(),
|
|
12
|
+
lastName: z.string().nullable().prefault(null),
|
|
13
|
+
teamId: z.number().int().positive(),
|
|
14
|
+
workspaceId: z.number().int().positive(),
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
/** Calendar attendee or diarized speaker attached to a Krisp meeting. */
|
|
18
|
+
export const KRISP_PARTICIPANT_SCHEMA = z.object({
|
|
19
|
+
email: z.string().nullable().prefault(null),
|
|
20
|
+
firstName: z.string().nullable().prefault(null),
|
|
21
|
+
lastName: z.string().nullable().prefault(null),
|
|
22
|
+
photo: z.url().nullable().prefault(null),
|
|
23
|
+
status: z.string().nullable().prefault(null),
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
/** Meeting metadata returned by Krisp list and detail endpoints. */
|
|
27
|
+
export const KRISP_MEETING_SCHEMA = z.object({
|
|
28
|
+
duration: z.number().int().nonnegative().nullable(),
|
|
29
|
+
id: z.string().min(1),
|
|
30
|
+
ownership: z.enum(["owned", "shared"]),
|
|
31
|
+
participants: KRISP_PARTICIPANT_SCHEMA.array().optional(),
|
|
32
|
+
source: z.string().nullable(),
|
|
33
|
+
startedAt: DATE_TIME_SCHEMA.nullable(),
|
|
34
|
+
status: z.string(),
|
|
35
|
+
tags: z.string().array(),
|
|
36
|
+
title: z.string(),
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
/** One diarized transcript segment. Times are seconds from recording start. */
|
|
40
|
+
export const KRISP_TRANSCRIPT_SEGMENT_SCHEMA = z.object({
|
|
41
|
+
end: z.number().nonnegative(),
|
|
42
|
+
speaker: z.number().int().nonnegative(),
|
|
43
|
+
start: z.number().nonnegative(),
|
|
44
|
+
text: z.string(),
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
const KRISP_NOTE_ASSIGNEE_SCHEMA = z.record(z.string(), z.json())
|
|
48
|
+
|
|
49
|
+
export interface KrispNoteBlock {
|
|
50
|
+
[key: string]: Encodable
|
|
51
|
+
assignee?: z.output<typeof KRISP_NOTE_ASSIGNEE_SCHEMA> | null
|
|
52
|
+
children?: KrispNoteBlock[]
|
|
53
|
+
completed?: boolean | null
|
|
54
|
+
dueDate?: string | null
|
|
55
|
+
text?: string
|
|
56
|
+
type: string
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** Recursive block returned by Krisp's fixed and custom meeting-note sections. */
|
|
60
|
+
export const KRISP_NOTE_BLOCK_SCHEMA: z.ZodType<KrispNoteBlock> = z.lazy(() =>
|
|
61
|
+
z.object({
|
|
62
|
+
assignee: KRISP_NOTE_ASSIGNEE_SCHEMA.nullable().optional(),
|
|
63
|
+
children: KRISP_NOTE_BLOCK_SCHEMA.array().optional(),
|
|
64
|
+
completed: z.boolean().nullable().optional(),
|
|
65
|
+
dueDate: z.string().nullable().optional(),
|
|
66
|
+
text: z.string().optional(),
|
|
67
|
+
type: z.string(),
|
|
68
|
+
}),
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
/** Complete Krisp meeting detail with optional heavy transcript and note data. */
|
|
72
|
+
export const KRISP_MEETING_DETAIL_SCHEMA = KRISP_MEETING_SCHEMA.extend({
|
|
73
|
+
language: z.string().nullable().prefault(null),
|
|
74
|
+
meetingType: z.string().nullable().prefault(null),
|
|
75
|
+
notes: z
|
|
76
|
+
.object({ blocks: KRISP_NOTE_BLOCK_SCHEMA.array() })
|
|
77
|
+
.nullable()
|
|
78
|
+
.optional(),
|
|
79
|
+
transcript: z
|
|
80
|
+
.object({
|
|
81
|
+
language: z.string().nullable().prefault(null),
|
|
82
|
+
segments: KRISP_TRANSCRIPT_SEGMENT_SCHEMA.array().prefault([]),
|
|
83
|
+
speakers: z.record(z.string(), KRISP_PARTICIPANT_SCHEMA).prefault({}),
|
|
84
|
+
})
|
|
85
|
+
.nullable()
|
|
86
|
+
.optional(),
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
/** One action item extracted from a Krisp meeting. */
|
|
90
|
+
export const KRISP_ACTION_ITEM_SCHEMA = z.object({
|
|
91
|
+
assignee: KRISP_PARTICIPANT_SCHEMA.nullable().prefault(null),
|
|
92
|
+
completed: z.boolean().nullable().prefault(null),
|
|
93
|
+
dueDate: z.string().nullable().prefault(null),
|
|
94
|
+
id: z.string().min(1),
|
|
95
|
+
meetingId: z.string().min(1),
|
|
96
|
+
meetingStartedAt: DATE_TIME_SCHEMA.nullable().prefault(null),
|
|
97
|
+
meetingTitle: z.string(),
|
|
98
|
+
title: z.string(),
|
|
99
|
+
})
|
|
100
|
+
|
|
101
|
+
/** Tag used to organize Krisp meetings. */
|
|
102
|
+
export const KRISP_TAG_SCHEMA = z.object({
|
|
103
|
+
color: z.string().nullable(),
|
|
104
|
+
createdAt: DATE_TIME_SCHEMA,
|
|
105
|
+
id: z.string().min(1),
|
|
106
|
+
name: z.string(),
|
|
107
|
+
})
|
|
108
|
+
|
|
109
|
+
/** Recording-import identity returned after Krisp issues an upload URL. */
|
|
110
|
+
export const KRISP_IMPORT_SCHEMA = z.object({
|
|
111
|
+
expiresAt: DATE_TIME_SCHEMA,
|
|
112
|
+
importId: z.string().min(1),
|
|
113
|
+
url: z.url(),
|
|
114
|
+
})
|
|
115
|
+
|
|
116
|
+
/** Current processing state for a Krisp recording import. */
|
|
117
|
+
export const KRISP_IMPORT_STATUS_SCHEMA = z.object({
|
|
118
|
+
error: z.string().nullable().prefault(null),
|
|
119
|
+
importId: z.string().min(1),
|
|
120
|
+
meetingId: z.string().min(1).nullable().prefault(null),
|
|
121
|
+
status: z.enum(["uploading", "processing", "ready", "failed"]),
|
|
122
|
+
})
|