@posthog/wizard 2.65.0 → 2.67.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.
- package/dist/{add-mcp-server-to-clients-ArtlMX9-.js → add-mcp-server-to-clients-DHTRbyJX.js} +228 -64
- package/dist/add-mcp-server-to-clients-DHTRbyJX.js.map +1 -0
- package/dist/{agent-interface-ORzGEFNM.js → agent-interface-tM_b0l__.js} +458 -76
- package/dist/agent-interface-tM_b0l__.js.map +1 -0
- package/dist/{agent-prompt-loader-D3w6sc34.js → agent-prompt-loader-BSMh5bfD.js} +5 -5
- package/dist/{agent-prompt-loader-D3w6sc34.js.map → agent-prompt-loader-BSMh5bfD.js.map} +1 -1
- package/dist/{agent-runner-Ca-e2TOQ.js → agent-runner-DD65OMkB.js} +153 -71
- package/dist/agent-runner-DD65OMkB.js.map +1 -0
- package/dist/analytics-B4Igh5nv.js +2 -0
- package/dist/{analytics-zBrIVjMV.js → analytics-CtIYzkK4.js} +2 -2
- package/dist/{analytics-zBrIVjMV.js.map → analytics-CtIYzkK4.js.map} +1 -1
- package/dist/{api-Wgb7AhrP.js → api-BJft9v6K.js} +3 -3
- package/dist/{api-Wgb7AhrP.js.map → api-BJft9v6K.js.map} +1 -1
- package/dist/bin.js +245 -102
- package/dist/bin.js.map +1 -1
- package/dist/{bounded-fs-DqsVmh4r.js → bounded-fs-BWqoFQvQ.js} +3 -3
- package/dist/{bounded-fs-DqsVmh4r.js.map → bounded-fs-BWqoFQvQ.js.map} +1 -1
- package/dist/{ci-install-D1QqmJIc.js → ci-install-BXGnVI7T.js} +18 -9
- package/dist/ci-install-BXGnVI7T.js.map +1 -0
- package/dist/{debug-Cm1hvkVy.js → debug-BsHD83Vy.js} +4 -4
- package/dist/debug-BsHD83Vy.js.map +1 -0
- package/dist/{debug-CtQ13sCW.js → debug-mO3yg4Z7.js} +1 -1
- package/dist/{defaults-BHhXrX9F.js → defaults-DI642M3n.js} +1 -1
- package/dist/{defaults-BHhXrX9F.js.map → defaults-DI642M3n.js.map} +1 -1
- package/dist/{env-api-key-CdI2XZIz.js → env-api-key-DS0ghlcO.js} +2 -2
- package/dist/{env-api-key-CdI2XZIz.js.map → env-api-key-DS0ghlcO.js.map} +1 -1
- package/dist/{environment-BhFvfkQg.js → environment-C7CKGIOE.js} +4 -4
- package/dist/{environment-BhFvfkQg.js.map → environment-C7CKGIOE.js.map} +1 -1
- package/dist/errors-BHervYGs.js +156 -0
- package/dist/errors-BHervYGs.js.map +1 -0
- package/dist/{file-watcher-Dciz09Rr.js → file-watcher-D1bdo9mq.js} +2 -2
- package/dist/{file-watcher-Dciz09Rr.js.map → file-watcher-D1bdo9mq.js.map} +1 -1
- package/dist/{headless-ui-B4FnKm11.js → headless-ui-6QuByWZ_.js} +2 -2
- package/dist/{headless-ui-B4FnKm11.js.map → headless-ui-6QuByWZ_.js.map} +1 -1
- package/dist/{interactive-DxHFVYr2.js → interactive-DUpW84WU.js} +2 -2
- package/dist/{interactive-DxHFVYr2.js.map → interactive-DUpW84WU.js.map} +1 -1
- package/dist/{local-dev-BN6NKQ0B.js → local-dev-DPZiIPCK.js} +1 -1
- package/dist/{local-dev-BN6NKQ0B.js.map → local-dev-DPZiIPCK.js.map} +1 -1
- package/dist/{mcp-t0UxAPur.js → mcp-CHo9h-WV.js} +2 -2
- package/dist/{mcp-t0UxAPur.js.map → mcp-CHo9h-WV.js.map} +1 -1
- package/dist/mcp-install-smoke-test.ts +477 -0
- package/dist/{mcp-prompt-streaming-ro98iUDc.js → mcp-prompt-streaming-CHRPxxd0.js} +4 -4
- package/dist/{mcp-prompt-streaming-ro98iUDc.js.map → mcp-prompt-streaming-CHRPxxd0.js.map} +1 -1
- package/dist/{non-interactive-BA2L_jDT.js → non-interactive-Cr-chffe.js} +7 -2
- package/dist/non-interactive-Cr-chffe.js.map +1 -0
- package/dist/{orchestrator-tools-vZmNsHy9.js → orchestrator-tools-Tx18_TMb.js} +3 -3
- package/dist/{orchestrator-tools-vZmNsHy9.js.map → orchestrator-tools-Tx18_TMb.js.map} +1 -1
- package/dist/{package-json-D0DCWpe5.js → package-json-GEU2VZlS.js} +1 -1
- package/dist/{package-json-D0DCWpe5.js.map → package-json-GEU2VZlS.js.map} +1 -1
- package/dist/{package-manager-DgqJdAQk.js → package-manager-CLfc31yf.js} +4 -4
- package/dist/package-manager-CLfc31yf.js.map +1 -0
- package/dist/{pi-nwrCARRp.js → pi-RlnYUHdb.js} +12 -11
- package/dist/{pi-nwrCARRp.js.map → pi-RlnYUHdb.js.map} +1 -1
- package/dist/{playground-xkEke_h0.js → playground-DQ633rje.js} +7 -7
- package/dist/{playground-xkEke_h0.js.map → playground-DQ633rje.js.map} +1 -1
- package/dist/{posthog-9To56cSd.js → posthog-DSn9bIZc.js} +2 -2
- package/dist/{posthog-9To56cSd.js.map → posthog-DSn9bIZc.js.map} +1 -1
- package/dist/{posthog-integration-CoPvN6YZ.js → posthog-integration-DFfBRGOC.js} +667 -37
- package/dist/posthog-integration-DFfBRGOC.js.map +1 -0
- package/dist/{provisioning-BYFSHSHY.js → provisioning-Cvy_vQHV.js} +3 -3
- package/dist/{provisioning-BYFSHSHY.js.map → provisioning-Cvy_vQHV.js.map} +1 -1
- package/dist/{queue-tools-BREbgGSC.js → queue-tools-BC9HxOV6.js} +33 -7
- package/dist/queue-tools-BC9HxOV6.js.map +1 -0
- package/dist/{registry-DGJQ_8QI.js → registry-DCAElOyj.js} +81 -81
- package/dist/{registry-DGJQ_8QI.js.map → registry-DCAElOyj.js.map} +1 -1
- package/dist/{security-wc-naGq5.js → security-CuSX3XVo.js} +21 -9
- package/dist/security-CuSX3XVo.js.map +1 -0
- package/dist/{setup-utils-Cz0wPLsQ.js → setup-utils-D1tv0v_R.js} +13 -13
- package/dist/{setup-utils-Cz0wPLsQ.js.map → setup-utils-D1tv0v_R.js.map} +1 -1
- package/dist/{start-tui-DDW9uVnD.js → start-tui-B5YfmqNr.js} +57 -25
- package/dist/start-tui-B5YfmqNr.js.map +1 -0
- package/dist/{steps-CZI0B24_.js → steps-CLaSMwfR.js} +7 -7
- package/dist/{steps-CZI0B24_.js.map → steps-CLaSMwfR.js.map} +1 -1
- package/dist/{store-xMkU8xAa.js → store-DzEgsAPN.js} +7 -6
- package/dist/{store-xMkU8xAa.js.map → store-DzEgsAPN.js.map} +1 -1
- package/dist/{subagent-BztacyoV.js → subagent-BUV6aD7p.js} +2 -2
- package/dist/{subagent-BztacyoV.js.map → subagent-BUV6aD7p.js.map} +1 -1
- package/dist/{task-CJ7x3McC.js → task-GnWId75q.js} +13 -12
- package/dist/{task-CJ7x3McC.js.map → task-GnWId75q.js.map} +1 -1
- package/dist/{task-stream-BK7JQ27G.js → task-stream-DSzvwJrD.js} +16 -9
- package/dist/task-stream-DSzvwJrD.js.map +1 -0
- package/dist/{tasks-FGzp_zBd.js → tasks-BO0W8ocx.js} +2 -2
- package/dist/{tasks-FGzp_zBd.js.map → tasks-BO0W8ocx.js.map} +1 -1
- package/dist/{telemetry-By56gAtF.js → telemetry-Vi9dWddJ.js} +3 -3
- package/dist/{telemetry-By56gAtF.js.map → telemetry-Vi9dWddJ.js.map} +1 -1
- package/dist/{terminal-C_rmkaku.js → terminal-B5wZK7aS.js} +73 -80
- package/dist/terminal-B5wZK7aS.js.map +1 -0
- package/dist/{tools-BpCJgMez.js → tools-C9cNluqc.js} +54 -47
- package/dist/tools-C9cNluqc.js.map +1 -0
- package/dist/{wizard-abort-BlDla_Jd.js → wizard-abort-BsNbguJt.js} +1 -1
- package/dist/wizard-abort-CGv3lVxw.js +71 -0
- package/dist/wizard-abort-CGv3lVxw.js.map +1 -0
- package/dist/{wizard-session-Bn6dO1gE.js → wizard-session-Cex1BiXs.js} +3 -2
- package/dist/wizard-session-Cex1BiXs.js.map +1 -0
- package/dist/{wizard-session-UxA_A0cA.js → wizard-session-DHbUcjI7.js} +1 -1
- package/dist/yara-hooks-C3Vm2Gow.js +2 -0
- package/dist/{yara-hooks-BrisBebM.js → yara-hooks-DZIVzhA6.js} +57 -8
- package/dist/yara-hooks-DZIVzhA6.js.map +1 -0
- package/package.json +2 -1
- package/dist/add-mcp-server-to-clients-ArtlMX9-.js.map +0 -1
- package/dist/agent-interface-ORzGEFNM.js.map +0 -1
- package/dist/agent-runner-Ca-e2TOQ.js.map +0 -1
- package/dist/analytics-C4j6grao.js +0 -2
- package/dist/ci-install-D1QqmJIc.js.map +0 -1
- package/dist/debug-Cm1hvkVy.js.map +0 -1
- package/dist/non-interactive-BA2L_jDT.js.map +0 -1
- package/dist/package-manager-DgqJdAQk.js.map +0 -1
- package/dist/posthog-integration-CoPvN6YZ.js.map +0 -1
- package/dist/queue-tools-BREbgGSC.js.map +0 -1
- package/dist/security-wc-naGq5.js.map +0 -1
- package/dist/start-tui-DDW9uVnD.js.map +0 -1
- package/dist/task-stream-BK7JQ27G.js.map +0 -1
- package/dist/terminal-C_rmkaku.js.map +0 -1
- package/dist/tools-BpCJgMez.js.map +0 -1
- package/dist/wizard-abort-CzwID162.js +0 -49
- package/dist/wizard-abort-CzwID162.js.map +0 -1
- package/dist/wizard-session-Bn6dO1gE.js.map +0 -1
- package/dist/yara-hooks-BrisBebM.js.map +0 -1
- package/dist/yara-hooks-D2B7Fd9G.js +0 -2
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { i as
|
|
6
|
-
import { i as
|
|
7
|
-
import "./
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
1
|
+
import { a as AgentSignals, l as ErrorCodes } from "./errors-BHervYGs.js";
|
|
2
|
+
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-BsHD83Vy.js";
|
|
3
|
+
import { n as analytics } from "./analytics-CtIYzkK4.js";
|
|
4
|
+
import { i as withUtm, n as openTrackedLink } from "./telemetry-Vi9dWddJ.js";
|
|
5
|
+
import { a as safeReadFile, i as readProjectFile, o as walkProjectFiles } from "./bounded-fs-BWqoFQvQ.js";
|
|
6
|
+
import { i as tryGetPackageJson, n as isUsingTypeScript } from "./setup-utils-D1tv0v_R.js";
|
|
7
|
+
import { i as requestDeepLink } from "./provisioning-Cvy_vQHV.js";
|
|
8
|
+
import "./wizard-session-Cex1BiXs.js";
|
|
9
|
+
import { i as wizardAbort } from "./wizard-abort-CGv3lVxw.js";
|
|
10
|
+
import { n as runAgent, r as shouldDisableAsk, s as authenticate } from "./agent-runner-DD65OMkB.js";
|
|
11
|
+
import { B as isEnvFileName, H as toPromptSafeRelativePath, T as WIZARD_TOOL_NAMES, V as parseEnvKeyNames, i as runAgent$1, n as buildRunTags, r as initializeAgent, z as MAX_ENV_KEY_SET } from "./agent-interface-tM_b0l__.js";
|
|
12
|
+
import { h as EVENT_PLAN_FILE } from "./yara-hooks-DZIVzhA6.js";
|
|
13
|
+
import { a as detectNodePackageManagers } from "./package-manager-CLfc31yf.js";
|
|
14
|
+
import { i as SPINNER_MESSAGE, t as FRAMEWORK_REGISTRY } from "./registry-DCAElOyj.js";
|
|
14
15
|
import * as semver from "semver";
|
|
15
16
|
import { existsSync, statSync } from "fs";
|
|
16
17
|
import { isAbsolute, join, resolve, sep } from "path";
|
|
@@ -688,6 +689,71 @@ const SOURCE_DETECTORS = [
|
|
|
688
689
|
envKeys: [/^CONVEX_/, /^NEXT_PUBLIC_CONVEX_URL$/]
|
|
689
690
|
}
|
|
690
691
|
},
|
|
692
|
+
{
|
|
693
|
+
kind: "Firebase",
|
|
694
|
+
label: "Firebase",
|
|
695
|
+
mode: "in-cli",
|
|
696
|
+
signals: {
|
|
697
|
+
npm: ["firebase-admin", "firebase"],
|
|
698
|
+
python: ["firebase-admin"],
|
|
699
|
+
envKeys: [/^FIREBASE_/, /^NEXT_PUBLIC_FIREBASE_/]
|
|
700
|
+
}
|
|
701
|
+
},
|
|
702
|
+
{
|
|
703
|
+
kind: "Neon",
|
|
704
|
+
label: "Neon",
|
|
705
|
+
mode: "in-cli",
|
|
706
|
+
signals: {
|
|
707
|
+
npm: ["@neondatabase/serverless"],
|
|
708
|
+
envKeys: [/^NEON_/]
|
|
709
|
+
}
|
|
710
|
+
},
|
|
711
|
+
{
|
|
712
|
+
kind: "PlanetScaleMySQL",
|
|
713
|
+
label: "PlanetScale MySQL",
|
|
714
|
+
mode: "in-cli",
|
|
715
|
+
signals: {
|
|
716
|
+
npm: ["@planetscale/database"],
|
|
717
|
+
envKeys: [/^PLANETSCALE_/]
|
|
718
|
+
}
|
|
719
|
+
},
|
|
720
|
+
{
|
|
721
|
+
kind: "DynamoDB",
|
|
722
|
+
label: "DynamoDB",
|
|
723
|
+
mode: "in-cli",
|
|
724
|
+
signals: {
|
|
725
|
+
npm: ["@aws-sdk/client-dynamodb", "@aws-sdk/lib-dynamodb"],
|
|
726
|
+
python: ["pynamodb"]
|
|
727
|
+
}
|
|
728
|
+
},
|
|
729
|
+
{
|
|
730
|
+
kind: "Motherduck",
|
|
731
|
+
label: "MotherDuck",
|
|
732
|
+
mode: "in-cli",
|
|
733
|
+
signals: {
|
|
734
|
+
npm: ["@motherduck/wasm-client"],
|
|
735
|
+
envKeys: [/^MOTHERDUCK_/]
|
|
736
|
+
}
|
|
737
|
+
},
|
|
738
|
+
{
|
|
739
|
+
kind: "Databricks",
|
|
740
|
+
label: "Databricks",
|
|
741
|
+
mode: "in-cli",
|
|
742
|
+
signals: {
|
|
743
|
+
npm: ["@databricks/sql"],
|
|
744
|
+
python: ["databricks-sql-connector", "databricks-sdk"],
|
|
745
|
+
envKeys: [/^DATABRICKS_/]
|
|
746
|
+
}
|
|
747
|
+
},
|
|
748
|
+
{
|
|
749
|
+
kind: "Singlestore",
|
|
750
|
+
label: "SingleStore",
|
|
751
|
+
mode: "in-cli",
|
|
752
|
+
signals: {
|
|
753
|
+
python: ["singlestoredb"],
|
|
754
|
+
envKeys: [/^SINGLESTORE_/]
|
|
755
|
+
}
|
|
756
|
+
},
|
|
691
757
|
{
|
|
692
758
|
kind: "Stripe",
|
|
693
759
|
label: "Stripe",
|
|
@@ -1369,6 +1435,55 @@ const SOURCE_DETECTORS = [
|
|
|
1369
1435
|
envKeys: [/^OPENROUTER_/]
|
|
1370
1436
|
}
|
|
1371
1437
|
},
|
|
1438
|
+
{
|
|
1439
|
+
kind: "Browserbase",
|
|
1440
|
+
label: "Browserbase",
|
|
1441
|
+
mode: "in-cli",
|
|
1442
|
+
signals: {
|
|
1443
|
+
npm: ["@browserbasehq/sdk", "@browserbasehq/stagehand"],
|
|
1444
|
+
python: ["browserbase"],
|
|
1445
|
+
envKeys: [/^BROWSERBASE_/]
|
|
1446
|
+
}
|
|
1447
|
+
},
|
|
1448
|
+
{
|
|
1449
|
+
kind: "E2B",
|
|
1450
|
+
label: "E2B",
|
|
1451
|
+
mode: "in-cli",
|
|
1452
|
+
signals: {
|
|
1453
|
+
npm: ["e2b", "@e2b/code-interpreter"],
|
|
1454
|
+
python: ["e2b", "e2b-code-interpreter"],
|
|
1455
|
+
envKeys: [/^E2B_/]
|
|
1456
|
+
}
|
|
1457
|
+
},
|
|
1458
|
+
{
|
|
1459
|
+
kind: "WeightsAndBiases",
|
|
1460
|
+
label: "Weights & Biases",
|
|
1461
|
+
mode: "in-cli",
|
|
1462
|
+
signals: {
|
|
1463
|
+
python: ["wandb"],
|
|
1464
|
+
envKeys: [/^WANDB_/]
|
|
1465
|
+
}
|
|
1466
|
+
},
|
|
1467
|
+
{
|
|
1468
|
+
kind: "LlamaCloud",
|
|
1469
|
+
label: "LlamaCloud",
|
|
1470
|
+
mode: "in-cli",
|
|
1471
|
+
signals: {
|
|
1472
|
+
npm: ["llama-cloud-services"],
|
|
1473
|
+
python: ["llama-cloud-services"],
|
|
1474
|
+
envKeys: [/^LLAMA_CLOUD_/]
|
|
1475
|
+
}
|
|
1476
|
+
},
|
|
1477
|
+
{
|
|
1478
|
+
kind: "Zep",
|
|
1479
|
+
label: "Zep",
|
|
1480
|
+
mode: "in-cli",
|
|
1481
|
+
signals: {
|
|
1482
|
+
npm: ["@getzep/zep-cloud"],
|
|
1483
|
+
python: ["zep-cloud"],
|
|
1484
|
+
envKeys: [/^ZEP_API_KEY$/]
|
|
1485
|
+
}
|
|
1486
|
+
},
|
|
1372
1487
|
{
|
|
1373
1488
|
kind: "Paystack",
|
|
1374
1489
|
label: "Paystack",
|
|
@@ -1453,6 +1568,84 @@ const SOURCE_DETECTORS = [
|
|
|
1453
1568
|
envKeys: [/^INVOICED_/]
|
|
1454
1569
|
}
|
|
1455
1570
|
},
|
|
1571
|
+
{
|
|
1572
|
+
kind: "LemonSqueezy",
|
|
1573
|
+
label: "Lemon Squeezy",
|
|
1574
|
+
mode: "in-cli",
|
|
1575
|
+
signals: {
|
|
1576
|
+
npm: ["@lemonsqueezy/lemonsqueezy.js"],
|
|
1577
|
+
envKeys: [/^LEMONSQUEEZY_/, /^LEMON_SQUEEZY_/]
|
|
1578
|
+
}
|
|
1579
|
+
},
|
|
1580
|
+
{
|
|
1581
|
+
kind: "Razorpay",
|
|
1582
|
+
label: "Razorpay",
|
|
1583
|
+
mode: "in-cli",
|
|
1584
|
+
signals: {
|
|
1585
|
+
npm: ["razorpay"],
|
|
1586
|
+
python: ["razorpay"],
|
|
1587
|
+
ruby: ["razorpay"],
|
|
1588
|
+
envKeys: [/^RAZORPAY_/]
|
|
1589
|
+
}
|
|
1590
|
+
},
|
|
1591
|
+
{
|
|
1592
|
+
kind: "Adyen",
|
|
1593
|
+
label: "Adyen",
|
|
1594
|
+
mode: "in-cli",
|
|
1595
|
+
signals: {
|
|
1596
|
+
npm: ["@adyen/api-library"],
|
|
1597
|
+
python: ["adyen"],
|
|
1598
|
+
envKeys: [/^ADYEN_/]
|
|
1599
|
+
}
|
|
1600
|
+
},
|
|
1601
|
+
{
|
|
1602
|
+
kind: "ChartMogul",
|
|
1603
|
+
label: "ChartMogul",
|
|
1604
|
+
mode: "in-cli",
|
|
1605
|
+
signals: {
|
|
1606
|
+
npm: ["chartmogul-node"],
|
|
1607
|
+
python: ["chartmogul"],
|
|
1608
|
+
envKeys: [/^CHARTMOGUL_/]
|
|
1609
|
+
}
|
|
1610
|
+
},
|
|
1611
|
+
{
|
|
1612
|
+
kind: "Airwallex",
|
|
1613
|
+
label: "Airwallex",
|
|
1614
|
+
mode: "in-cli",
|
|
1615
|
+
signals: {
|
|
1616
|
+
npm: ["airwallex-payment-elements"],
|
|
1617
|
+
envKeys: [/^AIRWALLEX_/]
|
|
1618
|
+
}
|
|
1619
|
+
},
|
|
1620
|
+
{
|
|
1621
|
+
kind: "Flutterwave",
|
|
1622
|
+
label: "Flutterwave",
|
|
1623
|
+
mode: "in-cli",
|
|
1624
|
+
signals: {
|
|
1625
|
+
npm: ["flutterwave-node-v3"],
|
|
1626
|
+
python: ["flutterwave"],
|
|
1627
|
+
envKeys: [/^FLUTTERWAVE_/, /^FLW_(PUBLIC|SECRET)_KEY$/]
|
|
1628
|
+
}
|
|
1629
|
+
},
|
|
1630
|
+
{
|
|
1631
|
+
kind: "DodoPayments",
|
|
1632
|
+
label: "Dodo Payments",
|
|
1633
|
+
mode: "in-cli",
|
|
1634
|
+
signals: {
|
|
1635
|
+
npm: ["dodopayments"],
|
|
1636
|
+
python: ["dodopayments"],
|
|
1637
|
+
envKeys: [/^DODO_PAYMENTS_/]
|
|
1638
|
+
}
|
|
1639
|
+
},
|
|
1640
|
+
{
|
|
1641
|
+
kind: "Whop",
|
|
1642
|
+
label: "Whop",
|
|
1643
|
+
mode: "in-cli",
|
|
1644
|
+
signals: {
|
|
1645
|
+
npm: ["@whop/api", "@whop-apps/sdk"],
|
|
1646
|
+
envKeys: [/^WHOP_/]
|
|
1647
|
+
}
|
|
1648
|
+
},
|
|
1456
1649
|
{
|
|
1457
1650
|
kind: "SparkPost",
|
|
1458
1651
|
label: "SparkPost",
|
|
@@ -1527,6 +1720,90 @@ const SOURCE_DETECTORS = [
|
|
|
1527
1720
|
mode: "in-cli",
|
|
1528
1721
|
signals: { envKeys: [/^LEMLIST_/] }
|
|
1529
1722
|
},
|
|
1723
|
+
{
|
|
1724
|
+
kind: "Loops",
|
|
1725
|
+
label: "Loops",
|
|
1726
|
+
mode: "in-cli",
|
|
1727
|
+
signals: {
|
|
1728
|
+
npm: ["loops"],
|
|
1729
|
+
envKeys: [/^LOOPS_/]
|
|
1730
|
+
}
|
|
1731
|
+
},
|
|
1732
|
+
{
|
|
1733
|
+
kind: "Knock",
|
|
1734
|
+
label: "Knock",
|
|
1735
|
+
mode: "in-cli",
|
|
1736
|
+
signals: {
|
|
1737
|
+
npm: ["@knocklabs/node", "@knocklabs/client"],
|
|
1738
|
+
python: ["knockapi"],
|
|
1739
|
+
envKeys: [/^KNOCK_/]
|
|
1740
|
+
}
|
|
1741
|
+
},
|
|
1742
|
+
{
|
|
1743
|
+
kind: "AwsSes",
|
|
1744
|
+
label: "Amazon SES",
|
|
1745
|
+
mode: "in-cli",
|
|
1746
|
+
signals: {
|
|
1747
|
+
npm: ["@aws-sdk/client-ses", "@aws-sdk/client-sesv2"],
|
|
1748
|
+
envKeys: [/^AWS_SES_/]
|
|
1749
|
+
}
|
|
1750
|
+
},
|
|
1751
|
+
{
|
|
1752
|
+
kind: "Beehiiv",
|
|
1753
|
+
label: "beehiiv",
|
|
1754
|
+
mode: "in-cli",
|
|
1755
|
+
signals: { envKeys: [/^BEEHIIV_/] }
|
|
1756
|
+
},
|
|
1757
|
+
{
|
|
1758
|
+
kind: "Mailtrap",
|
|
1759
|
+
label: "Mailtrap",
|
|
1760
|
+
mode: "in-cli",
|
|
1761
|
+
signals: {
|
|
1762
|
+
npm: ["mailtrap"],
|
|
1763
|
+
python: ["mailtrap"],
|
|
1764
|
+
envKeys: [/^MAILTRAP_/]
|
|
1765
|
+
}
|
|
1766
|
+
},
|
|
1767
|
+
{
|
|
1768
|
+
kind: "Plunk",
|
|
1769
|
+
label: "Plunk",
|
|
1770
|
+
mode: "in-cli",
|
|
1771
|
+
signals: {
|
|
1772
|
+
npm: ["@plunk/node"],
|
|
1773
|
+
envKeys: [/^PLUNK_/]
|
|
1774
|
+
}
|
|
1775
|
+
},
|
|
1776
|
+
{
|
|
1777
|
+
kind: "Ortto",
|
|
1778
|
+
label: "Ortto",
|
|
1779
|
+
mode: "in-cli",
|
|
1780
|
+
signals: { envKeys: [/^ORTTO_/] }
|
|
1781
|
+
},
|
|
1782
|
+
{
|
|
1783
|
+
kind: "Postscript",
|
|
1784
|
+
label: "Postscript",
|
|
1785
|
+
mode: "in-cli",
|
|
1786
|
+
signals: { envKeys: [/^POSTSCRIPT_/] }
|
|
1787
|
+
},
|
|
1788
|
+
{
|
|
1789
|
+
kind: "Marketo",
|
|
1790
|
+
label: "Marketo",
|
|
1791
|
+
mode: "in-cli",
|
|
1792
|
+
signals: {
|
|
1793
|
+
python: ["marketorestpython"],
|
|
1794
|
+
envKeys: [/^MARKETO_/]
|
|
1795
|
+
}
|
|
1796
|
+
},
|
|
1797
|
+
{
|
|
1798
|
+
kind: "Lob",
|
|
1799
|
+
label: "Lob",
|
|
1800
|
+
mode: "in-cli",
|
|
1801
|
+
signals: {
|
|
1802
|
+
npm: ["lob"],
|
|
1803
|
+
python: ["lob"],
|
|
1804
|
+
envKeys: [/^LOB_API_KEY$/]
|
|
1805
|
+
}
|
|
1806
|
+
},
|
|
1530
1807
|
{
|
|
1531
1808
|
kind: "Segment",
|
|
1532
1809
|
label: "Segment",
|
|
@@ -1692,6 +1969,36 @@ const SOURCE_DETECTORS = [
|
|
|
1692
1969
|
mode: "in-cli",
|
|
1693
1970
|
signals: { envKeys: [/^JUSTCALL_/] }
|
|
1694
1971
|
},
|
|
1972
|
+
{
|
|
1973
|
+
kind: "Telnyx",
|
|
1974
|
+
label: "Telnyx",
|
|
1975
|
+
mode: "in-cli",
|
|
1976
|
+
signals: {
|
|
1977
|
+
npm: ["telnyx"],
|
|
1978
|
+
python: ["telnyx"],
|
|
1979
|
+
envKeys: [/^TELNYX_/]
|
|
1980
|
+
}
|
|
1981
|
+
},
|
|
1982
|
+
{
|
|
1983
|
+
kind: "Plivo",
|
|
1984
|
+
label: "Plivo",
|
|
1985
|
+
mode: "in-cli",
|
|
1986
|
+
signals: {
|
|
1987
|
+
npm: ["plivo"],
|
|
1988
|
+
python: ["plivo"],
|
|
1989
|
+
envKeys: [/^PLIVO_/]
|
|
1990
|
+
}
|
|
1991
|
+
},
|
|
1992
|
+
{
|
|
1993
|
+
kind: "Courier",
|
|
1994
|
+
label: "Courier",
|
|
1995
|
+
mode: "in-cli",
|
|
1996
|
+
signals: {
|
|
1997
|
+
npm: ["@trycourier/courier"],
|
|
1998
|
+
python: ["trycourier"],
|
|
1999
|
+
envKeys: [/^COURIER_AUTH_TOKEN$/]
|
|
2000
|
+
}
|
|
2001
|
+
},
|
|
1695
2002
|
{
|
|
1696
2003
|
kind: "WooCommerce",
|
|
1697
2004
|
label: "WooCommerce",
|
|
@@ -1765,6 +2072,15 @@ const SOURCE_DETECTORS = [
|
|
|
1765
2072
|
mode: "in-cli",
|
|
1766
2073
|
signals: { envKeys: [/^PRINTIFY_/] }
|
|
1767
2074
|
},
|
|
2075
|
+
{
|
|
2076
|
+
kind: "BigCommerce",
|
|
2077
|
+
label: "BigCommerce",
|
|
2078
|
+
mode: "in-cli",
|
|
2079
|
+
signals: {
|
|
2080
|
+
npm: ["node-bigcommerce"],
|
|
2081
|
+
envKeys: [/^BIGCOMMERCE_/]
|
|
2082
|
+
}
|
|
2083
|
+
},
|
|
1768
2084
|
{
|
|
1769
2085
|
kind: "Freshdesk",
|
|
1770
2086
|
label: "Freshdesk",
|
|
@@ -1985,6 +2301,226 @@ const SOURCE_DETECTORS = [
|
|
|
1985
2301
|
envKeys: [/^VERCEL_API_TOKEN$/]
|
|
1986
2302
|
}
|
|
1987
2303
|
},
|
|
2304
|
+
{
|
|
2305
|
+
kind: "Algolia",
|
|
2306
|
+
label: "Algolia",
|
|
2307
|
+
mode: "in-cli",
|
|
2308
|
+
signals: {
|
|
2309
|
+
npm: ["algoliasearch"],
|
|
2310
|
+
python: ["algoliasearch"],
|
|
2311
|
+
ruby: ["algolia"],
|
|
2312
|
+
envKeys: [/^ALGOLIA_/]
|
|
2313
|
+
}
|
|
2314
|
+
},
|
|
2315
|
+
{
|
|
2316
|
+
kind: "Inngest",
|
|
2317
|
+
label: "Inngest",
|
|
2318
|
+
mode: "in-cli",
|
|
2319
|
+
signals: {
|
|
2320
|
+
npm: ["inngest"],
|
|
2321
|
+
python: ["inngest"],
|
|
2322
|
+
envKeys: [/^INNGEST_/]
|
|
2323
|
+
}
|
|
2324
|
+
},
|
|
2325
|
+
{
|
|
2326
|
+
kind: "TriggerDev",
|
|
2327
|
+
label: "Trigger.dev",
|
|
2328
|
+
mode: "in-cli",
|
|
2329
|
+
signals: {
|
|
2330
|
+
npm: ["@trigger.dev/sdk"],
|
|
2331
|
+
envKeys: [/^TRIGGER_(SECRET_KEY|API_KEY|PROJECT_ID)$/]
|
|
2332
|
+
}
|
|
2333
|
+
},
|
|
2334
|
+
{
|
|
2335
|
+
kind: "Ably",
|
|
2336
|
+
label: "Ably",
|
|
2337
|
+
mode: "in-cli",
|
|
2338
|
+
signals: {
|
|
2339
|
+
npm: ["ably"],
|
|
2340
|
+
python: ["ably"],
|
|
2341
|
+
envKeys: [/^ABLY_/]
|
|
2342
|
+
}
|
|
2343
|
+
},
|
|
2344
|
+
{
|
|
2345
|
+
kind: "Netlify",
|
|
2346
|
+
label: "Netlify",
|
|
2347
|
+
mode: "in-cli",
|
|
2348
|
+
signals: {
|
|
2349
|
+
npm: ["@netlify/functions"],
|
|
2350
|
+
envKeys: [/^NETLIFY_/]
|
|
2351
|
+
}
|
|
2352
|
+
},
|
|
2353
|
+
{
|
|
2354
|
+
kind: "Railway",
|
|
2355
|
+
label: "Railway",
|
|
2356
|
+
mode: "in-cli",
|
|
2357
|
+
signals: { envKeys: [/^RAILWAY_/] }
|
|
2358
|
+
},
|
|
2359
|
+
{
|
|
2360
|
+
kind: "Render",
|
|
2361
|
+
label: "Render",
|
|
2362
|
+
mode: "in-cli",
|
|
2363
|
+
signals: { envKeys: [/^RENDER_API_KEY$/] }
|
|
2364
|
+
},
|
|
2365
|
+
{
|
|
2366
|
+
kind: "FlyIo",
|
|
2367
|
+
label: "Fly.io",
|
|
2368
|
+
mode: "in-cli",
|
|
2369
|
+
signals: { envKeys: [/^FLY_API_TOKEN$/, /^FLY_APP_NAME$/] }
|
|
2370
|
+
},
|
|
2371
|
+
{
|
|
2372
|
+
kind: "Heroku",
|
|
2373
|
+
label: "Heroku",
|
|
2374
|
+
mode: "in-cli",
|
|
2375
|
+
signals: { envKeys: [/^HEROKU_/] }
|
|
2376
|
+
},
|
|
2377
|
+
{
|
|
2378
|
+
kind: "DigitalOcean",
|
|
2379
|
+
label: "DigitalOcean",
|
|
2380
|
+
mode: "in-cli",
|
|
2381
|
+
signals: { envKeys: [/^DIGITALOCEAN_/] }
|
|
2382
|
+
},
|
|
2383
|
+
{
|
|
2384
|
+
kind: "Grafana",
|
|
2385
|
+
label: "Grafana",
|
|
2386
|
+
mode: "in-cli",
|
|
2387
|
+
signals: {
|
|
2388
|
+
python: ["grafana-client"],
|
|
2389
|
+
envKeys: [/^GRAFANA_/]
|
|
2390
|
+
}
|
|
2391
|
+
},
|
|
2392
|
+
{
|
|
2393
|
+
kind: "BetterStack",
|
|
2394
|
+
label: "Better Stack",
|
|
2395
|
+
mode: "in-cli",
|
|
2396
|
+
signals: {
|
|
2397
|
+
npm: ["@logtail/node", "@logtail/js"],
|
|
2398
|
+
envKeys: [
|
|
2399
|
+
/^BETTERSTACK_/,
|
|
2400
|
+
/^BETTER_STACK_/,
|
|
2401
|
+
/^LOGTAIL_/
|
|
2402
|
+
]
|
|
2403
|
+
}
|
|
2404
|
+
},
|
|
2405
|
+
{
|
|
2406
|
+
kind: "Honeycomb",
|
|
2407
|
+
label: "Honeycomb",
|
|
2408
|
+
mode: "in-cli",
|
|
2409
|
+
signals: {
|
|
2410
|
+
npm: ["@honeycombio/opentelemetry-node", "honeycomb-beeline"],
|
|
2411
|
+
python: ["honeycomb-beeline", "libhoney"],
|
|
2412
|
+
envKeys: [/^HONEYCOMB_/]
|
|
2413
|
+
}
|
|
2414
|
+
},
|
|
2415
|
+
{
|
|
2416
|
+
kind: "Descope",
|
|
2417
|
+
label: "Descope",
|
|
2418
|
+
mode: "in-cli",
|
|
2419
|
+
signals: {
|
|
2420
|
+
npm: [
|
|
2421
|
+
"@descope/node-sdk",
|
|
2422
|
+
"@descope/nextjs-sdk",
|
|
2423
|
+
"@descope/react-sdk"
|
|
2424
|
+
],
|
|
2425
|
+
python: ["descope"],
|
|
2426
|
+
envKeys: [/^DESCOPE_/]
|
|
2427
|
+
}
|
|
2428
|
+
},
|
|
2429
|
+
{
|
|
2430
|
+
kind: "FusionAuth",
|
|
2431
|
+
label: "FusionAuth",
|
|
2432
|
+
mode: "in-cli",
|
|
2433
|
+
signals: {
|
|
2434
|
+
npm: ["@fusionauth/typescript-client"],
|
|
2435
|
+
python: ["fusionauth-client"],
|
|
2436
|
+
envKeys: [/^FUSIONAUTH_/, /^FUSION_AUTH_/]
|
|
2437
|
+
}
|
|
2438
|
+
},
|
|
2439
|
+
{
|
|
2440
|
+
kind: "Hookdeck",
|
|
2441
|
+
label: "Hookdeck",
|
|
2442
|
+
mode: "in-cli",
|
|
2443
|
+
signals: {
|
|
2444
|
+
npm: ["@hookdeck/sdk"],
|
|
2445
|
+
envKeys: [/^HOOKDECK_/]
|
|
2446
|
+
}
|
|
2447
|
+
},
|
|
2448
|
+
{
|
|
2449
|
+
kind: "N8n",
|
|
2450
|
+
label: "n8n",
|
|
2451
|
+
mode: "in-cli",
|
|
2452
|
+
signals: {
|
|
2453
|
+
npm: ["n8n"],
|
|
2454
|
+
envKeys: [/^N8N_/]
|
|
2455
|
+
}
|
|
2456
|
+
},
|
|
2457
|
+
{
|
|
2458
|
+
kind: "Dbt",
|
|
2459
|
+
label: "dbt",
|
|
2460
|
+
mode: "in-cli",
|
|
2461
|
+
signals: {
|
|
2462
|
+
python: [
|
|
2463
|
+
"dbt-core",
|
|
2464
|
+
"dbt-snowflake",
|
|
2465
|
+
"dbt-postgres",
|
|
2466
|
+
"dbt-bigquery",
|
|
2467
|
+
"dbt-redshift",
|
|
2468
|
+
"dbt-databricks"
|
|
2469
|
+
],
|
|
2470
|
+
envKeys: [/^DBT_/]
|
|
2471
|
+
}
|
|
2472
|
+
},
|
|
2473
|
+
{
|
|
2474
|
+
kind: "Fastly",
|
|
2475
|
+
label: "Fastly",
|
|
2476
|
+
mode: "in-cli",
|
|
2477
|
+
signals: {
|
|
2478
|
+
npm: ["fastly"],
|
|
2479
|
+
python: ["fastly"],
|
|
2480
|
+
envKeys: [/^FASTLY_/]
|
|
2481
|
+
}
|
|
2482
|
+
},
|
|
2483
|
+
{
|
|
2484
|
+
kind: "Bunny",
|
|
2485
|
+
label: "Bunny.net",
|
|
2486
|
+
mode: "in-cli",
|
|
2487
|
+
signals: { envKeys: [/^BUNNY_/] }
|
|
2488
|
+
},
|
|
2489
|
+
{
|
|
2490
|
+
kind: "Codecov",
|
|
2491
|
+
label: "Codecov",
|
|
2492
|
+
mode: "in-cli",
|
|
2493
|
+
signals: {
|
|
2494
|
+
npm: ["codecov"],
|
|
2495
|
+
envKeys: [/^CODECOV_/]
|
|
2496
|
+
}
|
|
2497
|
+
},
|
|
2498
|
+
{
|
|
2499
|
+
kind: "Sourcegraph",
|
|
2500
|
+
label: "Sourcegraph",
|
|
2501
|
+
mode: "in-cli",
|
|
2502
|
+
signals: { envKeys: [/^SOURCEGRAPH_/, /^SRC_ACCESS_TOKEN$/] }
|
|
2503
|
+
},
|
|
2504
|
+
{
|
|
2505
|
+
kind: "TemporalIO",
|
|
2506
|
+
label: "Temporal.io",
|
|
2507
|
+
mode: "in-cli",
|
|
2508
|
+
signals: {
|
|
2509
|
+
npm: ["@temporalio/client", "@temporalio/worker"],
|
|
2510
|
+
python: ["temporalio"],
|
|
2511
|
+
envKeys: [/^TEMPORAL_/]
|
|
2512
|
+
}
|
|
2513
|
+
},
|
|
2514
|
+
{
|
|
2515
|
+
kind: "Hatchet",
|
|
2516
|
+
label: "Hatchet",
|
|
2517
|
+
mode: "in-cli",
|
|
2518
|
+
signals: {
|
|
2519
|
+
npm: ["@hatchet-dev/typescript-sdk"],
|
|
2520
|
+
python: ["hatchet-sdk"],
|
|
2521
|
+
envKeys: [/^HATCHET_/]
|
|
2522
|
+
}
|
|
2523
|
+
},
|
|
1988
2524
|
{
|
|
1989
2525
|
kind: "Pipedrive",
|
|
1990
2526
|
label: "Pipedrive",
|
|
@@ -2048,6 +2584,28 @@ const SOURCE_DETECTORS = [
|
|
|
2048
2584
|
mode: "in-cli",
|
|
2049
2585
|
signals: { envKeys: [/^VITALLY_/] }
|
|
2050
2586
|
},
|
|
2587
|
+
{
|
|
2588
|
+
kind: "Docusign",
|
|
2589
|
+
label: "DocuSign",
|
|
2590
|
+
mode: "in-cli",
|
|
2591
|
+
signals: {
|
|
2592
|
+
npm: ["docusign-esign"],
|
|
2593
|
+
python: ["docusign-esign"],
|
|
2594
|
+
envKeys: [/^DOCUSIGN_/]
|
|
2595
|
+
}
|
|
2596
|
+
},
|
|
2597
|
+
{
|
|
2598
|
+
kind: "PandaDoc",
|
|
2599
|
+
label: "PandaDoc",
|
|
2600
|
+
mode: "in-cli",
|
|
2601
|
+
signals: { envKeys: [/^PANDADOC_/] }
|
|
2602
|
+
},
|
|
2603
|
+
{
|
|
2604
|
+
kind: "Gong",
|
|
2605
|
+
label: "Gong",
|
|
2606
|
+
mode: "in-cli",
|
|
2607
|
+
signals: { envKeys: [/^GONG_/] }
|
|
2608
|
+
},
|
|
2051
2609
|
{
|
|
2052
2610
|
kind: "Asana",
|
|
2053
2611
|
label: "Asana",
|
|
@@ -2155,6 +2713,64 @@ const SOURCE_DETECTORS = [
|
|
|
2155
2713
|
mode: "in-cli",
|
|
2156
2714
|
signals: { envKeys: [/^PRODUCTBOARD_/] }
|
|
2157
2715
|
},
|
|
2716
|
+
{
|
|
2717
|
+
kind: "GoogleSheets",
|
|
2718
|
+
label: "Google Sheets",
|
|
2719
|
+
mode: "in-cli",
|
|
2720
|
+
signals: {
|
|
2721
|
+
npm: ["google-spreadsheet"],
|
|
2722
|
+
python: ["gspread"],
|
|
2723
|
+
envKeys: [/^GOOGLE_SHEETS_/]
|
|
2724
|
+
}
|
|
2725
|
+
},
|
|
2726
|
+
{
|
|
2727
|
+
kind: "Formbricks",
|
|
2728
|
+
label: "Formbricks",
|
|
2729
|
+
mode: "in-cli",
|
|
2730
|
+
signals: {
|
|
2731
|
+
npm: ["@formbricks/js"],
|
|
2732
|
+
envKeys: [/^FORMBRICKS_/]
|
|
2733
|
+
}
|
|
2734
|
+
},
|
|
2735
|
+
{
|
|
2736
|
+
kind: "Tally",
|
|
2737
|
+
label: "Tally",
|
|
2738
|
+
mode: "in-cli",
|
|
2739
|
+
signals: { envKeys: [/^TALLY_API_KEY$/] }
|
|
2740
|
+
},
|
|
2741
|
+
{
|
|
2742
|
+
kind: "Jotform",
|
|
2743
|
+
label: "Jotform",
|
|
2744
|
+
mode: "in-cli",
|
|
2745
|
+
signals: {
|
|
2746
|
+
python: ["jotform"],
|
|
2747
|
+
envKeys: [/^JOTFORM_/]
|
|
2748
|
+
}
|
|
2749
|
+
},
|
|
2750
|
+
{
|
|
2751
|
+
kind: "GitBook",
|
|
2752
|
+
label: "GitBook",
|
|
2753
|
+
mode: "in-cli",
|
|
2754
|
+
signals: {
|
|
2755
|
+
npm: ["@gitbook/api"],
|
|
2756
|
+
envKeys: [/^GITBOOK_/]
|
|
2757
|
+
}
|
|
2758
|
+
},
|
|
2759
|
+
{
|
|
2760
|
+
kind: "Wordpress",
|
|
2761
|
+
label: "WordPress",
|
|
2762
|
+
mode: "in-cli",
|
|
2763
|
+
signals: {
|
|
2764
|
+
npm: ["wpapi"],
|
|
2765
|
+
envKeys: [/^WORDPRESS_/]
|
|
2766
|
+
}
|
|
2767
|
+
},
|
|
2768
|
+
{
|
|
2769
|
+
kind: "Clockify",
|
|
2770
|
+
label: "Clockify",
|
|
2771
|
+
mode: "in-cli",
|
|
2772
|
+
signals: { envKeys: [/^CLOCKIFY_/] }
|
|
2773
|
+
},
|
|
2158
2774
|
{
|
|
2159
2775
|
kind: "Calendly",
|
|
2160
2776
|
label: "Calendly",
|
|
@@ -2298,6 +2914,16 @@ const SOURCE_DETECTORS = [
|
|
|
2298
2914
|
npm: ["react-native-appsflyer"],
|
|
2299
2915
|
envKeys: [/^APPSFLYER_/]
|
|
2300
2916
|
}
|
|
2917
|
+
},
|
|
2918
|
+
{
|
|
2919
|
+
kind: "Dub",
|
|
2920
|
+
label: "Dub",
|
|
2921
|
+
mode: "in-cli",
|
|
2922
|
+
signals: {
|
|
2923
|
+
npm: ["dub"],
|
|
2924
|
+
python: ["dub"],
|
|
2925
|
+
envKeys: [/^DUB_API_KEY$/]
|
|
2926
|
+
}
|
|
2301
2927
|
}
|
|
2302
2928
|
];
|
|
2303
2929
|
//#endregion
|
|
@@ -2313,7 +2939,7 @@ const SOURCE_DETECTORS = [
|
|
|
2313
2939
|
* Note we only read `.env` KEY NAMES, never values.
|
|
2314
2940
|
*/
|
|
2315
2941
|
const MAX_DEPTH = 3;
|
|
2316
|
-
const MAX_SIGNAL_SET =
|
|
2942
|
+
const MAX_SIGNAL_SET = MAX_ENV_KEY_SET;
|
|
2317
2943
|
function addCapped(set, value) {
|
|
2318
2944
|
if (set.size < MAX_SIGNAL_SET) set.add(value);
|
|
2319
2945
|
}
|
|
@@ -2346,7 +2972,7 @@ function matchDetector(detector, signals) {
|
|
|
2346
2972
|
const rubyHit = ruby?.find((gem) => signals.ruby.has(gem));
|
|
2347
2973
|
if (rubyHit) return `found \`${rubyHit}\` in Gemfile`;
|
|
2348
2974
|
if (envKeys) {
|
|
2349
|
-
for (const key of signals.envKeys) if (envKeys.some((re) => re.test(key))) return `found \`${key}\` in
|
|
2975
|
+
for (const [key, file] of signals.envKeys) if (envKeys.some((re) => re.test(key))) return `found \`${key}\` in \`${file}\``;
|
|
2350
2976
|
}
|
|
2351
2977
|
return null;
|
|
2352
2978
|
}
|
|
@@ -2355,9 +2981,9 @@ function collectSignals(installDir) {
|
|
|
2355
2981
|
npm: /* @__PURE__ */ new Set(),
|
|
2356
2982
|
python: /* @__PURE__ */ new Set(),
|
|
2357
2983
|
ruby: /* @__PURE__ */ new Set(),
|
|
2358
|
-
envKeys: /* @__PURE__ */ new
|
|
2984
|
+
envKeys: /* @__PURE__ */ new Map()
|
|
2359
2985
|
};
|
|
2360
|
-
walkProjectFiles(installDir, (name, fullPath) => ingestFile(name, fullPath, signals), MAX_DEPTH);
|
|
2986
|
+
walkProjectFiles(installDir, (name, fullPath) => ingestFile(installDir, name, fullPath, signals), MAX_DEPTH);
|
|
2361
2987
|
return signals;
|
|
2362
2988
|
}
|
|
2363
2989
|
/**
|
|
@@ -2366,12 +2992,12 @@ function collectSignals(installDir) {
|
|
|
2366
2992
|
* avoids slurping every file in the tree (lockfiles, binaries, assets) into
|
|
2367
2993
|
* memory just to discard it.
|
|
2368
2994
|
*/
|
|
2369
|
-
function ingestFile(name, fullPath, signals) {
|
|
2995
|
+
function ingestFile(installDir, name, fullPath, signals) {
|
|
2370
2996
|
const ingest = ingestorFor(name);
|
|
2371
2997
|
if (!ingest) return;
|
|
2372
2998
|
const content = safeReadFile(fullPath);
|
|
2373
2999
|
if (content === null) return;
|
|
2374
|
-
ingest(content, signals);
|
|
3000
|
+
ingest(content, signals, toPromptSafeRelativePath(installDir, fullPath));
|
|
2375
3001
|
}
|
|
2376
3002
|
/** Pick the parser for a manifest filename, or null if it's not one we read. */
|
|
2377
3003
|
function ingestorFor(name) {
|
|
@@ -2380,9 +3006,21 @@ function ingestorFor(name) {
|
|
|
2380
3006
|
if (name === "pyproject.toml") return (c, s) => parsePyprojectToml(c).forEach((d) => addCapped(s.python, d));
|
|
2381
3007
|
if (name === "Pipfile") return (c, s) => parsePipfile(c).forEach((d) => addCapped(s.python, d));
|
|
2382
3008
|
if (name === "Gemfile") return (c, s) => parseGemfile(c).forEach((g) => addCapped(s.ruby, g));
|
|
2383
|
-
if (name
|
|
3009
|
+
if (isEnvFileName(name)) return (c, s, relativePath) => addEnvKeys(c, s, relativePath);
|
|
2384
3010
|
return null;
|
|
2385
3011
|
}
|
|
3012
|
+
/**
|
|
3013
|
+
* Record each key NAME against the file that defined it. The first file wins,
|
|
3014
|
+
* so the reported signal stays stable when several `.env*` files repeat a key.
|
|
3015
|
+
* Values are never read.
|
|
3016
|
+
*/
|
|
3017
|
+
function addEnvKeys(content, signals, relativePath) {
|
|
3018
|
+
for (const key of parseEnvKeyNames(content)) {
|
|
3019
|
+
if (signals.envKeys.has(key)) continue;
|
|
3020
|
+
if (signals.envKeys.size >= MAX_SIGNAL_SET) return;
|
|
3021
|
+
signals.envKeys.set(key, relativePath);
|
|
3022
|
+
}
|
|
3023
|
+
}
|
|
2386
3024
|
function addNpmDeps(content, signals) {
|
|
2387
3025
|
try {
|
|
2388
3026
|
const pkg = JSON.parse(content);
|
|
@@ -2400,17 +3038,6 @@ function parseGemfile(content) {
|
|
|
2400
3038
|
for (const match of content.matchAll(/^\s*gem\s+['"]([^'"]+)['"]/gm)) gems.push(match[1]);
|
|
2401
3039
|
return gems;
|
|
2402
3040
|
}
|
|
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
3041
|
//#endregion
|
|
2415
3042
|
//#region src/lib/programs/warehouse-source/detect.ts
|
|
2416
3043
|
/**
|
|
@@ -3743,7 +4370,7 @@ const warehouseSeedTasks = (sess) => {
|
|
|
3743
4370
|
})) },
|
|
3744
4371
|
notice: {
|
|
3745
4372
|
title: "Connect your data sources",
|
|
3746
|
-
body: ["We detected some warehouse sources we can connect to enrich your PostHog data.
|
|
4373
|
+
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
4374
|
items: sources.map((s) => s.label),
|
|
3748
4375
|
docsLabel: "Learn more about warehouse sources",
|
|
3749
4376
|
docsUrl: WAREHOUSE_SOURCES_DOCS_URL,
|
|
@@ -3768,7 +4395,10 @@ const posthogIntegrationConfig = {
|
|
|
3768
4395
|
await scopeInstallDirToProject(session);
|
|
3769
4396
|
const integration = await detectFramework(session.installDir);
|
|
3770
4397
|
if (!integration) {
|
|
3771
|
-
await wizardAbort({
|
|
4398
|
+
await wizardAbort({
|
|
4399
|
+
code: ErrorCodes.DetectNoFramework,
|
|
4400
|
+
message: "Could not auto-detect your framework for this project."
|
|
4401
|
+
});
|
|
3772
4402
|
return;
|
|
3773
4403
|
}
|
|
3774
4404
|
session.integration = integration;
|
|
@@ -3795,7 +4425,7 @@ const posthogIntegrationConfig = {
|
|
|
3795
4425
|
if (usesPackageJson) {
|
|
3796
4426
|
const packageJson = await tryGetPackageJson({ installDir: session.installDir });
|
|
3797
4427
|
if (packageJson) {
|
|
3798
|
-
const { hasDeclaredDependency } = await import("./package-json-
|
|
4428
|
+
const { hasDeclaredDependency } = await import("./package-json-GEU2VZlS.js").then((n) => n.i);
|
|
3799
4429
|
if (!hasDeclaredDependency(config.detection.packageName, packageJson)) getUI().log.warn(`${config.detection.packageDisplayName} does not seem to be installed. Continuing anyway — the agent will handle it.`);
|
|
3800
4430
|
frameworkVersion = config.detection.getVersion(packageJson);
|
|
3801
4431
|
} else getUI().log.warn("Could not find package.json. Continuing anyway — the agent will handle it.");
|
|
@@ -3852,7 +4482,7 @@ STEP 3: Load the installed skill's SKILL.md file to understand what references a
|
|
|
3852
4482
|
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
4483
|
|
|
3854
4484
|
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
|
|
4485
|
+
- 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
4486
|
- 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
4487
|
- Reference these environment variables in the code files you create instead of hardcoding the public token and host.
|
|
3858
4488
|
|
|
@@ -3864,7 +4494,7 @@ ${warehouseReportInstruction(session)}
|
|
|
3864
4494
|
postRun: async (sess, credentials) => {
|
|
3865
4495
|
const envVars = config.environment.getEnvVars(credentials.projectApiKey, credentials.host.apiHost);
|
|
3866
4496
|
if (config.environment.uploadToHosting) {
|
|
3867
|
-
const { uploadEnvironmentVariablesStep } = await import("./steps-
|
|
4497
|
+
const { uploadEnvironmentVariablesStep } = await import("./steps-CLaSMwfR.js");
|
|
3868
4498
|
const uploadedEnvVars = await uploadEnvironmentVariablesStep(envVars, {
|
|
3869
4499
|
integration: config.metadata.integration,
|
|
3870
4500
|
session: sess
|
|
@@ -3920,4 +4550,4 @@ const integrationRunStep = {
|
|
|
3920
4550
|
//#endregion
|
|
3921
4551
|
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
4552
|
|
|
3923
|
-
//# sourceMappingURL=posthog-integration-
|
|
4553
|
+
//# sourceMappingURL=posthog-integration-DFfBRGOC.js.map
|