@recombine-ai/bosun 0.20.3 → 0.20.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/build/_app/immutable/chunks/{BFUe72xu.js → 3WccBUkK.js} +1 -1
  2. package/build/_app/immutable/chunks/3WccBUkK.js.br +0 -0
  3. package/build/_app/immutable/chunks/3WccBUkK.js.gz +0 -0
  4. package/build/_app/immutable/chunks/{Bmkwccsg.js → B5p_twg4.js} +1 -1
  5. package/build/_app/immutable/chunks/B5p_twg4.js.br +0 -0
  6. package/build/_app/immutable/chunks/B5p_twg4.js.gz +0 -0
  7. package/build/_app/immutable/chunks/BMZ3nmcQ.js +1 -0
  8. package/build/_app/immutable/chunks/BMZ3nmcQ.js.br +2 -0
  9. package/build/_app/immutable/chunks/BMZ3nmcQ.js.gz +0 -0
  10. package/build/_app/immutable/chunks/{DdNCOsWe.js → C9p6yGAG.js} +1 -1
  11. package/build/_app/immutable/chunks/C9p6yGAG.js.br +0 -0
  12. package/build/_app/immutable/chunks/{DdNCOsWe.js.gz → C9p6yGAG.js.gz} +0 -0
  13. package/build/_app/immutable/entry/{app.L5djN6KO.js → app.BTQrdm9G.js} +2 -2
  14. package/build/_app/immutable/entry/app.BTQrdm9G.js.br +0 -0
  15. package/build/_app/immutable/entry/app.BTQrdm9G.js.gz +0 -0
  16. package/build/_app/immutable/entry/start.Ls0_A8q0.js +1 -0
  17. package/build/_app/immutable/entry/start.Ls0_A8q0.js.br +0 -0
  18. package/build/_app/immutable/entry/start.Ls0_A8q0.js.gz +0 -0
  19. package/build/_app/immutable/nodes/{0.DxT2ZCBH.js → 0.8n1R6Sfx.js} +1 -1
  20. package/build/_app/immutable/nodes/0.8n1R6Sfx.js.br +0 -0
  21. package/build/_app/immutable/nodes/0.8n1R6Sfx.js.gz +0 -0
  22. package/build/_app/immutable/nodes/{1.CuGmyB-B.js → 1.VY0dUXdC.js} +1 -1
  23. package/build/_app/immutable/nodes/1.VY0dUXdC.js.br +3 -0
  24. package/build/_app/immutable/nodes/1.VY0dUXdC.js.gz +0 -0
  25. package/build/_app/immutable/nodes/{16.RilBjs7p.js → 16.DbzAOHBQ.js} +1 -1
  26. package/build/_app/immutable/nodes/16.DbzAOHBQ.js.br +0 -0
  27. package/build/_app/immutable/nodes/16.DbzAOHBQ.js.gz +0 -0
  28. package/build/_app/immutable/nodes/{17.lZCHazN-.js → 17.DueeZkqc.js} +3 -3
  29. package/build/_app/immutable/nodes/17.DueeZkqc.js.br +0 -0
  30. package/build/_app/immutable/nodes/17.DueeZkqc.js.gz +0 -0
  31. package/build/_app/immutable/nodes/{2.47DRuv-7.js → 2.hazKP8jr.js} +2 -2
  32. package/build/_app/immutable/nodes/2.hazKP8jr.js.br +0 -0
  33. package/build/_app/immutable/nodes/2.hazKP8jr.js.gz +0 -0
  34. package/build/_app/immutable/nodes/{3.BTFj2TcK.js → 3.DUnb-wiO.js} +1 -1
  35. package/build/_app/immutable/nodes/3.DUnb-wiO.js.br +0 -0
  36. package/build/_app/immutable/nodes/3.DUnb-wiO.js.gz +0 -0
  37. package/build/_app/immutable/nodes/{4.D7rKFBIq.js → 4.D8bBp4vF.js} +1 -1
  38. package/build/_app/immutable/nodes/4.D8bBp4vF.js.br +0 -0
  39. package/build/_app/immutable/nodes/4.D8bBp4vF.js.gz +0 -0
  40. package/build/_app/immutable/nodes/{6.C7VHMxJG.js → 6.DYttyFcS.js} +1 -1
  41. package/build/_app/immutable/nodes/6.DYttyFcS.js.br +0 -0
  42. package/build/_app/immutable/nodes/6.DYttyFcS.js.gz +0 -0
  43. package/build/_app/immutable/nodes/8.BESB58-w.js +2 -0
  44. package/build/_app/immutable/nodes/8.BESB58-w.js.br +0 -0
  45. package/build/_app/immutable/nodes/8.BESB58-w.js.gz +0 -0
  46. package/build/_app/immutable/nodes/{9.DGHLzn6-.js → 9.DGMSOk75.js} +1 -1
  47. package/build/_app/immutable/nodes/9.DGMSOk75.js.br +0 -0
  48. package/build/_app/immutable/nodes/{9.DGHLzn6-.js.gz → 9.DGMSOk75.js.gz} +0 -0
  49. package/build/_app/version.json +1 -1
  50. package/build/_app/version.json.br +0 -0
  51. package/build/_app/version.json.gz +0 -0
  52. package/build/index.html +9 -9
  53. package/build/index.html.br +0 -0
  54. package/build/index.html.gz +0 -0
  55. package/dist/index.js +25 -6
  56. package/dist/index.js.map +2 -2
  57. package/dist/types/backend/roleplay/conversation-store.d.ts +3 -2
  58. package/dist/types/backend/roleplay/router.d.ts +1 -1
  59. package/dist/types/backend/roleplay/variants.d.ts +1 -1
  60. package/dist/types/backend/server.d.ts +5 -5
  61. package/dist/types/backend/tests/router.d.ts +4 -4
  62. package/dist/types/lib/conversation.d.ts +3 -1
  63. package/dist/types/lib/tests/pii-sanitized-test-draft.d.ts +1 -1
  64. package/package.json +1 -1
  65. package/build/_app/immutable/chunks/BFUe72xu.js.br +0 -0
  66. package/build/_app/immutable/chunks/BFUe72xu.js.gz +0 -0
  67. package/build/_app/immutable/chunks/Bmkwccsg.js.br +0 -0
  68. package/build/_app/immutable/chunks/Bmkwccsg.js.gz +0 -0
  69. package/build/_app/immutable/chunks/CZcJNBdK.js +0 -1
  70. package/build/_app/immutable/chunks/CZcJNBdK.js.br +0 -2
  71. package/build/_app/immutable/chunks/CZcJNBdK.js.gz +0 -0
  72. package/build/_app/immutable/chunks/DdNCOsWe.js.br +0 -0
  73. package/build/_app/immutable/entry/app.L5djN6KO.js.br +0 -0
  74. package/build/_app/immutable/entry/app.L5djN6KO.js.gz +0 -0
  75. package/build/_app/immutable/entry/start.CGCxa4r9.js +0 -1
  76. package/build/_app/immutable/entry/start.CGCxa4r9.js.br +0 -0
  77. package/build/_app/immutable/entry/start.CGCxa4r9.js.gz +0 -0
  78. package/build/_app/immutable/nodes/0.DxT2ZCBH.js.br +0 -0
  79. package/build/_app/immutable/nodes/0.DxT2ZCBH.js.gz +0 -0
  80. package/build/_app/immutable/nodes/1.CuGmyB-B.js.br +0 -2
  81. package/build/_app/immutable/nodes/1.CuGmyB-B.js.gz +0 -0
  82. package/build/_app/immutable/nodes/16.RilBjs7p.js.br +0 -0
  83. package/build/_app/immutable/nodes/16.RilBjs7p.js.gz +0 -0
  84. package/build/_app/immutable/nodes/17.lZCHazN-.js.br +0 -0
  85. package/build/_app/immutable/nodes/17.lZCHazN-.js.gz +0 -0
  86. package/build/_app/immutable/nodes/2.47DRuv-7.js.br +0 -0
  87. package/build/_app/immutable/nodes/2.47DRuv-7.js.gz +0 -0
  88. package/build/_app/immutable/nodes/3.BTFj2TcK.js.br +0 -0
  89. package/build/_app/immutable/nodes/3.BTFj2TcK.js.gz +0 -0
  90. package/build/_app/immutable/nodes/4.D7rKFBIq.js.br +0 -0
  91. package/build/_app/immutable/nodes/4.D7rKFBIq.js.gz +0 -0
  92. package/build/_app/immutable/nodes/6.C7VHMxJG.js.br +0 -0
  93. package/build/_app/immutable/nodes/6.C7VHMxJG.js.gz +0 -0
  94. package/build/_app/immutable/nodes/8.B-2mfKlr.js +0 -2
  95. package/build/_app/immutable/nodes/8.B-2mfKlr.js.br +0 -0
  96. package/build/_app/immutable/nodes/8.B-2mfKlr.js.gz +0 -0
  97. package/build/_app/immutable/nodes/9.DGHLzn6-.js.br +0 -0
@@ -12,8 +12,9 @@ export declare function saveConversation(ctx: BosunContext, conversation: Conver
12
12
  export declare function deleteConversation(ctx: BosunContext, conversationId: string): Promise<void>;
13
13
  export declare function listConversations(ctx: BosunContext, agentId: string): Promise<ConversationHeader[]>;
14
14
  /**
15
- * Drops `fromTurn` and everything after it, and returns the inbound message that started that turn
16
- * so the caller can replay it. This is how "regenerate" works now that conversations never branch.
15
+ * Drops `fromTurn` and everything after it, rewinds the context to the state that turn started from,
16
+ * and returns the inbound message that started it so the caller can replay it. This is how
17
+ * "regenerate" works now that conversations never branch.
17
18
  */
18
19
  export declare function truncateConversation(ctx: BosunContext, conversationId: string, fromTurn: number): Promise<{
19
20
  conversation: Conversation;
@@ -164,7 +164,6 @@ export declare function createRolePlayRouter(t: TRPCRootObject<TrpcContext, any,
164
164
  generateVariants: import("@trpc/server").TRPCMutationProcedure<{
165
165
  input: {
166
166
  conversationId: string;
167
- context?: Record<string, unknown> | null | undefined;
168
167
  promptOverrides?: Record<string, string> | undefined;
169
168
  count?: number | undefined;
170
169
  };
@@ -175,6 +174,7 @@ export declare function createRolePlayRouter(t: TRPCRootObject<TrpcContext, any,
175
174
  input: {
176
175
  conversationId: string;
177
176
  entries: any[];
177
+ context: Record<string, unknown>;
178
178
  };
179
179
  output: {
180
180
  ok: boolean;
@@ -5,6 +5,7 @@ export interface GeneratedVariant {
5
5
  id: string;
6
6
  text: string;
7
7
  entries: ConversationEntry[];
8
+ context: Record<string, unknown>;
8
9
  }
9
10
  /**
10
11
  * Re-runs the conversation's last turn `count` times without touching the stored conversation.
@@ -13,6 +14,5 @@ export interface GeneratedVariant {
13
14
  export declare function generateReplyVariants(ctx: BosunContext, props: {
14
15
  conversation: Conversation;
15
16
  count: number;
16
- context?: Record<string, unknown>;
17
17
  promptOverrides?: PromptOverrides;
18
18
  }): Promise<GeneratedVariant[]>;
@@ -170,7 +170,6 @@ declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
170
170
  generateVariants: import("@trpc/server").TRPCMutationProcedure<{
171
171
  input: {
172
172
  conversationId: string;
173
- context?: Record<string, unknown> | null | undefined;
174
173
  promptOverrides?: Record<string, string> | undefined;
175
174
  count?: number | undefined;
176
175
  };
@@ -181,6 +180,7 @@ declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
181
180
  input: {
182
181
  conversationId: string;
183
182
  entries: any[];
183
+ context: Record<string, unknown>;
184
184
  };
185
185
  output: {
186
186
  ok: boolean;
@@ -375,6 +375,7 @@ declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
375
375
  input: {
376
376
  agent: string;
377
377
  seed: {
378
+ context?: Record<string, unknown> | undefined;
378
379
  conversation?: string | undefined;
379
380
  pinned?: "TRUE" | "FALSE" | undefined;
380
381
  scenario?: string | undefined;
@@ -389,7 +390,6 @@ declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
389
390
  context_mode?: "replace" | "merge" | undefined;
390
391
  timeout?: string | undefined;
391
392
  similarity_threshold?: string | undefined;
392
- context?: Record<string, unknown> | undefined;
393
393
  mocks?: Record<string, unknown> | undefined;
394
394
  };
395
395
  beforeTestId?: string | undefined;
@@ -471,9 +471,9 @@ declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
471
471
  agent: string;
472
472
  draftId: string;
473
473
  reviewed: {
474
+ context: Record<string, unknown>;
474
475
  conversation: string;
475
476
  expected_output: string;
476
- context: Record<string, unknown>;
477
477
  mocks?: Record<string, unknown> | undefined;
478
478
  };
479
479
  };
@@ -488,6 +488,7 @@ declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
488
488
  agent: string;
489
489
  id: string;
490
490
  patch: {
491
+ context?: Record<string, unknown> | undefined;
491
492
  conversation?: string | undefined;
492
493
  pinned?: "TRUE" | "FALSE" | undefined;
493
494
  scenario?: string | undefined;
@@ -502,7 +503,6 @@ declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
502
503
  context_mode?: "replace" | "merge" | undefined;
503
504
  timeout?: string | undefined;
504
505
  similarity_threshold?: string | undefined;
505
- context?: Record<string, unknown> | undefined;
506
506
  mocks?: Record<string, unknown> | undefined;
507
507
  };
508
508
  };
@@ -572,6 +572,7 @@ declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
572
572
  updates: {
573
573
  id: string;
574
574
  patch: {
575
+ context?: Record<string, unknown> | undefined;
575
576
  conversation?: string | undefined;
576
577
  pinned?: "TRUE" | "FALSE" | undefined;
577
578
  scenario?: string | undefined;
@@ -586,7 +587,6 @@ declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
586
587
  context_mode?: "replace" | "merge" | undefined;
587
588
  timeout?: string | undefined;
588
589
  similarity_threshold?: string | undefined;
589
- context?: Record<string, unknown> | undefined;
590
590
  mocks?: Record<string, unknown> | undefined;
591
591
  };
592
592
  }[];
@@ -123,6 +123,7 @@ export declare function createTestsRouter(t: TRPCRootObject<TrpcContext, any, an
123
123
  input: {
124
124
  agent: string;
125
125
  seed: {
126
+ context?: Record<string, unknown> | undefined;
126
127
  conversation?: string | undefined;
127
128
  pinned?: "TRUE" | "FALSE" | undefined;
128
129
  scenario?: string | undefined;
@@ -137,7 +138,6 @@ export declare function createTestsRouter(t: TRPCRootObject<TrpcContext, any, an
137
138
  context_mode?: "replace" | "merge" | undefined;
138
139
  timeout?: string | undefined;
139
140
  similarity_threshold?: string | undefined;
140
- context?: Record<string, unknown> | undefined;
141
141
  mocks?: Record<string, unknown> | undefined;
142
142
  };
143
143
  beforeTestId?: string | undefined;
@@ -219,9 +219,9 @@ export declare function createTestsRouter(t: TRPCRootObject<TrpcContext, any, an
219
219
  agent: string;
220
220
  draftId: string;
221
221
  reviewed: {
222
+ context: Record<string, unknown>;
222
223
  conversation: string;
223
224
  expected_output: string;
224
- context: Record<string, unknown>;
225
225
  mocks?: Record<string, unknown> | undefined;
226
226
  };
227
227
  };
@@ -236,6 +236,7 @@ export declare function createTestsRouter(t: TRPCRootObject<TrpcContext, any, an
236
236
  agent: string;
237
237
  id: string;
238
238
  patch: {
239
+ context?: Record<string, unknown> | undefined;
239
240
  conversation?: string | undefined;
240
241
  pinned?: "TRUE" | "FALSE" | undefined;
241
242
  scenario?: string | undefined;
@@ -250,7 +251,6 @@ export declare function createTestsRouter(t: TRPCRootObject<TrpcContext, any, an
250
251
  context_mode?: "replace" | "merge" | undefined;
251
252
  timeout?: string | undefined;
252
253
  similarity_threshold?: string | undefined;
253
- context?: Record<string, unknown> | undefined;
254
254
  mocks?: Record<string, unknown> | undefined;
255
255
  };
256
256
  };
@@ -320,6 +320,7 @@ export declare function createTestsRouter(t: TRPCRootObject<TrpcContext, any, an
320
320
  updates: {
321
321
  id: string;
322
322
  patch: {
323
+ context?: Record<string, unknown> | undefined;
323
324
  conversation?: string | undefined;
324
325
  pinned?: "TRUE" | "FALSE" | undefined;
325
326
  scenario?: string | undefined;
@@ -334,7 +335,6 @@ export declare function createTestsRouter(t: TRPCRootObject<TrpcContext, any, an
334
335
  context_mode?: "replace" | "merge" | undefined;
335
336
  timeout?: string | undefined;
336
337
  similarity_threshold?: string | undefined;
337
- context?: Record<string, unknown> | undefined;
338
338
  mocks?: Record<string, unknown> | undefined;
339
339
  };
340
340
  }[];
@@ -9,7 +9,7 @@ interface Entry<Kind extends string, Payload> {
9
9
  createdAt: number;
10
10
  payload: Payload;
11
11
  }
12
- export type ConversationEntry = Entry<'message', Message> | Entry<'conversational-trace', ConversationalTrace> | Entry<'step-trace', StepTrace> | Entry<'api-call-trace', ApiCallTrace> | Entry<'log', LogEntry>;
12
+ export type ConversationEntry = Entry<'message', Message> | Entry<'conversational-trace', ConversationalTrace> | Entry<'step-trace', StepTrace> | Entry<'api-call-trace', ApiCallTrace> | Entry<'log', LogEntry> | Entry<'context', Record<string, unknown>>;
13
13
  export type ConversationEntryKind = ConversationEntry['kind'];
14
14
  export interface Conversation {
15
15
  conversationId: string;
@@ -28,6 +28,8 @@ export interface ConversationHeader {
28
28
  }
29
29
  export declare function messageSummary(message: Message): string;
30
30
  export declare function lastTurn(conversation: Conversation): number;
31
+ /** The runtime context the agent had when `turn` began, as recorded by `runTurn`. */
32
+ export declare function turnStartContext(entries: ConversationEntry[], turn: number): Record<string, unknown> | null;
31
33
  export declare function conversationMessages(conversation: Conversation): Message[];
32
34
  export declare function conversationHeader(conversation: Conversation): ConversationHeader;
33
35
  export {};
@@ -18,9 +18,9 @@ export declare const TraceTestSeedSchema: z.ZodObject<{
18
18
  }, z.core.$strict>;
19
19
  export type TraceTestSeed = z.infer<typeof TraceTestSeedSchema>;
20
20
  export declare const TraceTestReviewContentSchema: z.ZodObject<{
21
+ context: z.ZodRecord<z.ZodString, z.ZodUnknown>;
21
22
  conversation: z.ZodString;
22
23
  expected_output: z.ZodString;
23
- context: z.ZodRecord<z.ZodString, z.ZodUnknown>;
24
24
  mocks: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
25
25
  }, z.core.$strict>;
26
26
  export type TraceTestReviewContent = z.infer<typeof TraceTestReviewContentSchema>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@recombine-ai/bosun",
3
3
  "author": "recombine.ai",
4
- "version": "0.20.3",
4
+ "version": "0.20.4",
5
5
  "license": "EULA",
6
6
  "type": "module",
7
7
  "exports": {
@@ -1 +0,0 @@
1
- import"./Bmkwccsg.js";
@@ -1,2 +0,0 @@
1
- �
2
- �import"./Bmkwccsg.js";
@@ -1 +0,0 @@
1
- import{r as e,s as t}from"../chunks/Bmkwccsg.js";export{t as load_css,e as start};
@@ -1,2 +0,0 @@
1
- {���P�<K����m�n2E����Q\n���_ ���8��>�
2
- y@/��c钇Cpf������&&Yܕ� ��z��3w��|�
@@ -1,2 +0,0 @@
1
- import{B as e,Dt as t,E as n,F as r,G as i,H as a,I as o,L as s,N as c,Nt as l,O as u,Ot as d,Pt as f,S as p,V as m,a as h,at as g,b as _,dt as v,et as y,gt as b,it as x,j as S,k as C,l as w,m as ee,ot as T,pt as E,r as D,st as O,tt as k,x as te,z as A}from"../chunks/CPCsWwEy.js";import"../chunks/xihTtKlq.js";import{r as j,t as M}from"../chunks/oarl--hZ.js";import{t as N}from"../chunks/6OCsQ6r7.js";import{t as P}from"../chunks/Cf3l6QEG.js";import{t as F}from"../chunks/DWoqp3ac.js";import{t as ne}from"../chunks/B9YnyJ2j.js";import{c as re,i as I,o as ie,s as L}from"../chunks/By9tvIIw.js";import{r as ae}from"../chunks/BOHUKGg_.js";import{t as oe}from"../chunks/D3fLfD-Y.js";import{a as se,i as ce,n as le,o as ue,r as de,s as R,t as fe}from"../chunks/DdNCOsWe.js";var pe=s(`<span class="min-w-0 flex-1 truncate text-left"> </span> <!>`,1),z=s(`<div class="flex items-start gap-2"><div class="min-w-0"><div class="truncate p-1 text-sm text-rc-gray-300 group-hover:text-rc-gray-200"> </div> <div> </div></div></div>`),B=s(`<div class="mt-1 max-h-96 w-max min-w-full max-w-[min(26rem,90vw)] overflow-y-auto overflow-x-hidden rounded-lg border border-rc-gray-110 bg-rc-gray-930 backdrop-blur-2xl" role="listbox"></div>`),V=s(`<div><!> <!></div>`);function H(e,n){d(n,!0);let a=h(n,`class`,3,``),o=E(!1),s=E(null),l=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function p(){v(o,!i(o))}function m(e){n.onSelect(e),v(o,!1)}function _(e){return(e.lastMessage??``).trim()||`No messages`}function S(e,t=50,n=`…`){if(!e)return``;if(e.length<=t)return e;let r=e.slice(0,t+1),i=Math.max(r.lastIndexOf(` `),r.lastIndexOf(`\xA0`),r.lastIndexOf(` `),r.lastIndexOf(`
2
- `),r.lastIndexOf(`\r`));return(i>0?r.slice(0,i):e.slice(0,t)).trimEnd()+n}function w(e){e.key===`ArrowDown`&&!i(o)?(v(o,!0),e.preventDefault()):e.key===`ArrowUp`&&i(o)&&(v(o,!1),e.preventDefault())}function ee(e){let t=e.getDate(),n=l[e.getMonth()],r=e.getHours(),i=r>=12?`PM`:`AM`;r%=12,r===0&&(r=12);let a=String(e.getMinutes()).padStart(2,`0`),o=new Date,s=e.getFullYear();return`${t} ${n}${s===o.getFullYear()?``:` ${s}`}, ${r}:${a} ${i}`}function D(e){return ee(new Date(e.createdAt))}let O=b(()=>n.conversations.find(e=>e.conversationId===n.currentConversationId)??null),k=b(()=>i(O)?D(i(O)):`History`);var A=V(),j=x(A);N(j,{variant:`ghost`,get"aria-expanded"(){return i(o)},"aria-haspopup":`listbox`,"aria-controls":`history-dropdown`,onclick:p,onkeydown:w,class:`inline-flex w-40 items-center rounded-lg border border-transparent !bg-rc-gray-700 !px-3 !pb-1 !pt-[5px] text-rc-gray-200 hover:border hover:border-rc-gray-500 focus:outline-none focus:ring-0`,get el(){return i(s)},set el(e){v(s,e,!0)},children:(e,t)=>{var n=pe(),a=g(n),s=x(a,!0);f(a);var l=T(a,2);{let e=b(()=>`size-7 shrink-0 text-rc-gray-500 transition-transform duration-200 `+(i(o)?`rotate-180`:``));P(l,{name:`chevron-down`,get class(){return i(e)}})}y(()=>c(s,i(k))),r(e,n)},$$slots:{default:!0}});var M=T(j,2);R(M,{id:`history-dropdown`,get open(){return i(o)},onClose:()=>v(o,!1),get anchorEl(){return i(s)},placement:`bottom-start`,offset:[0,1],children:e=>{var t=B();u(t,21,()=>n.conversations,C,(e,t)=>{{let a=b(()=>i(t).conversationId===n.currentConversationId);N(e,{variant:`ghost`,size:`small`,role:`option`,get"aria-selected"(){return i(a)},onclick:()=>m(i(t).conversationId),class:`group w-full rounded-none border-b border-rc-gray-110 py-2 pr-3 text-left backdrop-blur-2xl last:border-b-0 hover:bg-rc-gray-700 focus:bg-rc-gray-400`,children:(e,a)=>{var o=z(),s=x(o),l=x(s),u=x(l,!0);f(l);var d=T(l,2),p=x(d,!0);f(d),f(s),f(o),y((e,r)=>{c(u,e),te(d,1,`truncate p-1 text-base font-semibold `+(i(t).conversationId===n.currentConversationId?`text-rc-green-200`:`text-rc-gray-100`)),c(p,r)},[()=>D(i(t)),()=>S(_(i(t)))]),r(e,o)},$$slots:{default:!0}})}}),f(t),r(e,t)},$$slots:{default:!0}}),f(A),y(()=>te(A,1,`relative ${a()}`)),r(e,A),t()}var U=s(`<dialog class="dialog m-auto bg-transparent p-0 text-rc-gray-100 shadow-md svelte-jby388"><!> <!></dialog>`);function me(e,i){d(i,!0);let a,o=h(i,`showCloseButton`,3,!1),s=h(i,`onClose`,3,()=>{}),c=h(i,`onOpen`,3,()=>{}),u=h(i,`isOpen`,3,!1);k(()=>{u()?(console.log(`show`),a?.showModal(),c()()):a?.open&&(console.log(`close`),a.close())});function p(){s()()}D(()=>(a.addEventListener(`close`,p),()=>{a.removeEventListener(`close`,p)}));function g(e){e.target===a&&a.close()}var _=U(),v=x(_);n(v,()=>i.children);var y=T(v,2),b=e=>{N(e,{variant:`ghost`,onclick:()=>a.close(),class:`absolute right-2 top-2`,children:(e,t)=>{l();var n=A(`✕`);r(e,n)},$$slots:{default:!0}})};S(y,e=>{o()&&e(b)}),f(_),w(_,e=>a=e,()=>a),m(`mousedown`,_,g),r(e,_),t()}e([`mousedown`]);function he(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(!n||typeof n!=`object`)continue;let e=n.text,r=n.lastSeen,i=n.uses;if(typeof e!=`string`||typeof r!=`number`||!Number.isFinite(r)||typeof i!=`number`||!Number.isFinite(i))continue;let a=e.trim();a&&t.push({text:a,lastSeen:r,uses:i})}return t.sort((e,t)=>t.lastSeen-e.lastSeen),t}function ge(e,t,n=2e3){let r=t.trim();if(!r)return e;let i=(e[0]?.lastSeen??0)+1,a=e.findIndex(e=>e.text===r),o;if(a!==-1){let t=e[a];o=[{text:t.text,lastSeen:i,uses:(t.uses??0)+1},...e.slice(0,a),...e.slice(a+1)]}else o=[{text:r,lastSeen:i,uses:1},...e];return o.length>n?o.slice(0,n):o}function _e(e,t,n=2e3){if(!t.length)return e;if(!e.length)return t;let r=e[0]?.lastSeen??0,i=(t[0]?.lastSeen??0)>r?t:t.map((e,n)=>({...e,lastSeen:r+(t.length-n)})),a=new Map;for(let t of e)a.set(t.text,t);for(let e of i){let t=a.get(e.text);if(!t){a.set(e.text,e);continue}a.set(e.text,{text:e.text,lastSeen:Math.max(t.lastSeen,e.lastSeen),uses:t.uses+e.uses})}return Array.from(a.values()).sort((e,t)=>t.lastSeen-e.lastSeen).slice(0,n)}function ve(e,t,n=5){if(!t.length)return[];let r=e.trim().toLowerCase(),i=W(e,!1).text,a=/\s$/u.test(e);if(!W(e,!0).text)return[];let o=[];for(let e of t){let t=W(e.text);if(!t.text||e.text.trim().toLowerCase()===r)continue;let n=ye(t,e.text,i,a);n&&o.push({item:e,match:n})}return o.sort((e,t)=>e.match.kindRank===t.match.kindRank?e.match.span===t.match.span?e.match.start===t.match.start?e.item.lastSeen===t.item.lastSeen?e.item.uses===t.item.uses?e.item.text.length-t.item.text.length:t.item.uses-e.item.uses:t.item.lastSeen-e.item.lastSeen:e.match.start-t.match.start:e.match.span-t.match.span:e.match.kindRank-t.match.kindRank),o.slice(0,n).map(e=>({text:e.item.text,prefixEndIndex:e.match.prefixEndIndex,segments:xe(e.item.text,e.match.ranges)}))}function W(e,t=!0){let n=[],r=[];for(let t=0;t<e.length;t++){let i=G(e[t]);if(i===` `){if(!n.length)continue;let e=n.length-1;if(n[e]===` `){r[e][1]=t+1;continue}}n.push(i),r.push([t,t+1])}return t&&n[n.length-1]===` `&&(n.pop(),r.pop()),{text:n.join(``),ranges:r}}function G(e){if(/\s/u.test(e))return` `;try{return/[\p{P}\p{S}]/u.test(e)?` `:e.toLowerCase()}catch{return/[^a-z0-9\s]/i.test(e)?` `:e.toLowerCase()}}function ye(e,t,n,r){if(!e.text)return null;if(e.text.startsWith(n)){let e=be(t,n,r)??t.length,i=Math.max(0,Math.min(t.length,e));return{kindRank:0,start:0,span:n.length,ranges:[[0,i]],prefixEndIndex:i}}let i=e.text.indexOf(n);return i===-1?null:{kindRank:J(e.text,i,n.length),start:i,span:n.length,ranges:Y(e,i,i+n.length),prefixEndIndex:t.length}}function K(e,t){return t<=0||e[t-1]===` `}function q(e,t){return t>=e.length||e[t]===` `}function J(e,t,n){let r=K(e,t),i=q(e,t+n);return r&&i?1:r?2:3}function Y(e,t,n){let r=Math.max(0,Math.min(e.ranges.length,t)),i=Math.max(r,Math.min(e.ranges.length,n));return X(e.ranges.slice(r,i))}function be(e,t,n){if(!t)return null;let r=``,i=!0;for(let a=0;a<e.length;a++){let o=e[a],s;if(/\s/u.test(o))s=` `;else try{s=/[\p{P}\p{S}]/u.test(o)?` `:o.toLowerCase()}catch{s=/[^a-z0-9\s]/i.test(o)?` `:o.toLowerCase()}if(s===` `){if(i)continue;r+=` `,i=!0}else r+=s,i=!1;if(r.length===t.length){if(r!==t)return null;let i=a+1;if(n&&t.endsWith(` `)){let t=i;for(;t<e.length;){let n=e[t];if(/\s/u.test(n)){t+=1;continue}try{if(/[\p{P}\p{S}]/u.test(n)){t+=1;continue}}catch{if(/[^a-z0-9\s]/i.test(n)){t+=1;continue}}break}i=t}return i}if(r.length>t.length)return null}return null}function xe(e,t){let n=X(t);if(!n.length)return[{text:e,matched:!1}];let r=[],i=0;for(let[t,a]of n)t>i&&r.push({text:e.slice(i,t),matched:!1}),r.push({text:e.slice(t,a),matched:!0}),i=a;return i<e.length&&r.push({text:e.slice(i),matched:!1}),r.filter(e=>e.text.length>0)}function X(e){if(!e.length)return[];let t=e.map(([e,t])=>[Math.max(0,e),Math.max(0,t)]).filter(([e,t])=>t>e).sort((e,t)=>e[0]-t[0]||e[1]-t[1]);if(!t.length)return[];let n=[[t[0][0],t[0][1]]];for(let e=1;e<t.length;e++){let[r,i]=t[e],a=n[n.length-1];if(r<=a[1]){a[1]=Math.max(a[1],i);continue}n.push([r,i])}return n}var Se=s(`<form><h2 class="text-l mb-4 text-gray-300">Image URL</h2> <!> <!></form>`),Ce=s(`<div class="my-2 flex w-full justify-center"><div class="rounded-full border border-rc-gray-650 bg-rc-gray-800/40 px-3 py-1 text-xs text-rc-gray-200"> </div></div>`),we=s(`<div class="rounded-lg border border-rc-green-450 bg-transparent px-3 py-2 text-sm text-rc-gray-300">Generating 9 more variants…</div>`),Te=s(`<div class="rounded-lg border border-red-500/70 bg-red-950/20 px-3 py-2 text-sm text-red-200"> </div>`),Ee=s(`<button type="button"><div class="whitespace-pre-line break-words"> </div></button>`),De=s(`<div class="ml-7 mt-2 flex flex-col gap-2"><!> <!> <!></div>`),Oe=s(`<!> <div class="log-element"><div><!></div> <!></div>`,1),ke=s(`<div class="absolute bottom-2 left-2 right-2 z-10 flex items-center gap-3 rounded-lg border border-rc-green-450 bg-rc-gray-930/90 px-3 py-3 font-semibold text-rc-gray-100 shadow-inner-white-soft backdrop-blur-3xl"><span>Choose a variant above to continue</span> <button type="button" class="rounded border-0 bg-transparent px-1 py-0.5 text-rc-gray-300 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-100 focus:outline-none focus-visible:outline-none disabled:cursor-wait disabled:opacity-50">Regenerate</button> <button type="button" class="rounded border-0 bg-transparent px-1 py-0.5 text-rc-gray-300 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-100 focus:outline-none focus-visible:outline-none">Cancel</button></div>`),Ae=s(`<div class="absolute bottom-16 left-2 right-2 z-20 rounded-lg border border-red-500/60 bg-red-950/90 px-3 py-2 text-sm text-red-100 shadow-lg" role="alert"> </div>`),je=s(`<span> </span>`),Me=s(`<button type="button" role="option" tabindex="-1"></button>`),Ne=s(`<div class="absolute bottom-full left-0 right-0 mb-1 max-h-60 overflow-y-auto rounded-lg border border-rc-gray-110 bg-rc-gray-930 shadow-inner-white-soft backdrop-blur-2xl" role="listbox"></div>`),Pe=s(`<div class="pointer-events-none absolute inset-0 z-10 overflow-hidden rounded-lg" aria-hidden="true"><div class="whitespace-pre text-rc-gray-400/70"><span class="invisible"> </span><span> </span></div></div>`),Fe=s(`<!> <form><fieldset class="absolute bottom-2 left-2 right-2 z-10 flex gap-2 disabled:opacity-35"><div class="relative flex-1"><!> <!> <button type="button" class="absolute bottom-0 left-3 top-0 z-20 inline-flex items-center border-r border-rc-gray-500/70 bg-transparent pr-2 text-base font-semibold leading-6 text-rc-gray-300 transition-colors duration-75 hover:text-rc-gray-300 focus:outline-none focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50"> </button> <!></div> <!> <!></fieldset></form>`,1),Ie=s(`<div class="rc-scroll min-h-0 flex-1 overflow-y-auto pr-1"></div> <!>`,1),Le=s(`<!> <!>`,1);function Z(e,n){d(n,!0);let s=h(n,`promptEditProposalId`,3,null),D=h(n,`analyzeDisabled`,3,!1),M=h(n,`variantSourceTrace`,3,null),ae=h(n,`variantChoices`,19,()=>[]),se=h(n,`variantLoading`,3,!1),R=h(n,`variantApplyingId`,3,null),pe=h(n,`variantError`,3,null),z=O(new Set),B=E(``),V=E(``),H=E(``),U,W=E(!1),G=E(null),ye=E(``),K=E(!1),q=E(`user`),J=E(null),Y=E(O([])),be=E(null),xe=E(!1),X=E(!1),Z=E(null),Q=b(()=>ve(i(B),i(Y))),Re=b(()=>i(Z)==null?null:i(Q)[i(Z)]??null),ze=b(()=>i(Re)?i(Re).text.slice(i(Re).prefixEndIndex):``),Be=b(()=>!M()&&!i(H)&&i(B).trim().length===0);k(()=>{if(typeof window>`u`)return;if(!i(G)){v(ye,``);return}let e=window.getComputedStyle(i(G)),t=`calc(${e.paddingTop} + ${e.borderTopWidth})`,n=`calc(${e.paddingRight} + ${e.borderRightWidth})`,r=`calc(${e.paddingBottom} + ${e.borderBottomWidth})`,a=`calc(${e.paddingLeft} + ${e.borderLeftWidth})`;v(ye,[`padding:${t} ${n} ${r} ${a}`,`font:${e.font}`,`letter-spacing:${e.letterSpacing}`,`line-height:${e.lineHeight}`,`text-indent:${e.textIndent}`,`text-transform:${e.textTransform}`,`text-align:${e.textAlign}`,`box-sizing:${e.boxSizing}`].join(`;`),!0)}),k(()=>{i(Z)!=null&&i(Z)>=i(Q).length&&v(Z,null)});let Ve=b(()=>M()||!i(xe)||i(X)?!1:i(Q).length>0);function He(e){v(B,e.text,!0),v(Z,null),v(X,!0)}function Ue(){v(xe,!0),v(X,!1)}function We(){v(xe,!1),v(Z,null),v(X,!1)}function Ge(){v(Z,null),v(X,!1)}function Ke(e){if(e.key===`Escape`){i(Ve)&&e.preventDefault(),v(X,!0),v(Z,null);return}if(e.key===`ArrowUp`||e.key===`ArrowDown`){if(!i(Q).length)return;i(X)&&v(X,!1),e.preventDefault();let t=i(Q).length-1;if(i(Z)===null)v(Z,e.key===`ArrowUp`?t:0,!0);else{let n=e.key===`ArrowUp`?-1:1;v(Z,Math.max(0,Math.min(t,i(Z)+n)),!0)}return}if(e.key===`Enter`||e.key===`Tab`&&!e.shiftKey){if(i(Z)===null)return;let t=i(Q)[i(Z)];if(!t)return;e.preventDefault(),He(t);return}}let qe=null,Je=!1,Ye=0;function Xe(){typeof window>`u`||U&&(!Je&&z.has(U)||(qe??=requestAnimationFrame(()=>{if(qe=null,!U||!Je&&z.has(U))return;let e=U.scrollHeight-(U.scrollTop+U.clientHeight),t=Je||e>U.clientHeight?`auto`:`smooth`;U.scrollTo({top:U.scrollHeight,behavior:t}),Je=!1})))}k(()=>{let e=I.length;e===0&&Ye>0&&(Je=!0,U&&z.delete(U)),Ye=e,e>0&&Xe()});function Ze(e){e.scrollTop+e.clientHeight+200>e.scrollHeight?z.delete(e):z.add(e)}function Qe(e){i(K)||(i(B).trim().length>0||i(H))&&(v(Y,ge(i(Y),i(B)),!0),n.onmessage({sender:e,text:i(B),imageUrl:i(H)}),v(H,``),v(B,``),v(q,`user`),v(X,!1),v(Z,null))}function $e(e){e.preventDefault(),Qe(i(q))}function et(){v(q,i(q)===`system`?`user`:`system`,!0),requestAnimationFrame(()=>i(G)?.focus())}function tt(e){e.preventDefault(),v(H,i(V),!0),v(V,``),v(W,!1)}function nt(e){return e&&typeof e.renderedPrompt==`string`?e.renderedPrompt:null}function rt(e,t){for(let n=t-1;n>=0;n--){let t=e[n];if(re(t)&&ne(t.name)&&nt(t))return t}for(let n=t-1;n>=0;n--){let t=e[n];if(re(t)&&t.name===`prewarm`&&nt(t))return t}return null}function it(e){return(e.eventName===`received-message`||e.eventName===`llm-handler-stream-requested`)&&!String(e.content??``).trim()?!1:e.eventName===`received-message`||e.eventName===`llm-handler-stream-requested`||e.eventName===`finished-main-streaming-step`||e.eventName===`sent-message`||e.eventName===`transfer-requested`||e.eventName===`hangup-requested`}function at(e){return!!(n.agentId&&n.agentId.trim())&&e.eventName!==`transfer-requested`&&(e.eventName===`finished-main-streaming-step`||e.eventName===`sent-message`)}function ot(e){return e.role===`user`||e.eventName===`received-message`||e.eventName===`llm-handler-stream-requested`}function st(e){let t=String(e??``).trim();return!t||/^\[image\]\s+/.test(t)?``:t}function ct(e){let t=e?.bosunInputMessageSender;return t===`system`?`system`:t===`user`?`user`:e.role===`system`?`system`:`user`}function lt(e){if(!n.onRevertToState)return;let t=e?.bosunPrevStateId,r=typeof t==`string`&&t.trim().length>0?t:null;n.onRevertToState(r);let a=typeof e?.bosunUserMessage==`string`?e.bosunUserMessage:e.content;v(B,st(a),!0),v(q,ct(e),!0),v(X,!1),v(Z,null),requestAnimationFrame(()=>{try{i(G)?.focus(),i(G)?.select()}catch{}})}function ut(){n.agentType===`text`?v(W,!0):n.agentType===`voice`&&n.onHangup?.()}let dt=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function ft(e){if(typeof e!=`number`||!Number.isFinite(e))return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)}`}function pt(e){if(typeof e!=`number`||!Number.isFinite(e))return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:`${t.getDate()} ${dt[t.getMonth()]} ${t.getFullYear()}`}let $=b(()=>I.filter(e=>ie(e)||re(e)?!0:L(e)?it(e):!1)),mt=b(()=>I.findLast(e=>L(e))?.eventName===`hangup-requested`),ht=b(()=>{let e=i($).map((e,t)=>({entry:e,index:t})).reverse().find(({entry:e,index:t})=>!L(e)||!at(e)?!1:i($).slice(0,t).some(e=>L(e)&&ot(e)));return e&&L(e.entry)?e.entry:null}),gt=b(()=>{let e=i(ht);if(!e)return null;try{let t=_t(e);return{model:t.model,stringifiedConversation:t.stringifiedConversation,response:t.response}}catch{return null}});function _t(e){if(!(n.agentId??``).trim())throw Error(`Agent id is not available; cannot analyze`);let t=I.indexOf(e);if(t===-1)throw Error(`Could not locate trace in chat history`);let r=de(I,t,{requireRenderedPrompt:!0});if(!r)throw Error(`Could not find main step trace for this message`);let i=typeof r.renderedPrompt==`string`?r.renderedPrompt:``;if(!i.trim())throw Error(`Main step rendered prompt is missing`);let a=typeof r.stringifiedConversation==`string`&&r.stringifiedConversation.trim()?r.stringifiedConversation:ce(I,t)??``,o=String(e?.content??``);if(!o.trim())throw Error(`Message content is missing`);let s=typeof r?.model==`string`?String(r.model):void 0,c=e?.createdAt;return{trace:e,stepTrace:r,renderedPrompt:i,stringifiedConversation:a,response:o,model:s,createdAt:typeof c==`number`&&Number.isFinite(c)?c:void 0}}function vt(e){if(n.onAnalyzeTrace)try{v(J,null),n.onAnalyzeTrace(_t(e))}catch(e){console.error(e),v(J,e instanceof Error?e.message:String(e),!0)}}function yt(e){if(n.onRegenerateTrace)try{v(J,null),n.onRegenerateTrace(e)}catch(e){console.error(e),v(J,e instanceof Error?e.message:String(e),!0)}}async function bt(){if(i(K))return;let e=i(gt);if(e){v(X,!0),v(Z,null),v(K,!0);try{let t=await F.agents.generateUserResponse.mutate(e);v(B,t.text,!0),v(X,!0),v(Z,null),requestAnimationFrame(()=>{try{i(G)?.focus(),i(G)?.setSelectionRange(t.text.length,t.text.length)}catch{}})}catch(e){console.error(`Failed to generate suggested user response`,e)}finally{v(K,!1)}}}k(()=>{if(typeof window>`u`)return;let e=(n.agentId??``).trim();if(!e||e===i(be))return;v(be,e,!0),v(Y,[],!0);let t=e,r=e;F.agents.userMessageHistory.query({agentId:t}).then(e=>{if(i(be)!==r)return;let t=he(e);v(Y,_e(t,i(Y)),!0),v(Z,null)}).catch(e=>{console.error(`Failed to load user message history`,e),i(be)===r&&(v(Y,[],!0),v(Z,null))})}),k(()=>{let e=M(),t=ae().length,n=se(),r=pe(),i=R();!e&&!t&&!n&&!r&&!i||Xe()});var xt=Le(),St=g(xt);me(St,{get isOpen(){return i(W)},onClose:()=>v(W,!1),showCloseButton:!0,children:(e,t)=>{j(e,{class:`p-4`,children:(e,t)=>{var n=Se(),o=T(x(n),2);oe(o,{class:`mb-2 w-80`,get value(){return i(V)},set value(e){v(V,e,!0)}});var s=T(o,2);N(s,{variant:`secondary`,type:`submit`,class:`ml-2 p-2`,children:(e,t)=>{l();var n=A(`Attach`);r(e,n)},$$slots:{default:!0}}),f(n),a(`submit`,n,tt),r(e,n)},$$slots:{default:!0}})},$$slots:{default:!0}});var Ct=T(St,2);j(Ct,{get class(){return`relative flex min-h-0 flex-col p-2 pb-16 ${n.class??``}`},children:(e,t)=>{var l=Ie(),d=g(l);u(d,21,()=>i($),C,(e,t,a)=>{let o=b(()=>ft(i(t).createdAt)),l=b(()=>a>0?ft(i($)[a-1].createdAt):null),d=b(()=>pt(i(t).createdAt));var p=Oe(),h=g(p),_=e=>{var t=Ce(),n=x(t),a=x(n,!0);f(n),f(t),y(()=>c(a,i(d))),r(e,t)};S(h,e=>{i(o)&&i(d)&&i(o)!==i(l)&&e(_)});var v=T(h,2),C=x(v),w=x(C),ee=e=>{ue(e,{get trace(){return i(t)}})},E=b(()=>ie(i(t))),O=e=>{{let r=b(()=>de(i($),a)),o=b(()=>n.onAnalyzeTrace?vt:void 0),c=b(()=>n.onRegenerateTrace?yt:void 0),l=b(()=>n.onRevertToState?lt:void 0),u=b(()=>!!n.onSeeVariants&&!M()&&i(t)===i(ht)),d=b(()=>M()&&i(t)===M()?`source`:`none`),f=b(()=>R()===null&&M()&&i(t)===M()?n.onChooseOriginalVariant:void 0),p=b(()=>!!M()&&i(t)===M());le(e,{testCreationMode:`direct`,get trace(){return i(t)},get context(){return n.context},get agentId(){return n.agentId},get promptEditProposalId(){return s()},get testSourceStep(){return i(r)},get testEntries(){return i($)},get analyzeDisabled(){return D()},get onAnalyze(){return i(o)},get onRegenerate(){return i(c)},get onRevert(){return i(l)},get showSeeVariants(){return i(u)},get onSeeVariants(){return n.onSeeVariants},get variantSelectionState(){return i(d)},get onSelectInVariantMode(){return i(f)},get suppressActionRow(){return i(p)}})}},k=b(()=>L(i(t))),A=e=>{{let r=b(()=>ce(i($),a)),o=b(()=>ne(i(t).name)?rt(i($),a):null);fe(e,{testCreationMode:`direct`,get trace(){return i(t)},get agentId(){return n.agentId},get promptEditProposalId(){return s()},get fallbackConversation(){return i(r)},get runtimeContext(){return n.context},get compareTrace(){return i(o)}})}},j=b(()=>re(i(t)));S(w,e=>{i(E)?e(ee):i(k)?e(O,1):i(j)&&e(A,2)}),f(C);var N=T(C,2),P=e=>{var t=De(),a=x(t),o=e=>{var t=we();r(e,t)};S(a,e=>{se()&&e(o)});var s=T(a,2),l=e=>{var t=Te(),n=x(t,!0);f(t),y(()=>c(n,pe())),r(e,t)};S(s,e=>{pe()&&e(l)});var d=T(s,2);u(d,17,ae,e=>e.id,(e,t)=>{var a=Ee(),o=x(a),s=x(o,!0);f(o),f(a),y(()=>{a.disabled=R()!==null,te(a,1,`w-full max-w-[83%] cursor-pointer rounded-lg border border-rc-green-450 bg-transparent p-2 pt-1 text-left text-rc-gray-100 backdrop-blur-md transition-colors hover:bg-rc-green-700 focus:outline-none focus-visible:outline-none disabled:cursor-wait disabled:opacity-70 ${R()===i(t).id?`bg-rc-green-700`:``}`),c(s,i(t).text)}),m(`click`,a,()=>n.onChooseVariant?.(i(t).id)),r(e,a)}),f(t),r(e,t)};S(N,e=>{M()&&i(t)===M()&&e(P)}),f(v),r(e,p)}),f(d),w(d,e=>U=e,()=>U);var h=T(d,2),E=e=>{var t=ke(),i=T(x(t),2),a=T(i,2);f(t),y(()=>i.disabled=!n.onRegenerateVariants||se()||R()!==null),m(`click`,i,()=>n.onRegenerateVariants?.()),m(`click`,a,()=>n.onCancelVariants?.()),r(e,t)},O=e=>{var t=Fe(),s=g(t),l=e=>{var t=Ae(),n=x(t,!0);f(t),y(()=>c(n,i(J))),r(e,t)};S(s,e=>{i(J)&&e(l)});var d=T(s,2),h=x(d),w=x(h),E=x(w),D=e=>{var t=Ne();u(t,23,()=>i(Q),e=>e.text,(e,t,n)=>{var a=Me();u(a,21,()=>i(t).segments,C,(e,t)=>{var n=je(),a=x(n,!0);f(n),y(()=>{te(n,1,p(i(t).matched?`text-rc-green-200`:``)),c(a,i(t).text)}),r(e,n)}),f(a),y(()=>{ee(a,`aria-selected`,i(Z)===i(n)),te(a,1,`w-full select-none border-b border-rc-gray-110 px-3 py-2 text-left font-semibold text-rc-gray-100 last:border-b-0 hover:bg-rc-gray-700/70 ${i(Z)===i(n)?`bg-rc-gray-700/70`:``}`)}),m(`mousedown`,a,e=>{e.preventDefault(),He(i(t))}),r(e,a)}),f(t),r(e,t)};S(E,e=>{i(Ve)&&e(D)});var O=T(E,2);{let e=b(()=>i(q)===`system`?`!border-emerald-500 !pl-[5.5rem] hover:!border-emerald-500 focus:!border-emerald-500`:`!pl-[4.25rem]`),t=b(()=>i(K)?`Generating`:`Enter message...`);oe(O,{variant:`chat`,get class(){return`!text-base !leading-6 !duration-75 ${i(e)??``}`},get placeholder(){return i(t)},autocomplete:`off`,get readonly(){return i(K)},onfocus:Ue,onblur:We,oninput:Ge,onkeydown:Ke,get value(){return i(B)},set value(e){v(B,e,!0)},get el(){return i(G)},set el(e){v(G,e,!0)}})}var k=T(O,2),A=x(k,!0);f(k);var j=T(k,2),M=e=>{var t=Pe(),n=x(t),a=x(n),o=x(a,!0);f(a);var s=T(a),l=x(s,!0);f(s),f(n),f(t),y(()=>{_(n,i(ye)),c(o,i(B)),c(l,i(ze))}),r(e,t)};S(j,e=>{i(Z)!==null&&i(ze)&&e(M)}),f(w);var F=T(w,2);{let e=b(()=>i(K)||!n.agentType);N(F,{size:`small`,variant:`secondary`,get disabled(){return i(e)},onclick:ut,children:(e,t)=>{var i=o(),a=g(i),s=e=>{P(e,{name:`paperclip`})},c=e=>{P(e,{name:`hangup`})};S(a,e=>{n.agentType===`text`?e(s):n.agentType===`voice`&&e(c,1)}),r(e,i)},$$slots:{default:!0}})}var ne=T(F,2),re=e=>{{let t=b(()=>i(K)||!i(gt));N(e,{size:`small`,type:`button`,title:`Generate response`,"aria-label":`Generate response`,get disabled(){return i(t)},class:`inline-flex !w-[59px] items-center justify-center !px-0`,onclick:e=>{e.preventDefault(),bt()},children:(e,t)=>{P(e,{name:`sparkles`})},$$slots:{default:!0}})}},I=e=>{{let t=b(()=>i(q)===`system`?`Send as system`:`Send as user`),n=b(()=>i(q)===`system`?`Send as system`:`Send as user`);N(e,{size:`small`,type:`submit`,get title(){return i(t)},get"aria-label"(){return i(n)},get disabled(){return i(K)},class:`inline-flex !w-[59px] items-center justify-center !px-0`,children:(e,t)=>{P(e,{name:`send`})},$$slots:{default:!0}})}};S(ne,e=>{i(Be)?e(re):e(I,-1)}),f(h),f(d),y(()=>{h.disabled=i(mt),ee(k,`title`,i(q)===`system`?`Switch to user`:`Switch to system`),ee(k,`aria-label`,i(q)===`system`?`Switch to user`:`Switch to system`),k.disabled=i(K),c(A,i(q)===`system`?`System`:`User`)}),a(`submit`,d,$e),m(`click`,k,e=>{e.preventDefault(),e.stopPropagation(),et()}),r(e,t)};S(h,e=>{M()?e(E):e(O,-1)}),a(`scroll`,d,e=>Ze(e.target)),r(e,l)},$$slots:{default:!0}}),r(e,xt),t()}e([`click`,`mousedown`]);var Q=s(`<div class="mt-1 w-max overflow-hidden rounded-lg border border-rc-gray-110 bg-rc-gray-930 shadow-inner-white-soft backdrop-blur-2xl" role="listbox"><!> <!> <!></div>`),Re=s(`<div class="flex h-full items-center justify-center text-sm text-rc-gray-300">Connecting…</div>`),ze=s(`<div class="flex h-full items-center justify-center text-sm text-rc-gray-300">Select an agent to start chatting</div>`),Be=s(`<div class="h-full min-h-0 p-2"><!></div>`),Ve=s(`<div class="relative flex h-full min-h-0 flex-col"><div class="flex flex-none flex-nowrap items-center gap-2 p-2"><!> <div class="ml-auto flex flex-none flex-nowrap items-center gap-2"><!> <!> <!> <!></div></div> <div class="min-h-0 flex-1"><!></div></div>`);function He(e,n){d(n,!0);let{state:a,actions:s}=M(),c=E(!1),u=E(null),p=b(()=>{let e=a.currentStep?.name;return e?Object.values(a.promptEdits).find(t=>t.agentId===a.agentId&&t.step===e)?.id??null:null}),m=E(null),h=null,_=E(!1),y=E(null);b(()=>I.reduce((e,t)=>Math.max(e,ne(t)??0),0)),k(()=>{!I.length&&!ae.length&&i(_)&&v(_,!1)});function C(e){let t=(e||``).trim();return t?t.split(`/`).at(-1)??t:`Agent`}function w(e){if(typeof e!=`number`||!Number.isFinite(e))return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}:${String(t.getSeconds()).padStart(2,`0`)}`}async function ee(e){if(i(c))return;v(c,!0);let t=s.openPopover(`analyze`),n=w(e.createdAt),r=n?` • ${n}`:``,o=`Analysis — ${C(a.agentId)}${r}`;try{let n=await F.agents.analyzeTrace.mutate({agentId:a.agentId,traceId:e.trace?.traceId,eventName:e.trace.eventName,createdAt:e.createdAt,model:e.model,renderedPrompt:e.renderedPrompt,stringifiedConversation:e.stringifiedConversation,response:e.response,stepTrace:e.stepTrace});if(a.edit.popover?.requestId!==t)return;s.setHighlightQuotes(n.quotes);let r=null;try{r=JSON.stringify(n.raw,null,2)}catch{r=null}s.setPopoverReady(t,{title:o,quotes:n.quotes,rationales:n.rationales,parallelCalls:n.parallelCalls,raw:r})}catch(e){console.error(e);let n=typeof e?.message==`string`?e.message:(()=>{try{return JSON.stringify(e)}catch{return String(e)}})();s.setPopoverError(t,n||`Failed to analyze this response`,{raw:n})}finally{v(c,!1)}}function D(e){return e?I:I.map(e=>{if(!re(e))return e;let{receivedPrompt:t,renderedPrompt:n,...r}=e;return r})}function O(e){v(m,e,!0),h&&clearTimeout(h),h=window.setTimeout(()=>{v(m,null),h=null},2e3)}async function te(){try{await navigator.clipboard.writeText(JSON.stringify(ae,null,2)),O(`logs`)}catch(e){console.error(`Failed to copy logs`,e)}}async function j(e){try{await navigator.clipboard.writeText(JSON.stringify(D(e),null,2)),O(e?`with-prompts`:`without-prompts`)}catch(e){console.error(`Failed to copy traces`,e)}}function P(){L(),s.closePopover(),s.newConversation()}function ne(e){let t=e?.bosunTurn;return typeof t==`number`&&t>0?t:null}function ie(e){L();let t=ne(e);if(!t){console.warn(`Cannot regenerate: this response has no turn metadata`);return}s.regenerateFromTurn(t)}function L(){v(u,null)}function oe(e){let t=I.indexOf(e),n=t===-1?null:de(I,t);return n&&n.receivedContext!==void 0?se(n.receivedContext):{}}function ce(e){return oe(e)}async function le(e){let t=a.conversationId;if(!t)return;let n=s.getPromptOverrides();await s.flushPromptSave(),v(u,{sourceTrace:e,choices:[],loading:!0,applyingId:null,error:null},!0);try{let r=await F.agents.generateVariants.mutate({conversationId:t,context:ce(e),promptOverrides:n,count:9});if(!i(u)||i(u).sourceTrace!==e)return;v(u,{...i(u),choices:r,loading:!1,error:null},!0)}catch(t){if(console.error(`Failed to generate variants`,t),!i(u)||i(u).sourceTrace!==e)return;v(u,{...i(u),choices:[],loading:!1,error:typeof t?.message==`string`?t.message:`Failed to generate variants`},!0)}}function ue(e){le(e)}function fe(){s.hangup()}function pe(){let e=i(u)?.sourceTrace;e&&le(e)}async function z(e){let t=a.conversationId;if(!i(u)||!t)return;let n=i(u).choices.find(t=>t.id===e);if(n){v(u,{...i(u),applyingId:e,error:null},!0);try{await F.agents.commitVariant.mutate({conversationId:t,entries:n.entries}),L(),s.selectConversation(t)}catch(e){if(console.error(`Failed to apply variant`,e),!i(u))return;v(u,{...i(u),applyingId:null,error:typeof e?.message==`string`?e.message:`Failed to apply variant`},!0)}}}function B(){L()}k(()=>{let e=i(u),t=a.agentId,n=e?.sourceTrace;!e||!n||(!t||!I.includes(n))&&v(u,null)});var V=Ve(),U=x(V),me=x(U),he=e=>{H(e,{get conversations(){return a.conversations},get currentConversationId(){return a.conversationId},class:`ml-9`,onSelect:e=>s.selectConversation(e)})};S(me,e=>{a.conversations.length>0&&e(he)});var ge=T(me,2),_e=x(ge);{let e=b(()=>!a.context);N(_e,{variant:`secondary`,size:`small`,get disabled(){return i(e)},get"aria-expanded"(){return a.contextPopoverOpen},"aria-haspopup":`dialog`,get onclick(){return s.toggleContextPopover},children:(e,t)=>{l();var n=A(`Show context`);r(e,n)},$$slots:{default:!0}})}var ve=T(_e,2);{let e=b(()=>!I.length&&!ae.length);N(ve,{variant:`secondary`,size:`small`,get disabled(){return i(e)},get"aria-expanded"(){return i(_)},"aria-haspopup":`listbox`,"aria-controls":`roleplay-copy-dropdown`,onclick:e=>{e.stopPropagation(),v(_,!i(_))},get el(){return i(y)},set el(e){v(y,e,!0)},children:(e,t)=>{var n=o(),a=g(n),s=e=>{var t=A(`Copied logs`);r(e,t)},c=e=>{var t=A(`Copied traces (with prompts)`);r(e,t)},l=e=>{var t=A(`Copied traces (without prompts)`);r(e,t)},u=e=>{var t=A(`Copy...`);r(e,t)};S(a,e=>{i(m)===`logs`?e(s):i(m)===`with-prompts`?e(c,1):i(m)===`without-prompts`?e(l,2):e(u,-1)}),r(e,n)},$$slots:{default:!0}})}var W=T(ve,2);R(W,{id:`roleplay-copy-dropdown`,get open(){return i(_)},onClose:()=>v(_,!1),get anchorEl(){return i(y)},placement:`bottom-end`,offset:[0,1],children:e=>{var t=Q(),n=x(t);{let e=b(()=>!ae.length);N(n,{variant:`ghost`,size:`small`,role:`option`,get disabled(){return i(e)},onclick:e=>{e.stopPropagation(),v(_,!1),te()},class:`block rounded-none border-b border-rc-gray-110 py-2 pr-3 text-left backdrop-blur-2xl hover:bg-rc-gray-700 focus:bg-rc-gray-400`,children:(e,t)=>{l();var n=A(`Copy logs`);r(e,n)},$$slots:{default:!0}})}var a=T(n,2);{let e=b(()=>!I.length);N(a,{variant:`ghost`,size:`small`,role:`option`,get disabled(){return i(e)},onclick:e=>{e.stopPropagation(),v(_,!1),j(!0)},class:`block rounded-none border-b border-rc-gray-110 py-2 pr-3 text-left backdrop-blur-2xl hover:bg-rc-gray-700 focus:bg-rc-gray-400`,children:(e,t)=>{l();var n=A(`Copy traces with prompts`);r(e,n)},$$slots:{default:!0}})}var o=T(a,2);{let e=b(()=>!I.length);N(o,{variant:`ghost`,size:`small`,role:`option`,get disabled(){return i(e)},onclick:e=>{e.stopPropagation(),v(_,!1),j(!1)},class:`block rounded-none py-2 pr-3 text-left backdrop-blur-2xl hover:bg-rc-gray-700 focus:bg-rc-gray-400`,children:(e,t)=>{l();var n=A(`Copy traces without prompts`);r(e,n)},$$slots:{default:!0}})}f(t),r(e,t)},$$slots:{default:!0}});var G=T(W,2);N(G,{size:`small`,onclick:P,children:(e,t)=>{l();var n=A(`New chat`);r(e,n)},$$slots:{default:!0}}),f(ge),f(U);var ye=T(U,2),K=x(ye),q=e=>{var t=Re();r(e,t)},J=e=>{var t=ze();r(e,t)},Y=e=>{var t=Be(),n=x(t);{let e=b(()=>i(u)?.sourceTrace??null),t=b(()=>i(u)?.choices??[]),r=b(()=>i(u)?.loading??!1),o=b(()=>i(u)?.applyingId??null),l=b(()=>i(u)?.error??null);Z(n,{class:`h-full min-w-0`,context:null,get agentId(){return a.agentId},get promptEditProposalId(){return i(p)},get agentType(){return a.agentType},onmessage:e=>s.sendChatMessage(e),get analyzeDisabled(){return i(c)},onAnalyzeTrace:ee,onRegenerateTrace:ie,onSeeVariants:ue,onHangup:fe,get variantSourceTrace(){return i(e)},get variantChoices(){return i(t)},get variantLoading(){return i(r)},get variantApplyingId(){return i(o)},get variantError(){return i(l)},onCancelVariants:L,onRegenerateVariants:pe,onChooseOriginalVariant:B,onChooseVariant:z})}f(t),r(e,t)};S(K,e=>{!a.wsLoaded||!a.chatReady?e(q):a.agentId?e(Y,-1):e(J,1)}),f(ye),f(V),r(e,V),t()}export{He as component};