@posthog/wizard 2.17.0 → 2.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/dist/{add-mcp-server-to-clients-D4PK6ulR.js → add-mcp-server-to-clients-CjnvTVj0.js} +72 -13
  2. package/dist/add-mcp-server-to-clients-CjnvTVj0.js.map +1 -0
  3. package/dist/{agent-interface-7t5DBo2A.js → agent-interface-CQU6x4Hj.js} +112 -54
  4. package/dist/agent-interface-CQU6x4Hj.js.map +1 -0
  5. package/dist/{agent-runner-CTkKLVhp.js → agent-runner-Cj7saDkL.js} +17 -11
  6. package/dist/{agent-runner-CTkKLVhp.js.map → agent-runner-Cj7saDkL.js.map} +1 -1
  7. package/dist/{analytics-DN_Gy87F.js → analytics-Df-Xb81i.js} +26 -4
  8. package/dist/analytics-Df-Xb81i.js.map +1 -0
  9. package/dist/{api-serd0SMY.js → api-Dw6_orDE.js} +3 -3
  10. package/dist/{api-serd0SMY.js.map → api-Dw6_orDE.js.map} +1 -1
  11. package/dist/bin.js +236 -79
  12. package/dist/bin.js.map +1 -1
  13. package/dist/{ci-install-BbJ7c3WK.js → ci-install-BKAvFfK6.js} +4 -4
  14. package/dist/{ci-install-BbJ7c3WK.js.map → ci-install-BKAvFfK6.js.map} +1 -1
  15. package/dist/{debug-BI-Js0PB.js → debug-Cp_wNn8i.js} +1 -1
  16. package/dist/{debug-Bx7nvCWW.js → debug-DnMO6O8O.js} +36 -21
  17. package/dist/debug-DnMO6O8O.js.map +1 -0
  18. package/dist/{defaults-CPH6eWhN.js → defaults-BNWIWzjc.js} +34 -8
  19. package/dist/defaults-BNWIWzjc.js.map +1 -0
  20. package/dist/{env-api-key-B3gE9Un0.js → env-api-key-MlzJYAvt.js} +1 -1
  21. package/dist/{env-api-key-B3gE9Un0.js.map → env-api-key-MlzJYAvt.js.map} +1 -1
  22. package/dist/{environment-CiZVSSYt.js → environment-Ls0H9ljT.js} +3 -3
  23. package/dist/{environment-CiZVSSYt.js.map → environment-Ls0H9ljT.js.map} +1 -1
  24. package/dist/{file-utils-Dy9JncCo.js → file-utils-VAXoyXVA.js} +1 -1
  25. package/dist/{file-utils-Dy9JncCo.js.map → file-utils-VAXoyXVA.js.map} +1 -1
  26. package/dist/{interactive-BwIzklw0.js → interactive-D15byhpc.js} +2 -2
  27. package/dist/{interactive-BwIzklw0.js.map → interactive-D15byhpc.js.map} +1 -1
  28. package/dist/{mcp-prompt-streaming-8U9Qs9EV.js → mcp-prompt-streaming-DQOTQfW1.js} +4 -4
  29. package/dist/{mcp-prompt-streaming-8U9Qs9EV.js.map → mcp-prompt-streaming-DQOTQfW1.js.map} +1 -1
  30. package/dist/{non-interactive-DTaZnVq_.js → non-interactive-DcFLJtl_.js} +2 -2
  31. package/dist/{non-interactive-DTaZnVq_.js.map → non-interactive-DcFLJtl_.js.map} +1 -1
  32. package/dist/{package-manager-CKQLR20D.js → package-manager-DUPgLGpQ.js} +2 -2
  33. package/dist/{package-manager-CKQLR20D.js.map → package-manager-DUPgLGpQ.js.map} +1 -1
  34. package/dist/{playground-CR81Mwe3.js → playground-BZ0hGjbL.js} +12 -4
  35. package/dist/playground-BZ0hGjbL.js.map +1 -0
  36. package/dist/{posthog-BrLFkaji.js → posthog-Cr37rnla.js} +1 -1
  37. package/dist/{posthog-BrLFkaji.js.map → posthog-Cr37rnla.js.map} +1 -1
  38. package/dist/{posthog-integration-Bv7987YJ.js → posthog-integration-C8qhJnI3.js} +282 -13
  39. package/dist/posthog-integration-C8qhJnI3.js.map +1 -0
  40. package/dist/{provisioning-C96Kw-9D.js → provisioning-C-2ExcqY.js} +3 -3
  41. package/dist/{provisioning-C96Kw-9D.js.map → provisioning-C-2ExcqY.js.map} +1 -1
  42. package/dist/{registry-B9k73FKR.js → registry-hBUgaWFx.js} +4 -4
  43. package/dist/{registry-B9k73FKR.js.map → registry-hBUgaWFx.js.map} +1 -1
  44. package/dist/{setup-utils-Bpfsap9L.js → setup-utils-DetnhXo0.js} +65 -44
  45. package/dist/setup-utils-DetnhXo0.js.map +1 -0
  46. package/dist/{slides-DRbBgsdd.js → slides-mT2s9wM_.js} +180 -71
  47. package/dist/slides-mT2s9wM_.js.map +1 -0
  48. package/dist/{start-tui-BZ7rEf3e.js → start-tui-BfXoErKg.js} +16 -16
  49. package/dist/start-tui-BfXoErKg.js.map +1 -0
  50. package/dist/{steps-DDx35170.js → steps-SoDXSUxe.js} +6 -6
  51. package/dist/{steps-DDx35170.js.map → steps-SoDXSUxe.js.map} +1 -1
  52. package/dist/{task-stream-BI8rJg9H.js → task-stream-CZRj6auI.js} +2 -2
  53. package/dist/{task-stream-BI8rJg9H.js.map → task-stream-CZRj6auI.js.map} +1 -1
  54. package/dist/{telemetry-ByYtIfW0.js → telemetry-CPcMFxcO.js} +2 -2
  55. package/dist/{telemetry-ByYtIfW0.js.map → telemetry-CPcMFxcO.js.map} +1 -1
  56. package/dist/{urls-CTCJIxbR.js → urls-BO7doNJG.js} +2 -2
  57. package/dist/{urls-CTCJIxbR.js.map → urls-BO7doNJG.js.map} +1 -1
  58. package/dist/{wizard-abort-CY0ibdq1.js → wizard-abort-CDXufkqJ.js} +5 -3
  59. package/dist/wizard-abort-CDXufkqJ.js.map +1 -0
  60. package/dist/{wizard-abort-QdRxGQp_.js → wizard-abort-CtMY57ZE.js} +1 -1
  61. package/package.json +1 -1
  62. package/dist/TextBlock-D0Ep3zC9.js +0 -275
  63. package/dist/TextBlock-D0Ep3zC9.js.map +0 -1
  64. package/dist/add-mcp-server-to-clients-D4PK6ulR.js.map +0 -1
  65. package/dist/agent-interface-7t5DBo2A.js.map +0 -1
  66. package/dist/analytics-DN_Gy87F.js.map +0 -1
  67. package/dist/debug-Bx7nvCWW.js.map +0 -1
  68. package/dist/defaults-CPH6eWhN.js.map +0 -1
  69. package/dist/playground-CR81Mwe3.js.map +0 -1
  70. package/dist/posthog-integration-Bv7987YJ.js.map +0 -1
  71. package/dist/setup-utils-Bpfsap9L.js.map +0 -1
  72. package/dist/skill-CPqcV8zp.js +0 -29
  73. package/dist/skill-CPqcV8zp.js.map +0 -1
  74. package/dist/slides-DRbBgsdd.js.map +0 -1
  75. package/dist/start-tui-BZ7rEf3e.js.map +0 -1
  76. package/dist/wizard-abort-CY0ibdq1.js.map +0 -1
@@ -1,11 +1,11 @@
1
- import { g as SERVICE_LABELS, s as logToFile } from "./debug-Bx7nvCWW.js";
1
+ import { g as SERVICE_LABELS, s as logToFile } from "./debug-DnMO6O8O.js";
2
2
  import { n as isTaskStatus } from "./wizard-ui-YdGFRyu_.js";
3
- import { n as sessionProperties, t as analytics } from "./analytics-DN_Gy87F.js";
3
+ import { r as sessionProperties, t as analytics } from "./analytics-Df-Xb81i.js";
4
4
  import { i as buildSession } from "./wizard-session-d27JGRGi.js";
5
- import { v as AUDIT_SEVERITY_STYLE } from "./agent-interface-7t5DBo2A.js";
6
- import { a as isObjectBlock, i as isLinesBlock, n as computeVisibleRange, o as Colors, r as isClearBlock, s as Icons, t as TextBlock } from "./TextBlock-D0Ep3zC9.js";
5
+ import { v as AUDIT_SEVERITY_STYLE } from "./agent-interface-CQU6x4Hj.js";
6
+ import { c as computeVisibleRange, d as isObjectBlock, f as Colors, l as isClearBlock, p as Icons, s as TextBlock, u as isLinesBlock } from "./posthog-integration-C8qhJnI3.js";
7
7
  import { a as getProgramConfig, i as Program, l as getKindMeta, r as PROGRAM_REGISTRY } from "./bin.js";
8
- import { n as AVAILABLE_FEATURES, t as ALL_FEATURE_VALUES } from "./defaults-CPH6eWhN.js";
8
+ import { n as AVAILABLE_FEATURES, o as isAllFeaturesSelected, t as ALL_FEATURE_VALUES } from "./defaults-BNWIWzjc.js";
9
9
  import * as fs$1 from "fs";
10
10
  import { Box, Text, measureElement, useInput, useStdout } from "ink";
11
11
  import { Component, Fragment, createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
@@ -120,6 +120,12 @@ var WizardRouter = class {
120
120
  * All session mutations that affect screen resolution go through
121
121
  * explicit setters so emitChange() is always called.
122
122
  */
123
+ /**
124
+ * FIFO cap on retained status lines. The status bar is the only consumer and
125
+ * renders at most EXPANDED_COUNT lines, so there is no reason to retain more —
126
+ * the cap is tied to the window it feeds.
127
+ */
128
+ const MAX_STATUS_MESSAGES = 10;
123
129
  var WizardStore = class {
124
130
  $session = map(buildSession({}));
125
131
  $statusMessages = atom([]);
@@ -314,6 +320,7 @@ var WizardStore = class {
314
320
  }
315
321
  /** User dismissed the blocking outage screen. Gate resolves via _checkGates(). */
316
322
  dismissOutage() {
323
+ logToFile("[health-checks] user dismissed outage screen, continuing");
317
324
  this.$session.setKey("outageDismissed", true);
318
325
  this.emitChange();
319
326
  }
@@ -455,13 +462,15 @@ var WizardStore = class {
455
462
  analytics.wizardCapture("feature enabled", { feature });
456
463
  this.emitChange();
457
464
  }
458
- setMcpComplete(outcome = "skipped", installedClients = []) {
465
+ setMcpComplete(outcome = "skipped", installedClients = [], featuresSelected) {
459
466
  this.$session.setKey("mcpComplete", true);
460
467
  this.$session.setKey("mcpOutcome", outcome);
461
468
  this.$session.setKey("mcpInstalledClients", installedClients);
469
+ const featuresPayload = outcome === "installed" && featuresSelected !== void 0 ? { mcp_features_selected: featuresSelected } : {};
462
470
  analytics.wizardCapture("mcp complete", {
463
471
  mcp_outcome: outcome,
464
472
  mcp_installed_clients: installedClients,
473
+ ...featuresPayload,
465
474
  ...sessionProperties(this.session)
466
475
  });
467
476
  this.emitChange();
@@ -571,7 +580,8 @@ var WizardStore = class {
571
580
  pushStatus(message) {
572
581
  const msgs = this.$statusMessages.get();
573
582
  if (msgs.length > 0 && msgs[msgs.length - 1] === message) return;
574
- this.$statusMessages.set([...msgs, message]);
583
+ const next = msgs.length >= MAX_STATUS_MESSAGES ? [...msgs.slice(msgs.length - MAX_STATUS_MESSAGES + 1), message] : [...msgs, message];
584
+ this.$statusMessages.set(next);
575
585
  this.emitChange();
576
586
  }
577
587
  setTasks(tasks) {
@@ -1007,8 +1017,13 @@ const MultiPickerMenu = ({ message, options, centered = false, columns = 1, opti
1007
1017
  handler: () => {
1008
1018
  setSelected((prev) => {
1009
1019
  const next = new Set(prev);
1010
- if (next.has(focused)) next.delete(focused);
1011
- else next.add(focused);
1020
+ if (next.has(focused)) {
1021
+ next.delete(focused);
1022
+ return next;
1023
+ }
1024
+ if (options[focused]?.exclusive) return new Set([focused]);
1025
+ for (const i of next) if (options[i]?.exclusive) next.delete(i);
1026
+ next.add(focused);
1012
1027
  return next;
1013
1028
  });
1014
1029
  }
@@ -1741,6 +1756,7 @@ var ScreenErrorBoundary = class extends Component {
1741
1756
  }
1742
1757
  componentDidCatch(error) {
1743
1758
  const { store } = this.props;
1759
+ logToFile("[screen-error-boundary]", error);
1744
1760
  console.error("[ScreenErrorBoundary]", error.message, error.stack);
1745
1761
  store.setOutroData({
1746
1762
  kind: "error",
@@ -1840,6 +1856,15 @@ const ScreenContainer = ({ store, screens }) => {
1840
1856
  }) })
1841
1857
  });
1842
1858
  };
1859
+ //#endregion
1860
+ //#region src/ui/tui/primitives/TabContainer.tsx
1861
+ /**
1862
+ * TabContainer — Self-contained tabbed interface.
1863
+ * Absorbs BottomTabBar + StatusPanel functionality.
1864
+ *
1865
+ * Key bindings are declared via useKeyBindings, which auto-registers
1866
+ * hints in the KeyboardHintsBar (rendered by ScreenContainer).
1867
+ */
1843
1868
  const TabContainer = ({ tabs, statusMessage, expandableStatus = false, store }) => {
1844
1869
  const [activeTab, setActiveTab] = useState(0);
1845
1870
  const [localExpanded, setLocalExpanded] = useState(false);
@@ -2597,8 +2622,22 @@ const IssueRow = ({ issue, docsWidth }) => {
2597
2622
  *
2598
2623
  * When done, calls store.setMcpComplete(). The router resolves to outro.
2599
2624
  */
2600
- const markDone = (store, outcome, clients = []) => {
2601
- store.setMcpComplete(outcome, clients);
2625
+ const markDone = (store, outcome, clients = [], featuresSelected) => {
2626
+ store.setMcpComplete(outcome, clients, featuresSelected);
2627
+ };
2628
+ const reportFeatures = (features) => isAllFeaturesSelected(features) ? "all" : features;
2629
+ /**
2630
+ * Connector step prompt — Enter continues (opens the connector page). There's
2631
+ * no skip: picking the connector commits to opening it.
2632
+ */
2633
+ const ConnectorContinue = ({ onContinue }) => {
2634
+ useInput((_input, key) => {
2635
+ if (key.return) onContinue();
2636
+ });
2637
+ return /* @__PURE__ */ jsxs(Text, {
2638
+ color: Colors.primary,
2639
+ children: ["Press enter to continue ", Icons.triangleRight]
2640
+ });
2602
2641
  };
2603
2642
  const McpScreen = ({ store, installer, mode = "install" }) => {
2604
2643
  useSyncExternalStore((cb) => store.subscribe(cb), () => store.getSnapshot());
@@ -2609,6 +2648,7 @@ const McpScreen = ({ store, installer, mode = "install" }) => {
2609
2648
  const [selectedClientNames, setSelectedClientNames] = useState([]);
2610
2649
  const [resultClients, setResultClients] = useState([]);
2611
2650
  const [pluginClients, setPluginClients] = useState([]);
2651
+ const [installMode, setInstallMode] = useState("custom");
2612
2652
  useEffect(() => {
2613
2653
  (async () => {
2614
2654
  try {
@@ -2626,23 +2666,34 @@ const McpScreen = ({ store, installer, mode = "install" }) => {
2626
2666
  }
2627
2667
  })();
2628
2668
  }, [installer]);
2629
- const proceedToFeatureSelectOrInstall = (clientNames) => {
2669
+ const proceedAfterClientPick = (clientNames, chosenMode) => {
2630
2670
  setSelectedClientNames(clientNames);
2671
+ if (chosenMode === "all") {
2672
+ doInstall(clientNames, [...ALL_FEATURE_VALUES]);
2673
+ return;
2674
+ }
2631
2675
  if (store.session.mcpFeatures) {
2632
2676
  doInstall(clientNames, store.session.mcpFeatures);
2633
2677
  return;
2634
2678
  }
2635
- if (!clientNames.some((name) => {
2636
- return !clients.find((c) => c.name === name)?.finish;
2637
- })) {
2638
- doInstall(clientNames, []);
2679
+ if (clientNames.some((name) => clients.find((c) => c.name === name)?.finish)) {
2680
+ setPhase("connector");
2639
2681
  return;
2640
2682
  }
2641
2683
  setPhase("feature-select");
2642
2684
  };
2643
2685
  const handleConfirm = () => {
2644
2686
  if (isRemove) doRemove();
2645
- else if (clients.length === 1) proceedToFeatureSelectOrInstall(clients.map((c) => c.name));
2687
+ else if (clients.length === 1) proceedAfterClientPick([clients[0].name], "custom");
2688
+ else setPhase("pick");
2689
+ };
2690
+ const handleTriStateChoice = (choice) => {
2691
+ if (choice === "skip") {
2692
+ handleSkip();
2693
+ return;
2694
+ }
2695
+ setInstallMode(choice);
2696
+ if (clients.length === 1) proceedAfterClientPick([clients[0].name], choice);
2646
2697
  else setPhase("pick");
2647
2698
  };
2648
2699
  const handleSkip = () => {
@@ -2652,17 +2703,25 @@ const McpScreen = ({ store, installer, mode = "install" }) => {
2652
2703
  setPhase("working");
2653
2704
  let mcpResult = [];
2654
2705
  let pluginResult = [];
2655
- try {
2706
+ const pluginCapableSet = new Set(clients.filter((c) => c.supportsPlugin).map((c) => c.name));
2707
+ const pluginCapableNames = names.filter((n) => pluginCapableSet.has(n));
2708
+ const directNames = names.filter((n) => !pluginCapableSet.has(n));
2709
+ if (installMode === "all") {
2710
+ try {
2711
+ mcpResult = await installer.install(directNames, features, store.session.apiKey);
2712
+ } catch {}
2713
+ try {
2714
+ pluginResult = await installer.installPlugins(pluginCapableNames);
2715
+ } catch {}
2716
+ } else try {
2656
2717
  mcpResult = await installer.install(names, features, store.session.apiKey);
2657
2718
  } catch {}
2658
- try {
2659
- pluginResult = await installer.installPlugins(names);
2660
- } catch {}
2661
2719
  setResultClients(mcpResult);
2662
2720
  setPluginClients(pluginResult);
2663
2721
  setPhase("done");
2664
- const outcome = mcpResult.length > 0 ? "installed" : "failed";
2665
- setTimeout(() => markDone(store, outcome, mcpResult), 2e3);
2722
+ const outcome = mcpResult.length + pluginResult.length > 0 ? "installed" : "failed";
2723
+ const featuresReport = reportFeatures(features ?? [...ALL_FEATURE_VALUES]);
2724
+ setTimeout(() => markDone(store, outcome, [...mcpResult, ...pluginResult], featuresReport), 2e3);
2666
2725
  };
2667
2726
  const doRemove = async () => {
2668
2727
  setPhase("working");
@@ -2730,7 +2789,26 @@ const McpScreen = ({ store, installer, mode = "install" }) => {
2730
2789
  }),
2731
2790
  /* @__PURE__ */ jsx(Box, {
2732
2791
  marginTop: 1,
2733
- children: /* @__PURE__ */ jsx(ConfirmationInput, {
2792
+ children: !isRemove && !store.session.mcpFeatures ? /* @__PURE__ */ jsx(PickerMenu, {
2793
+ message: `Install the PostHog MCP server${clients.some((c) => c.supportsPlugin) ? " and plugin" : ""}?`,
2794
+ options: [
2795
+ {
2796
+ label: "Install with all features",
2797
+ value: "all",
2798
+ hint: "recommended"
2799
+ },
2800
+ {
2801
+ label: "Customize features",
2802
+ value: "custom"
2803
+ },
2804
+ {
2805
+ label: "No thanks",
2806
+ value: "skip"
2807
+ }
2808
+ ],
2809
+ mode: "single",
2810
+ onSelect: (choice) => handleTriStateChoice(choice)
2811
+ }) : /* @__PURE__ */ jsx(ConfirmationInput, {
2734
2812
  message: `${isRemove ? "Remove" : "Install"} the PostHog MCP server${clients.some((c) => c.supportsPlugin) ? " and plugin" : ""}?`,
2735
2813
  confirmLabel: isRemove ? "Remove" : "Install",
2736
2814
  cancelLabel: "No thanks",
@@ -2740,76 +2818,107 @@ const McpScreen = ({ store, installer, mode = "install" }) => {
2740
2818
  })
2741
2819
  ] }),
2742
2820
  phase === "pick" && /* @__PURE__ */ jsx(PickerMenu, {
2743
- message: "Select editor to install MCP server",
2821
+ message: installMode === "all" ? "Select editor to install" : "Select editor to install MCP server",
2744
2822
  options: clients.map((c) => ({
2745
2823
  label: c.name,
2746
- value: c.name
2824
+ value: c.name,
2825
+ exclusive: Boolean(c.finish),
2826
+ hint: installMode === "all" ? c.finish ? "connector" : c.supportsPlugin ? "plugin" : "MCP" : void 0
2747
2827
  })),
2748
2828
  mode: "multi",
2749
2829
  onSelect: (selected) => {
2750
- proceedToFeatureSelectOrInstall(Array.isArray(selected) ? selected : [selected]);
2830
+ proceedAfterClientPick(Array.isArray(selected) ? selected : [selected], installMode);
2751
2831
  }
2752
2832
  }),
2753
2833
  phase === "feature-select" && /* @__PURE__ */ jsx(GroupedPickerMenu, {
2754
2834
  message: "Select features to enable",
2755
2835
  groups: AVAILABLE_FEATURES,
2756
- initialSelected: [...ALL_FEATURE_VALUES],
2836
+ initialSelected: [],
2757
2837
  onSelect: (features) => {
2758
2838
  doInstall(selectedClientNames, features);
2759
2839
  }
2760
2840
  }),
2841
+ phase === "connector" && /* @__PURE__ */ jsxs(Box, {
2842
+ flexDirection: "column",
2843
+ children: [/* @__PURE__ */ jsx(Box, {
2844
+ marginBottom: 1,
2845
+ children: /* @__PURE__ */ jsx(Text, {
2846
+ dimColor: true,
2847
+ children: "You'll choose which features and tools to enable in Claude's UI after connecting."
2848
+ })
2849
+ }), /* @__PURE__ */ jsx(ConnectorContinue, { onContinue: () => void doInstall(selectedClientNames, []) })]
2850
+ }),
2761
2851
  phase === "working" && /* @__PURE__ */ jsxs(Text, {
2762
2852
  dimColor: true,
2763
2853
  children: [isRemove ? "Removing" : "Installing", " MCP server..."]
2764
2854
  }),
2765
2855
  phase === "done" && /* @__PURE__ */ jsx(Box, {
2766
2856
  flexDirection: "column",
2767
- children: installedNow.length === 0 && finishNotes.length === 0 ? /* @__PURE__ */ jsxs(Text, {
2857
+ children: installedNow.length + pluginClients.length + finishNotes.length === 0 ? /* @__PURE__ */ jsxs(Text, {
2768
2858
  dimColor: true,
2769
2859
  children: [isRemove ? "Removal" : "Installation", " skipped."]
2770
- }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [installedNow.length > 0 && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsxs(Text, {
2771
- color: "green",
2772
- bold: true,
2773
- children: [
2774
- "✔",
2775
- " MCP server",
2776
- !isRemove && pluginClients.length > 0 ? " and plugin" : "",
2860
+ }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [
2861
+ pluginClients.length > 0 && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsxs(Text, {
2862
+ color: "green",
2863
+ bold: true,
2864
+ children: ["✔", " Plugin installed for:"]
2865
+ }), pluginClients.map((name, i) => /* @__PURE__ */ jsxs(Text, { children: [
2777
2866
  " ",
2778
- isRemove ? "removed from" : "installed for",
2779
- ":"
2780
- ]
2781
- }), installedNow.map((name, i) => /* @__PURE__ */ jsxs(Text, { children: [
2782
- " ",
2783
- "",
2784
- " ",
2785
- name
2786
- ] }, i))] }), finishNotes.map((note) => /* @__PURE__ */ jsxs(Box, {
2787
- flexDirection: "column",
2788
- marginTop: 1,
2789
- children: [
2790
- /* @__PURE__ */ jsxs(Text, {
2791
- color: "green",
2792
- bold: true,
2793
- children: [note.name, " \\u2014 finish in your browser:"]
2794
- }),
2795
- /* @__PURE__ */ jsxs(Text, { children: [
2796
- " ",
2797
- "Opened ",
2798
- /* @__PURE__ */ jsx(Text, {
2799
- color: "cyan",
2800
- children: note.url
2867
+ "",
2868
+ " ",
2869
+ name
2870
+ ] }, `p-${i}`))] }),
2871
+ installedNow.length > 0 && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsxs(Text, {
2872
+ color: "green",
2873
+ bold: true,
2874
+ children: [
2875
+ "✔",
2876
+ " MCP server",
2877
+ " ",
2878
+ isRemove ? "removed from" : "installed for",
2879
+ ":"
2880
+ ]
2881
+ }), installedNow.map((name, i) => /* @__PURE__ */ jsxs(Text, { children: [
2882
+ " ",
2883
+ "•",
2884
+ " ",
2885
+ name
2886
+ ] }, `m-${i}`))] }),
2887
+ finishNotes.map((note) => /* @__PURE__ */ jsxs(Box, {
2888
+ flexDirection: "column",
2889
+ marginTop: 1,
2890
+ children: [
2891
+ /* @__PURE__ */ jsxs(Text, {
2892
+ color: "green",
2893
+ bold: true,
2894
+ children: [
2895
+ "✔",
2896
+ " ",
2897
+ note.name,
2898
+ " ",
2899
+ "—",
2900
+ " installs a PostHog connector:"
2901
+ ]
2902
+ }),
2903
+ /* @__PURE__ */ jsxs(Text, { children: [
2904
+ " ",
2905
+ "Opened ",
2906
+ /* @__PURE__ */ jsx(Text, {
2907
+ color: "cyan",
2908
+ children: note.url
2909
+ })
2910
+ ] }),
2911
+ /* @__PURE__ */ jsxs(Text, {
2912
+ dimColor: true,
2913
+ children: [" ", note.instruction]
2914
+ }),
2915
+ /* @__PURE__ */ jsxs(Text, {
2916
+ dimColor: true,
2917
+ children: [" ", "(If it didn't open, paste the URL above.)"]
2801
2918
  })
2802
- ] }),
2803
- /* @__PURE__ */ jsxs(Text, {
2804
- dimColor: true,
2805
- children: [" ", note.instruction]
2806
- }),
2807
- /* @__PURE__ */ jsxs(Text, {
2808
- dimColor: true,
2809
- children: [" ", "(If it didn't open, paste the URL above.)"]
2810
- })
2811
- ]
2812
- }, note.name))] })
2919
+ ]
2920
+ }, note.name))
2921
+ ] })
2813
2922
  })
2814
2923
  ]
2815
2924
  })]
@@ -5365,4 +5474,4 @@ const AUDIT_3000_AREA_SLIDES = [
5365
5474
  //#endregion
5366
5475
  export { WizardStore as A, useStdoutDimensions as C, LoadingBox as D, ProgressList as E, SplitView as O, GroupedPickerMenu as S, useKeyBindings as T, ScreenContainer as _, McpSuggestedPromptsScreen as a, ModalOverlay as b, IssueTable as c, ServiceHealthList as d, TipsCard as f, TabContainer as g, HNViewer as h, AuditChecksViewer as i, CardLayout as k, SEVERITY_LABEL as l, ContentSequencer as m, AUDIT_AREA_SLIDES as n, TAILORED_ROLES as o, LearnCard as p, VisualBox as r, McpScreen as s, AUDIT_3000_AREA_SLIDES as t, SEVERITY_ORDER as u, EventPlanViewer as v, PickerMenu as w, ConfirmationInput as x, LogViewer as y };
5367
5476
 
5368
- //# sourceMappingURL=slides-DRbBgsdd.js.map
5477
+ //# sourceMappingURL=slides-mT2s9wM_.js.map