@posthog/wizard 2.24.0 → 2.24.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AiOptInRequiredScreen-DPn1CCeD.js → AiOptInRequiredScreen-_33FOcVo.js} +145 -117
- package/dist/{AiOptInRequiredScreen-DPn1CCeD.js.map → AiOptInRequiredScreen-_33FOcVo.js.map} +1 -1
- package/dist/{add-mcp-server-to-clients-BU8Owthq.js → add-mcp-server-to-clients-CfwEQT_z.js} +4 -4
- package/dist/{add-mcp-server-to-clients-BU8Owthq.js.map → add-mcp-server-to-clients-CfwEQT_z.js.map} +1 -1
- package/dist/{agent-interface-CysYcZl5.js → agent-interface-D1vtN6Wn.js} +5 -5
- package/dist/{agent-interface-CysYcZl5.js.map → agent-interface-D1vtN6Wn.js.map} +1 -1
- package/dist/{agent-runner-Br0OxBxd.js → agent-runner-CBbkS0Ro.js} +8 -8
- package/dist/{agent-runner-Br0OxBxd.js.map → agent-runner-CBbkS0Ro.js.map} +1 -1
- package/dist/{analytics-BOWrR4qd.js → analytics-CUr82BDl.js} +2 -2
- package/dist/{analytics-BOWrR4qd.js.map → analytics-CUr82BDl.js.map} +1 -1
- package/dist/{api-RXTR8yZo.js → api-CI3Z74NG.js} +3 -3
- package/dist/{api-RXTR8yZo.js.map → api-CI3Z74NG.js.map} +1 -1
- package/dist/bin.js +43 -73
- package/dist/bin.js.map +1 -1
- package/dist/{ci-install-BscZ60Ec.js → ci-install-D_kxNmbJ.js} +4 -4
- package/dist/{ci-install-BscZ60Ec.js.map → ci-install-D_kxNmbJ.js.map} +1 -1
- package/dist/{debug-BUdVZP84.js → debug-DxA_f5QT.js} +2 -2
- package/dist/{debug-BUdVZP84.js.map → debug-DxA_f5QT.js.map} +1 -1
- package/dist/{debug-BgH07S-e.js → debug-zMvpNYb2.js} +1 -1
- package/dist/{environment-G0Hv6_JI.js → environment-CyS37cmM.js} +3 -3
- package/dist/{environment-G0Hv6_JI.js.map → environment-CyS37cmM.js.map} +1 -1
- package/dist/{interactive-fh2iyewb.js → interactive-CG6FFqSw.js} +2 -2
- package/dist/{interactive-fh2iyewb.js.map → interactive-CG6FFqSw.js.map} +1 -1
- package/dist/{mcp-prompt-streaming-DUtbxnNy.js → mcp-prompt-streaming-DQz4FSb1.js} +4 -4
- package/dist/{mcp-prompt-streaming-DUtbxnNy.js.map → mcp-prompt-streaming-DQz4FSb1.js.map} +1 -1
- package/dist/{non-interactive-BfqXlY8R.js → non-interactive-DWtHX3ZR.js} +2 -2
- package/dist/{non-interactive-BfqXlY8R.js.map → non-interactive-DWtHX3ZR.js.map} +1 -1
- package/dist/{package-manager-Ca1maxU-.js → package-manager-BWUS4CP0.js} +2 -2
- package/dist/{package-manager-Ca1maxU-.js.map → package-manager-BWUS4CP0.js.map} +1 -1
- package/dist/{playground-4sqLVVJL.js → playground-D7AhMMF5.js} +8 -14
- package/dist/playground-D7AhMMF5.js.map +1 -0
- package/dist/{posthog-integration-Bz3HWkHn.js → posthog-integration-DexZ2uHU.js} +18 -18
- package/dist/{posthog-integration-Bz3HWkHn.js.map → posthog-integration-DexZ2uHU.js.map} +1 -1
- package/dist/{provisioning-CgwvlsIl.js → provisioning-9c-AQbsa.js} +3 -3
- package/dist/{provisioning-CgwvlsIl.js.map → provisioning-9c-AQbsa.js.map} +1 -1
- package/dist/{registry-CEnQVctL.js → registry-CO7JVZyE.js} +4 -4
- package/dist/{registry-CEnQVctL.js.map → registry-CO7JVZyE.js.map} +1 -1
- package/dist/{setup-utils-Doh69vo4.js → setup-utils-0U-_Md2G.js} +8 -8
- package/dist/{setup-utils-Doh69vo4.js.map → setup-utils-0U-_Md2G.js.map} +1 -1
- package/dist/{start-tui-CywbSvZE.js → start-tui-WNb3ET14.js} +16 -20
- package/dist/start-tui-WNb3ET14.js.map +1 -0
- package/dist/{steps-DJojDYQ-.js → steps-BAUXDCC4.js} +6 -6
- package/dist/{steps-DJojDYQ-.js.map → steps-BAUXDCC4.js.map} +1 -1
- package/dist/{telemetry-8zMpaIuK.js → telemetry-ycqCpNPr.js} +3 -3
- package/dist/{telemetry-8zMpaIuK.js.map → telemetry-ycqCpNPr.js.map} +1 -1
- package/dist/{urls-BUfvQmU4.js → urls-C8aJWvgh.js} +2 -2
- package/dist/{urls-BUfvQmU4.js.map → urls-C8aJWvgh.js.map} +1 -1
- package/dist/{wizard-abort-BdGW4Tvi.js → wizard-abort-C6gRLxUE.js} +3 -3
- package/dist/{wizard-abort-BdGW4Tvi.js.map → wizard-abort-C6gRLxUE.js.map} +1 -1
- package/dist/{wizard-abort-Ni-mKJ58.js → wizard-abort-DWXyJdws.js} +1 -1
- package/package.json +1 -1
- package/dist/playground-4sqLVVJL.js.map +0 -1
- package/dist/start-tui-CywbSvZE.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-RXTR8yZo.js","names":[],"sources":["../src/lib/api.ts"],"sourcesContent":["import axios, { AxiosError } from 'axios';\nimport { z } from 'zod';\nimport { analytics } from '@utils/analytics';\nimport { WIZARD_USER_AGENT } from './constants';\n\n/**\n * User payload from `/api/users/@me/`. Schema typed for the fields the\n * wizard actually reads + passthrough on everything else so the full\n * upstream response rides through to the session for downstream features\n * (account-aware copy, plan-gated flows, org/team metadata, etc.).\n *\n * Top-level uses `.passthrough()` so unknown fields aren't stripped;\n * the few nested objects we care about (team, organization,\n * organizations[]) do the same so their additional fields survive too.\n *\n * Keep `distinct_id` required — analytics depends on it. Everything\n * else added here is nullish so partial responses don't fail parsing.\n */\nexport const ApiUserSchema = z\n .object({\n // Identifiers\n distinct_id: z.string(),\n uuid: z.string().nullish(),\n id: z.number().nullish(),\n\n // Profile\n email: z.string().nullish(),\n first_name: z.string().nullish(),\n last_name: z.string().nullish(),\n date_joined: z.string().nullish(),\n is_email_verified: z.boolean().nullish(),\n is_2fa_enabled: z.boolean().nullish(),\n is_staff: z.boolean().nullish(),\n\n // Preferences\n theme_mode: z.string().nullish(),\n toolbar_mode: z.string().nullish(),\n hide_mcp_hints: z.boolean().nullish(),\n\n // Optional / nullable on the backend — pre-onboarding signup paths\n // return null and older accounts may not have it set. Treat as a\n // hint, never a guarantee.\n role_at_organization: z.string().nullish(),\n\n // Current team + organization (objects from the API, kept typed on\n // the fields the wizard uses; passthrough preserves the rest).\n team: z\n .object({\n id: z.number(),\n uuid: z.string().nullish(),\n organization: z.string().uuid(),\n api_token: z.string().nullish(),\n project_id: z.number().nullish(),\n name: z.string().nullish(),\n timezone: z.string().nullish(),\n })\n .passthrough(),\n organization: z\n .object({\n id: z.string().uuid(),\n name: z.string().nullish(),\n slug: z.string().nullish(),\n membership_level: z.number().nullish(),\n customer_id: z.string().nullish(),\n })\n .passthrough(),\n organizations: z.array(\n z\n .object({\n id: z.string().uuid(),\n name: z.string().nullish(),\n membership_level: z.number().nullish(),\n })\n .passthrough(),\n ),\n })\n .passthrough();\n\n/**\n * Single activity log entry the wizard cares about. The PostHog endpoint\n * returns much more — schema kept minimal so changes upstream don't break us.\n *\n * @unused — no current caller after the Phase 6 streaming-agent pivot\n * dropped activity_log polling. Deliberately retained: this is a thin,\n * well-typed wrapper around a stable PostHog endpoint, and we're likely\n * to want it again for a future feature (e.g. \"what changed in your\n * project recently\"). Re-deriving the schema is more work than letting\n * it sit dormant.\n */\nexport const ActivityLogEntrySchema = z\n .object({\n scope: z.string().nullish(),\n activity: z.string().nullish(),\n created_at: z.string().nullish(),\n })\n .passthrough();\n\n/** @unused — see ActivityLogEntrySchema. */\nexport const ActivityLogResponseSchema = z.object({\n results: z.array(ActivityLogEntrySchema),\n});\n\n/** @unused — see ActivityLogEntrySchema. */\nexport type ActivityLogEntry = z.infer<typeof ActivityLogEntrySchema>;\n\nexport const ApiProjectSchema = z.object({\n id: z.number(),\n uuid: z.string().uuid(),\n organization: z.string().uuid(),\n api_token: z.string(),\n name: z.string(),\n});\n\nexport type ApiUser = z.infer<typeof ApiUserSchema>;\nexport type ApiProject = z.infer<typeof ApiProjectSchema>;\n\nexport class ApiError extends Error {\n constructor(\n message: string,\n public readonly statusCode?: number,\n public readonly endpoint?: string,\n ) {\n super(message);\n this.name = 'ApiError';\n }\n}\n\nexport async function fetchUserData(\n accessToken: string,\n baseUrl: string,\n): Promise<ApiUser> {\n try {\n const response = await axios.get(`${baseUrl}/api/users/@me/`, {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'User-Agent': WIZARD_USER_AGENT,\n },\n });\n\n return ApiUserSchema.parse(response.data);\n } catch (error) {\n const apiError = handleApiError(error, 'fetch user data');\n analytics.captureException(apiError, {\n endpoint: '/api/users/@me/',\n baseUrl,\n });\n throw apiError;\n }\n}\n\n/**\n * Best-effort fetch of recent activity log entries. Returns [] on any error\n * so callers can treat absence of results as \"haven't detected anything yet\"\n * rather than a hard failure.\n *\n * @unused — no current caller after the Phase 6 streaming-agent pivot\n * dropped activity_log polling from McpSuggestedPromptsScreen.\n * Deliberately retained for future features that want a soft signal of\n * recent project changes (e.g. dashboards, audit summaries). See the\n * ActivityLogEntrySchema doc comment for the keep-vs-delete rationale.\n */\nexport async function fetchRecentActivity(\n accessToken: string,\n projectId: number,\n baseUrl: string,\n since: Date,\n): Promise<ActivityLogEntry[]> {\n try {\n const response = await axios.get(\n `${baseUrl}/api/projects/${projectId}/activity_log/`,\n {\n params: { limit: 10 },\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'User-Agent': WIZARD_USER_AGENT,\n },\n // Short timeout — best-effort probe, not a critical path.\n timeout: 4000,\n },\n );\n const parsed = ActivityLogResponseSchema.safeParse(response.data);\n if (!parsed.success) return [];\n const sinceMs = since.getTime();\n return parsed.data.results.filter((entry) => {\n if (!entry.created_at) return false;\n const t = Date.parse(entry.created_at);\n return Number.isFinite(t) && t >= sinceMs;\n });\n } catch {\n return [];\n }\n}\n\nexport async function fetchProjectData(\n accessToken: string,\n projectId: number,\n baseUrl: string,\n): Promise<ApiProject> {\n try {\n const response = await axios.get(`${baseUrl}/api/projects/${projectId}/`, {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'User-Agent': WIZARD_USER_AGENT,\n },\n });\n\n return ApiProjectSchema.parse(response.data);\n } catch (error) {\n const apiError = handleApiError(error, 'fetch project data');\n analytics.captureException(apiError, {\n endpoint: `/api/projects/${projectId}/`,\n baseUrl,\n projectId,\n });\n throw apiError;\n }\n}\n\n/** Minimal shape of `/api/projects/:id/integrations/` — we only read `kind`. */\nconst IntegrationsResponseSchema = z.object({\n results: z.array(z.object({ kind: z.string().nullish() }).passthrough()),\n});\n\n/**\n * Check whether the project already has a Slack integration connected.\n * Requires the `integration:read` scope. Throws on failure — callers\n * (including the SlackConnectScreen poll) decide how to degrade and\n * are responsible for capturing the error exactly once.\n */\nexport async function fetchSlackConnected(\n accessToken: string,\n projectId: number,\n baseUrl: string,\n signal?: AbortSignal,\n): Promise<boolean> {\n const response = await axios.get(\n `${baseUrl}/api/projects/${projectId}/integrations/`,\n {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'User-Agent': WIZARD_USER_AGENT,\n },\n signal,\n },\n );\n const parsed = IntegrationsResponseSchema.safeParse(response.data);\n if (!parsed.success) return false;\n return parsed.data.results.some((i) => i.kind === 'slack');\n}\n\nexport function handleApiError(error: unknown, operation: string): ApiError {\n if (axios.isAxiosError(error)) {\n const axiosError = error as AxiosError<{ detail?: string }>;\n const status = axiosError.response?.status;\n const detail = axiosError.response?.data?.detail;\n const endpoint = axiosError.config?.url;\n\n if (status === 401) {\n return new ApiError(\n `Authentication failed while trying to ${operation}`,\n status,\n endpoint,\n );\n }\n\n if (status === 403) {\n return new ApiError(\n `Access denied while trying to ${operation}`,\n status,\n endpoint,\n );\n }\n\n if (status === 404) {\n return new ApiError(\n `Resource not found while trying to ${operation}`,\n status,\n endpoint,\n );\n }\n\n const message = detail || `Failed to ${operation}`;\n return new ApiError(message, status, endpoint);\n }\n\n if (error instanceof z.ZodError) {\n return new ApiError(`Invalid response format while trying to ${operation}`);\n }\n\n return new ApiError(\n `Unexpected error while trying to ${operation}: ${\n error instanceof Error ? error.message : 'Unknown error'\n }`,\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api-CI3Z74NG.js","names":[],"sources":["../src/lib/api.ts"],"sourcesContent":["import axios, { AxiosError } from 'axios';\nimport { z } from 'zod';\nimport { analytics } from '@utils/analytics';\nimport { WIZARD_USER_AGENT } from './constants';\n\n/**\n * User payload from `/api/users/@me/`. Schema typed for the fields the\n * wizard actually reads + passthrough on everything else so the full\n * upstream response rides through to the session for downstream features\n * (account-aware copy, plan-gated flows, org/team metadata, etc.).\n *\n * Top-level uses `.passthrough()` so unknown fields aren't stripped;\n * the few nested objects we care about (team, organization,\n * organizations[]) do the same so their additional fields survive too.\n *\n * Keep `distinct_id` required — analytics depends on it. Everything\n * else added here is nullish so partial responses don't fail parsing.\n */\nexport const ApiUserSchema = z\n .object({\n // Identifiers\n distinct_id: z.string(),\n uuid: z.string().nullish(),\n id: z.number().nullish(),\n\n // Profile\n email: z.string().nullish(),\n first_name: z.string().nullish(),\n last_name: z.string().nullish(),\n date_joined: z.string().nullish(),\n is_email_verified: z.boolean().nullish(),\n is_2fa_enabled: z.boolean().nullish(),\n is_staff: z.boolean().nullish(),\n\n // Preferences\n theme_mode: z.string().nullish(),\n toolbar_mode: z.string().nullish(),\n hide_mcp_hints: z.boolean().nullish(),\n\n // Optional / nullable on the backend — pre-onboarding signup paths\n // return null and older accounts may not have it set. Treat as a\n // hint, never a guarantee.\n role_at_organization: z.string().nullish(),\n\n // Current team + organization (objects from the API, kept typed on\n // the fields the wizard uses; passthrough preserves the rest).\n team: z\n .object({\n id: z.number(),\n uuid: z.string().nullish(),\n organization: z.string().uuid(),\n api_token: z.string().nullish(),\n project_id: z.number().nullish(),\n name: z.string().nullish(),\n timezone: z.string().nullish(),\n })\n .passthrough(),\n organization: z\n .object({\n id: z.string().uuid(),\n name: z.string().nullish(),\n slug: z.string().nullish(),\n membership_level: z.number().nullish(),\n customer_id: z.string().nullish(),\n })\n .passthrough(),\n organizations: z.array(\n z\n .object({\n id: z.string().uuid(),\n name: z.string().nullish(),\n membership_level: z.number().nullish(),\n })\n .passthrough(),\n ),\n })\n .passthrough();\n\n/**\n * Single activity log entry the wizard cares about. The PostHog endpoint\n * returns much more — schema kept minimal so changes upstream don't break us.\n *\n * @unused — no current caller after the Phase 6 streaming-agent pivot\n * dropped activity_log polling. Deliberately retained: this is a thin,\n * well-typed wrapper around a stable PostHog endpoint, and we're likely\n * to want it again for a future feature (e.g. \"what changed in your\n * project recently\"). Re-deriving the schema is more work than letting\n * it sit dormant.\n */\nexport const ActivityLogEntrySchema = z\n .object({\n scope: z.string().nullish(),\n activity: z.string().nullish(),\n created_at: z.string().nullish(),\n })\n .passthrough();\n\n/** @unused — see ActivityLogEntrySchema. */\nexport const ActivityLogResponseSchema = z.object({\n results: z.array(ActivityLogEntrySchema),\n});\n\n/** @unused — see ActivityLogEntrySchema. */\nexport type ActivityLogEntry = z.infer<typeof ActivityLogEntrySchema>;\n\nexport const ApiProjectSchema = z.object({\n id: z.number(),\n uuid: z.string().uuid(),\n organization: z.string().uuid(),\n api_token: z.string(),\n name: z.string(),\n});\n\nexport type ApiUser = z.infer<typeof ApiUserSchema>;\nexport type ApiProject = z.infer<typeof ApiProjectSchema>;\n\nexport class ApiError extends Error {\n constructor(\n message: string,\n public readonly statusCode?: number,\n public readonly endpoint?: string,\n ) {\n super(message);\n this.name = 'ApiError';\n }\n}\n\nexport async function fetchUserData(\n accessToken: string,\n baseUrl: string,\n): Promise<ApiUser> {\n try {\n const response = await axios.get(`${baseUrl}/api/users/@me/`, {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'User-Agent': WIZARD_USER_AGENT,\n },\n });\n\n return ApiUserSchema.parse(response.data);\n } catch (error) {\n const apiError = handleApiError(error, 'fetch user data');\n analytics.captureException(apiError, {\n endpoint: '/api/users/@me/',\n baseUrl,\n });\n throw apiError;\n }\n}\n\n/**\n * Best-effort fetch of recent activity log entries. Returns [] on any error\n * so callers can treat absence of results as \"haven't detected anything yet\"\n * rather than a hard failure.\n *\n * @unused — no current caller after the Phase 6 streaming-agent pivot\n * dropped activity_log polling from McpSuggestedPromptsScreen.\n * Deliberately retained for future features that want a soft signal of\n * recent project changes (e.g. dashboards, audit summaries). See the\n * ActivityLogEntrySchema doc comment for the keep-vs-delete rationale.\n */\nexport async function fetchRecentActivity(\n accessToken: string,\n projectId: number,\n baseUrl: string,\n since: Date,\n): Promise<ActivityLogEntry[]> {\n try {\n const response = await axios.get(\n `${baseUrl}/api/projects/${projectId}/activity_log/`,\n {\n params: { limit: 10 },\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'User-Agent': WIZARD_USER_AGENT,\n },\n // Short timeout — best-effort probe, not a critical path.\n timeout: 4000,\n },\n );\n const parsed = ActivityLogResponseSchema.safeParse(response.data);\n if (!parsed.success) return [];\n const sinceMs = since.getTime();\n return parsed.data.results.filter((entry) => {\n if (!entry.created_at) return false;\n const t = Date.parse(entry.created_at);\n return Number.isFinite(t) && t >= sinceMs;\n });\n } catch {\n return [];\n }\n}\n\nexport async function fetchProjectData(\n accessToken: string,\n projectId: number,\n baseUrl: string,\n): Promise<ApiProject> {\n try {\n const response = await axios.get(`${baseUrl}/api/projects/${projectId}/`, {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'User-Agent': WIZARD_USER_AGENT,\n },\n });\n\n return ApiProjectSchema.parse(response.data);\n } catch (error) {\n const apiError = handleApiError(error, 'fetch project data');\n analytics.captureException(apiError, {\n endpoint: `/api/projects/${projectId}/`,\n baseUrl,\n projectId,\n });\n throw apiError;\n }\n}\n\n/** Minimal shape of `/api/projects/:id/integrations/` — we only read `kind`. */\nconst IntegrationsResponseSchema = z.object({\n results: z.array(z.object({ kind: z.string().nullish() }).passthrough()),\n});\n\n/**\n * Check whether the project already has a Slack integration connected.\n * Requires the `integration:read` scope. Throws on failure — callers\n * (including the SlackConnectScreen poll) decide how to degrade and\n * are responsible for capturing the error exactly once.\n */\nexport async function fetchSlackConnected(\n accessToken: string,\n projectId: number,\n baseUrl: string,\n signal?: AbortSignal,\n): Promise<boolean> {\n const response = await axios.get(\n `${baseUrl}/api/projects/${projectId}/integrations/`,\n {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'User-Agent': WIZARD_USER_AGENT,\n },\n signal,\n },\n );\n const parsed = IntegrationsResponseSchema.safeParse(response.data);\n if (!parsed.success) return false;\n return parsed.data.results.some((i) => i.kind === 'slack');\n}\n\nexport function handleApiError(error: unknown, operation: string): ApiError {\n if (axios.isAxiosError(error)) {\n const axiosError = error as AxiosError<{ detail?: string }>;\n const status = axiosError.response?.status;\n const detail = axiosError.response?.data?.detail;\n const endpoint = axiosError.config?.url;\n\n if (status === 401) {\n return new ApiError(\n `Authentication failed while trying to ${operation}`,\n status,\n endpoint,\n );\n }\n\n if (status === 403) {\n return new ApiError(\n `Access denied while trying to ${operation}`,\n status,\n endpoint,\n );\n }\n\n if (status === 404) {\n return new ApiError(\n `Resource not found while trying to ${operation}`,\n status,\n endpoint,\n );\n }\n\n const message = detail || `Failed to ${operation}`;\n return new ApiError(message, status, endpoint);\n }\n\n if (error instanceof z.ZodError) {\n return new ApiError(`Invalid response format while trying to ${operation}`);\n }\n\n return new ApiError(\n `Unexpected error while trying to ${operation}: ${\n error instanceof Error ? error.message : 'Unknown error'\n }`,\n );\n}\n"],"mappings":"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"}
|
package/dist/bin.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { $ as VERSION, P as POSTHOG_DOCS_URL, Q as getSkillsBaseUrl, Y as WIZARD_USER_AGENT, _ as SIGNUP_WIZARD_READINESS_CONFIG, a as getLogFilePath, h as LoggingUI, m as setUI, p as getUI, s as logToFile, v as evaluateWizardReadiness, y as getBlockingServiceKeys } from "./debug-
|
|
3
|
-
import { t as analytics } from "./analytics-
|
|
4
|
-
import { r as setEntryCommand } from "./telemetry-
|
|
5
|
-
import { n as isUsingTypeScript
|
|
6
|
-
import { a as getUiHostFromHost, n as getCloudUrlFromRegion } from "./urls-
|
|
7
|
-
import { o as handleApiError } from "./api-
|
|
2
|
+
import { $ as VERSION, P as POSTHOG_DOCS_URL, Q as getSkillsBaseUrl, Y as WIZARD_USER_AGENT, _ as SIGNUP_WIZARD_READINESS_CONFIG, a as getLogFilePath, h as LoggingUI, m as setUI, p as getUI, s as logToFile, v as evaluateWizardReadiness, y as getBlockingServiceKeys } from "./debug-DxA_f5QT.js";
|
|
3
|
+
import { t as analytics } from "./analytics-CUr82BDl.js";
|
|
4
|
+
import { r as setEntryCommand } from "./telemetry-ycqCpNPr.js";
|
|
5
|
+
import { n as isUsingTypeScript } from "./setup-utils-0U-_Md2G.js";
|
|
6
|
+
import { a as getUiHostFromHost, n as getCloudUrlFromRegion } from "./urls-C8aJWvgh.js";
|
|
7
|
+
import { o as handleApiError } from "./api-CI3Z74NG.js";
|
|
8
8
|
import "./wizard-session-G3VWD6hv.js";
|
|
9
|
-
import { r as runCleanups } from "./wizard-abort-
|
|
10
|
-
import { n as isNonInteractiveEnvironment } from "./environment-
|
|
11
|
-
import { _ as AUDIT_CHECKS_KEY, f as WIZARD_TOOL_NAMES, g as AUDIT_CHECKS_FILE, l as AgentSignals, m as fetchSkillMenu, s as recoverOrphanedSettingsBackups, v as AUDIT_REPORT_FILE } from "./agent-interface-
|
|
12
|
-
import { i as SPINNER_MESSAGE } from "./registry-
|
|
13
|
-
import { a as PRODUCT_SUITE_BLOCK, f as Colors, i as LINE_CHART_BLOCK, l as isClearBlock, m as HEALTH_CHECK_STEP, n as posthogIntegrationConfig, o as StatusPeekTrigger, p as Icons, r as FUNNEL_BLOCK } from "./posthog-integration-
|
|
9
|
+
import { r as runCleanups } from "./wizard-abort-C6gRLxUE.js";
|
|
10
|
+
import { n as isNonInteractiveEnvironment } from "./environment-CyS37cmM.js";
|
|
11
|
+
import { _ as AUDIT_CHECKS_KEY, f as WIZARD_TOOL_NAMES, g as AUDIT_CHECKS_FILE, l as AgentSignals, m as fetchSkillMenu, s as recoverOrphanedSettingsBackups, v as AUDIT_REPORT_FILE } from "./agent-interface-D1vtN6Wn.js";
|
|
12
|
+
import { i as SPINNER_MESSAGE } from "./registry-CO7JVZyE.js";
|
|
13
|
+
import { a as PRODUCT_SUITE_BLOCK, f as Colors, i as LINE_CHART_BLOCK, l as isClearBlock, m as HEALTH_CHECK_STEP, n as posthogIntegrationConfig, o as StatusPeekTrigger, p as Icons, r as FUNNEL_BLOCK } from "./posthog-integration-DexZ2uHU.js";
|
|
14
14
|
import { t as IGNORED_DIRS } from "./file-utils-VAXoyXVA.js";
|
|
15
15
|
import { n as readApiKeyFromEnv } from "./env-api-key-MlzJYAvt.js";
|
|
16
16
|
import { satisfies } from "semver";
|
|
@@ -184,7 +184,7 @@ function runProvision(argv) {
|
|
|
184
184
|
}
|
|
185
185
|
async function provision({ email, region, name, jsonMode }) {
|
|
186
186
|
try {
|
|
187
|
-
const { provisionNewAccount } = await import("./provisioning-
|
|
187
|
+
const { provisionNewAccount } = await import("./provisioning-9c-AQbsa.js").then((n) => n.n);
|
|
188
188
|
if (!jsonMode) getUI().log.info(`Provisioning account for ${email} in ${region}...`);
|
|
189
189
|
emitResult(await provisionNewAccount(email, name, region), jsonMode);
|
|
190
190
|
process.exit(0);
|
|
@@ -249,18 +249,18 @@ const basicIntegrationCommand = {
|
|
|
249
249
|
setEntryCommand("integrate");
|
|
250
250
|
(async () => {
|
|
251
251
|
if (argv.ci) {
|
|
252
|
-
const { runCIInstall } = await import("./ci-install-
|
|
252
|
+
const { runCIInstall } = await import("./ci-install-D_kxNmbJ.js");
|
|
253
253
|
return runCIInstall(argv);
|
|
254
254
|
}
|
|
255
255
|
if (isNonInteractiveEnvironment()) {
|
|
256
|
-
const { failNonInteractive } = await import("./non-interactive-
|
|
256
|
+
const { failNonInteractive } = await import("./non-interactive-DWtHX3ZR.js");
|
|
257
257
|
return failNonInteractive();
|
|
258
258
|
}
|
|
259
259
|
if (argv.playground) {
|
|
260
|
-
const { runPlayground } = await import("./playground-
|
|
260
|
+
const { runPlayground } = await import("./playground-D7AhMMF5.js");
|
|
261
261
|
return runPlayground();
|
|
262
262
|
}
|
|
263
|
-
const { runInteractive } = await import("./interactive-
|
|
263
|
+
const { runInteractive } = await import("./interactive-CG6FFqSw.js");
|
|
264
264
|
runInteractive(argv);
|
|
265
265
|
})();
|
|
266
266
|
}
|
|
@@ -2475,19 +2475,19 @@ const mcpAddConfig = {
|
|
|
2475
2475
|
screenId: "mcp-add",
|
|
2476
2476
|
isComplete: (s) => s.mcpComplete
|
|
2477
2477
|
},
|
|
2478
|
-
{
|
|
2479
|
-
id: "mcp-suggested-prompts",
|
|
2480
|
-
label: "Suggested prompts",
|
|
2481
|
-
screenId: "mcp-suggested-prompts",
|
|
2482
|
-
show: (s) => s.mcpOutcome === "installed",
|
|
2483
|
-
isComplete: (s) => s.mcpSuggestedPromptsDismissed
|
|
2484
|
-
},
|
|
2485
2478
|
{
|
|
2486
2479
|
id: "slack-connect",
|
|
2487
2480
|
label: "Connect Slack",
|
|
2488
2481
|
screenId: "slack-connect",
|
|
2489
2482
|
show: (s) => s.mcpOutcome === "installed",
|
|
2490
2483
|
isComplete: (s) => s.slackStepDismissed
|
|
2484
|
+
},
|
|
2485
|
+
{
|
|
2486
|
+
id: "mcp-suggested-prompts",
|
|
2487
|
+
label: "Suggested prompts",
|
|
2488
|
+
screenId: "mcp-suggested-prompts",
|
|
2489
|
+
show: (s) => s.mcpOutcome === "installed",
|
|
2490
|
+
isComplete: (s) => s.mcpSuggestedPromptsDismissed
|
|
2491
2491
|
}
|
|
2492
2492
|
]
|
|
2493
2493
|
};
|
|
@@ -2495,10 +2495,10 @@ const mcpAddConfig = {
|
|
|
2495
2495
|
* `wizard mcp remove` — single-step uninstall flow.
|
|
2496
2496
|
*
|
|
2497
2497
|
* DO NOT append `mcp-suggested-prompts` (or any other tutorial-shaped
|
|
2498
|
-
* step) here. A user who just removed MCP is opting OUT of the agent
|
|
2499
|
-
*
|
|
2500
|
-
*
|
|
2501
|
-
*
|
|
2498
|
+
* step) here. A user who just removed MCP is opting OUT of the agent having
|
|
2499
|
+
* access to PostHog; immediately pivoting into a tutorial that asks
|
|
2500
|
+
* them to log in and try prompts is wrong on intent and confusing on
|
|
2501
|
+
* UX. The screen also reads `session.mcpInstalledClients` for its
|
|
2502
2502
|
* Choose-phase copy ("MCP is installed for X") — that array is empty
|
|
2503
2503
|
* post-remove, so the copy would be a lie.
|
|
2504
2504
|
*
|
|
@@ -2551,39 +2551,9 @@ const slackConnectConfig = {
|
|
|
2551
2551
|
id: "slack-connect",
|
|
2552
2552
|
label: "Connect Slack",
|
|
2553
2553
|
screenId: "slack-connect",
|
|
2554
|
-
isComplete: (s) => s.slackStepDismissed
|
|
2555
|
-
onInit: loginForSlackConnect
|
|
2554
|
+
isComplete: (s) => s.slackStepDismissed
|
|
2556
2555
|
}]
|
|
2557
2556
|
};
|
|
2558
|
-
/** OAuth for the standalone flow. The screen shows the auth-wait state
|
|
2559
|
-
* (and the login URL) until the credentials land in the store. */
|
|
2560
|
-
function loginForSlackConnect() {
|
|
2561
|
-
(async () => {
|
|
2562
|
-
try {
|
|
2563
|
-
const data = await getOrAskForProjectData({
|
|
2564
|
-
signup: false,
|
|
2565
|
-
ci: false,
|
|
2566
|
-
apiKey: void 0,
|
|
2567
|
-
projectId: void 0,
|
|
2568
|
-
programId: "slack"
|
|
2569
|
-
});
|
|
2570
|
-
const ui = getUI();
|
|
2571
|
-
ui.setCredentials({
|
|
2572
|
-
accessToken: data.accessToken,
|
|
2573
|
-
projectApiKey: data.projectApiKey,
|
|
2574
|
-
host: data.host,
|
|
2575
|
-
projectId: data.projectId
|
|
2576
|
-
});
|
|
2577
|
-
ui.setRoleAtOrganization(data.roleAtOrganization);
|
|
2578
|
-
ui.setApiUser(data.user);
|
|
2579
|
-
ui.setLoginUrl(null);
|
|
2580
|
-
} catch (err) {
|
|
2581
|
-
analytics.captureException(err instanceof Error ? err : new Error(String(err)), { step: "slack_connect_login" });
|
|
2582
|
-
getUI().log.error(`Login failed. ${err instanceof Error ? err.message : String(err)}`);
|
|
2583
|
-
process.exit(1);
|
|
2584
|
-
}
|
|
2585
|
-
})();
|
|
2586
|
-
}
|
|
2587
2557
|
//#endregion
|
|
2588
2558
|
//#region src/lib/programs/program-registry.ts
|
|
2589
2559
|
const agentSkillConfig = {
|
|
@@ -2678,7 +2648,7 @@ function runMcpAdd(argv) {
|
|
|
2678
2648
|
const debug = argv.debug;
|
|
2679
2649
|
const localMcp = argv.local;
|
|
2680
2650
|
try {
|
|
2681
|
-
const { startTUI } = await import("./start-tui-
|
|
2651
|
+
const { startTUI } = await import("./start-tui-WNb3ET14.js");
|
|
2682
2652
|
const { buildSession } = await import("./wizard-session-wPJtNl4c.js");
|
|
2683
2653
|
const tui = startTUI(VERSION, Program.McpAdd);
|
|
2684
2654
|
tui.store.session = buildSession({
|
|
@@ -2690,7 +2660,7 @@ function runMcpAdd(argv) {
|
|
|
2690
2660
|
} catch (error) {
|
|
2691
2661
|
if (!isTUIUnavailable(error)) throw error;
|
|
2692
2662
|
setUI(new LoggingUI());
|
|
2693
|
-
const { addMCPServerToClientsStep } = await import("./add-mcp-server-to-clients-
|
|
2663
|
+
const { addMCPServerToClientsStep } = await import("./add-mcp-server-to-clients-CfwEQT_z.js").then((n) => n.r);
|
|
2694
2664
|
await addMCPServerToClientsStep({
|
|
2695
2665
|
local: localMcp,
|
|
2696
2666
|
features,
|
|
@@ -2729,7 +2699,7 @@ function runMcpRemove(argv) {
|
|
|
2729
2699
|
const debug = argv.debug;
|
|
2730
2700
|
const localMcp = argv.local;
|
|
2731
2701
|
try {
|
|
2732
|
-
const { startTUI } = await import("./start-tui-
|
|
2702
|
+
const { startTUI } = await import("./start-tui-WNb3ET14.js");
|
|
2733
2703
|
const { buildSession } = await import("./wizard-session-wPJtNl4c.js");
|
|
2734
2704
|
const tui = startTUI(VERSION, Program.McpRemove);
|
|
2735
2705
|
tui.store.session = buildSession({
|
|
@@ -2738,7 +2708,7 @@ function runMcpRemove(argv) {
|
|
|
2738
2708
|
});
|
|
2739
2709
|
} catch {
|
|
2740
2710
|
setUI(new LoggingUI());
|
|
2741
|
-
const { removeMCPServerFromClientsStep } = await import("./add-mcp-server-to-clients-
|
|
2711
|
+
const { removeMCPServerFromClientsStep } = await import("./add-mcp-server-to-clients-CfwEQT_z.js").then((n) => n.r);
|
|
2742
2712
|
await removeMCPServerFromClientsStep({ local: localMcp });
|
|
2743
2713
|
}
|
|
2744
2714
|
})();
|
|
@@ -2760,7 +2730,7 @@ function runMcpTutorial(argv) {
|
|
|
2760
2730
|
const debug = argv.debug;
|
|
2761
2731
|
const localMcp = argv.local;
|
|
2762
2732
|
try {
|
|
2763
|
-
const { startTUI } = await import("./start-tui-
|
|
2733
|
+
const { startTUI } = await import("./start-tui-WNb3ET14.js");
|
|
2764
2734
|
const { buildSession } = await import("./wizard-session-wPJtNl4c.js");
|
|
2765
2735
|
const tui = startTUI(VERSION, Program.McpTutorial);
|
|
2766
2736
|
tui.store.session = buildSession({
|
|
@@ -2815,7 +2785,7 @@ function runWizard(config, options) {
|
|
|
2815
2785
|
(async () => {
|
|
2816
2786
|
try {
|
|
2817
2787
|
const installDir = options.installDir || process.cwd();
|
|
2818
|
-
const { startTUI } = await import("./start-tui-
|
|
2788
|
+
const { startTUI } = await import("./start-tui-WNb3ET14.js");
|
|
2819
2789
|
const { buildSession, RunPhase } = await import("./wizard-session-wPJtNl4c.js");
|
|
2820
2790
|
const { TaskStreamPush } = await import("./task-stream-CZawuzlz.js");
|
|
2821
2791
|
const { PostHogDestination } = await import("./posthog-Cr37rnla.js");
|
|
@@ -2871,7 +2841,7 @@ function runWizard(config, options) {
|
|
|
2871
2841
|
await activeTui.store.getGate("health-check");
|
|
2872
2842
|
const skipAgent = config.run == null;
|
|
2873
2843
|
if (skipAgent) {
|
|
2874
|
-
const { getOrAskForProjectData } = await import("./setup-utils-
|
|
2844
|
+
const { getOrAskForProjectData } = await import("./setup-utils-0U-_Md2G.js").then((n) => n.r);
|
|
2875
2845
|
const { projectApiKey, host, accessToken, projectId } = await getOrAskForProjectData({
|
|
2876
2846
|
signup: session.signup,
|
|
2877
2847
|
ci: session.ci,
|
|
@@ -2886,7 +2856,7 @@ function runWizard(config, options) {
|
|
|
2886
2856
|
projectId
|
|
2887
2857
|
});
|
|
2888
2858
|
} else {
|
|
2889
|
-
const { runAgent } = await import("./agent-runner-
|
|
2859
|
+
const { runAgent } = await import("./agent-runner-CBbkS0Ro.js");
|
|
2890
2860
|
await runAgent(config, activeTui.store.session);
|
|
2891
2861
|
}
|
|
2892
2862
|
const isDone = () => skipAgent ? activeTui.store.session.outroDismissed : activeTui.store.session.skillsComplete;
|
|
@@ -2963,10 +2933,10 @@ function runWizardCI(config, options) {
|
|
|
2963
2933
|
(async () => {
|
|
2964
2934
|
const path = await import("path");
|
|
2965
2935
|
const { buildSession } = await import("./wizard-session-wPJtNl4c.js");
|
|
2966
|
-
const { readEnvironment } = await import("./environment-
|
|
2936
|
+
const { readEnvironment } = await import("./environment-CyS37cmM.js").then((n) => n.t);
|
|
2967
2937
|
const { readApiKeyFromEnv } = await import("./env-api-key-MlzJYAvt.js").then((n) => n.t);
|
|
2968
|
-
const { configureLogFileFromEnvironment, logToFile } = await import("./debug-
|
|
2969
|
-
const { wizardAbort, WizardError } = await import("./wizard-abort-
|
|
2938
|
+
const { configureLogFileFromEnvironment, logToFile } = await import("./debug-zMvpNYb2.js");
|
|
2939
|
+
const { wizardAbort, WizardError } = await import("./wizard-abort-DWXyJdws.js");
|
|
2970
2940
|
configureLogFileFromEnvironment();
|
|
2971
2941
|
const env = readEnvironment();
|
|
2972
2942
|
const apiKey = options.apiKey ?? readApiKeyFromEnv() ?? void 0;
|
|
@@ -3017,7 +2987,7 @@ function runWizardCI(config, options) {
|
|
|
3017
2987
|
})
|
|
3018
2988
|
});
|
|
3019
2989
|
}
|
|
3020
|
-
const { runAgent } = await import("./agent-runner-
|
|
2990
|
+
const { runAgent } = await import("./agent-runner-CBbkS0Ro.js");
|
|
3021
2991
|
await runAgent(config, session);
|
|
3022
2992
|
} catch (error) {
|
|
3023
2993
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
@@ -3796,7 +3766,7 @@ async function runDoctorCI(options) {
|
|
|
3796
3766
|
getUI().intro("Welcome to the PostHog setup wizard");
|
|
3797
3767
|
getUI().log.info("Running posthog-doctor in CI mode");
|
|
3798
3768
|
try {
|
|
3799
|
-
const { getOrAskForProjectData } = await import("./setup-utils-
|
|
3769
|
+
const { getOrAskForProjectData } = await import("./setup-utils-0U-_Md2G.js").then((n) => n.r);
|
|
3800
3770
|
const { host, accessToken, projectId } = await getOrAskForProjectData({
|
|
3801
3771
|
signup: false,
|
|
3802
3772
|
ci: true,
|
|
@@ -3813,7 +3783,7 @@ async function runDoctorCI(options) {
|
|
|
3813
3783
|
for (const issue of sorted) getUI().log.info(` • [${issue.severity}] ${getKindMeta(issue.kind).title}`);
|
|
3814
3784
|
process.exit(1);
|
|
3815
3785
|
} catch (error) {
|
|
3816
|
-
const { ApiError } = await import("./api-
|
|
3786
|
+
const { ApiError } = await import("./api-CI3Z74NG.js").then((n) => n.n);
|
|
3817
3787
|
const message = error instanceof ApiError && error.statusCode === 401 ? "Your PostHog API key is invalid or expired." : error instanceof Error ? error.message : String(error);
|
|
3818
3788
|
getUI().log.error(`Doctor failed: ${message}`);
|
|
3819
3789
|
process.exit(1);
|
|
@@ -3876,7 +3846,7 @@ function runSlackConnect(argv) {
|
|
|
3876
3846
|
(async () => {
|
|
3877
3847
|
const debug = argv.debug;
|
|
3878
3848
|
try {
|
|
3879
|
-
const { startTUI } = await import("./start-tui-
|
|
3849
|
+
const { startTUI } = await import("./start-tui-WNb3ET14.js");
|
|
3880
3850
|
const { buildSession } = await import("./wizard-session-wPJtNl4c.js");
|
|
3881
3851
|
const tui = startTUI(VERSION, Program.SlackConnect);
|
|
3882
3852
|
tui.store.session = buildSession({ debug });
|