@slopus/happy-agent-client 0.0.27 → 0.0.29

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,14 +1,10 @@
1
1
  /** Bootstrap: one request that gets a desktop client on screen instantly. */
2
+ import { type Static } from "@sinclair/typebox";
2
3
  import type { Agent, AgentDraftResponse, AgentModeResponse, AgentResponse } from "./agents.js";
3
- import type { EventCursor } from "./common.js";
4
- import type { DaemonConfig, OnboardingState } from "./daemon.js";
5
- import type { HappyIntegration } from "./integrations.js";
4
+ import { type EventCursor } from "./common.js";
6
5
  import type { UserMessage } from "./messages.js";
7
6
  import type { BackgroundProcess } from "./processes.js";
8
- import type { Profile } from "./profile.js";
9
- import type { Project } from "./projects.js";
10
7
  import type { AgentUsageResponse } from "./usage.js";
11
- import type { Workspace } from "./workspaces.js";
12
8
  /**
13
9
  * `GET /v0/agents/:agentId/bootstrap`
14
10
  *
@@ -32,20 +28,357 @@ export interface AgentBootstrapResponse extends AgentDraftResponse, AgentModeRes
32
28
  * own. There is no separate global agent list: each included project and
33
29
  * workspace carries its own ordered top-level agents.
34
30
  */
35
- export interface DesktopBootstrapResponse {
36
- config: DaemonConfig;
37
- profile: Profile;
38
- onboarding: OnboardingState;
39
- /** Current Happy mobile connection state. Absent on older compatible daemons. */
40
- happyIntegration?: HappyIntegration;
41
- /** Every active project, in catalog order. */
42
- projects: Project[];
43
- /** Each project's root workspace and the workspaces directly under it. */
44
- workspaces: Workspace[];
31
+ export declare const desktopBootstrapResponseSchema: import("@sinclair/typebox").TObject<{
32
+ config: import("@sinclair/typebox").TObject<{
33
+ defaults: import("@sinclair/typebox").TObject<{
34
+ effort: import("@sinclair/typebox").TString;
35
+ modelId: import("@sinclair/typebox").TString;
36
+ permissionMode: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"read_only">, import("@sinclair/typebox").TLiteral<"workspace_write">, import("@sinclair/typebox").TLiteral<"auto">, import("@sinclair/typebox").TLiteral<"full_access">]>;
37
+ providerId: import("@sinclair/typebox").TString;
38
+ }>;
39
+ features: import("@sinclair/typebox").TObject<{
40
+ crossWorkspace: import("@sinclair/typebox").TBoolean;
41
+ workflows: import("@sinclair/typebox").TBoolean;
42
+ workspaces: import("@sinclair/typebox").TBoolean;
43
+ }>;
44
+ mcpServers: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
45
+ enabled: import("@sinclair/typebox").TBoolean;
46
+ transport: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"stdio">, import("@sinclair/typebox").TLiteral<"http">]>;
47
+ }>>;
48
+ models: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
49
+ contextWindow: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
50
+ defaultEffort: import("@sinclair/typebox").TString;
51
+ efforts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
52
+ name: import("@sinclair/typebox").TString;
53
+ serviceTiers: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
54
+ }>>;
55
+ network: import("@sinclair/typebox").TObject<{
56
+ allowedDomains: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
57
+ allowedLoopbackPorts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TInteger>;
58
+ allowedPorts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TInteger>;
59
+ allowLocalBinding: import("@sinclair/typebox").TBoolean;
60
+ deniedDomains: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
61
+ }>;
62
+ p2p: import("@sinclair/typebox").TObject<{
63
+ enableDirect: import("@sinclair/typebox").TBoolean;
64
+ enableIroh: import("@sinclair/typebox").TBoolean;
65
+ enableSsh: import("@sinclair/typebox").TBoolean;
66
+ exposeApi: import("@sinclair/typebox").TBoolean;
67
+ name: import("@sinclair/typebox").TString;
68
+ role: import("@sinclair/typebox").TString;
69
+ }>;
70
+ permissions: import("@sinclair/typebox").TObject<{
71
+ protectedPaths: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
72
+ }>;
73
+ presence: import("@sinclair/typebox").TObject<{
74
+ current: import("@sinclair/typebox").TString;
75
+ fallback: import("@sinclair/typebox").TString;
76
+ states: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
77
+ answerWaitMs: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
78
+ emoji: import("@sinclair/typebox").TString;
79
+ prompt: import("@sinclair/typebox").TString;
80
+ title: import("@sinclair/typebox").TString;
81
+ }>>;
82
+ }>;
83
+ providers: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
84
+ enabled: import("@sinclair/typebox").TBoolean;
85
+ models: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
86
+ defaultEffort: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
87
+ efforts: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
88
+ enabled: import("@sinclair/typebox").TBoolean;
89
+ id: import("@sinclair/typebox").TString;
90
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
91
+ serviceTiers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
92
+ }>>;
93
+ type: import("@sinclair/typebox").TString;
94
+ }>>;
95
+ settings: import("@sinclair/typebox").TObject<{
96
+ compactCompletedTurns: import("@sinclair/typebox").TBoolean;
97
+ completionChime: import("@sinclair/typebox").TBoolean;
98
+ inferenceMaxRetries: import("@sinclair/typebox").TInteger;
99
+ showReasoning: import("@sinclair/typebox").TBoolean;
100
+ showUsage: import("@sinclair/typebox").TBoolean;
101
+ toolResultRetentionDays: import("@sinclair/typebox").TInteger;
102
+ }>;
103
+ theme: import("@sinclair/typebox").TObject<{
104
+ accent: import("@sinclair/typebox").TString;
105
+ brand: import("@sinclair/typebox").TString;
106
+ error: import("@sinclair/typebox").TString;
107
+ primary: import("@sinclair/typebox").TString;
108
+ secondary: import("@sinclair/typebox").TString;
109
+ success: import("@sinclair/typebox").TString;
110
+ warning: import("@sinclair/typebox").TString;
111
+ }>;
112
+ workspace: import("@sinclair/typebox").TObject<{
113
+ keepCopiesOnArchive: import("@sinclair/typebox").TBoolean;
114
+ keepWorktreesOnArchive: import("@sinclair/typebox").TBoolean;
115
+ protectedSync: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
116
+ setupCommands: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
117
+ sync: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
118
+ }>;
119
+ }>;
45
120
  /**
46
121
  * The newest event cursor as of this snapshot. Opening the event stream
47
122
  * from here leaves no window for a change to fall between the two.
48
123
  */
49
- cursor: EventCursor;
50
- }
124
+ cursor: import("@sinclair/typebox").TString;
125
+ /** Current Happy Cloud authentication state. Absent on older compatible daemons. */
126
+ cloud: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
127
+ updatedAt: import("@sinclair/typebox").TInteger;
128
+ version: import("@sinclair/typebox").TString;
129
+ authorization: import("@sinclair/typebox").TNull;
130
+ environment: import("@sinclair/typebox").TNull;
131
+ error: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
132
+ code: import("@sinclair/typebox").TString;
133
+ message: import("@sinclair/typebox").TString;
134
+ }>, import("@sinclair/typebox").TNull]>;
135
+ status: import("@sinclair/typebox").TLiteral<"disconnected">;
136
+ user: import("@sinclair/typebox").TNull;
137
+ }>, import("@sinclair/typebox").TObject<{
138
+ updatedAt: import("@sinclair/typebox").TInteger;
139
+ version: import("@sinclair/typebox").TString;
140
+ authorization: import("@sinclair/typebox").TObject<{
141
+ expiresAt: import("@sinclair/typebox").TInteger;
142
+ url: import("@sinclair/typebox").TString;
143
+ }>;
144
+ environment: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"production">, import("@sinclair/typebox").TLiteral<"staging">]>;
145
+ error: import("@sinclair/typebox").TNull;
146
+ status: import("@sinclair/typebox").TLiteral<"authorizing">;
147
+ user: import("@sinclair/typebox").TNull;
148
+ }>, import("@sinclair/typebox").TObject<{
149
+ updatedAt: import("@sinclair/typebox").TInteger;
150
+ version: import("@sinclair/typebox").TString;
151
+ authorization: import("@sinclair/typebox").TNull;
152
+ environment: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"production">, import("@sinclair/typebox").TLiteral<"staging">]>;
153
+ error: import("@sinclair/typebox").TNull;
154
+ status: import("@sinclair/typebox").TLiteral<"connected">;
155
+ user: import("@sinclair/typebox").TObject<{
156
+ email: import("@sinclair/typebox").TString;
157
+ firstName: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
158
+ id: import("@sinclair/typebox").TString;
159
+ lastName: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
160
+ }>;
161
+ }>]>>;
162
+ /** Current Happy mobile connection state. Absent on older compatible daemons. */
163
+ happyIntegration: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
164
+ updatedAt: import("@sinclair/typebox").TInteger;
165
+ version: import("@sinclair/typebox").TString;
166
+ authorization: import("@sinclair/typebox").TNull;
167
+ configured: import("@sinclair/typebox").TBoolean;
168
+ error: import("@sinclair/typebox").TNull;
169
+ status: import("@sinclair/typebox").TLiteral<"disabled">;
170
+ }>, import("@sinclair/typebox").TObject<{
171
+ updatedAt: import("@sinclair/typebox").TInteger;
172
+ version: import("@sinclair/typebox").TString;
173
+ authorization: import("@sinclair/typebox").TNull;
174
+ configured: import("@sinclair/typebox").TBoolean;
175
+ error: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
176
+ code: import("@sinclair/typebox").TString;
177
+ message: import("@sinclair/typebox").TString;
178
+ }>, import("@sinclair/typebox").TNull]>;
179
+ status: import("@sinclair/typebox").TLiteral<"disconnected">;
180
+ }>, import("@sinclair/typebox").TObject<{
181
+ updatedAt: import("@sinclair/typebox").TInteger;
182
+ version: import("@sinclair/typebox").TString;
183
+ authorization: import("@sinclair/typebox").TObject<{
184
+ data: import("@sinclair/typebox").TString;
185
+ expiresAt: import("@sinclair/typebox").TInteger;
186
+ kind: import("@sinclair/typebox").TLiteral<"qr">;
187
+ }>;
188
+ configured: import("@sinclair/typebox").TLiteral<false>;
189
+ error: import("@sinclair/typebox").TNull;
190
+ status: import("@sinclair/typebox").TLiteral<"pairing">;
191
+ }>, import("@sinclair/typebox").TObject<{
192
+ updatedAt: import("@sinclair/typebox").TInteger;
193
+ version: import("@sinclair/typebox").TString;
194
+ authorization: import("@sinclair/typebox").TNull;
195
+ configured: import("@sinclair/typebox").TLiteral<true>;
196
+ error: import("@sinclair/typebox").TNull;
197
+ status: import("@sinclair/typebox").TLiteral<"connecting">;
198
+ }>, import("@sinclair/typebox").TObject<{
199
+ updatedAt: import("@sinclair/typebox").TInteger;
200
+ version: import("@sinclair/typebox").TString;
201
+ authorization: import("@sinclair/typebox").TNull;
202
+ configured: import("@sinclair/typebox").TLiteral<true>;
203
+ error: import("@sinclair/typebox").TNull;
204
+ status: import("@sinclair/typebox").TLiteral<"connected">;
205
+ }>, import("@sinclair/typebox").TObject<{
206
+ updatedAt: import("@sinclair/typebox").TInteger;
207
+ version: import("@sinclair/typebox").TString;
208
+ authorization: import("@sinclair/typebox").TNull;
209
+ configured: import("@sinclair/typebox").TBoolean;
210
+ error: import("@sinclair/typebox").TObject<{
211
+ code: import("@sinclair/typebox").TString;
212
+ message: import("@sinclair/typebox").TString;
213
+ }>;
214
+ status: import("@sinclair/typebox").TLiteral<"failed">;
215
+ }>]>>;
216
+ onboarding: import("@sinclair/typebox").TObject<{
217
+ completed: import("@sinclair/typebox").TBoolean;
218
+ steps: import("@sinclair/typebox").TObject<{
219
+ profile: import("@sinclair/typebox").TObject<{
220
+ done: import("@sinclair/typebox").TBoolean;
221
+ }>;
222
+ project: import("@sinclair/typebox").TObject<{
223
+ done: import("@sinclair/typebox").TBoolean;
224
+ }>;
225
+ providers: import("@sinclair/typebox").TObject<{
226
+ done: import("@sinclair/typebox").TBoolean;
227
+ signedIn: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
228
+ }>;
229
+ }>;
230
+ }>;
231
+ profile: import("@sinclair/typebox").TObject<{
232
+ email: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
233
+ name: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
234
+ photo: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
235
+ thumbhash: import("@sinclair/typebox").TString;
236
+ }>, import("@sinclair/typebox").TNull]>;
237
+ updatedAt: import("@sinclair/typebox").TInteger;
238
+ version: import("@sinclair/typebox").TString;
239
+ }>;
240
+ /** Every active project, in catalog order. */
241
+ projects: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
242
+ agents: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<Agent>>;
243
+ archivedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
244
+ avatar: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
245
+ kind: import("@sinclair/typebox").TLiteral<"image">;
246
+ source: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"user">, import("@sinclair/typebox").TLiteral<"generated">]>;
247
+ thumbhash: import("@sinclair/typebox").TString;
248
+ }>, import("@sinclair/typebox").TObject<{
249
+ kind: import("@sinclair/typebox").TLiteral<"home">;
250
+ }>]>, import("@sinclair/typebox").TNull]>;
251
+ compute: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
252
+ path: import("@sinclair/typebox").TString;
253
+ type: import("@sinclair/typebox").TLiteral<"host">;
254
+ }>, import("@sinclair/typebox").TObject<{
255
+ image: import("@sinclair/typebox").TString;
256
+ type: import("@sinclair/typebox").TLiteral<"docker">;
257
+ }>]>;
258
+ createdAt: import("@sinclair/typebox").TInteger;
259
+ defaultBranch: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
260
+ description: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
261
+ git: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
262
+ ahead: import("@sinclair/typebox").TInteger;
263
+ behind: import("@sinclair/typebox").TInteger;
264
+ branch: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
265
+ detached: import("@sinclair/typebox").TBoolean;
266
+ head: import("@sinclair/typebox").TString;
267
+ upstream: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
268
+ }>, import("@sinclair/typebox").TNull]>;
269
+ id: import("@sinclair/typebox").TString;
270
+ initialization: import("@sinclair/typebox").TObject<{
271
+ attempt: import("@sinclair/typebox").TInteger;
272
+ error: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
273
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"initializing">, import("@sinclair/typebox").TLiteral<"ready">, import("@sinclair/typebox").TLiteral<"failed">]>;
274
+ }>;
275
+ name: import("@sinclair/typebox").TString;
276
+ nameSource: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"folder">, import("@sinclair/typebox").TLiteral<"user">]>;
277
+ orderKey: import("@sinclair/typebox").TString;
278
+ remoteSource: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
279
+ kind: import("@sinclair/typebox").TLiteral<"github">;
280
+ repository: import("@sinclair/typebox").TString;
281
+ }>, import("@sinclair/typebox").TObject<{
282
+ kind: import("@sinclair/typebox").TLiteral<"git">;
283
+ url: import("@sinclair/typebox").TString;
284
+ }>]>, import("@sinclair/typebox").TNull]>;
285
+ settings: import("@sinclair/typebox").TObject<{
286
+ defaultWorkspaceCompute: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
287
+ type: import("@sinclair/typebox").TLiteral<"host">;
288
+ }>, import("@sinclair/typebox").TObject<{
289
+ image: import("@sinclair/typebox").TString;
290
+ type: import("@sinclair/typebox").TLiteral<"docker">;
291
+ }>]>;
292
+ }>;
293
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"active">, import("@sinclair/typebox").TLiteral<"archived">]>;
294
+ updatedAt: import("@sinclair/typebox").TInteger;
295
+ version: import("@sinclair/typebox").TString;
296
+ worktreeSupport: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"supported">, import("@sinclair/typebox").TLiteral<"unsupported">, import("@sinclair/typebox").TLiteral<"unknown">]>;
297
+ worktreeUnsupportedReason: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
298
+ }>>;
299
+ /** Current sharing state. Absent on older compatible protocol-22 daemons. */
300
+ sharing: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
301
+ updatedAt: import("@sinclair/typebox").TInteger;
302
+ version: import("@sinclair/typebox").TString;
303
+ status: import("@sinclair/typebox").TLiteral<"unenrolled">;
304
+ }>, import("@sinclair/typebox").TObject<{
305
+ updatedAt: import("@sinclair/typebox").TInteger;
306
+ version: import("@sinclair/typebox").TString;
307
+ connection: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"connecting">, import("@sinclair/typebox").TLiteral<"connected">, import("@sinclair/typebox").TLiteral<"disconnected">]>;
308
+ contacts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
309
+ identity: import("@sinclair/typebox").TString;
310
+ profile: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
311
+ email: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
312
+ name: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
313
+ photo: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
314
+ thumbhash: import("@sinclair/typebox").TString;
315
+ }>, import("@sinclair/typebox").TNull]>;
316
+ updatedAt: import("@sinclair/typebox").TInteger;
317
+ version: import("@sinclair/typebox").TString;
318
+ }>, import("@sinclair/typebox").TNull]>;
319
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"active">, import("@sinclair/typebox").TLiteral<"removing">]>;
320
+ }>>;
321
+ identity: import("@sinclair/typebox").TString;
322
+ incomingRequests: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
323
+ id: import("@sinclair/typebox").TString;
324
+ identity: import("@sinclair/typebox").TString;
325
+ profile: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
326
+ email: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
327
+ name: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
328
+ photo: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
329
+ thumbhash: import("@sinclair/typebox").TString;
330
+ }>, import("@sinclair/typebox").TNull]>;
331
+ updatedAt: import("@sinclair/typebox").TInteger;
332
+ version: import("@sinclair/typebox").TString;
333
+ }>, import("@sinclair/typebox").TNull]>;
334
+ }>>;
335
+ outgoingRequests: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
336
+ id: import("@sinclair/typebox").TString;
337
+ identity: import("@sinclair/typebox").TString;
338
+ }>>;
339
+ status: import("@sinclair/typebox").TLiteral<"enrolled">;
340
+ }>]>>;
341
+ /** Each project's root workspace and the workspaces directly under it. */
342
+ workspaces: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
343
+ agents: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<Agent>>;
344
+ archivedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
345
+ base: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
346
+ commit: import("@sinclair/typebox").TString;
347
+ ref: import("@sinclair/typebox").TString;
348
+ }>, import("@sinclair/typebox").TNull]>;
349
+ compute: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
350
+ path: import("@sinclair/typebox").TString;
351
+ type: import("@sinclair/typebox").TLiteral<"host">;
352
+ }>, import("@sinclair/typebox").TObject<{
353
+ image: import("@sinclair/typebox").TString;
354
+ type: import("@sinclair/typebox").TLiteral<"docker">;
355
+ }>]>;
356
+ createdAt: import("@sinclair/typebox").TInteger;
357
+ creatorAgentId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
358
+ git: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
359
+ ahead: import("@sinclair/typebox").TInteger;
360
+ behind: import("@sinclair/typebox").TInteger;
361
+ branch: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
362
+ detached: import("@sinclair/typebox").TBoolean;
363
+ head: import("@sinclair/typebox").TString;
364
+ upstream: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
365
+ }>, import("@sinclair/typebox").TNull]>;
366
+ id: import("@sinclair/typebox").TString;
367
+ initialization: import("@sinclair/typebox").TObject<{
368
+ attempt: import("@sinclair/typebox").TInteger;
369
+ error: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
370
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"initializing">, import("@sinclair/typebox").TLiteral<"ready">, import("@sinclair/typebox").TLiteral<"failed">]>;
371
+ }>;
372
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"root">, import("@sinclair/typebox").TLiteral<"worktree">, import("@sinclair/typebox").TLiteral<"copy">]>;
373
+ name: import("@sinclair/typebox").TString;
374
+ nameSource: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"user">, import("@sinclair/typebox").TLiteral<"generated">]>;
375
+ orderKey: import("@sinclair/typebox").TString;
376
+ parentId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
377
+ projectId: import("@sinclair/typebox").TString;
378
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"active">, import("@sinclair/typebox").TLiteral<"archiving">, import("@sinclair/typebox").TLiteral<"archived">]>;
379
+ updatedAt: import("@sinclair/typebox").TInteger;
380
+ version: import("@sinclair/typebox").TString;
381
+ }>>;
382
+ }>;
383
+ export type DesktopBootstrapResponse = Static<typeof desktopBootstrapResponseSchema>;
51
384
  //# sourceMappingURL=bootstrap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../sources/protocol/bootstrap.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E,OAAO,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC/F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,WAAW,sBACb,SAAQ,kBAAkB,EAAE,iBAAiB,EAAE,aAAa,EAAE,kBAAkB;IAChF,gFAAgF;IAChF,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,0FAA0F;IAC1F,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAChC,mFAAmF;IACnF,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;CACvB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,wBAAwB;IACrC,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,eAAe,CAAC;IAC5B,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,8CAA8C;IAC9C,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,0EAA0E;IAC1E,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB;;;OAGG;IACH,MAAM,EAAE,WAAW,CAAC;CACvB"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../sources/protocol/bootstrap.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E,OAAO,EAAE,KAAK,MAAM,EAAQ,MAAM,mBAAmB,CAAC;AAEtD,OAAO,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE/F,OAAO,EAAE,KAAK,WAAW,EAAqB,MAAM,aAAa,CAAC;AAGlE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAIxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGrD;;;;;;GAMG;AACH,MAAM,WAAW,sBACb,SAAQ,kBAAkB,EAAE,iBAAiB,EAAE,aAAa,EAAE,kBAAkB;IAChF,gFAAgF;IAChF,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,0FAA0F;IAC1F,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAChC,mFAAmF;IACnF,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;CACvB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEvC;;;OAGG;;IAEH,oFAAoF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEpF,iFAAiF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIjF,8CAA8C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAE9C,6EAA6E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAE7E,0EAA0E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE5E,CAAC;AACH,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,OAAO,8BAA8B,CAAC,CAAC"}
@@ -1,3 +1,38 @@
1
1
  /** Bootstrap: one request that gets a desktop client on screen instantly. */
2
- export {};
2
+ import { Type } from "@sinclair/typebox";
3
+ import { cloudSchema } from "./cloud.js";
4
+ import { eventCursorSchema } from "./common.js";
5
+ import { daemonConfigSchema, onboardingStateSchema } from "./daemon.js";
6
+ import { happyIntegrationSchema } from "./integrations.js";
7
+ import { profileSchema } from "./profile.js";
8
+ import { projectSchema } from "./projects.js";
9
+ import { sharingSchema } from "./sharing.js";
10
+ import { workspaceSchema } from "./workspaces.js";
11
+ /**
12
+ * `GET /v0/bootstrap/desktop`
13
+ *
14
+ * A composition of other endpoints' objects; nothing here has a shape of its
15
+ * own. There is no separate global agent list: each included project and
16
+ * workspace carries its own ordered top-level agents.
17
+ */
18
+ export const desktopBootstrapResponseSchema = Type.Object({
19
+ config: daemonConfigSchema,
20
+ /**
21
+ * The newest event cursor as of this snapshot. Opening the event stream
22
+ * from here leaves no window for a change to fall between the two.
23
+ */
24
+ cursor: eventCursorSchema,
25
+ /** Current Happy Cloud authentication state. Absent on older compatible daemons. */
26
+ cloud: Type.Optional(cloudSchema),
27
+ /** Current Happy mobile connection state. Absent on older compatible daemons. */
28
+ happyIntegration: Type.Optional(happyIntegrationSchema),
29
+ onboarding: onboardingStateSchema,
30
+ profile: profileSchema,
31
+ /** Every active project, in catalog order. */
32
+ projects: Type.Array(projectSchema),
33
+ /** Current sharing state. Absent on older compatible protocol-22 daemons. */
34
+ sharing: Type.Optional(sharingSchema),
35
+ /** Each project's root workspace and the workspaces directly under it. */
36
+ workspaces: Type.Array(workspaceSchema),
37
+ });
3
38
  //# sourceMappingURL=bootstrap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../sources/protocol/bootstrap.ts"],"names":[],"mappings":"AAAA,6EAA6E"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../sources/protocol/bootstrap.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E,OAAO,EAAe,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAoB,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAoBlD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,IAAI,CAAC,MAAM,CAAC;IACtD,MAAM,EAAE,kBAAkB;IAC1B;;;OAGG;IACH,MAAM,EAAE,iBAAiB;IACzB,oFAAoF;IACpF,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;IACjC,iFAAiF;IACjF,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IACvD,UAAU,EAAE,qBAAqB;IACjC,OAAO,EAAE,aAAa;IACtB,8CAA8C;IAC9C,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;IACnC,6EAA6E;IAC7E,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;IACrC,0EAA0E;IAC1E,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;CAC1C,CAAC,CAAC"}