@posthog/wizard 2.24.0 → 2.24.1

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 (53) hide show
  1. package/dist/{AiOptInRequiredScreen-DPn1CCeD.js → AiOptInRequiredScreen-_33FOcVo.js} +145 -117
  2. package/dist/{AiOptInRequiredScreen-DPn1CCeD.js.map → AiOptInRequiredScreen-_33FOcVo.js.map} +1 -1
  3. package/dist/{add-mcp-server-to-clients-BU8Owthq.js → add-mcp-server-to-clients-CfwEQT_z.js} +4 -4
  4. package/dist/{add-mcp-server-to-clients-BU8Owthq.js.map → add-mcp-server-to-clients-CfwEQT_z.js.map} +1 -1
  5. package/dist/{agent-interface-CysYcZl5.js → agent-interface-D1vtN6Wn.js} +5 -5
  6. package/dist/{agent-interface-CysYcZl5.js.map → agent-interface-D1vtN6Wn.js.map} +1 -1
  7. package/dist/{agent-runner-Br0OxBxd.js → agent-runner-CBbkS0Ro.js} +8 -8
  8. package/dist/{agent-runner-Br0OxBxd.js.map → agent-runner-CBbkS0Ro.js.map} +1 -1
  9. package/dist/{analytics-BOWrR4qd.js → analytics-CUr82BDl.js} +2 -2
  10. package/dist/{analytics-BOWrR4qd.js.map → analytics-CUr82BDl.js.map} +1 -1
  11. package/dist/{api-RXTR8yZo.js → api-CI3Z74NG.js} +3 -3
  12. package/dist/{api-RXTR8yZo.js.map → api-CI3Z74NG.js.map} +1 -1
  13. package/dist/bin.js +43 -73
  14. package/dist/bin.js.map +1 -1
  15. package/dist/{ci-install-BscZ60Ec.js → ci-install-D_kxNmbJ.js} +4 -4
  16. package/dist/{ci-install-BscZ60Ec.js.map → ci-install-D_kxNmbJ.js.map} +1 -1
  17. package/dist/{debug-BUdVZP84.js → debug-DxA_f5QT.js} +2 -2
  18. package/dist/{debug-BUdVZP84.js.map → debug-DxA_f5QT.js.map} +1 -1
  19. package/dist/{debug-BgH07S-e.js → debug-zMvpNYb2.js} +1 -1
  20. package/dist/{environment-G0Hv6_JI.js → environment-CyS37cmM.js} +3 -3
  21. package/dist/{environment-G0Hv6_JI.js.map → environment-CyS37cmM.js.map} +1 -1
  22. package/dist/{interactive-fh2iyewb.js → interactive-CG6FFqSw.js} +2 -2
  23. package/dist/{interactive-fh2iyewb.js.map → interactive-CG6FFqSw.js.map} +1 -1
  24. package/dist/{mcp-prompt-streaming-DUtbxnNy.js → mcp-prompt-streaming-DQz4FSb1.js} +4 -4
  25. package/dist/{mcp-prompt-streaming-DUtbxnNy.js.map → mcp-prompt-streaming-DQz4FSb1.js.map} +1 -1
  26. package/dist/{non-interactive-BfqXlY8R.js → non-interactive-DWtHX3ZR.js} +2 -2
  27. package/dist/{non-interactive-BfqXlY8R.js.map → non-interactive-DWtHX3ZR.js.map} +1 -1
  28. package/dist/{package-manager-Ca1maxU-.js → package-manager-BWUS4CP0.js} +2 -2
  29. package/dist/{package-manager-Ca1maxU-.js.map → package-manager-BWUS4CP0.js.map} +1 -1
  30. package/dist/{playground-4sqLVVJL.js → playground-D7AhMMF5.js} +8 -14
  31. package/dist/playground-D7AhMMF5.js.map +1 -0
  32. package/dist/{posthog-integration-Bz3HWkHn.js → posthog-integration-DexZ2uHU.js} +18 -18
  33. package/dist/{posthog-integration-Bz3HWkHn.js.map → posthog-integration-DexZ2uHU.js.map} +1 -1
  34. package/dist/{provisioning-CgwvlsIl.js → provisioning-9c-AQbsa.js} +3 -3
  35. package/dist/{provisioning-CgwvlsIl.js.map → provisioning-9c-AQbsa.js.map} +1 -1
  36. package/dist/{registry-CEnQVctL.js → registry-CO7JVZyE.js} +4 -4
  37. package/dist/{registry-CEnQVctL.js.map → registry-CO7JVZyE.js.map} +1 -1
  38. package/dist/{setup-utils-Doh69vo4.js → setup-utils-0U-_Md2G.js} +8 -8
  39. package/dist/{setup-utils-Doh69vo4.js.map → setup-utils-0U-_Md2G.js.map} +1 -1
  40. package/dist/{start-tui-CywbSvZE.js → start-tui-WNb3ET14.js} +16 -20
  41. package/dist/start-tui-WNb3ET14.js.map +1 -0
  42. package/dist/{steps-DJojDYQ-.js → steps-BAUXDCC4.js} +6 -6
  43. package/dist/{steps-DJojDYQ-.js.map → steps-BAUXDCC4.js.map} +1 -1
  44. package/dist/{telemetry-8zMpaIuK.js → telemetry-ycqCpNPr.js} +3 -3
  45. package/dist/{telemetry-8zMpaIuK.js.map → telemetry-ycqCpNPr.js.map} +1 -1
  46. package/dist/{urls-BUfvQmU4.js → urls-C8aJWvgh.js} +2 -2
  47. package/dist/{urls-BUfvQmU4.js.map → urls-C8aJWvgh.js.map} +1 -1
  48. package/dist/{wizard-abort-BdGW4Tvi.js → wizard-abort-C6gRLxUE.js} +3 -3
  49. package/dist/{wizard-abort-BdGW4Tvi.js.map → wizard-abort-C6gRLxUE.js.map} +1 -1
  50. package/dist/{wizard-abort-Ni-mKJ58.js → wizard-abort-DWXyJdws.js} +1 -1
  51. package/package.json +1 -1
  52. package/dist/playground-4sqLVVJL.js.map +0 -1
  53. package/dist/start-tui-CywbSvZE.js.map +0 -1
@@ -1,12 +1,13 @@
1
- import { M as POSTHOG_APP_URL, Q as getSkillsBaseUrl, g as SERVICE_LABELS, s as logToFile, y as getBlockingServiceKeys } from "./debug-BUdVZP84.js";
1
+ import { M as POSTHOG_APP_URL, Q as getSkillsBaseUrl, g as SERVICE_LABELS, s as logToFile, y as getBlockingServiceKeys } from "./debug-DxA_f5QT.js";
2
2
  import { n as isTaskStatus } from "./wizard-ui-YdGFRyu_.js";
3
- import { r as sessionProperties, t as analytics } from "./analytics-BOWrR4qd.js";
4
- import { i as withUtm, n as openTrackedLink } from "./telemetry-8zMpaIuK.js";
5
- import { n as getCloudUrlFromRegion } from "./urls-BUfvQmU4.js";
6
- import { a as fetchUserData, i as fetchSlackConnected } from "./api-RXTR8yZo.js";
3
+ import { r as sessionProperties, t as analytics } from "./analytics-CUr82BDl.js";
4
+ import { i as withUtm, n as openTrackedLink } from "./telemetry-ycqCpNPr.js";
5
+ import { t as getOrAskForProjectData } from "./setup-utils-0U-_Md2G.js";
6
+ import { n as getCloudUrlFromRegion } from "./urls-C8aJWvgh.js";
7
+ import { a as fetchUserData, i as fetchSlackConnected } from "./api-CI3Z74NG.js";
7
8
  import { i as buildSession } from "./wizard-session-G3VWD6hv.js";
8
- import { m as fetchSkillMenu, y as AUDIT_SEVERITY_STYLE } from "./agent-interface-CysYcZl5.js";
9
- 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-Bz3HWkHn.js";
9
+ import { m as fetchSkillMenu, y as AUDIT_SEVERITY_STYLE } from "./agent-interface-D1vtN6Wn.js";
10
+ 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-DexZ2uHU.js";
10
11
  import { a as PromptLabel, c as PROGRAM_REGISTRY, i as useKeyboardHintsContext, l as Program, m as getKindMeta, n as useKeyBindings, r as KeyboardHintsProvider, t as PickerMenu, u as getProgramConfig } from "./bin.js";
11
12
  import { n as AVAILABLE_FEATURES, o as isAllFeaturesSelected, t as ALL_FEATURE_VALUES } from "./defaults-BNWIWzjc.js";
12
13
  import opn from "opn";
@@ -3719,7 +3720,7 @@ const McpSuggestedPromptsScreen = ({ store, services }) => {
3719
3720
  const kit = getRolePrompts(session.roleAtOrganization, session.integration);
3720
3721
  const crossSell = useMemo(() => getCrossSellPrompts(session.roleAtOrganization), [session.roleAtOrganization]);
3721
3722
  const greeting = useMemo(() => getRoleGreeting(session.roleAtOrganization), [session.roleAtOrganization]);
3722
- const [phase, setPhase] = useState(() => store.session.credentials ? "choose" : "authenticating");
3723
+ const [phase, setPhase] = useState("choose");
3723
3724
  const [loginError, setLoginError] = useState(null);
3724
3725
  const startedTutorialRef = useRef(false);
3725
3726
  const [runningPrompt, setRunningPrompt] = useState(null);
@@ -3761,28 +3762,6 @@ const McpSuggestedPromptsScreen = ({ store, services }) => {
3761
3762
  services,
3762
3763
  store
3763
3764
  ]);
3764
- const credentials = session.credentials;
3765
- const slackConnected = session.slackConnected;
3766
- useEffect(() => {
3767
- if (!credentials || slackConnected !== null) return;
3768
- let cancelled = false;
3769
- const controller = new AbortController();
3770
- services.checkSlackConnected(credentials, controller.signal).then((connected) => {
3771
- if (!cancelled) store.setSlackConnected(connected);
3772
- }).catch((err) => {
3773
- if (cancelled) return;
3774
- analytics.captureException(err instanceof Error ? err : new Error(String(err)), { step: "slack_connected_check" });
3775
- });
3776
- return () => {
3777
- cancelled = true;
3778
- controller.abort();
3779
- };
3780
- }, [
3781
- credentials,
3782
- slackConnected,
3783
- services,
3784
- store
3785
- ]);
3786
3765
  useEffect(() => {
3787
3766
  if (phase !== "running") return;
3788
3767
  if (!runningPrompt) return;
@@ -3870,9 +3849,6 @@ const McpSuggestedPromptsScreen = ({ store, services }) => {
3870
3849
  analytics.wizardCapture("mcp suggested prompts choose", { choice: "login" });
3871
3850
  startedTutorialRef.current = true;
3872
3851
  setPhase(session.credentials ? "greeting" : "authenticating");
3873
- } else if (choice === "connect-slack") {
3874
- analytics.wizardCapture("mcp suggested prompts choose", { choice: "connect-slack" });
3875
- openTrackedLink(getSlackAppCard().setupUrl, "mcp-prompts-slack-setup");
3876
3852
  } else {
3877
3853
  analytics.wizardCapture("mcp suggested prompts choose", { choice: "exit" });
3878
3854
  enterGoodbye();
@@ -3945,7 +3921,6 @@ const McpSuggestedPromptsScreen = ({ store, services }) => {
3945
3921
  children: [
3946
3922
  phase === "choose" && /* @__PURE__ */ jsx(ChoosePhase, {
3947
3923
  error: loginError,
3948
- slackConnected,
3949
3924
  onSelect: handleChoice
3950
3925
  }),
3951
3926
  phase === "authenticating" && /* @__PURE__ */ jsx(AuthenticatingPhase, { loginUrl: session.loginUrl }),
@@ -4008,7 +3983,7 @@ const McpSuggestedPromptsScreen = ({ store, services }) => {
4008
3983
  })
4009
3984
  });
4010
3985
  };
4011
- const ChoosePhase = ({ error, slackConnected, onSelect }) => {
3986
+ const ChoosePhase = ({ error, onSelect }) => {
4012
3987
  return /* @__PURE__ */ jsxs(Box, {
4013
3988
  flexDirection: "column",
4014
3989
  children: [
@@ -4047,57 +4022,18 @@ const ChoosePhase = ({ error, slackConnected, onSelect }) => {
4047
4022
  }), " And lots more..."] })
4048
4023
  ]
4049
4024
  }),
4050
- /* @__PURE__ */ jsx(Box, {
4051
- marginTop: 1,
4052
- flexDirection: "column",
4053
- children: slackConnected ? /* @__PURE__ */ jsxs(Text, { children: [
4054
- /* @__PURE__ */ jsx(Text, {
4055
- color: Colors.success,
4056
- children: Icons.check
4057
- }),
4058
- " Slack is connected — analyze data and ship product changes there by tagging",
4059
- " ",
4060
- /* @__PURE__ */ jsx(Text, {
4061
- bold: true,
4062
- children: "@PostHog"
4063
- }),
4064
- "."
4065
- ] }) : /* @__PURE__ */ jsxs(Text, { children: [
4066
- "You can also connect PostHog to Slack, so you can analyze data and ship product changes there by tagging ",
4067
- /* @__PURE__ */ jsx(Text, {
4068
- bold: true,
4069
- children: "@PostHog"
4070
- }),
4071
- "."
4072
- ] })
4073
- }),
4074
4025
  /* @__PURE__ */ jsx(Box, {
4075
4026
  marginTop: 1,
4076
4027
  children: /* @__PURE__ */ jsx(Text, { children: "Want a live demo using real data from your project?" })
4077
4028
  }),
4078
4029
  /* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsx(PickerMenu, {
4079
- options: [
4080
- {
4081
- label: "Start MCP tutorial",
4082
- value: "login"
4083
- },
4084
- slackConnected ? {
4085
- label: "Already connected to Slack",
4086
- value: "connect-slack",
4087
- icon: {
4088
- glyph: Icons.check,
4089
- color: Colors.success
4090
- },
4091
- disabled: true
4092
- } : {
4093
- label: "Connect Slack now",
4094
- value: "connect-slack"
4095
- },
4096
- {
4097
- label: "Exit",
4098
- value: "exit"
4099
- }
4100
- ],
4030
+ options: [{
4031
+ label: "Start MCP tutorial",
4032
+ value: "login"
4033
+ }, {
4034
+ label: "Exit",
4035
+ value: "exit"
4036
+ }],
4101
4037
  onSelect
4102
4038
  }) }),
4103
4039
  error && /* @__PURE__ */ jsx(Box, {
@@ -5166,9 +5102,11 @@ const AUDIT_AREA_SLIDES = [
5166
5102
  * "Skip" / "Done" / esc dismiss the step (`slackStepDismissed`) and let
5167
5103
  * the router advance to exit.
5168
5104
  *
5169
- * The mcp and integration flows arrive here already authenticated. In the
5170
- * standalone `wizard slack` flow the program's `onInit` runs the OAuth
5171
- * while this screen renders the auth-wait state.
5105
+ * The mcp and integration flows arrive here already authenticated. The
5106
+ * standalone `wizard slack` flow lands without credentials and only
5107
+ * triggers OAuth when the user explicitly picks "Open Slack setup" —
5108
+ * once authed, the connected-state poll lets the screen flip to the
5109
+ * "Slack connected" copy without nagging users who already have it.
5172
5110
  */
5173
5111
  const POLL_INTERVAL_MS = 3e3;
5174
5112
  const SlackConnectScreen = ({ store }) => {
@@ -5178,10 +5116,16 @@ const SlackConnectScreen = ({ store }) => {
5178
5116
  const setupUrl = withUtm(slack.setupUrl, "slack-connect-setup");
5179
5117
  const learnMoreUrl = withUtm(slack.learnMoreUrl, "slack-connect-learn-more");
5180
5118
  const credentials = store.session.credentials;
5181
- const awaitingLogin = store.router.activeProgram === Program.SlackConnect && !credentials;
5182
5119
  const connectedState = store.session.slackConnected;
5183
5120
  const connected = connectedState === true;
5184
- const known = connectedState !== null || !credentials && !awaitingLogin;
5121
+ const [phase, setPhase] = useState("nudge");
5122
+ const [loginError, setLoginError] = useState(null);
5123
+ const [setupOpened, setSetupOpened] = useState(false);
5124
+ const openSlackSetup = () => {
5125
+ openTrackedLink(setupUrl, "slack-connect-setup");
5126
+ setSetupOpened(true);
5127
+ };
5128
+ const known = connectedState !== null;
5185
5129
  const impressionFired = useRef(false);
5186
5130
  useEffect(() => {
5187
5131
  if (!known || impressionFired.current) return;
@@ -5195,6 +5139,12 @@ const SlackConnectScreen = ({ store }) => {
5195
5139
  connected,
5196
5140
  role
5197
5141
  ]);
5142
+ const nudgeImpressionFired = useRef(false);
5143
+ useEffect(() => {
5144
+ if (credentials || nudgeImpressionFired.current) return;
5145
+ nudgeImpressionFired.current = true;
5146
+ analytics.wizardCapture("slack connect nudge shown", { role });
5147
+ }, [credentials, role]);
5198
5148
  useEffect(() => {
5199
5149
  if (!credentials || connected) return;
5200
5150
  let cancelled = false;
@@ -5228,27 +5178,83 @@ const SlackConnectScreen = ({ store }) => {
5228
5178
  store
5229
5179
  ]);
5230
5180
  const dismiss = () => {
5231
- analytics.wizardCapture(connected ? "slack connect done" : "slack connect skipped", {
5181
+ if (connected) analytics.wizardCapture("slack connect done", { role });
5182
+ else analytics.wizardCapture("slack connect skipped", {
5232
5183
  role,
5233
- connected
5184
+ connection_state: credentials ? "not_connected" : "unknown"
5234
5185
  });
5235
5186
  store.setSlackStepDismissed();
5236
5187
  };
5237
5188
  const handleSelect = (value) => {
5238
5189
  if ((Array.isArray(value) ? value[0] : value) === "open") {
5239
5190
  analytics.wizardCapture("slack connect opened", { role });
5240
- openTrackedLink(setupUrl, "slack-connect-setup");
5191
+ setLoginError(null);
5192
+ if (credentials) {
5193
+ openSlackSetup();
5194
+ return;
5195
+ }
5196
+ setPhase("authenticating");
5241
5197
  return;
5242
5198
  }
5243
5199
  dismiss();
5244
5200
  };
5201
+ useEffect(() => {
5202
+ if (phase !== "authenticating") return;
5203
+ let cancelled = false;
5204
+ (async () => {
5205
+ try {
5206
+ const data = await getOrAskForProjectData({
5207
+ signup: false,
5208
+ ci: false,
5209
+ apiKey: void 0,
5210
+ projectId: void 0,
5211
+ programId: Program.SlackConnect
5212
+ });
5213
+ if (cancelled) return;
5214
+ store.setCredentials({
5215
+ accessToken: data.accessToken,
5216
+ projectApiKey: data.projectApiKey,
5217
+ host: data.host,
5218
+ projectId: data.projectId
5219
+ });
5220
+ store.setRoleAtOrganization(data.roleAtOrganization);
5221
+ store.setApiUser(data.user);
5222
+ store.setLoginUrl(null);
5223
+ openSlackSetup();
5224
+ setPhase("nudge");
5225
+ } catch (err) {
5226
+ if (cancelled) return;
5227
+ const message = err instanceof Error ? err.message : String(err);
5228
+ logToFile(`[SlackConnectScreen] login failed: ${message}`);
5229
+ analytics.captureException(err instanceof Error ? err : new Error(String(err)), { step: "slack_connect_login" });
5230
+ store.setLoginUrl(null);
5231
+ setLoginError(message);
5232
+ setPhase("nudge");
5233
+ }
5234
+ })();
5235
+ return () => {
5236
+ cancelled = true;
5237
+ };
5238
+ }, [
5239
+ phase,
5240
+ role,
5241
+ setupUrl,
5242
+ store
5243
+ ]);
5245
5244
  useKeyBindings("slack-connect", [{
5246
5245
  match: "escape",
5247
5246
  label: "esc",
5248
- action: connected ? "done" : "skip",
5249
- handler: () => dismiss()
5247
+ action: phase === "authenticating" ? "cancel" : connected ? "done" : "skip",
5248
+ handler: () => {
5249
+ if (phase === "authenticating") {
5250
+ store.setLoginUrl(null);
5251
+ setPhase("nudge");
5252
+ return;
5253
+ }
5254
+ dismiss();
5255
+ }
5250
5256
  }]);
5251
- if (awaitingLogin) return /* @__PURE__ */ jsxs(Box, {
5257
+ if (phase === "authenticating") return /* @__PURE__ */ jsxs(Box, {
5252
5258
  flexDirection: "column",
5253
5259
  flexGrow: 1,
5254
5260
  marginTop: 1,
@@ -5274,6 +5280,7 @@ const SlackConnectScreen = ({ store }) => {
5274
5280
  marginTop: 1,
5275
5281
  children: /* @__PURE__ */ jsx(LoadingBox, { message: "Checking for an existing Slack connection..." })
5276
5282
  });
5283
+ const awaitingBrowser = setupOpened && !connected;
5277
5284
  return /* @__PURE__ */ jsx(Box, {
5278
5285
  flexDirection: "column",
5279
5286
  flexGrow: 1,
@@ -5285,6 +5292,10 @@ const SlackConnectScreen = ({ store }) => {
5285
5292
  bold: true,
5286
5293
  color: Colors.success,
5287
5294
  children: [Icons.check, " Slack connected"]
5295
+ }) : awaitingBrowser ? /* @__PURE__ */ jsx(Text, {
5296
+ bold: true,
5297
+ color: Colors.accent,
5298
+ children: "Finish connecting Slack"
5288
5299
  }) : /* @__PURE__ */ jsx(Text, {
5289
5300
  bold: true,
5290
5301
  color: Colors.accent,
@@ -5292,7 +5303,7 @@ const SlackConnectScreen = ({ store }) => {
5292
5303
  }),
5293
5304
  /* @__PURE__ */ jsx(Box, {
5294
5305
  marginTop: 1,
5295
- children: /* @__PURE__ */ jsx(Text, { children: connected ? "Slack is connected — here's what you can do:" : slack.pitch })
5306
+ children: /* @__PURE__ */ jsx(Text, { children: connected ? "Slack is connected — here's what you can do:" : awaitingBrowser ? "We've opened PostHog's Slack setup page in your browser. Authorize the Slack app there — we'll detect the connection automatically and continue." : slack.pitch })
5296
5307
  }),
5297
5308
  /* @__PURE__ */ jsx(Box, {
5298
5309
  marginTop: 1,
@@ -5310,7 +5321,7 @@ const SlackConnectScreen = ({ store }) => {
5310
5321
  flexDirection: "column",
5311
5322
  children: [!connected && /* @__PURE__ */ jsxs(Text, {
5312
5323
  dimColor: true,
5313
- children: ["Connect it: ", /* @__PURE__ */ jsx(Text, {
5324
+ children: [awaitingBrowser ? "Setup page: " : "Connect it: ", /* @__PURE__ */ jsx(Text, {
5314
5325
  color: "cyan",
5315
5326
  children: setupUrl
5316
5327
  })]
@@ -5328,6 +5339,12 @@ const SlackConnectScreen = ({ store }) => {
5328
5339
  options: connected ? [{
5329
5340
  label: "Done",
5330
5341
  value: "skip"
5342
+ }] : awaitingBrowser ? [{
5343
+ label: "Re-open Slack setup",
5344
+ value: "open"
5345
+ }, {
5346
+ label: "Skip / Continue",
5347
+ value: "skip"
5331
5348
  }] : [{
5332
5349
  label: "Open Slack setup",
5333
5350
  value: "open"
@@ -5337,6 +5354,17 @@ const SlackConnectScreen = ({ store }) => {
5337
5354
  }],
5338
5355
  onSelect: handleSelect
5339
5356
  })
5357
+ }),
5358
+ loginError && /* @__PURE__ */ jsx(Box, {
5359
+ marginTop: 1,
5360
+ children: /* @__PURE__ */ jsxs(Text, {
5361
+ color: "red",
5362
+ children: [
5363
+ "Login failed: ",
5364
+ loginError,
5365
+ ". Try again or skip."
5366
+ ]
5367
+ })
5340
5368
  })
5341
5369
  ]
5342
5370
  })
@@ -5377,6 +5405,28 @@ const OutroScreen = ({ store }) => {
5377
5405
  bold: true,
5378
5406
  children: ["✔ ", outroData.message || "Done!"]
5379
5407
  }),
5408
+ outroData.dashboardUrl && /* @__PURE__ */ jsx(Box, {
5409
+ marginTop: 1,
5410
+ children: /* @__PURE__ */ jsxs(Text, { children: [
5411
+ "Dashboard:",
5412
+ " ",
5413
+ /* @__PURE__ */ jsx(Text, {
5414
+ color: "cyan",
5415
+ children: withUtm(outroData.dashboardUrl, "outro-dashboard")
5416
+ })
5417
+ ] })
5418
+ }),
5419
+ outroData.notebookUrl && /* @__PURE__ */ jsx(Box, {
5420
+ marginTop: 1,
5421
+ children: /* @__PURE__ */ jsxs(Text, { children: [
5422
+ "Notebook:",
5423
+ " ",
5424
+ /* @__PURE__ */ jsx(Text, {
5425
+ color: "cyan",
5426
+ children: withUtm(outroData.notebookUrl, "outro-notebook")
5427
+ })
5428
+ ] })
5429
+ }),
5380
5430
  outroData.body && /* @__PURE__ */ jsx(Box, {
5381
5431
  marginTop: 1,
5382
5432
  children: /* @__PURE__ */ jsx(Text, {
@@ -5423,28 +5473,6 @@ const OutroScreen = ({ store }) => {
5423
5473
  })
5424
5474
  ] }, event.name))]
5425
5475
  }),
5426
- outroData.dashboardUrl && /* @__PURE__ */ jsx(Box, {
5427
- marginTop: 1,
5428
- children: /* @__PURE__ */ jsxs(Text, { children: [
5429
- "We've also made you a dashboard:",
5430
- " ",
5431
- /* @__PURE__ */ jsx(Text, {
5432
- color: "cyan",
5433
- children: withUtm(outroData.dashboardUrl, "outro-dashboard")
5434
- })
5435
- ] })
5436
- }),
5437
- outroData.notebookUrl && /* @__PURE__ */ jsx(Box, {
5438
- marginTop: 1,
5439
- children: /* @__PURE__ */ jsxs(Text, { children: [
5440
- "And uploaded the report to a PostHog notebook:",
5441
- " ",
5442
- /* @__PURE__ */ jsx(Text, {
5443
- color: "cyan",
5444
- children: withUtm(outroData.notebookUrl, "outro-notebook")
5445
- })
5446
- ] })
5447
- }),
5448
5476
  outroData.docsUrl && /* @__PURE__ */ jsx(Box, {
5449
5477
  marginTop: 1,
5450
5478
  children: /* @__PURE__ */ jsxs(Text, { children: [
@@ -5824,4 +5852,4 @@ const AiOptInRequiredScreen = ({ store }) => {
5824
5852
  //#endregion
5825
5853
  export { SplitView as A, LogViewer as C, useStdoutDimensions as D, GroupedPickerMenu as E, WizardStore as M, ProgressList as O, EventPlanViewer as S, ConfirmationInput as T, LearnCard as _, SlackConnectScreen as a, TabContainer as b, AuditChecksViewer as c, McpScreen as d, IssueTable as f, TipsCard as g, ServiceHealthList as h, OutroScreen as i, CardLayout as j, LoadingBox as k, McpSuggestedPromptsScreen as l, SEVERITY_ORDER as m, SkillSourceInfo as n, AUDIT_AREA_SLIDES as o, SEVERITY_LABEL as p, useSkillEntry as r, VisualBox as s, AiOptInRequiredScreen as t, TAILORED_ROLES as u, ContentSequencer as v, ModalOverlay as w, ScreenContainer as x, HNViewer as y };
5826
5854
 
5827
- //# sourceMappingURL=AiOptInRequiredScreen-DPn1CCeD.js.map
5855
+ //# sourceMappingURL=AiOptInRequiredScreen-_33FOcVo.js.map