PageSourceSearch

https://hunter.io/assets/Show-1gf6SkIM.js

js hunter.io collected 2026-09-24 07:52:03 UTC 37,011 bytes, 1,237 lines download raw bytes

1(function() {
2	try {
3		var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {};
4		e.SENTRY_RELEASE = { id: "b96dc26" };
5		var n = new e.Error().stack;
6		n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "12119685-403e-4424-9479-cb0187aaa8bf", e._sentryDebugIdIdentifier = "sentry-dbid-12119685-403e-4424-9479-cb0187aaa8bf");
7	} catch (e) {}
8})();
9import { n as __esmMin } from "./rolldown-runtime-sLwMD6dS.js";
10import { Cn as agent_path, Kn as campaigns_path, Mi as init_routes, bn as agent_conversation_path, ma as leads_path } from "./controllers-jdPQjaCB.js";
11import { i as require_compiler_runtime, t as require_jsx_runtime } from "./jsx-runtime-CHSMGLHp.js";
12import { t as require_react } from "./react-CrLPhuc5.js";
13import { J as init_useConversationFlow, Q as useConversationFlow, d as consumeAgentHandoffOnce, f as init_agent_handoff, h as useAgentConversation, m as init_useAgentConversation, p as resetAgentHandoffReadGuard } from "./turbo-mount-DM0tFk1M.js";
14import { a as init_dist, s as usePage } from "./dist-ZlUHm0R7.js";
15import { n as isModifiedClick } from "./modified-click-BdPBMexs.js";
16import { i as init_AgentLanding, n as init_AgentConversationView, r as AgentLanding, t as AgentConversationView } from "./AgentConversationView-DLATISOU.js";
17//#region app/frontend/pages/Agent/flows/flow1.ts
18var FLOW_1_TITLE, FLOW_1;
19function init_flow1() {
20	return (init_flow1 = __esmMin((() => {
21		init_routes();
22		FLOW_1_TITLE = "christiesrealestate.com";
23		FLOW_1 = [
24			{
25				type: "agent_trace",
26				label: "Analyzing christiesrealestate.com…",
27				duration: 2e3,
28				doneLabel: "Analyzed christiesrealestate.com",
29				children: [{
30					icon: "globe",
31					label: "christiesrealestate.com"
32				}]
33			},
34			{
35				type: "delay",
36				ms: 400
37			},
38			{
39				type: "agent_text",
40				text: "I took a look at <strong class=\"fw-medium\">Christie’s International Real Estate</strong> — it’s a luxury real estate brokerage network with a global presence. What would you like to do with this?",
41				html: true
42			},
43			{
44				type: "suggestions",
45				options: [
46					"Find people at Christie’s Real Estate",
47					"Find companies similar to Christie’s Real Estate",
48					"Find people mentioned on this page"
49				]
50			},
51			{
52				type: "agent_text",
53				text: "Good call. I’ll look for companies with a similar profile — B2B-adjacent, luxury market, comparable size, and a similar tech footprint. Let me search."
54			},
55			{
56				type: "agent_trace",
57				label: "Discover · Searching for similar companies…",
58				duration: 3500,
59				doneLabel: "Worked for 6 sec.",
60				children: [{
61					icon: "search",
62					label: "similar_to: christiesrealestate.com"
63				}]
64			},
65			{
66				type: "delay",
67				ms: 400
68			},
69			{
70				type: "agent_text",
71				text: "I found <strong class=\"fw-medium\">642 companies</strong> that match Christie’s profile. Here are the <strong class=\"fw-medium\">top 5</strong> — similar in size, industry positioning, and market focus:",
72				html: true
73			},
74			{
75				type: "company_preview",
76				footer: {
77					label: "637 more companies",
78					ctaLabel: "Preview",
79					sidepanelTitle: "642 companies matching your criteria"
80				},
81				companies: [
82					{
83						name: "Sotheby’s Realty",
84						domain: "sothebysrealty.com",
85						logoUrl: "https://logos.hunter.io/sothebysrealty.com",
86						metas: [
87							{
88								icon: "users",
89								label: "500–1,000"
90							},
91							{
92								icon: "buildings",
93								label: "Luxury Real Estate"
94							},
95							{
96								icon: "map-location-dot",
97								label: "United States"
98							}
99						]
100					},
101					{
102						name: "Engel & Völkers",
103						domain: "engelvoelkers.com",
104						logoUrl: "https://logos.hunter.io/engelvoelkers.com",
105						metas: [
106							{
107								icon: "users",
108								label: "1,000–5,000"
109							},
110							{
111								icon: "buildings",
112								label: "Real Estate"
113							},
114							{
115								icon: "map-location-dot",
116								label: "Germany"
117							}
118						]
119					},
120					{
121						name: "Knight Frank",
122						domain: "knightfrank.com",
123						logoUrl: "https://logos.hunter.io/knightfrank.com",
124						metas: [
125							{
126								icon: "users",
127								label: "1,000–5,000"
128							},
129							{
130								icon: "buildings",
131								label: "Real Estate Advisory"
132							},
133							{
134								icon: "map-location-dot",
135								label: "United Kingdom"
136							}
137						]
138					},
139					{
140						name: "Compass",
141						domain: "compass.com",
142						logoUrl: "https://logos.hunter.io/compass.com",
143						metas: [
144							{
145								icon: "users",
146								label: "5,000–10,000"
147							},
148							{
149								icon: "buildings",
150								label: "Real Estate Technology"
151							},
152							{
153								icon: "map-location-dot",
154								label: "United States"
155							}
156						]
157					},
158					{
159						name: "Savills",
160						domain: "savills.com",
161						logoUrl: "https://logos.hunter.io/savills.com",
162						metas: [
163							{
164								icon: "users",
165								label: "5,000–10,000"
166							},
167							{
168								icon: "buildings",
169								label: "Real Estate Services"
170							},
171							{
172								icon: "map-location-dot",
173								label: "United Kingdom"
174							}
175						]
176					}
177				]
178			},
179			{
180				type: "agent_text",
181				text: "Do these look like the right kind of company, or should I adjust the criteria?"
182			},
183			{
184				type: "suggestions",
185				options: ["These look great", "Adjust the criteria"]
186			},
187			{
188				type: "agent_text",
189				text: "Sure thing. What would you like to adjust? I can filter by location, company size, industry, or anything else."
190			},
191			{ type: "wait_for_user" },
192			{
193				type: "agent_text",
194				text: "Got it — filtering to US-based companies only."
195			},
196			{
197				type: "agent_trace",
198				label: "Discover · Filtering by location…",
199				duration: 2e3,
200				doneLabel: "Worked for 3 sec.",
201				children: [{
202					icon: "filter",
203					label: "location: United States"
204				}]
205			},
206			{
207				type: "delay",
208				ms: 400
209			},
210			{
211				type: "agent_text",
212				text: "That narrows it down to <strong class=\"fw-medium\">284 companies</strong> in the US. Here are the top matches:",
213				html: true
214			},
215			{
216				type: "company_preview",
217				footer: {
218					label: "279 more companies",
219					ctaLabel: "Preview",
220					sidepanelTitle: "284 US companies matching your criteria"
221				},
222				companies: [
223					{
224						name: "Sotheby’s Realty",
225						domain: "sothebysrealty.com",
226						logoUrl: "https://logos.hunter.io/sothebysrealty.com",
227						metas: [
228							{
229								icon: "users",
230								label: "500–1,000"
231							},
232							{
233								icon: "buildings",
234								label: "Luxury Real Estate"
235							},
236							{
237								icon: "map-location-dot",
238								label: "United States"
239							}
240						]
241					},
242					{
243						name: "Compass",
244						domain: "compass.com",
245						logoUrl: "https://logos.hunter.io/compass.com",
246						metas: [
247							{
248								icon: "users",
249								label: "5,000–10,000"
250							},
251							{
252								icon: "buildings",
253								label: "Real Estate Technology"
254							},
255							{
256								icon: "map-location-dot",
257								label: "United States"
258							}
259						]
260					},
261					{
262						name: "Douglas Elliman",
263						domain: "elliman.com",
264						logoUrl: "https://logos.hunter.io/elliman.com",
265						metas: [
266							{
267								icon: "users",
268								label: "1,000–5,000"
269							},
270							{
271								icon: "buildings",
272								label: "Luxury Real Estate"
273							},
274							{
275								icon: "map-location-dot",
276								label: "United States"
277							}
278						]
279					},
280					{
281						name: "The Agency",
282						domain: "theagencyre.com",
283						logoUrl: "https://logos.hunter.io/theagencyre.com",
284						metas: [
285							{
286								icon: "users",
287								label: "500–1,000"
288							},
289							{
290								icon: "buildings",
291								label: "Real Estate Brokerage"
292							},
293							{
294								icon: "map-location-dot",
295								label: "United States"
296							}
297						]
298					},
299					{
300						name: "Coldwell Banker",
301						domain: "coldwellbanker.com",
302						logoUrl: "https://logos.hunter.io/coldwellbanker.com",
303						metas: [
304							{
305								icon: "users",
306								label: "5,000–10,000"
307							},
308							{
309								icon: "buildings",
310								label: "Real Estate Services"
311							},
312							{
313								icon: "map-location-dot",
314								label: "United States"
315							}
316						]
317					}
318				]
319			},
320			{
321				type: "agent_text",
322				text: "Looking better? Want me to find the right contacts at these companies?"
323			},
324			{
325				type: "suggestions",
326				options: ["Find contacts", "Adjust further"]
327			},
328			{
329				type: "agent_text",
330				text: "Who are you looking to reach — what role or seniority level?"
331			},
332			{ type: "wait_for_user" },
333			{
334				type: "agent_text",
335				text: "Got it — marketing managers. Let me search across these companies."
336			},
337			{
338				type: "agent_trace",
339				label: "Discover · Searching for marketing managers…",
340				duration: 4e3,
341				doneLabel: "Worked for 8 sec.",
342				children: [{
343					icon: "search",
344					label: "role: marketing manager, 284 companies"
345				}]
346			},
347			{
348				type: "delay",
349				ms: 400
350			},
351			{
352				type: "agent_text",
353				text: "I found <strong class=\"fw-medium\">235 people</strong> across these companies. Here’s a preview — a mix of marketing managers, heads of marketing, and directors:",
354				html: true
355			},
356			{
357				type: "person_preview",
358				footer: {
359					label: "230 more",
360					ctaLabel: "Preview",
361					sidepanelTitle: "235 people matching your criteria"
362				},
363				people: [
364					{
365						name: "Sarah L.",
366						title: "Head of Marketing",
367						companyName: "Sotheby’s Realty",
368						companyLogoUrl: "https://logos.hunter.io/sothebysrealty.com",
369						isDecisionMaker: true
370					},
371					{
372						name: "James K.",
373						title: "Digital Marketing Lead",
374						companyName: "Compass",
375						companyLogoUrl: "https://logos.hunter.io/compass.com",
376						isDecisionMaker: true
377					},
378					{
379						name: "Rebecca M.",
380						title: "Marketing Manager",
381						companyName: "Douglas Elliman",
382						companyLogoUrl: "https://logos.hunter.io/elliman.com"
383					},
384					{
385						name: "Andrew P.",
386						title: "Marketing Coordinator",
387						companyName: "The Agency",
388						companyLogoUrl: "https://logos.hunter.io/theagencyre.com"
389					},
390					{
391						name: "Karen W.",
392						title: "Brand Marketing Manager",
393						companyName: "Coldwell Banker",
394						companyLogoUrl: "https://logos.hunter.io/coldwellbanker.com"
395					}
396				]
397			},
398			{
399				type: "agent_text",
400				text: "I noticed <strong class=\"fw-medium\">96 of these are decision-makers</strong> (VPs, directors, and C-level). Filtering to decision-makers only would give you a much higher reply rate.",
401				html: true
402			},
403			{
404				type: "suggestions",
405				options: [
406					"Keep only decision-makers",
407					"Filter by location",
408					"Save all 235"
409				]
410			},
411			{
412				type: "agent_text",
413				text: "Right move — I’ll narrow it down to decision-makers only. Filtering out individual contributors and junior roles."
414			},
415			{
416				type: "agent_trace",
417				label: "Discover · Filtering decision-makers…",
418				duration: 2500,
419				doneLabel: "Worked for 3 sec.",
420				children: [{
421					icon: "filter",
422					label: "seniority: decision-maker"
423				}]
424			},
425			{
426				type: "delay",
427				ms: 400
428			},
429			{
430				type: "agent_text",
431				text: "Done — I narrowed it down to <strong class=\"fw-medium\">96 decision-makers</strong>. Here’s the updated preview, mostly VPs, directors, and heads of marketing:",
432				html: true
433			},
434			{
435				type: "person_preview",
436				footer: {
437					label: "91 more",
438					ctaLabel: "Preview",
439					sidepanelTitle: "96 decision-makers matching your criteria"
440				},
441				people: [
442					{
443						name: "Sarah L.",
444						title: "Head of Marketing",
445						companyName: "Sotheby’s Realty",
446						companyLogoUrl: "https://logos.hunter.io/sothebysrealty.com",
447						isDecisionMaker: true
448					},
449					{
450						name: "James K.",
451						title: "VP of Marketing",
452						companyName: "Compass",
453						companyLogoUrl: "https://logos.hunter.io/compass.com",
454						isDecisionMaker: true
455					},
456					{
457						name: "Laura H.",
458						title: "Marketing Director",
459						companyName: "Douglas Elliman",
460						companyLogoUrl: "https://logos.hunter.io/elliman.com",
461						isDecisionMaker: true
462					},
463					{
464						name: "David C.",
465						title: "Chief Marketing Officer",
466						companyName: "The Agency",
467						companyLogoUrl: "https://logos.hunter.io/theagencyre.com",
468						isDecisionMaker: true
469					},
470					{
471						name: "Rachel T.",
472						title: "Head of Brand & Marketing",
473						companyName: "Coldwell Banker",
474						companyLogoUrl: "https://logos.hunter.io/coldwellbanker.com",
475						isDecisionMaker: true
476					}
477				]
478			},
479			{
480				type: "agent_text",
481				text: "Would you like to save these to a list or refine further?"
482			},
483			{
484				type: "suggestions",
485				options: ["Save to a list", "Refine further"]
486			},
487			{
488				type: "agent_text",
489				text: "Saving these contacts will reveal their full details — verified email addresses, phone numbers, and more. Here’s the cost breakdown:"
490			},
491			{
492				type: "credit_confirmation",
493				title: "Ready to save 96 contacts?",
494				description: "Revealing full contact details will use 96 credits. You have 450 credits remaining this month.",
495				credits: 96,
496				confirmLabel: "Save all"
497			},
498			{
499				type: "agent_trace",
500				label: "Leads · Saving contacts…",
501				duration: 3e3,
502				doneLabel: "Saved 96 contacts · 96 credits used",
503				children: [{
504					icon: "coin",
505					label: "96 credits"
506				}]
507			},
508			{
509				type: "delay",
510				ms: 400
511			},
512			{
513				type: "agent_text",
514				text: "All done! I saved <strong class=\"fw-medium\">96 decision-makers</strong> to a new list. Pretty solid pipeline — here’s your list:",
515				html: true
516			},
517			{
518				type: "resource_link",
519				data: {
520					productIcon: "h-leads",
521					title: "Real Estate Marketing Decision-Makers",
522					subtitle: "Leads · 96 people",
523					href: leads_path(),
524					ctaLabel: "Open list"
525				}
526			},
527			{
528				type: "agent_text",
529				text: "You’ve got 96 decision-makers ready to contact. What’s next?"
530			},
531			{
532				type: "suggestions",
533				options: [
534					"Write an outreach sequence",
535					"Find more people like this",
536					"Go to the list"
537				]
538			},
539			{
540				type: "agent_text",
541				text: "Let me draft a 3-step outreach sequence tailored to real estate marketing leaders. Give me a moment."
542			},
543			{
544				type: "agent_trace",
545				label: "Sequences · Writing draft…",
546				duration: 5e3,
547				doneLabel: "Worked for 12 sec.",
548				children: [{
549					icon: "pen",
550					label: "3-step email sequence"
551				}]
552			},
553			{
554				type: "delay",
555				ms: 400
556			},
557			{
558				type: "agent_text",
559				text: "Here’s what I put together — a concise 3-step sequence with a personal opener, a value-focused follow-up, and a soft close:"
560			},
561			{
562				type: "sequence_preview",
563				defaultExpandedIndex: null,
564				steps: [
565					{
566						label: "Opening email",
567						subject: "Quick question about {{company}}’s marketing approach",
568						body: "Hey {{first_name}},\n\nI noticed {{company}} has been expanding its digital presence — impressive work. I’m curious how y
568our team is thinking about outbound as part of the growth playbook.\n\nWe’ve been helping real estate brands like yours connect with the right prospects faster. Would love to share a few ideas if you’re open to it.\n\nBest,\n{{sender_first_name}}"
569					},
570					{
571						label: "Follow-up #1 · 3 days later",
572						subject: "Re: Quick question about {{company}}’s marketing approach",
573						body: "Hi {{first_name}},\n\nJust wanted to follow up on my previous note. I know things move fast in real estate marketing, but I think there’s a quick win here for {{company}}.\n\nWould you have 15 minutes this week for a brief chat?"
574					},
575					{
576						label: "Follow-up #2 · 5 days later",
577						subject: "One last thought",
578						body: "Hey {{first_name}},\n\nI’ll keep this short — I don’t want to be a bother. If the timing isn’t right, no worries at all.\n\nBut if you’re curious about how other luxury real estate brands are approaching outbound, I’m here whenever you’re ready.\n\nCheers,\n{{sender_first_name}}"
579					}
580				]
581			},
582			{
583				type: "agent_text",
584				text: "Does this look good to you, or should I adjust the copy?"
585			},
586			{
587				type: "suggestions",
588				options: ["Looks good", "Adjust the copy"]
589			},
590			{
591				type: "agent_trace",
592				label: "Sequences · Creating sequence…",
593				duration: 2e3,
594				doneLabel: "Sequence created"
595			},
596			{
597				type: "delay",
598				ms: 400
599			},
600			{
601				type: "agent_text",
602				text: "Done — your 3-step sequence is ready to go. I’ve added the <strong class=\"fw-medium\">96 contacts</strong> from your leads list as recipients so you can launch it whenever you’re ready.",
603				html: true
604			},
605			{
606				type: "resource_link",
607				data: {
608					productIcon: "h-sequences",
609					title: "Real Estate Marketing Outreach",
610					subtitle: "Sequence · 96 recipients",
611					href: campaigns_path(),
612					ctaLabel: "Open sequence",
613					tag: "Draft"
614				}
615			},
616			{
617				type: "agent_text",
618				text: "Anything else you’d like to do? I can help you refine the sequence, find more contacts, or explore other companies."
619			},
620			{
621				type: "suggestions",
622				options: [
623					"Launch the sequence",
624					"Add more contacts",
625					"Start a new search"
626				]
627			}
628		];
629	})))();
630}
631//#endregion
632//#region app/frontend/pages/Agent/flows/flow2.ts
633var FLOW_2_TITLE, FLOW_2;
634function init_flow2() {
635	return (init_flow2 = __esmMin((() => {
636		init_routes();
637		FLOW_2_TITLE = "SaaS Marketing Decision-Makers";
638		FLOW_2 = [
639			{
640				type: "agent_text",
641				text: "Good idea — sequencing 1,043 contacts at once usually hurts reply rates. Let me analyze the list and find natural clusters."
642			},
643			{
644				type: "agent_trace",
645				label: "Leads · Analyzing clusters…",
646				duration: 4e3,
647				doneLabel: "Worked for 7 sec.",
648				children: [{
649					icon: "layer-group",
650					label: "list: SaaS Marketing Decision-Makers"
651				}]
652			},
653			{
654				type: "delay",
655				ms: 400
656			},
657			{
658				type: "agent_text",
659				text: "I found <strong class=\"fw-medium\">4 natural clusters</strong> based on seniority, industry, and company stage. Each will become its own list:",
660				html: true
661			},
662			{
663				type: "list_preview",
664				lists: [
665					{
666						name: "Senior decision-makers",
667						count: 301
668					},
669					{
670						name: "Mid-level managers",
671						count: 312
672					},
673					{
674						name: "Executives at SaaS companies",
675						count: 187
676					},
677					{
678						name: "Founders of early-stage startups",
679						count: 143
680					}
681				]
682			},
683			{
684				type: "agent_text",
685				text: "The remaining <strong class=\"fw-medium\">100 contacts</strong> that don’t fit a clear cluster will stay in your original “SaaS Marketing Decision-Makers” list, untouched. Does this breakdown make sense, or would you like to adjust any of the clusters?",
686				html: true
687			},
688			{ type: "wait_for_user" },
689			{
690				type: "agent_text",
691				text: "Got it — merging those two together."
692			},
693			{
694				type: "agent_trace",
695				label: "Leads · Updating clusters…",
696				duration: 1500,
697				doneLabel: "Clusters updated",
698				children: [{
699					icon: "merge",
700					label: "SaaS companies + Early-stage startups"
701				}]
702			},
703			{
704				type: "delay",
705				ms: 400
706			},
707			{
708				type: "agent_text",
709				text: "Done. That gives you <strong class=\"fw-medium\">3 focused lists</strong>. Startup & SaaS is now 330 contacts:",
710				html: true
711			},
712			{
713				type: "list_preview",
714				lists: [
715					{
716						name: "Senior decision-makers",
717						count: 301
718					},
719					{
720						name: "Mid-level managers",
721						count: 312
722					},
723					{
724						name: "Startup & SaaS",
725						count: 330
726					}
727				]
728			},
729			{
730				type: "agent_text",
731				text: "The remaining <strong class=\"fw-medium\">100 contacts</strong> stay in your original list. What would you like to do next?",
732				html: true
733			},
734			{
735				type: "suggestions",
736				options: ["Create these 3 lists", "Refine further"]
737			},
738			{
739				type: "agent_trace",
740				label: "Leads · Creating lists…",
741				duration: 3e3,
742				doneLabel: "3 lists created",
743				children: [{
744					icon: "layer-group",
745					label: "3 lists from 943 contacts"
746				}]
747			},
748			{
749				type: "side_effect",
750				key: "lists_created"
751			},
752			{
753				type: "delay",
754				ms: 400
755			},
756			{
757				type: "agent_text",
758				text: "All done! Here's what was created:"
759			},
760			{
761				type: "resource_link",
762				data: {
763					productIcon: "h-leads",
764					title: "Senior decision-makers",
765					subtitle: "Leads · 301 people",
766					href: leads_path(),
767					ctaLabel: "Open list"
768				}
769			},
770			{
771				type: "resource_link",
772				data: {
773					productIcon: "h-leads",
774					title: "Mid-level managers",
775					subtitle: "Leads · 312 people",
776					href: leads_path(),
777					ctaLabel: "Open list"
778				}
779			},
780			{
781				type: "resource_link",
782				data: {
783					productIcon: "h-leads",
784					title: "Startup & SaaS",
785					subtitle: "Leads · 330 people",
786					href: leads_path(),
787					ctaLabel: "Open list"
788				}
789			},
790			{
791				type: "agent_text",
792				text: "The remaining <strong class=\"fw-medium\">100 contacts</strong> stay in your original \"SaaS Marketing Decision-Makers\" list.",
793				html: true
794			},
795			{
796				type: "agent_text",
797				text: "Your lists are ready. Want me to prepare a sequence for each one?"
798			},
799			{ type: "wait_for_user" },
800			{
801				type: "agent_text",
802				text: "Should each list get its own tailored sequence, or would you prefer a shared template with personalized fields?"
803			},
804			{
805				type: "suggestions",
806				options: ["Tailored per list", "Shared template"]
807			},
808			{
809				type: "agent_text",
810				text: "Before I start — a heads up on list sizes:"
811			},
812			{
813				type: "alert",
814				title: "Large lists may reduce reply rates",
815				description: "Senior decision-makers (301) and mid-level managers (312) are both larger than ideal for a first send. Sequences with 21–50 recipients get a 6.2% reply rate vs. 2.4% for 500+ — that's a 158% difference.",
816				variant: "info"
817			},
818			{
819				type: "agent_text",
820				text: "I'd suggest launching an initial campaign of ~100 contacts per list first, measuring results, and A/B testing subject lines before rolling out to the full list. What do you think?"
821			},
822			{
823				type: "suggestions",
824				options: ["First-wave of 100 per list", "Sequence the full lists"]
825			},
826			{
827				type: "agent_text",
828				text: "Smart move. I'll draft 3 tailored sequences — one for each audience — and set up the first wave of 100 contacts each."
829			},
830			{
831				type: "agent_trace",
832				label: "Sequences · Writing 3 drafts…",
833				duration: 8e3,
834				doneLabel: "Worked for 18 sec.",
835				children: [{
836					icon: "pen",
837					label: "3 tailored sequences"
838				}]
839			},
840			{
841				type: "delay",
842				ms: 400
843			},
844			{
845				type: "agent_text",
846				text: "Here are the 3 drafts. Each one is <strong class=\"fw-medium\">tailored to its audience</strong> — different angle, different tone:",
847				html: true
848			},
849			{
850				type: "agent_text",
851				text: "Sequence 1 — <strong class=\"fw-medium\">Senior decision-makers</strong> (100 of 301):",
852				html: true
853			},
854			{
855				type: "sequence_preview",
856				defaultExpandedIndex: null,
857				steps: [
858					{
859						label: "Opening email",
860						subject: "A quick thought on {{company}}'s outbound strategy",
861						body: "Hey {{first_name}},\n\nI've been following {{company}}'s growth — impressive trajectory. At your level, I imagine outbound efficie
861ncy is always on the radar.\n\nWe've helped companies like yours increase reply rates by 3× with more targeted prospecting. Worth a 10-minute conversation?\n\nBest,\n{{sender_first_name}}"
862					},
863					{
864						label: "Follow-up #1 · 3 days later",
865						subject: "Re: A quick thought on {{company}}'s outbound strategy",
866						body: "Hi {{first_name}},\n\nJust circling back — I know your inbox is busy. Happy to share a one-pager on what we've seen work for teams your size.\n\nWould that be useful?"
867					},
868					{
869						label: "Follow-up #2 · 5 days later",
870						subject: "Last note from me",
871						body: "Hey {{first_name}},\n\nI'll keep this brief — if the timing isn't right, no worries. But if outbound is on your roadmap this quarter, I'd love to help.\n\nCheers,\n{{sender_first_name}}"
872					}
873				]
874			},
875			{
876				type: "agent_text",
877				text: "Sequence 2 — <strong class=\"fw-medium\">Mid-level managers</strong> (100 of 312):",
878				html: true
879			},
880			{
881				type: "sequence_preview",
882				defaultExpandedIndex: null,
883				steps: [
884					{
885						label: "Opening email",
886						subject: "Making outbound easier for {{company}}",
887						body: "Hey {{first_name}},\n\nRunning outbound at scale is tough — especially when you're juggling lead quality, personalization, and deliverability all at once.\n\nWe've built tools that help marketing managers like you find verified contacts and launch sequences faster. Curious if that resonates?\n\nBest,\n{{sender_first_name}}"
888					},
889					{
890						label: "Follow-up #1 · 3 days later",
891						subject: "Re: Making outbound easier for {{company}}",
892						body: "Hi {{first_name}},\n\nQuick follow-up — I wanted to share how teams similar to {{company}} are saving 5+ hours per week on prospecting.\n\nWorth a quick look?"
893					},
894					{
895						label: "Follow-up #2 · 4 days later",
896						subject: "One last idea",
897						body: "Hey {{first_name}},\n\nLast note from me — if you're evaluating outbound tools this quarter, I'd love to be part of the conversation.\n\nNo pressure either way.\n\nCheers,\n{{sender_first_name}}"
898					}
899				]
900			},
901			{
902				type: "agent_text",
903				text: "Sequence 3 — <strong class=\"fw-medium\">Startup & SaaS</strong> (100 of 330):",
904				html: true
905			},
906			{
907				type: "sequence_preview",
908				defaultExpandedIndex: null,
909				steps: [
910					{
911						label: "Opening email",
912						subject: "Outbound for fast-moving teams like {{company}}",
913						body: "Hey {{first_name}},\n\nStartups move fast — and I've seen early-stage teams waste weeks building lead lists manually when they could be closing.\n\nWe help teams like {{company}} go from zero to first outbound campaign in under an hour. Interested in seeing how?\n\nBest,\n{{sender_first_name}}"
914					},
915					{
916						label: "Follow-up #1 · 2 days later",
917						subject: "Re: Outbound for fast-moving teams like {{company}}",
918						body: "Hi {{first_name}},\n\nJust a quick bump — I know things move fast at {{company}}. If outbound is a priority this month, I can show you how to get results in days, not weeks.\n\n15 minutes?"
919					},
920					{
921						label: "Follow-up #2 · 4 days later",
922						subject: "Worth a look?",
923						body: "Hey {{first_name}},\n\nLast one from me — if now's not the time, totally get it. But if you're curious, here's a 2-minute overview of what we do.\n\nCheers,\n{{sender_first_name}}"
924					}
925				]
926			},
927			{
928				type: "agent_text",
929				text: "Do these feel right for each audience, or would you like to adjust the angle for any of them?"
930			},
931			{ type: "wait_for_user" },
932			{
933				type: "agent_text",
934				text: "Got it — making the decision-makers version more direct and cutting the fluff."
935			},
936			{
937				type: "agent_trace",
938				label: "Sequences · Rewriting draft…",
939				duration: 3e3,
940				doneLabel: "Draft updated",
941				children: [{
942					icon: "pen",
943					label: "Senior decision-makers · Opening email"
944				}]
945			},
946			{
947				type: "delay",
948				ms: 400
949			},
950			{
951				type: "agent_text",
952				text: "Here's the updated opening for Senior decision-makers — sharper and more direct:"
953			},
954			{
955				type: "sequence_preview",
956				defaultExpandedIndex: 0,
957				steps: [
958					{
959						label: "Opening email (updated)",
960						subject: "{{company}} + better outbound — quick question",
961						body: "{{first_name}},\n\nI'll be direct: {{company}} is growing fast, and I think your outbound could be growing faster.\n\nWe help teams like yours find the right contacts, verify emails, and launch sequences — all in one place. Three of your competitors are already using us.\n\n10 minutes to see if it fits?\n\n{{sender_first_name}}"
962					},
963					{
964						label: "Follow-up #1 · 3 days later",
965						subject: "Re: {{company}} + better outbound — quick question",
966						body: "Hi {{first_name}},\n\nJust circling back — I know your inbox is busy. Happy to share a one-pager on what we've seen work for teams your size.\n\nWould that be useful?"
967					},
968					{
969						label: "Follow-up #2 · 5 days later",
970						subject: "Last note from me",
971						body: "Hey {{first_name}},\n\nI'll keep this brief — if the timing isn't right, no worries. But if outbound is on your roadmap this quarter, I'd love to help.\n\nCheers,\n{{sender_first_name}}"
972					}
973				]
974			},
975			{
976				type: "agent_text",
977				text: "Better? If you're happy with all three, I can create the sequences now."
978			},
979			{ type: "wait_for_user" },
980			{
981				type: "agent_trace",
982				label: "Sequences · Creating 3 sequences…",
983				duration: 4e3,
984				doneLabel: "3 sequences created",
985				children: [{
986					icon: "paper-plane",
987					label: "100 recipients each"
988				}]
989			},
990			{
991				type: "delay",
992				ms: 400
993			},
994			{
995				type: "agent_text",
996				text: "Done — here's what was created:"
997			},
998			{
999				type: "resource_link",
1000				data: {
1001					productIcon: "h-sequences",
1002					title: "Senior decision-makers",
1003					subtitle: "Sequence · 100 recipients",
1004					href: campaigns_path(),
1005					ctaLabel: "Open sequence",
1006					tag: "Draft"
1007				}
1008			},
1009			{
1010				type: "resource_link",
1011				data: {
1012					productIcon: "h-sequences",
1013					title: "Mid-level managers",
1014					subtitle: "Sequence · 100 recipients",
1015					href: campaigns_path(),
1016					ctaLabel: "Open sequence",
1017					tag: "Draft"
1018				}
1019			},
1020			{
1021				type: "resource_link",
1022				data: {
1023					productIcon: "h-sequences",
1024					title: "Startup & SaaS",
1025					subtitle: "Sequence · 100 recipients",
1026					href: campaigns_path(),
1027					ctaLabel: "Open sequence",
1028					tag: "Draft"
1029				}
1030			},
1031			{
1032				type: "agent_text",
1033				text: "None of these sequences are active yet — they're all in draft. The remaining contacts in each list are ready for a second w
1033ave once you've reviewed the results from this first send."
1034			},
1035			{
1036				type: "agent_text",
1037				text: "What would you like to do next?"
1038			},
1039			{
1040				type: "suggestions",
1041				options: [
1042					"Review the sequences",
1043					"Launch the first wave",
1044					"Go back to the list"
1045				]
1046			}
1047		];
1048	})))();
1049}
1050//#endregion
1051//#region app/frontend/pages/Agent/Show.tsx
1052function HandoffConversation(t0) {
1053	const $ = (0, import_compiler_runtime.c)(5);
1054	const { handoff } = t0;
1055	const isFlow2 = handoff.flowId === "flow-2";
1056	let t1;
1057	if ($[0] !== handoff.items || $[1] !== handoff.stepIndex) {
1058		t1 = {
1059			items: handoff.items,
1060			stepIndex: handoff.stepIndex
1061		};
1062		$[0] = handoff.items;
1063		$[1] = handoff.stepIndex;
1064		$[2] = t1;
1065	} else t1 = $[2];
1066	const flow = useConversationFlow(isFlow2 ? FLOW_2 : FLOW_1, isFlow2 ? FLOW_2_TITLE : FLOW_1_TITLE, void 0, void 0, t1);
1067	let t2;
1068	if ($[3] !== flow) {
1069		t2 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AgentConversationView, {
1070			flow,
1071			contentClassName: "d-flex flex-column"
1072		});
1073		$[3] = flow;
1074		$[4] = t2;
1075	} else t2 = $[4];
1076	return t2;
1077}
1078function LiveConversation(t0) {
1079	const $ = (0, import_compiler_runtime.c)(15);
1080	const { initialMessage, initialMessages, chatId, title, model, initialFiles, initialMentions, ignorePageConversation, onLiveConversation } = t0;
1081	let t1;
1082	if ($[0] !== chatId || $[1] !== initialFiles || $[2] !== initialMentions || $[3] !== initialMessage || $[4] !== initialMessages || $[5] !== model || $[6] !== title) {
1083		t1 = {
1084			initialMessage,
1085			initialMessages,
1086			chatId,
1087			title,
1088			model,
1089			initialFiles,
1090			initialMentions
1091		};
1092		$[0] = chatId;
1093		$[1] = initialFiles;
1094		$[2] = initialMentions;
1095		$[3] = initialMessage;
1096		$[4] = initialMessages;
1097		$[5] = model;
1098		$[6] = title;
1099		$[7] = t1;
1100	} else t1 = $[7];
1101	const flow = useAgentConversation(t1);
1102	let t2;
1103	let t3;
1104	if ($[8] !== flow.liveConversation || $[9] !== onLiveConversation) {
1105		t2 = () => onLiveConversation?.(flow.liveConversation);
1106		t3 = [flow.liveConversation, onLiveConversation];
1107		$[8] = flow.liveConversation;
1108		$[9] = onLiveConversation;
1109		$[10] = t2;
1110		$[11] = t3;
1111	} else {
1112		t2 = $[10];
1113		t3 = $[11];
1114	}
1115	(0, import_react.useEffect)(t2, t3);
1116	let t4;
1117	if ($[12] !== flow || $[13] !== ignorePageConversation) {
1118		t4 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AgentConversationView, {
1119			flow,
1120			contentClassName: "d-flex flex-column",
1121			ignorePageConversation
1122		});
1123		$[12] = flow;
1124		$[13] = ignorePageConversation;
1125		$[14] = t4;
1126	} else t4 = $[14];
1127	return t4;
1128}
1129function Show({ conversationId, initialMessages = [], conversationTitle = null, availableModels = [], defaultModel = "" }) {
1130	const handoff = (0, import_react.useMemo)(() => consumeAgentHandoffOnce(), []);
1131	const hasTranscript = initialMessages.length > 0;
1132	const initialMessage = (0, import_react.useMemo)(() => hasTranscript ? void 0 : new URLSearchParams(window.location.search).get("q") ?? void 0, [hasTranscript]);
1133	const chatId = conversationTitle != null && conversationId != null && /^\d+$/.test(String(conversationId)) ? Number(conversationId) : null;
1134	(0, import_react.useEffect)(() => {
1135		return () => resetAgentHandoffReadGuard();
1136	}, []);
1137	const [newChat, setNewChat] = (0, import_react.useState)(null);
1138	const conversations = usePage().props.conversations;
1139	const renderedFor = conversationId ?? null;
1140	const opener = newChat?.from === renderedFor ? newChat : null;
1141	(0, import_react.useEffect)(() => {
1142		const onClick = (event) => {
1143			if (event.defaultPrevented || isModifiedClick(event)) return;
1144			const target = event.target;
1145			if (!(target instanceof Element)) return;
1146			const anchor = target.closest("a");
1147			if (anchor?.getAttribute("href") !== agent_path()) return;
1148			if (anchor.target && anchor.target !== "_self") return;
1149			event.preventDefault();
1150			if (window.location.pathname !== agent_path()) window.history.pushState(null, "", agent_path());
1151			setNewChat((current) => ({
1152				from: renderedFor,
1153				model: defaultModel || availableModels[0]?.value || "",
1154				started: current?.from === renderedFor ? current.started ?? null : null
1155			}));
1156		};
1157		document.addEventListener("click", onClick, true);
1158		return () => document.removeEventListener("click", onClick, true);
1159	}, [
1160		availableModels,
1161		defaultModel,
1162		renderedFor
1163	]);
1164	(0, import_react.useEffect)(() => {
1165		const onPopState = () => {
1166			if (window.location.pathname === agent_path()) setNewChat((current_0) => current_0 ? {
1167				...current_0,
1168				message: void 0,
1169				files: void 0,
1170				mentions: void 0
1171			} : current_0);
1172			else setNewChat(null);
1173		};
1174		window.addEventListener("popstate", onPopState);
1175		return () => window.removeEventListener("popstate", onPopState);
1176	}, []);
1177	const openNewChat = (text, files, mentions, model) => {
1178		setNewChat((current_1) => ({
1179			from: renderedFor,
1180			started: current_1?.started ?? null,
1181			message: text,
1182			files,
1183			mentions,
1184			model
1185		}));
1186		const url = agent_conversation_path("new") + (text ? "?q=" + encodeURIComponent(text) : "");
1187		window.history.pushState({ agentPhase: "conversation" }, "", url);
1188	};
1189	const noteStartedConversation = (conversation) => setNewChat((current_2) => current_2 && current_2.started !== conversation ? {
1190		...current_2,
1191		started: conversation
1192	} : current_2);
1193	if (handoff) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(HandoffConversation, { handoff });
1194	if (opener && opener.message === void 0 && opener.files === void 0) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AgentLanding, {
1195		conversations,
1196		availableModels,
1197		defaultModel,
1198		startedConversation: opener.started ?? null,
1199		onSubmit: openNewChat
1200	});
1201	if (opener) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LiveConversation, {
1202		initialMessage: opener.message,
1203		initialMessages: [],
1204		chatId: null,
1205		model: opener.model,
1206		initialFiles: opener.files,
1207		initialMentions: opener.mentions,
1208		ignorePageConversation: true,
1209		onLiveConversation: noteStartedConversation
1210	}, "new-chat");
1211	return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LiveConversation, {
1212		initialMessage,
1213		initialMessages,
1214		chatId,
1215		title: conversationTitle ?? void 0
1216	}, conversationId ?? "new");
1217}
1218var import_compiler_runtime, import_react, import_jsx_runtime;
1219function init_Show() {
1220	return (init_Show = __esmMin((() => {
1221		import_compiler_runtime = require_compiler_runtime();
1222		import_react = require_react();
1223		init_dist();
1224		init_AgentConversationView();
1225		init_AgentLanding();
1226		init_routes();
1227		init_useAgentConversation();
1228		init_useConversationFlow();
1229		init_flow1();
1230		init_flow2();
1231		init_agent_handoff();
1232		import_jsx_runtime = require_jsx_runtime();
1233	})))();
1234}
1235//#endregion
1236init_Show();
1237export { Show as default };

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.