@posthog/wizard 2.9.0 → 2.9.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/bin.js +2 -5
- package/dist/bin.js.map +1 -1
- package/dist/src/lib/agent/agent-runner.js +2 -0
- package/dist/src/lib/agent/agent-runner.js.map +1 -1
- package/dist/src/lib/constants.d.ts +1 -1
- package/dist/src/lib/version.d.ts +1 -1
- package/dist/src/lib/version.js +1 -1
- package/dist/src/lib/version.js.map +1 -1
- package/dist/src/lib/workflows/__tests__/agent-skill.test.js +9 -2
- package/dist/src/lib/workflows/__tests__/agent-skill.test.js.map +1 -1
- package/dist/src/lib/workflows/agent-skill/steps.d.ts +2 -2
- package/dist/src/lib/workflows/agent-skill/steps.js +13 -2
- package/dist/src/lib/workflows/agent-skill/steps.js.map +1 -1
- package/dist/src/lib/workflows/posthog-integration/steps.js +3 -3
- package/dist/src/lib/workflows/posthog-integration/steps.js.map +1 -1
- package/dist/src/lib/workflows/revenue-analytics/steps.js +5 -0
- package/dist/src/lib/workflows/revenue-analytics/steps.js.map +1 -1
- package/dist/src/ui/tui/__tests__/store.test.js +49 -3
- package/dist/src/ui/tui/__tests__/store.test.js.map +1 -1
- package/dist/src/ui/tui/flows.d.ts +2 -1
- package/dist/src/ui/tui/flows.js +2 -1
- package/dist/src/ui/tui/flows.js.map +1 -1
- package/dist/src/ui/tui/playground/PlaygroundApp.js +6 -0
- package/dist/src/ui/tui/playground/PlaygroundApp.js.map +1 -1
- package/dist/src/ui/tui/playground/demos/McpDemo.d.ts +12 -0
- package/dist/src/ui/tui/playground/demos/McpDemo.js +27 -0
- package/dist/src/ui/tui/playground/demos/McpDemo.js.map +1 -0
- package/dist/src/ui/tui/primitives/ProgressList.d.ts +1 -3
- package/dist/src/ui/tui/primitives/ProgressList.js +2 -2
- package/dist/src/ui/tui/primitives/ProgressList.js.map +1 -1
- package/dist/src/ui/tui/screen-registry.js +6 -4
- package/dist/src/ui/tui/screen-registry.js.map +1 -1
- package/dist/src/ui/tui/screens/AgentSkillIntroScreen.d.ts +12 -0
- package/dist/src/ui/tui/screens/AgentSkillIntroScreen.js +75 -0
- package/dist/src/ui/tui/screens/AgentSkillIntroScreen.js.map +1 -0
- package/dist/src/ui/tui/screens/IntroScreenLayout.d.ts +46 -0
- package/dist/src/ui/tui/screens/IntroScreenLayout.js +33 -0
- package/dist/src/ui/tui/screens/IntroScreenLayout.js.map +1 -0
- package/dist/src/ui/tui/screens/{SkillsScreen.d.ts → KeepSkillsScreen.d.ts} +3 -3
- package/dist/src/ui/tui/screens/{SkillsScreen.js → KeepSkillsScreen.js} +8 -5
- package/dist/src/ui/tui/screens/KeepSkillsScreen.js.map +1 -0
- package/dist/src/ui/tui/screens/McpScreen.js +4 -1
- package/dist/src/ui/tui/screens/McpScreen.js.map +1 -1
- package/dist/src/ui/tui/screens/PostHogIntegrationIntroScreen.d.ts +15 -0
- package/dist/src/ui/tui/screens/PostHogIntegrationIntroScreen.js +135 -0
- package/dist/src/ui/tui/screens/PostHogIntegrationIntroScreen.js.map +1 -0
- package/dist/src/ui/tui/screens/RevenueIntroScreen.d.ts +3 -3
- package/dist/src/ui/tui/screens/RevenueIntroScreen.js +57 -32
- package/dist/src/ui/tui/screens/RevenueIntroScreen.js.map +1 -1
- package/dist/src/ui/tui/screens/RunScreen.js +1 -1
- package/dist/src/ui/tui/screens/RunScreen.js.map +1 -1
- package/dist/src/ui/tui/store.js +2 -0
- package/dist/src/ui/tui/store.js.map +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/dist/src/ui/tui/screens/IntroScreen.d.ts +0 -16
- package/dist/src/ui/tui/screens/IntroScreen.js +0 -79
- package/dist/src/ui/tui/screens/IntroScreen.js.map +0 -1
- package/dist/src/ui/tui/screens/SkillsScreen.js.map +0 -1
package/dist/bin.js
CHANGED
|
@@ -403,17 +403,14 @@ function runWizard(config, options) {
|
|
|
403
403
|
await tui.store.getGate('intro');
|
|
404
404
|
const { runAgent } = await import('./src/lib/agent/agent-runner.js');
|
|
405
405
|
await runAgent(config, tui.store.session);
|
|
406
|
-
tui.store.onEnterScreen('outro', () => {
|
|
407
|
-
// Screen is already outro — listen for dismissal
|
|
408
|
-
});
|
|
409
406
|
await new Promise((resolve) => {
|
|
410
407
|
const unsub = tui.store.subscribe(() => {
|
|
411
|
-
if (tui.store.session.
|
|
408
|
+
if (tui.store.session.skillsComplete) {
|
|
412
409
|
unsub();
|
|
413
410
|
resolve();
|
|
414
411
|
}
|
|
415
412
|
});
|
|
416
|
-
if (tui.store.session.
|
|
413
|
+
if (tui.store.session.skillsComplete) {
|
|
417
414
|
unsub();
|
|
418
415
|
resolve();
|
|
419
416
|
}
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../bin.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\nimport { satisfies } from 'semver';\nimport { red } from './src/utils/logging';\n\nimport yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\nimport { VERSION } from './src/lib/version.js';\n\nconst WIZARD_VERSION = VERSION;\n\nconst NODE_VERSION_RANGE = '>=18.17.0';\n\n// Have to run this above the other imports because they are importing clack that\n// has the problematic imports.\nif (!satisfies(process.version, NODE_VERSION_RANGE)) {\n red(\n `PostHog wizard requires Node.js ${NODE_VERSION_RANGE}. You are using Node.js ${process.version}. Please upgrade your Node.js version.`,\n );\n process.exit(1);\n}\n\nimport { isNonInteractiveEnvironment } from './src/utils/environment';\nimport { getUI, setUI } from './src/ui';\nimport { LoggingUI } from './src/ui/logging-ui';\nimport { getSubcommandWorkflows } from './src/lib/workflows/workflow-registry';\nimport type { WorkflowConfig } from './src/lib/workflows/workflow-step';\nimport type { WizardSession } from './src/lib/wizard-session';\n\nif (process.env.NODE_ENV === 'test') {\n void (async () => {\n try {\n const { server } = await import('./e2e-tests/mocks/server.js');\n server.listen({\n onUnhandledRequest: 'bypass',\n });\n } catch (error) {\n // Mock server import failed - this can happen during non-E2E tests\n }\n })();\n}\n\n/** Shared yargs options for skill-based workflow subcommands. */\nconst skillSubcommandOptions = {\n debug: {\n default: false,\n describe: 'Enable verbose logging',\n type: 'boolean' as const,\n },\n 'install-dir': {\n describe: 'Directory to install in',\n type: 'string' as const,\n },\n 'local-mcp': {\n default: false,\n describe: 'Use local MCP server',\n type: 'boolean' as const,\n },\n benchmark: {\n default: false,\n describe: 'Run in benchmark mode',\n type: 'boolean' as const,\n },\n 'yara-report': {\n default: false,\n describe: 'Print YARA scanner summary',\n type: 'boolean' as const,\n hidden: true,\n },\n};\n\nconst cli = yargs(hideBin(process.argv))\n .env('POSTHOG_WIZARD')\n // global options\n .options({\n debug: {\n default: false,\n describe: 'Enable verbose logging\\nenv: POSTHOG_WIZARD_DEBUG',\n type: 'boolean',\n },\n region: {\n describe: 'PostHog cloud region\\nenv: POSTHOG_WIZARD_REGION',\n choices: ['us', 'eu'],\n type: 'string',\n },\n default: {\n default: true,\n describe:\n 'Use default options for all prompts\\nenv: POSTHOG_WIZARD_DEFAULT',\n type: 'boolean',\n },\n signup: {\n default: false,\n describe:\n 'Create a new PostHog account during setup\\nenv: POSTHOG_WIZARD_SIGNUP',\n type: 'boolean',\n },\n 'local-mcp': {\n default: false,\n describe:\n 'Use local MCP server at http://localhost:8787/mcp\\nenv: POSTHOG_WIZARD_LOCAL_MCP',\n type: 'boolean',\n },\n ci: {\n default: false,\n describe:\n 'Enable CI mode for non-interactive execution\\nenv: POSTHOG_WIZARD_CI',\n type: 'boolean',\n },\n 'api-key': {\n describe:\n 'PostHog personal API key (phx_xxx) for authentication\\nenv: POSTHOG_WIZARD_API_KEY',\n type: 'string',\n },\n 'project-id': {\n describe:\n 'PostHog project ID to use (optional; when not set, uses default from API key or OAuth)\\nenv: POSTHOG_WIZARD_PROJECT_ID',\n type: 'string',\n },\n })\n .command(\n ['$0'],\n 'Run the PostHog setup wizard',\n (yargs) => {\n return yargs.options({\n 'force-install': {\n default: false,\n describe:\n 'Force install packages even if peer dependency checks fail\\nenv: POSTHOG_WIZARD_FORCE_INSTALL',\n type: 'boolean',\n },\n 'install-dir': {\n describe:\n 'Directory to install PostHog in\\nenv: POSTHOG_WIZARD_INSTALL_DIR',\n type: 'string',\n },\n playground: {\n default: false,\n describe: 'Launch the TUI primitives playground',\n type: 'boolean',\n },\n integration: {\n describe: 'Integration to set up',\n choices: [\n 'nextjs',\n 'astro',\n 'react',\n 'svelte',\n 'react-native',\n 'tanstack-router',\n 'tanstack-start',\n ],\n type: 'string',\n },\n menu: {\n default: false,\n describe:\n 'Show menu for manual integration selection instead of auto-detecting\\nenv: POSTHOG_WIZARD_MENU',\n type: 'boolean',\n },\n benchmark: {\n default: false,\n describe:\n 'Run in benchmark mode with per-phase token tracking\\nenv: POSTHOG_WIZARD_BENCHMARK',\n type: 'boolean',\n },\n 'yara-report': {\n default: false,\n describe:\n 'Print YARA scanner summary after the agent run\\nenv: POSTHOG_WIZARD_YARA_REPORT',\n type: 'boolean',\n hidden: true,\n },\n skill: {\n describe:\n 'Run a specific context-mill skill by ID\\nenv: POSTHOG_WIZARD_SKILL',\n type: 'string',\n },\n });\n },\n (argv) => {\n const options = { ...argv };\n\n // CI mode validation and TTY check\n if (options.ci) {\n if (!options.region) options.region = 'us';\n if (!options.apiKey) {\n setUI(new LoggingUI());\n getUI().intro('PostHog Wizard');\n getUI().log.error(\n 'CI mode requires --api-key (personal API key phx_xxx)',\n );\n process.exit(1);\n return;\n }\n if (!options.installDir) {\n setUI(new LoggingUI());\n getUI().intro('PostHog Wizard');\n getUI().log.error(\n 'CI mode requires --install-dir (directory to install in)',\n );\n process.exit(1);\n return;\n }\n void (async () => {\n const { posthogIntegrationConfig } = await import(\n './src/lib/workflows/posthog-integration/index.js'\n );\n const { FRAMEWORK_REGISTRY } = await import('./src/lib/registry.js');\n const { detectFramework, gatherFrameworkContext } = await import(\n './src/lib/detection/index.js'\n );\n const { analytics } = await import('./src/utils/analytics.js');\n const { wizardAbort } = await import('./src/utils/wizard-abort.js');\n\n // preRun: honor --integration, else auto-detect, then gather\n // framework context. Bypasses onReady hooks by design.\n runWizardCI(posthogIntegrationConfig, options, async (session) => {\n const integration =\n session.integration ??\n (await detectFramework(session.installDir));\n if (!integration) {\n await wizardAbort({\n message:\n 'Could not auto-detect your framework. Please specify --integration on the command line.',\n });\n return;\n }\n session.integration = integration;\n analytics.setTag('integration', integration);\n\n const frameworkConfig = FRAMEWORK_REGISTRY[integration];\n session.frameworkConfig = frameworkConfig;\n\n const context = await gatherFrameworkContext(frameworkConfig, {\n installDir: session.installDir,\n debug: session.debug,\n forceInstall: session.forceInstall,\n default: false,\n signup: session.signup,\n localMcp: session.localMcp,\n ci: true,\n menu: session.menu,\n benchmark: session.benchmark,\n yaraReport: session.yaraReport,\n });\n for (const [key, value] of Object.entries(context)) {\n if (!(key in session.frameworkContext)) {\n session.frameworkContext[key] = value;\n }\n }\n });\n })();\n } else if (isNonInteractiveEnvironment()) {\n // Non-interactive non-CI: error out\n getUI().intro(`PostHog Wizard`);\n getUI().log.error(\n 'This installer requires an interactive terminal (TTY) to run.\\n' +\n 'It appears you are running in a non-interactive environment.\\n' +\n 'Please run the wizard in an interactive terminal.\\n\\n' +\n 'For CI/CD environments, use --ci mode:\\n' +\n ' npx @posthog/wizard --ci --region us --api-key phx_xxx',\n );\n process.exit(1);\n } else if (options.playground) {\n // Playground mode: launch the TUI primitives playground\n void (async () => {\n const { startPlayground } = await import(\n './src/ui/tui/playground/start-playground.js'\n );\n (startPlayground as (version: string) => void)(WIZARD_VERSION);\n })();\n } else if (options.skill) {\n // Run a specific skill by ID\n void (async () => {\n const { createSkillWorkflow } = await import(\n './src/lib/workflows/agent-skill/index.js'\n );\n const skillId = options.skill as string;\n const config = createSkillWorkflow({\n skillId,\n command: 'skill',\n flowKey: 'agent-skill',\n description: `Run skill: ${skillId}`,\n integrationLabel: skillId,\n successMessage: `${skillId} completed!`,\n reportFile: `posthog-${skillId}-report.md`,\n docsUrl: 'https://posthog.com/docs',\n spinnerMessage: `Running ${skillId}...`,\n estimatedDurationMinutes: 5,\n });\n runWizard(config, options);\n })();\n } else {\n // Interactive TTY: run core-integration through the unified workflow path.\n // Same codepath as `npx @posthog/wizard integrate`.\n void (async () => {\n const { posthogIntegrationConfig } = await import(\n './src/lib/workflows/posthog-integration/index.js'\n );\n runWizard(posthogIntegrationConfig, options);\n })();\n }\n },\n )\n .command('mcp <command>', 'MCP server management commands', (yargs) => {\n return yargs\n .command(\n 'add',\n 'Install PostHog MCP server to supported clients',\n (yargs) => {\n return yargs.options({\n local: {\n default: false,\n describe:\n 'Add local development MCP server (http://localhost:8787)',\n type: 'boolean',\n },\n features: {\n describe:\n 'Comma-separated list of features to enable (default: all)',\n type: 'string',\n },\n 'api-key': {\n describe:\n 'PostHog personal API key (phx_xxx) for MCP authentication',\n type: 'string',\n },\n });\n },\n (argv) => {\n const options = { ...argv };\n const mcpFeatures = options.features\n ?.split(',')\n .map((s) => s.trim())\n .filter(Boolean);\n void (async () => {\n const { readApiKeyFromEnv } = await import(\n './src/utils/env-api-key.js'\n );\n const apiKey =\n (options.apiKey as string | undefined) || readApiKeyFromEnv();\n\n try {\n const { startTUI } = await import('./src/ui/tui/start-tui.js');\n const { buildSession } = await import(\n './src/lib/wizard-session.js'\n );\n\n const { Flow } = await import('./src/ui/tui/router.js');\n const tui = startTUI(WIZARD_VERSION, Flow.McpAdd);\n const session = buildSession({\n debug: options.debug,\n localMcp: options.local,\n mcpFeatures,\n apiKey,\n });\n tui.store.session = session;\n } catch {\n // TUI unavailable — fallback to logging\n setUI(new LoggingUI());\n const { addMCPServerToClientsStep } = await import(\n './src/steps/add-mcp-server-to-clients/index.js'\n );\n await addMCPServerToClientsStep({\n local: options.local,\n features: mcpFeatures,\n apiKey,\n });\n }\n })();\n },\n )\n .command(\n 'remove',\n 'Remove PostHog MCP server from supported clients',\n (yargs) => {\n return yargs.options({\n local: {\n default: false,\n describe:\n 'Remove local development MCP server (http://localhost:8787)',\n type: 'boolean',\n },\n });\n },\n (argv) => {\n const options = { ...argv };\n void (async () => {\n try {\n const { startTUI } = await import('./src/ui/tui/start-tui.js');\n const { buildSession } = await import(\n './src/lib/wizard-session.js'\n );\n\n const { Flow } = await import('./src/ui/tui/router.js');\n const tui = startTUI(WIZARD_VERSION, Flow.McpRemove);\n const session = buildSession({\n debug: options.debug,\n localMcp: options.local,\n });\n tui.store.session = session;\n } catch {\n // TUI unavailable — fallback to logging\n setUI(new LoggingUI());\n const { removeMCPServerFromClientsStep } = await import(\n './src/steps/add-mcp-server-to-clients/index.js'\n );\n await removeMCPServerFromClientsStep({\n local: options.local,\n });\n }\n })();\n },\n )\n .demandCommand(1, 'You must specify a subcommand (add or remove)')\n .help();\n });\n\n// ── Skill-based workflow subcommands (derived from registry) ─────────\nfor (const wfConfig of getSubcommandWorkflows()) {\n cli.command(\n wfConfig.command!,\n wfConfig.description,\n (y) => y.options(skillSubcommandOptions),\n (argv) => {\n const options = { ...argv };\n if (options.ci) {\n runWizardCI(wfConfig, options);\n } else {\n runWizard(wfConfig, options);\n }\n },\n );\n}\n\ncli\n .help()\n .alias('help', 'h')\n .version()\n .alias('version', 'v')\n .wrap(process.stdout.isTTY ? yargs.terminalWidth() : 80).argv;\n\n/**\n * Run a full wizard workflow in the TUI. Handles the full lifecycle: start TUI,\n * build session, run detection, wait for intro gate, execute the\n * agent pipeline, wait for outro dismissal, then exit.\n */\nfunction runWizard(\n config: WorkflowConfig,\n options: Record<string, unknown>,\n): void {\n void (async () => {\n try {\n const installDir = (options.installDir as string) || process.cwd();\n\n const { startTUI } = await import('./src/ui/tui/start-tui.js');\n const { buildSession } = await import('./src/lib/wizard-session.js');\n\n // flowKey values match Flow enum values by convention\n const tui = startTUI(WIZARD_VERSION, config.flowKey as any);\n\n const session = buildSession({\n debug: options.debug as boolean | undefined,\n forceInstall: options.forceInstall as boolean | undefined,\n localMcp: options.localMcp as boolean | undefined,\n installDir,\n ci: false,\n signup: options.signup as boolean | undefined,\n apiKey: options.apiKey as string | undefined,\n projectId: options.projectId as string | undefined,\n menu: options.menu as boolean | undefined,\n integration: options.integration as any,\n benchmark: options.benchmark as boolean | undefined,\n yaraReport: options.yaraReport as boolean | undefined,\n });\n // Set workflow metadata for TUI display\n session.workflowLabel = config.flowKey;\n const runDef = typeof config.run === 'object' ? config.run : null;\n session.skillId = runDef?.skillId ?? null;\n\n tui.store.session = session;\n\n await tui.store.runReadyHooks();\n await tui.store.getGate('intro');\n\n const { runAgent } = await import('./src/lib/agent/agent-runner.js');\n await runAgent(config, tui.store.session);\n\n tui.store.onEnterScreen('outro' as any, () => {\n // Screen is already outro — listen for dismissal\n });\n await new Promise<void>((resolve) => {\n const unsub = tui.store.subscribe(() => {\n if (tui.store.session.outroDismissed) {\n unsub();\n resolve();\n }\n });\n if (tui.store.session.outroDismissed) {\n unsub();\n resolve();\n }\n });\n process.exit(0);\n } catch (err) {\n if (process.env.DEBUG || process.env.POSTHOG_WIZARD_DEBUG) {\n console.error('TUI init failed:', err); // eslint-disable-line no-console\n }\n }\n })();\n}\n\n/**\n * CI-mode pipeline shared by every non-interactive entry point.\n *\n * Validates flags, builds a `ci:true` session, runs `preRun` (or the\n * workflow's `onReady` hooks by default), executes `runAgent`, and\n * routes any failure through `wizardAbort`. `wizardAbort` owns all\n * exits — never add a raw `process.exit` here.\n */\nfunction runWizardCI(\n config: WorkflowConfig,\n options: Record<string, unknown>,\n preRun?: (session: WizardSession) => Promise<void>,\n): void {\n setUI(new LoggingUI());\n if (!options.region) options.region = 'us';\n if (!options.apiKey) {\n getUI().intro('PostHog Wizard');\n getUI().log.error('CI mode requires --api-key (personal API key phx_xxx)');\n process.exit(1);\n }\n if (!options.installDir) {\n getUI().intro('PostHog Wizard');\n getUI().log.error(\n 'CI mode requires --install-dir (directory to install in)',\n );\n process.exit(1);\n }\n\n void (async () => {\n const path = await import('path');\n const { buildSession } = await import('./src/lib/wizard-session.js');\n const { readEnvironment } = await import('./src/utils/environment.js');\n const { readApiKeyFromEnv } = await import('./src/utils/env-api-key.js');\n const { configureLogFileFromEnvironment, logToFile } = await import(\n './src/utils/debug.js'\n );\n const { wizardAbort, WizardError } = await import(\n './src/utils/wizard-abort.js'\n );\n\n configureLogFileFromEnvironment();\n\n const env = readEnvironment();\n const apiKey =\n (options.apiKey as string) ?? readApiKeyFromEnv() ?? undefined;\n const installDir = path.isAbsolute(options.installDir as string)\n ? (options.installDir as string)\n : path.join(process.cwd(), options.installDir as string);\n\n const session = buildSession({\n debug: options.debug as boolean | undefined,\n forceInstall: options.forceInstall as boolean | undefined,\n installDir,\n ci: true,\n signup: options.signup as boolean | undefined,\n localMcp: options.localMcp as boolean | undefined,\n apiKey,\n menu: options.menu as boolean | undefined,\n integration: options.integration as any, // eslint-disable-line @typescript-eslint/no-explicit-any\n projectId: options.projectId as string | undefined,\n benchmark: options.benchmark as boolean | undefined,\n yaraReport: options.yaraReport as boolean | undefined,\n ...env,\n });\n session.workflowLabel = config.flowKey;\n const runDef = typeof config.run === 'object' ? config.run : null;\n session.skillId = runDef?.skillId ?? null;\n\n getUI().intro('Welcome to the PostHog setup wizard');\n getUI().log.info(`Running ${config.flowKey} in CI mode`);\n\n try {\n if (preRun) {\n await preRun(session);\n } else {\n // Run onReady hooks against a minimal store-less context.\n const readyCtx = {\n session,\n setFrameworkContext: (key: string, value: unknown) => {\n session.frameworkContext[key] = value;\n },\n setFrameworkConfig: () => undefined,\n setDetectedFramework: () => undefined,\n setUnsupportedVersion: () => undefined,\n addDiscoveredFeature: () => undefined,\n setDetectionComplete: () => undefined,\n };\n for (const step of config.steps) {\n if (step.onReady) {\n await step.onReady(readyCtx);\n }\n }\n\n // Surface detectError written by the workflow's detect hook.\n const detectError = session.frameworkContext.detectError as\n | { kind: string; [k: string]: unknown }\n | undefined;\n if (detectError) {\n await wizardAbort({\n message: `Prerequisites not met: ${detectError.kind}\\n\\nSee ${\n runDef?.docsUrl ?? 'https://posthog.com/docs'\n }`,\n error: new WizardError(`${config.flowKey} prerequisites failed`, {\n integration: config.flowKey,\n detect_error_kind: detectError.kind,\n }),\n });\n }\n }\n\n const { runAgent } = await import('./src/lib/agent/agent-runner.js');\n await runAgent(config, session);\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n const errorStack =\n error instanceof Error && error.stack ? error.stack : undefined;\n\n logToFile(`[bin.ts CI] ERROR: ${errorMessage}`);\n if (errorStack) logToFile(`[bin.ts CI] STACK: ${errorStack}`);\n\n const debugInfo = session.debug && errorStack ? `\\n\\n${errorStack}` : '';\n const docsUrl =\n session.frameworkConfig?.metadata.docsUrl ??\n runDef?.docsUrl ??\n 'https://posthog.com/docs';\n await wizardAbort({\n message: `Something went wrong: ${errorMessage}\\n\\nYou can read the documentation at ${docsUrl} to set up manually.${debugInfo}`,\n error: error as Error,\n });\n }\n })();\n}\n"]}
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../bin.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\nimport { satisfies } from 'semver';\nimport { red } from './src/utils/logging';\n\nimport yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\nimport { VERSION } from './src/lib/version.js';\n\nconst WIZARD_VERSION = VERSION;\n\nconst NODE_VERSION_RANGE = '>=18.17.0';\n\n// Have to run this above the other imports because they are importing clack that\n// has the problematic imports.\nif (!satisfies(process.version, NODE_VERSION_RANGE)) {\n red(\n `PostHog wizard requires Node.js ${NODE_VERSION_RANGE}. You are using Node.js ${process.version}. Please upgrade your Node.js version.`,\n );\n process.exit(1);\n}\n\nimport { isNonInteractiveEnvironment } from './src/utils/environment';\nimport { getUI, setUI } from './src/ui';\nimport { LoggingUI } from './src/ui/logging-ui';\nimport { getSubcommandWorkflows } from './src/lib/workflows/workflow-registry';\nimport type { WorkflowConfig } from './src/lib/workflows/workflow-step';\nimport type { WizardSession } from './src/lib/wizard-session';\n\nif (process.env.NODE_ENV === 'test') {\n void (async () => {\n try {\n const { server } = await import('./e2e-tests/mocks/server.js');\n server.listen({\n onUnhandledRequest: 'bypass',\n });\n } catch (error) {\n // Mock server import failed - this can happen during non-E2E tests\n }\n })();\n}\n\n/** Shared yargs options for skill-based workflow subcommands. */\nconst skillSubcommandOptions = {\n debug: {\n default: false,\n describe: 'Enable verbose logging',\n type: 'boolean' as const,\n },\n 'install-dir': {\n describe: 'Directory to install in',\n type: 'string' as const,\n },\n 'local-mcp': {\n default: false,\n describe: 'Use local MCP server',\n type: 'boolean' as const,\n },\n benchmark: {\n default: false,\n describe: 'Run in benchmark mode',\n type: 'boolean' as const,\n },\n 'yara-report': {\n default: false,\n describe: 'Print YARA scanner summary',\n type: 'boolean' as const,\n hidden: true,\n },\n};\n\nconst cli = yargs(hideBin(process.argv))\n .env('POSTHOG_WIZARD')\n // global options\n .options({\n debug: {\n default: false,\n describe: 'Enable verbose logging\\nenv: POSTHOG_WIZARD_DEBUG',\n type: 'boolean',\n },\n region: {\n describe: 'PostHog cloud region\\nenv: POSTHOG_WIZARD_REGION',\n choices: ['us', 'eu'],\n type: 'string',\n },\n default: {\n default: true,\n describe:\n 'Use default options for all prompts\\nenv: POSTHOG_WIZARD_DEFAULT',\n type: 'boolean',\n },\n signup: {\n default: false,\n describe:\n 'Create a new PostHog account during setup\\nenv: POSTHOG_WIZARD_SIGNUP',\n type: 'boolean',\n },\n 'local-mcp': {\n default: false,\n describe:\n 'Use local MCP server at http://localhost:8787/mcp\\nenv: POSTHOG_WIZARD_LOCAL_MCP',\n type: 'boolean',\n },\n ci: {\n default: false,\n describe:\n 'Enable CI mode for non-interactive execution\\nenv: POSTHOG_WIZARD_CI',\n type: 'boolean',\n },\n 'api-key': {\n describe:\n 'PostHog personal API key (phx_xxx) for authentication\\nenv: POSTHOG_WIZARD_API_KEY',\n type: 'string',\n },\n 'project-id': {\n describe:\n 'PostHog project ID to use (optional; when not set, uses default from API key or OAuth)\\nenv: POSTHOG_WIZARD_PROJECT_ID',\n type: 'string',\n },\n })\n .command(\n ['$0'],\n 'Run the PostHog setup wizard',\n (yargs) => {\n return yargs.options({\n 'force-install': {\n default: false,\n describe:\n 'Force install packages even if peer dependency checks fail\\nenv: POSTHOG_WIZARD_FORCE_INSTALL',\n type: 'boolean',\n },\n 'install-dir': {\n describe:\n 'Directory to install PostHog in\\nenv: POSTHOG_WIZARD_INSTALL_DIR',\n type: 'string',\n },\n playground: {\n default: false,\n describe: 'Launch the TUI primitives playground',\n type: 'boolean',\n },\n integration: {\n describe: 'Integration to set up',\n choices: [\n 'nextjs',\n 'astro',\n 'react',\n 'svelte',\n 'react-native',\n 'tanstack-router',\n 'tanstack-start',\n ],\n type: 'string',\n },\n menu: {\n default: false,\n describe:\n 'Show menu for manual integration selection instead of auto-detecting\\nenv: POSTHOG_WIZARD_MENU',\n type: 'boolean',\n },\n benchmark: {\n default: false,\n describe:\n 'Run in benchmark mode with per-phase token tracking\\nenv: POSTHOG_WIZARD_BENCHMARK',\n type: 'boolean',\n },\n 'yara-report': {\n default: false,\n describe:\n 'Print YARA scanner summary after the agent run\\nenv: POSTHOG_WIZARD_YARA_REPORT',\n type: 'boolean',\n hidden: true,\n },\n skill: {\n describe:\n 'Run a specific context-mill skill by ID\\nenv: POSTHOG_WIZARD_SKILL',\n type: 'string',\n },\n });\n },\n (argv) => {\n const options = { ...argv };\n\n // CI mode validation and TTY check\n if (options.ci) {\n if (!options.region) options.region = 'us';\n if (!options.apiKey) {\n setUI(new LoggingUI());\n getUI().intro('PostHog Wizard');\n getUI().log.error(\n 'CI mode requires --api-key (personal API key phx_xxx)',\n );\n process.exit(1);\n return;\n }\n if (!options.installDir) {\n setUI(new LoggingUI());\n getUI().intro('PostHog Wizard');\n getUI().log.error(\n 'CI mode requires --install-dir (directory to install in)',\n );\n process.exit(1);\n return;\n }\n void (async () => {\n const { posthogIntegrationConfig } = await import(\n './src/lib/workflows/posthog-integration/index.js'\n );\n const { FRAMEWORK_REGISTRY } = await import('./src/lib/registry.js');\n const { detectFramework, gatherFrameworkContext } = await import(\n './src/lib/detection/index.js'\n );\n const { analytics } = await import('./src/utils/analytics.js');\n const { wizardAbort } = await import('./src/utils/wizard-abort.js');\n\n // preRun: honor --integration, else auto-detect, then gather\n // framework context. Bypasses onReady hooks by design.\n runWizardCI(posthogIntegrationConfig, options, async (session) => {\n const integration =\n session.integration ??\n (await detectFramework(session.installDir));\n if (!integration) {\n await wizardAbort({\n message:\n 'Could not auto-detect your framework. Please specify --integration on the command line.',\n });\n return;\n }\n session.integration = integration;\n analytics.setTag('integration', integration);\n\n const frameworkConfig = FRAMEWORK_REGISTRY[integration];\n session.frameworkConfig = frameworkConfig;\n\n const context = await gatherFrameworkContext(frameworkConfig, {\n installDir: session.installDir,\n debug: session.debug,\n forceInstall: session.forceInstall,\n default: false,\n signup: session.signup,\n localMcp: session.localMcp,\n ci: true,\n menu: session.menu,\n benchmark: session.benchmark,\n yaraReport: session.yaraReport,\n });\n for (const [key, value] of Object.entries(context)) {\n if (!(key in session.frameworkContext)) {\n session.frameworkContext[key] = value;\n }\n }\n });\n })();\n } else if (isNonInteractiveEnvironment()) {\n // Non-interactive non-CI: error out\n getUI().intro(`PostHog Wizard`);\n getUI().log.error(\n 'This installer requires an interactive terminal (TTY) to run.\\n' +\n 'It appears you are running in a non-interactive environment.\\n' +\n 'Please run the wizard in an interactive terminal.\\n\\n' +\n 'For CI/CD environments, use --ci mode:\\n' +\n ' npx @posthog/wizard --ci --region us --api-key phx_xxx',\n );\n process.exit(1);\n } else if (options.playground) {\n // Playground mode: launch the TUI primitives playground\n void (async () => {\n const { startPlayground } = await import(\n './src/ui/tui/playground/start-playground.js'\n );\n (startPlayground as (version: string) => void)(WIZARD_VERSION);\n })();\n } else if (options.skill) {\n // Run a specific skill by ID\n void (async () => {\n const { createSkillWorkflow } = await import(\n './src/lib/workflows/agent-skill/index.js'\n );\n const skillId = options.skill as string;\n const config = createSkillWorkflow({\n skillId,\n command: 'skill',\n flowKey: 'agent-skill',\n description: `Run skill: ${skillId}`,\n integrationLabel: skillId,\n successMessage: `${skillId} completed!`,\n reportFile: `posthog-${skillId}-report.md`,\n docsUrl: 'https://posthog.com/docs',\n spinnerMessage: `Running ${skillId}...`,\n estimatedDurationMinutes: 5,\n });\n runWizard(config, options);\n })();\n } else {\n // Interactive TTY: run core-integration through the unified workflow path.\n // Same codepath as `npx @posthog/wizard integrate`.\n void (async () => {\n const { posthogIntegrationConfig } = await import(\n './src/lib/workflows/posthog-integration/index.js'\n );\n runWizard(posthogIntegrationConfig, options);\n })();\n }\n },\n )\n .command('mcp <command>', 'MCP server management commands', (yargs) => {\n return yargs\n .command(\n 'add',\n 'Install PostHog MCP server to supported clients',\n (yargs) => {\n return yargs.options({\n local: {\n default: false,\n describe:\n 'Add local development MCP server (http://localhost:8787)',\n type: 'boolean',\n },\n features: {\n describe:\n 'Comma-separated list of features to enable (default: all)',\n type: 'string',\n },\n 'api-key': {\n describe:\n 'PostHog personal API key (phx_xxx) for MCP authentication',\n type: 'string',\n },\n });\n },\n (argv) => {\n const options = { ...argv };\n const mcpFeatures = options.features\n ?.split(',')\n .map((s) => s.trim())\n .filter(Boolean);\n void (async () => {\n const { readApiKeyFromEnv } = await import(\n './src/utils/env-api-key.js'\n );\n const apiKey =\n (options.apiKey as string | undefined) || readApiKeyFromEnv();\n\n try {\n const { startTUI } = await import('./src/ui/tui/start-tui.js');\n const { buildSession } = await import(\n './src/lib/wizard-session.js'\n );\n\n const { Flow } = await import('./src/ui/tui/router.js');\n const tui = startTUI(WIZARD_VERSION, Flow.McpAdd);\n const session = buildSession({\n debug: options.debug,\n localMcp: options.local,\n mcpFeatures,\n apiKey,\n });\n tui.store.session = session;\n } catch {\n // TUI unavailable — fallback to logging\n setUI(new LoggingUI());\n const { addMCPServerToClientsStep } = await import(\n './src/steps/add-mcp-server-to-clients/index.js'\n );\n await addMCPServerToClientsStep({\n local: options.local,\n features: mcpFeatures,\n apiKey,\n });\n }\n })();\n },\n )\n .command(\n 'remove',\n 'Remove PostHog MCP server from supported clients',\n (yargs) => {\n return yargs.options({\n local: {\n default: false,\n describe:\n 'Remove local development MCP server (http://localhost:8787)',\n type: 'boolean',\n },\n });\n },\n (argv) => {\n const options = { ...argv };\n void (async () => {\n try {\n const { startTUI } = await import('./src/ui/tui/start-tui.js');\n const { buildSession } = await import(\n './src/lib/wizard-session.js'\n );\n\n const { Flow } = await import('./src/ui/tui/router.js');\n const tui = startTUI(WIZARD_VERSION, Flow.McpRemove);\n const session = buildSession({\n debug: options.debug,\n localMcp: options.local,\n });\n tui.store.session = session;\n } catch {\n // TUI unavailable — fallback to logging\n setUI(new LoggingUI());\n const { removeMCPServerFromClientsStep } = await import(\n './src/steps/add-mcp-server-to-clients/index.js'\n );\n await removeMCPServerFromClientsStep({\n local: options.local,\n });\n }\n })();\n },\n )\n .demandCommand(1, 'You must specify a subcommand (add or remove)')\n .help();\n });\n\n// ── Skill-based workflow subcommands (derived from registry) ─────────\nfor (const wfConfig of getSubcommandWorkflows()) {\n cli.command(\n wfConfig.command!,\n wfConfig.description,\n (y) => y.options(skillSubcommandOptions),\n (argv) => {\n const options = { ...argv };\n if (options.ci) {\n runWizardCI(wfConfig, options);\n } else {\n runWizard(wfConfig, options);\n }\n },\n );\n}\n\ncli\n .help()\n .alias('help', 'h')\n .version()\n .alias('version', 'v')\n .wrap(process.stdout.isTTY ? yargs.terminalWidth() : 80).argv;\n\n/**\n * Run a full wizard workflow in the TUI. Handles the full lifecycle: start TUI,\n * build session, run detection, wait for intro gate, execute the\n * agent pipeline, wait for outro dismissal, then exit.\n */\nfunction runWizard(\n config: WorkflowConfig,\n options: Record<string, unknown>,\n): void {\n void (async () => {\n try {\n const installDir = (options.installDir as string) || process.cwd();\n\n const { startTUI } = await import('./src/ui/tui/start-tui.js');\n const { buildSession } = await import('./src/lib/wizard-session.js');\n\n // flowKey values match Flow enum values by convention\n const tui = startTUI(WIZARD_VERSION, config.flowKey as any);\n\n const session = buildSession({\n debug: options.debug as boolean | undefined,\n forceInstall: options.forceInstall as boolean | undefined,\n localMcp: options.localMcp as boolean | undefined,\n installDir,\n ci: false,\n signup: options.signup as boolean | undefined,\n apiKey: options.apiKey as string | undefined,\n projectId: options.projectId as string | undefined,\n menu: options.menu as boolean | undefined,\n integration: options.integration as any,\n benchmark: options.benchmark as boolean | undefined,\n yaraReport: options.yaraReport as boolean | undefined,\n });\n // Set workflow metadata for TUI display\n session.workflowLabel = config.flowKey;\n const runDef = typeof config.run === 'object' ? config.run : null;\n session.skillId = runDef?.skillId ?? null;\n\n tui.store.session = session;\n\n await tui.store.runReadyHooks();\n await tui.store.getGate('intro');\n\n const { runAgent } = await import('./src/lib/agent/agent-runner.js');\n await runAgent(config, tui.store.session);\n\n await new Promise<void>((resolve) => {\n const unsub = tui.store.subscribe(() => {\n if (tui.store.session.skillsComplete) {\n unsub();\n resolve();\n }\n });\n if (tui.store.session.skillsComplete) {\n unsub();\n resolve();\n }\n });\n process.exit(0);\n } catch (err) {\n if (process.env.DEBUG || process.env.POSTHOG_WIZARD_DEBUG) {\n console.error('TUI init failed:', err); // eslint-disable-line no-console\n }\n }\n })();\n}\n\n/**\n * CI-mode pipeline shared by every non-interactive entry point.\n *\n * Validates flags, builds a `ci:true` session, runs `preRun` (or the\n * workflow's `onReady` hooks by default), executes `runAgent`, and\n * routes any failure through `wizardAbort`. `wizardAbort` owns all\n * exits — never add a raw `process.exit` here.\n */\nfunction runWizardCI(\n config: WorkflowConfig,\n options: Record<string, unknown>,\n preRun?: (session: WizardSession) => Promise<void>,\n): void {\n setUI(new LoggingUI());\n if (!options.region) options.region = 'us';\n if (!options.apiKey) {\n getUI().intro('PostHog Wizard');\n getUI().log.error('CI mode requires --api-key (personal API key phx_xxx)');\n process.exit(1);\n }\n if (!options.installDir) {\n getUI().intro('PostHog Wizard');\n getUI().log.error(\n 'CI mode requires --install-dir (directory to install in)',\n );\n process.exit(1);\n }\n\n void (async () => {\n const path = await import('path');\n const { buildSession } = await import('./src/lib/wizard-session.js');\n const { readEnvironment } = await import('./src/utils/environment.js');\n const { readApiKeyFromEnv } = await import('./src/utils/env-api-key.js');\n const { configureLogFileFromEnvironment, logToFile } = await import(\n './src/utils/debug.js'\n );\n const { wizardAbort, WizardError } = await import(\n './src/utils/wizard-abort.js'\n );\n\n configureLogFileFromEnvironment();\n\n const env = readEnvironment();\n const apiKey =\n (options.apiKey as string) ?? readApiKeyFromEnv() ?? undefined;\n const installDir = path.isAbsolute(options.installDir as string)\n ? (options.installDir as string)\n : path.join(process.cwd(), options.installDir as string);\n\n const session = buildSession({\n debug: options.debug as boolean | undefined,\n forceInstall: options.forceInstall as boolean | undefined,\n installDir,\n ci: true,\n signup: options.signup as boolean | undefined,\n localMcp: options.localMcp as boolean | undefined,\n apiKey,\n menu: options.menu as boolean | undefined,\n integration: options.integration as any, // eslint-disable-line @typescript-eslint/no-explicit-any\n projectId: options.projectId as string | undefined,\n benchmark: options.benchmark as boolean | undefined,\n yaraReport: options.yaraReport as boolean | undefined,\n ...env,\n });\n session.workflowLabel = config.flowKey;\n const runDef = typeof config.run === 'object' ? config.run : null;\n session.skillId = runDef?.skillId ?? null;\n\n getUI().intro('Welcome to the PostHog setup wizard');\n getUI().log.info(`Running ${config.flowKey} in CI mode`);\n\n try {\n if (preRun) {\n await preRun(session);\n } else {\n // Run onReady hooks against a minimal store-less context.\n const readyCtx = {\n session,\n setFrameworkContext: (key: string, value: unknown) => {\n session.frameworkContext[key] = value;\n },\n setFrameworkConfig: () => undefined,\n setDetectedFramework: () => undefined,\n setUnsupportedVersion: () => undefined,\n addDiscoveredFeature: () => undefined,\n setDetectionComplete: () => undefined,\n };\n for (const step of config.steps) {\n if (step.onReady) {\n await step.onReady(readyCtx);\n }\n }\n\n // Surface detectError written by the workflow's detect hook.\n const detectError = session.frameworkContext.detectError as\n | { kind: string; [k: string]: unknown }\n | undefined;\n if (detectError) {\n await wizardAbort({\n message: `Prerequisites not met: ${detectError.kind}\\n\\nSee ${\n runDef?.docsUrl ?? 'https://posthog.com/docs'\n }`,\n error: new WizardError(`${config.flowKey} prerequisites failed`, {\n integration: config.flowKey,\n detect_error_kind: detectError.kind,\n }),\n });\n }\n }\n\n const { runAgent } = await import('./src/lib/agent/agent-runner.js');\n await runAgent(config, session);\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n const errorStack =\n error instanceof Error && error.stack ? error.stack : undefined;\n\n logToFile(`[bin.ts CI] ERROR: ${errorMessage}`);\n if (errorStack) logToFile(`[bin.ts CI] STACK: ${errorStack}`);\n\n const debugInfo = session.debug && errorStack ? `\\n\\n${errorStack}` : '';\n const docsUrl =\n session.frameworkConfig?.metadata.docsUrl ??\n runDef?.docsUrl ??\n 'https://posthog.com/docs';\n await wizardAbort({\n message: `Something went wrong: ${errorMessage}\\n\\nYou can read the documentation at ${docsUrl} to set up manually.${debugInfo}`,\n error: error as Error,\n });\n }\n })();\n}\n"]}
|
|
@@ -112,6 +112,8 @@ async function runWorkflow(session, config) {
|
|
|
112
112
|
}
|
|
113
113
|
analytics_1.analytics.wizardCapture('agent started', {
|
|
114
114
|
integration: config.integrationLabel,
|
|
115
|
+
workflow: config.integrationLabel,
|
|
116
|
+
skill_id: config.skillId ?? null,
|
|
115
117
|
});
|
|
116
118
|
// 4. OAuth
|
|
117
119
|
(0, debug_1.logToFile)('[agent-runner] starting OAuth');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../../../../src/lib/agent/agent-runner.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Unified workflow runner.\n *\n * Single configurable pipeline for all workflows. Each workflow\n * provides a WorkflowRun (via the `run` field on WorkflowConfig)\n * that controls:\n * - Whether a skill is pre-installed or discovered at runtime\n * - How the agent prompt is built\n * - What MCP servers and package manager detector to use\n * - What happens after the agent completes\n *\n * The pipeline itself is fixed:\n * init → health check → settings → OAuth → [skill install] →\n * agent init → prompt → run → errors → [postRun] → outro\n */\n\nimport { existsSync } from 'fs';\nimport { join } from 'path';\nimport {\n type WizardSession,\n type AdditionalFeature,\n type Credentials,\n OutroKind,\n} from '../wizard-session';\nimport { getOrAskForProjectData } from '../../utils/setup-utils';\nimport { analytics } from '../../utils/analytics';\nimport { getUI } from '../../ui';\nimport {\n initializeAgent,\n runAgent as executeAgent,\n AgentErrorType,\n AgentSignals,\n buildWizardMetadata,\n checkAllSettingsConflicts,\n backupAndFixClaudeSettings,\n restoreClaudeSettings,\n} from './agent-interface';\nimport { getCloudUrlFromRegion } from '../../utils/urls';\nimport {\n evaluateWizardReadiness,\n WizardReadiness,\n} from '../health-checks/readiness';\nimport { enableDebugLogs, initLogFile, logToFile } from '../../utils/debug';\nimport { createBenchmarkPipeline } from '../middleware/benchmark';\nimport {\n wizardAbort,\n WizardError,\n registerCleanup,\n} from '../../utils/wizard-abort';\nimport { formatScanReport, writeScanReport } from '../yara-hooks';\nimport { detectNodePackageManagers } from '../detection/package-manager';\nimport type { PackageManagerDetector } from '../detection/package-manager';\nimport { getSkillsBaseUrl } from '../constants';\nimport { installSkillById, type InstallSkillResult } from '../wizard-tools';\nimport type { WizardOptions } from '../../utils/types';\n\nimport type { WorkflowConfig } from '../workflows/workflow-step';\nimport { assemblePrompt, type PromptContext } from './agent-prompt';\n\nexport type { PromptContext };\n\n// ── Types ────────────────────────────────────────────────────────────\n\nexport type { Credentials };\n\n/**\n * A known `[ABORT] <reason>` case. First matching entry is rendered on\n * the error outro; unmatched aborts use a generic fallback.\n */\nexport interface AbortCase {\n match: RegExp;\n message: string;\n body: string;\n docsUrl?: string;\n}\n\n/**\n * Unified agent run configuration.\n *\n * Every workflow provides one of these — either as a static object\n * or via a function that builds one from the session. The runner\n * assembles the final prompt from `prompt` + `skillId`.\n */\nexport interface WorkflowRun {\n /** Analytics label (e.g. 'revenue-analytics-setup', 'nextjs') */\n integrationLabel: string;\n /** Skill ID to pre-install. Omit for agent-driven skill discovery. */\n skillId?: string;\n /** Additional workflow-specific prompt instructions. Appended after the default project prompt. */\n customPrompt?: (ctx: PromptContext) => string;\n /** Additional MCP servers (e.g. Svelte MCP) */\n additionalMcpServers?: Record<string, { url: string }>;\n /** Package manager detector. Defaults to detectNodePackageManagers. */\n detectPackageManager?: PackageManagerDetector;\n spinnerMessage: string;\n successMessage: string;\n estimatedDurationMinutes: number;\n reportFile: string;\n docsUrl: string;\n errorMessage?: string;\n additionalFeatureQueue?: readonly AdditionalFeature[];\n /** Known `[ABORT] <reason>` cases this workflow can render. */\n abortCases?: AbortCase[];\n /** Runs after agent completes, before outro (e.g. env var upload). */\n postRun?: (session: WizardSession, credentials: Credentials) => Promise<void>;\n /** Custom outro data. Omit for default built from successMessage/reportFile/docsUrl. */\n buildOutroData?: (\n session: WizardSession,\n credentials: Credentials,\n cloudRegion: import('../../utils/types').CloudRegion | undefined,\n ) => WizardSession['outroData'];\n}\n\n// ── Helpers ──────────────────────────────────────────────────────────\n\nfunction sessionToOptions(session: WizardSession): WizardOptions {\n return {\n installDir: session.installDir,\n debug: session.debug,\n forceInstall: session.forceInstall,\n default: false,\n signup: session.signup,\n localMcp: session.localMcp,\n ci: session.ci,\n menu: session.menu,\n benchmark: session.benchmark,\n projectId: session.projectId,\n apiKey: session.apiKey,\n yaraReport: session.yaraReport,\n };\n}\n\n// ── Runner ───────────────────────────────────────────────────────────\n\n/**\n * Resolve a WorkflowConfig's agent run definition and execute the pipeline.\n * Entry point for bin.ts — handles buildRunConfig, bootstrap, and (future) run field.\n */\nexport async function runAgent(\n workflowConfig: WorkflowConfig,\n session: WizardSession,\n): Promise<void> {\n if (!workflowConfig.run) {\n throw new Error(\n `Workflow \"${workflowConfig.flowKey}\" has no run configuration.`,\n );\n }\n\n const runDef =\n typeof workflowConfig.run === 'function'\n ? await workflowConfig.run(session)\n : workflowConfig.run;\n\n await runWorkflow(session, runDef);\n}\n\n/**\n * Run a workflow's agent pipeline.\n *\n * This is the single execution path for all workflows — both skill-based\n * (revenue analytics) and framework-based (core integration). The\n * `WorkflowRun` controls what varies between them.\n */\nexport async function runWorkflow(\n session: WizardSession,\n config: WorkflowRun,\n): Promise<void> {\n // 1. Init logging + debug\n initLogFile();\n logToFile(`[agent-runner] START ${config.integrationLabel}`);\n\n if (session.debug) {\n enableDebugLogs();\n }\n\n const skillsBaseUrl = getSkillsBaseUrl(session.localMcp);\n\n // 2. Health check (guarded — skip if TUI already ran it)\n if (!session.readinessResult) {\n logToFile('[agent-runner] evaluating wizard readiness');\n const readiness = await evaluateWizardReadiness();\n logToFile(`[agent-runner] readiness=${readiness.decision}`);\n if (readiness.decision === WizardReadiness.No) {\n await getUI().showBlockingOutage(readiness);\n } else if (readiness.decision === WizardReadiness.YesWithWarnings) {\n getUI().setReadinessWarnings(readiness);\n }\n }\n\n // 3. Settings conflicts\n const settingsConflicts = checkAllSettingsConflicts(session.installDir);\n logToFile(\n `[agent-runner] settings conflicts: ${\n settingsConflicts.length > 0\n ? settingsConflicts\n .map((c) => `${c.source}(${c.keys.join(',')})`)\n .join('; ')\n : 'none'\n }`,\n );\n\n if (settingsConflicts.length > 0) {\n for (const conflict of settingsConflicts) {\n const level = conflict.source === 'managed' ? 'org' : conflict.source;\n analytics.wizardCapture('settings conflict detected', {\n level,\n keys: conflict.keys,\n });\n }\n await getUI().showSettingsOverride(settingsConflicts, () =>\n backupAndFixClaudeSettings(session.installDir),\n );\n logToFile('[agent-runner] settings override resolved');\n }\n\n analytics.wizardCapture('agent started', {\n integration: config.integrationLabel,\n });\n\n // 4. OAuth\n logToFile('[agent-runner] starting OAuth');\n const { projectApiKey, host, accessToken, projectId, cloudRegion } =\n await getOrAskForProjectData({\n signup: session.signup,\n ci: session.ci,\n apiKey: session.apiKey,\n projectId: session.projectId,\n });\n\n session.credentials = { accessToken, projectApiKey, host, projectId };\n getUI().setCredentials(session.credentials);\n\n // 5. Skill install (if skillId provided)\n let skillPath: string | undefined;\n if (config.skillId) {\n logToFile(`[agent-runner] installing skill ${config.skillId}`);\n const installResult = await installSkillById(\n config.skillId,\n session.installDir,\n skillsBaseUrl,\n );\n if (installResult.kind !== 'ok') {\n await abortOnInstallFailure(config.integrationLabel, installResult);\n return;\n }\n skillPath = installResult.path;\n logToFile(`[agent-runner] skill installed at ${skillPath}`);\n }\n\n // 6. Initialize agent\n const spinner = getUI().spinner();\n const wizardFlags = await analytics.getAllFlagsForWizard();\n const wizardMetadata = buildWizardMetadata(wizardFlags);\n\n const mcpUrl = session.localMcp\n ? 'http://localhost:8787/mcp'\n : process.env.MCP_URL ||\n (cloudRegion === 'eu'\n ? 'https://mcp-eu.posthog.com/mcp'\n : 'https://mcp.posthog.com/mcp');\n\n const restoreSettings = () => restoreClaudeSettings(session.installDir);\n getUI().onEnterScreen('outro', restoreSettings);\n\n if (session.yaraReport) {\n registerCleanup(() => {\n const reportPath = writeScanReport();\n if (reportPath) {\n const summary = formatScanReport();\n getUI().log.info(`YARA scan report: ${reportPath}${summary ?? ''}`);\n }\n });\n }\n\n getUI().startRun();\n\n const agent = await initializeAgent(\n {\n workingDirectory: session.installDir,\n posthogMcpUrl: mcpUrl,\n posthogApiKey: accessToken,\n posthogApiHost: host,\n additionalMcpServers: config.additionalMcpServers,\n detectPackageManager:\n config.detectPackageManager ?? detectNodePackageManagers,\n skillsBaseUrl,\n wizardFlags,\n wizardMetadata,\n },\n sessionToOptions(session),\n );\n\n const middleware = session.benchmark\n ? createBenchmarkPipeline(spinner, sessionToOptions(session))\n : undefined;\n\n // 7. Build prompt\n const prompt = assemblePrompt(config, {\n projectId,\n projectApiKey,\n host,\n skillPath,\n });\n\n // 8. Run agent\n const agentResult = await executeAgent(\n agent,\n prompt,\n sessionToOptions(session),\n spinner,\n {\n estimatedDurationMinutes: config.estimatedDurationMinutes,\n spinnerMessage: config.spinnerMessage,\n successMessage: config.successMessage,\n errorMessage: config.errorMessage ?? `${config.integrationLabel} failed`,\n additionalFeatureQueue: config.additionalFeatureQueue ?? [],\n abortCases: config.abortCases,\n },\n middleware,\n );\n\n // 9. Error handling (full set from both runners)\n if (agentResult.error === AgentErrorType.ABORT) {\n const reason = agentResult.message ?? '';\n const matched = config.abortCases?.find((c) => c.match.test(reason));\n const outroData: WizardSession['outroData'] = matched\n ? {\n kind: OutroKind.Error,\n message: matched.message,\n body: matched.body,\n docsUrl: matched.docsUrl,\n }\n : {\n kind: OutroKind.Error,\n message: `${config.integrationLabel} aborted`,\n body: reason || 'The agent aborted the workflow.',\n docsUrl: config.docsUrl,\n };\n analytics.wizardCapture('agent aborted', {\n integration: config.integrationLabel,\n reason,\n matched: matched?.message ?? null,\n });\n await wizardAbort({\n outroData,\n error: new WizardError(`Agent aborted: ${reason}`, {\n integration: config.integrationLabel,\n error_type: AgentErrorType.ABORT,\n reason,\n }),\n });\n }\n\n if (agentResult.error === AgentErrorType.MCP_MISSING) {\n await wizardAbort({\n message:\n 'Could not access the PostHog MCP server\\n\\n' +\n 'The wizard was unable to connect to the PostHog MCP server.\\n' +\n 'This could be due to a network issue or a configuration problem.\\n\\n' +\n `Please try again, or check the documentation:\\n${config.docsUrl}`,\n error: new WizardError('Agent could not access PostHog MCP server', {\n integration: config.integrationLabel,\n error_type: AgentErrorType.MCP_MISSING,\n signal: AgentSignals.ERROR_MCP_MISSING,\n }),\n });\n }\n\n if (agentResult.error === AgentErrorType.RESOURCE_MISSING) {\n await wizardAbort({\n message:\n 'Could not access the setup resource\\n\\n' +\n 'This may indicate a version mismatch or a temporary service issue.\\n\\n' +\n `Please try again, or check the documentation:\\n${config.docsUrl}`,\n error: new WizardError('Agent could not access setup resource', {\n integration: config.integrationLabel,\n error_type: AgentErrorType.RESOURCE_MISSING,\n signal: AgentSignals.ERROR_RESOURCE_MISSING,\n }),\n });\n }\n\n if (agentResult.error === AgentErrorType.YARA_VIOLATION) {\n await wizardAbort({\n message:\n 'Security violation detected.\\nPlease report this to: wizard@posthog.com',\n error: new WizardError('YARA scanner terminated session', {\n integration: config.integrationLabel,\n error_type: AgentErrorType.YARA_VIOLATION,\n }),\n });\n }\n\n if (\n agentResult.error === AgentErrorType.RATE_LIMIT ||\n agentResult.error === AgentErrorType.API_ERROR\n ) {\n analytics.wizardCapture('agent api error', {\n integration: config.integrationLabel,\n error_type: agentResult.error,\n error_message: agentResult.message,\n });\n\n await wizardAbort({\n message: `API Error\\n\\n${\n agentResult.message || 'Unknown error'\n }\\n\\nPlease report this to: wizard@posthog.com`,\n error: new WizardError(`API error: ${agentResult.message}`, {\n integration: config.integrationLabel,\n error_type: agentResult.error,\n }),\n });\n }\n\n // 10. Post-run hooks\n if (config.postRun) {\n await config.postRun(session, {\n accessToken,\n projectApiKey,\n host,\n projectId,\n });\n }\n\n // 11. Outro\n if (config.buildOutroData) {\n session.outroData = config.buildOutroData(\n session,\n { accessToken, projectApiKey, host, projectId },\n cloudRegion,\n );\n } else {\n const continueUrl = session.signup\n ? `${getCloudUrlFromRegion(cloudRegion)}/products?source=wizard`\n : undefined;\n\n const reportPath = join(session.installDir, config.reportFile);\n const reportExists = existsSync(reportPath);\n\n session.outroData = {\n kind: OutroKind.Success,\n message: config.successMessage,\n reportFile: reportExists ? config.reportFile : undefined,\n docsUrl: config.docsUrl,\n continueUrl,\n };\n }\n\n getUI().outro(config.successMessage);\n\n // 12. Analytics shutdown\n await analytics.shutdown('success');\n}\n\n// ── Shared error helpers ─────────────────────────────────────────────\n\nasync function abortOnInstallFailure(\n integrationLabel: string,\n result: InstallSkillResult,\n): Promise<void> {\n if (result.kind === 'ok') return;\n\n const message = (() => {\n switch (result.kind) {\n case 'menu-fetch-failed':\n return 'Could not fetch the skill menu from context-mill.\\nCheck your network connection and try again.';\n case 'skill-not-found':\n return `Could not find the \"${result.skillId}\" skill in the context-mill menu.\\nPlease try again later.`;\n case 'download-failed':\n return `Failed to install skill: ${result.message}\\nPlease try again.`;\n }\n })();\n\n await wizardAbort({\n message,\n error: new WizardError(`Skill install failed: ${result.kind}`, {\n integration: integrationLabel,\n error_type: result.kind,\n }),\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../../../../src/lib/agent/agent-runner.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Unified workflow runner.\n *\n * Single configurable pipeline for all workflows. Each workflow\n * provides a WorkflowRun (via the `run` field on WorkflowConfig)\n * that controls:\n * - Whether a skill is pre-installed or discovered at runtime\n * - How the agent prompt is built\n * - What MCP servers and package manager detector to use\n * - What happens after the agent completes\n *\n * The pipeline itself is fixed:\n * init → health check → settings → OAuth → [skill install] →\n * agent init → prompt → run → errors → [postRun] → outro\n */\n\nimport { existsSync } from 'fs';\nimport { join } from 'path';\nimport {\n type WizardSession,\n type AdditionalFeature,\n type Credentials,\n OutroKind,\n} from '../wizard-session';\nimport { getOrAskForProjectData } from '../../utils/setup-utils';\nimport { analytics } from '../../utils/analytics';\nimport { getUI } from '../../ui';\nimport {\n initializeAgent,\n runAgent as executeAgent,\n AgentErrorType,\n AgentSignals,\n buildWizardMetadata,\n checkAllSettingsConflicts,\n backupAndFixClaudeSettings,\n restoreClaudeSettings,\n} from './agent-interface';\nimport { getCloudUrlFromRegion } from '../../utils/urls';\nimport {\n evaluateWizardReadiness,\n WizardReadiness,\n} from '../health-checks/readiness';\nimport { enableDebugLogs, initLogFile, logToFile } from '../../utils/debug';\nimport { createBenchmarkPipeline } from '../middleware/benchmark';\nimport {\n wizardAbort,\n WizardError,\n registerCleanup,\n} from '../../utils/wizard-abort';\nimport { formatScanReport, writeScanReport } from '../yara-hooks';\nimport { detectNodePackageManagers } from '../detection/package-manager';\nimport type { PackageManagerDetector } from '../detection/package-manager';\nimport { getSkillsBaseUrl } from '../constants';\nimport { installSkillById, type InstallSkillResult } from '../wizard-tools';\nimport type { WizardOptions } from '../../utils/types';\n\nimport type { WorkflowConfig } from '../workflows/workflow-step';\nimport { assemblePrompt, type PromptContext } from './agent-prompt';\n\nexport type { PromptContext };\n\n// ── Types ────────────────────────────────────────────────────────────\n\nexport type { Credentials };\n\n/**\n * A known `[ABORT] <reason>` case. First matching entry is rendered on\n * the error outro; unmatched aborts use a generic fallback.\n */\nexport interface AbortCase {\n match: RegExp;\n message: string;\n body: string;\n docsUrl?: string;\n}\n\n/**\n * Unified agent run configuration.\n *\n * Every workflow provides one of these — either as a static object\n * or via a function that builds one from the session. The runner\n * assembles the final prompt from `prompt` + `skillId`.\n */\nexport interface WorkflowRun {\n /** Analytics label (e.g. 'revenue-analytics-setup', 'nextjs') */\n integrationLabel: string;\n /** Skill ID to pre-install. Omit for agent-driven skill discovery. */\n skillId?: string;\n /** Additional workflow-specific prompt instructions. Appended after the default project prompt. */\n customPrompt?: (ctx: PromptContext) => string;\n /** Additional MCP servers (e.g. Svelte MCP) */\n additionalMcpServers?: Record<string, { url: string }>;\n /** Package manager detector. Defaults to detectNodePackageManagers. */\n detectPackageManager?: PackageManagerDetector;\n spinnerMessage: string;\n successMessage: string;\n estimatedDurationMinutes: number;\n reportFile: string;\n docsUrl: string;\n errorMessage?: string;\n additionalFeatureQueue?: readonly AdditionalFeature[];\n /** Known `[ABORT] <reason>` cases this workflow can render. */\n abortCases?: AbortCase[];\n /** Runs after agent completes, before outro (e.g. env var upload). */\n postRun?: (session: WizardSession, credentials: Credentials) => Promise<void>;\n /** Custom outro data. Omit for default built from successMessage/reportFile/docsUrl. */\n buildOutroData?: (\n session: WizardSession,\n credentials: Credentials,\n cloudRegion: import('../../utils/types').CloudRegion | undefined,\n ) => WizardSession['outroData'];\n}\n\n// ── Helpers ──────────────────────────────────────────────────────────\n\nfunction sessionToOptions(session: WizardSession): WizardOptions {\n return {\n installDir: session.installDir,\n debug: session.debug,\n forceInstall: session.forceInstall,\n default: false,\n signup: session.signup,\n localMcp: session.localMcp,\n ci: session.ci,\n menu: session.menu,\n benchmark: session.benchmark,\n projectId: session.projectId,\n apiKey: session.apiKey,\n yaraReport: session.yaraReport,\n };\n}\n\n// ── Runner ───────────────────────────────────────────────────────────\n\n/**\n * Resolve a WorkflowConfig's agent run definition and execute the pipeline.\n * Entry point for bin.ts — handles buildRunConfig, bootstrap, and (future) run field.\n */\nexport async function runAgent(\n workflowConfig: WorkflowConfig,\n session: WizardSession,\n): Promise<void> {\n if (!workflowConfig.run) {\n throw new Error(\n `Workflow \"${workflowConfig.flowKey}\" has no run configuration.`,\n );\n }\n\n const runDef =\n typeof workflowConfig.run === 'function'\n ? await workflowConfig.run(session)\n : workflowConfig.run;\n\n await runWorkflow(session, runDef);\n}\n\n/**\n * Run a workflow's agent pipeline.\n *\n * This is the single execution path for all workflows — both skill-based\n * (revenue analytics) and framework-based (core integration). The\n * `WorkflowRun` controls what varies between them.\n */\nexport async function runWorkflow(\n session: WizardSession,\n config: WorkflowRun,\n): Promise<void> {\n // 1. Init logging + debug\n initLogFile();\n logToFile(`[agent-runner] START ${config.integrationLabel}`);\n\n if (session.debug) {\n enableDebugLogs();\n }\n\n const skillsBaseUrl = getSkillsBaseUrl(session.localMcp);\n\n // 2. Health check (guarded — skip if TUI already ran it)\n if (!session.readinessResult) {\n logToFile('[agent-runner] evaluating wizard readiness');\n const readiness = await evaluateWizardReadiness();\n logToFile(`[agent-runner] readiness=${readiness.decision}`);\n if (readiness.decision === WizardReadiness.No) {\n await getUI().showBlockingOutage(readiness);\n } else if (readiness.decision === WizardReadiness.YesWithWarnings) {\n getUI().setReadinessWarnings(readiness);\n }\n }\n\n // 3. Settings conflicts\n const settingsConflicts = checkAllSettingsConflicts(session.installDir);\n logToFile(\n `[agent-runner] settings conflicts: ${\n settingsConflicts.length > 0\n ? settingsConflicts\n .map((c) => `${c.source}(${c.keys.join(',')})`)\n .join('; ')\n : 'none'\n }`,\n );\n\n if (settingsConflicts.length > 0) {\n for (const conflict of settingsConflicts) {\n const level = conflict.source === 'managed' ? 'org' : conflict.source;\n analytics.wizardCapture('settings conflict detected', {\n level,\n keys: conflict.keys,\n });\n }\n await getUI().showSettingsOverride(settingsConflicts, () =>\n backupAndFixClaudeSettings(session.installDir),\n );\n logToFile('[agent-runner] settings override resolved');\n }\n\n analytics.wizardCapture('agent started', {\n integration: config.integrationLabel,\n workflow: config.integrationLabel,\n skill_id: config.skillId ?? null,\n });\n\n // 4. OAuth\n logToFile('[agent-runner] starting OAuth');\n const { projectApiKey, host, accessToken, projectId, cloudRegion } =\n await getOrAskForProjectData({\n signup: session.signup,\n ci: session.ci,\n apiKey: session.apiKey,\n projectId: session.projectId,\n });\n\n session.credentials = { accessToken, projectApiKey, host, projectId };\n getUI().setCredentials(session.credentials);\n\n // 5. Skill install (if skillId provided)\n let skillPath: string | undefined;\n if (config.skillId) {\n logToFile(`[agent-runner] installing skill ${config.skillId}`);\n const installResult = await installSkillById(\n config.skillId,\n session.installDir,\n skillsBaseUrl,\n );\n if (installResult.kind !== 'ok') {\n await abortOnInstallFailure(config.integrationLabel, installResult);\n return;\n }\n skillPath = installResult.path;\n logToFile(`[agent-runner] skill installed at ${skillPath}`);\n }\n\n // 6. Initialize agent\n const spinner = getUI().spinner();\n const wizardFlags = await analytics.getAllFlagsForWizard();\n const wizardMetadata = buildWizardMetadata(wizardFlags);\n\n const mcpUrl = session.localMcp\n ? 'http://localhost:8787/mcp'\n : process.env.MCP_URL ||\n (cloudRegion === 'eu'\n ? 'https://mcp-eu.posthog.com/mcp'\n : 'https://mcp.posthog.com/mcp');\n\n const restoreSettings = () => restoreClaudeSettings(session.installDir);\n getUI().onEnterScreen('outro', restoreSettings);\n\n if (session.yaraReport) {\n registerCleanup(() => {\n const reportPath = writeScanReport();\n if (reportPath) {\n const summary = formatScanReport();\n getUI().log.info(`YARA scan report: ${reportPath}${summary ?? ''}`);\n }\n });\n }\n\n getUI().startRun();\n\n const agent = await initializeAgent(\n {\n workingDirectory: session.installDir,\n posthogMcpUrl: mcpUrl,\n posthogApiKey: accessToken,\n posthogApiHost: host,\n additionalMcpServers: config.additionalMcpServers,\n detectPackageManager:\n config.detectPackageManager ?? detectNodePackageManagers,\n skillsBaseUrl,\n wizardFlags,\n wizardMetadata,\n },\n sessionToOptions(session),\n );\n\n const middleware = session.benchmark\n ? createBenchmarkPipeline(spinner, sessionToOptions(session))\n : undefined;\n\n // 7. Build prompt\n const prompt = assemblePrompt(config, {\n projectId,\n projectApiKey,\n host,\n skillPath,\n });\n\n // 8. Run agent\n const agentResult = await executeAgent(\n agent,\n prompt,\n sessionToOptions(session),\n spinner,\n {\n estimatedDurationMinutes: config.estimatedDurationMinutes,\n spinnerMessage: config.spinnerMessage,\n successMessage: config.successMessage,\n errorMessage: config.errorMessage ?? `${config.integrationLabel} failed`,\n additionalFeatureQueue: config.additionalFeatureQueue ?? [],\n abortCases: config.abortCases,\n },\n middleware,\n );\n\n // 9. Error handling (full set from both runners)\n if (agentResult.error === AgentErrorType.ABORT) {\n const reason = agentResult.message ?? '';\n const matched = config.abortCases?.find((c) => c.match.test(reason));\n const outroData: WizardSession['outroData'] = matched\n ? {\n kind: OutroKind.Error,\n message: matched.message,\n body: matched.body,\n docsUrl: matched.docsUrl,\n }\n : {\n kind: OutroKind.Error,\n message: `${config.integrationLabel} aborted`,\n body: reason || 'The agent aborted the workflow.',\n docsUrl: config.docsUrl,\n };\n analytics.wizardCapture('agent aborted', {\n integration: config.integrationLabel,\n reason,\n matched: matched?.message ?? null,\n });\n await wizardAbort({\n outroData,\n error: new WizardError(`Agent aborted: ${reason}`, {\n integration: config.integrationLabel,\n error_type: AgentErrorType.ABORT,\n reason,\n }),\n });\n }\n\n if (agentResult.error === AgentErrorType.MCP_MISSING) {\n await wizardAbort({\n message:\n 'Could not access the PostHog MCP server\\n\\n' +\n 'The wizard was unable to connect to the PostHog MCP server.\\n' +\n 'This could be due to a network issue or a configuration problem.\\n\\n' +\n `Please try again, or check the documentation:\\n${config.docsUrl}`,\n error: new WizardError('Agent could not access PostHog MCP server', {\n integration: config.integrationLabel,\n error_type: AgentErrorType.MCP_MISSING,\n signal: AgentSignals.ERROR_MCP_MISSING,\n }),\n });\n }\n\n if (agentResult.error === AgentErrorType.RESOURCE_MISSING) {\n await wizardAbort({\n message:\n 'Could not access the setup resource\\n\\n' +\n 'This may indicate a version mismatch or a temporary service issue.\\n\\n' +\n `Please try again, or check the documentation:\\n${config.docsUrl}`,\n error: new WizardError('Agent could not access setup resource', {\n integration: config.integrationLabel,\n error_type: AgentErrorType.RESOURCE_MISSING,\n signal: AgentSignals.ERROR_RESOURCE_MISSING,\n }),\n });\n }\n\n if (agentResult.error === AgentErrorType.YARA_VIOLATION) {\n await wizardAbort({\n message:\n 'Security violation detected.\\nPlease report this to: wizard@posthog.com',\n error: new WizardError('YARA scanner terminated session', {\n integration: config.integrationLabel,\n error_type: AgentErrorType.YARA_VIOLATION,\n }),\n });\n }\n\n if (\n agentResult.error === AgentErrorType.RATE_LIMIT ||\n agentResult.error === AgentErrorType.API_ERROR\n ) {\n analytics.wizardCapture('agent api error', {\n integration: config.integrationLabel,\n error_type: agentResult.error,\n error_message: agentResult.message,\n });\n\n await wizardAbort({\n message: `API Error\\n\\n${\n agentResult.message || 'Unknown error'\n }\\n\\nPlease report this to: wizard@posthog.com`,\n error: new WizardError(`API error: ${agentResult.message}`, {\n integration: config.integrationLabel,\n error_type: agentResult.error,\n }),\n });\n }\n\n // 10. Post-run hooks\n if (config.postRun) {\n await config.postRun(session, {\n accessToken,\n projectApiKey,\n host,\n projectId,\n });\n }\n\n // 11. Outro\n if (config.buildOutroData) {\n session.outroData = config.buildOutroData(\n session,\n { accessToken, projectApiKey, host, projectId },\n cloudRegion,\n );\n } else {\n const continueUrl = session.signup\n ? `${getCloudUrlFromRegion(cloudRegion)}/products?source=wizard`\n : undefined;\n\n const reportPath = join(session.installDir, config.reportFile);\n const reportExists = existsSync(reportPath);\n\n session.outroData = {\n kind: OutroKind.Success,\n message: config.successMessage,\n reportFile: reportExists ? config.reportFile : undefined,\n docsUrl: config.docsUrl,\n continueUrl,\n };\n }\n\n getUI().outro(config.successMessage);\n\n // 12. Analytics shutdown\n await analytics.shutdown('success');\n}\n\n// ── Shared error helpers ─────────────────────────────────────────────\n\nasync function abortOnInstallFailure(\n integrationLabel: string,\n result: InstallSkillResult,\n): Promise<void> {\n if (result.kind === 'ok') return;\n\n const message = (() => {\n switch (result.kind) {\n case 'menu-fetch-failed':\n return 'Could not fetch the skill menu from context-mill.\\nCheck your network connection and try again.';\n case 'skill-not-found':\n return `Could not find the \"${result.skillId}\" skill in the context-mill menu.\\nPlease try again later.`;\n case 'download-failed':\n return `Failed to install skill: ${result.message}\\nPlease try again.`;\n }\n })();\n\n await wizardAbort({\n message,\n error: new WizardError(`Skill install failed: ${result.kind}`, {\n integration: integrationLabel,\n error_type: result.kind,\n }),\n });\n}\n"]}
|
|
@@ -63,7 +63,7 @@ export declare const WIZARD_VARIANT_FLAG_KEY = "wizard-variant";
|
|
|
63
63
|
/** Variant key -> metadata for wizard run (VARIANT flag selects which entry to use). */
|
|
64
64
|
export declare const WIZARD_VARIANTS: Record<string, Record<string, string>>;
|
|
65
65
|
/** User-Agent for wizard HTTP requests and MCP server identification. */
|
|
66
|
-
export declare const WIZARD_USER_AGENT = "posthog/wizard; version: 2.9.
|
|
66
|
+
export declare const WIZARD_USER_AGENT = "posthog/wizard; version: 2.9.1";
|
|
67
67
|
/** Header prefix for PostHog properties (e.g. X-POSTHOG-PROPERTY-VARIANT). */
|
|
68
68
|
export declare const POSTHOG_PROPERTY_HEADER_PREFIX = "X-POSTHOG-PROPERTY-";
|
|
69
69
|
/** Header prefix for PostHog feature flags. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "2.9.
|
|
1
|
+
export declare const VERSION = "2.9.1";
|
package/dist/src/lib/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/lib/version.ts"],"names":[],"mappings":";;;AAAA,8DAA8D;AACjD,QAAA,OAAO,GAAG,OAAO,CAAC","sourcesContent":["// Auto-generated by scripts/generate-version.js — do not edit\nexport const VERSION = '2.9.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/lib/version.ts"],"names":[],"mappings":";;;AAAA,8DAA8D;AACjD,QAAA,OAAO,GAAG,OAAO,CAAC","sourcesContent":["// Auto-generated by scripts/generate-version.js — do not edit\nexport const VERSION = '2.9.1';\n"]}
|
|
@@ -37,18 +37,25 @@ describe('createSkillWorkflow', () => {
|
|
|
37
37
|
});
|
|
38
38
|
});
|
|
39
39
|
describe('AGENT_SKILL_STEPS', () => {
|
|
40
|
-
it('is auth → run → outro, all with screens and working predicates', () => {
|
|
40
|
+
it('is intro → auth → run → outro → skills, all with screens and working predicates', () => {
|
|
41
41
|
expect(index_js_1.AGENT_SKILL_STEPS.map((s) => s.id)).toEqual([
|
|
42
|
+
'intro',
|
|
42
43
|
'auth',
|
|
43
44
|
'run',
|
|
44
45
|
'outro',
|
|
46
|
+
'skills',
|
|
45
47
|
]);
|
|
46
48
|
const session = (0, wizard_session_js_1.buildSession)({});
|
|
47
|
-
const [auth, run, outro] = index_js_1.AGENT_SKILL_STEPS;
|
|
49
|
+
const [intro, auth, run, outro] = index_js_1.AGENT_SKILL_STEPS;
|
|
50
|
+
// Intro gate starts closed
|
|
51
|
+
expect(intro.gate(session)).toBe(false);
|
|
48
52
|
// All incomplete initially
|
|
49
53
|
expect(auth.isComplete(session)).toBe(false);
|
|
50
54
|
expect(run.isComplete(session)).toBe(false);
|
|
51
55
|
expect(outro.isComplete(session)).toBe(false);
|
|
56
|
+
// Intro gate opens after setup confirmed
|
|
57
|
+
session.setupConfirmed = true;
|
|
58
|
+
expect(intro.gate(session)).toBe(true);
|
|
52
59
|
// Completing each
|
|
53
60
|
session.credentials = {
|
|
54
61
|
accessToken: 't',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-skill.test.js","sourceRoot":"","sources":["../../../../../src/lib/workflows/__tests__/agent-skill.test.ts"],"names":[],"mappings":";;AAAA,sDAIiC;AAEjC,+DAAiE;AAEjE,MAAM,QAAQ,GAAyB;IACrC,OAAO,EAAE,sBAAsB;IAC/B,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,gBAAgB;IACzB,WAAW,EAAE,+BAA+B;IAC5C,gBAAgB,EAAE,gBAAgB;IAClC,cAAc,EAAE,4BAA4B;IAC5C,UAAU,EAAE,kCAAkC;IAC9C,OAAO,EAAE,yCAAyC;IAClD,cAAc,EAAE,8BAA8B;IAC9C,wBAAwB,EAAE,CAAC;CAC5B,CAAC;AAEF,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,MAAM,GAAG,IAAA,8BAAmB,EAAC,QAAQ,CAAC,CAAC;QAE7C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,4BAAiB,CAAC,CAAC;QAE7C,8EAA8E;QAC9E,MAAM,GAAG,GAAG,MAAM,CAAC,GAAkB,CAAC;QACtC,MAAM,CAAC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACjD,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,UAAU,GAAG,IAAA,8BAAmB,EAAC;YACrC,GAAG,QAAQ;YACX,YAAY,EAAE,eAAe;SAC9B,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,8BAAmB,EAAC,QAAQ,CAAC,CAAC;QAE9C,MAAM,CAAE,UAAU,CAAC,GAAmB,CAAC,YAAa,CAAC,IAAa,CAAC,CAAC,CAAC,IAAI,CACvE,eAAe,CAChB,CAAC;QACF,MAAM,CAAE,OAAO,CAAC,GAAmB,CAAC,YAAY,CAAC,CAAC,aAAa,EAAE,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"agent-skill.test.js","sourceRoot":"","sources":["../../../../../src/lib/workflows/__tests__/agent-skill.test.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n createSkillWorkflow,\n AGENT_SKILL_STEPS,\n type SkillWorkflowOptions,\n} from '../agent-skill/index.js';\nimport type { WorkflowRun } from '../../agent/agent-runner.js';\nimport { buildSession, RunPhase } from '../../wizard-session.js';\n\nconst baseOpts: SkillWorkflowOptions = {\n skillId: 'error-tracking-setup',\n command: 'errors',\n flowKey: 'error-tracking',\n description: 'Set up PostHog error tracking',\n integrationLabel: 'error-tracking',\n successMessage: 'Error tracking configured!',\n reportFile: 'posthog-error-tracking-report.md',\n docsUrl: 'https://posthog.com/docs/error-tracking',\n spinnerMessage: 'Setting up error tracking...',\n estimatedDurationMinutes: 5,\n};\n\ndescribe('createSkillWorkflow', () => {\n it('produces a WorkflowConfig with static run (not a function)', () => {\n const config = createSkillWorkflow(baseOpts);\n\n expect(config.command).toBe('errors');\n expect(config.flowKey).toBe('error-tracking');\n expect(config.steps).toBe(AGENT_SKILL_STEPS);\n\n // run must be a static object — skill workflows don't need dynamic resolution\n const run = config.run as WorkflowRun;\n expect(typeof config.run).toBe('object');\n expect(run.skillId).toBe('error-tracking-setup');\n expect(run.integrationLabel).toBe('error-tracking');\n });\n\n it('wraps customPrompt string into a function, omits when absent', () => {\n const withPrompt = createSkillWorkflow({\n ...baseOpts,\n customPrompt: 'Do the thing.',\n });\n const without = createSkillWorkflow(baseOpts);\n\n expect((withPrompt.run as WorkflowRun).customPrompt!(null as never)).toBe(\n 'Do the thing.',\n );\n expect((without.run as WorkflowRun).customPrompt).toBeUndefined();\n });\n});\n\ndescribe('AGENT_SKILL_STEPS', () => {\n it('is intro → auth → run → outro → skills, all with screens and working predicates', () => {\n expect(AGENT_SKILL_STEPS.map((s) => s.id)).toEqual([\n 'intro',\n 'auth',\n 'run',\n 'outro',\n 'skills',\n ]);\n\n const session = buildSession({});\n const [intro, auth, run, outro] = AGENT_SKILL_STEPS;\n\n // Intro gate starts closed\n expect(intro.gate!(session)).toBe(false);\n\n // All incomplete initially\n expect(auth.isComplete!(session)).toBe(false);\n expect(run.isComplete!(session)).toBe(false);\n expect(outro.isComplete!(session)).toBe(false);\n\n // Intro gate opens after setup confirmed\n session.setupConfirmed = true;\n expect(intro.gate!(session)).toBe(true);\n\n // Completing each\n session.credentials = {\n accessToken: 't',\n projectApiKey: 'k',\n host: 'h',\n projectId: 1,\n };\n expect(auth.isComplete!(session)).toBe(true);\n\n session.runPhase = RunPhase.Completed;\n expect(run.isComplete!(session)).toBe(true);\n\n session.outroDismissed = true;\n expect(outro.isComplete!(session)).toBe(true);\n });\n});\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Generic agent skill step list.
|
|
3
3
|
*
|
|
4
|
-
* Minimal flow:
|
|
5
|
-
* No detection, no setup, no MCP
|
|
4
|
+
* Minimal flow: auth → run → outro → skills.
|
|
5
|
+
* No detection, no setup, no MCP.
|
|
6
6
|
*/
|
|
7
7
|
import type { Workflow } from '../workflow-step.js';
|
|
8
8
|
export declare const AGENT_SKILL_STEPS: Workflow;
|
|
@@ -2,13 +2,19 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Generic agent skill step list.
|
|
4
4
|
*
|
|
5
|
-
* Minimal flow:
|
|
6
|
-
* No detection, no setup, no MCP
|
|
5
|
+
* Minimal flow: auth → run → outro → skills.
|
|
6
|
+
* No detection, no setup, no MCP.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.AGENT_SKILL_STEPS = void 0;
|
|
10
10
|
const wizard_session_js_1 = require("../../wizard-session.js");
|
|
11
11
|
exports.AGENT_SKILL_STEPS = [
|
|
12
|
+
{
|
|
13
|
+
id: 'intro',
|
|
14
|
+
label: 'Welcome',
|
|
15
|
+
screen: 'agent-skill-intro',
|
|
16
|
+
gate: (session) => session.setupConfirmed,
|
|
17
|
+
},
|
|
12
18
|
{
|
|
13
19
|
id: 'auth',
|
|
14
20
|
label: 'Authentication',
|
|
@@ -28,5 +34,10 @@ exports.AGENT_SKILL_STEPS = [
|
|
|
28
34
|
screen: 'outro',
|
|
29
35
|
isComplete: (session) => session.outroDismissed,
|
|
30
36
|
},
|
|
37
|
+
{
|
|
38
|
+
id: 'skills',
|
|
39
|
+
label: 'Skills',
|
|
40
|
+
screen: 'skills',
|
|
41
|
+
},
|
|
31
42
|
];
|
|
32
43
|
//# sourceMappingURL=steps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"steps.js","sourceRoot":"","sources":["../../../../../src/lib/workflows/agent-skill/steps.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAGH,+DAAmD;AAEtC,QAAA,iBAAiB,GAAa;IACzC;QACE,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI;KACtD;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,KAAK;QACb,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CACtB,OAAO,CAAC,QAAQ,KAAK,4BAAQ,CAAC,SAAS;YACvC,OAAO,CAAC,QAAQ,KAAK,4BAAQ,CAAC,KAAK;KACtC;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,OAAO;QACf,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc;KAChD;CACF,CAAC","sourcesContent":["/**\n * Generic agent skill step list.\n *\n * Minimal flow:
|
|
1
|
+
{"version":3,"file":"steps.js","sourceRoot":"","sources":["../../../../../src/lib/workflows/agent-skill/steps.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAGH,+DAAmD;AAEtC,QAAA,iBAAiB,GAAa;IACzC;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,mBAAmB;QAC3B,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc;KAC1C;IACD;QACE,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI;KACtD;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,KAAK;QACb,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CACtB,OAAO,CAAC,QAAQ,KAAK,4BAAQ,CAAC,SAAS;YACvC,OAAO,CAAC,QAAQ,KAAK,4BAAQ,CAAC,KAAK;KACtC;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,OAAO;QACf,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc;KAChD;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,QAAQ;KACjB;CACF,CAAC","sourcesContent":["/**\n * Generic agent skill step list.\n *\n * Minimal flow: auth → run → outro → skills.\n * No detection, no setup, no MCP.\n */\n\nimport type { Workflow } from '../workflow-step.js';\nimport { RunPhase } from '../../wizard-session.js';\n\nexport const AGENT_SKILL_STEPS: Workflow = [\n {\n id: 'intro',\n label: 'Welcome',\n screen: 'agent-skill-intro',\n gate: (session) => session.setupConfirmed,\n },\n {\n id: 'auth',\n label: 'Authentication',\n screen: 'auth',\n isComplete: (session) => session.credentials !== null,\n },\n {\n id: 'run',\n label: 'Running',\n screen: 'run',\n isComplete: (session) =>\n session.runPhase === RunPhase.Completed ||\n session.runPhase === RunPhase.Error,\n },\n {\n id: 'outro',\n label: 'Done',\n screen: 'outro',\n isComplete: (session) => session.outroDismissed,\n },\n {\n id: 'skills',\n label: 'Skills',\n screen: 'skills',\n },\n];\n"]}
|
|
@@ -92,9 +92,9 @@ exports.POSTHOG_INTEGRATION_WORKFLOW = [
|
|
|
92
92
|
isComplete: (session) => session.outroDismissed,
|
|
93
93
|
},
|
|
94
94
|
{
|
|
95
|
-
id: 'skills',
|
|
96
|
-
label: 'Skills',
|
|
97
|
-
screen: 'skills',
|
|
95
|
+
id: 'keep-skills',
|
|
96
|
+
label: 'Keep Skills',
|
|
97
|
+
screen: 'keep-skills',
|
|
98
98
|
},
|
|
99
99
|
];
|
|
100
100
|
//# sourceMappingURL=steps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"steps.js","sourceRoot":"","sources":["../../../../../src/lib/workflows/posthog-integration/steps.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"steps.js","sourceRoot":"","sources":["../../../../../src/lib/workflows/posthog-integration/steps.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAIH,+DAAmD;AACnD,mEAG0C;AAC1C,2CAAuD;AAEvD,SAAS,UAAU,CAAC,OAAsB;IACxC,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IACvC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,SAAS;QAAE,OAAO,KAAK,CAAC;IAErD,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CACzC,CAAC,CAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAC7D,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAsB;IAC9C,IAAI,CAAC,OAAO,CAAC,eAAe;QAAE,OAAO,KAAK,CAAC;IAC3C,IAAI,OAAO,CAAC,eAAe,CAAC,QAAQ,KAAK,8BAAe,CAAC,EAAE;QACzD,OAAO,OAAO,CAAC,eAAe,CAAC;IACjC,OAAO,IAAI,CAAC;AACd,CAAC;AAEY,QAAA,4BAA4B,GAAa;IACpD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,qBAAqB;QAC5B,mEAAmE;QACnE,iEAAiE;QACjE,iEAAiE;QACjE,iCAAiC;QACjC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,oCAAwB,EAAC,GAAG,CAAC;KAChD;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,OAAO;QACf,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc;KAC1C;IACD;QACE,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,cAAc;QACrB,MAAM,EAAE,cAAc;QACtB,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;YACd,IAAA,sCAAuB,GAAE;iBACtB,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;gBAClB,GAAG,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,EAAE;gBACV,GAAG,CAAC,kBAAkB,CAAC;oBACrB,QAAQ,EAAE,8BAAe,CAAC,GAAG;oBAC7B,MAAM,EAAE,EAAW;oBACnB,OAAO,EAAE,EAAE;iBACZ,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;KACF;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,OAAO;QACf,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;KAC9C;IACD;QACE,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI;KACtD;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,aAAa;QACpB,MAAM,EAAE,KAAK;QACb,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CACtB,OAAO,CAAC,QAAQ,KAAK,4BAAQ,CAAC,SAAS;YACvC,OAAO,CAAC,QAAQ,KAAK,4BAAQ,CAAC,KAAK;KACtC;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,aAAa;QACpB,MAAM,EAAE,KAAK;QACb,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW;KAC7C;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,OAAO;QACf,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc;KAChD;IACD;QACE,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,aAAa;QACpB,MAAM,EAAE,aAAa;KACtB;CACF,CAAC","sourcesContent":["/**\n * PostHog integration workflow — the default wizard flow.\n *\n * Steps define their own gate predicates and onInit callbacks.\n * The store derives gate promises and fires init work from these\n * definitions — no hardcoded per-flow logic in the store.\n */\n\nimport type { Workflow } from '../workflow-step.js';\nimport type { WizardSession } from '../../wizard-session.js';\nimport { RunPhase } from '../../wizard-session.js';\nimport {\n evaluateWizardReadiness,\n WizardReadiness,\n} from '../../health-checks/readiness.js';\nimport { detectPostHogIntegration } from './detect.js';\n\nfunction needsSetup(session: WizardSession): boolean {\n const config = session.frameworkConfig;\n if (!config?.metadata.setup?.questions) return false;\n\n return config.metadata.setup.questions.some(\n (q: { key: string }) => !(q.key in session.frameworkContext),\n );\n}\n\nfunction healthCheckReady(session: WizardSession): boolean {\n if (!session.readinessResult) return false;\n if (session.readinessResult.decision === WizardReadiness.No)\n return session.outageDismissed;\n return true;\n}\n\nexport const POSTHOG_INTEGRATION_WORKFLOW: Workflow = [\n {\n id: 'detect',\n label: 'Detecting framework',\n // Headless step: no screen. onReady fires after bin.ts assigns the\n // session — runs framework detection, context gathering, version\n // check, and feature discovery. Results are written to the store\n // for the IntroScreen to render.\n onReady: (ctx) => detectPostHogIntegration(ctx),\n },\n {\n id: 'intro',\n label: 'Welcome',\n screen: 'intro',\n gate: (session) => session.setupConfirmed,\n },\n {\n id: 'health-check',\n label: 'Health check',\n screen: 'health-check',\n gate: healthCheckReady,\n onInit: (ctx) => {\n evaluateWizardReadiness()\n .then((readiness) => {\n ctx.setReadinessResult(readiness);\n })\n .catch(() => {\n ctx.setReadinessResult({\n decision: WizardReadiness.Yes,\n health: {} as never,\n reasons: [],\n });\n });\n },\n },\n {\n id: 'setup',\n label: 'Setup',\n screen: 'setup',\n show: needsSetup,\n isComplete: (session) => !needsSetup(session),\n },\n {\n id: 'auth',\n label: 'Authentication',\n screen: 'auth',\n isComplete: (session) => session.credentials !== null,\n },\n {\n id: 'run',\n label: 'Integration',\n screen: 'run',\n isComplete: (session) =>\n session.runPhase === RunPhase.Completed ||\n session.runPhase === RunPhase.Error,\n },\n {\n id: 'mcp',\n label: 'MCP servers',\n screen: 'mcp',\n isComplete: (session) => session.mcpComplete,\n },\n {\n id: 'outro',\n label: 'Done',\n screen: 'outro',\n isComplete: (session) => session.outroDismissed,\n },\n {\n id: 'keep-skills',\n label: 'Keep Skills',\n screen: 'keep-skills',\n },\n];\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"steps.js","sourceRoot":"","sources":["../../../../../src/lib/workflows/revenue-analytics/steps.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAGH,+DAAmD;AACnD,2CAAyD;AAE5C,QAAA,0BAA0B,GAAa;IAClD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,yBAAyB;QAChC,gEAAgE;QAChE,iEAAiE;QACjE,gEAAgE;QAChE,kCAAkC;QAClC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CACf,IAAA,sCAA0B,EAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,mBAAmB,CAAC;KACnE;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,eAAe;QACvB,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc;KAC1C;IACD;QACE,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI;KACtD;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,mBAAmB;QAC1B,MAAM,EAAE,KAAK;QACb,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CACtB,OAAO,CAAC,QAAQ,KAAK,4BAAQ,CAAC,SAAS;YACvC,OAAO,CAAC,QAAQ,KAAK,4BAAQ,CAAC,KAAK;KACtC;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,OAAO;QACf,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc;KAChD;CACF,CAAC","sourcesContent":["/**\n * Revenue analytics workflow step list.\n *\n * The detect step checks for PostHog + Stripe SDKs. The skill install\n * and agent run live in the workflow runner (see agent-runner.ts).\n */\n\nimport type { Workflow } from '../workflow-step.js';\nimport { RunPhase } from '../../wizard-session.js';\nimport { detectRevenuePrerequisites } from './detect.js';\n\nexport const REVENUE_ANALYTICS_WORKFLOW: Workflow = [\n {\n id: 'detect',\n label: 'Detecting prerequisites',\n // Headless step: no screen, no gate. onReady fires after bin.ts\n // assigns the session — the hook scans for PostHog + Stripe SDKs\n // and writes the results (or a detectError) to frameworkContext\n // for the intro screen to render.\n onReady: (ctx) =>\n detectRevenuePrerequisites(ctx.session, ctx.setFrameworkContext),\n },\n {\n id: 'intro',\n label: 'Welcome',\n screen: 'revenue-intro',\n gate: (session) => session.setupConfirmed,\n },\n {\n id: 'auth',\n label: 'Authentication',\n screen: 'auth',\n isComplete: (session) => session.credentials !== null,\n },\n {\n id: 'run',\n label: 'Revenue analytics',\n screen: 'run',\n isComplete: (session) =>\n session.runPhase === RunPhase.Completed ||\n session.runPhase === RunPhase.Error,\n },\n {\n id: 'outro',\n label: 'Done',\n screen: 'outro',\n isComplete: (session) => session.outroDismissed,\n },\n];\n"]}
|
|
1
|
+
{"version":3,"file":"steps.js","sourceRoot":"","sources":["../../../../../src/lib/workflows/revenue-analytics/steps.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAGH,+DAAmD;AACnD,2CAAyD;AAE5C,QAAA,0BAA0B,GAAa;IAClD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,yBAAyB;QAChC,gEAAgE;QAChE,iEAAiE;QACjE,gEAAgE;QAChE,kCAAkC;QAClC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CACf,IAAA,sCAA0B,EAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,mBAAmB,CAAC;KACnE;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,eAAe;QACvB,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc;KAC1C;IACD;QACE,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI;KACtD;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,mBAAmB;QAC1B,MAAM,EAAE,KAAK;QACb,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CACtB,OAAO,CAAC,QAAQ,KAAK,4BAAQ,CAAC,SAAS;YACvC,OAAO,CAAC,QAAQ,KAAK,4BAAQ,CAAC,KAAK;KACtC;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,OAAO;QACf,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc;KAChD;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,QAAQ;KACjB;CACF,CAAC","sourcesContent":["/**\n * Revenue analytics workflow step list.\n *\n * The detect step checks for PostHog + Stripe SDKs. The skill install\n * and agent run live in the workflow runner (see agent-runner.ts).\n */\n\nimport type { Workflow } from '../workflow-step.js';\nimport { RunPhase } from '../../wizard-session.js';\nimport { detectRevenuePrerequisites } from './detect.js';\n\nexport const REVENUE_ANALYTICS_WORKFLOW: Workflow = [\n {\n id: 'detect',\n label: 'Detecting prerequisites',\n // Headless step: no screen, no gate. onReady fires after bin.ts\n // assigns the session — the hook scans for PostHog + Stripe SDKs\n // and writes the results (or a detectError) to frameworkContext\n // for the intro screen to render.\n onReady: (ctx) =>\n detectRevenuePrerequisites(ctx.session, ctx.setFrameworkContext),\n },\n {\n id: 'intro',\n label: 'Welcome',\n screen: 'revenue-intro',\n gate: (session) => session.setupConfirmed,\n },\n {\n id: 'auth',\n label: 'Authentication',\n screen: 'auth',\n isComplete: (session) => session.credentials !== null,\n },\n {\n id: 'run',\n label: 'Revenue analytics',\n screen: 'run',\n isComplete: (session) =>\n session.runPhase === RunPhase.Completed ||\n session.runPhase === RunPhase.Error,\n },\n {\n id: 'outro',\n label: 'Done',\n screen: 'outro',\n isComplete: (session) => session.outroDismissed,\n },\n {\n id: 'skills',\n label: 'Skills',\n screen: 'skills',\n },\n];\n"]}
|