@posthog/wizard 2.28.1 → 2.30.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 (60) hide show
  1. package/dist/{add-mcp-server-to-clients-pXmZQkpk.js → add-mcp-server-to-clients-D0G4cmPf.js} +4 -4
  2. package/dist/{add-mcp-server-to-clients-pXmZQkpk.js.map → add-mcp-server-to-clients-D0G4cmPf.js.map} +1 -1
  3. package/dist/{agent-interface-Bw1w0ePT.js → agent-interface-CYFyWCMj.js} +29 -16
  4. package/dist/{agent-interface-Bw1w0ePT.js.map → agent-interface-CYFyWCMj.js.map} +1 -1
  5. package/dist/{agent-runner-djkxwCd9.js → agent-runner-HTfFCUrR.js} +20 -10
  6. package/dist/agent-runner-HTfFCUrR.js.map +1 -0
  7. package/dist/{analytics-AnN3M677.js → analytics-CdT0VV8s.js} +2 -2
  8. package/dist/{analytics-AnN3M677.js.map → analytics-CdT0VV8s.js.map} +1 -1
  9. package/dist/{api-CeVi1ZfZ.js → api-D9CerM6x.js} +3 -3
  10. package/dist/{api-CeVi1ZfZ.js.map → api-D9CerM6x.js.map} +1 -1
  11. package/dist/bin.js +400 -224
  12. package/dist/bin.js.map +1 -1
  13. package/dist/{ci-install-DPnE1HL3.js → ci-install-CTydrjHu.js} +4 -4
  14. package/dist/{ci-install-DPnE1HL3.js.map → ci-install-CTydrjHu.js.map} +1 -1
  15. package/dist/{debug-CyadC-pR.js → debug-Bmq9KH4W.js} +1 -1
  16. package/dist/{debug-i9wAxF8s.js → debug-D9giWww2.js} +17 -3
  17. package/dist/debug-D9giWww2.js.map +1 -0
  18. package/dist/{environment-CxkKJEfj.js → environment-C6j-a4Gz.js} +3 -3
  19. package/dist/{environment-CxkKJEfj.js.map → environment-C6j-a4Gz.js.map} +1 -1
  20. package/dist/{file-utils-D8H35Gk0.js → file-utils-BiElGS_N.js} +2 -2
  21. package/dist/{file-utils-D8H35Gk0.js.map → file-utils-BiElGS_N.js.map} +1 -1
  22. package/dist/{interactive-DwLH5ADP.js → interactive-C0Vssetd.js} +2 -2
  23. package/dist/{interactive-DwLH5ADP.js.map → interactive-C0Vssetd.js.map} +1 -1
  24. package/dist/{mcp-prompt-streaming-Cxy0XPv4.js → mcp-prompt-streaming-DQXxG2Pg.js} +5 -5
  25. package/dist/mcp-prompt-streaming-DQXxG2Pg.js.map +1 -0
  26. package/dist/{non-interactive-LHbUCRuo.js → non-interactive-DX-N3ZEb.js} +2 -2
  27. package/dist/{non-interactive-LHbUCRuo.js.map → non-interactive-DX-N3ZEb.js.map} +1 -1
  28. package/dist/{package-manager-BabzIzcR.js → package-manager-cIPAT7g3.js} +2 -2
  29. package/dist/{package-manager-BabzIzcR.js.map → package-manager-cIPAT7g3.js.map} +1 -1
  30. package/dist/{playground-BphF8gEy.js → playground-DQI2vpr0.js} +5 -5
  31. package/dist/{playground-BphF8gEy.js.map → playground-DQI2vpr0.js.map} +1 -1
  32. package/dist/{posthog-integration-vJHebMhn.js → posthog-integration-EUokB9U1.js} +201 -12
  33. package/dist/posthog-integration-EUokB9U1.js.map +1 -0
  34. package/dist/{provisioning-BYJOD26-.js → provisioning-BCCeBATw.js} +3 -3
  35. package/dist/{provisioning-BYJOD26-.js.map → provisioning-BCCeBATw.js.map} +1 -1
  36. package/dist/{registry-BGXvbfI-.js → registry-DCxIW2G5.js} +4 -4
  37. package/dist/{registry-BGXvbfI-.js.map → registry-DCxIW2G5.js.map} +1 -1
  38. package/dist/{setup-utils-DGnWKE9t.js → setup-utils-DmX3o2bT.js} +8 -8
  39. package/dist/{setup-utils-DGnWKE9t.js.map → setup-utils-DmX3o2bT.js.map} +1 -1
  40. package/dist/{start-tui-DetsuXHe.js → start-tui-B9dCp0hW.js} +306 -223
  41. package/dist/start-tui-B9dCp0hW.js.map +1 -0
  42. package/dist/{steps-DgYfPftk.js → steps-3XbXMf0T.js} +7 -7
  43. package/dist/{steps-DgYfPftk.js.map → steps-3XbXMf0T.js.map} +1 -1
  44. package/dist/{telemetry-WZu-ePKr.js → telemetry-GFq8wmz0.js} +3 -3
  45. package/dist/{telemetry-WZu-ePKr.js.map → telemetry-GFq8wmz0.js.map} +1 -1
  46. package/dist/{terminal-CfJ-haHU.js → terminal-oI1dOWQI.js} +13 -10
  47. package/dist/terminal-oI1dOWQI.js.map +1 -0
  48. package/dist/{urls-yVHBHA-b.js → urls-93eQ-Rd0.js} +2 -2
  49. package/dist/{urls-yVHBHA-b.js.map → urls-93eQ-Rd0.js.map} +1 -1
  50. package/dist/{wizard-abort-Ba5HDRGB.js → wizard-abort-BehJBPpy.js} +3 -3
  51. package/dist/{wizard-abort-Ba5HDRGB.js.map → wizard-abort-BehJBPpy.js.map} +1 -1
  52. package/dist/{wizard-abort-ChmzV0wB.js → wizard-abort-dmkJqxAb.js} +1 -1
  53. package/dist/wizard-ui-WZ48rUgr.js.map +1 -1
  54. package/package.json +1 -1
  55. package/dist/agent-runner-djkxwCd9.js.map +0 -1
  56. package/dist/debug-i9wAxF8s.js.map +0 -1
  57. package/dist/mcp-prompt-streaming-Cxy0XPv4.js.map +0 -1
  58. package/dist/posthog-integration-vJHebMhn.js.map +0 -1
  59. package/dist/start-tui-DetsuXHe.js.map +0 -1
  60. package/dist/terminal-CfJ-haHU.js.map +0 -1
package/dist/bin.js CHANGED
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
- import { $ as getSkillsBaseUrl, P as POSTHOG_DOCS_URL, X as WIZARD_USER_AGENT, _ as SIGNUP_WIZARD_READINESS_CONFIG, a as getLogFilePath, et as VERSION, h as LoggingUI, m as setUI, p as getUI, r as debug, s as logToFile, v as evaluateWizardReadiness, y as getBlockingServiceKeys } from "./debug-i9wAxF8s.js";
3
- import { t as analytics } from "./analytics-AnN3M677.js";
4
- import { r as setEntryCommand } from "./telemetry-WZu-ePKr.js";
5
- import { n as isUsingTypeScript } from "./setup-utils-DGnWKE9t.js";
6
- import { a as getUiHostFromHost, n as getCloudUrlFromRegion } from "./urls-yVHBHA-b.js";
7
- import { o as handleApiError } from "./api-CeVi1ZfZ.js";
2
+ import { I as POSTHOG_DOCS_URL, Q as WIZARD_USER_AGENT, a as getLogFilePath, h as LoggingUI, m as setUI, nt as VERSION, p as getUI, r as debug, s as logToFile, tt as getSkillsBaseUrl } from "./debug-D9giWww2.js";
3
+ import { t as analytics } from "./analytics-CdT0VV8s.js";
4
+ import { r as setEntryCommand } from "./telemetry-GFq8wmz0.js";
5
+ import { n as isUsingTypeScript } from "./setup-utils-DmX3o2bT.js";
6
+ import { a as getUiHostFromHost, n as getCloudUrlFromRegion } from "./urls-93eQ-Rd0.js";
7
+ import { o as handleApiError } from "./api-D9CerM6x.js";
8
8
  import "./wizard-session-G3VWD6hv.js";
9
- import { r as runCleanups } from "./wizard-abort-Ba5HDRGB.js";
10
- import { n as isNonInteractiveEnvironment } from "./environment-CxkKJEfj.js";
11
- import { S as AUDIT_REPORT_FILE, b as AUDIT_CHECKS_FILE, c as recoverOrphanedSettingsBackups, h as fetchSkillMenu, p as WIZARD_TOOL_NAMES, u as AgentSignals, x as AUDIT_CHECKS_KEY } from "./agent-interface-Bw1w0ePT.js";
12
- import { i as SPINNER_MESSAGE } from "./registry-BGXvbfI-.js";
13
- import { _ as parseRequirementsTxt, a as PRODUCT_SUITE_BLOCK, f as Colors, g as parsePyprojectToml, h as parsePipfile, i as LINE_CHART_BLOCK, l as isClearBlock, m as HEALTH_CHECK_STEP, n as posthogIntegrationConfig, o as StatusPeekTrigger, p as Icons, r as FUNNEL_BLOCK } from "./posthog-integration-vJHebMhn.js";
14
- import { n as safeReadFile, r as walkProjectFiles, t as IGNORED_DIRS } from "./file-utils-D8H35Gk0.js";
9
+ import { r as runCleanups } from "./wizard-abort-BehJBPpy.js";
10
+ import { n as isNonInteractiveEnvironment } from "./environment-C6j-a4Gz.js";
11
+ import { S as AUDIT_REPORT_FILE, b as AUDIT_CHECKS_FILE, c as recoverOrphanedSettingsBackups, h as fetchSkillMenu, p as WIZARD_TOOL_NAMES, u as AgentSignals, x as AUDIT_CHECKS_KEY } from "./agent-interface-CYFyWCMj.js";
12
+ import { i as SPINNER_MESSAGE } from "./registry-DCxIW2G5.js";
13
+ import { _ as parsePyprojectToml, a as PRODUCT_SUITE_BLOCK, f as Colors, g as parsePipfile, i as LINE_CHART_BLOCK, l as isClearBlock, m as HEALTH_CHECK_STEP, n as posthogIntegrationConfig, o as StatusPeekTrigger, p as Icons, r as FUNNEL_BLOCK, v as parseRequirementsTxt } from "./posthog-integration-EUokB9U1.js";
14
+ import { n as safeReadFile, r as walkProjectFiles, t as IGNORED_DIRS } from "./file-utils-BiElGS_N.js";
15
15
  import { n as readApiKeyFromEnv } from "./env-api-key-MlzJYAvt.js";
16
16
  import { satisfies } from "semver";
17
17
  import yargs from "yargs";
@@ -190,7 +190,7 @@ function runProvision(argv) {
190
190
  }
191
191
  async function provision({ email, region, name, jsonMode }) {
192
192
  try {
193
- const { provisionNewAccount } = await import("./provisioning-BYJOD26-.js").then((n) => n.n);
193
+ const { provisionNewAccount } = await import("./provisioning-BCCeBATw.js").then((n) => n.n);
194
194
  if (!jsonMode) getUI().log.info(`Provisioning account for ${email} in ${region}...`);
195
195
  emitResult(await provisionNewAccount(email, name, region), jsonMode);
196
196
  process.exit(0);
@@ -255,25 +255,25 @@ const basicIntegrationCommand = {
255
255
  setEntryCommand("integrate");
256
256
  (async () => {
257
257
  if (argv.ci) {
258
- const { runCIInstall } = await import("./ci-install-DPnE1HL3.js");
258
+ const { runCIInstall } = await import("./ci-install-CTydrjHu.js");
259
259
  return runCIInstall(argv);
260
260
  }
261
261
  if (isNonInteractiveEnvironment()) {
262
- const { failNonInteractive } = await import("./non-interactive-LHbUCRuo.js");
262
+ const { failNonInteractive } = await import("./non-interactive-DX-N3ZEb.js");
263
263
  return failNonInteractive();
264
264
  }
265
265
  if (argv.playground) {
266
- const { runPlayground } = await import("./playground-BphF8gEy.js");
266
+ const { runPlayground } = await import("./playground-DQI2vpr0.js");
267
267
  return runPlayground();
268
268
  }
269
- const { runInteractive } = await import("./interactive-DwLH5ADP.js");
269
+ const { runInteractive } = await import("./interactive-C0Vssetd.js");
270
270
  runInteractive(argv);
271
271
  })();
272
272
  }
273
273
  };
274
274
  //#endregion
275
275
  //#region src/lib/programs/shared/package-scanning.ts
276
- const POSTHOG_SDKS$1 = [
276
+ const POSTHOG_SDKS = [
277
277
  "posthog-js",
278
278
  "posthog-node",
279
279
  "posthog-react-native",
@@ -306,7 +306,7 @@ function findPackageJsons(installDir, maxDepth = 3) {
306
306
  if (entry.isFile() && entry.name === "package.json") try {
307
307
  const pkg = JSON.parse(readFileSync(fullPath, "utf-8"));
308
308
  const depNames = [...Object.keys(pkg.dependencies ?? {}), ...Object.keys(pkg.devDependencies ?? {})];
309
- const posthogSdks = depNames.filter((d) => POSTHOG_SDKS$1.includes(d));
309
+ const posthogSdks = depNames.filter((d) => POSTHOG_SDKS.includes(d));
310
310
  const stripeSdks = depNames.filter((d) => STRIPE_SDKS.includes(d));
311
311
  matches.push({
312
312
  path: relative(installDir, fullPath) || "package.json",
@@ -766,6 +766,293 @@ const SOURCE_DETECTORS = [
766
766
  ruby: ["sentry-ruby"]
767
767
  }
768
768
  },
769
+ {
770
+ kind: "Plaid",
771
+ label: "Plaid",
772
+ mode: "in-cli",
773
+ signals: {
774
+ npm: ["plaid"],
775
+ python: ["plaid-python", "plaid"],
776
+ ruby: ["plaid"],
777
+ envKeys: [/^PLAID_/]
778
+ }
779
+ },
780
+ {
781
+ kind: "Braintree",
782
+ label: "Braintree",
783
+ mode: "in-cli",
784
+ signals: {
785
+ npm: ["braintree"],
786
+ python: ["braintree"],
787
+ ruby: ["braintree"],
788
+ envKeys: [/^BRAINTREE_/]
789
+ }
790
+ },
791
+ {
792
+ kind: "Square",
793
+ label: "Square",
794
+ mode: "in-cli",
795
+ signals: {
796
+ npm: ["square"],
797
+ python: ["squareup"],
798
+ ruby: ["square"],
799
+ envKeys: [/^SQUARE_/]
800
+ }
801
+ },
802
+ {
803
+ kind: "GoCardless",
804
+ label: "GoCardless",
805
+ mode: "in-cli",
806
+ signals: {
807
+ npm: ["gocardless-nodejs"],
808
+ python: ["gocardless-pro"],
809
+ ruby: ["gocardless_pro"],
810
+ envKeys: [/^GOCARDLESS_/]
811
+ }
812
+ },
813
+ {
814
+ kind: "Mollie",
815
+ label: "Mollie",
816
+ mode: "in-cli",
817
+ signals: {
818
+ npm: ["@mollie/api-client"],
819
+ python: ["mollie-api-python"],
820
+ envKeys: [/^MOLLIE_/]
821
+ }
822
+ },
823
+ {
824
+ kind: "CheckoutCom",
825
+ label: "Checkout.com",
826
+ mode: "in-cli",
827
+ signals: {
828
+ npm: ["checkout-sdk-node"],
829
+ python: ["checkout-sdk"],
830
+ envKeys: [/^CKO_/, /^CHECKOUT_COM_/]
831
+ }
832
+ },
833
+ {
834
+ kind: "Recurly",
835
+ label: "Recurly",
836
+ mode: "in-cli",
837
+ signals: {
838
+ npm: ["recurly"],
839
+ python: ["recurly"],
840
+ ruby: ["recurly"],
841
+ envKeys: [/^RECURLY_/]
842
+ }
843
+ },
844
+ {
845
+ kind: "RevenueCat",
846
+ label: "RevenueCat",
847
+ mode: "in-cli",
848
+ signals: {
849
+ npm: [
850
+ "@revenuecat/purchases-js",
851
+ "react-native-purchases",
852
+ "@revenuecat/purchases-capacitor"
853
+ ],
854
+ envKeys: [/^REVENUE_?CAT_/]
855
+ }
856
+ },
857
+ {
858
+ kind: "Twilio",
859
+ label: "Twilio",
860
+ mode: "in-cli",
861
+ signals: {
862
+ npm: ["twilio"],
863
+ python: ["twilio"],
864
+ ruby: ["twilio-ruby"],
865
+ envKeys: [/^TWILIO_/]
866
+ }
867
+ },
868
+ {
869
+ kind: "SendGrid",
870
+ label: "SendGrid",
871
+ mode: "in-cli",
872
+ signals: {
873
+ npm: ["@sendgrid/mail", "@sendgrid/client"],
874
+ python: ["sendgrid"],
875
+ ruby: ["sendgrid-ruby"],
876
+ envKeys: [/^SENDGRID_/]
877
+ }
878
+ },
879
+ {
880
+ kind: "Mailgun",
881
+ label: "Mailgun",
882
+ mode: "in-cli",
883
+ signals: {
884
+ npm: ["mailgun.js", "mailgun-js"],
885
+ python: ["mailgun"],
886
+ ruby: ["mailgun-ruby"],
887
+ envKeys: [/^MAILGUN_/]
888
+ }
889
+ },
890
+ {
891
+ kind: "Postmark",
892
+ label: "Postmark",
893
+ mode: "in-cli",
894
+ signals: {
895
+ npm: ["postmark"],
896
+ python: ["postmarker"],
897
+ ruby: ["postmark"],
898
+ envKeys: [/^POSTMARK_/]
899
+ }
900
+ },
901
+ {
902
+ kind: "Brevo",
903
+ label: "Brevo",
904
+ mode: "in-cli",
905
+ signals: {
906
+ npm: ["@getbrevo/brevo", "sib-api-v3-sdk"],
907
+ python: ["sib-api-v3-sdk"],
908
+ envKeys: [/^BREVO_/]
909
+ }
910
+ },
911
+ {
912
+ kind: "MailerLite",
913
+ label: "MailerLite",
914
+ mode: "in-cli",
915
+ signals: {
916
+ npm: ["@mailerlite/mailerlite-nodejs"],
917
+ python: ["mailerlite"],
918
+ envKeys: [/^MAILERLITE_/]
919
+ }
920
+ },
921
+ {
922
+ kind: "Mailjet",
923
+ label: "Mailjet",
924
+ mode: "in-cli",
925
+ signals: {
926
+ npm: ["node-mailjet"],
927
+ python: ["mailjet-rest"],
928
+ envKeys: [/^MAILJET_/, /^MJ_APIKEY_/]
929
+ }
930
+ },
931
+ {
932
+ kind: "LaunchDarkly",
933
+ label: "LaunchDarkly",
934
+ mode: "in-cli",
935
+ signals: {
936
+ npm: [
937
+ "launchdarkly-node-server-sdk",
938
+ "@launchdarkly/node-server-sdk",
939
+ "launchdarkly-js-client-sdk",
940
+ "launchdarkly-react-client-sdk"
941
+ ],
942
+ python: ["launchdarkly-server-sdk"],
943
+ ruby: ["launchdarkly-server-sdk"],
944
+ envKeys: [/^LAUNCHDARKLY_/, /^LD_SDK_KEY$/]
945
+ }
946
+ },
947
+ {
948
+ kind: "Optimizely",
949
+ label: "Optimizely",
950
+ mode: "in-cli",
951
+ signals: {
952
+ npm: ["@optimizely/optimizely-sdk"],
953
+ python: ["optimizely-sdk"],
954
+ envKeys: [/^OPTIMIZELY_/]
955
+ }
956
+ },
957
+ {
958
+ kind: "Braze",
959
+ label: "Braze",
960
+ mode: "in-cli",
961
+ signals: {
962
+ npm: ["@braze/web-sdk", "@braze/react-native-sdk"],
963
+ python: ["braze-client"],
964
+ envKeys: [/^BRAZE_/]
965
+ }
966
+ },
967
+ {
968
+ kind: "Rollbar",
969
+ label: "Rollbar",
970
+ mode: "in-cli",
971
+ signals: {
972
+ npm: ["rollbar"],
973
+ python: ["rollbar", "pyrollbar"],
974
+ ruby: ["rollbar"],
975
+ envKeys: [/^ROLLBAR_/]
976
+ }
977
+ },
978
+ {
979
+ kind: "Okta",
980
+ label: "Okta",
981
+ mode: "in-cli",
982
+ signals: {
983
+ npm: [
984
+ "@okta/okta-sdk-nodejs",
985
+ "@okta/okta-auth-js",
986
+ "@okta/okta-react"
987
+ ],
988
+ python: ["okta"],
989
+ envKeys: [/^OKTA_/]
990
+ }
991
+ },
992
+ {
993
+ kind: "WorkOS",
994
+ label: "WorkOS",
995
+ mode: "in-cli",
996
+ signals: {
997
+ npm: ["@workos-inc/node"],
998
+ python: ["workos"],
999
+ envKeys: [/^WORKOS_/]
1000
+ }
1001
+ },
1002
+ {
1003
+ kind: "Notion",
1004
+ label: "Notion",
1005
+ mode: "in-cli",
1006
+ signals: {
1007
+ npm: ["@notionhq/client"],
1008
+ python: ["notion-client"],
1009
+ envKeys: [/^NOTION_/]
1010
+ }
1011
+ },
1012
+ {
1013
+ kind: "FullStory",
1014
+ label: "FullStory",
1015
+ mode: "in-cli",
1016
+ signals: {
1017
+ npm: ["@fullstory/browser", "@fullstory/react-native"],
1018
+ envKeys: [/^FULLSTORY_/]
1019
+ }
1020
+ },
1021
+ {
1022
+ kind: "Amplitude",
1023
+ label: "Amplitude",
1024
+ mode: "in-cli",
1025
+ signals: {
1026
+ npm: [
1027
+ "@amplitude/analytics-browser",
1028
+ "@amplitude/analytics-node",
1029
+ "@amplitude/analytics-react-native",
1030
+ "amplitude-js"
1031
+ ],
1032
+ python: ["amplitude-analytics"],
1033
+ envKeys: [/^AMPLITUDE_/]
1034
+ }
1035
+ },
1036
+ {
1037
+ kind: "Mixpanel",
1038
+ label: "Mixpanel",
1039
+ mode: "in-cli",
1040
+ signals: {
1041
+ npm: ["mixpanel", "mixpanel-browser"],
1042
+ python: ["mixpanel"],
1043
+ ruby: ["mixpanel-ruby"],
1044
+ envKeys: [/^MIXPANEL_/]
1045
+ }
1046
+ },
1047
+ {
1048
+ kind: "Pendo",
1049
+ label: "Pendo",
1050
+ mode: "in-cli",
1051
+ signals: {
1052
+ npm: ["@pendo/agent"],
1053
+ envKeys: [/^PENDO_/]
1054
+ }
1055
+ },
769
1056
  {
770
1057
  kind: "Salesforce",
771
1058
  label: "Salesforce",
@@ -814,6 +1101,31 @@ const SOURCE_DETECTORS = [
814
1101
  npm: ["@linear/sdk"],
815
1102
  envKeys: [/^LINEAR_API_KEY$/]
816
1103
  }
1104
+ },
1105
+ {
1106
+ kind: "Slack",
1107
+ label: "Slack",
1108
+ mode: "deep-link",
1109
+ signals: {
1110
+ npm: ["@slack/web-api", "@slack/bolt"],
1111
+ python: ["slack-sdk", "slack-bolt"],
1112
+ envKeys: [/^SLACK_(BOT|APP|SIGNING|CLIENT)_/]
1113
+ }
1114
+ },
1115
+ {
1116
+ kind: "Github",
1117
+ label: "GitHub",
1118
+ mode: "deep-link",
1119
+ signals: {
1120
+ npm: [
1121
+ "@octokit/rest",
1122
+ "@octokit/core",
1123
+ "@octokit/graphql",
1124
+ "octokit"
1125
+ ],
1126
+ python: ["pygithub"],
1127
+ ruby: ["octokit"]
1128
+ }
817
1129
  }
818
1130
  ];
819
1131
  //#endregion
@@ -835,7 +1147,7 @@ const MAX_DEPTH = 3;
835
1147
  * so the result is naturally deduped).
836
1148
  */
837
1149
  function detectWarehouseSources(installDir) {
838
- const signals = collectSignals$1(installDir);
1150
+ const signals = collectSignals(installDir);
839
1151
  const detected = [];
840
1152
  for (const detector of SOURCE_DETECTORS) {
841
1153
  const match = matchDetector(detector, signals);
@@ -862,7 +1174,7 @@ function matchDetector(detector, signals) {
862
1174
  }
863
1175
  return null;
864
1176
  }
865
- function collectSignals$1(installDir) {
1177
+ function collectSignals(installDir) {
866
1178
  const signals = {
867
1179
  npm: /* @__PURE__ */ new Set(),
868
1180
  python: /* @__PURE__ */ new Set(),
@@ -2265,12 +2577,21 @@ const DISPLAY_NAME = {
2265
2577
  webpack: "Webpack",
2266
2578
  rollup: "Rollup"
2267
2579
  };
2268
- const POSTHOG_SDKS = [
2269
- "posthog-js",
2270
- "posthog-node",
2271
- "posthog-react-native",
2272
- "posthog-android",
2273
- "posthog-ios"
2580
+ /**
2581
+ * Variants the wizard can wire up source-map upload for automatically. The
2582
+ * native variants (react-native, android, flutter, ios) are recognised but not
2583
+ * yet automatable, so the agentic picker treats them as non-instrumentable.
2584
+ */
2585
+ const AUTOMATABLE_VARIANTS = [
2586
+ "web",
2587
+ "nextjs",
2588
+ "node",
2589
+ "react",
2590
+ "angular",
2591
+ "nuxt",
2592
+ "vite",
2593
+ "webpack",
2594
+ "rollup"
2274
2595
  ];
2275
2596
  /** `[ABORT] <reason>` cases the source maps skill can emit. */
2276
2597
  const SOURCE_MAPS_ABORT_CASES = [{
@@ -2284,199 +2605,40 @@ const SOURCE_MAPS_ABORT_CASES = [{
2284
2605
  body: "The agent could not identify how to build your project. Source map upload runs as part of the production build. Add a build script to your project and run this wizard again.",
2285
2606
  docsUrl: "https://posthog.com/docs/error-tracking/upload-source-maps"
2286
2607
  }];
2287
- function collectSignals(installDir, maxDepth = 3) {
2288
- const signals = {
2289
- packageJsons: [],
2290
- hasXcodeProject: false,
2291
- hasPodfile: false,
2292
- hasSwiftPackage: false,
2293
- hasGradle: false,
2294
- hasPubspec: false,
2295
- scannedFileCount: 0
2296
- };
2297
- function scan(dir, depth) {
2298
- if (depth > maxDepth) return;
2299
- let entries;
2300
- try {
2301
- entries = readdirSync(dir, { withFileTypes: true });
2302
- } catch {
2303
- return;
2304
- }
2305
- for (const entry of entries) {
2306
- if (entry.name.startsWith(".") && entry.name !== ".") continue;
2307
- if (IGNORED_DIRS.has(entry.name)) continue;
2308
- const fullPath = join(dir, entry.name);
2309
- if (entry.isFile()) {
2310
- signals.scannedFileCount += 1;
2311
- if (entry.name === "package.json") try {
2312
- const pkg = JSON.parse(readFileSync(fullPath, "utf-8"));
2313
- const deps = new Set([...Object.keys(pkg.dependencies ?? {}), ...Object.keys(pkg.devDependencies ?? {})]);
2314
- signals.packageJsons.push({
2315
- path: relative(installDir, fullPath) || "package.json",
2316
- deps
2317
- });
2318
- } catch {}
2319
- else if (entry.name === "Podfile") signals.hasPodfile = true;
2320
- else if (entry.name === "Package.swift") signals.hasSwiftPackage = true;
2321
- else if (entry.name === "pubspec.yaml") signals.hasPubspec = true;
2322
- else if (entry.name === "build.gradle" || entry.name === "build.gradle.kts" || entry.name === "settings.gradle" || entry.name === "settings.gradle.kts") signals.hasGradle = true;
2323
- } else if (entry.isDirectory()) if (entry.name.endsWith(".xcodeproj")) signals.hasXcodeProject = true;
2324
- else scan(fullPath, depth + 1);
2325
- }
2326
- }
2327
- scan(installDir, 0);
2328
- return signals;
2329
- }
2330
- function pickJsVariant(deps) {
2331
- if (deps.has("react-native")) return "react-native";
2332
- if (deps.has("nuxt")) return "nuxt";
2333
- if (deps.has("next")) return "nextjs";
2334
- if (deps.has("@angular/core")) return "angular";
2335
- if (deps.has("vite")) return "vite";
2336
- if (deps.has("webpack")) return "webpack";
2337
- if (deps.has("rollup")) return "rollup";
2338
- if (deps.has("react")) return "react";
2339
- if (deps.has("posthog-node")) return "node";
2340
- return "web";
2341
- }
2342
- function selectVariant(signals) {
2343
- if (signals.hasPubspec) return "flutter";
2344
- if (signals.hasXcodeProject || signals.hasPodfile || signals.hasSwiftPackage) return "ios";
2345
- if (signals.hasGradle) return "android";
2346
- if (signals.packageJsons.length > 0) {
2347
- const allDeps = /* @__PURE__ */ new Set();
2348
- for (const pkg of signals.packageJsons) for (const dep of pkg.deps) allDeps.add(dep);
2349
- return pickJsVariant(allDeps);
2350
- }
2351
- return null;
2352
- }
2353
- function hasPostHogSdk(signals) {
2354
- for (const pkg of signals.packageJsons) for (const sdk of POSTHOG_SDKS) if (pkg.deps.has(sdk)) return true;
2355
- return signals.hasXcodeProject || signals.hasPodfile || signals.hasSwiftPackage || signals.hasGradle || signals.hasPubspec;
2356
- }
2357
2608
  const SOURCE_MAPS_CONTEXT_KEYS = {
2358
2609
  skillVariant: "sourceMapsSkillVariant",
2359
2610
  displayName: "sourceMapsDisplayName",
2360
2611
  packagePaths: "sourceMapsPackagePaths",
2361
- detectError: "detectError"
2612
+ detectError: "detectError",
2613
+ selectedVariant: "sourceMapsSelectedVariant",
2614
+ selectedDisplayName: "sourceMapsSelectedDisplayName",
2615
+ selectedPath: "sourceMapsSelectedPath"
2362
2616
  };
2363
- /**
2364
- * Scan `session.installDir` for platform / build-system signals. Writes
2365
- * detection results into frameworkContext via the callback — either the
2366
- * picked skill variant + display name, or a `SourceMapsDetectError`.
2367
- *
2368
- * The skill install happens later in the agent run, not here. This step
2369
- * only picks which variant the prompt should ask the agent to load.
2370
- */
2371
- function detectSourceMapsPrerequisites(session, setFrameworkContext) {
2372
- const fail = (error) => setFrameworkContext(SOURCE_MAPS_CONTEXT_KEYS.detectError, error);
2373
- const installDir = session.installDir;
2374
- if (!existsSync(installDir)) {
2375
- fail({
2376
- kind: "bad-directory",
2377
- path: installDir,
2378
- reason: "missing"
2379
- });
2380
- return;
2381
- }
2382
- try {
2383
- if (!statSync(installDir).isDirectory()) {
2384
- fail({
2385
- kind: "bad-directory",
2386
- path: installDir,
2387
- reason: "not-dir"
2388
- });
2389
- return;
2390
- }
2391
- } catch {
2392
- fail({
2393
- kind: "bad-directory",
2394
- path: installDir,
2395
- reason: "unreadable"
2396
- });
2397
- return;
2398
- }
2399
- const signals = collectSignals(installDir);
2400
- const variant = selectVariant(signals);
2401
- if (variant && [
2402
- "react-native",
2403
- "flutter",
2404
- "ios",
2405
- "android"
2406
- ].includes(variant)) {
2407
- fail({
2408
- kind: "unsupported-platform",
2409
- detected: variant
2410
- });
2411
- return;
2412
- }
2413
- if (!variant) {
2414
- if (signals.scannedFileCount === 0) fail({ kind: "no-project-files" });
2415
- else fail({
2416
- kind: "unsupported-platform",
2417
- detected: "unknown"
2418
- });
2419
- return;
2420
- }
2421
- if (!hasPostHogSdk(signals)) {
2422
- fail({
2423
- kind: "no-posthog-sdk",
2424
- platform: variant
2425
- });
2426
- return;
2427
- }
2428
- setFrameworkContext(SOURCE_MAPS_CONTEXT_KEYS.skillVariant, variant);
2429
- setFrameworkContext(SOURCE_MAPS_CONTEXT_KEYS.displayName, DISPLAY_NAME[variant]);
2430
- setFrameworkContext(SOURCE_MAPS_CONTEXT_KEYS.packagePaths, signals.packageJsons.map((p) => p.path));
2431
- }
2432
2617
  //#endregion
2433
2618
  //#region src/lib/programs/error-tracking-upload-source-maps/steps.ts
2434
- function healthCheckReady(session) {
2435
- if (!session.readinessResult) return false;
2436
- if (session.signup) {
2437
- const hardBlocking = getBlockingServiceKeys(session.readinessResult.health, SIGNUP_WIZARD_READINESS_CONFIG);
2438
- const defaultBlocking = getBlockingServiceKeys(session.readinessResult.health);
2439
- if (hardBlocking.length === 0 && defaultBlocking.length === 0) return true;
2440
- return session.outageDismissed;
2441
- }
2442
- if (session.readinessResult.decision === "no") return session.outageDismissed;
2443
- return true;
2619
+ function projectSelected(session) {
2620
+ return session.frameworkContext[SOURCE_MAPS_CONTEXT_KEYS.selectedVariant] != null;
2444
2621
  }
2445
2622
  const ERROR_TRACKING_UPLOAD_SOURCE_MAPS_PROGRAM = [
2446
- {
2447
- id: "detect",
2448
- label: "Detecting platform",
2449
- onReady: (ctx) => detectSourceMapsPrerequisites(ctx.session, ctx.setFrameworkContext)
2450
- },
2451
2623
  {
2452
2624
  id: "intro",
2453
2625
  label: "Welcome",
2454
2626
  screenId: "source-maps-intro",
2455
2627
  gate: (session) => session.setupConfirmed
2456
2628
  },
2457
- {
2458
- id: "health-check",
2459
- label: "Health check",
2460
- screenId: "health-check",
2461
- gate: healthCheckReady,
2462
- onInit: (ctx) => {
2463
- evaluateWizardReadiness().then((readiness) => {
2464
- ctx.setReadinessResult(readiness);
2465
- }).catch(() => {
2466
- ctx.setReadinessResult({
2467
- decision: "yes",
2468
- health: {},
2469
- reasons: []
2470
- });
2471
- });
2472
- }
2473
- },
2474
2629
  {
2475
2630
  id: "auth",
2476
2631
  label: "Authentication",
2477
2632
  screenId: "auth",
2478
2633
  isComplete: (session) => session.credentials !== null
2479
2634
  },
2635
+ {
2636
+ id: "detect",
2637
+ label: "Detecting projects",
2638
+ screenId: "source-maps-detect",
2639
+ isComplete: projectSelected,
2640
+ gate: projectSelected
2641
+ },
2480
2642
  {
2481
2643
  id: "run",
2482
2644
  label: "Upload source maps",
@@ -2501,8 +2663,9 @@ const SOURCE_MAPS_DETECTION_FAILED_PROMPT = `Detection did not pick a source map
2501
2663
  Emit: ${AgentSignals.ABORT} unsupported-platform
2502
2664
  Then halt.`;
2503
2665
  function buildSourceMapsUploadPrompt(params) {
2504
- const { displayName, variant, skillId, projectId, host, settingsUrl, uiHost } = params;
2666
+ const { displayName, variant, skillId, projectPath, projectId, host, settingsUrl, uiHost } = params;
2505
2667
  const platformLabel = displayName ?? variant;
2668
+ const inSubproject = projectPath != null && projectPath !== ".";
2506
2669
  return `You are wiring up PostHog Error Tracking source map upload for this ${platformLabel} project.
2507
2670
 
2508
2671
  Project context:
@@ -2510,8 +2673,11 @@ Project context:
2510
2673
  - PostHog Host: ${host}
2511
2674
  - Detected platform: ${platformLabel}
2512
2675
  - Skill to use: ${skillId}
2676
+ ${inSubproject ? `- Project directory (relative to repo root): ${projectPath}` : "- Project directory: the repo root"}
2513
2677
  - Personal API keys settings page: ${settingsUrl}
2514
2678
 
2679
+ All file changes, build/run commands, and config edits target the project directory above${inSubproject ? ` — this is a monorepo, so scope your work to \`${projectPath}\` and do not touch other packages` : ""}.
2680
+
2515
2681
  The skill you install in STEP 2 is the source of truth for the HOW of every
2516
2682
  step: its "## Steps" section has an overview, tips and per-technology
2517
2683
  examples for each named step, and its reference files carry the exact
@@ -2992,10 +3158,16 @@ const errorTrackingUploadSourceMapsConfig = {
2992
3158
  reportFile: REPORT_FILE$1,
2993
3159
  getContentBlocks,
2994
3160
  requires: ["posthog-integration"],
2995
- run: (session) => {
2996
- const variant = session.frameworkContext[SOURCE_MAPS_CONTEXT_KEYS.skillVariant];
2997
- const displayName = session.frameworkContext[SOURCE_MAPS_CONTEXT_KEYS.displayName];
2998
- const skillId = variant ? `error-tracking-upload-source-maps-${variant}` : void 0;
3161
+ run: (_session) => {
3162
+ const readSelection = () => {
3163
+ const variant = getUI().getFrameworkContext(SOURCE_MAPS_CONTEXT_KEYS.selectedVariant);
3164
+ return {
3165
+ variant,
3166
+ displayName: getUI().getFrameworkContext(SOURCE_MAPS_CONTEXT_KEYS.selectedDisplayName),
3167
+ projectPath: getUI().getFrameworkContext(SOURCE_MAPS_CONTEXT_KEYS.selectedPath),
3168
+ skillId: variant ? `error-tracking-upload-source-maps-${variant}` : void 0
3169
+ };
3170
+ };
2999
3171
  return Promise.resolve({
3000
3172
  integrationLabel: "error-tracking-upload-source-maps",
3001
3173
  successMessage: "Source maps wired up!",
@@ -3006,20 +3178,23 @@ const errorTrackingUploadSourceMapsConfig = {
3006
3178
  abortCases: SOURCE_MAPS_ABORT_CASES,
3007
3179
  askTimeoutMs: 1800 * 1e3,
3008
3180
  customPrompt: (ctx) => {
3181
+ const { variant, displayName, projectPath, skillId } = readSelection();
3009
3182
  if (!skillId || !variant) return SOURCE_MAPS_DETECTION_FAILED_PROMPT;
3010
3183
  const uiHost = getUiHostFromHost(ctx.host).replace(/\/$/, "");
3011
3184
  return buildSourceMapsUploadPrompt({
3012
3185
  displayName,
3013
3186
  variant,
3014
3187
  skillId,
3188
+ projectPath,
3015
3189
  projectId: ctx.projectId,
3016
3190
  host: ctx.host,
3017
3191
  settingsUrl: `${uiHost}/project/${ctx.projectId}/settings/user-api-keys`,
3018
3192
  uiHost
3019
3193
  });
3020
3194
  },
3021
- postRun: (sess) => {
3022
- if (variant) sess.frameworkContext["sourceMapsCompletedVariant"] = variant;
3195
+ postRun: () => {
3196
+ const { variant } = readSelection();
3197
+ if (variant) getUI().setFrameworkContext("sourceMapsCompletedVariant", variant);
3023
3198
  return Promise.resolve();
3024
3199
  },
3025
3200
  buildOutroData: () => {
@@ -3260,12 +3435,12 @@ STEP 6 — Configure the scout troop. (skill: "Scouts")
3260
3435
  STEP 7 — Design custom scouts for this product. (skill: "Custom scouts")
3261
3436
  You are the only actor that has read this repo — turn that into
3262
3437
  coverage per the skill: a real gap analysis of the project's
3263
- watchable surfaces against what the canonical troop already covers,
3438
+ watchable surfaces against what the built-in troop already covers,
3264
3439
  then custom scouts for the uncovered ones. Keep scout bodies
3265
3440
  high-level: describe the behavior and signal conditions to watch,
3266
3441
  referencing repo evidence by file/function name — never paste raw
3267
3442
  source, secrets, env values, or customer data into a scout body.
3268
- Never edit canonical scout bodies. Propose all candidates in ONE
3443
+ Never edit built-in scout bodies. Propose all candidates in ONE
3269
3444
  batched wizard_ask
3270
3445
  before creating anything; the user declining everything (or finding
3271
3446
  no gap at all) is a valid outcome, not an abort. Mark the task
@@ -3335,6 +3510,7 @@ const run = {
3335
3510
  maxQuestions: 13,
3336
3511
  richLinks: true,
3337
3512
  askTimeoutMs: 1800 * 1e3,
3513
+ trackStepProgress: true,
3338
3514
  postRun: async (session) => {
3339
3515
  await removeInstalledSkill(session.installDir);
3340
3516
  },
@@ -3574,7 +3750,7 @@ function runMcpAdd(argv) {
3574
3750
  const debug = argv.debug;
3575
3751
  const localMcp = argv.local;
3576
3752
  try {
3577
- const { startTUI } = await import("./start-tui-DetsuXHe.js");
3753
+ const { startTUI } = await import("./start-tui-B9dCp0hW.js");
3578
3754
  const { buildSession } = await import("./wizard-session-wPJtNl4c.js");
3579
3755
  const tui = startTUI(VERSION, Program.McpAdd);
3580
3756
  tui.store.session = buildSession({
@@ -3586,7 +3762,7 @@ function runMcpAdd(argv) {
3586
3762
  } catch (error) {
3587
3763
  if (!isTUIUnavailable(error)) throw error;
3588
3764
  setUI(new LoggingUI());
3589
- const { addMCPServerToClientsStep } = await import("./add-mcp-server-to-clients-pXmZQkpk.js").then((n) => n.r);
3765
+ const { addMCPServerToClientsStep } = await import("./add-mcp-server-to-clients-D0G4cmPf.js").then((n) => n.r);
3590
3766
  await addMCPServerToClientsStep({
3591
3767
  local: localMcp,
3592
3768
  features,
@@ -3625,7 +3801,7 @@ function runMcpRemove(argv) {
3625
3801
  const debug = argv.debug;
3626
3802
  const localMcp = argv.local;
3627
3803
  try {
3628
- const { startTUI } = await import("./start-tui-DetsuXHe.js");
3804
+ const { startTUI } = await import("./start-tui-B9dCp0hW.js");
3629
3805
  const { buildSession } = await import("./wizard-session-wPJtNl4c.js");
3630
3806
  const tui = startTUI(VERSION, Program.McpRemove);
3631
3807
  tui.store.session = buildSession({
@@ -3634,7 +3810,7 @@ function runMcpRemove(argv) {
3634
3810
  });
3635
3811
  } catch {
3636
3812
  setUI(new LoggingUI());
3637
- const { removeMCPServerFromClientsStep } = await import("./add-mcp-server-to-clients-pXmZQkpk.js").then((n) => n.r);
3813
+ const { removeMCPServerFromClientsStep } = await import("./add-mcp-server-to-clients-D0G4cmPf.js").then((n) => n.r);
3638
3814
  await removeMCPServerFromClientsStep({ local: localMcp });
3639
3815
  }
3640
3816
  })();
@@ -3656,7 +3832,7 @@ function runMcpTutorial(argv) {
3656
3832
  const debug = argv.debug;
3657
3833
  const localMcp = argv.local;
3658
3834
  try {
3659
- const { startTUI } = await import("./start-tui-DetsuXHe.js");
3835
+ const { startTUI } = await import("./start-tui-B9dCp0hW.js");
3660
3836
  const { buildSession } = await import("./wizard-session-wPJtNl4c.js");
3661
3837
  const tui = startTUI(VERSION, Program.McpTutorial);
3662
3838
  tui.store.session = buildSession({
@@ -3711,7 +3887,7 @@ function runWizard(config, options) {
3711
3887
  (async () => {
3712
3888
  try {
3713
3889
  const installDir = options.installDir || process.cwd();
3714
- const { startTUI } = await import("./start-tui-DetsuXHe.js");
3890
+ const { startTUI } = await import("./start-tui-B9dCp0hW.js");
3715
3891
  const { buildSession, RunPhase } = await import("./wizard-session-wPJtNl4c.js");
3716
3892
  const { TaskStreamPush } = await import("./task-stream-BQNSp0qR.js");
3717
3893
  const { PostHogDestination } = await import("./posthog-Cr37rnla.js");
@@ -3767,7 +3943,7 @@ function runWizard(config, options) {
3767
3943
  await activeTui.store.getGate("health-check");
3768
3944
  const skipAgent = config.run == null;
3769
3945
  if (skipAgent) {
3770
- const { getOrAskForProjectData } = await import("./setup-utils-DGnWKE9t.js").then((n) => n.r);
3946
+ const { getOrAskForProjectData } = await import("./setup-utils-DmX3o2bT.js").then((n) => n.r);
3771
3947
  const { projectApiKey, host, accessToken, projectId } = await getOrAskForProjectData({
3772
3948
  signup: session.signup,
3773
3949
  ci: session.ci,
@@ -3782,7 +3958,7 @@ function runWizard(config, options) {
3782
3958
  projectId
3783
3959
  });
3784
3960
  } else {
3785
- const { runAgent } = await import("./agent-runner-djkxwCd9.js");
3961
+ const { runAgent } = await import("./agent-runner-HTfFCUrR.js");
3786
3962
  await runAgent(config, activeTui.store.session);
3787
3963
  }
3788
3964
  const isDone = () => skipAgent ? activeTui.store.session.outroDismissed : activeTui.store.session.skillsComplete;
@@ -3859,10 +4035,10 @@ function runWizardCI(config, options) {
3859
4035
  (async () => {
3860
4036
  const path = await import("path");
3861
4037
  const { buildSession } = await import("./wizard-session-wPJtNl4c.js");
3862
- const { readEnvironment } = await import("./environment-CxkKJEfj.js").then((n) => n.t);
4038
+ const { readEnvironment } = await import("./environment-C6j-a4Gz.js").then((n) => n.t);
3863
4039
  const { readApiKeyFromEnv } = await import("./env-api-key-MlzJYAvt.js").then((n) => n.t);
3864
- const { configureLogFileFromEnvironment, logToFile } = await import("./debug-CyadC-pR.js");
3865
- const { wizardAbort, WizardError } = await import("./wizard-abort-ChmzV0wB.js");
4040
+ const { configureLogFileFromEnvironment, logToFile } = await import("./debug-Bmq9KH4W.js");
4041
+ const { wizardAbort, WizardError } = await import("./wizard-abort-dmkJqxAb.js");
3866
4042
  configureLogFileFromEnvironment();
3867
4043
  const env = readEnvironment();
3868
4044
  const apiKey = options.apiKey ?? readApiKeyFromEnv() ?? void 0;
@@ -3913,7 +4089,7 @@ function runWizardCI(config, options) {
3913
4089
  })
3914
4090
  });
3915
4091
  }
3916
- const { runAgent } = await import("./agent-runner-djkxwCd9.js");
4092
+ const { runAgent } = await import("./agent-runner-HTfFCUrR.js");
3917
4093
  await runAgent(config, session);
3918
4094
  } catch (error) {
3919
4095
  const errorMessage = error instanceof Error ? error.message : String(error);
@@ -4780,7 +4956,7 @@ async function runDoctorCI(options) {
4780
4956
  getUI().intro("Welcome to the PostHog setup wizard");
4781
4957
  getUI().log.info("Running posthog-doctor in CI mode");
4782
4958
  try {
4783
- const { getOrAskForProjectData } = await import("./setup-utils-DGnWKE9t.js").then((n) => n.r);
4959
+ const { getOrAskForProjectData } = await import("./setup-utils-DmX3o2bT.js").then((n) => n.r);
4784
4960
  const { host, accessToken, projectId } = await getOrAskForProjectData({
4785
4961
  signup: false,
4786
4962
  ci: true,
@@ -4797,7 +4973,7 @@ async function runDoctorCI(options) {
4797
4973
  for (const issue of sorted) getUI().log.info(` • [${issue.severity}] ${getKindMeta(issue.kind).title}`);
4798
4974
  process.exit(1);
4799
4975
  } catch (error) {
4800
- const { ApiError } = await import("./api-CeVi1ZfZ.js").then((n) => n.n);
4976
+ const { ApiError } = await import("./api-D9CerM6x.js").then((n) => n.n);
4801
4977
  const message = error instanceof ApiError && error.statusCode === 401 ? "Your PostHog API key is invalid or expired." : error instanceof Error ? error.message : String(error);
4802
4978
  getUI().log.error(`Doctor failed: ${message}`);
4803
4979
  process.exit(1);
@@ -4893,7 +5069,7 @@ function runSlackConnect(argv) {
4893
5069
  (async () => {
4894
5070
  const debug = argv.debug;
4895
5071
  try {
4896
- const { startTUI } = await import("./start-tui-DetsuXHe.js");
5072
+ const { startTUI } = await import("./start-tui-B9dCp0hW.js");
4897
5073
  const { buildSession } = await import("./wizard-session-wPJtNl4c.js");
4898
5074
  const tui = startTUI(VERSION, Program.SlackConnect);
4899
5075
  tui.store.session = buildSession({ debug });
@@ -5272,6 +5448,6 @@ function resolveInstallDir() {
5272
5448
  }
5273
5449
  Wizard.use(basicIntegrationCommand).use(mcpCommand).use(cliCommand).use(auditCommand).use(doctorCommand).use(migrateCommand).use(revenueCommand).use(warehouseCommand).use(selfDrivingCommand).use(slackCommand).use(uploadSourcemapsCommand).use(skillCommand).init();
5274
5450
  //#endregion
5275
- export { getContentBlocks$2 as _, ConfirmButton as a, runWizard as c, getProgramConfig as d, DISPLAY_NAME as f, getDetectedWarehouseSources as g, fetchHealthIssues as h, useKeyboardHintsContext as i, PROGRAM_REGISTRY as l, getKindMeta as m, useKeyBindings as n, PromptLabel as o, SOURCE_MAPS_CONTEXT_KEYS as p, KeyboardHintsProvider as r, runWizardCI as s, PickerMenu as t, Program as u, POSTHOG_SDKS$1 as v, STRIPE_SDKS as y };
5451
+ export { getDetectedWarehouseSources as _, ConfirmButton as a, STRIPE_SDKS as b, runWizard as c, getProgramConfig as d, AUTOMATABLE_VARIANTS as f, fetchHealthIssues as g, getKindMeta as h, useKeyboardHintsContext as i, PROGRAM_REGISTRY as l, SOURCE_MAPS_CONTEXT_KEYS as m, useKeyBindings as n, PromptLabel as o, DISPLAY_NAME as p, KeyboardHintsProvider as r, runWizardCI as s, PickerMenu as t, Program as u, getContentBlocks$2 as v, POSTHOG_SDKS as y };
5276
5452
 
5277
5453
  //# sourceMappingURL=bin.js.map