@posthog/wizard 2.43.0 → 2.44.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 (88) hide show
  1. package/dist/{add-mcp-server-to-clients-BiZmRLE6.js → add-mcp-server-to-clients-D5qsqCkj.js} +5 -5
  2. package/dist/{add-mcp-server-to-clients-BiZmRLE6.js.map → add-mcp-server-to-clients-D5qsqCkj.js.map} +1 -1
  3. package/dist/{agent-interface-CUaNjvqq.js → agent-interface-BvTxWiol.js} +8 -8
  4. package/dist/agent-interface-BvTxWiol.js.map +1 -0
  5. package/dist/{agent-runner-BuH7W62W.js → agent-runner-BF6_f8Qh.js} +17 -17
  6. package/dist/{agent-runner-BuH7W62W.js.map → agent-runner-BF6_f8Qh.js.map} +1 -1
  7. package/dist/analytics-C7Xx6csw.js +2 -0
  8. package/dist/{analytics-C_9Kh6J1.js → analytics-DSlQuwOT.js} +2 -2
  9. package/dist/{analytics-C_9Kh6J1.js.map → analytics-DSlQuwOT.js.map} +1 -1
  10. package/dist/{api-Kgk7BFqo.js → api-BXduJZrw.js} +3 -3
  11. package/dist/{api-Kgk7BFqo.js.map → api-BXduJZrw.js.map} +1 -1
  12. package/dist/bin.js +57 -60
  13. package/dist/bin.js.map +1 -1
  14. package/dist/{ci-install-DoARcA-j.js → ci-install-GirEJqu2.js} +4 -4
  15. package/dist/{ci-install-DoARcA-j.js.map → ci-install-GirEJqu2.js.map} +1 -1
  16. package/dist/{debug-CI0PLD6X.js → debug-BOFxiVVs.js} +1 -1
  17. package/dist/{debug-DNEQR5DL.js → debug-DXfQFmcM.js} +25 -20
  18. package/dist/debug-DXfQFmcM.js.map +1 -0
  19. package/dist/{defaults-CeNThA-1.js → defaults-BWLIffh5.js} +2 -2
  20. package/dist/defaults-BWLIffh5.js.map +1 -0
  21. package/dist/{environment-D44UP2Nu.js → environment-F1yw21dG.js} +3 -3
  22. package/dist/{environment-D44UP2Nu.js.map → environment-F1yw21dG.js.map} +1 -1
  23. package/dist/{file-utils-C2PNKLhr.js → file-utils-D-7YfJ7A.js} +2 -2
  24. package/dist/{file-utils-C2PNKLhr.js.map → file-utils-D-7YfJ7A.js.map} +1 -1
  25. package/dist/{headless-ui-C3C0wWUi.js → headless-ui-Dni0gPND.js} +2 -2
  26. package/dist/{headless-ui-C3C0wWUi.js.map → headless-ui-Dni0gPND.js.map} +1 -1
  27. package/dist/{interactive-k4xQiftO.js → interactive-Bmi82rsO.js} +2 -2
  28. package/dist/{interactive-k4xQiftO.js.map → interactive-Bmi82rsO.js.map} +1 -1
  29. package/dist/{mcp-prompt-streaming-BB5nO--L.js → mcp-prompt-streaming-AtntLsJ8.js} +3 -3
  30. package/dist/{mcp-prompt-streaming-BB5nO--L.js.map → mcp-prompt-streaming-AtntLsJ8.js.map} +1 -1
  31. package/dist/{mcp-CJn_ryMN.js → mcp-xKRDnrcq.js} +2 -2
  32. package/dist/{mcp-CJn_ryMN.js.map → mcp-xKRDnrcq.js.map} +1 -1
  33. package/dist/{non-interactive-0x0Due8h.js → non-interactive-BIHqcW8g.js} +2 -2
  34. package/dist/{non-interactive-0x0Due8h.js.map → non-interactive-BIHqcW8g.js.map} +1 -1
  35. package/dist/{package-manager-CBRR4_i4.js → package-manager-C6R_zpML.js} +2 -2
  36. package/dist/{package-manager-CBRR4_i4.js.map → package-manager-C6R_zpML.js.map} +1 -1
  37. package/dist/{playground-CK617U6k.js → playground-DwL36I2u.js} +7 -7
  38. package/dist/{playground-CK617U6k.js.map → playground-DwL36I2u.js.map} +1 -1
  39. package/dist/{posthog-integration-qRjKkLcu.js → posthog-integration-BhLKCFsI.js} +15 -15
  40. package/dist/{posthog-integration-qRjKkLcu.js.map → posthog-integration-BhLKCFsI.js.map} +1 -1
  41. package/dist/{provisioning-BMXR8fS1.js → provisioning-jVZm2E-A.js} +21 -14
  42. package/dist/provisioning-jVZm2E-A.js.map +1 -0
  43. package/dist/{registry-CsUUdVCd.js → registry-DcoBCMQR.js} +4 -4
  44. package/dist/{registry-CsUUdVCd.js.map → registry-DcoBCMQR.js.map} +1 -1
  45. package/dist/{security-CIP3lpp6.js → security-jxjVsOpd.js} +4 -4
  46. package/dist/{security-CIP3lpp6.js.map → security-jxjVsOpd.js.map} +1 -1
  47. package/dist/{setup-utils-DkyEOBDx.js → setup-utils-BQCl28D8.js} +7 -7
  48. package/dist/{setup-utils-DkyEOBDx.js.map → setup-utils-BQCl28D8.js.map} +1 -1
  49. package/dist/{start-tui-CJlIgYjf.js → start-tui-DgSKFMVh.js} +428 -172
  50. package/dist/start-tui-DgSKFMVh.js.map +1 -0
  51. package/dist/{steps-CuNjxYsA.js → steps-erepgD0V.js} +7 -7
  52. package/dist/{steps-CuNjxYsA.js.map → steps-erepgD0V.js.map} +1 -1
  53. package/dist/{store-UKAJftq6.js → store-C79GoHCQ.js} +30 -8
  54. package/dist/store-C79GoHCQ.js.map +1 -0
  55. package/dist/{subagent-_syej145.js → subagent-aDlD_Ltz.js} +2 -2
  56. package/dist/{subagent-_syej145.js.map → subagent-aDlD_Ltz.js.map} +1 -1
  57. package/dist/{task-stream-Ne-9ZOnf.js → task-stream-0Pk0tPBN.js} +2 -2
  58. package/dist/{task-stream-Ne-9ZOnf.js.map → task-stream-0Pk0tPBN.js.map} +1 -1
  59. package/dist/{tasks-CUvCA1OY.js → tasks-ZkrluXCa.js} +2 -2
  60. package/dist/{tasks-CUvCA1OY.js.map → tasks-ZkrluXCa.js.map} +1 -1
  61. package/dist/{telemetry-DFYgJHH-.js → telemetry-DZShaH-y.js} +3 -3
  62. package/dist/{telemetry-DFYgJHH-.js.map → telemetry-DZShaH-y.js.map} +1 -1
  63. package/dist/{terminal-DLFgIxhg.js → terminal-CEhufbJ4.js} +13 -13
  64. package/dist/terminal-CEhufbJ4.js.map +1 -0
  65. package/dist/{tools-CNyhLqlK.js → tools-BIPMan6l.js} +4 -4
  66. package/dist/{tools-CNyhLqlK.js.map → tools-BIPMan6l.js.map} +1 -1
  67. package/dist/{wizard-abort-BM3pISoR.js → wizard-abort-C14PzXZ8.js} +4 -4
  68. package/dist/{wizard-abort-BM3pISoR.js.map → wizard-abort-C14PzXZ8.js.map} +1 -1
  69. package/dist/{wizard-abort-DCv08-op.js → wizard-abort-UCm4Pd5m.js} +1 -1
  70. package/dist/{wizard-session-BudcixsA.js → wizard-session-BAZql11N.js} +3 -3
  71. package/dist/wizard-session-BAZql11N.js.map +1 -0
  72. package/dist/{wizard-session-DXivb7kv.js → wizard-session-C5lZPPEc.js} +1 -1
  73. package/dist/{wizard-tools-BcuRxp1A.js → wizard-tools-B7SLjCic.js} +3 -3
  74. package/dist/{wizard-tools-BcuRxp1A.js.map → wizard-tools-B7SLjCic.js.map} +1 -1
  75. package/dist/{yara-hooks-GIs-R_g1.js → yara-hooks-CPH8N4yz.js} +3 -3
  76. package/dist/{yara-hooks-GIs-R_g1.js.map → yara-hooks-CPH8N4yz.js.map} +1 -1
  77. package/dist/yara-hooks-VZlj4Lib.js +2 -0
  78. package/package.json +1 -1
  79. package/dist/agent-interface-CUaNjvqq.js.map +0 -1
  80. package/dist/analytics-o-WJHD8Z.js +0 -2
  81. package/dist/debug-DNEQR5DL.js.map +0 -1
  82. package/dist/defaults-CeNThA-1.js.map +0 -1
  83. package/dist/provisioning-BMXR8fS1.js.map +0 -1
  84. package/dist/start-tui-CJlIgYjf.js.map +0 -1
  85. package/dist/store-UKAJftq6.js.map +0 -1
  86. package/dist/terminal-DLFgIxhg.js.map +0 -1
  87. package/dist/wizard-session-BudcixsA.js.map +0 -1
  88. package/dist/yara-hooks-DKbfESYf.js +0 -2
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B_-DWIq7.js";
2
- import { H as POSTHOG_DEV_CLIENT_ID, Z as POSTHOG_US_CLIENT_ID, s as logToFile, st as WIZARD_PROVISIONING_SCOPES, ut as WIZARD_USER_AGENT } from "./debug-DNEQR5DL.js";
3
- import { n as analytics } from "./analytics-C_9Kh6J1.js";
2
+ import { H as POSTHOG_DEV_CLIENT_ID, Q as POSTHOG_US_CLIENT_ID, W as POSTHOG_EU_CLIENT_ID, ct as WIZARD_PROVISIONING_SCOPES, dt as WIZARD_USER_AGENT, s as logToFile } from "./debug-DXfQFmcM.js";
3
+ import { n as analytics } from "./analytics-DSlQuwOT.js";
4
4
  import axios from "axios";
5
5
  import * as crypto from "node:crypto";
6
6
  import { z } from "zod";
@@ -82,23 +82,30 @@ var provisioning_exports = /* @__PURE__ */ __exportAll({
82
82
  const API_VERSION = "0.1d";
83
83
  /**
84
84
  * Provisioning host. Follows a `--base-url` override (and IS_DEV → localhost),
85
- * else the region-agnostic prod provisioning host (always US; the target region
86
- * is passed in the request body).
87
- *
88
- * // TODO: Make this work with EU provisioning.
85
+ * else the prod provisioning host for the target region. Unlike the login OAuth
86
+ * flow (which goes through the region-agnostic `oauth.posthog.com` proxy), the
87
+ * provisioning API is region-specific: an EU account must be created against
88
+ * `eu.posthog.com`, and the subsequent token-exchange / resources calls stay on
89
+ * the same host (they carry the account's bearer token).
89
90
  */
90
- const getProvisioningBaseUrl = (baseUrl) => resolveBaseUrl(baseUrl) ?? "https://us.posthog.com";
91
+ const getProvisioningBaseUrl = (region, baseUrl) => {
92
+ const override = resolveBaseUrl(baseUrl);
93
+ if (override) return override;
94
+ return region === "EU" ? "https://eu.posthog.com" : "https://us.posthog.com";
95
+ };
91
96
  /**
92
97
  * OAuth client ID for provisioning. A pinned base URL means a dev-seeded stack
93
- * that registers the dev client; prod uses the US client.
98
+ * that registers the dev client; prod uses the client registered for the target
99
+ * region (the wizard OAuth app is registered separately per region).
94
100
  *
95
101
  * TODO: same assumption as `getOAuthClientId` in oauth.ts — a pinned base URL is
96
102
  * treated as a dev-seeded instance. Make configurable if we ever point
97
103
  * `--base-url` at a non-dev instance with its own OAuth app.
98
- *
99
- * TODO: Make this work with EU provisioning.
100
104
  */
101
- const getProvisioningClientId = (baseUrl) => resolveBaseUrl(baseUrl) ? POSTHOG_DEV_CLIENT_ID : POSTHOG_US_CLIENT_ID;
105
+ const getProvisioningClientId = (region, baseUrl) => {
106
+ if (resolveBaseUrl(baseUrl)) return POSTHOG_DEV_CLIENT_ID;
107
+ return region === "EU" ? POSTHOG_EU_CLIENT_ID : POSTHOG_US_CLIENT_ID;
108
+ };
102
109
  function generateCodeVerifier() {
103
110
  return crypto.randomBytes(32).toString("base64url");
104
111
  }
@@ -145,13 +152,13 @@ const ResourceResponseSchema = z.object({
145
152
  async function provisionNewAccount(email, name, region = "US", opts) {
146
153
  const codeVerifier = generateCodeVerifier();
147
154
  const codeChallenge = generateCodeChallenge(codeVerifier);
148
- const provisioningBaseUrl = getProvisioningBaseUrl(opts?.baseUrl);
155
+ const provisioningBaseUrl = getProvisioningBaseUrl(region, opts?.baseUrl);
149
156
  logToFile("[provisioning] starting account creation");
150
157
  const accountRes = await axios.post(`${provisioningBaseUrl}/api/agentic/provisioning/account_requests`, {
151
158
  id: crypto.randomUUID(),
152
159
  email,
153
160
  name,
154
- client_id: getProvisioningClientId(opts?.baseUrl),
161
+ client_id: getProvisioningClientId(region, opts?.baseUrl),
155
162
  code_challenge: codeChallenge,
156
163
  code_challenge_method: "S256",
157
164
  scopes: WIZARD_PROVISIONING_SCOPES,
@@ -252,4 +259,4 @@ async function requestDeepLink(accessToken, host, opts) {
252
259
  //#endregion
253
260
  export { getCloudUrl as a, getOAuthUrl as c, detectRegion as i, getUiHostFromHost as l, provisioning_exports as n, getHost as o, requestDeepLink as r, getLlmGatewayUrl as s, provisionNewAccount as t, resolveBaseUrl as u };
254
261
 
255
- //# sourceMappingURL=provisioning-BMXR8fS1.js.map
262
+ //# sourceMappingURL=provisioning-jVZm2E-A.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provisioning-jVZm2E-A.js","names":[],"sources":["../src/utils/urls.ts","../src/utils/provisioning.ts"],"sourcesContent":["import axios from 'axios';\nimport { IS_DEV, WIZARD_USER_AGENT } from '@lib/constants';\nimport type { CloudRegion } from './types';\n\n/**\n * Resolve a pinned PostHog base URL from an optional override. When present, it\n * becomes the single source of truth for every PostHog origin — the\n * API/ingestion host, the cloud/app URL, and the OAuth server — bypassing\n * region resolution entirely.\n *\n * The override lives on the session (`session.baseUrl`, set by `--base-url`) and\n * is threaded in by callers, so there is no hidden module-level state. A `--base-url`\n * value wins; otherwise a dev/test build implies `localhost:8010`; otherwise the\n * result is `undefined`, meaning region-based resolution applies.\n *\n * This is the runtime equivalent of the `IS_DEV` localhost routing: `IS_DEV` is a\n * build-time constant that tsdown compiles out of production builds, so it can't\n * point a shipped wizard at a local stack — `--base-url` can. Both feed this one\n * resolver so every URL helper only asks the question once.\n */\nexport const resolveBaseUrl = (override?: string): string | undefined => {\n return override?.trim() || (IS_DEV ? 'http://localhost:8010' : undefined);\n};\n\nexport const getUiHostFromHost = (host: string) => {\n if (host.includes('us.i.posthog.com')) {\n return 'https://us.posthog.com';\n }\n\n if (host.includes('eu.i.posthog.com')) {\n return 'https://eu.posthog.com';\n }\n\n return host;\n};\n\nexport const getHost = (region: CloudRegion, baseUrl?: string) => {\n const override = resolveBaseUrl(baseUrl);\n if (override) {\n return override;\n }\n\n if (region === 'eu') {\n return 'https://eu.i.posthog.com';\n }\n\n return 'https://us.i.posthog.com';\n};\n\nexport const getCloudUrl = (region: CloudRegion, baseUrl?: string) => {\n const override = resolveBaseUrl(baseUrl);\n if (override) {\n return override;\n }\n\n if (region === 'eu') {\n return 'https://eu.posthog.com';\n }\n\n return 'https://us.posthog.com';\n};\n\nexport async function detectRegion(\n accessToken: string,\n baseUrl?: string,\n): Promise<CloudRegion> {\n // With a pinned base URL there is only one instance to talk to — skip the\n // us/eu probe and default the region label to 'us'. (Covers IS_DEV too, via\n // resolveBaseUrl.) The URLs themselves come from the override, not this label.\n if (resolveBaseUrl(baseUrl)) {\n return 'us';\n }\n\n const headers = {\n Authorization: `Bearer ${accessToken}`,\n 'User-Agent': WIZARD_USER_AGENT,\n };\n\n const [usResult, euResult] = await Promise.allSettled([\n axios.get('https://us.posthog.com/api/users/@me/', { headers }),\n axios.get('https://eu.posthog.com/api/users/@me/', { headers }),\n ]);\n\n if (usResult.status === 'fulfilled') return 'us';\n if (euResult.status === 'fulfilled') return 'eu';\n\n throw new Error(\n 'Could not determine cloud region from access token. Please check your PostHog account.',\n );\n}\n\nexport const getLlmGatewayUrl = (host: string) => {\n if (host.includes('host.docker.internal')) {\n return 'http://host.docker.internal:3308/wizard';\n }\n\n if (host.includes('localhost')) {\n return 'http://localhost:3308/wizard';\n }\n\n if (host.includes('eu.posthog.com') || host.includes('eu.i.posthog.com')) {\n return 'https://gateway.eu.posthog.com/wizard';\n }\n\n return 'https://gateway.us.posthog.com/wizard';\n};\n\n/** Region-agnostic prod OAuth server. Resolves to the right region server-side. */\nconst PROD_OAUTH_URL = 'https://oauth.posthog.com';\n\n/**\n * OAuth server URL. Follows the base-URL override (and thus IS_DEV → localhost),\n * otherwise the region-agnostic prod OAuth host.\n */\nexport const getOAuthUrl = (baseUrl?: string): string =>\n resolveBaseUrl(baseUrl) ?? PROD_OAUTH_URL;\n","/**\n * Provisioning API client for creating new PostHog accounts.\n *\n * Uses the agentic provisioning API with PKCE auth:\n * 1. POST /account_requests - create account, get auth code\n * 2. POST /oauth/token - exchange code for tokens (with PKCE)\n * 3. POST /resources - provision project, get API key\n */\n\nimport * as crypto from 'node:crypto';\nimport axios from 'axios';\nimport { z } from 'zod';\nimport {\n POSTHOG_DEV_CLIENT_ID,\n POSTHOG_EU_CLIENT_ID,\n POSTHOG_US_CLIENT_ID,\n WIZARD_PROVISIONING_SCOPES,\n WIZARD_USER_AGENT,\n} from '@lib/constants';\nimport { resolveBaseUrl } from './urls';\nimport { logToFile } from './debug';\nimport { analytics } from './analytics';\nimport type { HostResolution } from '@lib/host-resolution';\n\nconst API_VERSION = '0.1d';\n\n/**\n * Provisioning host. Follows a `--base-url` override (and IS_DEV → localhost),\n * else the prod provisioning host for the target region. Unlike the login OAuth\n * flow (which goes through the region-agnostic `oauth.posthog.com` proxy), the\n * provisioning API is region-specific: an EU account must be created against\n * `eu.posthog.com`, and the subsequent token-exchange / resources calls stay on\n * the same host (they carry the account's bearer token).\n */\nconst getProvisioningBaseUrl = (\n region: 'US' | 'EU',\n baseUrl?: string,\n): string => {\n const override = resolveBaseUrl(baseUrl);\n if (override) return override;\n return region === 'EU' ? 'https://eu.posthog.com' : 'https://us.posthog.com';\n};\n\n/**\n * OAuth client ID for provisioning. A pinned base URL means a dev-seeded stack\n * that registers the dev client; prod uses the client registered for the target\n * region (the wizard OAuth app is registered separately per region).\n *\n * TODO: same assumption as `getOAuthClientId` in oauth.ts — a pinned base URL is\n * treated as a dev-seeded instance. Make configurable if we ever point\n * `--base-url` at a non-dev instance with its own OAuth app.\n */\nconst getProvisioningClientId = (\n region: 'US' | 'EU',\n baseUrl?: string,\n): string => {\n if (resolveBaseUrl(baseUrl)) return POSTHOG_DEV_CLIENT_ID;\n return region === 'EU' ? POSTHOG_EU_CLIENT_ID : POSTHOG_US_CLIENT_ID;\n};\n\nfunction generateCodeVerifier(): string {\n return crypto.randomBytes(32).toString('base64url');\n}\n\nfunction generateCodeChallenge(verifier: string): string {\n return crypto.createHash('sha256').update(verifier).digest('base64url');\n}\n\n// --- Response schemas ---\n\nconst AccountRequestResponseSchema = z.object({\n id: z.string(),\n type: z.enum(['oauth', 'requires_auth', 'error']),\n oauth: z\n .object({\n code: z.string(),\n })\n .optional(),\n error: z\n .object({\n code: z.string(),\n message: z.string(),\n })\n .optional(),\n});\n\nconst TokenResponseSchema = z.object({\n token_type: z.string(),\n access_token: z.string(),\n refresh_token: z.string(),\n expires_in: z.number(),\n account: z\n .object({\n id: z.string(),\n })\n .optional(),\n});\n\nconst ResourceResponseSchema = z.object({\n status: z.string(),\n id: z.string(),\n service_id: z.string(),\n complete: z\n .object({\n access_configuration: z.object({\n api_key: z.string(),\n host: z.string(),\n personal_api_key: z.string().optional(),\n }),\n })\n .optional(),\n});\n\nexport interface ProvisioningResult {\n accessToken: string;\n refreshToken: string;\n projectApiKey: string;\n host: string;\n personalApiKey?: string;\n projectId: string;\n accountId: string;\n}\n\n/**\n * Create a new PostHog account and provision a project via the provisioning API.\n *\n * This is the \"no browser\" signup path: the wizard collects the email,\n * calls the provisioning API to create the account, and gets back\n * credentials without opening a browser.\n */\nexport async function provisionNewAccount(\n email: string,\n name: string,\n region: 'US' | 'EU' = 'US',\n opts?: { orgName?: string; projectName?: string; baseUrl?: string },\n): Promise<ProvisioningResult> {\n const codeVerifier = generateCodeVerifier();\n const codeChallenge = generateCodeChallenge(codeVerifier);\n const provisioningBaseUrl = getProvisioningBaseUrl(region, opts?.baseUrl);\n\n logToFile('[provisioning] starting account creation');\n\n // Step 1: Create account\n const accountRes = await axios.post(\n `${provisioningBaseUrl}/api/agentic/provisioning/account_requests`,\n {\n id: crypto.randomUUID(),\n email,\n name,\n client_id: getProvisioningClientId(region, opts?.baseUrl),\n code_challenge: codeChallenge,\n code_challenge_method: 'S256',\n scopes: WIZARD_PROVISIONING_SCOPES,\n configuration: {\n region,\n ...(opts?.orgName ? { organization_name: opts.orgName } : {}),\n },\n },\n {\n headers: {\n 'Content-Type': 'application/json',\n 'API-Version': API_VERSION,\n 'User-Agent': WIZARD_USER_AGENT,\n },\n timeout: 30_000,\n },\n );\n\n const accountData = AccountRequestResponseSchema.parse(accountRes.data);\n\n if (accountData.type === 'error') {\n const msg = accountData.error?.message ?? 'Account creation failed';\n analytics.captureException(new Error(msg), {\n step: 'provisioning_account_request',\n error_code: accountData.error?.code,\n });\n throw new Error(msg);\n }\n\n if (accountData.type === 'requires_auth') {\n throw new Error(\n 'This email is already associated with a PostHog account. Please use the login flow instead.',\n );\n }\n\n const code = accountData.oauth?.code;\n if (!code) {\n throw new Error('No authorization code received from account creation');\n }\n\n logToFile('[provisioning] account created, exchanging code for tokens');\n\n // Step 2: Exchange code for tokens\n const tokenRes = await axios.post(\n `${provisioningBaseUrl}/api/agentic/oauth/token`,\n new URLSearchParams({\n grant_type: 'authorization_code',\n code,\n code_verifier: codeVerifier,\n }).toString(),\n {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'API-Version': API_VERSION,\n 'User-Agent': WIZARD_USER_AGENT,\n },\n timeout: 30_000,\n },\n );\n\n const tokenData = TokenResponseSchema.parse(tokenRes.data);\n\n logToFile('[provisioning] tokens received, provisioning resources');\n\n // Step 3: Provision resources\n const resourceRes = await axios.post(\n `${provisioningBaseUrl}/api/agentic/provisioning/resources`,\n {\n service_id: 'analytics',\n ...(opts?.projectName\n ? { configuration: { project_name: opts.projectName } }\n : {}),\n },\n {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${tokenData.access_token}`,\n 'API-Version': API_VERSION,\n 'User-Agent': WIZARD_USER_AGENT,\n },\n timeout: 30_000,\n },\n );\n\n const resourceData = ResourceResponseSchema.parse(resourceRes.data);\n\n if (resourceData.status !== 'complete' || !resourceData.complete) {\n throw new Error('Resource provisioning did not complete');\n }\n\n logToFile('[provisioning] resources provisioned successfully');\n\n return {\n accessToken: tokenData.access_token,\n refreshToken: tokenData.refresh_token,\n projectApiKey: resourceData.complete.access_configuration.api_key,\n host: resourceData.complete.access_configuration.host,\n personalApiKey: resourceData.complete.access_configuration.personal_api_key,\n projectId: resourceData.id,\n accountId: tokenData.account?.id ?? '',\n };\n}\n\n/**\n * Request a one-time deep link URL that logs the user into PostHog\n * and redirects to their project dashboard — or, when `opts.path` is\n * given, to any safe in-app relative path (e.g. the Signals inbox).\n */\nexport async function requestDeepLink(\n accessToken: string,\n host: HostResolution,\n opts?: { purpose?: string; path?: string },\n): Promise<string | null> {\n try {\n const baseUrl = host.appHost;\n\n const res = await axios.post(\n `${baseUrl}/api/agentic/provisioning/deep_links`,\n {\n purpose: opts?.purpose ?? 'dashboard',\n ...(opts?.path ? { path: opts.path } : {}),\n },\n {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n 'API-Version': API_VERSION,\n 'User-Agent': WIZARD_USER_AGENT,\n },\n timeout: 10_000,\n },\n );\n\n const url = res.data?.url;\n if (typeof url === 'string') {\n logToFile(`[provisioning] deep link created: ${url}`);\n return url;\n }\n return null;\n } catch {\n logToFile('[provisioning] deep link request failed, skipping');\n return null;\n }\n}\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B_-DWIq7.js";
2
- import { f as getUI } from "./debug-DNEQR5DL.js";
3
- import { a as createVersionBucket, c as detectAllPackageManagers, i as tryGetPackageJson } from "./setup-utils-DkyEOBDx.js";
2
+ import { f as getUI } from "./debug-DXfQFmcM.js";
3
+ import { a as createVersionBucket, c as detectAllPackageManagers, i as tryGetPackageJson } from "./setup-utils-BQCl28D8.js";
4
4
  import { n as getInstalledPackageVersion, r as hasDeclaredDependency, t as getDeclaredVersion } from "./package-json-CDs1ZVKu.js";
5
- import { a as gradlePackageManager, c as getPackageManagerName$1, i as detectPythonPackageManagers, l as getPythonVersion, n as composerPackageManager, o as swiftPackageManager, r as detectNodePackageManagers, s as detectPackageManager$1, t as bundlerPackageManager, u as getPythonVersionBucket } from "./package-manager-CBRR4_i4.js";
5
+ import { a as gradlePackageManager, c as getPackageManagerName$1, i as detectPythonPackageManagers, l as getPythonVersion, n as composerPackageManager, o as swiftPackageManager, r as detectNodePackageManagers, s as detectPackageManager$1, t as bundlerPackageManager, u as getPythonVersionBucket } from "./package-manager-C6R_zpML.js";
6
6
  import * as semver from "semver";
7
7
  import { major, minVersion } from "semver";
8
8
  import path from "path";
@@ -2909,4 +2909,4 @@ const FRAMEWORK_REGISTRY = {
2909
2909
  //#endregion
2910
2910
  export { SPINNER_MESSAGE as i, registry_exports as n, DEFAULT_PACKAGE_INSTALLATION as r, FRAMEWORK_REGISTRY as t };
2911
2911
 
2912
- //# sourceMappingURL=registry-CsUUdVCd.js.map
2912
+ //# sourceMappingURL=registry-DcoBCMQR.js.map