@tangle-network/sandbox-ui 0.3.3 → 0.3.5

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.
package/dist/pages.js CHANGED
@@ -291,9 +291,328 @@ function BillingPage({
291
291
  ] }) });
292
292
  }
293
293
 
294
- // src/pages/pricing-page.tsx
294
+ // src/pages/provisioning-wizard.tsx
295
295
  import * as React2 from "react";
296
296
  import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
297
+ function MaterialIcon({ name, className }) {
298
+ return /* @__PURE__ */ jsx2("span", { className: cn("material-symbols-outlined", className), style: { fontVariationSettings: "'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24" }, children: name });
299
+ }
300
+ var defaultEnvironments = [
301
+ { id: "node", name: "Node.js", description: "v20.x LTS with optimized runtime for asynchronous event-driven agents.", icon: /* @__PURE__ */ jsx2("span", { className: "text-green-400 text-2xl font-bold", children: "N" }), color: "green" },
302
+ { id: "python", name: "Python", description: "v3.11 pre-installed with PyTorch and common data science libraries.", icon: /* @__PURE__ */ jsx2("span", { className: "text-blue-400 text-2xl font-bold", children: "Py" }), color: "blue" },
303
+ { id: "ubuntu", name: "Ubuntu", description: "Full 22.04 LTS terminal access for custom containerized workloads.", icon: /* @__PURE__ */ jsx2("span", { className: "text-orange-400 text-2xl font-bold", children: "U" }), color: "orange" }
304
+ ];
305
+ var STEPS = ["Stack", "Resources", "Agent", "Review"];
306
+ var CPU_MIN = 0.5;
307
+ var CPU_MAX = 8;
308
+ var RAM_MIN = 2;
309
+ var RAM_MAX = 32;
310
+ var STORAGE_MIN = 20;
311
+ var STORAGE_MAX = 512;
312
+ function calcCost(cpu, ram) {
313
+ const cost = cpu * 0.045 + ram * 5e-3;
314
+ return cost.toFixed(2);
315
+ }
316
+ function ProvisioningWizard({
317
+ environments = defaultEnvironments,
318
+ onSubmit,
319
+ onBack,
320
+ className
321
+ }) {
322
+ const [step, setStep] = React2.useState(0);
323
+ const [selectedEnv, setSelectedEnv] = React2.useState(environments[0]?.id ?? "");
324
+ const [cpuCores, setCpuCores] = React2.useState(4);
325
+ const [ramGB, setRamGB] = React2.useState(16);
326
+ const [storageGB, setStorageGB] = React2.useState(128);
327
+ const [modelTier, setModelTier] = React2.useState("llama-3-8b");
328
+ const [systemPrompt, setSystemPrompt] = React2.useState("");
329
+ const handleNext = () => {
330
+ if (step < STEPS.length - 1) setStep(step + 1);
331
+ else onSubmit?.({ environment: selectedEnv, cpuCores, ramGB, storageGB, modelTier, systemPrompt });
332
+ };
333
+ const handleBack = () => {
334
+ if (step > 0) setStep(step - 1);
335
+ else onBack?.();
336
+ };
337
+ const hourCost = calcCost(cpuCores, ramGB);
338
+ return /* @__PURE__ */ jsxs2("div", { className: cn("max-w-6xl mx-auto", className), children: [
339
+ /* @__PURE__ */ jsxs2("div", { className: "mb-12", children: [
340
+ /* @__PURE__ */ jsx2("h1", { className: "text-4xl font-extrabold tracking-tight text-white mb-2", children: "Sandbox Provisioning" }),
341
+ /* @__PURE__ */ jsx2("p", { className: "text-on-surface-variant max-w-2xl", children: "Configure your high-performance orchestration environment. Select your stack, allocate resources, and prime your agent for deployment." })
342
+ ] }),
343
+ /* @__PURE__ */ jsx2("div", { className: "grid grid-cols-4 gap-4 mb-12", children: STEPS.map((label, i) => /* @__PURE__ */ jsxs2("div", { className: "relative pt-4", children: [
344
+ /* @__PURE__ */ jsx2("div", { className: cn("h-1 w-full rounded-full", i <= step ? "bg-md3-primary" : i === step + 1 ? "bg-md3-primary/40" : "bg-surface-container-highest") }),
345
+ /* @__PURE__ */ jsxs2("span", { className: cn("absolute top-0 left-0 font-mono text-[10px] uppercase tracking-widest font-bold", i <= step ? "text-md3-primary" : "text-surface-variant"), children: [
346
+ String(i + 1).padStart(2, "0"),
347
+ " ",
348
+ label
349
+ ] })
350
+ ] }, label)) }),
351
+ /* @__PURE__ */ jsxs2("div", { className: "grid grid-cols-12 gap-8 items-start", children: [
352
+ /* @__PURE__ */ jsxs2("div", { className: "col-span-12 xl:col-span-8 space-y-8", children: [
353
+ /* @__PURE__ */ jsxs2("section", { className: "bg-surface-container-low rounded-xl p-8 shadow-sm", children: [
354
+ /* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-4 mb-8", children: [
355
+ /* @__PURE__ */ jsx2("div", { className: "w-10 h-10 rounded-lg bg-md3-primary/10 flex items-center justify-center text-md3-primary", children: /* @__PURE__ */ jsx2(MaterialIcon, { name: "layers" }) }),
356
+ /* @__PURE__ */ jsx2("h2", { className: "text-xl font-bold", children: "Environment Selection" })
357
+ ] }),
358
+ /* @__PURE__ */ jsx2("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-4", children: environments.map((env) => /* @__PURE__ */ jsxs2(
359
+ "button",
360
+ {
361
+ type: "button",
362
+ onClick: () => setSelectedEnv(env.id),
363
+ className: cn(
364
+ "group relative p-6 rounded-xl bg-surface-container cursor-pointer hover:bg-surface-container-high transition-all text-left",
365
+ selectedEnv === env.id ? "border border-md3-primary/20" : "border border-outline-variant/10"
366
+ ),
367
+ children: [
368
+ /* @__PURE__ */ jsxs2("div", { className: "flex justify-between items-start mb-4", children: [
369
+ /* @__PURE__ */ jsx2("div", { className: cn("w-12 h-12 rounded-full flex items-center justify-center", `bg-${env.color}-500/10`), children: env.icon }),
370
+ /* @__PURE__ */ jsx2("div", { className: cn("w-5 h-5 rounded-full border-2 flex items-center justify-center", selectedEnv === env.id ? "border-md3-primary" : "border-outline-variant/30"), children: selectedEnv === env.id && /* @__PURE__ */ jsx2("div", { className: "w-2.5 h-2.5 bg-md3-primary rounded-full" }) })
371
+ ] }),
372
+ /* @__PURE__ */ jsx2("h3", { className: "font-bold text-lg mb-1", children: env.name }),
373
+ /* @__PURE__ */ jsx2("p", { className: "text-xs text-on-surface-variant leading-relaxed", children: env.description })
374
+ ]
375
+ },
376
+ env.id
377
+ )) })
378
+ ] }),
379
+ /* @__PURE__ */ jsxs2("section", { className: "bg-surface-container-low rounded-xl p-8 shadow-sm", children: [
380
+ /* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-4 mb-8", children: [
381
+ /* @__PURE__ */ jsx2("div", { className: "w-10 h-10 rounded-lg bg-md3-primary/10 flex items-center justify-center text-md3-primary", children: /* @__PURE__ */ jsx2(MaterialIcon, { name: "memory" }) }),
382
+ /* @__PURE__ */ jsx2("h2", { className: "text-xl font-bold", children: "Resource Allocation" })
383
+ ] }),
384
+ /* @__PURE__ */ jsxs2("div", { className: "space-y-10", children: [
385
+ /* @__PURE__ */ jsxs2("div", { className: "space-y-4", children: [
386
+ /* @__PURE__ */ jsxs2("div", { className: "flex justify-between items-end", children: [
387
+ /* @__PURE__ */ jsx2("label", { className: "font-mono text-xs uppercase tracking-widest text-on-surface-variant", children: "Compute Cores (CPU)" }),
388
+ /* @__PURE__ */ jsxs2("span", { className: "text-2xl font-bold text-md3-primary", children: [
389
+ cpuCores,
390
+ " ",
391
+ /* @__PURE__ */ jsx2("span", { className: "text-xs text-on-surface-variant", children: "vCPUs" })
392
+ ] })
393
+ ] }),
394
+ /* @__PURE__ */ jsx2(
395
+ "input",
396
+ {
397
+ type: "range",
398
+ min: CPU_MIN,
399
+ max: CPU_MAX,
400
+ step: 0.5,
401
+ value: cpuCores,
402
+ onChange: (e) => setCpuCores(+e.target.value),
403
+ className: "w-full h-2 bg-surface-container-highest rounded-full appearance-none cursor-pointer accent-violet-500"
404
+ }
405
+ ),
406
+ /* @__PURE__ */ jsxs2("div", { className: "flex justify-between text-[10px] font-mono text-surface-variant", children: [
407
+ /* @__PURE__ */ jsxs2("span", { children: [
408
+ CPU_MIN,
409
+ " vCPU"
410
+ ] }),
411
+ /* @__PURE__ */ jsxs2("span", { children: [
412
+ CPU_MAX,
413
+ " vCPU"
414
+ ] })
415
+ ] })
416
+ ] }),
417
+ /* @__PURE__ */ jsxs2("div", { className: "space-y-4", children: [
418
+ /* @__PURE__ */ jsxs2("div", { className: "flex justify-between items-end", children: [
419
+ /* @__PURE__ */ jsx2("label", { className: "font-mono text-xs uppercase tracking-widest text-on-surface-variant", children: "Memory (RAM)" }),
420
+ /* @__PURE__ */ jsxs2("span", { className: "text-2xl font-bold text-md3-primary", children: [
421
+ ramGB,
422
+ " ",
423
+ /* @__PURE__ */ jsx2("span", { className: "text-xs text-on-surface-variant", children: "GB" })
424
+ ] })
425
+ ] }),
426
+ /* @__PURE__ */ jsx2(
427
+ "input",
428
+ {
429
+ type: "range",
430
+ min: RAM_MIN,
431
+ max: RAM_MAX,
432
+ step: 1,
433
+ value: ramGB,
434
+ onChange: (e) => setRamGB(+e.target.value),
435
+ className: "w-full h-2 bg-surface-container-highest rounded-full appearance-none cursor-pointer accent-violet-500"
436
+ }
437
+ ),
438
+ /* @__PURE__ */ jsxs2("div", { className: "flex justify-between text-[10px] font-mono text-surface-variant", children: [
439
+ /* @__PURE__ */ jsxs2("span", { children: [
440
+ RAM_MIN,
441
+ " GB"
442
+ ] }),
443
+ /* @__PURE__ */ jsxs2("span", { children: [
444
+ RAM_MAX,
445
+ " GB"
446
+ ] })
447
+ ] })
448
+ ] }),
449
+ /* @__PURE__ */ jsxs2("div", { className: "space-y-4", children: [
450
+ /* @__PURE__ */ jsxs2("div", { className: "flex justify-between items-end", children: [
451
+ /* @__PURE__ */ jsx2("label", { className: "font-mono text-xs uppercase tracking-widest text-on-surface-variant", children: "Ephemeral Storage" }),
452
+ /* @__PURE__ */ jsxs2("span", { className: "text-2xl font-bold text-md3-primary", children: [
453
+ storageGB,
454
+ " ",
455
+ /* @__PURE__ */ jsx2("span", { className: "text-xs text-on-surface-variant", children: "GB" })
456
+ ] })
457
+ ] }),
458
+ /* @__PURE__ */ jsx2(
459
+ "input",
460
+ {
461
+ type: "range",
462
+ min: STORAGE_MIN,
463
+ max: STORAGE_MAX,
464
+ step: 8,
465
+ value: storageGB,
466
+ onChange: (e) => setStorageGB(+e.target.value),
467
+ className: "w-full h-2 bg-surface-container-highest rounded-full appearance-none cursor-pointer accent-violet-500"
468
+ }
469
+ ),
470
+ /* @__PURE__ */ jsxs2("div", { className: "flex justify-between text-[10px] font-mono text-surface-variant", children: [
471
+ /* @__PURE__ */ jsxs2("span", { children: [
472
+ STORAGE_MIN,
473
+ " GB"
474
+ ] }),
475
+ /* @__PURE__ */ jsxs2("span", { children: [
476
+ STORAGE_MAX,
477
+ " GB"
478
+ ] })
479
+ ] })
480
+ ] })
481
+ ] })
482
+ ] }),
483
+ /* @__PURE__ */ jsxs2("section", { className: "bg-surface-container-low rounded-xl p-8 shadow-sm", children: [
484
+ /* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-4 mb-8", children: [
485
+ /* @__PURE__ */ jsx2("div", { className: "w-10 h-10 rounded-lg bg-md3-primary/10 flex items-center justify-center text-md3-primary", children: /* @__PURE__ */ jsx2(MaterialIcon, { name: "smart_toy" }) }),
486
+ /* @__PURE__ */ jsx2("h2", { className: "text-xl font-bold", children: "AI Agent Configuration" })
487
+ ] }),
488
+ /* @__PURE__ */ jsxs2("div", { className: "space-y-6", children: [
489
+ /* @__PURE__ */ jsxs2("div", { children: [
490
+ /* @__PURE__ */ jsx2("label", { className: "block font-mono text-xs uppercase tracking-widest text-on-surface-variant mb-3", children: "Model Tier" }),
491
+ /* @__PURE__ */ jsxs2(
492
+ "select",
493
+ {
494
+ value: modelTier,
495
+ onChange: (e) => setModelTier(e.target.value),
496
+ className: "w-full bg-surface-container-highest border-none rounded-xl h-12 px-4 font-mono text-sm focus:ring-2 focus:ring-md3-primary/40 text-on-surface",
497
+ children: [
498
+ /* @__PURE__ */ jsx2("option", { value: "llama-3-8b", children: "Llama-3-8B-Instruct (Lightweight)" }),
499
+ /* @__PURE__ */ jsx2("option", { value: "mistral-7b", children: "Mistral-7B-v0.2 (Efficient)" }),
500
+ /* @__PURE__ */ jsx2("option", { value: "claude-sonnet", children: "Claude Sonnet 4.6 (Capable)" })
501
+ ]
502
+ }
503
+ )
504
+ ] }),
505
+ /* @__PURE__ */ jsxs2("div", { children: [
506
+ /* @__PURE__ */ jsx2("label", { className: "block font-mono text-xs uppercase tracking-widest text-on-surface-variant mb-3", children: "Initial System Prompt" }),
507
+ /* @__PURE__ */ jsx2(
508
+ "textarea",
509
+ {
510
+ value: systemPrompt,
511
+ onChange: (e) => setSystemPrompt(e.target.value),
512
+ className: "w-full bg-surface-container-lowest border-none rounded-xl p-6 font-mono text-sm focus:ring-2 focus:ring-md3-primary/40 h-40 resize-none text-primary-fixed-dim",
513
+ placeholder: "Define the core persona of your agent..."
514
+ }
515
+ )
516
+ ] })
517
+ ] })
518
+ ] }),
519
+ /* @__PURE__ */ jsxs2("div", { className: "flex justify-between items-center py-4", children: [
520
+ /* @__PURE__ */ jsxs2("button", { type: "button", onClick: handleBack, className: "px-8 py-3 rounded-xl border border-outline-variant/20 hover:bg-surface-container-high transition-colors text-sm font-bold flex items-center gap-2", children: [
521
+ /* @__PURE__ */ jsx2(MaterialIcon, { name: "arrow_back", className: "text-lg" }),
522
+ "Back"
523
+ ] }),
524
+ /* @__PURE__ */ jsxs2("button", { type: "button", onClick: handleNext, className: "px-10 py-3 bg-gradient-to-br from-md3-primary to-primary-container text-on-primary font-bold rounded-xl shadow-lg shadow-md3-primary/20 flex items-center gap-2 group", children: [
525
+ step < STEPS.length - 1 ? "Continue to Review" : "Launch Sandbox",
526
+ /* @__PURE__ */ jsx2(MaterialIcon, { name: "arrow_forward", className: "group-hover:translate-x-1 transition-transform" })
527
+ ] })
528
+ ] })
529
+ ] }),
530
+ /* @__PURE__ */ jsxs2("div", { className: "col-span-12 xl:col-span-4 sticky top-24 space-y-8", children: [
531
+ /* @__PURE__ */ jsxs2("div", { className: "bg-surface-container-lowest rounded-xl overflow-hidden shadow-2xl", children: [
532
+ /* @__PURE__ */ jsxs2("div", { className: "bg-surface-container-high px-4 py-3 flex items-center justify-between", children: [
533
+ /* @__PURE__ */ jsxs2("div", { className: "flex gap-2", children: [
534
+ /* @__PURE__ */ jsx2("div", { className: "w-3 h-3 rounded-full bg-red-500/50" }),
535
+ /* @__PURE__ */ jsx2("div", { className: "w-3 h-3 rounded-full bg-yellow-500/50" }),
536
+ /* @__PURE__ */ jsx2("div", { className: "w-3 h-3 rounded-full bg-green-500/50" })
537
+ ] }),
538
+ /* @__PURE__ */ jsx2("div", { className: "font-mono text-[10px] text-slate-500 uppercase tracking-tighter", children: "config_stream.sh" }),
539
+ /* @__PURE__ */ jsx2("div", {})
540
+ ] }),
541
+ /* @__PURE__ */ jsxs2("div", { className: "p-6 font-mono text-xs space-y-3 min-h-[300px]", children: [
542
+ /* @__PURE__ */ jsx2("div", { className: "text-green-400", children: "$ tangle-cli provision --new" }),
543
+ /* @__PURE__ */ jsx2("div", { className: "text-slate-500", children: "Initializing handshake..." }),
544
+ /* @__PURE__ */ jsxs2("div", { className: "text-slate-300", children: [
545
+ /* @__PURE__ */ jsx2("span", { className: "text-violet-400", children: "\u2713" }),
546
+ " Platform: ",
547
+ /* @__PURE__ */ jsx2("span", { className: "text-white", children: environments.find((e) => e.id === selectedEnv)?.name ?? "Node.js" })
548
+ ] }),
549
+ /* @__PURE__ */ jsxs2("div", { className: "text-slate-300", children: [
550
+ /* @__PURE__ */ jsx2("span", { className: "text-violet-400", children: "\u2713" }),
551
+ " Compute: ",
552
+ /* @__PURE__ */ jsxs2("span", { className: "text-white", children: [
553
+ cpuCores,
554
+ " vCPUs"
555
+ ] })
556
+ ] }),
557
+ /* @__PURE__ */ jsxs2("div", { className: "text-slate-300", children: [
558
+ /* @__PURE__ */ jsx2("span", { className: "text-violet-400", children: "\u2713" }),
559
+ " Memory: ",
560
+ /* @__PURE__ */ jsxs2("span", { className: "text-white", children: [
561
+ ramGB,
562
+ "GB"
563
+ ] })
564
+ ] }),
565
+ /* @__PURE__ */ jsxs2("div", { className: "text-slate-300", children: [
566
+ /* @__PURE__ */ jsx2("span", { className: "text-violet-400", children: "\u2713" }),
567
+ " Disk: ",
568
+ /* @__PURE__ */ jsxs2("span", { className: "text-white", children: [
569
+ storageGB,
570
+ "GB NVMe"
571
+ ] })
572
+ ] }),
573
+ /* @__PURE__ */ jsxs2("div", { className: "pt-4 flex items-center gap-2", children: [
574
+ /* @__PURE__ */ jsx2("div", { className: "w-2 h-4 bg-md3-primary animate-pulse" }),
575
+ /* @__PURE__ */ jsx2("span", { className: "text-slate-500", children: "Ready for review..." })
576
+ ] })
577
+ ] })
578
+ ] }),
579
+ /* @__PURE__ */ jsxs2("div", { className: "p-6 rounded-xl bg-gradient-to-br from-violet-500/10 to-transparent border border-violet-500/20 backdrop-blur-[20px]", children: [
580
+ /* @__PURE__ */ jsxs2("div", { className: "flex justify-between items-center mb-4", children: [
581
+ /* @__PURE__ */ jsx2("span", { className: "text-sm font-bold text-on-surface-variant", children: "Estimated Run Cost" }),
582
+ /* @__PURE__ */ jsx2(MaterialIcon, { name: "info", className: "text-violet-400" })
583
+ ] }),
584
+ /* @__PURE__ */ jsxs2("div", { className: "flex items-baseline gap-2 mb-6", children: [
585
+ /* @__PURE__ */ jsxs2("span", { className: "text-4xl font-extrabold text-white", children: [
586
+ "$",
587
+ hourCost
588
+ ] }),
589
+ /* @__PURE__ */ jsx2("span", { className: "text-on-surface-variant text-sm", children: "/ hour" })
590
+ ] }),
591
+ /* @__PURE__ */ jsxs2("div", { className: "space-y-2", children: [
592
+ /* @__PURE__ */ jsxs2("div", { className: "flex justify-between text-[10px] font-mono uppercase tracking-widest text-slate-500", children: [
593
+ /* @__PURE__ */ jsx2("span", { children: "Compute" }),
594
+ /* @__PURE__ */ jsxs2("span", { className: "text-slate-300", children: [
595
+ "$",
596
+ (cpuCores * 0.045).toFixed(2)
597
+ ] })
598
+ ] }),
599
+ /* @__PURE__ */ jsxs2("div", { className: "flex justify-between text-[10px] font-mono uppercase tracking-widest text-slate-500", children: [
600
+ /* @__PURE__ */ jsx2("span", { children: "Memory" }),
601
+ /* @__PURE__ */ jsxs2("span", { className: "text-slate-300", children: [
602
+ "$",
603
+ (ramGB * 5e-3).toFixed(2)
604
+ ] })
605
+ ] })
606
+ ] })
607
+ ] })
608
+ ] })
609
+ ] })
610
+ ] });
611
+ }
612
+
613
+ // src/pages/pricing-page.tsx
614
+ import * as React3 from "react";
615
+ import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
297
616
  var variantColors = {
298
617
  sandbox: {
299
618
  accent: "text-[var(--accent-text)]",
@@ -309,15 +628,15 @@ async function fetchTiersFromApi(apiBasePath) {
309
628
  return data.tiers || data;
310
629
  }
311
630
  function PricingPageSkeleton() {
312
- return /* @__PURE__ */ jsxs2("div", { className: "space-y-8", children: [
313
- /* @__PURE__ */ jsxs2("div", { className: "flex items-center justify-center gap-4", children: [
314
- /* @__PURE__ */ jsx2(Skeleton, { className: "h-10 w-24" }),
315
- /* @__PURE__ */ jsx2(Skeleton, { className: "h-10 w-24" })
631
+ return /* @__PURE__ */ jsxs3("div", { className: "space-y-8", children: [
632
+ /* @__PURE__ */ jsxs3("div", { className: "flex items-center justify-center gap-4", children: [
633
+ /* @__PURE__ */ jsx3(Skeleton, { className: "h-10 w-24" }),
634
+ /* @__PURE__ */ jsx3(Skeleton, { className: "h-10 w-24" })
316
635
  ] }),
317
- /* @__PURE__ */ jsxs2("div", { className: "grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3", children: [
318
- /* @__PURE__ */ jsx2(SkeletonCard, { className: "h-96" }),
319
- /* @__PURE__ */ jsx2(SkeletonCard, { className: "h-96" }),
320
- /* @__PURE__ */ jsx2(SkeletonCard, { className: "h-96" })
636
+ /* @__PURE__ */ jsxs3("div", { className: "grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3", children: [
637
+ /* @__PURE__ */ jsx3(SkeletonCard, { className: "h-96" }),
638
+ /* @__PURE__ */ jsx3(SkeletonCard, { className: "h-96" }),
639
+ /* @__PURE__ */ jsx3(SkeletonCard, { className: "h-96" })
321
640
  ] })
322
641
  ] });
323
642
  }
@@ -325,8 +644,8 @@ function PricingPageError({
325
644
  message,
326
645
  onRetry
327
646
  }) {
328
- return /* @__PURE__ */ jsxs2("div", { className: "flex flex-col items-center justify-center space-y-4 rounded-xl border border-destructive/20 bg-destructive/5 p-8 text-center", children: [
329
- /* @__PURE__ */ jsx2("div", { className: "rounded-full bg-destructive/10 p-3", children: /* @__PURE__ */ jsxs2(
647
+ return /* @__PURE__ */ jsxs3("div", { className: "flex flex-col items-center justify-center space-y-4 rounded-xl border border-destructive/20 bg-destructive/5 p-8 text-center", children: [
648
+ /* @__PURE__ */ jsx3("div", { className: "rounded-full bg-destructive/10 p-3", children: /* @__PURE__ */ jsxs3(
330
649
  "svg",
331
650
  {
332
651
  xmlns: "http://www.w3.org/2000/svg",
@@ -338,18 +657,18 @@ function PricingPageError({
338
657
  strokeLinejoin: "round",
339
658
  className: "h-6 w-6 text-destructive",
340
659
  children: [
341
- /* @__PURE__ */ jsx2("title", { children: "Error icon" }),
342
- /* @__PURE__ */ jsx2("circle", { cx: "12", cy: "12", r: "10" }),
343
- /* @__PURE__ */ jsx2("line", { x1: "12", x2: "12", y1: "8", y2: "12" }),
344
- /* @__PURE__ */ jsx2("line", { x1: "12", x2: "12.01", y1: "16", y2: "16" })
660
+ /* @__PURE__ */ jsx3("title", { children: "Error icon" }),
661
+ /* @__PURE__ */ jsx3("circle", { cx: "12", cy: "12", r: "10" }),
662
+ /* @__PURE__ */ jsx3("line", { x1: "12", x2: "12", y1: "8", y2: "12" }),
663
+ /* @__PURE__ */ jsx3("line", { x1: "12", x2: "12.01", y1: "16", y2: "16" })
345
664
  ]
346
665
  }
347
666
  ) }),
348
- /* @__PURE__ */ jsxs2("div", { className: "space-y-2", children: [
349
- /* @__PURE__ */ jsx2("h3", { className: "font-semibold text-lg", children: "Failed to load pricing" }),
350
- /* @__PURE__ */ jsx2("p", { className: "text-muted-foreground text-sm", children: message })
667
+ /* @__PURE__ */ jsxs3("div", { className: "space-y-2", children: [
668
+ /* @__PURE__ */ jsx3("h3", { className: "font-semibold text-lg", children: "Failed to load pricing" }),
669
+ /* @__PURE__ */ jsx3("p", { className: "text-muted-foreground text-sm", children: message })
351
670
  ] }),
352
- /* @__PURE__ */ jsx2(
671
+ /* @__PURE__ */ jsx3(
353
672
  "button",
354
673
  {
355
674
  type: "button",
@@ -371,14 +690,14 @@ function StandalonePricingPage({
371
690
  className
372
691
  }) {
373
692
  const colors = variantColors[variant];
374
- const [state, setState] = React2.useState({
693
+ const [state, setState] = React3.useState({
375
694
  tiers: initialTiers || [],
376
695
  loading: !initialTiers,
377
696
  error: null,
378
697
  billingPeriod: "monthly",
379
698
  selectingTier: false
380
699
  });
381
- const loadTiers = React2.useCallback(async () => {
700
+ const loadTiers = React3.useCallback(async () => {
382
701
  setState((prev) => ({ ...prev, loading: true, error: null }));
383
702
  try {
384
703
  const tiers = fetchTiers ? await fetchTiers() : await fetchTiersFromApi(apiBasePath);
@@ -391,12 +710,12 @@ function StandalonePricingPage({
391
710
  }));
392
711
  }
393
712
  }, [apiBasePath, fetchTiers]);
394
- React2.useEffect(() => {
713
+ React3.useEffect(() => {
395
714
  if (!initialTiers) {
396
715
  loadTiers();
397
716
  }
398
717
  }, [initialTiers, loadTiers]);
399
- const handleSelectTier = React2.useCallback(
718
+ const handleSelectTier = React3.useCallback(
400
719
  async (tierId) => {
401
720
  if (onSelectTier) {
402
721
  onSelectTier(tierId, state.billingPeriod);
@@ -431,15 +750,15 @@ function StandalonePricingPage({
431
750
  },
432
751
  [apiBasePath, state.billingPeriod, onSelectTier]
433
752
  );
434
- const handleBillingPeriodChange = React2.useCallback(
753
+ const handleBillingPeriodChange = React3.useCallback(
435
754
  (period) => {
436
755
  setState((prev) => ({ ...prev, billingPeriod: period }));
437
756
  },
438
757
  []
439
758
  );
440
- return /* @__PURE__ */ jsxs2("div", { className: cn("w-full space-y-12", className), children: [
441
- /* @__PURE__ */ jsxs2("div", { className: "space-y-4 text-center", children: [
442
- /* @__PURE__ */ jsx2(
759
+ return /* @__PURE__ */ jsxs3("div", { className: cn("w-full space-y-12", className), children: [
760
+ /* @__PURE__ */ jsxs3("div", { className: "space-y-4 text-center", children: [
761
+ /* @__PURE__ */ jsx3(
443
762
  "h1",
444
763
  {
445
764
  className: cn(
@@ -450,9 +769,9 @@ function StandalonePricingPage({
450
769
  children: title
451
770
  }
452
771
  ),
453
- /* @__PURE__ */ jsx2("p", { className: "mx-auto max-w-2xl text-lg text-muted-foreground", children: subtitle })
772
+ /* @__PURE__ */ jsx3("p", { className: "mx-auto max-w-2xl text-lg text-muted-foreground", children: subtitle })
454
773
  ] }),
455
- state.loading ? /* @__PURE__ */ jsx2(PricingPageSkeleton, {}) : state.error ? /* @__PURE__ */ jsx2(PricingPageError, { message: state.error, onRetry: loadTiers }) : /* @__PURE__ */ jsx2(
774
+ state.loading ? /* @__PURE__ */ jsx3(PricingPageSkeleton, {}) : state.error ? /* @__PURE__ */ jsx3(PricingPageError, { message: state.error, onRetry: loadTiers }) : /* @__PURE__ */ jsx3(
456
775
  PricingPage,
457
776
  {
458
777
  tiers: state.tiers,
@@ -463,13 +782,13 @@ function StandalonePricingPage({
463
782
  loading: state.selectingTier
464
783
  }
465
784
  ),
466
- /* @__PURE__ */ jsxs2("div", { className: "mx-auto max-w-3xl space-y-6 border-border border-t pt-8", children: [
467
- /* @__PURE__ */ jsx2("h2", { className: "text-center font-semibold text-xl", children: "Frequently Asked Questions" }),
468
- /* @__PURE__ */ jsxs2("div", { className: "space-y-4", children: [
469
- /* @__PURE__ */ jsxs2("details", { className: "group rounded-lg border border-border bg-card p-4", children: [
470
- /* @__PURE__ */ jsxs2("summary", { className: "flex cursor-pointer list-none items-center justify-between font-medium", children: [
785
+ /* @__PURE__ */ jsxs3("div", { className: "mx-auto max-w-3xl space-y-6 border-border border-t pt-8", children: [
786
+ /* @__PURE__ */ jsx3("h2", { className: "text-center font-semibold text-xl", children: "Frequently Asked Questions" }),
787
+ /* @__PURE__ */ jsxs3("div", { className: "space-y-4", children: [
788
+ /* @__PURE__ */ jsxs3("details", { className: "group rounded-lg border border-border bg-card p-4", children: [
789
+ /* @__PURE__ */ jsxs3("summary", { className: "flex cursor-pointer list-none items-center justify-between font-medium", children: [
471
790
  "What are credits?",
472
- /* @__PURE__ */ jsxs2(
791
+ /* @__PURE__ */ jsxs3(
473
792
  "svg",
474
793
  {
475
794
  xmlns: "http://www.w3.org/2000/svg",
@@ -481,18 +800,18 @@ function StandalonePricingPage({
481
800
  strokeLinejoin: "round",
482
801
  className: "h-4 w-4 transition-transform group-open:rotate-180",
483
802
  children: [
484
- /* @__PURE__ */ jsx2("title", { children: "Toggle icon" }),
485
- /* @__PURE__ */ jsx2("path", { d: "m6 9 6 6 6-6" })
803
+ /* @__PURE__ */ jsx3("title", { children: "Toggle icon" }),
804
+ /* @__PURE__ */ jsx3("path", { d: "m6 9 6 6 6-6" })
486
805
  ]
487
806
  }
488
807
  )
489
808
  ] }),
490
- /* @__PURE__ */ jsx2("p", { className: "mt-3 text-muted-foreground text-sm", children: "Credits are used to pay for AI model usage. Different models consume different amounts of credits based on their complexity and the length of your requests." })
809
+ /* @__PURE__ */ jsx3("p", { className: "mt-3 text-muted-foreground text-sm", children: "Credits are used to pay for AI model usage. Different models consume different amounts of credits based on their complexity and the length of your requests." })
491
810
  ] }),
492
- /* @__PURE__ */ jsxs2("details", { className: "group rounded-lg border border-border bg-card p-4", children: [
493
- /* @__PURE__ */ jsxs2("summary", { className: "flex cursor-pointer list-none items-center justify-between font-medium", children: [
811
+ /* @__PURE__ */ jsxs3("details", { className: "group rounded-lg border border-border bg-card p-4", children: [
812
+ /* @__PURE__ */ jsxs3("summary", { className: "flex cursor-pointer list-none items-center justify-between font-medium", children: [
494
813
  "Can I change plans later?",
495
- /* @__PURE__ */ jsxs2(
814
+ /* @__PURE__ */ jsxs3(
496
815
  "svg",
497
816
  {
498
817
  xmlns: "http://www.w3.org/2000/svg",
@@ -504,18 +823,18 @@ function StandalonePricingPage({
504
823
  strokeLinejoin: "round",
505
824
  className: "h-4 w-4 transition-transform group-open:rotate-180",
506
825
  children: [
507
- /* @__PURE__ */ jsx2("title", { children: "Toggle icon" }),
508
- /* @__PURE__ */ jsx2("path", { d: "m6 9 6 6 6-6" })
826
+ /* @__PURE__ */ jsx3("title", { children: "Toggle icon" }),
827
+ /* @__PURE__ */ jsx3("path", { d: "m6 9 6 6 6-6" })
509
828
  ]
510
829
  }
511
830
  )
512
831
  ] }),
513
- /* @__PURE__ */ jsx2("p", { className: "mt-3 text-muted-foreground text-sm", children: "Yes! You can upgrade or downgrade your plan at any time. When you upgrade, you will be charged the prorated difference. When you downgrade, the change takes effect at the end of your billing cycle." })
832
+ /* @__PURE__ */ jsx3("p", { className: "mt-3 text-muted-foreground text-sm", children: "Yes! You can upgrade or downgrade your plan at any time. When you upgrade, you will be charged the prorated difference. When you downgrade, the change takes effect at the end of your billing cycle." })
514
833
  ] }),
515
- /* @__PURE__ */ jsxs2("details", { className: "group rounded-lg border border-border bg-card p-4", children: [
516
- /* @__PURE__ */ jsxs2("summary", { className: "flex cursor-pointer list-none items-center justify-between font-medium", children: [
834
+ /* @__PURE__ */ jsxs3("details", { className: "group rounded-lg border border-border bg-card p-4", children: [
835
+ /* @__PURE__ */ jsxs3("summary", { className: "flex cursor-pointer list-none items-center justify-between font-medium", children: [
517
836
  "Do unused credits roll over?",
518
- /* @__PURE__ */ jsxs2(
837
+ /* @__PURE__ */ jsxs3(
519
838
  "svg",
520
839
  {
521
840
  xmlns: "http://www.w3.org/2000/svg",
@@ -527,13 +846,13 @@ function StandalonePricingPage({
527
846
  strokeLinejoin: "round",
528
847
  className: "h-4 w-4 transition-transform group-open:rotate-180",
529
848
  children: [
530
- /* @__PURE__ */ jsx2("title", { children: "Toggle icon" }),
531
- /* @__PURE__ */ jsx2("path", { d: "m6 9 6 6 6-6" })
849
+ /* @__PURE__ */ jsx3("title", { children: "Toggle icon" }),
850
+ /* @__PURE__ */ jsx3("path", { d: "m6 9 6 6 6-6" })
532
851
  ]
533
852
  }
534
853
  )
535
854
  ] }),
536
- /* @__PURE__ */ jsx2("p", { className: "mt-3 text-muted-foreground text-sm", children: "Monthly credits do not roll over to the next month. However, purchased credit packs never expire and can be used at any time." })
855
+ /* @__PURE__ */ jsx3("p", { className: "mt-3 text-muted-foreground text-sm", children: "Monthly credits do not roll over to the next month. However, purchased credit packs never expire and can be used at any time." })
537
856
  ] })
538
857
  ] })
539
858
  ] })
@@ -552,8 +871,8 @@ import {
552
871
  Settings2,
553
872
  Trash2
554
873
  } from "lucide-react";
555
- import * as React3 from "react";
556
- import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
874
+ import * as React4 from "react";
875
+ import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
557
876
  var TIER_LIMITS = {
558
877
  free: 3,
559
878
  starter: 10,
@@ -567,24 +886,24 @@ function ProfilesPage({
567
886
  onCompareClick,
568
887
  title = "Profiles"
569
888
  }) {
570
- const [builtinProfiles, setBuiltinProfiles] = React3.useState([]);
571
- const [customProfiles, setCustomProfiles] = React3.useState([]);
572
- const [loading, setLoading] = React3.useState(true);
573
- const [error, setError] = React3.useState(null);
574
- const [searchQuery, setSearchQuery] = React3.useState("");
575
- const [createDialogOpen, setCreateDialogOpen] = React3.useState(false);
576
- const [editingProfile, setEditingProfile] = React3.useState(
889
+ const [builtinProfiles, setBuiltinProfiles] = React4.useState([]);
890
+ const [customProfiles, setCustomProfiles] = React4.useState([]);
891
+ const [loading, setLoading] = React4.useState(true);
892
+ const [error, setError] = React4.useState(null);
893
+ const [searchQuery, setSearchQuery] = React4.useState("");
894
+ const [createDialogOpen, setCreateDialogOpen] = React4.useState(false);
895
+ const [editingProfile, setEditingProfile] = React4.useState(
577
896
  null
578
897
  );
579
- const [deletingProfile, setDeletingProfile] = React3.useState(
898
+ const [deletingProfile, setDeletingProfile] = React4.useState(
580
899
  null
581
900
  );
582
- const [detailProfile, setDetailProfile] = React3.useState(
901
+ const [detailProfile, setDetailProfile] = React4.useState(
583
902
  null
584
903
  );
585
904
  const profileLimit = maxProfiles ?? TIER_LIMITS[tier] ?? 3;
586
905
  const canCreateMore = customProfiles.length < profileLimit;
587
- const loadProfiles = React3.useCallback(async () => {
906
+ const loadProfiles = React4.useCallback(async () => {
588
907
  try {
589
908
  setLoading(true);
590
909
  setError(null);
@@ -597,7 +916,7 @@ function ProfilesPage({
597
916
  setLoading(false);
598
917
  }
599
918
  }, [apiClient]);
600
- React3.useEffect(() => {
919
+ React4.useEffect(() => {
601
920
  loadProfiles();
602
921
  }, [loadProfiles]);
603
922
  const filteredBuiltin = builtinProfiles.filter(
@@ -606,14 +925,14 @@ function ProfilesPage({
606
925
  const filteredCustom = customProfiles.filter(
607
926
  (p) => p.name.toLowerCase().includes(searchQuery.toLowerCase()) || p.description?.toLowerCase().includes(searchQuery.toLowerCase())
608
927
  );
609
- return /* @__PURE__ */ jsxs3("div", { className: "space-y-6", children: [
610
- /* @__PURE__ */ jsxs3("div", { className: "flex items-center justify-between", children: [
611
- /* @__PURE__ */ jsxs3("div", { children: [
612
- /* @__PURE__ */ jsx3("h1", { className: "font-semibold text-2xl", children: title }),
613
- /* @__PURE__ */ jsx3("p", { className: "text-muted-foreground", children: "Customize agent behavior with system prompts, models, and instructions" })
928
+ return /* @__PURE__ */ jsxs4("div", { className: "space-y-6", children: [
929
+ /* @__PURE__ */ jsxs4("div", { className: "flex items-center justify-between", children: [
930
+ /* @__PURE__ */ jsxs4("div", { children: [
931
+ /* @__PURE__ */ jsx4("h1", { className: "font-semibold text-2xl", children: title }),
932
+ /* @__PURE__ */ jsx4("p", { className: "text-muted-foreground", children: "Customize agent behavior with system prompts, models, and instructions" })
614
933
  ] }),
615
- /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-3", children: [
616
- onCompareClick && customProfiles.length >= 2 && /* @__PURE__ */ jsx3(
934
+ /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-3", children: [
935
+ onCompareClick && customProfiles.length >= 2 && /* @__PURE__ */ jsx4(
617
936
  Button,
618
937
  {
619
938
  variant: "outline",
@@ -621,30 +940,30 @@ function ProfilesPage({
621
940
  children: "Compare Profiles"
622
941
  }
623
942
  ),
624
- /* @__PURE__ */ jsxs3(
943
+ /* @__PURE__ */ jsxs4(
625
944
  Button,
626
945
  {
627
946
  onClick: () => setCreateDialogOpen(true),
628
947
  disabled: !canCreateMore,
629
948
  children: [
630
- /* @__PURE__ */ jsx3(Plus, { className: "mr-2 h-4 w-4" }),
949
+ /* @__PURE__ */ jsx4(Plus, { className: "mr-2 h-4 w-4" }),
631
950
  "Create Profile"
632
951
  ]
633
952
  }
634
953
  )
635
954
  ] })
636
955
  ] }),
637
- !canCreateMore && /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-2 rounded-lg border border-yellow-500/30 bg-yellow-500/10 p-3 text-sm text-yellow-400", children: [
638
- /* @__PURE__ */ jsx3(AlertCircle, { className: "h-4 w-4" }),
639
- /* @__PURE__ */ jsxs3("span", { children: [
956
+ !canCreateMore && /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-2 rounded-lg border border-yellow-500/30 bg-yellow-500/10 p-3 text-sm text-yellow-400", children: [
957
+ /* @__PURE__ */ jsx4(AlertCircle, { className: "h-4 w-4" }),
958
+ /* @__PURE__ */ jsxs4("span", { children: [
640
959
  "You've reached your profile limit (",
641
960
  profileLimit,
642
961
  " profiles). Upgrade your plan to create more."
643
962
  ] })
644
963
  ] }),
645
- /* @__PURE__ */ jsxs3("div", { className: "relative max-w-md", children: [
646
- /* @__PURE__ */ jsx3(Search, { className: "absolute top-1/2 left-3 h-4 w-4 -translate-y-1/2 text-muted-foreground" }),
647
- /* @__PURE__ */ jsx3(
964
+ /* @__PURE__ */ jsxs4("div", { className: "relative max-w-md", children: [
965
+ /* @__PURE__ */ jsx4(Search, { className: "absolute top-1/2 left-3 h-4 w-4 -translate-y-1/2 text-muted-foreground" }),
966
+ /* @__PURE__ */ jsx4(
648
967
  Input,
649
968
  {
650
969
  placeholder: "Search profiles...",
@@ -654,33 +973,33 @@ function ProfilesPage({
654
973
  }
655
974
  )
656
975
  ] }),
657
- error && /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-2 rounded-lg border border-red-500/30 bg-red-500/10 p-3 text-red-400 text-sm", children: [
658
- /* @__PURE__ */ jsx3(AlertCircle, { className: "h-4 w-4" }),
659
- /* @__PURE__ */ jsx3("span", { children: error }),
660
- /* @__PURE__ */ jsx3(Button, { variant: "ghost", size: "sm", onClick: loadProfiles, children: "Retry" })
976
+ error && /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-2 rounded-lg border border-red-500/30 bg-red-500/10 p-3 text-red-400 text-sm", children: [
977
+ /* @__PURE__ */ jsx4(AlertCircle, { className: "h-4 w-4" }),
978
+ /* @__PURE__ */ jsx4("span", { children: error }),
979
+ /* @__PURE__ */ jsx4(Button, { variant: "ghost", size: "sm", onClick: loadProfiles, children: "Retry" })
661
980
  ] }),
662
- loading && /* @__PURE__ */ jsx3("div", { className: "flex items-center justify-center py-12", children: /* @__PURE__ */ jsx3(Loader2, { className: "h-8 w-8 animate-spin text-muted-foreground" }) }),
663
- !loading && /* @__PURE__ */ jsxs3("div", { className: "space-y-8", children: [
664
- /* @__PURE__ */ jsxs3("section", { children: [
665
- /* @__PURE__ */ jsx3("div", { className: "mb-3 flex items-center justify-between", children: /* @__PURE__ */ jsxs3("h2", { className: "font-medium text-lg", children: [
981
+ loading && /* @__PURE__ */ jsx4("div", { className: "flex items-center justify-center py-12", children: /* @__PURE__ */ jsx4(Loader2, { className: "h-8 w-8 animate-spin text-muted-foreground" }) }),
982
+ !loading && /* @__PURE__ */ jsxs4("div", { className: "space-y-8", children: [
983
+ /* @__PURE__ */ jsxs4("section", { children: [
984
+ /* @__PURE__ */ jsx4("div", { className: "mb-3 flex items-center justify-between", children: /* @__PURE__ */ jsxs4("h2", { className: "font-medium text-lg", children: [
666
985
  "Your Profiles (",
667
986
  customProfiles.length,
668
987
  "/",
669
988
  profileLimit === Number.POSITIVE_INFINITY ? "inf" : profileLimit,
670
989
  ")"
671
990
  ] }) }),
672
- filteredCustom.length === 0 ? /* @__PURE__ */ jsx3(
991
+ filteredCustom.length === 0 ? /* @__PURE__ */ jsx4(
673
992
  EmptyState,
674
993
  {
675
- icon: /* @__PURE__ */ jsx3(Settings2, { className: "h-8 w-8" }),
994
+ icon: /* @__PURE__ */ jsx4(Settings2, { className: "h-8 w-8" }),
676
995
  title: "No custom profiles yet",
677
996
  description: "Create a profile to customize agent behavior",
678
- action: canCreateMore ? /* @__PURE__ */ jsxs3(Button, { onClick: () => setCreateDialogOpen(true), children: [
679
- /* @__PURE__ */ jsx3(Plus, { className: "mr-2 h-4 w-4" }),
997
+ action: canCreateMore ? /* @__PURE__ */ jsxs4(Button, { onClick: () => setCreateDialogOpen(true), children: [
998
+ /* @__PURE__ */ jsx4(Plus, { className: "mr-2 h-4 w-4" }),
680
999
  "Create Profile"
681
1000
  ] }) : void 0
682
1001
  }
683
- ) : /* @__PURE__ */ jsx3("div", { className: "grid gap-4 md:grid-cols-2 lg:grid-cols-3", children: filteredCustom.map((profile) => /* @__PURE__ */ jsx3(
1002
+ ) : /* @__PURE__ */ jsx4("div", { className: "grid gap-4 md:grid-cols-2 lg:grid-cols-3", children: filteredCustom.map((profile) => /* @__PURE__ */ jsx4(
684
1003
  ProfileCard,
685
1004
  {
686
1005
  profile,
@@ -691,13 +1010,13 @@ function ProfilesPage({
691
1010
  profile.id
692
1011
  )) })
693
1012
  ] }),
694
- /* @__PURE__ */ jsxs3("section", { children: [
695
- /* @__PURE__ */ jsx3("div", { className: "mb-3 flex items-center justify-between", children: /* @__PURE__ */ jsxs3("h2", { className: "font-medium text-lg", children: [
1013
+ /* @__PURE__ */ jsxs4("section", { children: [
1014
+ /* @__PURE__ */ jsx4("div", { className: "mb-3 flex items-center justify-between", children: /* @__PURE__ */ jsxs4("h2", { className: "font-medium text-lg", children: [
696
1015
  "Built-in Profiles (",
697
1016
  builtinProfiles.length,
698
1017
  ")"
699
1018
  ] }) }),
700
- filteredBuiltin.length === 0 ? /* @__PURE__ */ jsx3("p", { className: "text-muted-foreground text-sm", children: "No matching built-in profiles" }) : /* @__PURE__ */ jsx3("div", { className: "grid gap-4 md:grid-cols-2 lg:grid-cols-3", children: filteredBuiltin.map((profile) => /* @__PURE__ */ jsx3(
1019
+ filteredBuiltin.length === 0 ? /* @__PURE__ */ jsx4("p", { className: "text-muted-foreground text-sm", children: "No matching built-in profiles" }) : /* @__PURE__ */ jsx4("div", { className: "grid gap-4 md:grid-cols-2 lg:grid-cols-3", children: filteredBuiltin.map((profile) => /* @__PURE__ */ jsx4(
701
1020
  ProfileCard,
702
1021
  {
703
1022
  profile,
@@ -708,7 +1027,7 @@ function ProfilesPage({
708
1027
  )) })
709
1028
  ] })
710
1029
  ] }),
711
- /* @__PURE__ */ jsx3(
1030
+ /* @__PURE__ */ jsx4(
712
1031
  ProfileFormDialog,
713
1032
  {
714
1033
  open: createDialogOpen || !!editingProfile,
@@ -726,7 +1045,7 @@ function ProfilesPage({
726
1045
  }
727
1046
  }
728
1047
  ),
729
- /* @__PURE__ */ jsx3(
1048
+ /* @__PURE__ */ jsx4(
730
1049
  DeleteProfileDialog,
731
1050
  {
732
1051
  profile: deletingProfile,
@@ -738,7 +1057,7 @@ function ProfilesPage({
738
1057
  }
739
1058
  }
740
1059
  ),
741
- /* @__PURE__ */ jsx3(
1060
+ /* @__PURE__ */ jsx4(
742
1061
  ProfileDetailDialog,
743
1062
  {
744
1063
  profile: detailProfile,
@@ -767,61 +1086,61 @@ function ProfileCard({
767
1086
  onDelete,
768
1087
  isBuiltin
769
1088
  }) {
770
- return /* @__PURE__ */ jsxs3(
1089
+ return /* @__PURE__ */ jsxs4(
771
1090
  Card,
772
1091
  {
773
1092
  className: "cursor-pointer p-4 transition-colors hover:border-border/80",
774
1093
  onClick: onView,
775
1094
  children: [
776
- /* @__PURE__ */ jsxs3("div", { className: "flex items-start justify-between", children: [
777
- /* @__PURE__ */ jsxs3("div", { className: "flex-1", children: [
778
- /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-2", children: [
779
- /* @__PURE__ */ jsx3("h3", { className: "font-medium", children: profile.name }),
780
- isBuiltin && /* @__PURE__ */ jsx3(Badge, { variant: "secondary", className: "border-0 text-xs", children: "Built-in" }),
781
- profile.is_public && !isBuiltin && /* @__PURE__ */ jsx3(Badge, { className: "border-0 bg-blue-500/10 text-blue-400 text-xs", children: "Public" })
1095
+ /* @__PURE__ */ jsxs4("div", { className: "flex items-start justify-between", children: [
1096
+ /* @__PURE__ */ jsxs4("div", { className: "flex-1", children: [
1097
+ /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-2", children: [
1098
+ /* @__PURE__ */ jsx4("h3", { className: "font-medium", children: profile.name }),
1099
+ isBuiltin && /* @__PURE__ */ jsx4(Badge, { variant: "secondary", className: "border-0 text-xs", children: "Built-in" }),
1100
+ profile.is_public && !isBuiltin && /* @__PURE__ */ jsx4(Badge, { className: "border-0 bg-blue-500/10 text-blue-400 text-xs", children: "Public" })
782
1101
  ] }),
783
- profile.description && /* @__PURE__ */ jsx3("p", { className: "mt-1 line-clamp-2 text-muted-foreground text-sm", children: profile.description })
1102
+ profile.description && /* @__PURE__ */ jsx4("p", { className: "mt-1 line-clamp-2 text-muted-foreground text-sm", children: profile.description })
784
1103
  ] }),
785
- !isBuiltin && /* @__PURE__ */ jsxs3("div", { className: "flex gap-1", onClick: (e) => e.stopPropagation(), children: [
786
- onEdit && /* @__PURE__ */ jsx3(
1104
+ !isBuiltin && /* @__PURE__ */ jsxs4("div", { className: "flex gap-1", onClick: (e) => e.stopPropagation(), children: [
1105
+ onEdit && /* @__PURE__ */ jsx4(
787
1106
  Button,
788
1107
  {
789
1108
  variant: "ghost",
790
1109
  size: "icon",
791
1110
  onClick: onEdit,
792
1111
  "aria-label": "Edit profile",
793
- children: /* @__PURE__ */ jsx3(Edit2, { className: "h-4 w-4" })
1112
+ children: /* @__PURE__ */ jsx4(Edit2, { className: "h-4 w-4" })
794
1113
  }
795
1114
  ),
796
- onDelete && /* @__PURE__ */ jsx3(
1115
+ onDelete && /* @__PURE__ */ jsx4(
797
1116
  Button,
798
1117
  {
799
1118
  variant: "ghost",
800
1119
  size: "icon",
801
1120
  onClick: onDelete,
802
1121
  "aria-label": "Delete profile",
803
- children: /* @__PURE__ */ jsx3(Trash2, { className: "h-4 w-4 text-red-400" })
1122
+ children: /* @__PURE__ */ jsx4(Trash2, { className: "h-4 w-4 text-red-400" })
804
1123
  }
805
1124
  )
806
1125
  ] })
807
1126
  ] }),
808
- /* @__PURE__ */ jsxs3("div", { className: "mt-3 flex flex-wrap gap-2", children: [
809
- profile.extends && /* @__PURE__ */ jsxs3(Badge, { variant: "outline", className: "text-xs", children: [
1127
+ /* @__PURE__ */ jsxs4("div", { className: "mt-3 flex flex-wrap gap-2", children: [
1128
+ profile.extends && /* @__PURE__ */ jsxs4(Badge, { variant: "outline", className: "text-xs", children: [
810
1129
  "extends ",
811
1130
  profile.extends
812
1131
  ] }),
813
- profile.model && /* @__PURE__ */ jsx3(Badge, { variant: "outline", className: "text-xs", children: profile.model.split("/").pop() })
1132
+ profile.model && /* @__PURE__ */ jsx4(Badge, { variant: "outline", className: "text-xs", children: profile.model.split("/").pop() })
814
1133
  ] }),
815
- profile.metrics && profile.metrics.total_runs > 0 && /* @__PURE__ */ jsxs3("div", { className: "mt-3 flex gap-4 border-border border-t pt-3 text-muted-foreground text-xs", children: [
816
- /* @__PURE__ */ jsxs3("span", { children: [
1134
+ profile.metrics && profile.metrics.total_runs > 0 && /* @__PURE__ */ jsxs4("div", { className: "mt-3 flex gap-4 border-border border-t pt-3 text-muted-foreground text-xs", children: [
1135
+ /* @__PURE__ */ jsxs4("span", { children: [
817
1136
  profile.metrics.total_runs,
818
1137
  " runs"
819
1138
  ] }),
820
- /* @__PURE__ */ jsxs3("span", { children: [
1139
+ /* @__PURE__ */ jsxs4("span", { children: [
821
1140
  profile.metrics.success_rate.toFixed(0),
822
1141
  "% success"
823
1142
  ] }),
824
- /* @__PURE__ */ jsxs3("span", { children: [
1143
+ /* @__PURE__ */ jsxs4("span", { children: [
825
1144
  "~",
826
1145
  (profile.metrics.avg_duration_ms / 1e3).toFixed(1),
827
1146
  "s avg"
@@ -840,7 +1159,7 @@ function ProfileFormDialog({
840
1159
  onSuccess
841
1160
  }) {
842
1161
  const isEditing = !!profile?.id;
843
- const [formData, setFormData] = React3.useState({
1162
+ const [formData, setFormData] = React4.useState({
844
1163
  name: "",
845
1164
  description: "",
846
1165
  extends: "",
@@ -850,9 +1169,9 @@ function ProfileFormDialog({
850
1169
  tags: [],
851
1170
  is_public: false
852
1171
  });
853
- const [saving, setSaving] = React3.useState(false);
854
- const [error, setError] = React3.useState(null);
855
- React3.useEffect(() => {
1172
+ const [saving, setSaving] = React4.useState(false);
1173
+ const [error, setError] = React4.useState(null);
1174
+ React4.useEffect(() => {
856
1175
  if (profile) {
857
1176
  setFormData({
858
1177
  name: profile.name,
@@ -908,19 +1227,19 @@ function ProfileFormDialog({
908
1227
  setSaving(false);
909
1228
  }
910
1229
  };
911
- return /* @__PURE__ */ jsx3(Dialog, { open, onOpenChange: (o) => !o && onClose(), children: /* @__PURE__ */ jsxs3(DialogContent, { className: "max-w-2xl", children: [
912
- /* @__PURE__ */ jsxs3(DialogHeader, { children: [
913
- /* @__PURE__ */ jsx3(DialogTitle, { children: isEditing ? "Edit Profile" : "Create Profile" }),
914
- /* @__PURE__ */ jsx3(DialogDescription, { children: isEditing ? "Update your custom profile configuration" : "Create a new profile to customize agent behavior" })
1230
+ return /* @__PURE__ */ jsx4(Dialog, { open, onOpenChange: (o) => !o && onClose(), children: /* @__PURE__ */ jsxs4(DialogContent, { className: "max-w-2xl", children: [
1231
+ /* @__PURE__ */ jsxs4(DialogHeader, { children: [
1232
+ /* @__PURE__ */ jsx4(DialogTitle, { children: isEditing ? "Edit Profile" : "Create Profile" }),
1233
+ /* @__PURE__ */ jsx4(DialogDescription, { children: isEditing ? "Update your custom profile configuration" : "Create a new profile to customize agent behavior" })
915
1234
  ] }),
916
- /* @__PURE__ */ jsxs3("form", { onSubmit: handleSubmit, className: "space-y-4", children: [
917
- error && /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-2 rounded-lg border border-red-500/30 bg-red-500/10 p-3 text-red-400 text-sm", children: [
918
- /* @__PURE__ */ jsx3(AlertCircle, { className: "h-4 w-4" }),
919
- /* @__PURE__ */ jsx3("span", { children: error })
1235
+ /* @__PURE__ */ jsxs4("form", { onSubmit: handleSubmit, className: "space-y-4", children: [
1236
+ error && /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-2 rounded-lg border border-red-500/30 bg-red-500/10 p-3 text-red-400 text-sm", children: [
1237
+ /* @__PURE__ */ jsx4(AlertCircle, { className: "h-4 w-4" }),
1238
+ /* @__PURE__ */ jsx4("span", { children: error })
920
1239
  ] }),
921
- /* @__PURE__ */ jsxs3("div", { children: [
922
- /* @__PURE__ */ jsx3("label", { className: "mb-1 block font-medium text-sm", children: "Name *" }),
923
- /* @__PURE__ */ jsx3(
1240
+ /* @__PURE__ */ jsxs4("div", { children: [
1241
+ /* @__PURE__ */ jsx4("label", { className: "mb-1 block font-medium text-sm", children: "Name *" }),
1242
+ /* @__PURE__ */ jsx4(
924
1243
  Input,
925
1244
  {
926
1245
  value: formData.name,
@@ -932,9 +1251,9 @@ function ProfileFormDialog({
932
1251
  }
933
1252
  )
934
1253
  ] }),
935
- /* @__PURE__ */ jsxs3("div", { children: [
936
- /* @__PURE__ */ jsx3("label", { className: "mb-1 block font-medium text-sm", children: "Description" }),
937
- /* @__PURE__ */ jsx3(
1254
+ /* @__PURE__ */ jsxs4("div", { children: [
1255
+ /* @__PURE__ */ jsx4("label", { className: "mb-1 block font-medium text-sm", children: "Description" }),
1256
+ /* @__PURE__ */ jsx4(
938
1257
  Input,
939
1258
  {
940
1259
  value: formData.description,
@@ -943,17 +1262,17 @@ function ProfileFormDialog({
943
1262
  }
944
1263
  )
945
1264
  ] }),
946
- /* @__PURE__ */ jsxs3("div", { children: [
947
- /* @__PURE__ */ jsx3("label", { className: "mb-1 block font-medium text-sm", children: "Extends (base profile)" }),
948
- /* @__PURE__ */ jsxs3(
1265
+ /* @__PURE__ */ jsxs4("div", { children: [
1266
+ /* @__PURE__ */ jsx4("label", { className: "mb-1 block font-medium text-sm", children: "Extends (base profile)" }),
1267
+ /* @__PURE__ */ jsxs4(
949
1268
  "select",
950
1269
  {
951
1270
  value: formData.extends,
952
1271
  onChange: (e) => setFormData((d) => ({ ...d, extends: e.target.value })),
953
1272
  className: "w-full rounded-md border border-border bg-background px-3 py-2 text-sm",
954
1273
  children: [
955
- /* @__PURE__ */ jsx3("option", { value: "", children: "None (start from scratch)" }),
956
- builtinProfiles.map((p) => /* @__PURE__ */ jsxs3("option", { value: p.name, children: [
1274
+ /* @__PURE__ */ jsx4("option", { value: "", children: "None (start from scratch)" }),
1275
+ builtinProfiles.map((p) => /* @__PURE__ */ jsxs4("option", { value: p.name, children: [
957
1276
  p.name,
958
1277
  " - ",
959
1278
  p.description ?? "Built-in profile"
@@ -962,9 +1281,9 @@ function ProfileFormDialog({
962
1281
  }
963
1282
  )
964
1283
  ] }),
965
- /* @__PURE__ */ jsxs3("div", { children: [
966
- /* @__PURE__ */ jsx3("label", { className: "mb-1 block font-medium text-sm", children: "Model" }),
967
- /* @__PURE__ */ jsx3(
1284
+ /* @__PURE__ */ jsxs4("div", { children: [
1285
+ /* @__PURE__ */ jsx4("label", { className: "mb-1 block font-medium text-sm", children: "Model" }),
1286
+ /* @__PURE__ */ jsx4(
968
1287
  Input,
969
1288
  {
970
1289
  value: formData.model,
@@ -972,11 +1291,11 @@ function ProfileFormDialog({
972
1291
  placeholder: "anthropic/claude-sonnet-4"
973
1292
  }
974
1293
  ),
975
- /* @__PURE__ */ jsx3("p", { className: "mt-1 text-muted-foreground text-xs", children: "Format: provider/model-id (e.g., anthropic/claude-sonnet-4)" })
1294
+ /* @__PURE__ */ jsx4("p", { className: "mt-1 text-muted-foreground text-xs", children: "Format: provider/model-id (e.g., anthropic/claude-sonnet-4)" })
976
1295
  ] }),
977
- /* @__PURE__ */ jsxs3("div", { children: [
978
- /* @__PURE__ */ jsx3("label", { className: "mb-1 block font-medium text-sm", children: "System Prompt" }),
979
- /* @__PURE__ */ jsx3(
1296
+ /* @__PURE__ */ jsxs4("div", { children: [
1297
+ /* @__PURE__ */ jsx4("label", { className: "mb-1 block font-medium text-sm", children: "System Prompt" }),
1298
+ /* @__PURE__ */ jsx4(
980
1299
  "textarea",
981
1300
  {
982
1301
  value: formData.system_prompt,
@@ -987,9 +1306,9 @@ function ProfileFormDialog({
987
1306
  }
988
1307
  )
989
1308
  ] }),
990
- /* @__PURE__ */ jsxs3("div", { children: [
991
- /* @__PURE__ */ jsx3("label", { className: "mb-1 block font-medium text-sm", children: "Tags" }),
992
- /* @__PURE__ */ jsx3(
1309
+ /* @__PURE__ */ jsxs4("div", { children: [
1310
+ /* @__PURE__ */ jsx4("label", { className: "mb-1 block font-medium text-sm", children: "Tags" }),
1311
+ /* @__PURE__ */ jsx4(
993
1312
  Input,
994
1313
  {
995
1314
  value: formData.tags?.join(", "),
@@ -1000,10 +1319,10 @@ function ProfileFormDialog({
1000
1319
  placeholder: "trading, aggressive, experimental"
1001
1320
  }
1002
1321
  ),
1003
- /* @__PURE__ */ jsx3("p", { className: "mt-1 text-muted-foreground text-xs", children: "Comma-separated tags for organization" })
1322
+ /* @__PURE__ */ jsx4("p", { className: "mt-1 text-muted-foreground text-xs", children: "Comma-separated tags for organization" })
1004
1323
  ] }),
1005
- /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-2", children: [
1006
- /* @__PURE__ */ jsx3(
1324
+ /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-2", children: [
1325
+ /* @__PURE__ */ jsx4(
1007
1326
  "input",
1008
1327
  {
1009
1328
  type: "checkbox",
@@ -1013,12 +1332,12 @@ function ProfileFormDialog({
1013
1332
  className: "rounded border-border"
1014
1333
  }
1015
1334
  ),
1016
- /* @__PURE__ */ jsx3("label", { htmlFor: "is_public", className: "text-sm", children: "Make this profile public (visible to other users)" })
1335
+ /* @__PURE__ */ jsx4("label", { htmlFor: "is_public", className: "text-sm", children: "Make this profile public (visible to other users)" })
1017
1336
  ] }),
1018
- /* @__PURE__ */ jsxs3(DialogFooter, { children: [
1019
- /* @__PURE__ */ jsx3(Button, { type: "button", variant: "outline", onClick: onClose, children: "Cancel" }),
1020
- /* @__PURE__ */ jsxs3(Button, { type: "submit", disabled: saving || !formData.name, children: [
1021
- saving && /* @__PURE__ */ jsx3(Loader2, { className: "mr-2 h-4 w-4 animate-spin" }),
1337
+ /* @__PURE__ */ jsxs4(DialogFooter, { children: [
1338
+ /* @__PURE__ */ jsx4(Button, { type: "button", variant: "outline", onClick: onClose, children: "Cancel" }),
1339
+ /* @__PURE__ */ jsxs4(Button, { type: "submit", disabled: saving || !formData.name, children: [
1340
+ saving && /* @__PURE__ */ jsx4(Loader2, { className: "mr-2 h-4 w-4 animate-spin" }),
1022
1341
  isEditing ? "Save Changes" : "Create Profile"
1023
1342
  ] })
1024
1343
  ] })
@@ -1031,8 +1350,8 @@ function DeleteProfileDialog({
1031
1350
  apiClient,
1032
1351
  onSuccess
1033
1352
  }) {
1034
- const [deleting, setDeleting] = React3.useState(false);
1035
- const [error, setError] = React3.useState(null);
1353
+ const [deleting, setDeleting] = React4.useState(false);
1354
+ const [error, setError] = React4.useState(null);
1036
1355
  const handleDelete = async () => {
1037
1356
  if (!profile) return;
1038
1357
  setError(null);
@@ -1046,34 +1365,34 @@ function DeleteProfileDialog({
1046
1365
  setDeleting(false);
1047
1366
  }
1048
1367
  };
1049
- return /* @__PURE__ */ jsx3(Dialog, { open: !!profile, onOpenChange: (o) => !o && onClose(), children: /* @__PURE__ */ jsxs3(DialogContent, { children: [
1050
- /* @__PURE__ */ jsxs3(DialogHeader, { children: [
1051
- /* @__PURE__ */ jsx3(DialogTitle, { children: "Delete Profile" }),
1052
- /* @__PURE__ */ jsxs3(DialogDescription, { children: [
1368
+ return /* @__PURE__ */ jsx4(Dialog, { open: !!profile, onOpenChange: (o) => !o && onClose(), children: /* @__PURE__ */ jsxs4(DialogContent, { children: [
1369
+ /* @__PURE__ */ jsxs4(DialogHeader, { children: [
1370
+ /* @__PURE__ */ jsx4(DialogTitle, { children: "Delete Profile" }),
1371
+ /* @__PURE__ */ jsxs4(DialogDescription, { children: [
1053
1372
  'Are you sure you want to delete "',
1054
1373
  profile?.name,
1055
1374
  '"? This action cannot be undone.'
1056
1375
  ] })
1057
1376
  ] }),
1058
- error && /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-2 rounded-lg border border-red-500/30 bg-red-500/10 p-3 text-red-400 text-sm", children: [
1059
- /* @__PURE__ */ jsx3(AlertCircle, { className: "h-4 w-4" }),
1060
- /* @__PURE__ */ jsx3("span", { children: error })
1377
+ error && /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-2 rounded-lg border border-red-500/30 bg-red-500/10 p-3 text-red-400 text-sm", children: [
1378
+ /* @__PURE__ */ jsx4(AlertCircle, { className: "h-4 w-4" }),
1379
+ /* @__PURE__ */ jsx4("span", { children: error })
1061
1380
  ] }),
1062
- profile?.metrics && profile.metrics.total_runs > 0 && /* @__PURE__ */ jsxs3("div", { className: "rounded-lg border border-yellow-500/30 bg-yellow-500/10 p-3 text-sm text-yellow-400", children: [
1381
+ profile?.metrics && profile.metrics.total_runs > 0 && /* @__PURE__ */ jsxs4("div", { className: "rounded-lg border border-yellow-500/30 bg-yellow-500/10 p-3 text-sm text-yellow-400", children: [
1063
1382
  "This profile has ",
1064
1383
  profile.metrics.total_runs,
1065
1384
  " recorded runs. Deleting it will lose all performance metrics."
1066
1385
  ] }),
1067
- /* @__PURE__ */ jsxs3(DialogFooter, { children: [
1068
- /* @__PURE__ */ jsx3(Button, { variant: "outline", onClick: onClose, children: "Cancel" }),
1069
- /* @__PURE__ */ jsxs3(
1386
+ /* @__PURE__ */ jsxs4(DialogFooter, { children: [
1387
+ /* @__PURE__ */ jsx4(Button, { variant: "outline", onClick: onClose, children: "Cancel" }),
1388
+ /* @__PURE__ */ jsxs4(
1070
1389
  Button,
1071
1390
  {
1072
1391
  variant: "destructive",
1073
1392
  onClick: handleDelete,
1074
1393
  disabled: deleting,
1075
1394
  children: [
1076
- deleting && /* @__PURE__ */ jsx3(Loader2, { className: "mr-2 h-4 w-4 animate-spin" }),
1395
+ deleting && /* @__PURE__ */ jsx4(Loader2, { className: "mr-2 h-4 w-4 animate-spin" }),
1077
1396
  "Delete Profile"
1078
1397
  ]
1079
1398
  }
@@ -1088,35 +1407,35 @@ function ProfileDetailDialog({
1088
1407
  onDuplicate
1089
1408
  }) {
1090
1409
  if (!profile) return null;
1091
- return /* @__PURE__ */ jsx3(Dialog, { open: !!profile, onOpenChange: (o) => !o && onClose(), children: /* @__PURE__ */ jsxs3(DialogContent, { className: "max-w-2xl", children: [
1092
- /* @__PURE__ */ jsxs3(DialogHeader, { children: [
1093
- /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-2", children: [
1094
- /* @__PURE__ */ jsx3(DialogTitle, { children: profile.name }),
1095
- profile.is_builtin && /* @__PURE__ */ jsx3(Badge, { variant: "secondary", className: "border-0", children: "Built-in" }),
1096
- profile.is_public && !profile.is_builtin && /* @__PURE__ */ jsx3(Badge, { className: "border-0 bg-blue-500/10 text-blue-400", children: "Public" })
1410
+ return /* @__PURE__ */ jsx4(Dialog, { open: !!profile, onOpenChange: (o) => !o && onClose(), children: /* @__PURE__ */ jsxs4(DialogContent, { className: "max-w-2xl", children: [
1411
+ /* @__PURE__ */ jsxs4(DialogHeader, { children: [
1412
+ /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-2", children: [
1413
+ /* @__PURE__ */ jsx4(DialogTitle, { children: profile.name }),
1414
+ profile.is_builtin && /* @__PURE__ */ jsx4(Badge, { variant: "secondary", className: "border-0", children: "Built-in" }),
1415
+ profile.is_public && !profile.is_builtin && /* @__PURE__ */ jsx4(Badge, { className: "border-0 bg-blue-500/10 text-blue-400", children: "Public" })
1097
1416
  ] }),
1098
- profile.description && /* @__PURE__ */ jsx3(DialogDescription, { children: profile.description })
1417
+ profile.description && /* @__PURE__ */ jsx4(DialogDescription, { children: profile.description })
1099
1418
  ] }),
1100
- /* @__PURE__ */ jsxs3("div", { className: "space-y-4", children: [
1101
- /* @__PURE__ */ jsxs3("div", { className: "grid gap-4 sm:grid-cols-2", children: [
1102
- profile.extends && /* @__PURE__ */ jsxs3("div", { children: [
1103
- /* @__PURE__ */ jsx3("label", { className: "font-medium text-muted-foreground text-xs", children: "Extends" }),
1104
- /* @__PURE__ */ jsx3("p", { className: "text-sm", children: profile.extends })
1419
+ /* @__PURE__ */ jsxs4("div", { className: "space-y-4", children: [
1420
+ /* @__PURE__ */ jsxs4("div", { className: "grid gap-4 sm:grid-cols-2", children: [
1421
+ profile.extends && /* @__PURE__ */ jsxs4("div", { children: [
1422
+ /* @__PURE__ */ jsx4("label", { className: "font-medium text-muted-foreground text-xs", children: "Extends" }),
1423
+ /* @__PURE__ */ jsx4("p", { className: "text-sm", children: profile.extends })
1105
1424
  ] }),
1106
- profile.model && /* @__PURE__ */ jsxs3("div", { children: [
1107
- /* @__PURE__ */ jsx3("label", { className: "font-medium text-muted-foreground text-xs", children: "Model" }),
1108
- /* @__PURE__ */ jsx3("p", { className: "text-sm", children: profile.model })
1425
+ profile.model && /* @__PURE__ */ jsxs4("div", { children: [
1426
+ /* @__PURE__ */ jsx4("label", { className: "font-medium text-muted-foreground text-xs", children: "Model" }),
1427
+ /* @__PURE__ */ jsx4("p", { className: "text-sm", children: profile.model })
1109
1428
  ] })
1110
1429
  ] }),
1111
- profile.tags && profile.tags.length > 0 && /* @__PURE__ */ jsxs3("div", { children: [
1112
- /* @__PURE__ */ jsx3("label", { className: "font-medium text-muted-foreground text-xs", children: "Tags" }),
1113
- /* @__PURE__ */ jsx3("div", { className: "mt-1 flex flex-wrap gap-1", children: profile.tags.map((tag) => /* @__PURE__ */ jsx3(Badge, { variant: "outline", className: "text-xs", children: tag }, tag)) })
1430
+ profile.tags && profile.tags.length > 0 && /* @__PURE__ */ jsxs4("div", { children: [
1431
+ /* @__PURE__ */ jsx4("label", { className: "font-medium text-muted-foreground text-xs", children: "Tags" }),
1432
+ /* @__PURE__ */ jsx4("div", { className: "mt-1 flex flex-wrap gap-1", children: profile.tags.map((tag) => /* @__PURE__ */ jsx4(Badge, { variant: "outline", className: "text-xs", children: tag }, tag)) })
1114
1433
  ] }),
1115
- profile.system_prompt && /* @__PURE__ */ jsxs3("div", { children: [
1116
- /* @__PURE__ */ jsx3("label", { className: "font-medium text-muted-foreground text-xs", children: "System Prompt" }),
1117
- /* @__PURE__ */ jsxs3("div", { className: "relative mt-1", children: [
1118
- /* @__PURE__ */ jsx3("pre", { className: "max-h-48 overflow-auto rounded-lg bg-muted p-3 font-mono text-sm", children: profile.system_prompt }),
1119
- /* @__PURE__ */ jsx3(
1434
+ profile.system_prompt && /* @__PURE__ */ jsxs4("div", { children: [
1435
+ /* @__PURE__ */ jsx4("label", { className: "font-medium text-muted-foreground text-xs", children: "System Prompt" }),
1436
+ /* @__PURE__ */ jsxs4("div", { className: "relative mt-1", children: [
1437
+ /* @__PURE__ */ jsx4("pre", { className: "max-h-48 overflow-auto rounded-lg bg-muted p-3 font-mono text-sm", children: profile.system_prompt }),
1438
+ /* @__PURE__ */ jsx4(
1120
1439
  Button,
1121
1440
  {
1122
1441
  variant: "ghost",
@@ -1124,54 +1443,54 @@ function ProfileDetailDialog({
1124
1443
  className: "absolute top-2 right-2",
1125
1444
  onClick: () => navigator.clipboard.writeText(profile.system_prompt),
1126
1445
  "aria-label": "Copy system prompt",
1127
- children: /* @__PURE__ */ jsx3(Copy, { className: "h-4 w-4" })
1446
+ children: /* @__PURE__ */ jsx4(Copy, { className: "h-4 w-4" })
1128
1447
  }
1129
1448
  )
1130
1449
  ] })
1131
1450
  ] }),
1132
- profile.instructions && profile.instructions.length > 0 && /* @__PURE__ */ jsxs3("div", { children: [
1133
- /* @__PURE__ */ jsx3("label", { className: "font-medium text-muted-foreground text-xs", children: "Instructions" }),
1134
- /* @__PURE__ */ jsx3("ul", { className: "mt-1 space-y-1", children: profile.instructions.map((inst, i) => /* @__PURE__ */ jsxs3("li", { className: "flex items-start gap-2 text-sm", children: [
1135
- /* @__PURE__ */ jsx3(ChevronRight, { className: "mt-0.5 h-4 w-4 text-muted-foreground" }),
1451
+ profile.instructions && profile.instructions.length > 0 && /* @__PURE__ */ jsxs4("div", { children: [
1452
+ /* @__PURE__ */ jsx4("label", { className: "font-medium text-muted-foreground text-xs", children: "Instructions" }),
1453
+ /* @__PURE__ */ jsx4("ul", { className: "mt-1 space-y-1", children: profile.instructions.map((inst, i) => /* @__PURE__ */ jsxs4("li", { className: "flex items-start gap-2 text-sm", children: [
1454
+ /* @__PURE__ */ jsx4(ChevronRight, { className: "mt-0.5 h-4 w-4 text-muted-foreground" }),
1136
1455
  inst
1137
1456
  ] }, i)) })
1138
1457
  ] }),
1139
- profile.metrics && profile.metrics.total_runs > 0 && /* @__PURE__ */ jsxs3("div", { className: "rounded-lg border border-border p-4", children: [
1140
- /* @__PURE__ */ jsx3("label", { className: "font-medium text-muted-foreground text-xs", children: "Performance Metrics" }),
1141
- /* @__PURE__ */ jsxs3("div", { className: "mt-2 grid grid-cols-2 gap-4 sm:grid-cols-4", children: [
1142
- /* @__PURE__ */ jsxs3("div", { children: [
1143
- /* @__PURE__ */ jsx3("p", { className: "font-medium text-2xl", children: profile.metrics.total_runs }),
1144
- /* @__PURE__ */ jsx3("p", { className: "text-muted-foreground text-xs", children: "Total Runs" })
1458
+ profile.metrics && profile.metrics.total_runs > 0 && /* @__PURE__ */ jsxs4("div", { className: "rounded-lg border border-border p-4", children: [
1459
+ /* @__PURE__ */ jsx4("label", { className: "font-medium text-muted-foreground text-xs", children: "Performance Metrics" }),
1460
+ /* @__PURE__ */ jsxs4("div", { className: "mt-2 grid grid-cols-2 gap-4 sm:grid-cols-4", children: [
1461
+ /* @__PURE__ */ jsxs4("div", { children: [
1462
+ /* @__PURE__ */ jsx4("p", { className: "font-medium text-2xl", children: profile.metrics.total_runs }),
1463
+ /* @__PURE__ */ jsx4("p", { className: "text-muted-foreground text-xs", children: "Total Runs" })
1145
1464
  ] }),
1146
- /* @__PURE__ */ jsxs3("div", { children: [
1147
- /* @__PURE__ */ jsxs3("p", { className: "font-medium text-2xl", children: [
1465
+ /* @__PURE__ */ jsxs4("div", { children: [
1466
+ /* @__PURE__ */ jsxs4("p", { className: "font-medium text-2xl", children: [
1148
1467
  profile.metrics.success_rate.toFixed(0),
1149
1468
  "%"
1150
1469
  ] }),
1151
- /* @__PURE__ */ jsx3("p", { className: "text-muted-foreground text-xs", children: "Success Rate" })
1470
+ /* @__PURE__ */ jsx4("p", { className: "text-muted-foreground text-xs", children: "Success Rate" })
1152
1471
  ] }),
1153
- /* @__PURE__ */ jsxs3("div", { children: [
1154
- /* @__PURE__ */ jsxs3("p", { className: "font-medium text-2xl", children: [
1472
+ /* @__PURE__ */ jsxs4("div", { children: [
1473
+ /* @__PURE__ */ jsxs4("p", { className: "font-medium text-2xl", children: [
1155
1474
  (profile.metrics.avg_duration_ms / 1e3).toFixed(1),
1156
1475
  "s"
1157
1476
  ] }),
1158
- /* @__PURE__ */ jsx3("p", { className: "text-muted-foreground text-xs", children: "Avg Duration" })
1477
+ /* @__PURE__ */ jsx4("p", { className: "text-muted-foreground text-xs", children: "Avg Duration" })
1159
1478
  ] }),
1160
- profile.metrics.avg_tokens_used && /* @__PURE__ */ jsxs3("div", { children: [
1161
- /* @__PURE__ */ jsx3("p", { className: "font-medium text-2xl", children: profile.metrics.avg_tokens_used.toLocaleString() }),
1162
- /* @__PURE__ */ jsx3("p", { className: "text-muted-foreground text-xs", children: "Avg Tokens" })
1479
+ profile.metrics.avg_tokens_used && /* @__PURE__ */ jsxs4("div", { children: [
1480
+ /* @__PURE__ */ jsx4("p", { className: "font-medium text-2xl", children: profile.metrics.avg_tokens_used.toLocaleString() }),
1481
+ /* @__PURE__ */ jsx4("p", { className: "text-muted-foreground text-xs", children: "Avg Tokens" })
1163
1482
  ] })
1164
1483
  ] })
1165
1484
  ] })
1166
1485
  ] }),
1167
- /* @__PURE__ */ jsxs3(DialogFooter, { children: [
1168
- /* @__PURE__ */ jsx3(Button, { variant: "outline", onClick: onClose, children: "Close" }),
1169
- onDuplicate && /* @__PURE__ */ jsxs3(Button, { variant: "outline", onClick: onDuplicate, children: [
1170
- /* @__PURE__ */ jsx3(Copy, { className: "mr-2 h-4 w-4" }),
1486
+ /* @__PURE__ */ jsxs4(DialogFooter, { children: [
1487
+ /* @__PURE__ */ jsx4(Button, { variant: "outline", onClick: onClose, children: "Close" }),
1488
+ onDuplicate && /* @__PURE__ */ jsxs4(Button, { variant: "outline", onClick: onDuplicate, children: [
1489
+ /* @__PURE__ */ jsx4(Copy, { className: "mr-2 h-4 w-4" }),
1171
1490
  "Duplicate"
1172
1491
  ] }),
1173
- onEdit && /* @__PURE__ */ jsxs3(Button, { onClick: onEdit, children: [
1174
- /* @__PURE__ */ jsx3(Edit2, { className: "mr-2 h-4 w-4" }),
1492
+ onEdit && /* @__PURE__ */ jsxs4(Button, { onClick: onEdit, children: [
1493
+ /* @__PURE__ */ jsx4(Edit2, { className: "mr-2 h-4 w-4" }),
1175
1494
  "Edit"
1176
1495
  ] })
1177
1496
  ] })
@@ -1180,5 +1499,6 @@ function ProfileDetailDialog({
1180
1499
  export {
1181
1500
  BillingPage,
1182
1501
  ProfilesPage,
1502
+ ProvisioningWizard,
1183
1503
  StandalonePricingPage
1184
1504
  };