@posthog/wizard 2.65.0 → 2.66.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 (101) hide show
  1. package/dist/{add-mcp-server-to-clients-ArtlMX9-.js → add-mcp-server-to-clients-DWDEuDUR.js} +209 -45
  2. package/dist/add-mcp-server-to-clients-DWDEuDUR.js.map +1 -0
  3. package/dist/{agent-interface-ORzGEFNM.js → agent-interface-D3MNaDp3.js} +337 -44
  4. package/dist/agent-interface-D3MNaDp3.js.map +1 -0
  5. package/dist/{agent-prompt-loader-D3w6sc34.js → agent-prompt-loader-D8Bajo-L.js} +5 -5
  6. package/dist/{agent-prompt-loader-D3w6sc34.js.map → agent-prompt-loader-D8Bajo-L.js.map} +1 -1
  7. package/dist/{agent-runner-Ca-e2TOQ.js → agent-runner-DEeMqJxy.js} +100 -49
  8. package/dist/agent-runner-DEeMqJxy.js.map +1 -0
  9. package/dist/{analytics-zBrIVjMV.js → analytics-D8JNuPAT.js} +2 -2
  10. package/dist/{analytics-zBrIVjMV.js.map → analytics-D8JNuPAT.js.map} +1 -1
  11. package/dist/analytics-DN3Kzf7H.js +2 -0
  12. package/dist/{api-Wgb7AhrP.js → api-CemGgyBv.js} +3 -3
  13. package/dist/{api-Wgb7AhrP.js.map → api-CemGgyBv.js.map} +1 -1
  14. package/dist/bin.js +95 -67
  15. package/dist/bin.js.map +1 -1
  16. package/dist/{bounded-fs-DqsVmh4r.js → bounded-fs-C6OjqZst.js} +3 -3
  17. package/dist/{bounded-fs-DqsVmh4r.js.map → bounded-fs-C6OjqZst.js.map} +1 -1
  18. package/dist/{ci-install-D1QqmJIc.js → ci-install-DIB2n4Ju.js} +4 -4
  19. package/dist/{ci-install-D1QqmJIc.js.map → ci-install-DIB2n4Ju.js.map} +1 -1
  20. package/dist/{debug-Cm1hvkVy.js → debug-BKqv-yfT.js} +3 -3
  21. package/dist/{debug-Cm1hvkVy.js.map → debug-BKqv-yfT.js.map} +1 -1
  22. package/dist/{debug-CtQ13sCW.js → debug-H-GTKvvU.js} +1 -1
  23. package/dist/{env-api-key-CdI2XZIz.js → env-api-key-CzHDwfV2.js} +2 -2
  24. package/dist/{env-api-key-CdI2XZIz.js.map → env-api-key-CzHDwfV2.js.map} +1 -1
  25. package/dist/{environment-BhFvfkQg.js → environment-Cl-fIQku.js} +4 -4
  26. package/dist/{environment-BhFvfkQg.js.map → environment-Cl-fIQku.js.map} +1 -1
  27. package/dist/{file-watcher-Dciz09Rr.js → file-watcher-Cr-4tA-e.js} +2 -2
  28. package/dist/{file-watcher-Dciz09Rr.js.map → file-watcher-Cr-4tA-e.js.map} +1 -1
  29. package/dist/{headless-ui-B4FnKm11.js → headless-ui-DT3Db1bk.js} +2 -2
  30. package/dist/{headless-ui-B4FnKm11.js.map → headless-ui-DT3Db1bk.js.map} +1 -1
  31. package/dist/{interactive-DxHFVYr2.js → interactive-D3LdFxZG.js} +2 -2
  32. package/dist/{interactive-DxHFVYr2.js.map → interactive-D3LdFxZG.js.map} +1 -1
  33. package/dist/{mcp-t0UxAPur.js → mcp-BjckYQmP.js} +2 -2
  34. package/dist/{mcp-t0UxAPur.js.map → mcp-BjckYQmP.js.map} +1 -1
  35. package/dist/mcp-install-smoke-test.ts +477 -0
  36. package/dist/{mcp-prompt-streaming-ro98iUDc.js → mcp-prompt-streaming--sRErHKv.js} +4 -4
  37. package/dist/{mcp-prompt-streaming-ro98iUDc.js.map → mcp-prompt-streaming--sRErHKv.js.map} +1 -1
  38. package/dist/{non-interactive-BA2L_jDT.js → non-interactive-CNoYoEZp.js} +2 -2
  39. package/dist/{non-interactive-BA2L_jDT.js.map → non-interactive-CNoYoEZp.js.map} +1 -1
  40. package/dist/{orchestrator-tools-vZmNsHy9.js → orchestrator-tools-8bGyDDhn.js} +3 -3
  41. package/dist/{orchestrator-tools-vZmNsHy9.js.map → orchestrator-tools-8bGyDDhn.js.map} +1 -1
  42. package/dist/{package-manager-DgqJdAQk.js → package-manager-BQDHm7ER.js} +2 -2
  43. package/dist/{package-manager-DgqJdAQk.js.map → package-manager-BQDHm7ER.js.map} +1 -1
  44. package/dist/{pi-nwrCARRp.js → pi-W-4RUPFY.js} +11 -11
  45. package/dist/{pi-nwrCARRp.js.map → pi-W-4RUPFY.js.map} +1 -1
  46. package/dist/{playground-xkEke_h0.js → playground-uHHgZChe.js} +7 -7
  47. package/dist/{playground-xkEke_h0.js.map → playground-uHHgZChe.js.map} +1 -1
  48. package/dist/{posthog-9To56cSd.js → posthog-ChzdlmCs.js} +2 -2
  49. package/dist/{posthog-9To56cSd.js.map → posthog-ChzdlmCs.js.map} +1 -1
  50. package/dist/{posthog-integration-CoPvN6YZ.js → posthog-integration-LxEBGkoe.js} +661 -35
  51. package/dist/posthog-integration-LxEBGkoe.js.map +1 -0
  52. package/dist/{provisioning-BYFSHSHY.js → provisioning-BHTl91OZ.js} +3 -3
  53. package/dist/{provisioning-BYFSHSHY.js.map → provisioning-BHTl91OZ.js.map} +1 -1
  54. package/dist/{queue-tools-BREbgGSC.js → queue-tools-DABh1Ssc.js} +33 -7
  55. package/dist/queue-tools-DABh1Ssc.js.map +1 -0
  56. package/dist/{registry-DGJQ_8QI.js → registry-CxNpCNAj.js} +5 -5
  57. package/dist/{registry-DGJQ_8QI.js.map → registry-CxNpCNAj.js.map} +1 -1
  58. package/dist/{security-wc-naGq5.js → security-B4jU_-7q.js} +5 -5
  59. package/dist/{security-wc-naGq5.js.map → security-B4jU_-7q.js.map} +1 -1
  60. package/dist/{setup-utils-Cz0wPLsQ.js → setup-utils-aWZEdfwh.js} +9 -9
  61. package/dist/{setup-utils-Cz0wPLsQ.js.map → setup-utils-aWZEdfwh.js.map} +1 -1
  62. package/dist/{start-tui-DDW9uVnD.js → start-tui-BQH4mQIZ.js} +43 -21
  63. package/dist/start-tui-BQH4mQIZ.js.map +1 -0
  64. package/dist/{steps-CZI0B24_.js → steps-5HAqjUvn.js} +7 -7
  65. package/dist/{steps-CZI0B24_.js.map → steps-5HAqjUvn.js.map} +1 -1
  66. package/dist/{store-xMkU8xAa.js → store-P_7zUfbj.js} +7 -6
  67. package/dist/{store-xMkU8xAa.js.map → store-P_7zUfbj.js.map} +1 -1
  68. package/dist/{subagent-BztacyoV.js → subagent-uGPDXPfS.js} +2 -2
  69. package/dist/{subagent-BztacyoV.js.map → subagent-uGPDXPfS.js.map} +1 -1
  70. package/dist/{task-CJ7x3McC.js → task-oh8OAnvR.js} +12 -12
  71. package/dist/{task-CJ7x3McC.js.map → task-oh8OAnvR.js.map} +1 -1
  72. package/dist/{task-stream-BK7JQ27G.js → task-stream-jUARpyB5.js} +5 -5
  73. package/dist/{task-stream-BK7JQ27G.js.map → task-stream-jUARpyB5.js.map} +1 -1
  74. package/dist/{tasks-FGzp_zBd.js → tasks-2mu3lAvm.js} +2 -2
  75. package/dist/{tasks-FGzp_zBd.js.map → tasks-2mu3lAvm.js.map} +1 -1
  76. package/dist/{telemetry-By56gAtF.js → telemetry-BllPiBKw.js} +3 -3
  77. package/dist/{telemetry-By56gAtF.js.map → telemetry-BllPiBKw.js.map} +1 -1
  78. package/dist/{terminal-C_rmkaku.js → terminal-aWQrDy8s.js} +72 -79
  79. package/dist/terminal-aWQrDy8s.js.map +1 -0
  80. package/dist/{tools-BpCJgMez.js → tools-u8TaJFqa.js} +54 -47
  81. package/dist/tools-u8TaJFqa.js.map +1 -0
  82. package/dist/{wizard-abort-CzwID162.js → wizard-abort-D9jiMkZA.js} +4 -4
  83. package/dist/{wizard-abort-CzwID162.js.map → wizard-abort-D9jiMkZA.js.map} +1 -1
  84. package/dist/{wizard-abort-BlDla_Jd.js → wizard-abort-pFFH7dcx.js} +1 -1
  85. package/dist/{wizard-session-UxA_A0cA.js → wizard-session-Cw7-_OcZ.js} +1 -1
  86. package/dist/{wizard-session-Bn6dO1gE.js → wizard-session-DTyLMPsX.js} +2 -1
  87. package/dist/{wizard-session-Bn6dO1gE.js.map → wizard-session-DTyLMPsX.js.map} +1 -1
  88. package/dist/{yara-hooks-BrisBebM.js → yara-hooks-BXDBIOBq.js} +4 -4
  89. package/dist/{yara-hooks-BrisBebM.js.map → yara-hooks-BXDBIOBq.js.map} +1 -1
  90. package/dist/yara-hooks-i2jOabhI.js +2 -0
  91. package/package.json +2 -1
  92. package/dist/add-mcp-server-to-clients-ArtlMX9-.js.map +0 -1
  93. package/dist/agent-interface-ORzGEFNM.js.map +0 -1
  94. package/dist/agent-runner-Ca-e2TOQ.js.map +0 -1
  95. package/dist/analytics-C4j6grao.js +0 -2
  96. package/dist/posthog-integration-CoPvN6YZ.js.map +0 -1
  97. package/dist/queue-tools-BREbgGSC.js.map +0 -1
  98. package/dist/start-tui-DDW9uVnD.js.map +0 -1
  99. package/dist/terminal-C_rmkaku.js.map +0 -1
  100. package/dist/tools-BpCJgMez.js.map +0 -1
  101. package/dist/yara-hooks-D2B7Fd9G.js +0 -2
@@ -1,15 +1,15 @@
1
- import { V as POSTHOG_APP_URL, h as SERVICE_LABELS, mt as getSkillsBaseUrl, pt as WIZARD_USER_AGENT, s as logToFile } from "./debug-Cm1hvkVy.js";
2
- import { n as analytics } from "./analytics-zBrIVjMV.js";
3
- import { i as withUtm, n as openTrackedLink } from "./telemetry-By56gAtF.js";
4
- import { t as getOrAskForProjectData } from "./setup-utils-Cz0wPLsQ.js";
5
- import { a as fetchUserData, i as fetchSlackConnected } from "./api-Wgb7AhrP.js";
6
- import "./wizard-session-Bn6dO1gE.js";
7
- import { a as formatCostUsd, o as formatTokenCount } from "./agent-runner-Ca-e2TOQ.js";
8
- import { E as fetchSkillMenu } from "./agent-interface-ORzGEFNM.js";
9
- import { y as AUDIT_SEVERITY_STYLE } from "./yara-hooks-BrisBebM.js";
10
- import { c as TextBlock, d as isClearBlock, f as isLinesBlock, h as Icons, l as computeVisibleRange, m as Colors, p as isObjectBlock } from "./posthog-integration-CoPvN6YZ.js";
1
+ import { V as POSTHOG_APP_URL, h as SERVICE_LABELS, mt as getSkillsBaseUrl, pt as WIZARD_USER_AGENT, s as logToFile } from "./debug-BKqv-yfT.js";
2
+ import { n as analytics } from "./analytics-D8JNuPAT.js";
3
+ import { i as withUtm, n as openTrackedLink } from "./telemetry-BllPiBKw.js";
4
+ import { t as getOrAskForProjectData } from "./setup-utils-aWZEdfwh.js";
5
+ import { a as fetchUserData, i as fetchSlackConnected } from "./api-CemGgyBv.js";
6
+ import "./wizard-session-DTyLMPsX.js";
7
+ import { a as formatCostUsd, o as formatTokenCount } from "./agent-runner-DEeMqJxy.js";
8
+ import { j as fetchSkillMenu } from "./agent-interface-D3MNaDp3.js";
9
+ import { y as AUDIT_SEVERITY_STYLE } from "./yara-hooks-BXDBIOBq.js";
10
+ import { c as TextBlock, d as isClearBlock, f as isLinesBlock, h as Icons, l as computeVisibleRange, m as Colors, p as isObjectBlock } from "./posthog-integration-LxEBGkoe.js";
11
11
  import { E as getKindMeta, a as useStdoutDimensions, f as Program, i as useKeyboardHintsContext, n as useKeyBindings, o as ConfirmButton, r as KeyboardHintsProvider, s as PromptLabel, t as PickerMenu } from "./bin.js";
12
- import { r as totalTokenCount } from "./store-xMkU8xAa.js";
12
+ import { r as totalTokenCount } from "./store-P_7zUfbj.js";
13
13
  import { c as namesWithStatus, n as AVAILABLE_FEATURES, o as isAllFeaturesSelected, s as isOk, t as ALL_FEATURE_VALUES, u as summarizeFailure } from "./defaults-BHhXrX9F.js";
14
14
  import opn from "opn";
15
15
  import * as fs$1 from "fs";
@@ -2700,8 +2700,25 @@ const IssueRow = ({ issue, docsWidth }) => {
2700
2700
  *
2701
2701
  * When done, calls store.setMcpComplete(). The router resolves to outro.
2702
2702
  */
2703
- const markDone = (store, outcome, clients = [], featuresSelected) => {
2704
- store.setMcpComplete(outcome, clients, featuresSelected);
2703
+ const markDone = (store, outcome, clients = [], featuresSelected, loginCommands = []) => {
2704
+ store.setMcpComplete(outcome, clients, featuresSelected, loginCommands);
2705
+ };
2706
+ /**
2707
+ * The editor-owned login commands still to run after this install: fresh
2708
+ * config entries use the client's own server name, plugin-provided servers
2709
+ * their `plugin:` name. One entry per client.
2710
+ */
2711
+ const pendingLoginCommands = (clients, mcpResult, pluginResult) => {
2712
+ const commands = /* @__PURE__ */ new Map();
2713
+ for (const r of pluginResult) {
2714
+ const command = clients.find((c) => c.name === r.name)?.pluginLoginCommand;
2715
+ if (isOk(r) && command) commands.set(r.name, command);
2716
+ }
2717
+ for (const r of mcpResult) {
2718
+ const command = clients.find((c) => c.name === r.name)?.loginCommand;
2719
+ if (r.status === "changed" && command) commands.set(r.name, command);
2720
+ }
2721
+ return [...commands.values()];
2705
2722
  };
2706
2723
  const reportFeatures = (features) => isAllFeaturesSelected(features) ? "all" : features;
2707
2724
  const errorText = (err) => summarizeFailure(err instanceof Error ? err.message : String(err)) ?? "unknown error";
@@ -2777,7 +2794,6 @@ const McpScreen = ({ store, installer, mode = "install" }) => {
2777
2794
  const [selectedClientNames, setSelectedClientNames] = useState([]);
2778
2795
  const [mcpResults, setMcpResults] = useState([]);
2779
2796
  const [pluginResults, setPluginResults] = useState([]);
2780
- const [installMode, setInstallMode] = useState("custom");
2781
2797
  const [detectError, setDetectError] = useState(null);
2782
2798
  const [flowError, setFlowError] = useState(null);
2783
2799
  const finishFlow = useRef(null);
@@ -2799,65 +2815,46 @@ const McpScreen = ({ store, installer, mode = "install" }) => {
2799
2815
  }
2800
2816
  })();
2801
2817
  }, [installer]);
2802
- const proceedAfterClientPick = (clientNames, chosenMode) => {
2818
+ const oauthFlow = !store.session.apiKey;
2819
+ const proceedAfterClientPick = (clientNames) => {
2803
2820
  setSelectedClientNames(clientNames);
2804
- if (chosenMode === "all") {
2805
- doInstall(clientNames, [...ALL_FEATURE_VALUES], chosenMode);
2821
+ if (clientNames.some((name) => clients.find((c) => c.name === name)?.finish)) {
2822
+ setPhase("connector");
2806
2823
  return;
2807
2824
  }
2808
- if (store.session.mcpFeatures) {
2809
- doInstall(clientNames, store.session.mcpFeatures, chosenMode);
2825
+ if (oauthFlow) {
2826
+ doInstall(clientNames);
2810
2827
  return;
2811
2828
  }
2812
- if (clientNames.some((name) => clients.find((c) => c.name === name)?.finish)) {
2813
- setPhase("connector");
2829
+ if (store.session.mcpFeatures) {
2830
+ doInstall(clientNames, store.session.mcpFeatures);
2814
2831
  return;
2815
2832
  }
2816
2833
  setPhase("feature-select");
2817
2834
  };
2818
2835
  const handleConfirm = () => {
2819
2836
  if (isRemove) doRemove();
2820
- else if (clients.length === 1) proceedAfterClientPick([clients[0].name], "custom");
2821
- else setPhase("pick");
2822
- };
2823
- const handleTriStateChoice = (choice) => {
2824
- if (choice === "skip") {
2825
- handleSkip();
2826
- return;
2827
- }
2828
- setInstallMode(choice);
2829
- if (clients.length === 1) proceedAfterClientPick([clients[0].name], choice);
2837
+ else if (clients.length === 1) proceedAfterClientPick([clients[0].name]);
2830
2838
  else setPhase("pick");
2831
2839
  };
2832
2840
  const handleSkip = () => {
2833
2841
  markDone(store, "skipped");
2834
2842
  };
2835
- /**
2836
- * `chosenMode` is passed in rather than read from `installMode`: the tri-state
2837
- * picker sets that state and installs in the same tick when a single client
2838
- * is detected, so the closure would still hold the previous value and a
2839
- * one-editor machine would silently get the MCP-only path.
2840
- */
2841
- const doInstall = async (names, features, chosenMode = installMode) => {
2843
+ const doInstall = async (names, features) => {
2842
2844
  setPhase("working");
2843
2845
  let mcpResult = [];
2844
2846
  let pluginResult = [];
2845
2847
  const pluginCapableSet = new Set(clients.filter((c) => c.supportsPlugin).map((c) => c.name));
2848
+ const bundledSet = new Set(clients.filter((c) => c.pluginBundlesMcp).map((c) => c.name));
2846
2849
  const pluginCapableNames = names.filter((n) => pluginCapableSet.has(n));
2847
- const directNames = names.filter((n) => !pluginCapableSet.has(n));
2848
- if (chosenMode === "all") {
2849
- try {
2850
- mcpResult = await installer.install(directNames, features, store.session.apiKey);
2851
- } catch (err) {
2852
- setFlowError(errorText(err));
2853
- }
2854
- try {
2855
- pluginResult = await installer.installPlugins(pluginCapableNames);
2856
- } catch (err) {
2857
- setFlowError(errorText(err));
2858
- }
2859
- } else try {
2860
- mcpResult = await installer.install(names, features, store.session.apiKey);
2850
+ const directNames = names.filter((n) => !bundledSet.has(n));
2851
+ try {
2852
+ mcpResult = await installer.install(oauthFlow ? directNames : names, features, store.session.apiKey);
2853
+ } catch (err) {
2854
+ setFlowError(errorText(err));
2855
+ }
2856
+ if (oauthFlow) try {
2857
+ pluginResult = await installer.installPlugins(pluginCapableNames);
2861
2858
  } catch (err) {
2862
2859
  setFlowError(errorText(err));
2863
2860
  }
@@ -2866,7 +2863,8 @@ const McpScreen = ({ store, installer, mode = "install" }) => {
2866
2863
  const ready = [...mcpResult, ...pluginResult].filter(isOk);
2867
2864
  const outcome = ready.length > 0 ? "installed" : "failed";
2868
2865
  const featuresReport = reportFeatures(features ?? [...ALL_FEATURE_VALUES]);
2869
- finishFlow.current = () => markDone(store, outcome, ready.map((r) => r.name), featuresReport);
2866
+ const logins = oauthFlow ? pendingLoginCommands(clients, mcpResult, pluginResult) : [];
2867
+ finishFlow.current = () => markDone(store, outcome, ready.map((r) => r.name), featuresReport, logins);
2870
2868
  setPhase("done");
2871
2869
  };
2872
2870
  const doRemove = async () => {
@@ -2961,26 +2959,7 @@ const McpScreen = ({ store, installer, mode = "install" }) => {
2961
2959
  }),
2962
2960
  /* @__PURE__ */ jsx(Box, {
2963
2961
  marginTop: 1,
2964
- children: !isRemove && !store.session.mcpFeatures ? /* @__PURE__ */ jsx(PickerMenu, {
2965
- message: `Install the PostHog MCP server${clients.some((c) => c.supportsPlugin) ? " and plugin" : ""}?`,
2966
- options: [
2967
- {
2968
- label: "Install with all features",
2969
- value: "all",
2970
- hint: "recommended"
2971
- },
2972
- {
2973
- label: "Customize features",
2974
- value: "custom"
2975
- },
2976
- {
2977
- label: "No thanks",
2978
- value: "skip"
2979
- }
2980
- ],
2981
- mode: "single",
2982
- onSelect: (choice) => handleTriStateChoice(choice)
2983
- }) : /* @__PURE__ */ jsx(ConfirmationInput, {
2962
+ children: /* @__PURE__ */ jsx(ConfirmationInput, {
2984
2963
  message: `${isRemove ? "Remove" : "Install"} the PostHog MCP server${clients.some((c) => c.supportsPlugin) ? " and plugin" : ""}?`,
2985
2964
  confirmLabel: isRemove ? "Remove" : "Install",
2986
2965
  cancelLabel: "No thanks",
@@ -2990,16 +2969,16 @@ const McpScreen = ({ store, installer, mode = "install" }) => {
2990
2969
  })
2991
2970
  ] }),
2992
2971
  phase === "pick" && /* @__PURE__ */ jsx(PickerMenu, {
2993
- message: installMode === "all" ? "Select editor to install" : "Select editor to install MCP server",
2972
+ message: "Select editor to install",
2994
2973
  options: clients.map((c) => ({
2995
2974
  label: c.name,
2996
2975
  value: c.name,
2997
2976
  exclusive: Boolean(c.finish),
2998
- hint: installMode === "all" ? c.finish ? "connector" : c.supportsPlugin ? "plugin" : "MCP" : void 0
2977
+ hint: c.finish ? "connector" : c.supportsPlugin ? "plugin" : "MCP"
2999
2978
  })),
3000
2979
  mode: "multi",
3001
2980
  onSelect: (selected) => {
3002
- proceedAfterClientPick(Array.isArray(selected) ? selected : [selected], installMode);
2981
+ proceedAfterClientPick(Array.isArray(selected) ? selected : [selected]);
3003
2982
  }
3004
2983
  }),
3005
2984
  phase === "feature-select" && /* @__PURE__ */ jsx(GroupedPickerMenu, {
@@ -4632,7 +4611,7 @@ const McpSuggestedPromptsScreen = ({ store, services }) => {
4632
4611
  ...properties
4633
4612
  });
4634
4613
  }, [programId]);
4635
- const [phase, setPhase] = useState("choose");
4614
+ const [phase, setPhase] = useState(store.router.activeProgram === Program.McpTutorial ? "choose" : "goodbye");
4636
4615
  const [profile, setProfile] = useState(null);
4637
4616
  const greeting = useMemo(() => getRoleGreeting(session.roleAtOrganization), [session.roleAtOrganization]);
4638
4617
  const pickerCandidates = useMemo(() => getTutorialPicker(session.roleAtOrganization, session.integration, profile), [
@@ -4986,6 +4965,7 @@ const McpSuggestedPromptsScreen = ({ store, services }) => {
4986
4965
  integration: session.integration,
4987
4966
  profile,
4988
4967
  engaged: branchHistory.length > 0,
4968
+ loginCommands: session.mcpLoginCommands,
4989
4969
  onClose: closeWizard
4990
4970
  })
4991
4971
  ]
@@ -5415,7 +5395,7 @@ const FollowUpPhase = ({ lastToolName, lastToolCommand, lastPrompt, chunks, role
5415
5395
  })]
5416
5396
  });
5417
5397
  };
5418
- const GoodbyePhase = ({ installedClients, role, integration, profile, engaged, onClose }) => {
5398
+ const GoodbyePhase = ({ installedClients, role, integration, profile, engaged, loginCommands, onClose }) => {
5419
5399
  const generated = getGeneratedQuests(profile);
5420
5400
  const samples = (generated.length > 0 ? generated : getRolePrompts(role, integration)).slice(0, 3);
5421
5401
  const headline = engaged ? "Nice work. You can keep talking to PostHog anytime." : "You're all set — PostHog MCP is here when you're ready.";
@@ -5444,6 +5424,19 @@ const GoodbyePhase = ({ installedClients, role, integration, profile, engaged, o
5444
5424
  marginBottom: 1,
5445
5425
  children: introLine
5446
5426
  }),
5427
+ loginCommands.length > 0 && /* @__PURE__ */ jsxs(Box, {
5428
+ flexDirection: "column",
5429
+ marginBottom: 1,
5430
+ children: [/* @__PURE__ */ jsxs(Text, {
5431
+ color: "green",
5432
+ bold: true,
5433
+ children: ["✔", " Authenticate to finish (opens your browser):"]
5434
+ }), loginCommands.map((command) => /* @__PURE__ */ jsxs(Text, { children: [" ", /* @__PURE__ */ jsx(Text, {
5435
+ bold: true,
5436
+ color: "green",
5437
+ children: command
5438
+ })] }, command))]
5439
+ }),
5447
5440
  /* @__PURE__ */ jsx(Box, {
5448
5441
  marginBottom: 1,
5449
5442
  flexDirection: "column",
@@ -7226,4 +7219,4 @@ function releaseTerminal() {
7226
7219
  //#endregion
7227
7220
  export { EventPlanViewer as A, CardLayout as B, VisualizerTab as C, HNViewer as D, ContentSequencer as E, ConfirmationInput as F, GroupedPickerMenu as I, ProgressList as L, LinkText as M, extractUrls as N, TabContainer as O, ModalOverlay as P, LoadingBox as R, ServiceHealthList as S, LearnCard as T, TAILORED_ROLES as _, useSkillEntry as a, SEVERITY_LABEL as b, SlackConnectScreen as c, AuditChecksViewer as d, seedDemoEvents as f, probeProjectData as g, assembleProfile as h, SkillSourceInfo as i, LogViewer as j, ScreenContainer as k, AUDIT_AREA_SLIDES as l, McpSuggestedPromptsScreen as m, releaseTerminal as n, OutroScreen as o, seededProfile as p, AiOptInRequiredScreen as r, useDismissOnAnyKey as s, enterDarkTerminal as t, VisualBox as u, McpScreen as v, TipsCard as w, SEVERITY_ORDER as x, IssueTable as y, SplitView as z };
7228
7221
 
7229
- //# sourceMappingURL=terminal-C_rmkaku.js.map
7222
+ //# sourceMappingURL=terminal-aWQrDy8s.js.map