@slopus/happy-agent-client 0.0.70 → 0.0.71

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.
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../sources/protocol/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../sources/protocol/events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,268 @@
1
+ /** GPT-Live voice sessions. Provider credentials and wire events stay on the daemon. */
2
+ import { type Static } from "@sinclair/typebox";
3
+ export declare const liveCredentialSchema: import("@sinclair/typebox").TObject<{
4
+ type: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"codex_subscription">, import("@sinclair/typebox").TLiteral<"openai_api_key">]>;
5
+ providerId: import("@sinclair/typebox").TString;
6
+ }>;
7
+ export type LiveCredential = Static<typeof liveCredentialSchema>;
8
+ /** Request selection is closed; resource responses remain forward-compatible. */
9
+ export declare const liveCredentialRequestSchema: import("@sinclair/typebox").TObject<{
10
+ type: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"codex_subscription">, import("@sinclair/typebox").TLiteral<"openai_api_key">]>;
11
+ providerId: import("@sinclair/typebox").TString;
12
+ }>;
13
+ export declare const liveSessionStatusSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"starting">, import("@sinclair/typebox").TLiteral<"active">, import("@sinclair/typebox").TLiteral<"closing">, import("@sinclair/typebox").TLiteral<"closed">, import("@sinclair/typebox").TLiteral<"failed">]>;
14
+ export type LiveSessionStatus = Static<typeof liveSessionStatusSchema>;
15
+ export declare const liveSessionUsageSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
16
+ seconds: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
17
+ final: import("@sinclair/typebox").TLiteral<false>;
18
+ }>, import("@sinclair/typebox").TObject<{
19
+ seconds: import("@sinclair/typebox").TNumber;
20
+ final: import("@sinclair/typebox").TLiteral<true>;
21
+ }>]>;
22
+ export type LiveSessionUsage = Static<typeof liveSessionUsageSchema>;
23
+ export declare const liveSessionSchema: import("@sinclair/typebox").TObject<{
24
+ id: import("@sinclair/typebox").TString;
25
+ windowId: import("@sinclair/typebox").TString;
26
+ credential: import("@sinclair/typebox").TObject<{
27
+ type: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"codex_subscription">, import("@sinclair/typebox").TLiteral<"openai_api_key">]>;
28
+ providerId: import("@sinclair/typebox").TString;
29
+ }>;
30
+ contextRevision: import("@sinclair/typebox").TInteger;
31
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"starting">, import("@sinclair/typebox").TLiteral<"active">, import("@sinclair/typebox").TLiteral<"closing">, import("@sinclair/typebox").TLiteral<"closed">, import("@sinclair/typebox").TLiteral<"failed">]>;
32
+ usage: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
33
+ seconds: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
34
+ final: import("@sinclair/typebox").TLiteral<false>;
35
+ }>, import("@sinclair/typebox").TObject<{
36
+ seconds: import("@sinclair/typebox").TNumber;
37
+ final: import("@sinclair/typebox").TLiteral<true>;
38
+ }>]>;
39
+ error: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
40
+ createdAt: import("@sinclair/typebox").TInteger;
41
+ updatedAt: import("@sinclair/typebox").TInteger;
42
+ endedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
43
+ version: import("@sinclair/typebox").TString;
44
+ }>;
45
+ export type LiveSession = Static<typeof liveSessionSchema>;
46
+ /** Creation is a single attempt; this client never retries it. */
47
+ export declare const createLiveSessionRequestSchema: import("@sinclair/typebox").TObject<{
48
+ mutationId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
49
+ id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
50
+ windowId: import("@sinclair/typebox").TString;
51
+ sdp: import("@sinclair/typebox").TString;
52
+ credential: import("@sinclair/typebox").TObject<{
53
+ type: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"codex_subscription">, import("@sinclair/typebox").TLiteral<"openai_api_key">]>;
54
+ providerId: import("@sinclair/typebox").TString;
55
+ }>;
56
+ contextRevision: import("@sinclair/typebox").TInteger;
57
+ context: import("@sinclair/typebox").TObject<{
58
+ windowId: import("@sinclair/typebox").TString;
59
+ connections: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
60
+ connectionId: import("@sinclair/typebox").TString;
61
+ name: import("@sinclair/typebox").TString;
62
+ online: import("@sinclair/typebox").TBoolean;
63
+ }>>;
64
+ activeConnectionId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
65
+ activeTarget: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
66
+ kind: import("@sinclair/typebox").TLiteral<"project">;
67
+ connectionId: import("@sinclair/typebox").TString;
68
+ projectId: import("@sinclair/typebox").TString;
69
+ groupId: import("@sinclair/typebox").TString;
70
+ }>, import("@sinclair/typebox").TObject<{
71
+ kind: import("@sinclair/typebox").TLiteral<"workspace">;
72
+ connectionId: import("@sinclair/typebox").TString;
73
+ projectId: import("@sinclair/typebox").TString;
74
+ groupId: import("@sinclair/typebox").TString;
75
+ workspaceId: import("@sinclair/typebox").TString;
76
+ }>, import("@sinclair/typebox").TObject<{
77
+ kind: import("@sinclair/typebox").TLiteral<"session">;
78
+ connectionId: import("@sinclair/typebox").TString;
79
+ groupId: import("@sinclair/typebox").TString;
80
+ sessionId: import("@sinclair/typebox").TString;
81
+ }>, import("@sinclair/typebox").TObject<{
82
+ kind: import("@sinclair/typebox").TLiteral<"bot">;
83
+ connectionId: import("@sinclair/typebox").TString;
84
+ groupId: import("@sinclair/typebox").TString;
85
+ sessionId: import("@sinclair/typebox").TString;
86
+ botId: import("@sinclair/typebox").TString;
87
+ }>]>, import("@sinclair/typebox").TNull]>;
88
+ projects: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
89
+ target: import("@sinclair/typebox").TObject<{
90
+ kind: import("@sinclair/typebox").TLiteral<"project">;
91
+ connectionId: import("@sinclair/typebox").TString;
92
+ projectId: import("@sinclair/typebox").TString;
93
+ groupId: import("@sinclair/typebox").TString;
94
+ }>;
95
+ name: import("@sinclair/typebox").TString;
96
+ }>>;
97
+ workspaces: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
98
+ target: import("@sinclair/typebox").TObject<{
99
+ kind: import("@sinclair/typebox").TLiteral<"workspace">;
100
+ connectionId: import("@sinclair/typebox").TString;
101
+ projectId: import("@sinclair/typebox").TString;
102
+ groupId: import("@sinclair/typebox").TString;
103
+ workspaceId: import("@sinclair/typebox").TString;
104
+ }>;
105
+ name: import("@sinclair/typebox").TString;
106
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"ready">, import("@sinclair/typebox").TLiteral<"preparing">, import("@sinclair/typebox").TLiteral<"error">, import("@sinclair/typebox").TLiteral<"unknown">]>;
107
+ }>>;
108
+ sessions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
109
+ target: import("@sinclair/typebox").TObject<{
110
+ connectionId: import("@sinclair/typebox").TString;
111
+ groupId: import("@sinclair/typebox").TString;
112
+ sessionId: import("@sinclair/typebox").TString;
113
+ }>;
114
+ title: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
115
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"idle">, import("@sinclair/typebox").TLiteral<"running">, import("@sinclair/typebox").TLiteral<"awaitingInput">, import("@sinclair/typebox").TLiteral<"waiting">, import("@sinclair/typebox").TLiteral<"error">, import("@sinclair/typebox").TLiteral<"unknown">]>;
116
+ }>>;
117
+ bots: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
118
+ target: import("@sinclair/typebox").TObject<{
119
+ kind: import("@sinclair/typebox").TLiteral<"bot">;
120
+ connectionId: import("@sinclair/typebox").TString;
121
+ groupId: import("@sinclair/typebox").TString;
122
+ sessionId: import("@sinclair/typebox").TString;
123
+ botId: import("@sinclair/typebox").TString;
124
+ }>;
125
+ name: import("@sinclair/typebox").TString;
126
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"idle">, import("@sinclair/typebox").TLiteral<"running">, import("@sinclair/typebox").TLiteral<"awaitingInput">, import("@sinclair/typebox").TLiteral<"waiting">, import("@sinclair/typebox").TLiteral<"error">, import("@sinclair/typebox").TLiteral<"unknown">]>;
127
+ }>>;
128
+ activeSession: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
129
+ target: import("@sinclair/typebox").TObject<{
130
+ connectionId: import("@sinclair/typebox").TString;
131
+ groupId: import("@sinclair/typebox").TString;
132
+ sessionId: import("@sinclair/typebox").TString;
133
+ }>;
134
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"idle">, import("@sinclair/typebox").TLiteral<"running">, import("@sinclair/typebox").TLiteral<"awaitingInput">, import("@sinclair/typebox").TLiteral<"waiting">, import("@sinclair/typebox").TLiteral<"error">, import("@sinclair/typebox").TLiteral<"unknown">]>;
135
+ messages: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
136
+ id: import("@sinclair/typebox").TString;
137
+ role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"user">, import("@sinclair/typebox").TLiteral<"assistant">]>;
138
+ text: import("@sinclair/typebox").TString;
139
+ }>>;
140
+ composerHasDraft: import("@sinclair/typebox").TBoolean;
141
+ writeRefusal: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
142
+ }>, import("@sinclair/typebox").TNull]>;
143
+ truncated: import("@sinclair/typebox").TBoolean;
144
+ }>;
145
+ }>;
146
+ export type CreateLiveSessionRequest = Static<typeof createLiveSessionRequestSchema>;
147
+ /** SDP is returned only by creation, never by status reads or journal events. */
148
+ export declare const createLiveSessionResponseSchema: import("@sinclair/typebox").TObject<{
149
+ session: import("@sinclair/typebox").TObject<{
150
+ id: import("@sinclair/typebox").TString;
151
+ windowId: import("@sinclair/typebox").TString;
152
+ credential: import("@sinclair/typebox").TObject<{
153
+ type: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"codex_subscription">, import("@sinclair/typebox").TLiteral<"openai_api_key">]>;
154
+ providerId: import("@sinclair/typebox").TString;
155
+ }>;
156
+ contextRevision: import("@sinclair/typebox").TInteger;
157
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"starting">, import("@sinclair/typebox").TLiteral<"active">, import("@sinclair/typebox").TLiteral<"closing">, import("@sinclair/typebox").TLiteral<"closed">, import("@sinclair/typebox").TLiteral<"failed">]>;
158
+ usage: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
159
+ seconds: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
160
+ final: import("@sinclair/typebox").TLiteral<false>;
161
+ }>, import("@sinclair/typebox").TObject<{
162
+ seconds: import("@sinclair/typebox").TNumber;
163
+ final: import("@sinclair/typebox").TLiteral<true>;
164
+ }>]>;
165
+ error: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
166
+ createdAt: import("@sinclair/typebox").TInteger;
167
+ updatedAt: import("@sinclair/typebox").TInteger;
168
+ endedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
169
+ version: import("@sinclair/typebox").TString;
170
+ }>;
171
+ transport: import("@sinclair/typebox").TObject<{
172
+ type: import("@sinclair/typebox").TLiteral<"webrtc">;
173
+ sdp: import("@sinclair/typebox").TString;
174
+ }>;
175
+ }>;
176
+ export type CreateLiveSessionResponse = Static<typeof createLiveSessionResponseSchema>;
177
+ export declare const liveSessionResponseSchema: import("@sinclair/typebox").TObject<{
178
+ session: import("@sinclair/typebox").TObject<{
179
+ id: import("@sinclair/typebox").TString;
180
+ windowId: import("@sinclair/typebox").TString;
181
+ credential: import("@sinclair/typebox").TObject<{
182
+ type: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"codex_subscription">, import("@sinclair/typebox").TLiteral<"openai_api_key">]>;
183
+ providerId: import("@sinclair/typebox").TString;
184
+ }>;
185
+ contextRevision: import("@sinclair/typebox").TInteger;
186
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"starting">, import("@sinclair/typebox").TLiteral<"active">, import("@sinclair/typebox").TLiteral<"closing">, import("@sinclair/typebox").TLiteral<"closed">, import("@sinclair/typebox").TLiteral<"failed">]>;
187
+ usage: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
188
+ seconds: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
189
+ final: import("@sinclair/typebox").TLiteral<false>;
190
+ }>, import("@sinclair/typebox").TObject<{
191
+ seconds: import("@sinclair/typebox").TNumber;
192
+ final: import("@sinclair/typebox").TLiteral<true>;
193
+ }>]>;
194
+ error: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
195
+ createdAt: import("@sinclair/typebox").TInteger;
196
+ updatedAt: import("@sinclair/typebox").TInteger;
197
+ endedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
198
+ version: import("@sinclair/typebox").TString;
199
+ }>;
200
+ }>;
201
+ export type LiveSessionResponse = Static<typeof liveSessionResponseSchema>;
202
+ export declare const closeLiveSessionRequestSchema: import("@sinclair/typebox").TObject<{
203
+ mutationId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
204
+ }>;
205
+ export type CloseLiveSessionRequest = Static<typeof closeLiveSessionRequestSchema>;
206
+ export declare const liveSessionCreatedPayloadSchema: import("@sinclair/typebox").TObject<{
207
+ session: import("@sinclair/typebox").TObject<{
208
+ id: import("@sinclair/typebox").TString;
209
+ windowId: import("@sinclair/typebox").TString;
210
+ credential: import("@sinclair/typebox").TObject<{
211
+ type: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"codex_subscription">, import("@sinclair/typebox").TLiteral<"openai_api_key">]>;
212
+ providerId: import("@sinclair/typebox").TString;
213
+ }>;
214
+ contextRevision: import("@sinclair/typebox").TInteger;
215
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"starting">, import("@sinclair/typebox").TLiteral<"active">, import("@sinclair/typebox").TLiteral<"closing">, import("@sinclair/typebox").TLiteral<"closed">, import("@sinclair/typebox").TLiteral<"failed">]>;
216
+ usage: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
217
+ seconds: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
218
+ final: import("@sinclair/typebox").TLiteral<false>;
219
+ }>, import("@sinclair/typebox").TObject<{
220
+ seconds: import("@sinclair/typebox").TNumber;
221
+ final: import("@sinclair/typebox").TLiteral<true>;
222
+ }>]>;
223
+ error: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
224
+ createdAt: import("@sinclair/typebox").TInteger;
225
+ updatedAt: import("@sinclair/typebox").TInteger;
226
+ endedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
227
+ version: import("@sinclair/typebox").TString;
228
+ }>;
229
+ mutationId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
230
+ }>;
231
+ export type LiveSessionCreatedPayload = Static<typeof liveSessionCreatedPayloadSchema>;
232
+ export declare const liveSessionUpdatedChangesSchema: import("@sinclair/typebox").TObject<{
233
+ contextRevision: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
234
+ status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"starting">, import("@sinclair/typebox").TLiteral<"active">, import("@sinclair/typebox").TLiteral<"closing">, import("@sinclair/typebox").TLiteral<"closed">, import("@sinclair/typebox").TLiteral<"failed">]>>;
235
+ usage: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
236
+ seconds: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
237
+ final: import("@sinclair/typebox").TLiteral<false>;
238
+ }>, import("@sinclair/typebox").TObject<{
239
+ seconds: import("@sinclair/typebox").TNumber;
240
+ final: import("@sinclair/typebox").TLiteral<true>;
241
+ }>]>>;
242
+ error: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
243
+ endedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>>;
244
+ updatedAt: import("@sinclair/typebox").TInteger;
245
+ }>;
246
+ export type LiveSessionUpdatedChanges = Static<typeof liveSessionUpdatedChangesSchema>;
247
+ export declare const liveSessionUpdatedPayloadSchema: import("@sinclair/typebox").TObject<{
248
+ sessionId: import("@sinclair/typebox").TString;
249
+ previousVersion: import("@sinclair/typebox").TString;
250
+ version: import("@sinclair/typebox").TString;
251
+ changes: import("@sinclair/typebox").TObject<{
252
+ contextRevision: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
253
+ status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"starting">, import("@sinclair/typebox").TLiteral<"active">, import("@sinclair/typebox").TLiteral<"closing">, import("@sinclair/typebox").TLiteral<"closed">, import("@sinclair/typebox").TLiteral<"failed">]>>;
254
+ usage: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
255
+ seconds: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
256
+ final: import("@sinclair/typebox").TLiteral<false>;
257
+ }>, import("@sinclair/typebox").TObject<{
258
+ seconds: import("@sinclair/typebox").TNumber;
259
+ final: import("@sinclair/typebox").TLiteral<true>;
260
+ }>]>>;
261
+ error: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
262
+ endedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>>;
263
+ updatedAt: import("@sinclair/typebox").TInteger;
264
+ }>;
265
+ mutationId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
266
+ }>;
267
+ export type LiveSessionUpdatedPayload = Static<typeof liveSessionUpdatedPayloadSchema>;
268
+ //# sourceMappingURL=live.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../sources/protocol/live.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,OAAO,EAAE,KAAK,MAAM,EAAQ,MAAM,mBAAmB,CAAC;AAUtD,eAAO,MAAM,oBAAoB;;;EAG/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEjE,iFAAiF;AACjF,eAAO,MAAM,2BAA2B;;;EAEtC,CAAC;AAEH,eAAO,MAAM,uBAAuB,yRAMlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAEvE,eAAO,MAAM,sBAAsB;;;;;;IAGjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAErE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;EAY5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE3D,kEAAkE;AAClE,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW1C,CAAC;AACF,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAErF,iFAAiF;AACjF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG1C,CAAC;AACH,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAEvF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;EAA8C,CAAC;AACrF,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE3E,eAAO,MAAM,6BAA6B;;EAKzC,CAAC;AACF,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEnF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;EAG1C,CAAC;AACH,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAEvF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;EAO1C,CAAC;AACH,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAEvF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;EAM1C,CAAC;AACH,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,OAAO,+BAA+B,CAAC,CAAC"}
@@ -0,0 +1,75 @@
1
+ /** GPT-Live voice sessions. Provider credentials and wire events stay on the daemon. */
2
+ import { Type } from "@sinclair/typebox";
3
+ import { mutationIdSchema, Nullable, resourceVersionSchema, timestampSchema } from "./common.js";
4
+ import { liveContextRevisionSchema, liveDesktopContextSchema, liveDesktopIdSchema, liveResourceIdSchema, } from "./liveDesktop.js";
5
+ export const liveCredentialSchema = Type.Object({
6
+ type: Type.Union([Type.Literal("codex_subscription"), Type.Literal("openai_api_key")]),
7
+ providerId: Type.String({ minLength: 1, maxLength: 128, pattern: "\\S" }),
8
+ });
9
+ /** Request selection is closed; resource responses remain forward-compatible. */
10
+ export const liveCredentialRequestSchema = Type.Object(liveCredentialSchema.properties, {
11
+ additionalProperties: false,
12
+ });
13
+ export const liveSessionStatusSchema = Type.Union([
14
+ Type.Literal("starting"),
15
+ Type.Literal("active"),
16
+ Type.Literal("closing"),
17
+ Type.Literal("closed"),
18
+ Type.Literal("failed"),
19
+ ]);
20
+ export const liveSessionUsageSchema = Type.Union([
21
+ Type.Object({ seconds: Nullable(Type.Number({ minimum: 0 })), final: Type.Literal(false) }),
22
+ Type.Object({ seconds: Type.Number({ minimum: 0 }), final: Type.Literal(true) }),
23
+ ]);
24
+ export const liveSessionSchema = Type.Object({
25
+ id: liveResourceIdSchema,
26
+ windowId: liveDesktopIdSchema,
27
+ credential: liveCredentialSchema,
28
+ contextRevision: liveContextRevisionSchema,
29
+ status: liveSessionStatusSchema,
30
+ usage: liveSessionUsageSchema,
31
+ error: Nullable(Type.String()),
32
+ createdAt: timestampSchema,
33
+ updatedAt: timestampSchema,
34
+ endedAt: Nullable(timestampSchema),
35
+ version: resourceVersionSchema,
36
+ });
37
+ /** Creation is a single attempt; this client never retries it. */
38
+ export const createLiveSessionRequestSchema = Type.Object({
39
+ mutationId: Type.Optional(mutationIdSchema),
40
+ id: Type.Optional(liveResourceIdSchema),
41
+ windowId: liveDesktopIdSchema,
42
+ sdp: Type.String({ minLength: 1, maxLength: 65_536, pattern: "\\S" }),
43
+ credential: liveCredentialRequestSchema,
44
+ contextRevision: liveContextRevisionSchema,
45
+ context: liveDesktopContextSchema,
46
+ }, { additionalProperties: false });
47
+ /** SDP is returned only by creation, never by status reads or journal events. */
48
+ export const createLiveSessionResponseSchema = Type.Object({
49
+ session: liveSessionSchema,
50
+ transport: Type.Object({ type: Type.Literal("webrtc"), sdp: Type.String() }),
51
+ });
52
+ export const liveSessionResponseSchema = Type.Object({ session: liveSessionSchema });
53
+ export const closeLiveSessionRequestSchema = Type.Object({
54
+ mutationId: Type.Optional(mutationIdSchema),
55
+ }, { additionalProperties: false });
56
+ export const liveSessionCreatedPayloadSchema = Type.Object({
57
+ session: liveSessionSchema,
58
+ mutationId: Type.Optional(mutationIdSchema),
59
+ });
60
+ export const liveSessionUpdatedChangesSchema = Type.Object({
61
+ contextRevision: Type.Optional(liveContextRevisionSchema),
62
+ status: Type.Optional(liveSessionStatusSchema),
63
+ usage: Type.Optional(liveSessionUsageSchema),
64
+ error: Type.Optional(Nullable(Type.String())),
65
+ endedAt: Type.Optional(Nullable(timestampSchema)),
66
+ updatedAt: timestampSchema,
67
+ });
68
+ export const liveSessionUpdatedPayloadSchema = Type.Object({
69
+ sessionId: liveResourceIdSchema,
70
+ previousVersion: resourceVersionSchema,
71
+ version: resourceVersionSchema,
72
+ changes: liveSessionUpdatedChangesSchema,
73
+ mutationId: Type.Optional(mutationIdSchema),
74
+ });
75
+ //# sourceMappingURL=live.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live.js","sourceRoot":"","sources":["../../sources/protocol/live.ts"],"names":[],"mappings":"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"}