@posthog/wizard 2.33.0 → 2.34.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-Dhq75Hda.js → add-mcp-server-to-clients-BjH4z7gH.js} +4 -4
- package/dist/{add-mcp-server-to-clients-Dhq75Hda.js.map → add-mcp-server-to-clients-BjH4z7gH.js.map} +1 -1
- package/dist/{agent-interface-DCeQ5Oiw.js → agent-interface-BcUv1qeh.js} +329 -44
- package/dist/agent-interface-BcUv1qeh.js.map +1 -0
- package/dist/{agent-runner-BRajaO84.js → agent-runner-8g_pDAVs.js} +29 -11
- package/dist/agent-runner-8g_pDAVs.js.map +1 -0
- package/dist/{analytics-CU4o3eF8.js → analytics-DQ8IS1Hu.js} +2 -2
- package/dist/{analytics-CU4o3eF8.js.map → analytics-DQ8IS1Hu.js.map} +1 -1
- package/dist/{api-BBRfHEZ-.js → api-EghEV_u9.js} +3 -3
- package/dist/{api-BBRfHEZ-.js.map → api-EghEV_u9.js.map} +1 -1
- package/dist/bin.js +35 -35
- package/dist/check-screens.tsx +25 -0
- package/dist/{ci-install-D-otkGW6.js → ci-install-ouGSf4zp.js} +4 -4
- package/dist/{ci-install-D-otkGW6.js.map → ci-install-ouGSf4zp.js.map} +1 -1
- package/dist/{debug-BewTLNNr.js → debug-BM7yop-T.js} +1 -1
- package/dist/{debug-BGMe1wP6.js → debug-Cn4L5Ype.js} +2 -2
- package/dist/{debug-BGMe1wP6.js.map → debug-Cn4L5Ype.js.map} +1 -1
- package/dist/{environment-G41UFzou.js → environment-D2WUIm8o.js} +3 -3
- package/dist/{environment-G41UFzou.js.map → environment-D2WUIm8o.js.map} +1 -1
- package/dist/{file-utils-D9InAvZd.js → file-utils-CdQn6073.js} +2 -2
- package/dist/{file-utils-D9InAvZd.js.map → file-utils-CdQn6073.js.map} +1 -1
- package/dist/{headless-ui-xjHVVUqe.js → headless-ui-CSqtmW-d.js} +2 -2
- package/dist/{headless-ui-xjHVVUqe.js.map → headless-ui-CSqtmW-d.js.map} +1 -1
- package/dist/{interactive-D2CKikzz.js → interactive-CFGcWw43.js} +2 -2
- package/dist/{interactive-D2CKikzz.js.map → interactive-CFGcWw43.js.map} +1 -1
- package/dist/{mcp-prompt-streaming-FrArGwfv.js → mcp-prompt-streaming-XZSpcXkG.js} +9 -6
- package/dist/mcp-prompt-streaming-XZSpcXkG.js.map +1 -0
- package/dist/{non-interactive-BXx6Q-D0.js → non-interactive-D6eksWIw.js} +2 -2
- package/dist/{non-interactive-BXx6Q-D0.js.map → non-interactive-D6eksWIw.js.map} +1 -1
- package/dist/{package-manager-D9ojA4jO.js → package-manager-Dozr4x6K.js} +2 -2
- package/dist/{package-manager-D9ojA4jO.js.map → package-manager-Dozr4x6K.js.map} +1 -1
- package/dist/{playground-Bgtxrusl.js → playground-BB2O8GyY.js} +5 -5
- package/dist/{playground-Bgtxrusl.js.map → playground-BB2O8GyY.js.map} +1 -1
- package/dist/{posthog-integration-gnC9v4kg.js → posthog-integration-C3m_uR5A.js} +12 -12
- package/dist/{posthog-integration-gnC9v4kg.js.map → posthog-integration-C3m_uR5A.js.map} +1 -1
- package/dist/{provisioning-C3qglLdc.js → provisioning-wMzPfaaP.js} +3 -3
- package/dist/{provisioning-C3qglLdc.js.map → provisioning-wMzPfaaP.js.map} +1 -1
- package/dist/{registry-BVrvFTZ0.js → registry-BfTeAX2z.js} +4 -4
- package/dist/{registry-BVrvFTZ0.js.map → registry-BfTeAX2z.js.map} +1 -1
- package/dist/{setup-utils-CanVlGbX.js → setup-utils-B0oz3raQ.js} +53 -11
- package/dist/setup-utils-B0oz3raQ.js.map +1 -0
- package/dist/{start-tui-YE7bybIr.js → start-tui-B9qDcoGA.js} +148 -29
- package/dist/{start-tui-YE7bybIr.js.map → start-tui-B9qDcoGA.js.map} +1 -1
- package/dist/{steps-N20e4IoE.js → steps-BhERMRRI.js} +7 -7
- package/dist/{steps-N20e4IoE.js.map → steps-BhERMRRI.js.map} +1 -1
- package/dist/{store-D15C9YSW.js → store-J2Rv955W.js} +3 -3
- package/dist/{store-D15C9YSW.js.map → store-J2Rv955W.js.map} +1 -1
- package/dist/{telemetry-DknCDWP6.js → telemetry-BTLJ-YnG.js} +3 -3
- package/dist/{telemetry-DknCDWP6.js.map → telemetry-BTLJ-YnG.js.map} +1 -1
- package/dist/{terminal-Cvv0a-7Q.js → terminal-UwqFnPrL.js} +83 -32
- package/dist/terminal-UwqFnPrL.js.map +1 -0
- package/dist/{urls-DrR6F_A3.js → urls-DAVzgHGZ.js} +2 -2
- package/dist/{urls-DrR6F_A3.js.map → urls-DAVzgHGZ.js.map} +1 -1
- package/dist/{wizard-abort-DMvS0YXD.js → wizard-abort-BAB8yvGF.js} +1 -1
- package/dist/{wizard-abort-Cw818xPr.js → wizard-abort-DqeMgCVr.js} +3 -3
- package/dist/{wizard-abort-Cw818xPr.js.map → wizard-abort-DqeMgCVr.js.map} +1 -1
- package/dist/wizard-ui-WZ48rUgr.js.map +1 -1
- package/package.json +1 -1
- package/dist/agent-interface-DCeQ5Oiw.js.map +0 -1
- package/dist/agent-runner-BRajaO84.js.map +0 -1
- package/dist/mcp-prompt-streaming-FrArGwfv.js.map +0 -1
- package/dist/setup-utils-CanVlGbX.js.map +0 -1
- package/dist/terminal-Cvv0a-7Q.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-BBRfHEZ-.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 // Org-level AI consent gate. Signals drops all findings while\n // this is not true. Null on older orgs (pre-2026-05 default\n // flip) — treat null as \"unknown\", not \"off\".\n is_ai_data_processing_approved: z.boolean().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 // Product opt-ins (TeamSerializer-compat fields on /api/projects/:id).\n // Project-level truth for \"is this product enabled\" — a product can be\n // instrumented from another repo or the snippet, so these settings\n // override repo-local evidence. Null/absent = unknown. Only the\n // opt-ins a signals decision consumes: replay + exception autocapture\n // feed signal-source choices; surveys feeds the surveys-scout tuning.\n session_recording_opt_in: z.boolean().nullish(),\n autocapture_exceptions_opt_in: z.boolean().nullish(),\n surveys_opt_in: z.boolean().nullish(),\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-EghEV_u9.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 // Org-level AI consent gate. Signals drops all findings while\n // this is not true. Null on older orgs (pre-2026-05 default\n // flip) — treat null as \"unknown\", not \"off\".\n is_ai_data_processing_approved: z.boolean().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 // Product opt-ins (TeamSerializer-compat fields on /api/projects/:id).\n // Project-level truth for \"is this product enabled\" — a product can be\n // instrumented from another repo or the snippet, so these settings\n // override repo-local evidence. Null/absent = unknown. Only the\n // opt-ins a signals decision consumes: replay + exception autocapture\n // feed signal-source choices; surveys feeds the surveys-scout tuning.\n session_recording_opt_in: z.boolean().nullish(),\n autocapture_exceptions_opt_in: z.boolean().nullish(),\n surveys_opt_in: z.boolean().nullish(),\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,17 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { I as POSTHOG_DOCS_URL, Q as WIZARD_USER_AGENT, a as getLogFilePath, et as getSkillsBaseUrl, h as LoggingUI, m as setUI, p as getUI, r as debug, s as logToFile, tt as VERSION } from "./debug-
|
|
3
|
-
import { t as analytics } from "./analytics-
|
|
4
|
-
import { r as setEntryCommand } from "./telemetry-
|
|
5
|
-
import { n as isUsingTypeScript } from "./setup-utils-
|
|
6
|
-
import { a as getUiHostFromHost, n as getCloudUrlFromRegion } from "./urls-
|
|
7
|
-
import { o as handleApiError } from "./api-
|
|
2
|
+
import { I as POSTHOG_DOCS_URL, Q as WIZARD_USER_AGENT, a as getLogFilePath, et as getSkillsBaseUrl, h as LoggingUI, m as setUI, p as getUI, r as debug, s as logToFile, tt as VERSION } from "./debug-Cn4L5Ype.js";
|
|
3
|
+
import { t as analytics } from "./analytics-DQ8IS1Hu.js";
|
|
4
|
+
import { r as setEntryCommand } from "./telemetry-BTLJ-YnG.js";
|
|
5
|
+
import { n as isUsingTypeScript } from "./setup-utils-B0oz3raQ.js";
|
|
6
|
+
import { a as getUiHostFromHost, n as getCloudUrlFromRegion } from "./urls-DAVzgHGZ.js";
|
|
7
|
+
import { o as handleApiError } from "./api-EghEV_u9.js";
|
|
8
8
|
import "./wizard-session-CN55LYyZ.js";
|
|
9
|
-
import { r as runCleanups } from "./wizard-abort-
|
|
10
|
-
import { n as isNonInteractiveEnvironment } from "./environment-
|
|
11
|
-
import {
|
|
12
|
-
import { i as SPINNER_MESSAGE } from "./registry-
|
|
13
|
-
import { _ as parseRequirementsTxt, a as StatusPeekTrigger, c as isClearBlock, d as Colors, f as Icons, g as parsePyprojectToml, h as parsePipfile, i as PRODUCT_SUITE_BLOCK, n as FUNNEL_BLOCK, p as HEALTH_CHECK_STEP, r as LINE_CHART_BLOCK, t as posthogIntegrationConfig } from "./posthog-integration-
|
|
14
|
-
import { n as safeReadFile, r as walkProjectFiles, t as IGNORED_DIRS } from "./file-utils-
|
|
9
|
+
import { r as runCleanups } from "./wizard-abort-DqeMgCVr.js";
|
|
10
|
+
import { n as isNonInteractiveEnvironment } from "./environment-D2WUIm8o.js";
|
|
11
|
+
import { D as AUDIT_REPORT_FILE, E as AUDIT_CHECKS_KEY, T as AUDIT_CHECKS_FILE, _ as SETUP_REPORT_FILE, b as fetchSkillMenu, f as AgentSignals, l as recoverOrphanedSettingsBackups, v as WIZARD_TOOL_NAMES } from "./agent-interface-BcUv1qeh.js";
|
|
12
|
+
import { i as SPINNER_MESSAGE } from "./registry-BfTeAX2z.js";
|
|
13
|
+
import { _ as parseRequirementsTxt, a as StatusPeekTrigger, c as isClearBlock, d as Colors, f as Icons, g as parsePyprojectToml, h as parsePipfile, i as PRODUCT_SUITE_BLOCK, n as FUNNEL_BLOCK, p as HEALTH_CHECK_STEP, r as LINE_CHART_BLOCK, t as posthogIntegrationConfig } from "./posthog-integration-C3m_uR5A.js";
|
|
14
|
+
import { n as safeReadFile, r as walkProjectFiles, t as IGNORED_DIRS } from "./file-utils-CdQn6073.js";
|
|
15
15
|
import { n as readApiKeyFromEnv } from "./env-api-key-MlzJYAvt.js";
|
|
16
16
|
import { satisfies } from "semver";
|
|
17
17
|
import yargs from "yargs";
|
|
@@ -227,7 +227,7 @@ function runProvision(argv) {
|
|
|
227
227
|
}
|
|
228
228
|
async function provision({ email, region, name, jsonMode }) {
|
|
229
229
|
try {
|
|
230
|
-
const { provisionNewAccount } = await import("./provisioning-
|
|
230
|
+
const { provisionNewAccount } = await import("./provisioning-wMzPfaaP.js").then((n) => n.n);
|
|
231
231
|
if (!jsonMode) getUI().log.info(`Provisioning account for ${email} in ${region}...`);
|
|
232
232
|
emitResult(await provisionNewAccount(email, name, region), jsonMode);
|
|
233
233
|
process.exit(0);
|
|
@@ -292,22 +292,22 @@ const basicIntegrationCommand = {
|
|
|
292
292
|
setEntryCommand("integrate");
|
|
293
293
|
(async () => {
|
|
294
294
|
if (isHeadless(argv)) {
|
|
295
|
-
const { runHeadlessInstall } = await import("./ci-install-
|
|
295
|
+
const { runHeadlessInstall } = await import("./ci-install-ouGSf4zp.js");
|
|
296
296
|
return runHeadlessInstall(argv);
|
|
297
297
|
}
|
|
298
298
|
if (argv.ci) {
|
|
299
|
-
const { runCIInstall } = await import("./ci-install-
|
|
299
|
+
const { runCIInstall } = await import("./ci-install-ouGSf4zp.js");
|
|
300
300
|
return runCIInstall(argv);
|
|
301
301
|
}
|
|
302
302
|
if (isNonInteractiveEnvironment()) {
|
|
303
|
-
const { failNonInteractive } = await import("./non-interactive-
|
|
303
|
+
const { failNonInteractive } = await import("./non-interactive-D6eksWIw.js");
|
|
304
304
|
return failNonInteractive();
|
|
305
305
|
}
|
|
306
306
|
if (argv.playground) {
|
|
307
|
-
const { runPlayground } = await import("./playground-
|
|
307
|
+
const { runPlayground } = await import("./playground-BB2O8GyY.js");
|
|
308
308
|
return runPlayground();
|
|
309
309
|
}
|
|
310
|
-
const { runInteractive } = await import("./interactive-
|
|
310
|
+
const { runInteractive } = await import("./interactive-CFGcWw43.js");
|
|
311
311
|
runInteractive(argv);
|
|
312
312
|
})();
|
|
313
313
|
}
|
|
@@ -3841,7 +3841,7 @@ function runMcpAdd(argv) {
|
|
|
3841
3841
|
const debug = argv.debug;
|
|
3842
3842
|
const localMcp = argv.local;
|
|
3843
3843
|
try {
|
|
3844
|
-
const { startTUI } = await import("./start-tui-
|
|
3844
|
+
const { startTUI } = await import("./start-tui-B9qDcoGA.js");
|
|
3845
3845
|
const { buildSession } = await import("./wizard-session-BKEdX9mO.js");
|
|
3846
3846
|
const tui = startTUI(VERSION, Program.McpAdd);
|
|
3847
3847
|
tui.store.session = buildSession({
|
|
@@ -3853,7 +3853,7 @@ function runMcpAdd(argv) {
|
|
|
3853
3853
|
} catch (error) {
|
|
3854
3854
|
if (!isTUIUnavailable(error)) throw error;
|
|
3855
3855
|
setUI(new LoggingUI());
|
|
3856
|
-
const { addMCPServerToClientsStep } = await import("./add-mcp-server-to-clients-
|
|
3856
|
+
const { addMCPServerToClientsStep } = await import("./add-mcp-server-to-clients-BjH4z7gH.js").then((n) => n.r);
|
|
3857
3857
|
await addMCPServerToClientsStep({
|
|
3858
3858
|
local: localMcp,
|
|
3859
3859
|
features,
|
|
@@ -3892,7 +3892,7 @@ function runMcpRemove(argv) {
|
|
|
3892
3892
|
const debug = argv.debug;
|
|
3893
3893
|
const localMcp = argv.local;
|
|
3894
3894
|
try {
|
|
3895
|
-
const { startTUI } = await import("./start-tui-
|
|
3895
|
+
const { startTUI } = await import("./start-tui-B9qDcoGA.js");
|
|
3896
3896
|
const { buildSession } = await import("./wizard-session-BKEdX9mO.js");
|
|
3897
3897
|
const tui = startTUI(VERSION, Program.McpRemove);
|
|
3898
3898
|
tui.store.session = buildSession({
|
|
@@ -3901,7 +3901,7 @@ function runMcpRemove(argv) {
|
|
|
3901
3901
|
});
|
|
3902
3902
|
} catch {
|
|
3903
3903
|
setUI(new LoggingUI());
|
|
3904
|
-
const { removeMCPServerFromClientsStep } = await import("./add-mcp-server-to-clients-
|
|
3904
|
+
const { removeMCPServerFromClientsStep } = await import("./add-mcp-server-to-clients-BjH4z7gH.js").then((n) => n.r);
|
|
3905
3905
|
await removeMCPServerFromClientsStep({ local: localMcp });
|
|
3906
3906
|
}
|
|
3907
3907
|
})();
|
|
@@ -3923,7 +3923,7 @@ function runMcpTutorial(argv) {
|
|
|
3923
3923
|
const debug = argv.debug;
|
|
3924
3924
|
const localMcp = argv.local;
|
|
3925
3925
|
try {
|
|
3926
|
-
const { startTUI } = await import("./start-tui-
|
|
3926
|
+
const { startTUI } = await import("./start-tui-B9qDcoGA.js");
|
|
3927
3927
|
const { buildSession } = await import("./wizard-session-BKEdX9mO.js");
|
|
3928
3928
|
const tui = startTUI(VERSION, Program.McpTutorial);
|
|
3929
3929
|
tui.store.session = buildSession({
|
|
@@ -3978,7 +3978,7 @@ function runWizard(config, options) {
|
|
|
3978
3978
|
(async () => {
|
|
3979
3979
|
try {
|
|
3980
3980
|
const installDir = options.installDir || process.cwd();
|
|
3981
|
-
const { startTUI } = await import("./start-tui-
|
|
3981
|
+
const { startTUI } = await import("./start-tui-B9qDcoGA.js");
|
|
3982
3982
|
const { buildSession, RunPhase } = await import("./wizard-session-BKEdX9mO.js");
|
|
3983
3983
|
const { TaskStreamPush } = await import("./task-stream-CPjpHFhI.js");
|
|
3984
3984
|
const { PostHogDestination } = await import("./posthog-DU6JXG00.js");
|
|
@@ -4034,7 +4034,7 @@ function runWizard(config, options) {
|
|
|
4034
4034
|
await activeTui.store.getGate("health-check");
|
|
4035
4035
|
const skipAgent = config.run == null;
|
|
4036
4036
|
if (skipAgent) {
|
|
4037
|
-
const { getOrAskForProjectData } = await import("./setup-utils-
|
|
4037
|
+
const { getOrAskForProjectData } = await import("./setup-utils-B0oz3raQ.js").then((n) => n.r);
|
|
4038
4038
|
const { projectApiKey, host, accessToken, projectId } = await getOrAskForProjectData({
|
|
4039
4039
|
signup: session.signup,
|
|
4040
4040
|
ci: session.ci,
|
|
@@ -4049,7 +4049,7 @@ function runWizard(config, options) {
|
|
|
4049
4049
|
projectId
|
|
4050
4050
|
});
|
|
4051
4051
|
} else {
|
|
4052
|
-
const { runAgent } = await import("./agent-runner-
|
|
4052
|
+
const { runAgent } = await import("./agent-runner-8g_pDAVs.js");
|
|
4053
4053
|
await runAgent(config, activeTui.store.session);
|
|
4054
4054
|
}
|
|
4055
4055
|
const isDone = () => skipAgent ? activeTui.store.session.outroDismissed : activeTui.store.session.skillsComplete;
|
|
@@ -4139,10 +4139,10 @@ function runNonInteractive(config, options, mode) {
|
|
|
4139
4139
|
(async () => {
|
|
4140
4140
|
const path = await import("path");
|
|
4141
4141
|
const { buildSession, RunPhase, OutroKind } = await import("./wizard-session-BKEdX9mO.js");
|
|
4142
|
-
const { readEnvironment } = await import("./environment-
|
|
4142
|
+
const { readEnvironment } = await import("./environment-D2WUIm8o.js").then((n) => n.t);
|
|
4143
4143
|
const { readApiKeyFromEnv } = await import("./env-api-key-MlzJYAvt.js").then((n) => n.t);
|
|
4144
|
-
const { configureLogFileFromEnvironment, logToFile } = await import("./debug-
|
|
4145
|
-
const { wizardAbort, WizardError } = await import("./wizard-abort-
|
|
4144
|
+
const { configureLogFileFromEnvironment, logToFile } = await import("./debug-BM7yop-T.js");
|
|
4145
|
+
const { wizardAbort, WizardError } = await import("./wizard-abort-BAB8yvGF.js");
|
|
4146
4146
|
configureLogFileFromEnvironment();
|
|
4147
4147
|
const env = readEnvironment();
|
|
4148
4148
|
const apiKey = options.apiKey ?? readApiKeyFromEnv() ?? void 0;
|
|
@@ -4169,8 +4169,8 @@ function runNonInteractive(config, options, mode) {
|
|
|
4169
4169
|
let store = null;
|
|
4170
4170
|
let taskStream = null;
|
|
4171
4171
|
if (mode === "headless") {
|
|
4172
|
-
const { WizardStore } = await import("./store-
|
|
4173
|
-
const { HeadlessUI } = await import("./headless-ui-
|
|
4172
|
+
const { WizardStore } = await import("./store-J2Rv955W.js").then((n) => n.n);
|
|
4173
|
+
const { HeadlessUI } = await import("./headless-ui-CSqtmW-d.js");
|
|
4174
4174
|
const { TaskStreamPush, PostHogDestination } = await import("./task-stream-CPjpHFhI.js");
|
|
4175
4175
|
store = new WizardStore(config.id);
|
|
4176
4176
|
store.session = session;
|
|
@@ -4226,7 +4226,7 @@ function runNonInteractive(config, options, mode) {
|
|
|
4226
4226
|
});
|
|
4227
4227
|
}
|
|
4228
4228
|
}
|
|
4229
|
-
const { runAgent } = await import("./agent-runner-
|
|
4229
|
+
const { runAgent } = await import("./agent-runner-8g_pDAVs.js");
|
|
4230
4230
|
await runAgent(config, session);
|
|
4231
4231
|
await settleStream(RunPhase.Completed);
|
|
4232
4232
|
} catch (error) {
|
|
@@ -5153,7 +5153,7 @@ async function runDoctorCI(options) {
|
|
|
5153
5153
|
getUI().intro("Welcome to the PostHog setup wizard");
|
|
5154
5154
|
getUI().log.info("Running posthog-doctor in CI mode");
|
|
5155
5155
|
try {
|
|
5156
|
-
const { getOrAskForProjectData } = await import("./setup-utils-
|
|
5156
|
+
const { getOrAskForProjectData } = await import("./setup-utils-B0oz3raQ.js").then((n) => n.r);
|
|
5157
5157
|
const { host, accessToken, projectId } = await getOrAskForProjectData({
|
|
5158
5158
|
signup: false,
|
|
5159
5159
|
ci: true,
|
|
@@ -5170,7 +5170,7 @@ async function runDoctorCI(options) {
|
|
|
5170
5170
|
for (const issue of sorted) getUI().log.info(` • [${issue.severity}] ${getKindMeta(issue.kind).title}`);
|
|
5171
5171
|
process.exit(1);
|
|
5172
5172
|
} catch (error) {
|
|
5173
|
-
const { ApiError } = await import("./api-
|
|
5173
|
+
const { ApiError } = await import("./api-EghEV_u9.js").then((n) => n.n);
|
|
5174
5174
|
const message = error instanceof ApiError && error.statusCode === 401 ? "Your PostHog API key is invalid or expired." : error instanceof Error ? error.message : String(error);
|
|
5175
5175
|
getUI().log.error(`Doctor failed: ${message}`);
|
|
5176
5176
|
process.exit(1);
|
|
@@ -5247,7 +5247,7 @@ function runSlackConnect(argv) {
|
|
|
5247
5247
|
(async () => {
|
|
5248
5248
|
const debug = argv.debug;
|
|
5249
5249
|
try {
|
|
5250
|
-
const { startTUI } = await import("./start-tui-
|
|
5250
|
+
const { startTUI } = await import("./start-tui-B9qDcoGA.js");
|
|
5251
5251
|
const { buildSession } = await import("./wizard-session-BKEdX9mO.js");
|
|
5252
5252
|
const tui = startTUI(VERSION, Program.SlackConnect);
|
|
5253
5253
|
tui.store.session = buildSession({ debug });
|
package/dist/check-screens.tsx
CHANGED
|
@@ -77,6 +77,31 @@ check(
|
|
|
77
77
|
['/home/dev/.claude/settings.json', 'apiKeyHelper', 'claude auth logout'],
|
|
78
78
|
);
|
|
79
79
|
|
|
80
|
+
check(
|
|
81
|
+
'AuthErrorScreen — managed login names conflicting credentials + places',
|
|
82
|
+
<AuthErrorScreen
|
|
83
|
+
store={fakeStore({
|
|
84
|
+
authErrorDetail: {
|
|
85
|
+
hasSettingsConflict: false,
|
|
86
|
+
usingManagedLogin: true,
|
|
87
|
+
credentialPlaces: [
|
|
88
|
+
'A logged-in Claude session: /home/dev/.claude/.credentials.json',
|
|
89
|
+
'A logged-in Claude session: macOS keychain item "Claude Code-credentials"',
|
|
90
|
+
],
|
|
91
|
+
logFilePath: '/tmp/posthog-wizard.log',
|
|
92
|
+
},
|
|
93
|
+
})}
|
|
94
|
+
/>,
|
|
95
|
+
[
|
|
96
|
+
'Conflicting Anthropic credentials',
|
|
97
|
+
'/home/dev/.claude/.credentials.json',
|
|
98
|
+
'Claude Code-credentials',
|
|
99
|
+
'claude auth logout',
|
|
100
|
+
],
|
|
101
|
+
// Must not fall through to the generic key-guidance copy.
|
|
102
|
+
['Region mismatch'],
|
|
103
|
+
);
|
|
104
|
+
|
|
80
105
|
check(
|
|
81
106
|
'AuthErrorScreen — no conflict falls back to key guidance',
|
|
82
107
|
<AuthErrorScreen
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { h as LoggingUI, m as setUI, p as getUI } from "./debug-
|
|
2
|
-
import { t as provisionNewAccount } from "./provisioning-
|
|
3
|
-
import { t as posthogIntegrationConfig } from "./posthog-integration-
|
|
1
|
+
import { h as LoggingUI, m as setUI, p as getUI } from "./debug-Cn4L5Ype.js";
|
|
2
|
+
import { t as provisionNewAccount } from "./provisioning-wMzPfaaP.js";
|
|
3
|
+
import { t as posthogIntegrationConfig } from "./posthog-integration-C3m_uR5A.js";
|
|
4
4
|
import { c as runWizardCI, s as runWizardHeadless } from "./bin.js";
|
|
5
5
|
//#region src/commands/basic-integration/ci-install.ts
|
|
6
6
|
/**
|
|
@@ -110,4 +110,4 @@ async function provisionForSignup(options) {
|
|
|
110
110
|
//#endregion
|
|
111
111
|
export { runCIInstall, runHeadlessInstall };
|
|
112
112
|
|
|
113
|
-
//# sourceMappingURL=ci-install-
|
|
113
|
+
//# sourceMappingURL=ci-install-ouGSf4zp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci-install-
|
|
1
|
+
{"version":3,"file":"ci-install-ouGSf4zp.js","names":[],"sources":["../src/commands/basic-integration/ci-install.ts"],"sourcesContent":["import type { Arguments } from 'yargs';\nimport { getUI, setUI } from '@ui';\nimport { LoggingUI } from '@ui/logging-ui';\nimport { runWizardCI, runWizardHeadless } from '@lib/runners';\nimport type { NonInteractiveMode } from '@lib/runners';\nimport { provisionNewAccount } from '@utils/provisioning';\nimport { posthogIntegrationConfig } from '@lib/programs/posthog-integration/index';\n\ntype Options = Arguments & {\n region?: string;\n installDir?: string;\n apiKey?: string;\n signup?: boolean;\n email?: string;\n name?: string;\n projectId?: string;\n};\n\n/**\n * CI-mode install entry point (`--ci`, dev/test builds). Thin shell over the\n * shared non-interactive install — see `runNonInteractiveInstall`.\n */\nexport function runCIInstall(argv: Arguments): void {\n runNonInteractiveInstall(argv, 'ci');\n}\n\n/**\n * Headless install entry point (the experimental published-build run path; see\n * @lib/headless-mode). Thin shell over the shared non-interactive install.\n * Today it behaves exactly like `runCIInstall`; it is a separate function so\n * headless can diverge later (auth, prompts, …) without touching the CI path.\n */\nexport function runHeadlessInstall(argv: Arguments): void {\n runNonInteractiveInstall(argv, 'headless');\n}\n\n/**\n * Non-interactive install shared by CI and headless. Validates signup flags,\n * optionally provisions an account, then installs. `mode` only changes\n * user-facing labels, which api-key prefixes are accepted, and which runner is\n * invoked — the install itself is identical (see runNonInteractive).\n */\nfunction runNonInteractiveInstall(\n argv: Arguments,\n mode: NonInteractiveMode,\n): void {\n const options = { ...argv } as Options;\n const headless = mode === 'headless';\n const label = headless ? 'Headless' : 'CI';\n const runWizard = headless ? runWizardHeadless : runWizardCI;\n\n // Base validation (region/install-dir/api-key) is owned by the runner.\n // This layer only adds the signup branch on top.\n if (!options.apiKey && !options.signup) {\n const keyHint = headless\n ? 'personal API key phx_xxx or pha_ OAuth access token'\n : 'personal API key phx_xxx';\n return failCI(\n `${label} mode requires --api-key (${keyHint}). ` +\n 'To create a new account instead, use --signup --email you@example.com.',\n );\n }\n if (!options.apiKey && options.signup && !options.email) {\n return failCI(\n `${label} --signup requires --email to create a new account.`,\n );\n }\n warnOnUnexpectedKeyPrefix(options.apiKey, headless);\n\n void (async () => {\n if (!options.apiKey && options.signup) {\n // Fail before the irreversible provisioning step rather than after it.\n if (!options.installDir) {\n return failCI(\n `${label} mode requires --install-dir (directory to install in)`,\n );\n }\n const provisioned = await provisionForSignup(options);\n options.apiKey = provisioned.personalApiKey;\n if (options.projectId == null) options.projectId = provisioned.projectId;\n }\n runWizard(posthogIntegrationConfig, options);\n })().catch(() => {\n process.exit(1);\n });\n}\n\nfunction failCI(message: string): void {\n setUI(new LoggingUI());\n getUI().intro('PostHog Wizard');\n getUI().log.error(message);\n process.exit(1);\n}\n\n/**\n * Decide whether to warn about an unexpected `--api-key` prefix, and with what\n * message. Returns `null` when the key is acceptable for the mode.\n *\n * This is the one behavioral fork between `--ci` and headless mode: the LLM\n * Gateway accepts a personal API key (`phx_`) in either mode, but in headless\n * a `pha_` OAuth access token is *also* first-class — PostHog mints one under\n * the wizard's own OAuth application for cloud runs and passes it as the\n * api-key. Outside headless that token is unexpected and still warns.\n *\n * Extracted as a pure predicate so the fork can be unit-tested without a UI.\n */\nexport function keyPrefixWarning(\n apiKey: string | undefined,\n headless: boolean,\n): string | null {\n if (!apiKey || apiKey.startsWith('phx_')) return null;\n if (headless && apiKey.startsWith('pha_')) return null;\n const prefix = apiKey.slice(0, 4);\n const hint =\n prefix === 'pha_'\n ? ' (pha_ is an OAuth access token — CI mode expects a personal API key)'\n : prefix === 'phc_'\n ? ' (phc_ is a project/client key — expected a personal API key)'\n : '';\n return `--api-key does not start with \"phx_\"${hint}. Continuing anyway, but the LLM Gateway may reject it with a 401.`;\n}\n\nfunction warnOnUnexpectedKeyPrefix(\n apiKey: string | undefined,\n headless: boolean,\n): void {\n const message = keyPrefixWarning(apiKey, headless);\n if (!message) return;\n setUI(new LoggingUI());\n getUI().intro('PostHog Wizard');\n getUI().log.warn(message);\n}\n\n/**\n * Provision a new account and return its credentials. Throws on any failure\n * (after logging a user-facing message); the caller's `.catch` turns that\n * into a non-zero exit. The return type carries no failure sentinel.\n */\nasync function provisionForSignup(\n options: Options,\n): Promise<{ personalApiKey: string; projectId: string }> {\n setUI(new LoggingUI());\n getUI().intro('PostHog Wizard');\n const signupRegion = ((options.region as string) || 'us').toUpperCase() as\n | 'US'\n | 'EU';\n getUI().log.info(\n `Provisioning new PostHog account for ${String(\n options.email,\n )} in ${signupRegion}...`,\n );\n\n let result;\n try {\n result = await provisionNewAccount(\n options.email as string,\n options.name ?? '',\n signupRegion,\n );\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n getUI().log.error(`Provisioning failed: ${msg}`);\n throw error;\n }\n\n if (!result.personalApiKey) {\n getUI().log.error(\n 'Provisioning succeeded but no personal API key was returned — cannot continue install.',\n );\n throw new Error('provisioning returned no personal API key');\n }\n\n getUI().log.success('Account ready.');\n getUI().log.info(` Project API Key: ${result.projectApiKey}`);\n getUI().log.info(` Personal API Key: ${result.personalApiKey}`);\n getUI().log.info(` Host: ${result.host}`);\n return {\n personalApiKey: result.personalApiKey,\n projectId: result.projectId,\n };\n}\n"],"mappings":";;;;;;;;;AAsBA,SAAgB,aAAa,MAAuB;AAClD,0BAAyB,MAAM,KAAK;;;;;;;;AAStC,SAAgB,mBAAmB,MAAuB;AACxD,0BAAyB,MAAM,WAAW;;;;;;;;AAS5C,SAAS,yBACP,MACA,MACM;CACN,MAAM,UAAU,EAAE,GAAG,MAAM;CAC3B,MAAM,WAAW,SAAS;CAC1B,MAAM,QAAQ,WAAW,aAAa;CACtC,MAAM,YAAY,WAAW,oBAAoB;AAIjD,KAAI,CAAC,QAAQ,UAAU,CAAC,QAAQ,OAI9B,QAAO,OACL,GAAG,MAAM,4BAJK,WACZ,wDACA,2BAE2C,2EAE9C;AAEH,KAAI,CAAC,QAAQ,UAAU,QAAQ,UAAU,CAAC,QAAQ,MAChD,QAAO,OACL,GAAG,MAAM,qDACV;AAEH,2BAA0B,QAAQ,QAAQ,SAAS;AAEnD,EAAM,YAAY;AAChB,MAAI,CAAC,QAAQ,UAAU,QAAQ,QAAQ;AAErC,OAAI,CAAC,QAAQ,WACX,QAAO,OACL,GAAG,MAAM,wDACV;GAEH,MAAM,cAAc,MAAM,mBAAmB,QAAQ;AACrD,WAAQ,SAAS,YAAY;AAC7B,OAAI,QAAQ,aAAa,KAAM,SAAQ,YAAY,YAAY;;AAEjE,YAAU,0BAA0B,QAAQ;KAC1C,CAAC,YAAY;AACf,UAAQ,KAAK,EAAE;GACf;;AAGJ,SAAS,OAAO,SAAuB;AACrC,OAAM,IAAI,WAAW,CAAC;AACtB,QAAO,CAAC,MAAM,iBAAiB;AAC/B,QAAO,CAAC,IAAI,MAAM,QAAQ;AAC1B,SAAQ,KAAK,EAAE;;;;;;;;;;;;;;AAejB,SAAgB,iBACd,QACA,UACe;AACf,KAAI,CAAC,UAAU,OAAO,WAAW,OAAO,CAAE,QAAO;AACjD,KAAI,YAAY,OAAO,WAAW,OAAO,CAAE,QAAO;CAClD,MAAM,SAAS,OAAO,MAAM,GAAG,EAAE;AAOjC,QAAO,uCALL,WAAW,SACP,0EACA,WAAW,SACX,kEACA,GAC6C;;AAGrD,SAAS,0BACP,QACA,UACM;CACN,MAAM,UAAU,iBAAiB,QAAQ,SAAS;AAClD,KAAI,CAAC,QAAS;AACd,OAAM,IAAI,WAAW,CAAC;AACtB,QAAO,CAAC,MAAM,iBAAiB;AAC/B,QAAO,CAAC,IAAI,KAAK,QAAQ;;;;;;;AAQ3B,eAAe,mBACb,SACwD;AACxD,OAAM,IAAI,WAAW,CAAC;AACtB,QAAO,CAAC,MAAM,iBAAiB;CAC/B,MAAM,gBAAiB,QAAQ,UAAqB,MAAM,aAAa;AAGvE,QAAO,CAAC,IAAI,KACV,wCAAwC,OACtC,QAAQ,MACT,CAAC,MAAM,aAAa,KACtB;CAED,IAAI;AACJ,KAAI;AACF,WAAS,MAAM,oBACb,QAAQ,OACR,QAAQ,QAAQ,IAChB,aACD;UACM,OAAO;EACd,MAAM,MAAM,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;AAClE,SAAO,CAAC,IAAI,MAAM,wBAAwB,MAAM;AAChD,QAAM;;AAGR,KAAI,CAAC,OAAO,gBAAgB;AAC1B,SAAO,CAAC,IAAI,MACV,yFACD;AACD,QAAM,IAAI,MAAM,4CAA4C;;AAG9D,QAAO,CAAC,IAAI,QAAQ,iBAAiB;AACrC,QAAO,CAAC,IAAI,KAAK,uBAAuB,OAAO,gBAAgB;AAC/D,QAAO,CAAC,IAAI,KAAK,uBAAuB,OAAO,iBAAiB;AAChE,QAAO,CAAC,IAAI,KAAK,uBAAuB,OAAO,OAAO;AACtD,QAAO;EACL,gBAAgB,OAAO;EACvB,WAAW,OAAO;EACnB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as configureLogFileFromEnvironment, s as logToFile } from "./debug-
|
|
1
|
+
import { n as configureLogFileFromEnvironment, s as logToFile } from "./debug-Cn4L5Ype.js";
|
|
2
2
|
export { configureLogFileFromEnvironment, logToFile };
|
|
@@ -28,7 +28,7 @@ function runtimeEnv(key) {
|
|
|
28
28
|
}
|
|
29
29
|
//#endregion
|
|
30
30
|
//#region src/lib/version.ts
|
|
31
|
-
const VERSION = "2.
|
|
31
|
+
const VERSION = "2.34.0";
|
|
32
32
|
//#endregion
|
|
33
33
|
//#region src/lib/constants.ts
|
|
34
34
|
/**
|
|
@@ -891,4 +891,4 @@ function enableDebugLogs() {
|
|
|
891
891
|
//#endregion
|
|
892
892
|
export { WIZARD_WARLOCK_DISABLED_FLAG_KEY as $, ISSUES_URL as A, POSTHOG_PRIVACY_URL as B, CONTEXT_MILL_RELEASES_URL as C, DETECTION_TIMEOUT_MS as D, DEFAULT_HOST_URL as E, POSTHOG_DEV_CLIENT_ID as F, REMOTE_SKILLS_BASE_URL as G, POSTHOG_PROXY_CLIENT_ID as H, POSTHOG_DOCS_URL as I, WIZARD_ORCHESTRATOR_FLAG_KEY as J, WIZARD_INTERACTION_EVENT_NAME as K, POSTHOG_FLAG_HEADER_PREFIX as L, OAUTH_PORTS as M, OAUTH_TIMEOUT_MS as N, DUMMY_PROJECT_API_KEY as O, POSTHOG_APP_URL as P, WIZARD_USER_AGENT as Q, POSTHOG_OAUTH_URL as R, ANALYTICS_TEAM_TAG as S, DEFAULT_AGENT_MODEL as T, POSTHOG_TERMS_URL as U, POSTHOG_PROPERTY_HEADER_PREFIX as V, POSTHOG_US_CLIENT_ID as W, WIZARD_REMARK_EVENT_NAME as X, WIZARD_PROVISIONING_SCOPES as Y, WIZARD_TOOLS_MENU_FLAG_KEY as Z, SIGNUP_WIZARD_READINESS_CONFIG as _, getLogFilePath as a, ANALYTICS_HOST_URL as b, WIZARD_BENCHMARK_FILE as c, relativeToInstallDir as d, getSkillsBaseUrl as et, skillTmpPath as f, SERVICE_LABELS as g, LoggingUI as h, enableDebugLogs as i, Integration as j, HAIKU_MODEL as k, WIZARD_LOG_FILE as l, setUI as m, configureLogFileFromEnvironment as n, NODE_ENV as nt, initLogFile as o, getUI as p, WIZARD_OAUTH_SCOPES as q, debug as r, runtimeEnv as rt, logToFile as s, configureLogFile as t, VERSION as tt, WIZARD_YARA_REPORT_FILE as u, evaluateWizardReadiness as v, CONTEXT_MILL_URL as w, ANALYTICS_POSTHOG_PUBLIC_PROJECT_WRITE_KEY as x, getBlockingServiceKeys as y, POSTHOG_ORG_AI_SETTINGS_URL as z };
|
|
893
893
|
|
|
894
|
-
//# sourceMappingURL=debug-
|
|
894
|
+
//# sourceMappingURL=debug-Cn4L5Ype.js.map
|