@posthog/wizard 2.1.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/dist/bin.js +5 -0
  2. package/dist/bin.js.map +1 -1
  3. package/dist/src/__tests__/run.test.js +4 -2
  4. package/dist/src/__tests__/run.test.js.map +1 -1
  5. package/dist/src/lib/__tests__/agent-interface.test.js +2 -1
  6. package/dist/src/lib/__tests__/agent-interface.test.js.map +1 -1
  7. package/dist/src/lib/agent-interface.d.ts +2 -1
  8. package/dist/src/lib/agent-interface.js +35 -13
  9. package/dist/src/lib/agent-interface.js.map +1 -1
  10. package/dist/src/lib/agent-runner.js +26 -22
  11. package/dist/src/lib/agent-runner.js.map +1 -1
  12. package/dist/src/lib/commandments.js +2 -1
  13. package/dist/src/lib/commandments.js.map +1 -1
  14. package/dist/src/lib/constants.d.ts +1 -1
  15. package/dist/src/lib/health-checks/__tests__/health-checks.test.js +11 -4
  16. package/dist/src/lib/health-checks/__tests__/health-checks.test.js.map +1 -1
  17. package/dist/src/lib/health-checks/endpoints.d.ts +1 -0
  18. package/dist/src/lib/health-checks/endpoints.js +3 -1
  19. package/dist/src/lib/health-checks/endpoints.js.map +1 -1
  20. package/dist/src/lib/health-checks/index.d.ts +1 -1
  21. package/dist/src/lib/health-checks/index.js +2 -1
  22. package/dist/src/lib/health-checks/index.js.map +1 -1
  23. package/dist/src/lib/health-checks/readiness.d.ts +5 -0
  24. package/dist/src/lib/health-checks/readiness.js +89 -20
  25. package/dist/src/lib/health-checks/readiness.js.map +1 -1
  26. package/dist/src/lib/health-checks/types.d.ts +1 -0
  27. package/dist/src/lib/health-checks/types.js.map +1 -1
  28. package/dist/src/lib/version.d.ts +1 -1
  29. package/dist/src/lib/version.js +1 -1
  30. package/dist/src/lib/version.js.map +1 -1
  31. package/dist/src/lib/wizard-session.d.ts +3 -4
  32. package/dist/src/lib/wizard-session.js +2 -1
  33. package/dist/src/lib/wizard-session.js.map +1 -1
  34. package/dist/src/lib/wizard-tools.d.ts +24 -0
  35. package/dist/src/lib/wizard-tools.js +151 -2
  36. package/dist/src/lib/wizard-tools.js.map +1 -1
  37. package/dist/src/ui/logging-ui.d.ts +2 -4
  38. package/dist/src/ui/logging-ui.js +12 -4
  39. package/dist/src/ui/logging-ui.js.map +1 -1
  40. package/dist/src/ui/tui/__tests__/store.test.js +81 -29
  41. package/dist/src/ui/tui/__tests__/store.test.js.map +1 -1
  42. package/dist/src/ui/tui/components/ServiceHealthList.d.ts +15 -0
  43. package/dist/src/ui/tui/components/ServiceHealthList.js +57 -0
  44. package/dist/src/ui/tui/components/ServiceHealthList.js.map +1 -0
  45. package/dist/src/ui/tui/flows.d.ts +1 -0
  46. package/dist/src/ui/tui/flows.js +12 -0
  47. package/dist/src/ui/tui/flows.js.map +1 -1
  48. package/dist/src/ui/tui/ink-ui.d.ts +2 -4
  49. package/dist/src/ui/tui/ink-ui.js +8 -4
  50. package/dist/src/ui/tui/ink-ui.js.map +1 -1
  51. package/dist/src/ui/tui/playground/PlaygroundApp.js +12 -0
  52. package/dist/src/ui/tui/playground/PlaygroundApp.js.map +1 -1
  53. package/dist/src/ui/tui/playground/demos/HealthCheckDemo.d.ts +11 -0
  54. package/dist/src/ui/tui/playground/demos/HealthCheckDemo.js +57 -0
  55. package/dist/src/ui/tui/playground/demos/HealthCheckDemo.js.map +1 -0
  56. package/dist/src/ui/tui/playground/demos/ModalDemo.d.ts +6 -0
  57. package/dist/src/ui/tui/playground/demos/ModalDemo.js +13 -0
  58. package/dist/src/ui/tui/playground/demos/ModalDemo.js.map +1 -0
  59. package/dist/src/ui/tui/primitives/ModalOverlay.d.ts +25 -0
  60. package/dist/src/ui/tui/primitives/ModalOverlay.js +7 -0
  61. package/dist/src/ui/tui/primitives/ModalOverlay.js.map +1 -0
  62. package/dist/src/ui/tui/primitives/ProgressList.js +3 -1
  63. package/dist/src/ui/tui/primitives/ProgressList.js.map +1 -1
  64. package/dist/src/ui/tui/primitives/index.d.ts +1 -0
  65. package/dist/src/ui/tui/primitives/index.js +1 -0
  66. package/dist/src/ui/tui/primitives/index.js.map +1 -1
  67. package/dist/src/ui/tui/router.d.ts +0 -1
  68. package/dist/src/ui/tui/router.js +0 -1
  69. package/dist/src/ui/tui/router.js.map +1 -1
  70. package/dist/src/ui/tui/screen-registry.js +2 -2
  71. package/dist/src/ui/tui/screen-registry.js.map +1 -1
  72. package/dist/src/ui/tui/screens/PortConflictScreen.js +13 -13
  73. package/dist/src/ui/tui/screens/PortConflictScreen.js.map +1 -1
  74. package/dist/src/ui/tui/screens/SettingsOverrideScreen.js +8 -8
  75. package/dist/src/ui/tui/screens/SettingsOverrideScreen.js.map +1 -1
  76. package/dist/src/ui/tui/screens/health/HealthCheckScreen.d.ts +14 -0
  77. package/dist/src/ui/tui/screens/health/HealthCheckScreen.js +77 -0
  78. package/dist/src/ui/tui/screens/health/HealthCheckScreen.js.map +1 -0
  79. package/dist/src/ui/tui/store.d.ts +15 -5
  80. package/dist/src/ui/tui/store.js +47 -3
  81. package/dist/src/ui/tui/store.js.map +1 -1
  82. package/dist/src/ui/wizard-ui.d.ts +4 -5
  83. package/dist/src/ui/wizard-ui.js.map +1 -1
  84. package/dist/src/utils/__tests__/semver.test.js +45 -3
  85. package/dist/src/utils/__tests__/semver.test.js.map +1 -1
  86. package/dist/src/utils/__tests__/setup-utils.test.js +2 -1
  87. package/dist/src/utils/__tests__/setup-utils.test.js.map +1 -1
  88. package/dist/src/utils/semver.js +25 -0
  89. package/dist/src/utils/semver.js.map +1 -1
  90. package/package.json +2 -2
  91. package/dist/src/ui/tui/screens/OutageScreen.d.ts +0 -10
  92. package/dist/src/ui/tui/screens/OutageScreen.js +0 -17
  93. package/dist/src/ui/tui/screens/OutageScreen.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"semver.test.js","sourceRoot":"","sources":["../../../../src/utils/__tests__/semver.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { createVersionBucket } from '../semver';\n\ndescribe('createVersionBucket', () => {\n describe('without minimum threshold', () => {\n const getVersionBucket = createVersionBucket();\n\n it('returns \"none\" for undefined version', () => {\n expect(getVersionBucket(undefined)).toBe('none');\n });\n\n it('returns \"none\" for empty string', () => {\n expect(getVersionBucket('')).toBe('none');\n });\n\n it('returns major version bucket for exact versions', () => {\n expect(getVersionBucket('1.0.0')).toBe('1.x');\n expect(getVersionBucket('2.5.3')).toBe('2.x');\n expect(getVersionBucket('15.3.2')).toBe('15.x');\n });\n\n it('returns major version bucket for semver ranges', () => {\n expect(getVersionBucket('^1.0.0')).toBe('1.x');\n expect(getVersionBucket('~2.5.0')).toBe('2.x');\n expect(getVersionBucket('>=15.0.0')).toBe('15.x');\n });\n\n it('returns \"unknown\" for invalid semver (caught by try/catch)', () => {\n expect(getVersionBucket('not-a-version')).toBe('unknown');\n expect(getVersionBucket('abc')).toBe('unknown');\n });\n\n it('handles version 0.x correctly', () => {\n expect(getVersionBucket('0.1.0')).toBe('0.x');\n expect(getVersionBucket('0.0.1')).toBe('0.x');\n });\n });\n\n describe('with minimum threshold', () => {\n describe('threshold of 11 (Next.js style)', () => {\n const getVersionBucket = createVersionBucket(11);\n\n it('returns major version bucket for versions >= threshold', () => {\n expect(getVersionBucket('11.0.0')).toBe('11.x');\n expect(getVersionBucket('12.5.3')).toBe('12.x');\n expect(getVersionBucket('15.3.2')).toBe('15.x');\n });\n\n it('returns \"<threshold\" bucket for versions below threshold', () => {\n expect(getVersionBucket('10.0.0')).toBe('<11.0.0');\n expect(getVersionBucket('9.5.0')).toBe('<11.0.0');\n expect(getVersionBucket('1.0.0')).toBe('<11.0.0');\n });\n\n it('handles semver ranges correctly', () => {\n expect(getVersionBucket('^15.0.0')).toBe('15.x');\n expect(getVersionBucket('^10.0.0')).toBe('<11.0.0');\n });\n });\n\n describe('threshold of 6 (React Router style)', () => {\n const getVersionBucket = createVersionBucket(6);\n\n it('returns major version bucket for versions >= threshold', () => {\n expect(getVersionBucket('6.0.0')).toBe('6.x');\n expect(getVersionBucket('7.1.0')).toBe('7.x');\n });\n\n it('returns \"<threshold\" bucket for versions below threshold', () => {\n expect(getVersionBucket('5.3.0')).toBe('<6.0.0');\n expect(getVersionBucket('4.0.0')).toBe('<6.0.0');\n });\n });\n\n describe('threshold of 3 (Django style)', () => {\n const getVersionBucket = createVersionBucket(3);\n\n it('returns major version bucket for versions >= threshold', () => {\n expect(getVersionBucket('3.0.0')).toBe('3.x');\n expect(getVersionBucket('4.2.1')).toBe('4.x');\n expect(getVersionBucket('5.0.0')).toBe('5.x');\n });\n\n it('returns \"<threshold\" bucket for versions below threshold', () => {\n expect(getVersionBucket('2.2.0')).toBe('<3.0.0');\n expect(getVersionBucket('1.11.0')).toBe('<3.0.0');\n });\n });\n\n describe('threshold of 2 (Flask style)', () => {\n const getVersionBucket = createVersionBucket(2);\n\n it('returns major version bucket for versions >= threshold', () => {\n expect(getVersionBucket('2.0.0')).toBe('2.x');\n expect(getVersionBucket('3.0.0')).toBe('3.x');\n });\n\n it('returns \"<threshold\" bucket for versions below threshold', () => {\n expect(getVersionBucket('1.1.0')).toBe('<2.0.0');\n expect(getVersionBucket('0.12.0')).toBe('<2.0.0');\n });\n });\n\n describe('threshold of 9 (Laravel style)', () => {\n const getVersionBucket = createVersionBucket(9);\n\n it('returns major version bucket for versions >= threshold', () => {\n expect(getVersionBucket('9.0.0')).toBe('9.x');\n expect(getVersionBucket('10.0.0')).toBe('10.x');\n expect(getVersionBucket('11.0.0')).toBe('11.x');\n });\n\n it('returns \"<threshold\" bucket for versions below threshold', () => {\n expect(getVersionBucket('8.0.0')).toBe('<9.0.0');\n expect(getVersionBucket('7.0.0')).toBe('<9.0.0');\n });\n });\n });\n\n describe('edge cases', () => {\n const getVersionBucket = createVersionBucket();\n\n it('handles version with only major.minor', () => {\n expect(getVersionBucket('1.0')).toBe('1.x');\n expect(getVersionBucket('15.3')).toBe('15.x');\n });\n\n it('handles prerelease versions', () => {\n expect(getVersionBucket('1.0.0-beta.1')).toBe('1.x');\n expect(getVersionBucket('2.0.0-rc.1')).toBe('2.x');\n expect(getVersionBucket('15.0.0-canary.1')).toBe('15.x');\n });\n\n it('handles versions with build metadata', () => {\n expect(getVersionBucket('1.0.0+build.123')).toBe('1.x');\n });\n\n it('handles whitespace-only string (semver treats as version 0)', () => {\n // Note: semver's minVersion treats whitespace as a valid range matching version 0\n expect(getVersionBucket(' ')).toBe('0.x');\n });\n });\n});\n"]}
1
+ {"version":3,"file":"semver.test.js","sourceRoot":"","sources":["../../../../src/utils/__tests__/semver.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { createVersionBucket, fulfillsVersionRange } from '../semver';\n\ndescribe('createVersionBucket', () => {\n describe('without minimum threshold', () => {\n const getVersionBucket = createVersionBucket();\n\n it('returns \"none\" for undefined version', () => {\n expect(getVersionBucket(undefined)).toBe('none');\n });\n\n it('returns \"none\" for empty string', () => {\n expect(getVersionBucket('')).toBe('none');\n });\n\n it('returns major version bucket for exact versions', () => {\n expect(getVersionBucket('1.0.0')).toBe('1.x');\n expect(getVersionBucket('2.5.3')).toBe('2.x');\n expect(getVersionBucket('15.3.2')).toBe('15.x');\n });\n\n it('returns major version bucket for semver ranges', () => {\n expect(getVersionBucket('^1.0.0')).toBe('1.x');\n expect(getVersionBucket('~2.5.0')).toBe('2.x');\n expect(getVersionBucket('>=15.0.0')).toBe('15.x');\n });\n\n it('returns \"unknown\" for invalid semver (caught by try/catch)', () => {\n expect(getVersionBucket('not-a-version')).toBe('unknown');\n expect(getVersionBucket('abc')).toBe('unknown');\n });\n\n it('handles version 0.x correctly', () => {\n expect(getVersionBucket('0.1.0')).toBe('0.x');\n expect(getVersionBucket('0.0.1')).toBe('0.x');\n });\n });\n\n describe('with minimum threshold', () => {\n describe('threshold of 11 (Next.js style)', () => {\n const getVersionBucket = createVersionBucket(11);\n\n it('returns major version bucket for versions >= threshold', () => {\n expect(getVersionBucket('11.0.0')).toBe('11.x');\n expect(getVersionBucket('12.5.3')).toBe('12.x');\n expect(getVersionBucket('15.3.2')).toBe('15.x');\n });\n\n it('returns \"<threshold\" bucket for versions below threshold', () => {\n expect(getVersionBucket('10.0.0')).toBe('<11.0.0');\n expect(getVersionBucket('9.5.0')).toBe('<11.0.0');\n expect(getVersionBucket('1.0.0')).toBe('<11.0.0');\n });\n\n it('handles semver ranges correctly', () => {\n expect(getVersionBucket('^15.0.0')).toBe('15.x');\n expect(getVersionBucket('^10.0.0')).toBe('<11.0.0');\n });\n });\n\n describe('threshold of 6 (React Router style)', () => {\n const getVersionBucket = createVersionBucket(6);\n\n it('returns major version bucket for versions >= threshold', () => {\n expect(getVersionBucket('6.0.0')).toBe('6.x');\n expect(getVersionBucket('7.1.0')).toBe('7.x');\n });\n\n it('returns \"<threshold\" bucket for versions below threshold', () => {\n expect(getVersionBucket('5.3.0')).toBe('<6.0.0');\n expect(getVersionBucket('4.0.0')).toBe('<6.0.0');\n });\n });\n\n describe('threshold of 3 (Django style)', () => {\n const getVersionBucket = createVersionBucket(3);\n\n it('returns major version bucket for versions >= threshold', () => {\n expect(getVersionBucket('3.0.0')).toBe('3.x');\n expect(getVersionBucket('4.2.1')).toBe('4.x');\n expect(getVersionBucket('5.0.0')).toBe('5.x');\n });\n\n it('returns \"<threshold\" bucket for versions below threshold', () => {\n expect(getVersionBucket('2.2.0')).toBe('<3.0.0');\n expect(getVersionBucket('1.11.0')).toBe('<3.0.0');\n });\n });\n\n describe('threshold of 2 (Flask style)', () => {\n const getVersionBucket = createVersionBucket(2);\n\n it('returns major version bucket for versions >= threshold', () => {\n expect(getVersionBucket('2.0.0')).toBe('2.x');\n expect(getVersionBucket('3.0.0')).toBe('3.x');\n });\n\n it('returns \"<threshold\" bucket for versions below threshold', () => {\n expect(getVersionBucket('1.1.0')).toBe('<2.0.0');\n expect(getVersionBucket('0.12.0')).toBe('<2.0.0');\n });\n });\n\n describe('threshold of 9 (Laravel style)', () => {\n const getVersionBucket = createVersionBucket(9);\n\n it('returns major version bucket for versions >= threshold', () => {\n expect(getVersionBucket('9.0.0')).toBe('9.x');\n expect(getVersionBucket('10.0.0')).toBe('10.x');\n expect(getVersionBucket('11.0.0')).toBe('11.x');\n });\n\n it('returns \"<threshold\" bucket for versions below threshold', () => {\n expect(getVersionBucket('8.0.0')).toBe('<9.0.0');\n expect(getVersionBucket('7.0.0')).toBe('<9.0.0');\n });\n });\n });\n\n describe('edge cases', () => {\n const getVersionBucket = createVersionBucket();\n\n it('handles version with only major.minor', () => {\n expect(getVersionBucket('1.0')).toBe('1.x');\n expect(getVersionBucket('15.3')).toBe('15.x');\n });\n\n it('handles prerelease versions', () => {\n expect(getVersionBucket('1.0.0-beta.1')).toBe('1.x');\n expect(getVersionBucket('2.0.0-rc.1')).toBe('2.x');\n expect(getVersionBucket('15.0.0-canary.1')).toBe('15.x');\n });\n\n it('handles versions with build metadata', () => {\n expect(getVersionBucket('1.0.0+build.123')).toBe('1.x');\n });\n\n it('returns \"unknown\" for whitespace-only string', () => {\n expect(getVersionBucket(' ')).toBe('unknown');\n });\n });\n\n describe('non-semver package.json version formats', () => {\n const getVersionBucket = createVersionBucket();\n\n it('returns \"unknown\" and never throws', () => {\n const cases = [\n 'https://github.com/user/repo/tarball/main',\n 'git+https://github.com/user/repo.git',\n 'user/repo',\n 'file:../my-lib',\n 'workspace:*',\n 'npm:@scope/pkg@^1.0.0',\n 'next',\n 'canary',\n ];\n for (const v of cases) {\n expect(getVersionBucket(v)).toBe('unknown');\n }\n });\n });\n});\n\ndescribe('fulfillsVersionRange', () => {\n const check = (\n version: string,\n acceptable = '>=15.0.0',\n canBeLatest = false,\n ) =>\n fulfillsVersionRange({\n version,\n acceptableVersions: acceptable,\n canBeLatest,\n });\n\n describe('non-semver package.json version formats', () => {\n it('rejects non-semver versions without throwing', () => {\n const cases = [\n 'https://github.com/user/repo/tarball/main',\n 'git+https://github.com/user/repo.git',\n 'user/repo',\n 'file:../my-lib',\n 'workspace:*',\n 'npm:@scope/pkg@^1.0.0',\n '',\n 'next',\n 'canary',\n ];\n for (const v of cases) {\n expect(check(v)).toBe(false);\n }\n });\n });\n});\n"]}
@@ -61,7 +61,8 @@ jest.mock('../../ui', () => ({
61
61
  pushStatus: jest.fn(),
62
62
  syncTodos: jest.fn(),
63
63
  setLoginUrl: jest.fn(),
64
- showServiceStatus: jest.fn(),
64
+ showBlockingOutage: jest.fn(),
65
+ setReadinessWarnings: jest.fn(),
65
66
  showSettingsOverride: jest.fn(),
66
67
  startRun: jest.fn(),
67
68
  note: jest.fn(),
@@ -1 +1 @@
1
- {"version":3,"file":"setup-utils.test.js","sourceRoot":"","sources":["../../../../src/utils/__tests__/setup-utils.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { installPackage } from '../setup-utils';\n\nimport * as ChildProcess from 'node:child_process';\nimport type { PackageManager } from '../package-manager';\n\njest.mock('node:child_process', () => ({\n __esModule: true,\n ...jest.requireActual('node:child_process'),\n}));\n\njest.mock('../../ui', () => ({\n getUI: jest.fn().mockReturnValue({\n log: {\n info: jest.fn(),\n success: jest.fn(),\n warn: jest.fn(),\n error: jest.fn(),\n step: jest.fn(),\n },\n cancel: jest.fn(),\n outro: jest.fn(),\n intro: jest.fn(),\n spinner: jest.fn().mockImplementation(() => ({\n start: jest.fn(),\n stop: jest.fn(),\n message: jest.fn(),\n })),\n setDetectedFramework: jest.fn(),\n setCredentials: jest.fn(),\n pushStatus: jest.fn(),\n syncTodos: jest.fn(),\n setLoginUrl: jest.fn(),\n showServiceStatus: jest.fn(),\n showSettingsOverride: jest.fn(),\n startRun: jest.fn(),\n note: jest.fn(),\n }),\n}));\n\ndescribe.skip('installPackage', () => {\n afterEach(() => {\n jest.clearAllMocks();\n });\n\n it('force-installs a package if the forceInstall flag is set', async () => {\n const packageManagerMock: PackageManager = {\n name: 'npm',\n label: 'NPM',\n installCommand: 'npm install',\n buildCommand: 'npm run build',\n runScriptCommand: 'npm run',\n flags: '',\n forceInstallFlag: '--force',\n detect: jest.fn(),\n addOverride: jest.fn(),\n };\n\n const execSpy = jest\n .spyOn(ChildProcess, 'exec')\n // @ts-expect-error - don't care about the return value\n .mockImplementationOnce((cmd, cb) => {\n if (cb) {\n // @ts-expect-error - don't care about the options value\n cb(null, '', '');\n }\n });\n\n await installPackage({\n alreadyInstalled: false,\n packageName: 'posthog-js',\n packageNameDisplayLabel: 'posthog-js',\n forceInstall: true,\n packageManager: packageManagerMock,\n installDir: process.cwd(),\n });\n\n expect(execSpy).toHaveBeenCalledWith(\n 'npm install posthog-js --force',\n expect.any(Function),\n );\n });\n\n it.each([false, undefined])(\n \"doesn't force-install a package if the forceInstall flag is %s\",\n async (flag) => {\n const packageManagerMock: PackageManager = {\n name: 'npm',\n label: 'NPM',\n installCommand: 'npm install',\n buildCommand: 'npm run build',\n runScriptCommand: 'npm run',\n flags: '',\n forceInstallFlag: '--force',\n detect: jest.fn(),\n addOverride: jest.fn(),\n };\n\n const execSpy = jest\n .spyOn(ChildProcess, 'exec')\n // @ts-expect-error - don't care about the return value\n .mockImplementationOnce((cmd, cb) => {\n if (cb) {\n // @ts-expect-error - don't care about the options value\n cb(null, '', '');\n }\n });\n\n await installPackage({\n alreadyInstalled: false,\n packageName: 'posthog-js',\n packageNameDisplayLabel: 'posthog-js',\n forceInstall: flag,\n packageManager: packageManagerMock,\n installDir: process.cwd(),\n });\n\n expect(execSpy).toHaveBeenCalledWith(\n 'npm install posthog-js ',\n expect.any(Function),\n );\n },\n );\n});\n"]}
1
+ {"version":3,"file":"setup-utils.test.js","sourceRoot":"","sources":["../../../../src/utils/__tests__/setup-utils.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { installPackage } from '../setup-utils';\n\nimport * as ChildProcess from 'node:child_process';\nimport type { PackageManager } from '../package-manager';\n\njest.mock('node:child_process', () => ({\n __esModule: true,\n ...jest.requireActual('node:child_process'),\n}));\n\njest.mock('../../ui', () => ({\n getUI: jest.fn().mockReturnValue({\n log: {\n info: jest.fn(),\n success: jest.fn(),\n warn: jest.fn(),\n error: jest.fn(),\n step: jest.fn(),\n },\n cancel: jest.fn(),\n outro: jest.fn(),\n intro: jest.fn(),\n spinner: jest.fn().mockImplementation(() => ({\n start: jest.fn(),\n stop: jest.fn(),\n message: jest.fn(),\n })),\n setDetectedFramework: jest.fn(),\n setCredentials: jest.fn(),\n pushStatus: jest.fn(),\n syncTodos: jest.fn(),\n setLoginUrl: jest.fn(),\n showBlockingOutage: jest.fn(),\n setReadinessWarnings: jest.fn(),\n showSettingsOverride: jest.fn(),\n startRun: jest.fn(),\n note: jest.fn(),\n }),\n}));\n\ndescribe.skip('installPackage', () => {\n afterEach(() => {\n jest.clearAllMocks();\n });\n\n it('force-installs a package if the forceInstall flag is set', async () => {\n const packageManagerMock: PackageManager = {\n name: 'npm',\n label: 'NPM',\n installCommand: 'npm install',\n buildCommand: 'npm run build',\n runScriptCommand: 'npm run',\n flags: '',\n forceInstallFlag: '--force',\n detect: jest.fn(),\n addOverride: jest.fn(),\n };\n\n const execSpy = jest\n .spyOn(ChildProcess, 'exec')\n // @ts-expect-error - don't care about the return value\n .mockImplementationOnce((cmd, cb) => {\n if (cb) {\n // @ts-expect-error - don't care about the options value\n cb(null, '', '');\n }\n });\n\n await installPackage({\n alreadyInstalled: false,\n packageName: 'posthog-js',\n packageNameDisplayLabel: 'posthog-js',\n forceInstall: true,\n packageManager: packageManagerMock,\n installDir: process.cwd(),\n });\n\n expect(execSpy).toHaveBeenCalledWith(\n 'npm install posthog-js --force',\n expect.any(Function),\n );\n });\n\n it.each([false, undefined])(\n \"doesn't force-install a package if the forceInstall flag is %s\",\n async (flag) => {\n const packageManagerMock: PackageManager = {\n name: 'npm',\n label: 'NPM',\n installCommand: 'npm install',\n buildCommand: 'npm run build',\n runScriptCommand: 'npm run',\n flags: '',\n forceInstallFlag: '--force',\n detect: jest.fn(),\n addOverride: jest.fn(),\n };\n\n const execSpy = jest\n .spyOn(ChildProcess, 'exec')\n // @ts-expect-error - don't care about the return value\n .mockImplementationOnce((cmd, cb) => {\n if (cb) {\n // @ts-expect-error - don't care about the options value\n cb(null, '', '');\n }\n });\n\n await installPackage({\n alreadyInstalled: false,\n packageName: 'posthog-js',\n packageNameDisplayLabel: 'posthog-js',\n forceInstall: flag,\n packageManager: packageManagerMock,\n installDir: process.cwd(),\n });\n\n expect(execSpy).toHaveBeenCalledWith(\n 'npm install posthog-js ',\n expect.any(Function),\n );\n },\n );\n});\n"]}
@@ -3,10 +3,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.fulfillsVersionRange = fulfillsVersionRange;
4
4
  exports.createVersionBucket = createVersionBucket;
5
5
  const semver_1 = require("semver");
6
+ /**
7
+ * Version strings from package.json that are not semver ranges.
8
+ * URLs, git refs, dist-tags, local paths, workspace protocol, npm aliases, etc.
9
+ * These should be rejected early — we can't determine a clear version from them.
10
+ */
11
+ function isNonSemverVersion(version) {
12
+ const v = version.trim();
13
+ return (v === '' ||
14
+ v.startsWith('http://') ||
15
+ v.startsWith('https://') ||
16
+ v.startsWith('git+') ||
17
+ v.startsWith('git://') ||
18
+ v.startsWith('file:') ||
19
+ v.startsWith('npm:') ||
20
+ v.startsWith('workspace:') ||
21
+ v.startsWith('/') ||
22
+ v.includes('/') // user/repo shorthand
23
+ );
24
+ }
6
25
  function fulfillsVersionRange({ version, acceptableVersions, canBeLatest, }) {
7
26
  if (version === 'latest') {
8
27
  return canBeLatest;
9
28
  }
29
+ if (isNonSemverVersion(version)) {
30
+ return false;
31
+ }
10
32
  let cleanedUserVersion, isRange;
11
33
  if ((0, semver_1.valid)(version)) {
12
34
  cleanedUserVersion = (0, semver_1.valid)(version);
@@ -43,6 +65,9 @@ function createVersionBucket(minMajorVersion) {
43
65
  if (!version) {
44
66
  return 'none';
45
67
  }
68
+ if (isNonSemverVersion(version)) {
69
+ return 'unknown';
70
+ }
46
71
  try {
47
72
  const minVer = (0, semver_1.minVersion)(version);
48
73
  if (!minVer) {
@@ -1 +1 @@
1
- {"version":3,"file":"semver.js","sourceRoot":"","sources":["../../../src/utils/semver.ts"],"names":[],"mappings":";;AASA,oDA8BC;AAiBD,kDAoBC;AA5ED,mCAOgB;AAEhB,SAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,kBAAkB,EAClB,WAAW,GAKZ;IACC,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,kBAAkB,EAAE,OAAO,CAAC;IAEhC,IAAI,IAAA,cAAK,EAAC,OAAO,CAAC,EAAE,CAAC;QACnB,kBAAkB,GAAG,IAAA,cAAK,EAAC,OAAO,CAAC,CAAC;QACpC,OAAO,GAAG,KAAK,CAAC;IAClB,CAAC;SAAM,IAAI,IAAA,mBAAU,EAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,kBAAkB,GAAG,IAAA,mBAAU,EAAC,OAAO,CAAC,CAAC;QACzC,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IAED,OAAO;IACL,yGAAyG;IACzG,CAAC,CAAC,kBAAkB;QACpB,CAAC,OAAO;YACN,CAAC,CAAC,IAAA,eAAM,EAAC,kBAAkB,EAAE,kBAAkB,CAAC;YAChD,CAAC,CAAC,IAAA,kBAAS,EAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CACvD,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAgB,mBAAmB,CAAC,eAAwB;IAC1D,OAAO,CAAC,OAA2B,EAAU,EAAE;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,OAAO,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,YAAY,GAAG,IAAA,cAAK,EAAC,MAAM,CAAC,CAAC;YACnC,IAAI,eAAe,KAAK,SAAS,IAAI,YAAY,GAAG,eAAe,EAAE,CAAC;gBACpE,OAAO,IAAI,eAAe,MAAM,CAAC;YACnC,CAAC;YACD,OAAO,GAAG,YAAY,IAAI,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import {\n major,\n minVersion,\n satisfies,\n subset,\n valid,\n validRange,\n} from 'semver';\n\nexport function fulfillsVersionRange({\n version,\n acceptableVersions,\n canBeLatest,\n}: {\n version: string;\n acceptableVersions: string;\n canBeLatest: boolean;\n}): boolean {\n if (version === 'latest') {\n return canBeLatest;\n }\n\n let cleanedUserVersion, isRange;\n\n if (valid(version)) {\n cleanedUserVersion = valid(version);\n isRange = false;\n } else if (validRange(version)) {\n cleanedUserVersion = validRange(version);\n isRange = true;\n }\n\n return (\n // If the given version is a bogus format, this will still be undefined and we'll automatically reject it\n !!cleanedUserVersion &&\n (isRange\n ? subset(cleanedUserVersion, acceptableVersions)\n : satisfies(cleanedUserVersion, acceptableVersions))\n );\n}\n\n/**\n * Creates a version bucket function for analytics.\n * Converts versions like \"1.2.3\" to \"1.x\" for grouping in analytics.\n *\n * @param minMajorVersion - Optional minimum major version threshold.\n * Versions below this will be bucketed as \"<{min}.0.0\"\n *\n * @example\n * const getVersionBucket = createVersionBucket(); // no minimum\n * getVersionBucket(\"1.2.3\") // \"1.x\"\n *\n * const getVersionBucket = createVersionBucket(11);\n * getVersionBucket(\"15.3.0\") // \"15.x\"\n * getVersionBucket(\"10.0.0\") // \"<11.0.0\"\n */\nexport function createVersionBucket(minMajorVersion?: number) {\n return (version: string | undefined): string => {\n if (!version) {\n return 'none';\n }\n\n try {\n const minVer = minVersion(version);\n if (!minVer) {\n return 'invalid';\n }\n const majorVersion = major(minVer);\n if (minMajorVersion !== undefined && majorVersion < minMajorVersion) {\n return `<${minMajorVersion}.0.0`;\n }\n return `${majorVersion}.x`;\n } catch {\n return 'unknown';\n }\n };\n}\n"]}
1
+ {"version":3,"file":"semver.js","sourceRoot":"","sources":["../../../src/utils/semver.ts"],"names":[],"mappings":";;AA8BA,oDAkCC;AAiBD,kDAwBC;AAzGD,mCAOgB;AAEhB;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,OAAe;IACzC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IACzB,OAAO,CACL,CAAC,KAAK,EAAE;QACR,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC;QACvB,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;QACxB,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;QACpB,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;QACtB,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;QACrB,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;QACpB,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC;QAC1B,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;QACjB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,sBAAsB;KACvC,CAAC;AACJ,CAAC;AAED,SAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,kBAAkB,EAClB,WAAW,GAKZ;IACC,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,kBAAkB,EAAE,OAAO,CAAC;IAEhC,IAAI,IAAA,cAAK,EAAC,OAAO,CAAC,EAAE,CAAC;QACnB,kBAAkB,GAAG,IAAA,cAAK,EAAC,OAAO,CAAC,CAAC;QACpC,OAAO,GAAG,KAAK,CAAC;IAClB,CAAC;SAAM,IAAI,IAAA,mBAAU,EAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,kBAAkB,GAAG,IAAA,mBAAU,EAAC,OAAO,CAAC,CAAC;QACzC,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IAED,OAAO;IACL,yGAAyG;IACzG,CAAC,CAAC,kBAAkB;QACpB,CAAC,OAAO;YACN,CAAC,CAAC,IAAA,eAAM,EAAC,kBAAkB,EAAE,kBAAkB,CAAC;YAChD,CAAC,CAAC,IAAA,kBAAS,EAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CACvD,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAgB,mBAAmB,CAAC,eAAwB;IAC1D,OAAO,CAAC,OAA2B,EAAU,EAAE;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,OAAO,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,YAAY,GAAG,IAAA,cAAK,EAAC,MAAM,CAAC,CAAC;YACnC,IAAI,eAAe,KAAK,SAAS,IAAI,YAAY,GAAG,eAAe,EAAE,CAAC;gBACpE,OAAO,IAAI,eAAe,MAAM,CAAC;YACnC,CAAC;YACD,OAAO,GAAG,YAAY,IAAI,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import {\n major,\n minVersion,\n satisfies,\n subset,\n valid,\n validRange,\n} from 'semver';\n\n/**\n * Version strings from package.json that are not semver ranges.\n * URLs, git refs, dist-tags, local paths, workspace protocol, npm aliases, etc.\n * These should be rejected early — we can't determine a clear version from them.\n */\nfunction isNonSemverVersion(version: string): boolean {\n const v = version.trim();\n return (\n v === '' ||\n v.startsWith('http://') ||\n v.startsWith('https://') ||\n v.startsWith('git+') ||\n v.startsWith('git://') ||\n v.startsWith('file:') ||\n v.startsWith('npm:') ||\n v.startsWith('workspace:') ||\n v.startsWith('/') ||\n v.includes('/') // user/repo shorthand\n );\n}\n\nexport function fulfillsVersionRange({\n version,\n acceptableVersions,\n canBeLatest,\n}: {\n version: string;\n acceptableVersions: string;\n canBeLatest: boolean;\n}): boolean {\n if (version === 'latest') {\n return canBeLatest;\n }\n\n if (isNonSemverVersion(version)) {\n return false;\n }\n\n let cleanedUserVersion, isRange;\n\n if (valid(version)) {\n cleanedUserVersion = valid(version);\n isRange = false;\n } else if (validRange(version)) {\n cleanedUserVersion = validRange(version);\n isRange = true;\n }\n\n return (\n // If the given version is a bogus format, this will still be undefined and we'll automatically reject it\n !!cleanedUserVersion &&\n (isRange\n ? subset(cleanedUserVersion, acceptableVersions)\n : satisfies(cleanedUserVersion, acceptableVersions))\n );\n}\n\n/**\n * Creates a version bucket function for analytics.\n * Converts versions like \"1.2.3\" to \"1.x\" for grouping in analytics.\n *\n * @param minMajorVersion - Optional minimum major version threshold.\n * Versions below this will be bucketed as \"<{min}.0.0\"\n *\n * @example\n * const getVersionBucket = createVersionBucket(); // no minimum\n * getVersionBucket(\"1.2.3\") // \"1.x\"\n *\n * const getVersionBucket = createVersionBucket(11);\n * getVersionBucket(\"15.3.0\") // \"15.x\"\n * getVersionBucket(\"10.0.0\") // \"<11.0.0\"\n */\nexport function createVersionBucket(minMajorVersion?: number) {\n return (version: string | undefined): string => {\n if (!version) {\n return 'none';\n }\n\n if (isNonSemverVersion(version)) {\n return 'unknown';\n }\n\n try {\n const minVer = minVersion(version);\n if (!minVer) {\n return 'invalid';\n }\n const majorVersion = major(minVer);\n if (minMajorVersion !== undefined && majorVersion < minMajorVersion) {\n return `<${minMajorVersion}.0.0`;\n }\n return `${majorVersion}.x`;\n } catch {\n return 'unknown';\n }\n };\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@posthog/wizard",
3
- "version": "2.1.0",
3
+ "version": "2.3.0",
4
4
  "homepage": "https://github.com/PostHog/wizard",
5
5
  "repository": "https://github.com/PostHog/wizard",
6
6
  "description": "The PostHog wizard helps you to configure your project",
@@ -32,7 +32,7 @@
32
32
  "definition": "dist/index.d.ts"
33
33
  },
34
34
  "dependencies": {
35
- "@anthropic-ai/claude-agent-sdk": "0.2.7",
35
+ "@anthropic-ai/claude-agent-sdk": "0.2.73",
36
36
  "@inkjs/ui": "^2.0.0",
37
37
  "@langchain/core": "^0.3.40",
38
38
  "axios": "1.7.4",
@@ -1,10 +0,0 @@
1
- /**
2
- * OutageScreen — Shown when Claude/Anthropic services are degraded.
3
- * Reads session.serviceStatus and provides a ConfirmationInput to continue or exit.
4
- */
5
- import type { WizardStore } from '../store.js';
6
- interface OutageScreenProps {
7
- store: WizardStore;
8
- }
9
- export declare const OutageScreen: ({ store }: OutageScreenProps) => import("react/jsx-runtime").JSX.Element | null;
10
- export {};
@@ -1,17 +0,0 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- /**
3
- * OutageScreen — Shown when Claude/Anthropic services are degraded.
4
- * Reads session.serviceStatus and provides a ConfirmationInput to continue or exit.
5
- */
6
- import { Box, Text } from 'ink';
7
- import { useSyncExternalStore } from 'react';
8
- import { ConfirmationInput } from '../primitives/index.js';
9
- export const OutageScreen = ({ store }) => {
10
- useSyncExternalStore((cb) => store.subscribe(cb), () => store.getSnapshot());
11
- const serviceStatus = store.session.serviceStatus;
12
- if (!serviceStatus) {
13
- return null;
14
- }
15
- return (_jsxs(Box, { flexDirection: "column", flexGrow: 1, children: [_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Text, { color: "yellow", bold: true, children: ['\u26A0', " Claude/Anthropic services are experiencing issues."] }), _jsx(Text, { children: " " }), _jsxs(Text, { children: [_jsx(Text, { color: "yellow", children: "Status:" }), " ", serviceStatus.description] }), _jsxs(Text, { children: [_jsx(Text, { color: "yellow", children: "Status page:" }), ' ', _jsx(Text, { color: "cyan", children: serviceStatus.statusPageUrl })] }), _jsx(Text, { children: " " }), _jsx(Text, { dimColor: true, children: "The wizard may not work reliably while services are affected." })] }), _jsx(ConfirmationInput, { message: "Continue anyway?", onConfirm: () => store.popOverlay(), onCancel: () => process.exit(0) })] }));
16
- };
17
- //# sourceMappingURL=OutageScreen.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OutageScreen.js","sourceRoot":"","sources":["../../../../../src/ui/tui/screens/OutageScreen.tsx"],"names":[],"mappings":";AAAA;;;GAGG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAM3D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAE,KAAK,EAAqB,EAAE,EAAE;IAC3D,oBAAoB,CAClB,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,EAC3B,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAC1B,CAAC;IAEF,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;IAElD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aACrC,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACzC,MAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,IAAI,mBACtB,QAAQ,2DACJ,EACP,KAAC,IAAI,oBAAS,EACd,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,wBAAe,OAAE,aAAa,CAAC,WAAW,IACzD,EACP,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,6BAAoB,EAAC,GAAG,EAC5C,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,aAAa,CAAC,aAAa,GAAQ,IAClD,EACP,KAAC,IAAI,oBAAS,EACd,KAAC,IAAI,IAAC,QAAQ,oFAEP,IACH,EAEN,KAAC,iBAAiB,IAChB,OAAO,EAAC,kBAAkB,EAC1B,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EACnC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAC/B,IACE,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/**\n * OutageScreen — Shown when Claude/Anthropic services are degraded.\n * Reads session.serviceStatus and provides a ConfirmationInput to continue or exit.\n */\n\nimport { Box, Text } from 'ink';\nimport { useSyncExternalStore } from 'react';\nimport type { WizardStore } from '../store.js';\nimport { ConfirmationInput } from '../primitives/index.js';\n\ninterface OutageScreenProps {\n store: WizardStore;\n}\n\nexport const OutageScreen = ({ store }: OutageScreenProps) => {\n useSyncExternalStore(\n (cb) => store.subscribe(cb),\n () => store.getSnapshot(),\n );\n\n const serviceStatus = store.session.serviceStatus;\n\n if (!serviceStatus) {\n return null;\n }\n\n return (\n <Box flexDirection=\"column\" flexGrow={1}>\n <Box flexDirection=\"column\" marginBottom={1}>\n <Text color=\"yellow\" bold>\n {'\\u26A0'} Claude/Anthropic services are experiencing issues.\n </Text>\n <Text> </Text>\n <Text>\n <Text color=\"yellow\">Status:</Text> {serviceStatus.description}\n </Text>\n <Text>\n <Text color=\"yellow\">Status page:</Text>{' '}\n <Text color=\"cyan\">{serviceStatus.statusPageUrl}</Text>\n </Text>\n <Text> </Text>\n <Text dimColor>\n The wizard may not work reliably while services are affected.\n </Text>\n </Box>\n\n <ConfirmationInput\n message=\"Continue anyway?\"\n onConfirm={() => store.popOverlay()}\n onCancel={() => process.exit(0)}\n />\n </Box>\n );\n};\n"]}