@slopus/happy-agent-client 0.0.32 → 0.0.33

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.
@@ -29,6 +29,60 @@ export interface AgentBootstrapResponse extends AgentDraftResponse, AgentModeRes
29
29
  * workspace carries its own ordered top-level agents.
30
30
  */
31
31
  export declare const desktopBootstrapResponseSchema: import("@sinclair/typebox").TObject<{
32
+ /** Every bot, archived ones included. Absent on older compatible daemons. */
33
+ bots: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
34
+ agent: import("@sinclair/typebox").TObject<{
35
+ archivedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
36
+ canSendMessages: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
37
+ createdAt: import("@sinclair/typebox").TInteger;
38
+ id: import("@sinclair/typebox").TString;
39
+ lastCursor: import("@sinclair/typebox").TString;
40
+ managedByAnotherAgent: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
41
+ orderKey: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
42
+ parentAgentId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
43
+ pendingQuestionId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
44
+ processes: import("@sinclair/typebox").TObject<{
45
+ running: import("@sinclair/typebox").TInteger;
46
+ }>;
47
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"idle">, import("@sinclair/typebox").TLiteral<"thinking">, import("@sinclair/typebox").TLiteral<"working">, import("@sinclair/typebox").TLiteral<"generating_tools">, import("@sinclair/typebox").TLiteral<"running_tools">]>;
48
+ subagents: import("@sinclair/typebox").TObject<{
49
+ running: import("@sinclair/typebox").TInteger;
50
+ total: import("@sinclair/typebox").TInteger;
51
+ }>;
52
+ title: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
53
+ titleStatus: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"idle">, import("@sinclair/typebox").TLiteral<"ready">]>;
54
+ unread: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
55
+ reason: import("@sinclair/typebox").TString;
56
+ since: import("@sinclair/typebox").TInteger;
57
+ }>, import("@sinclair/typebox").TNull]>;
58
+ updatedAt: import("@sinclair/typebox").TInteger;
59
+ userVisible: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
60
+ version: import("@sinclair/typebox").TString;
61
+ workspaceId: import("@sinclair/typebox").TString;
62
+ }>;
63
+ archivedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
64
+ avatar: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
65
+ kind: import("@sinclair/typebox").TLiteral<"image">;
66
+ source: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"user">, import("@sinclair/typebox").TLiteral<"generated">]>;
67
+ thumbhash: import("@sinclair/typebox").TString;
68
+ }>, import("@sinclair/typebox").TNull]>;
69
+ compute: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
70
+ path: import("@sinclair/typebox").TString;
71
+ type: import("@sinclair/typebox").TLiteral<"host">;
72
+ }>, import("@sinclair/typebox").TObject<{
73
+ image: import("@sinclair/typebox").TString;
74
+ type: import("@sinclair/typebox").TLiteral<"docker">;
75
+ }>]>;
76
+ createdAt: import("@sinclair/typebox").TInteger;
77
+ id: import("@sinclair/typebox").TString;
78
+ name: import("@sinclair/typebox").TString;
79
+ orderKey: import("@sinclair/typebox").TString;
80
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"active">, import("@sinclair/typebox").TLiteral<"archived">]>;
81
+ updatedAt: import("@sinclair/typebox").TInteger;
82
+ username: import("@sinclair/typebox").TString;
83
+ version: import("@sinclair/typebox").TString;
84
+ workspaceId: import("@sinclair/typebox").TString;
85
+ }>>>;
32
86
  config: import("@sinclair/typebox").TObject<{
33
87
  defaults: import("@sinclair/typebox").TObject<{
34
88
  effort: import("@sinclair/typebox").TString;
@@ -239,7 +293,35 @@ export declare const desktopBootstrapResponseSchema: import("@sinclair/typebox")
239
293
  }>;
240
294
  /** Every active project, in catalog order. */
241
295
  projects: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
242
- agents: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<Agent>>;
296
+ agents: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
297
+ archivedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
298
+ canSendMessages: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
299
+ createdAt: import("@sinclair/typebox").TInteger;
300
+ id: import("@sinclair/typebox").TString;
301
+ lastCursor: import("@sinclair/typebox").TString;
302
+ managedByAnotherAgent: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
303
+ orderKey: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
304
+ parentAgentId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
305
+ pendingQuestionId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
306
+ processes: import("@sinclair/typebox").TObject<{
307
+ running: import("@sinclair/typebox").TInteger;
308
+ }>;
309
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"idle">, import("@sinclair/typebox").TLiteral<"thinking">, import("@sinclair/typebox").TLiteral<"working">, import("@sinclair/typebox").TLiteral<"generating_tools">, import("@sinclair/typebox").TLiteral<"running_tools">]>;
310
+ subagents: import("@sinclair/typebox").TObject<{
311
+ running: import("@sinclair/typebox").TInteger;
312
+ total: import("@sinclair/typebox").TInteger;
313
+ }>;
314
+ title: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
315
+ titleStatus: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"idle">, import("@sinclair/typebox").TLiteral<"ready">]>;
316
+ unread: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
317
+ reason: import("@sinclair/typebox").TString;
318
+ since: import("@sinclair/typebox").TInteger;
319
+ }>, import("@sinclair/typebox").TNull]>;
320
+ updatedAt: import("@sinclair/typebox").TInteger;
321
+ userVisible: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
322
+ version: import("@sinclair/typebox").TString;
323
+ workspaceId: import("@sinclair/typebox").TString;
324
+ }>>;
243
325
  archivedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
244
326
  avatar: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
245
327
  kind: import("@sinclair/typebox").TLiteral<"image">;
@@ -340,12 +422,41 @@ export declare const desktopBootstrapResponseSchema: import("@sinclair/typebox")
340
422
  }>]>>;
341
423
  /** Each project's root workspace and the workspaces directly under it. */
342
424
  workspaces: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
343
- agents: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<Agent>>;
425
+ agents: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
426
+ archivedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
427
+ canSendMessages: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
428
+ createdAt: import("@sinclair/typebox").TInteger;
429
+ id: import("@sinclair/typebox").TString;
430
+ lastCursor: import("@sinclair/typebox").TString;
431
+ managedByAnotherAgent: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
432
+ orderKey: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
433
+ parentAgentId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
434
+ pendingQuestionId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
435
+ processes: import("@sinclair/typebox").TObject<{
436
+ running: import("@sinclair/typebox").TInteger;
437
+ }>;
438
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"idle">, import("@sinclair/typebox").TLiteral<"thinking">, import("@sinclair/typebox").TLiteral<"working">, import("@sinclair/typebox").TLiteral<"generating_tools">, import("@sinclair/typebox").TLiteral<"running_tools">]>;
439
+ subagents: import("@sinclair/typebox").TObject<{
440
+ running: import("@sinclair/typebox").TInteger;
441
+ total: import("@sinclair/typebox").TInteger;
442
+ }>;
443
+ title: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
444
+ titleStatus: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"idle">, import("@sinclair/typebox").TLiteral<"ready">]>;
445
+ unread: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
446
+ reason: import("@sinclair/typebox").TString;
447
+ since: import("@sinclair/typebox").TInteger;
448
+ }>, import("@sinclair/typebox").TNull]>;
449
+ updatedAt: import("@sinclair/typebox").TInteger;
450
+ userVisible: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
451
+ version: import("@sinclair/typebox").TString;
452
+ workspaceId: import("@sinclair/typebox").TString;
453
+ }>>;
344
454
  archivedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
345
455
  base: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
346
456
  commit: import("@sinclair/typebox").TString;
347
457
  ref: import("@sinclair/typebox").TString;
348
458
  }>, import("@sinclair/typebox").TNull]>;
459
+ botId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
349
460
  compute: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
350
461
  path: import("@sinclair/typebox").TString;
351
462
  type: import("@sinclair/typebox").TLiteral<"host">;
@@ -369,12 +480,12 @@ export declare const desktopBootstrapResponseSchema: import("@sinclair/typebox")
369
480
  error: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
370
481
  status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"initializing">, import("@sinclair/typebox").TLiteral<"ready">, import("@sinclair/typebox").TLiteral<"failed">]>;
371
482
  }>;
372
- kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"root">, import("@sinclair/typebox").TLiteral<"worktree">, import("@sinclair/typebox").TLiteral<"copy">]>;
483
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"root">, import("@sinclair/typebox").TLiteral<"worktree">, import("@sinclair/typebox").TLiteral<"copy">, import("@sinclair/typebox").TLiteral<"bot">]>;
373
484
  name: import("@sinclair/typebox").TString;
374
485
  nameSource: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"user">, import("@sinclair/typebox").TLiteral<"generated">]>;
375
486
  orderKey: import("@sinclair/typebox").TString;
376
487
  parentId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
377
- projectId: import("@sinclair/typebox").TString;
488
+ projectId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
378
489
  status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"active">, import("@sinclair/typebox").TLiteral<"archiving">, import("@sinclair/typebox").TLiteral<"archived">]>;
379
490
  updatedAt: import("@sinclair/typebox").TInteger;
380
491
  version: import("@sinclair/typebox").TString;
@@ -1 +1 @@
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
+ {"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;AAG/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;IACvC,6EAA6E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAG7E;;;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,5 +1,6 @@
1
1
  /** Bootstrap: one request that gets a desktop client on screen instantly. */
2
2
  import { Type } from "@sinclair/typebox";
3
+ import { botSchema } from "./bots.js";
3
4
  import { cloudSchema } from "./cloud.js";
4
5
  import { eventCursorSchema } from "./common.js";
5
6
  import { daemonConfigSchema, onboardingStateSchema } from "./daemon.js";
@@ -16,6 +17,8 @@ import { workspaceSchema } from "./workspaces.js";
16
17
  * workspace carries its own ordered top-level agents.
17
18
  */
18
19
  export const desktopBootstrapResponseSchema = Type.Object({
20
+ /** Every bot, archived ones included. Absent on older compatible daemons. */
21
+ bots: Type.Optional(Type.Array(botSchema)),
19
22
  config: daemonConfigSchema,
20
23
  /**
21
24
  * The newest event cursor as of this snapshot. Opening the event stream
@@ -1 +1 @@
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"}
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,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,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,6EAA6E;IAC7E,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1C,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"}
@@ -0,0 +1,235 @@
1
+ /** Bots: persistent single-conversation assistants with a dedicated workspace. */
2
+ import { type Static } from "@sinclair/typebox";
3
+ /** A bot picture. Its bytes are served separately from the bot resource. */
4
+ export declare const botAvatarSchema: import("@sinclair/typebox").TObject<{
5
+ kind: import("@sinclair/typebox").TLiteral<"image">;
6
+ source: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"user">, import("@sinclair/typebox").TLiteral<"generated">]>;
7
+ thumbhash: import("@sinclair/typebox").TString;
8
+ }>;
9
+ export type BotAvatar = Static<typeof botAvatarSchema>;
10
+ /** A human display name: nonblank, bounded, and free of ASCII control characters. */
11
+ export declare const botNameSchema: import("@sinclair/typebox").TString;
12
+ export type BotName = Static<typeof botNameSchema>;
13
+ /** The immutable local folder name chosen when a bot is created. */
14
+ export declare const botUsernameSchema: import("@sinclair/typebox").TString;
15
+ export type BotUsername = Static<typeof botUsernameSchema>;
16
+ /** A bot and its one independently versioned agent. */
17
+ export declare const botSchema: import("@sinclair/typebox").TObject<{
18
+ /** The bot's one agent, embedded in full for list rendering. */
19
+ agent: import("@sinclair/typebox").TObject<{
20
+ archivedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
21
+ canSendMessages: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
22
+ createdAt: import("@sinclair/typebox").TInteger;
23
+ id: import("@sinclair/typebox").TString;
24
+ lastCursor: import("@sinclair/typebox").TString;
25
+ managedByAnotherAgent: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
26
+ orderKey: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
27
+ parentAgentId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
28
+ pendingQuestionId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
29
+ processes: import("@sinclair/typebox").TObject<{
30
+ running: import("@sinclair/typebox").TInteger;
31
+ }>;
32
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"idle">, import("@sinclair/typebox").TLiteral<"thinking">, import("@sinclair/typebox").TLiteral<"working">, import("@sinclair/typebox").TLiteral<"generating_tools">, import("@sinclair/typebox").TLiteral<"running_tools">]>;
33
+ subagents: import("@sinclair/typebox").TObject<{
34
+ running: import("@sinclair/typebox").TInteger;
35
+ total: import("@sinclair/typebox").TInteger;
36
+ }>;
37
+ title: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
38
+ titleStatus: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"idle">, import("@sinclair/typebox").TLiteral<"ready">]>;
39
+ unread: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
40
+ reason: import("@sinclair/typebox").TString;
41
+ since: import("@sinclair/typebox").TInteger;
42
+ }>, import("@sinclair/typebox").TNull]>;
43
+ updatedAt: import("@sinclair/typebox").TInteger;
44
+ userVisible: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
45
+ version: import("@sinclair/typebox").TString;
46
+ workspaceId: import("@sinclair/typebox").TString;
47
+ }>;
48
+ archivedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
49
+ avatar: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
50
+ kind: import("@sinclair/typebox").TLiteral<"image">;
51
+ source: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"user">, import("@sinclair/typebox").TLiteral<"generated">]>;
52
+ thumbhash: import("@sinclair/typebox").TString;
53
+ }>, import("@sinclair/typebox").TNull]>;
54
+ /** Mirrors the dedicated workspace's compute. */
55
+ compute: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
56
+ path: import("@sinclair/typebox").TString;
57
+ type: import("@sinclair/typebox").TLiteral<"host">;
58
+ }>, import("@sinclair/typebox").TObject<{
59
+ image: import("@sinclair/typebox").TString;
60
+ type: import("@sinclair/typebox").TLiteral<"docker">;
61
+ }>]>;
62
+ createdAt: import("@sinclair/typebox").TInteger;
63
+ id: import("@sinclair/typebox").TString;
64
+ name: import("@sinclair/typebox").TString;
65
+ /** An opaque catalog sort key. */
66
+ orderKey: import("@sinclair/typebox").TString;
67
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"active">, import("@sinclair/typebox").TLiteral<"archived">]>;
68
+ updatedAt: import("@sinclair/typebox").TInteger;
69
+ /** Immutable local snake_case name and folder name. */
70
+ username: import("@sinclair/typebox").TString;
71
+ version: import("@sinclair/typebox").TString;
72
+ /** The bot's dedicated workspace, distinct from the bot and agent IDs. */
73
+ workspaceId: import("@sinclair/typebox").TString;
74
+ }>;
75
+ export type Bot = Static<typeof botSchema>;
76
+ /** `GET /v0/bots` */
77
+ export declare const botListResponseSchema: import("@sinclair/typebox").TObject<{
78
+ bots: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
79
+ /** The bot's one agent, embedded in full for list rendering. */
80
+ agent: import("@sinclair/typebox").TObject<{
81
+ archivedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
82
+ canSendMessages: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
83
+ createdAt: import("@sinclair/typebox").TInteger;
84
+ id: import("@sinclair/typebox").TString;
85
+ lastCursor: import("@sinclair/typebox").TString;
86
+ managedByAnotherAgent: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
87
+ orderKey: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
88
+ parentAgentId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
89
+ pendingQuestionId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
90
+ processes: import("@sinclair/typebox").TObject<{
91
+ running: import("@sinclair/typebox").TInteger;
92
+ }>;
93
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"idle">, import("@sinclair/typebox").TLiteral<"thinking">, import("@sinclair/typebox").TLiteral<"working">, import("@sinclair/typebox").TLiteral<"generating_tools">, import("@sinclair/typebox").TLiteral<"running_tools">]>;
94
+ subagents: import("@sinclair/typebox").TObject<{
95
+ running: import("@sinclair/typebox").TInteger;
96
+ total: import("@sinclair/typebox").TInteger;
97
+ }>;
98
+ title: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
99
+ titleStatus: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"idle">, import("@sinclair/typebox").TLiteral<"ready">]>;
100
+ unread: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
101
+ reason: import("@sinclair/typebox").TString;
102
+ since: import("@sinclair/typebox").TInteger;
103
+ }>, import("@sinclair/typebox").TNull]>;
104
+ updatedAt: import("@sinclair/typebox").TInteger;
105
+ userVisible: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
106
+ version: import("@sinclair/typebox").TString;
107
+ workspaceId: import("@sinclair/typebox").TString;
108
+ }>;
109
+ archivedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
110
+ avatar: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
111
+ kind: import("@sinclair/typebox").TLiteral<"image">;
112
+ source: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"user">, import("@sinclair/typebox").TLiteral<"generated">]>;
113
+ thumbhash: import("@sinclair/typebox").TString;
114
+ }>, import("@sinclair/typebox").TNull]>;
115
+ /** Mirrors the dedicated workspace's compute. */
116
+ compute: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
117
+ path: import("@sinclair/typebox").TString;
118
+ type: import("@sinclair/typebox").TLiteral<"host">;
119
+ }>, import("@sinclair/typebox").TObject<{
120
+ image: import("@sinclair/typebox").TString;
121
+ type: import("@sinclair/typebox").TLiteral<"docker">;
122
+ }>]>;
123
+ createdAt: import("@sinclair/typebox").TInteger;
124
+ id: import("@sinclair/typebox").TString;
125
+ name: import("@sinclair/typebox").TString;
126
+ /** An opaque catalog sort key. */
127
+ orderKey: import("@sinclair/typebox").TString;
128
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"active">, import("@sinclair/typebox").TLiteral<"archived">]>;
129
+ updatedAt: import("@sinclair/typebox").TInteger;
130
+ /** Immutable local snake_case name and folder name. */
131
+ username: import("@sinclair/typebox").TString;
132
+ version: import("@sinclair/typebox").TString;
133
+ /** The bot's dedicated workspace, distinct from the bot and agent IDs. */
134
+ workspaceId: import("@sinclair/typebox").TString;
135
+ }>>;
136
+ }>;
137
+ export type BotListResponse = Static<typeof botListResponseSchema>;
138
+ /** Every single-bot JSON route answers with this. */
139
+ export declare const botResponseSchema: import("@sinclair/typebox").TObject<{
140
+ bot: import("@sinclair/typebox").TObject<{
141
+ /** The bot's one agent, embedded in full for list rendering. */
142
+ agent: import("@sinclair/typebox").TObject<{
143
+ archivedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
144
+ canSendMessages: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
145
+ createdAt: import("@sinclair/typebox").TInteger;
146
+ id: import("@sinclair/typebox").TString;
147
+ lastCursor: import("@sinclair/typebox").TString;
148
+ managedByAnotherAgent: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
149
+ orderKey: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
150
+ parentAgentId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
151
+ pendingQuestionId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
152
+ processes: import("@sinclair/typebox").TObject<{
153
+ running: import("@sinclair/typebox").TInteger;
154
+ }>;
155
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"idle">, import("@sinclair/typebox").TLiteral<"thinking">, import("@sinclair/typebox").TLiteral<"working">, import("@sinclair/typebox").TLiteral<"generating_tools">, import("@sinclair/typebox").TLiteral<"running_tools">]>;
156
+ subagents: import("@sinclair/typebox").TObject<{
157
+ running: import("@sinclair/typebox").TInteger;
158
+ total: import("@sinclair/typebox").TInteger;
159
+ }>;
160
+ title: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
161
+ titleStatus: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"idle">, import("@sinclair/typebox").TLiteral<"ready">]>;
162
+ unread: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
163
+ reason: import("@sinclair/typebox").TString;
164
+ since: import("@sinclair/typebox").TInteger;
165
+ }>, import("@sinclair/typebox").TNull]>;
166
+ updatedAt: import("@sinclair/typebox").TInteger;
167
+ userVisible: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
168
+ version: import("@sinclair/typebox").TString;
169
+ workspaceId: import("@sinclair/typebox").TString;
170
+ }>;
171
+ archivedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
172
+ avatar: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
173
+ kind: import("@sinclair/typebox").TLiteral<"image">;
174
+ source: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"user">, import("@sinclair/typebox").TLiteral<"generated">]>;
175
+ thumbhash: import("@sinclair/typebox").TString;
176
+ }>, import("@sinclair/typebox").TNull]>;
177
+ /** Mirrors the dedicated workspace's compute. */
178
+ compute: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
179
+ path: import("@sinclair/typebox").TString;
180
+ type: import("@sinclair/typebox").TLiteral<"host">;
181
+ }>, import("@sinclair/typebox").TObject<{
182
+ image: import("@sinclair/typebox").TString;
183
+ type: import("@sinclair/typebox").TLiteral<"docker">;
184
+ }>]>;
185
+ createdAt: import("@sinclair/typebox").TInteger;
186
+ id: import("@sinclair/typebox").TString;
187
+ name: import("@sinclair/typebox").TString;
188
+ /** An opaque catalog sort key. */
189
+ orderKey: import("@sinclair/typebox").TString;
190
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"active">, import("@sinclair/typebox").TLiteral<"archived">]>;
191
+ updatedAt: import("@sinclair/typebox").TInteger;
192
+ /** Immutable local snake_case name and folder name. */
193
+ username: import("@sinclair/typebox").TString;
194
+ version: import("@sinclair/typebox").TString;
195
+ /** The bot's dedicated workspace, distinct from the bot and agent IDs. */
196
+ workspaceId: import("@sinclair/typebox").TString;
197
+ }>;
198
+ }>;
199
+ export type BotResponse = Static<typeof botResponseSchema>;
200
+ /** `POST /v0/bots` */
201
+ export declare const createBotRequestSchema: import("@sinclair/typebox").TObject<{
202
+ /** Optional client-supplied ID, which makes creation safely retryable. */
203
+ id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
204
+ mutationId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
205
+ name: import("@sinclair/typebox").TString;
206
+ /** Omitted, the daemon derives a unique username from `name`. */
207
+ username: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
208
+ }>;
209
+ export type CreateBotRequest = Static<typeof createBotRequestSchema>;
210
+ /** `PATCH /v0/bots/:botId` — the immutable username is deliberately absent. */
211
+ export declare const renameBotRequestSchema: import("@sinclair/typebox").TObject<{
212
+ mutationId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
213
+ name: import("@sinclair/typebox").TString;
214
+ /** Explicitly forbidden even though request objects tolerate future additive fields. */
215
+ username: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNever>;
216
+ }>;
217
+ export type RenameBotRequest = Static<typeof renameBotRequestSchema>;
218
+ /** `POST /v0/bots/:botId/archive` */
219
+ export declare const archiveBotRequestSchema: import("@sinclair/typebox").TObject<{
220
+ mutationId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
221
+ }>;
222
+ export type ArchiveBotRequest = Static<typeof archiveBotRequestSchema>;
223
+ /** `POST /v0/bots/:botId/unarchive` */
224
+ export declare const unarchiveBotRequestSchema: import("@sinclair/typebox").TObject<{
225
+ mutationId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
226
+ }>;
227
+ export type UnarchiveBotRequest = Static<typeof unarchiveBotRequestSchema>;
228
+ /** `POST /v0/bots/:botId/reorder` */
229
+ export declare const reorderBotRequestSchema: import("@sinclair/typebox").TObject<{
230
+ /** The bot to place this one after, or `null` to move it first. */
231
+ afterId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
232
+ mutationId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
233
+ }>;
234
+ export type ReorderBotRequest = Static<typeof reorderBotRequestSchema>;
235
+ //# sourceMappingURL=bots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bots.d.ts","sourceRoot":"","sources":["../../sources/protocol/bots.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAElF,OAAO,EAAE,KAAK,MAAM,EAAQ,MAAM,mBAAmB,CAAC;AAYtD,4EAA4E;AAC5E,eAAO,MAAM,eAAe;;;;EAI1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC;AAEvD,qFAAqF;AACrF,eAAO,MAAM,aAAa,qCAIxB,CAAC;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC;AAEnD,oEAAoE;AACpE,eAAO,MAAM,iBAAiB,qCAI5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE3D,uDAAuD;AACvD,eAAO,MAAM,SAAS;IAClB,gEAAgE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIhE,iDAAiD;;;;;;;;;;;IAKjD,kCAAkC;;;;IAIlC,uDAAuD;;;IAGvD,0EAA0E;;EAE5E,CAAC;AACH,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,SAAS,CAAC,CAAC;AAE3C,qBAAqB;AACrB,eAAO,MAAM,qBAAqB;;QAtB9B,gEAAgE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAIhE,iDAAiD;;;;;;;;;;;QAKjD,kCAAkC;;;;QAIlC,uDAAuD;;;QAGvD,0EAA0E;;;EAMG,CAAC;AAClF,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEnE,qDAAqD;AACrD,eAAO,MAAM,iBAAiB;;QA1B1B,gEAAgE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAIhE,iDAAiD;;;;;;;;;;;QAKjD,kCAAkC;;;;QAIlC,uDAAuD;;;QAGvD,0EAA0E;;;EAUd,CAAC;AACjE,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE3D,sBAAsB;AACtB,eAAO,MAAM,sBAAsB;IAC/B,0EAA0E;;;;IAI1E,iEAAiE;;EAEnE,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAErE,+EAA+E;AAC/E,eAAO,MAAM,sBAAsB;;;IAG/B,wFAAwF;;EAE1F,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAErE,qCAAqC;AACrC,eAAO,MAAM,uBAAuB;;EAElC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAEvE,uCAAuC;AACvC,eAAO,MAAM,yBAAyB;;EAEpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE3E,qCAAqC;AACrC,eAAO,MAAM,uBAAuB;IAChC,mEAAmE;;;EAGrE,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
@@ -0,0 +1,78 @@
1
+ /** Bots: persistent single-conversation assistants with a dedicated workspace. */
2
+ import { Type } from "@sinclair/typebox";
3
+ import { agentSchema } from "./agents.js";
4
+ import { computeSchema, cuid2Schema, mutationIdSchema, Nullable, resourceVersionSchema, timestampSchema, } from "./common.js";
5
+ /** A bot picture. Its bytes are served separately from the bot resource. */
6
+ export const botAvatarSchema = Type.Object({
7
+ kind: Type.Literal("image"),
8
+ source: Type.Union([Type.Literal("user"), Type.Literal("generated")]),
9
+ thumbhash: Type.String(),
10
+ });
11
+ /** A human display name: nonblank, bounded, and free of ASCII control characters. */
12
+ export const botNameSchema = Type.String({
13
+ maxLength: 256,
14
+ minLength: 1,
15
+ pattern: "^(?=.*\\S)[^\\x00-\\x1f\\x7f]+$",
16
+ });
17
+ /** The immutable local folder name chosen when a bot is created. */
18
+ export const botUsernameSchema = Type.String({
19
+ maxLength: 64,
20
+ minLength: 1,
21
+ pattern: "^[a-z][a-z0-9_]{0,63}$",
22
+ });
23
+ /** A bot and its one independently versioned agent. */
24
+ export const botSchema = Type.Object({
25
+ /** The bot's one agent, embedded in full for list rendering. */
26
+ agent: agentSchema,
27
+ archivedAt: Nullable(timestampSchema),
28
+ avatar: Nullable(botAvatarSchema),
29
+ /** Mirrors the dedicated workspace's compute. */
30
+ compute: computeSchema,
31
+ createdAt: timestampSchema,
32
+ id: cuid2Schema,
33
+ name: botNameSchema,
34
+ /** An opaque catalog sort key. */
35
+ orderKey: Type.String(),
36
+ status: Type.Union([Type.Literal("active"), Type.Literal("archived")]),
37
+ updatedAt: timestampSchema,
38
+ /** Immutable local snake_case name and folder name. */
39
+ username: botUsernameSchema,
40
+ version: resourceVersionSchema,
41
+ /** The bot's dedicated workspace, distinct from the bot and agent IDs. */
42
+ workspaceId: cuid2Schema,
43
+ });
44
+ /** `GET /v0/bots` */
45
+ export const botListResponseSchema = Type.Object({ bots: Type.Array(botSchema) });
46
+ /** Every single-bot JSON route answers with this. */
47
+ export const botResponseSchema = Type.Object({ bot: botSchema });
48
+ /** `POST /v0/bots` */
49
+ export const createBotRequestSchema = Type.Object({
50
+ /** Optional client-supplied ID, which makes creation safely retryable. */
51
+ id: Type.Optional(cuid2Schema),
52
+ mutationId: Type.Optional(mutationIdSchema),
53
+ name: botNameSchema,
54
+ /** Omitted, the daemon derives a unique username from `name`. */
55
+ username: Type.Optional(botUsernameSchema),
56
+ });
57
+ /** `PATCH /v0/bots/:botId` — the immutable username is deliberately absent. */
58
+ export const renameBotRequestSchema = Type.Object({
59
+ mutationId: Type.Optional(mutationIdSchema),
60
+ name: botNameSchema,
61
+ /** Explicitly forbidden even though request objects tolerate future additive fields. */
62
+ username: Type.Optional(Type.Never()),
63
+ });
64
+ /** `POST /v0/bots/:botId/archive` */
65
+ export const archiveBotRequestSchema = Type.Object({
66
+ mutationId: Type.Optional(mutationIdSchema),
67
+ });
68
+ /** `POST /v0/bots/:botId/unarchive` */
69
+ export const unarchiveBotRequestSchema = Type.Object({
70
+ mutationId: Type.Optional(mutationIdSchema),
71
+ });
72
+ /** `POST /v0/bots/:botId/reorder` */
73
+ export const reorderBotRequestSchema = Type.Object({
74
+ /** The bot to place this one after, or `null` to move it first. */
75
+ afterId: Nullable(cuid2Schema),
76
+ mutationId: Type.Optional(mutationIdSchema),
77
+ });
78
+ //# sourceMappingURL=bots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bots.js","sourceRoot":"","sources":["../../sources/protocol/bots.ts"],"names":[],"mappings":"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"}