@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,16 +1,16 @@
1
- import { L as Integration, N as HAIKU_MODEL, O as DETECTION_TIMEOUT_MS, _ as evaluateWizardReadiness, at as WIZARD_INTERACTION_EVENT_NAME, f as getUI, g as SIGNUP_WIZARD_READINESS_CONFIG, mt as getSkillsBaseUrl, s as logToFile, v as getBlockingServiceKeys, x as AGENTIC_DETECTION_TIMEOUT_MS } 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 { a as safeReadFile, i as readProjectFile, o as walkProjectFiles } from "./bounded-fs-DqsVmh4r.js";
5
- import { i as tryGetPackageJson, n as isUsingTypeScript } from "./setup-utils-Cz0wPLsQ.js";
6
- import { i as requestDeepLink } from "./provisioning-BYFSHSHY.js";
7
- import "./wizard-session-Bn6dO1gE.js";
8
- import { i as wizardAbort } from "./wizard-abort-CzwID162.js";
9
- import { n as runAgent, r as shouldDisableAsk, s as authenticate } from "./agent-runner-Ca-e2TOQ.js";
10
- import { C as WIZARD_TOOL_NAMES, i as runAgent$1, n as buildRunTags, p as AgentSignals, r as initializeAgent } from "./agent-interface-ORzGEFNM.js";
11
- import { h as EVENT_PLAN_FILE } from "./yara-hooks-BrisBebM.js";
12
- import { a as detectNodePackageManagers } from "./package-manager-DgqJdAQk.js";
13
- import { i as SPINNER_MESSAGE, t as FRAMEWORK_REGISTRY } from "./registry-DGJQ_8QI.js";
1
+ import { L as Integration, N as HAIKU_MODEL, O as DETECTION_TIMEOUT_MS, _ as evaluateWizardReadiness, at as WIZARD_INTERACTION_EVENT_NAME, f as getUI, g as SIGNUP_WIZARD_READINESS_CONFIG, mt as getSkillsBaseUrl, s as logToFile, v as getBlockingServiceKeys, x as AGENTIC_DETECTION_TIMEOUT_MS } 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 { a as safeReadFile, i as readProjectFile, o as walkProjectFiles } from "./bounded-fs-C6OjqZst.js";
5
+ import { i as tryGetPackageJson, n as isUsingTypeScript } from "./setup-utils-aWZEdfwh.js";
6
+ import { i as requestDeepLink } from "./provisioning-BHTl91OZ.js";
7
+ import "./wizard-session-DTyLMPsX.js";
8
+ import { i as wizardAbort } from "./wizard-abort-D9jiMkZA.js";
9
+ import { n as runAgent, r as shouldDisableAsk, s as authenticate } from "./agent-runner-DEeMqJxy.js";
10
+ import { D as WIZARD_TOOL_NAMES, H as isEnvFileName, U as parseEnvKeyNames, V as MAX_ENV_KEY_SET, W as toPromptSafeRelativePath, i as runAgent$1, n as buildRunTags, p as AgentSignals, r as initializeAgent } from "./agent-interface-D3MNaDp3.js";
11
+ import { h as EVENT_PLAN_FILE } from "./yara-hooks-BXDBIOBq.js";
12
+ import { a as detectNodePackageManagers } from "./package-manager-BQDHm7ER.js";
13
+ import { i as SPINNER_MESSAGE, t as FRAMEWORK_REGISTRY } from "./registry-CxNpCNAj.js";
14
14
  import * as semver from "semver";
15
15
  import { existsSync, statSync } from "fs";
16
16
  import { isAbsolute, join, resolve, sep } from "path";
@@ -688,6 +688,71 @@ const SOURCE_DETECTORS = [
688
688
  envKeys: [/^CONVEX_/, /^NEXT_PUBLIC_CONVEX_URL$/]
689
689
  }
690
690
  },
691
+ {
692
+ kind: "Firebase",
693
+ label: "Firebase",
694
+ mode: "in-cli",
695
+ signals: {
696
+ npm: ["firebase-admin", "firebase"],
697
+ python: ["firebase-admin"],
698
+ envKeys: [/^FIREBASE_/, /^NEXT_PUBLIC_FIREBASE_/]
699
+ }
700
+ },
701
+ {
702
+ kind: "Neon",
703
+ label: "Neon",
704
+ mode: "in-cli",
705
+ signals: {
706
+ npm: ["@neondatabase/serverless"],
707
+ envKeys: [/^NEON_/]
708
+ }
709
+ },
710
+ {
711
+ kind: "PlanetScaleMySQL",
712
+ label: "PlanetScale MySQL",
713
+ mode: "in-cli",
714
+ signals: {
715
+ npm: ["@planetscale/database"],
716
+ envKeys: [/^PLANETSCALE_/]
717
+ }
718
+ },
719
+ {
720
+ kind: "DynamoDB",
721
+ label: "DynamoDB",
722
+ mode: "in-cli",
723
+ signals: {
724
+ npm: ["@aws-sdk/client-dynamodb", "@aws-sdk/lib-dynamodb"],
725
+ python: ["pynamodb"]
726
+ }
727
+ },
728
+ {
729
+ kind: "Motherduck",
730
+ label: "MotherDuck",
731
+ mode: "in-cli",
732
+ signals: {
733
+ npm: ["@motherduck/wasm-client"],
734
+ envKeys: [/^MOTHERDUCK_/]
735
+ }
736
+ },
737
+ {
738
+ kind: "Databricks",
739
+ label: "Databricks",
740
+ mode: "in-cli",
741
+ signals: {
742
+ npm: ["@databricks/sql"],
743
+ python: ["databricks-sql-connector", "databricks-sdk"],
744
+ envKeys: [/^DATABRICKS_/]
745
+ }
746
+ },
747
+ {
748
+ kind: "Singlestore",
749
+ label: "SingleStore",
750
+ mode: "in-cli",
751
+ signals: {
752
+ python: ["singlestoredb"],
753
+ envKeys: [/^SINGLESTORE_/]
754
+ }
755
+ },
691
756
  {
692
757
  kind: "Stripe",
693
758
  label: "Stripe",
@@ -1369,6 +1434,55 @@ const SOURCE_DETECTORS = [
1369
1434
  envKeys: [/^OPENROUTER_/]
1370
1435
  }
1371
1436
  },
1437
+ {
1438
+ kind: "Browserbase",
1439
+ label: "Browserbase",
1440
+ mode: "in-cli",
1441
+ signals: {
1442
+ npm: ["@browserbasehq/sdk", "@browserbasehq/stagehand"],
1443
+ python: ["browserbase"],
1444
+ envKeys: [/^BROWSERBASE_/]
1445
+ }
1446
+ },
1447
+ {
1448
+ kind: "E2B",
1449
+ label: "E2B",
1450
+ mode: "in-cli",
1451
+ signals: {
1452
+ npm: ["e2b", "@e2b/code-interpreter"],
1453
+ python: ["e2b", "e2b-code-interpreter"],
1454
+ envKeys: [/^E2B_/]
1455
+ }
1456
+ },
1457
+ {
1458
+ kind: "WeightsAndBiases",
1459
+ label: "Weights & Biases",
1460
+ mode: "in-cli",
1461
+ signals: {
1462
+ python: ["wandb"],
1463
+ envKeys: [/^WANDB_/]
1464
+ }
1465
+ },
1466
+ {
1467
+ kind: "LlamaCloud",
1468
+ label: "LlamaCloud",
1469
+ mode: "in-cli",
1470
+ signals: {
1471
+ npm: ["llama-cloud-services"],
1472
+ python: ["llama-cloud-services"],
1473
+ envKeys: [/^LLAMA_CLOUD_/]
1474
+ }
1475
+ },
1476
+ {
1477
+ kind: "Zep",
1478
+ label: "Zep",
1479
+ mode: "in-cli",
1480
+ signals: {
1481
+ npm: ["@getzep/zep-cloud"],
1482
+ python: ["zep-cloud"],
1483
+ envKeys: [/^ZEP_API_KEY$/]
1484
+ }
1485
+ },
1372
1486
  {
1373
1487
  kind: "Paystack",
1374
1488
  label: "Paystack",
@@ -1453,6 +1567,84 @@ const SOURCE_DETECTORS = [
1453
1567
  envKeys: [/^INVOICED_/]
1454
1568
  }
1455
1569
  },
1570
+ {
1571
+ kind: "LemonSqueezy",
1572
+ label: "Lemon Squeezy",
1573
+ mode: "in-cli",
1574
+ signals: {
1575
+ npm: ["@lemonsqueezy/lemonsqueezy.js"],
1576
+ envKeys: [/^LEMONSQUEEZY_/, /^LEMON_SQUEEZY_/]
1577
+ }
1578
+ },
1579
+ {
1580
+ kind: "Razorpay",
1581
+ label: "Razorpay",
1582
+ mode: "in-cli",
1583
+ signals: {
1584
+ npm: ["razorpay"],
1585
+ python: ["razorpay"],
1586
+ ruby: ["razorpay"],
1587
+ envKeys: [/^RAZORPAY_/]
1588
+ }
1589
+ },
1590
+ {
1591
+ kind: "Adyen",
1592
+ label: "Adyen",
1593
+ mode: "in-cli",
1594
+ signals: {
1595
+ npm: ["@adyen/api-library"],
1596
+ python: ["adyen"],
1597
+ envKeys: [/^ADYEN_/]
1598
+ }
1599
+ },
1600
+ {
1601
+ kind: "ChartMogul",
1602
+ label: "ChartMogul",
1603
+ mode: "in-cli",
1604
+ signals: {
1605
+ npm: ["chartmogul-node"],
1606
+ python: ["chartmogul"],
1607
+ envKeys: [/^CHARTMOGUL_/]
1608
+ }
1609
+ },
1610
+ {
1611
+ kind: "Airwallex",
1612
+ label: "Airwallex",
1613
+ mode: "in-cli",
1614
+ signals: {
1615
+ npm: ["airwallex-payment-elements"],
1616
+ envKeys: [/^AIRWALLEX_/]
1617
+ }
1618
+ },
1619
+ {
1620
+ kind: "Flutterwave",
1621
+ label: "Flutterwave",
1622
+ mode: "in-cli",
1623
+ signals: {
1624
+ npm: ["flutterwave-node-v3"],
1625
+ python: ["flutterwave"],
1626
+ envKeys: [/^FLUTTERWAVE_/, /^FLW_(PUBLIC|SECRET)_KEY$/]
1627
+ }
1628
+ },
1629
+ {
1630
+ kind: "DodoPayments",
1631
+ label: "Dodo Payments",
1632
+ mode: "in-cli",
1633
+ signals: {
1634
+ npm: ["dodopayments"],
1635
+ python: ["dodopayments"],
1636
+ envKeys: [/^DODO_PAYMENTS_/]
1637
+ }
1638
+ },
1639
+ {
1640
+ kind: "Whop",
1641
+ label: "Whop",
1642
+ mode: "in-cli",
1643
+ signals: {
1644
+ npm: ["@whop/api", "@whop-apps/sdk"],
1645
+ envKeys: [/^WHOP_/]
1646
+ }
1647
+ },
1456
1648
  {
1457
1649
  kind: "SparkPost",
1458
1650
  label: "SparkPost",
@@ -1527,6 +1719,90 @@ const SOURCE_DETECTORS = [
1527
1719
  mode: "in-cli",
1528
1720
  signals: { envKeys: [/^LEMLIST_/] }
1529
1721
  },
1722
+ {
1723
+ kind: "Loops",
1724
+ label: "Loops",
1725
+ mode: "in-cli",
1726
+ signals: {
1727
+ npm: ["loops"],
1728
+ envKeys: [/^LOOPS_/]
1729
+ }
1730
+ },
1731
+ {
1732
+ kind: "Knock",
1733
+ label: "Knock",
1734
+ mode: "in-cli",
1735
+ signals: {
1736
+ npm: ["@knocklabs/node", "@knocklabs/client"],
1737
+ python: ["knockapi"],
1738
+ envKeys: [/^KNOCK_/]
1739
+ }
1740
+ },
1741
+ {
1742
+ kind: "AwsSes",
1743
+ label: "Amazon SES",
1744
+ mode: "in-cli",
1745
+ signals: {
1746
+ npm: ["@aws-sdk/client-ses", "@aws-sdk/client-sesv2"],
1747
+ envKeys: [/^AWS_SES_/]
1748
+ }
1749
+ },
1750
+ {
1751
+ kind: "Beehiiv",
1752
+ label: "beehiiv",
1753
+ mode: "in-cli",
1754
+ signals: { envKeys: [/^BEEHIIV_/] }
1755
+ },
1756
+ {
1757
+ kind: "Mailtrap",
1758
+ label: "Mailtrap",
1759
+ mode: "in-cli",
1760
+ signals: {
1761
+ npm: ["mailtrap"],
1762
+ python: ["mailtrap"],
1763
+ envKeys: [/^MAILTRAP_/]
1764
+ }
1765
+ },
1766
+ {
1767
+ kind: "Plunk",
1768
+ label: "Plunk",
1769
+ mode: "in-cli",
1770
+ signals: {
1771
+ npm: ["@plunk/node"],
1772
+ envKeys: [/^PLUNK_/]
1773
+ }
1774
+ },
1775
+ {
1776
+ kind: "Ortto",
1777
+ label: "Ortto",
1778
+ mode: "in-cli",
1779
+ signals: { envKeys: [/^ORTTO_/] }
1780
+ },
1781
+ {
1782
+ kind: "Postscript",
1783
+ label: "Postscript",
1784
+ mode: "in-cli",
1785
+ signals: { envKeys: [/^POSTSCRIPT_/] }
1786
+ },
1787
+ {
1788
+ kind: "Marketo",
1789
+ label: "Marketo",
1790
+ mode: "in-cli",
1791
+ signals: {
1792
+ python: ["marketorestpython"],
1793
+ envKeys: [/^MARKETO_/]
1794
+ }
1795
+ },
1796
+ {
1797
+ kind: "Lob",
1798
+ label: "Lob",
1799
+ mode: "in-cli",
1800
+ signals: {
1801
+ npm: ["lob"],
1802
+ python: ["lob"],
1803
+ envKeys: [/^LOB_API_KEY$/]
1804
+ }
1805
+ },
1530
1806
  {
1531
1807
  kind: "Segment",
1532
1808
  label: "Segment",
@@ -1692,6 +1968,36 @@ const SOURCE_DETECTORS = [
1692
1968
  mode: "in-cli",
1693
1969
  signals: { envKeys: [/^JUSTCALL_/] }
1694
1970
  },
1971
+ {
1972
+ kind: "Telnyx",
1973
+ label: "Telnyx",
1974
+ mode: "in-cli",
1975
+ signals: {
1976
+ npm: ["telnyx"],
1977
+ python: ["telnyx"],
1978
+ envKeys: [/^TELNYX_/]
1979
+ }
1980
+ },
1981
+ {
1982
+ kind: "Plivo",
1983
+ label: "Plivo",
1984
+ mode: "in-cli",
1985
+ signals: {
1986
+ npm: ["plivo"],
1987
+ python: ["plivo"],
1988
+ envKeys: [/^PLIVO_/]
1989
+ }
1990
+ },
1991
+ {
1992
+ kind: "Courier",
1993
+ label: "Courier",
1994
+ mode: "in-cli",
1995
+ signals: {
1996
+ npm: ["@trycourier/courier"],
1997
+ python: ["trycourier"],
1998
+ envKeys: [/^COURIER_AUTH_TOKEN$/]
1999
+ }
2000
+ },
1695
2001
  {
1696
2002
  kind: "WooCommerce",
1697
2003
  label: "WooCommerce",
@@ -1765,6 +2071,15 @@ const SOURCE_DETECTORS = [
1765
2071
  mode: "in-cli",
1766
2072
  signals: { envKeys: [/^PRINTIFY_/] }
1767
2073
  },
2074
+ {
2075
+ kind: "BigCommerce",
2076
+ label: "BigCommerce",
2077
+ mode: "in-cli",
2078
+ signals: {
2079
+ npm: ["node-bigcommerce"],
2080
+ envKeys: [/^BIGCOMMERCE_/]
2081
+ }
2082
+ },
1768
2083
  {
1769
2084
  kind: "Freshdesk",
1770
2085
  label: "Freshdesk",
@@ -1985,6 +2300,226 @@ const SOURCE_DETECTORS = [
1985
2300
  envKeys: [/^VERCEL_API_TOKEN$/]
1986
2301
  }
1987
2302
  },
2303
+ {
2304
+ kind: "Algolia",
2305
+ label: "Algolia",
2306
+ mode: "in-cli",
2307
+ signals: {
2308
+ npm: ["algoliasearch"],
2309
+ python: ["algoliasearch"],
2310
+ ruby: ["algolia"],
2311
+ envKeys: [/^ALGOLIA_/]
2312
+ }
2313
+ },
2314
+ {
2315
+ kind: "Inngest",
2316
+ label: "Inngest",
2317
+ mode: "in-cli",
2318
+ signals: {
2319
+ npm: ["inngest"],
2320
+ python: ["inngest"],
2321
+ envKeys: [/^INNGEST_/]
2322
+ }
2323
+ },
2324
+ {
2325
+ kind: "TriggerDev",
2326
+ label: "Trigger.dev",
2327
+ mode: "in-cli",
2328
+ signals: {
2329
+ npm: ["@trigger.dev/sdk"],
2330
+ envKeys: [/^TRIGGER_(SECRET_KEY|API_KEY|PROJECT_ID)$/]
2331
+ }
2332
+ },
2333
+ {
2334
+ kind: "Ably",
2335
+ label: "Ably",
2336
+ mode: "in-cli",
2337
+ signals: {
2338
+ npm: ["ably"],
2339
+ python: ["ably"],
2340
+ envKeys: [/^ABLY_/]
2341
+ }
2342
+ },
2343
+ {
2344
+ kind: "Netlify",
2345
+ label: "Netlify",
2346
+ mode: "in-cli",
2347
+ signals: {
2348
+ npm: ["@netlify/functions"],
2349
+ envKeys: [/^NETLIFY_/]
2350
+ }
2351
+ },
2352
+ {
2353
+ kind: "Railway",
2354
+ label: "Railway",
2355
+ mode: "in-cli",
2356
+ signals: { envKeys: [/^RAILWAY_/] }
2357
+ },
2358
+ {
2359
+ kind: "Render",
2360
+ label: "Render",
2361
+ mode: "in-cli",
2362
+ signals: { envKeys: [/^RENDER_API_KEY$/] }
2363
+ },
2364
+ {
2365
+ kind: "FlyIo",
2366
+ label: "Fly.io",
2367
+ mode: "in-cli",
2368
+ signals: { envKeys: [/^FLY_API_TOKEN$/, /^FLY_APP_NAME$/] }
2369
+ },
2370
+ {
2371
+ kind: "Heroku",
2372
+ label: "Heroku",
2373
+ mode: "in-cli",
2374
+ signals: { envKeys: [/^HEROKU_/] }
2375
+ },
2376
+ {
2377
+ kind: "DigitalOcean",
2378
+ label: "DigitalOcean",
2379
+ mode: "in-cli",
2380
+ signals: { envKeys: [/^DIGITALOCEAN_/] }
2381
+ },
2382
+ {
2383
+ kind: "Grafana",
2384
+ label: "Grafana",
2385
+ mode: "in-cli",
2386
+ signals: {
2387
+ python: ["grafana-client"],
2388
+ envKeys: [/^GRAFANA_/]
2389
+ }
2390
+ },
2391
+ {
2392
+ kind: "BetterStack",
2393
+ label: "Better Stack",
2394
+ mode: "in-cli",
2395
+ signals: {
2396
+ npm: ["@logtail/node", "@logtail/js"],
2397
+ envKeys: [
2398
+ /^BETTERSTACK_/,
2399
+ /^BETTER_STACK_/,
2400
+ /^LOGTAIL_/
2401
+ ]
2402
+ }
2403
+ },
2404
+ {
2405
+ kind: "Honeycomb",
2406
+ label: "Honeycomb",
2407
+ mode: "in-cli",
2408
+ signals: {
2409
+ npm: ["@honeycombio/opentelemetry-node", "honeycomb-beeline"],
2410
+ python: ["honeycomb-beeline", "libhoney"],
2411
+ envKeys: [/^HONEYCOMB_/]
2412
+ }
2413
+ },
2414
+ {
2415
+ kind: "Descope",
2416
+ label: "Descope",
2417
+ mode: "in-cli",
2418
+ signals: {
2419
+ npm: [
2420
+ "@descope/node-sdk",
2421
+ "@descope/nextjs-sdk",
2422
+ "@descope/react-sdk"
2423
+ ],
2424
+ python: ["descope"],
2425
+ envKeys: [/^DESCOPE_/]
2426
+ }
2427
+ },
2428
+ {
2429
+ kind: "FusionAuth",
2430
+ label: "FusionAuth",
2431
+ mode: "in-cli",
2432
+ signals: {
2433
+ npm: ["@fusionauth/typescript-client"],
2434
+ python: ["fusionauth-client"],
2435
+ envKeys: [/^FUSIONAUTH_/, /^FUSION_AUTH_/]
2436
+ }
2437
+ },
2438
+ {
2439
+ kind: "Hookdeck",
2440
+ label: "Hookdeck",
2441
+ mode: "in-cli",
2442
+ signals: {
2443
+ npm: ["@hookdeck/sdk"],
2444
+ envKeys: [/^HOOKDECK_/]
2445
+ }
2446
+ },
2447
+ {
2448
+ kind: "N8n",
2449
+ label: "n8n",
2450
+ mode: "in-cli",
2451
+ signals: {
2452
+ npm: ["n8n"],
2453
+ envKeys: [/^N8N_/]
2454
+ }
2455
+ },
2456
+ {
2457
+ kind: "Dbt",
2458
+ label: "dbt",
2459
+ mode: "in-cli",
2460
+ signals: {
2461
+ python: [
2462
+ "dbt-core",
2463
+ "dbt-snowflake",
2464
+ "dbt-postgres",
2465
+ "dbt-bigquery",
2466
+ "dbt-redshift",
2467
+ "dbt-databricks"
2468
+ ],
2469
+ envKeys: [/^DBT_/]
2470
+ }
2471
+ },
2472
+ {
2473
+ kind: "Fastly",
2474
+ label: "Fastly",
2475
+ mode: "in-cli",
2476
+ signals: {
2477
+ npm: ["fastly"],
2478
+ python: ["fastly"],
2479
+ envKeys: [/^FASTLY_/]
2480
+ }
2481
+ },
2482
+ {
2483
+ kind: "Bunny",
2484
+ label: "Bunny.net",
2485
+ mode: "in-cli",
2486
+ signals: { envKeys: [/^BUNNY_/] }
2487
+ },
2488
+ {
2489
+ kind: "Codecov",
2490
+ label: "Codecov",
2491
+ mode: "in-cli",
2492
+ signals: {
2493
+ npm: ["codecov"],
2494
+ envKeys: [/^CODECOV_/]
2495
+ }
2496
+ },
2497
+ {
2498
+ kind: "Sourcegraph",
2499
+ label: "Sourcegraph",
2500
+ mode: "in-cli",
2501
+ signals: { envKeys: [/^SOURCEGRAPH_/, /^SRC_ACCESS_TOKEN$/] }
2502
+ },
2503
+ {
2504
+ kind: "TemporalIO",
2505
+ label: "Temporal.io",
2506
+ mode: "in-cli",
2507
+ signals: {
2508
+ npm: ["@temporalio/client", "@temporalio/worker"],
2509
+ python: ["temporalio"],
2510
+ envKeys: [/^TEMPORAL_/]
2511
+ }
2512
+ },
2513
+ {
2514
+ kind: "Hatchet",
2515
+ label: "Hatchet",
2516
+ mode: "in-cli",
2517
+ signals: {
2518
+ npm: ["@hatchet-dev/typescript-sdk"],
2519
+ python: ["hatchet-sdk"],
2520
+ envKeys: [/^HATCHET_/]
2521
+ }
2522
+ },
1988
2523
  {
1989
2524
  kind: "Pipedrive",
1990
2525
  label: "Pipedrive",
@@ -2048,6 +2583,28 @@ const SOURCE_DETECTORS = [
2048
2583
  mode: "in-cli",
2049
2584
  signals: { envKeys: [/^VITALLY_/] }
2050
2585
  },
2586
+ {
2587
+ kind: "Docusign",
2588
+ label: "DocuSign",
2589
+ mode: "in-cli",
2590
+ signals: {
2591
+ npm: ["docusign-esign"],
2592
+ python: ["docusign-esign"],
2593
+ envKeys: [/^DOCUSIGN_/]
2594
+ }
2595
+ },
2596
+ {
2597
+ kind: "PandaDoc",
2598
+ label: "PandaDoc",
2599
+ mode: "in-cli",
2600
+ signals: { envKeys: [/^PANDADOC_/] }
2601
+ },
2602
+ {
2603
+ kind: "Gong",
2604
+ label: "Gong",
2605
+ mode: "in-cli",
2606
+ signals: { envKeys: [/^GONG_/] }
2607
+ },
2051
2608
  {
2052
2609
  kind: "Asana",
2053
2610
  label: "Asana",
@@ -2155,6 +2712,64 @@ const SOURCE_DETECTORS = [
2155
2712
  mode: "in-cli",
2156
2713
  signals: { envKeys: [/^PRODUCTBOARD_/] }
2157
2714
  },
2715
+ {
2716
+ kind: "GoogleSheets",
2717
+ label: "Google Sheets",
2718
+ mode: "in-cli",
2719
+ signals: {
2720
+ npm: ["google-spreadsheet"],
2721
+ python: ["gspread"],
2722
+ envKeys: [/^GOOGLE_SHEETS_/]
2723
+ }
2724
+ },
2725
+ {
2726
+ kind: "Formbricks",
2727
+ label: "Formbricks",
2728
+ mode: "in-cli",
2729
+ signals: {
2730
+ npm: ["@formbricks/js"],
2731
+ envKeys: [/^FORMBRICKS_/]
2732
+ }
2733
+ },
2734
+ {
2735
+ kind: "Tally",
2736
+ label: "Tally",
2737
+ mode: "in-cli",
2738
+ signals: { envKeys: [/^TALLY_API_KEY$/] }
2739
+ },
2740
+ {
2741
+ kind: "Jotform",
2742
+ label: "Jotform",
2743
+ mode: "in-cli",
2744
+ signals: {
2745
+ python: ["jotform"],
2746
+ envKeys: [/^JOTFORM_/]
2747
+ }
2748
+ },
2749
+ {
2750
+ kind: "GitBook",
2751
+ label: "GitBook",
2752
+ mode: "in-cli",
2753
+ signals: {
2754
+ npm: ["@gitbook/api"],
2755
+ envKeys: [/^GITBOOK_/]
2756
+ }
2757
+ },
2758
+ {
2759
+ kind: "Wordpress",
2760
+ label: "WordPress",
2761
+ mode: "in-cli",
2762
+ signals: {
2763
+ npm: ["wpapi"],
2764
+ envKeys: [/^WORDPRESS_/]
2765
+ }
2766
+ },
2767
+ {
2768
+ kind: "Clockify",
2769
+ label: "Clockify",
2770
+ mode: "in-cli",
2771
+ signals: { envKeys: [/^CLOCKIFY_/] }
2772
+ },
2158
2773
  {
2159
2774
  kind: "Calendly",
2160
2775
  label: "Calendly",
@@ -2298,6 +2913,16 @@ const SOURCE_DETECTORS = [
2298
2913
  npm: ["react-native-appsflyer"],
2299
2914
  envKeys: [/^APPSFLYER_/]
2300
2915
  }
2916
+ },
2917
+ {
2918
+ kind: "Dub",
2919
+ label: "Dub",
2920
+ mode: "in-cli",
2921
+ signals: {
2922
+ npm: ["dub"],
2923
+ python: ["dub"],
2924
+ envKeys: [/^DUB_API_KEY$/]
2925
+ }
2301
2926
  }
2302
2927
  ];
2303
2928
  //#endregion
@@ -2313,7 +2938,7 @@ const SOURCE_DETECTORS = [
2313
2938
  * Note we only read `.env` KEY NAMES, never values.
2314
2939
  */
2315
2940
  const MAX_DEPTH = 3;
2316
- const MAX_SIGNAL_SET = 5e3;
2941
+ const MAX_SIGNAL_SET = MAX_ENV_KEY_SET;
2317
2942
  function addCapped(set, value) {
2318
2943
  if (set.size < MAX_SIGNAL_SET) set.add(value);
2319
2944
  }
@@ -2346,7 +2971,7 @@ function matchDetector(detector, signals) {
2346
2971
  const rubyHit = ruby?.find((gem) => signals.ruby.has(gem));
2347
2972
  if (rubyHit) return `found \`${rubyHit}\` in Gemfile`;
2348
2973
  if (envKeys) {
2349
- for (const key of signals.envKeys) if (envKeys.some((re) => re.test(key))) return `found \`${key}\` in .env`;
2974
+ for (const [key, file] of signals.envKeys) if (envKeys.some((re) => re.test(key))) return `found \`${key}\` in \`${file}\``;
2350
2975
  }
2351
2976
  return null;
2352
2977
  }
@@ -2355,9 +2980,9 @@ function collectSignals(installDir) {
2355
2980
  npm: /* @__PURE__ */ new Set(),
2356
2981
  python: /* @__PURE__ */ new Set(),
2357
2982
  ruby: /* @__PURE__ */ new Set(),
2358
- envKeys: /* @__PURE__ */ new Set()
2983
+ envKeys: /* @__PURE__ */ new Map()
2359
2984
  };
2360
- walkProjectFiles(installDir, (name, fullPath) => ingestFile(name, fullPath, signals), MAX_DEPTH);
2985
+ walkProjectFiles(installDir, (name, fullPath) => ingestFile(installDir, name, fullPath, signals), MAX_DEPTH);
2361
2986
  return signals;
2362
2987
  }
2363
2988
  /**
@@ -2366,12 +2991,12 @@ function collectSignals(installDir) {
2366
2991
  * avoids slurping every file in the tree (lockfiles, binaries, assets) into
2367
2992
  * memory just to discard it.
2368
2993
  */
2369
- function ingestFile(name, fullPath, signals) {
2994
+ function ingestFile(installDir, name, fullPath, signals) {
2370
2995
  const ingest = ingestorFor(name);
2371
2996
  if (!ingest) return;
2372
2997
  const content = safeReadFile(fullPath);
2373
2998
  if (content === null) return;
2374
- ingest(content, signals);
2999
+ ingest(content, signals, toPromptSafeRelativePath(installDir, fullPath));
2375
3000
  }
2376
3001
  /** Pick the parser for a manifest filename, or null if it's not one we read. */
2377
3002
  function ingestorFor(name) {
@@ -2380,9 +3005,21 @@ function ingestorFor(name) {
2380
3005
  if (name === "pyproject.toml") return (c, s) => parsePyprojectToml(c).forEach((d) => addCapped(s.python, d));
2381
3006
  if (name === "Pipfile") return (c, s) => parsePipfile(c).forEach((d) => addCapped(s.python, d));
2382
3007
  if (name === "Gemfile") return (c, s) => parseGemfile(c).forEach((g) => addCapped(s.ruby, g));
2383
- if (name.startsWith(".env")) return (c, s) => parseEnvKeys(c).forEach((k) => addCapped(s.envKeys, k));
3008
+ if (isEnvFileName(name)) return (c, s, relativePath) => addEnvKeys(c, s, relativePath);
2384
3009
  return null;
2385
3010
  }
3011
+ /**
3012
+ * Record each key NAME against the file that defined it. The first file wins,
3013
+ * so the reported signal stays stable when several `.env*` files repeat a key.
3014
+ * Values are never read.
3015
+ */
3016
+ function addEnvKeys(content, signals, relativePath) {
3017
+ for (const key of parseEnvKeyNames(content)) {
3018
+ if (signals.envKeys.has(key)) continue;
3019
+ if (signals.envKeys.size >= MAX_SIGNAL_SET) return;
3020
+ signals.envKeys.set(key, relativePath);
3021
+ }
3022
+ }
2386
3023
  function addNpmDeps(content, signals) {
2387
3024
  try {
2388
3025
  const pkg = JSON.parse(content);
@@ -2400,17 +3037,6 @@ function parseGemfile(content) {
2400
3037
  for (const match of content.matchAll(/^\s*gem\s+['"]([^'"]+)['"]/gm)) gems.push(match[1]);
2401
3038
  return gems;
2402
3039
  }
2403
- /** Extract KEY NAMES from a dotenv file. Values are intentionally discarded. */
2404
- function parseEnvKeys(content) {
2405
- const keys = [];
2406
- for (const line of content.split("\n")) {
2407
- const trimmed = line.trim();
2408
- if (!trimmed || trimmed.startsWith("#")) continue;
2409
- const match = trimmed.match(/^(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)\s*=/);
2410
- if (match) keys.push(match[1]);
2411
- }
2412
- return keys;
2413
- }
2414
3040
  //#endregion
2415
3041
  //#region src/lib/programs/warehouse-source/detect.ts
2416
3042
  /**
@@ -3743,7 +4369,7 @@ const warehouseSeedTasks = (sess) => {
3743
4369
  })) },
3744
4370
  notice: {
3745
4371
  title: "Connect your data sources",
3746
- body: ["We detected some warehouse sources we can connect to enrich your PostHog data. This runs at the end, once your code changes are done — we’ll prompt you then for the credentials, so you can leave the setup to run until it asks.", "You can select [Skip] if you'd like to do this later in PostHog."],
4372
+ body: ["We detected some warehouse sources we can connect to enrich your PostHog data. Answer now, and we connect them at the end of the run, after your code changes. We will ask you for the credentials at that point, and beep when we do.", "You can select [Skip] if you'd like to do this later in PostHog."],
3747
4373
  items: sources.map((s) => s.label),
3748
4374
  docsLabel: "Learn more about warehouse sources",
3749
4375
  docsUrl: WAREHOUSE_SOURCES_DOCS_URL,
@@ -3852,7 +4478,7 @@ STEP 3: Load the installed skill's SKILL.md file to understand what references a
3852
4478
  STEP 4: Follow the skill's program files in sequence. Look for numbered program files in the references (e.g., files with patterns like "1-", "2-", "3-"). Start with the first one and proceed through each step until completion. Each program file will tell you what to do and which file comes next. Never directly write PostHog tokens directly to code files; always use environment variables.
3853
4479
 
3854
4480
  STEP 5: Set up environment variables for PostHog using the wizard-tools MCP server (this runs locally — secret values never leave the machine):
3855
- - Use check_env_keys to see which keys already exist in the project's .env file (e.g. .env.local or .env).
4481
+ - Use check_env_keys to see which keys the project already sets, and where. Omit filePath and it scans every .env file in the project, so you don't have to guess between .env, .env.local and a nested one. It answers { status, foundIn } per key: "present" means a real env file sets the key, while a key found only in a committed template (.env.example and friends) reads as "missing" — a template documents a key rather than setting it, and is never a file to write credentials into.
3856
4482
  - Use set_env_values to create or update the PostHog public token and host, using the appropriate environment variable naming convention for ${config.metadata.name}, which you'll find in example code. The tool will also ensure .gitignore coverage. Don't assume the presence of keys means the value is up to date. Write the correct value each time.
3857
4483
  - Reference these environment variables in the code files you create instead of hardcoding the public token and host.
3858
4484
 
@@ -3864,7 +4490,7 @@ ${warehouseReportInstruction(session)}
3864
4490
  postRun: async (sess, credentials) => {
3865
4491
  const envVars = config.environment.getEnvVars(credentials.projectApiKey, credentials.host.apiHost);
3866
4492
  if (config.environment.uploadToHosting) {
3867
- const { uploadEnvironmentVariablesStep } = await import("./steps-CZI0B24_.js");
4493
+ const { uploadEnvironmentVariablesStep } = await import("./steps-5HAqjUvn.js");
3868
4494
  const uploadedEnvVars = await uploadEnvironmentVariablesStep(envVars, {
3869
4495
  integration: config.metadata.integration,
3870
4496
  session: sess
@@ -3920,4 +4546,4 @@ const integrationRunStep = {
3920
4546
  //#endregion
3921
4547
  export { scopeInstallDirToProject as C, detectFramework as D, gatherFrameworkContext as E, detectIntegrationProjects as S, resolveProjectDir as T, HEALTH_CHECK_STEP as _, LINE_CHART_BLOCK as a, getDetectedWarehouseSources as b, TextBlock as c, isClearBlock as d, isLinesBlock as f, detectPostHogIntegration as g, Icons as h, FUNNEL_BLOCK as i, computeVisibleRange as l, Colors as m, integrationRunStep as n, PRODUCT_SUITE_BLOCK as o, isObjectBlock as p, posthogIntegrationConfig as r, StatusPeekTrigger as s, SETUP_REPORT_FILE as t, wordWrap as u, WAREHOUSE_ABORT_CASES as v, detectProjectsWithAgent as w, detectWarehouseSources as x, detectWarehousePrerequisites as y };
3922
4548
 
3923
- //# sourceMappingURL=posthog-integration-CoPvN6YZ.js.map
4549
+ //# sourceMappingURL=posthog-integration-LxEBGkoe.js.map