@posthog/wizard 2.0.1 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.js +53 -8
- package/dist/bin.js.map +1 -1
- package/dist/src/__tests__/cli.test.js +50 -3
- package/dist/src/__tests__/cli.test.js.map +1 -1
- package/dist/src/__tests__/package-json.test.d.ts +1 -0
- package/dist/src/__tests__/package-json.test.js +173 -0
- package/dist/src/__tests__/package-json.test.js.map +1 -0
- package/dist/src/frameworks/angular/angular-wizard-agent.js +1 -6
- package/dist/src/frameworks/angular/angular-wizard-agent.js.map +1 -1
- package/dist/src/frameworks/astro/astro-wizard-agent.js +1 -4
- package/dist/src/frameworks/astro/astro-wizard-agent.js.map +1 -1
- package/dist/src/frameworks/nextjs/nextjs-wizard-agent.js +1 -4
- package/dist/src/frameworks/nextjs/nextjs-wizard-agent.js.map +1 -1
- package/dist/src/frameworks/nuxt/nuxt-wizard-agent.js +1 -4
- package/dist/src/frameworks/nuxt/nuxt-wizard-agent.js.map +1 -1
- package/dist/src/frameworks/react-native/react-native-wizard-agent.js +1 -6
- package/dist/src/frameworks/react-native/react-native-wizard-agent.js.map +1 -1
- package/dist/src/frameworks/react-router/react-router-wizard-agent.js +1 -6
- package/dist/src/frameworks/react-router/react-router-wizard-agent.js.map +1 -1
- package/dist/src/frameworks/tanstack-router/tanstack-router-wizard-agent.js +1 -6
- package/dist/src/frameworks/tanstack-router/tanstack-router-wizard-agent.js.map +1 -1
- package/dist/src/frameworks/tanstack-start/tanstack-start-wizard-agent.js +1 -6
- package/dist/src/frameworks/tanstack-start/tanstack-start-wizard-agent.js.map +1 -1
- package/dist/src/frameworks/vue/vue-wizard-agent.js +1 -4
- package/dist/src/frameworks/vue/vue-wizard-agent.js.map +1 -1
- package/dist/src/lib/__tests__/agent-interface.test.js +1 -0
- package/dist/src/lib/__tests__/agent-interface.test.js.map +1 -1
- package/dist/src/lib/__tests__/yara-hooks.test.d.ts +1 -0
- package/dist/src/lib/__tests__/yara-hooks.test.js +432 -0
- package/dist/src/lib/__tests__/yara-hooks.test.js.map +1 -0
- package/dist/src/lib/__tests__/yara-scanner.test.d.ts +1 -0
- package/dist/src/lib/__tests__/yara-scanner.test.js +613 -0
- package/dist/src/lib/__tests__/yara-scanner.test.js.map +1 -0
- package/dist/src/lib/agent-interface.d.ts +4 -2
- package/dist/src/lib/agent-interface.js +40 -26
- package/dist/src/lib/agent-interface.js.map +1 -1
- package/dist/src/lib/agent-runner.js +49 -15
- package/dist/src/lib/agent-runner.js.map +1 -1
- package/dist/src/lib/commandments.js +1 -0
- package/dist/src/lib/commandments.js.map +1 -1
- package/dist/src/lib/constants.d.ts +4 -3
- package/dist/src/lib/constants.js +3 -2
- package/dist/src/lib/constants.js.map +1 -1
- package/dist/src/lib/middleware/benchmark.js +2 -6
- package/dist/src/lib/middleware/benchmark.js.map +1 -1
- package/dist/src/lib/middleware/benchmarks/json-writer.js +1 -2
- package/dist/src/lib/middleware/benchmarks/json-writer.js.map +1 -1
- package/dist/src/lib/middleware/benchmarks/summary.js +6 -10
- package/dist/src/lib/middleware/benchmarks/summary.js.map +1 -1
- package/dist/src/lib/skill-install.d.ts +10 -0
- package/dist/src/lib/skill-install.js +23 -0
- package/dist/src/lib/skill-install.js.map +1 -0
- 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/wizard-session.d.ts +13 -0
- package/dist/src/lib/wizard-session.js +3 -0
- package/dist/src/lib/wizard-session.js.map +1 -1
- package/dist/src/lib/yara-hooks.d.ts +44 -0
- package/dist/src/lib/yara-hooks.js +377 -0
- package/dist/src/lib/yara-hooks.js.map +1 -0
- package/dist/src/lib/yara-scanner.d.ts +61 -0
- package/dist/src/lib/yara-scanner.js +328 -0
- package/dist/src/lib/yara-scanner.js.map +1 -0
- package/dist/src/run.d.ts +3 -0
- package/dist/src/run.js +11 -2
- package/dist/src/run.js.map +1 -1
- package/dist/src/steps/add-mcp-server-to-clients/index.d.ts +2 -1
- package/dist/src/steps/add-mcp-server-to-clients/index.js +1 -1
- package/dist/src/steps/add-mcp-server-to-clients/index.js.map +1 -1
- package/dist/src/steps/add-or-update-environment-variables.js +9 -10
- package/dist/src/steps/add-or-update-environment-variables.js.map +1 -1
- package/dist/src/steps/upload-environment-variables/providers/vercel.js +4 -8
- package/dist/src/steps/upload-environment-variables/providers/vercel.js.map +1 -1
- package/dist/src/ui/logging-ui.d.ts +5 -0
- package/dist/src/ui/logging-ui.js +3 -0
- package/dist/src/ui/logging-ui.js.map +1 -1
- package/dist/src/ui/tui/ink-ui.d.ts +5 -0
- package/dist/src/ui/tui/ink-ui.js +3 -0
- package/dist/src/ui/tui/ink-ui.js.map +1 -1
- package/dist/src/ui/tui/primitives/Divider.d.ts +6 -0
- package/dist/src/ui/tui/primitives/Divider.js +15 -0
- package/dist/src/ui/tui/primitives/Divider.js.map +1 -0
- package/dist/src/ui/tui/primitives/index.d.ts +1 -0
- package/dist/src/ui/tui/primitives/index.js +1 -0
- package/dist/src/ui/tui/primitives/index.js.map +1 -1
- package/dist/src/ui/tui/router.d.ts +2 -1
- package/dist/src/ui/tui/router.js +1 -0
- package/dist/src/ui/tui/router.js.map +1 -1
- package/dist/src/ui/tui/screen-registry.js +2 -0
- package/dist/src/ui/tui/screen-registry.js.map +1 -1
- package/dist/src/ui/tui/screens/IntroScreen.js +18 -2
- package/dist/src/ui/tui/screens/IntroScreen.js.map +1 -1
- package/dist/src/ui/tui/screens/PortConflictScreen.d.ts +11 -0
- package/dist/src/ui/tui/screens/PortConflictScreen.js +30 -0
- package/dist/src/ui/tui/screens/PortConflictScreen.js.map +1 -0
- package/dist/src/ui/tui/store.d.ts +18 -0
- package/dist/src/ui/tui/store.js +25 -0
- package/dist/src/ui/tui/store.js.map +1 -1
- package/dist/src/ui/wizard-ui.d.ts +6 -0
- package/dist/src/ui/wizard-ui.js.map +1 -1
- package/dist/src/utils/debug.js +1 -5
- package/dist/src/utils/debug.js.map +1 -1
- package/dist/src/utils/logging.js +7 -10
- package/dist/src/utils/logging.js.map +1 -1
- package/dist/src/utils/oauth.js +44 -4
- package/dist/src/utils/oauth.js.map +1 -1
- package/dist/src/utils/package-json.d.ts +5 -0
- package/dist/src/utils/package-json.js +20 -0
- package/dist/src/utils/package-json.js.map +1 -1
- package/dist/src/utils/rules/universal.md +12 -0
- package/dist/src/utils/setup-utils.js +12 -14
- package/dist/src/utils/setup-utils.js.map +1 -1
- package/dist/src/utils/types.d.ts +9 -0
- package/dist/src/utils/types.js.map +1 -1
- package/package.json +1 -2
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const os_1 = require("os");
|
|
9
|
+
const package_json_1 = require("../utils/package-json");
|
|
10
|
+
describe('getPackageVersion', () => {
|
|
11
|
+
it('returns version from dependencies', () => {
|
|
12
|
+
const pkg = { dependencies: { next: '^15.1.0' } };
|
|
13
|
+
expect((0, package_json_1.getPackageVersion)('next', pkg)).toBe('^15.1.0');
|
|
14
|
+
});
|
|
15
|
+
it('returns version from devDependencies', () => {
|
|
16
|
+
const pkg = { devDependencies: { jest: '~29.5.0' } };
|
|
17
|
+
expect((0, package_json_1.getPackageVersion)('jest', pkg)).toBe('~29.5.0');
|
|
18
|
+
});
|
|
19
|
+
it('prefers dependencies over devDependencies', () => {
|
|
20
|
+
const pkg = {
|
|
21
|
+
dependencies: { next: '15.5.9' },
|
|
22
|
+
devDependencies: { next: '^15.0.0' },
|
|
23
|
+
};
|
|
24
|
+
expect((0, package_json_1.getPackageVersion)('next', pkg)).toBe('15.5.9');
|
|
25
|
+
});
|
|
26
|
+
it('returns undefined for missing package', () => {
|
|
27
|
+
const pkg = { dependencies: { react: '19.0.0' } };
|
|
28
|
+
expect((0, package_json_1.getPackageVersion)('next', pkg)).toBeUndefined();
|
|
29
|
+
});
|
|
30
|
+
it('returns undefined for empty package.json', () => {
|
|
31
|
+
const pkg = {};
|
|
32
|
+
expect((0, package_json_1.getPackageVersion)('next', pkg)).toBeUndefined();
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
describe('getInstalledPackageVersion', () => {
|
|
36
|
+
let tmpDir;
|
|
37
|
+
beforeEach(() => {
|
|
38
|
+
tmpDir = (0, fs_1.mkdtempSync)(path_1.default.join((0, os_1.tmpdir)(), 'wizard-test-'));
|
|
39
|
+
});
|
|
40
|
+
afterEach(() => {
|
|
41
|
+
(0, fs_1.rmSync)(tmpDir, { recursive: true, force: true });
|
|
42
|
+
});
|
|
43
|
+
function installFakePackage(name, version) {
|
|
44
|
+
const pkgDir = path_1.default.join(tmpDir, 'node_modules', name);
|
|
45
|
+
(0, fs_1.mkdirSync)(pkgDir, { recursive: true });
|
|
46
|
+
(0, fs_1.writeFileSync)(path_1.default.join(pkgDir, 'package.json'), JSON.stringify({ name, version }));
|
|
47
|
+
}
|
|
48
|
+
it('reads the actual installed version, not the range', () => {
|
|
49
|
+
// This is the bug that caused Andy's issue: package.json says "^15.1.0"
|
|
50
|
+
// but the installed version in node_modules is 15.5.9
|
|
51
|
+
installFakePackage('next', '15.5.9');
|
|
52
|
+
expect((0, package_json_1.getInstalledPackageVersion)('next', tmpDir)).toBe('15.5.9');
|
|
53
|
+
});
|
|
54
|
+
it('reads exact pinned versions', () => {
|
|
55
|
+
installFakePackage('next', '15.3.0');
|
|
56
|
+
expect((0, package_json_1.getInstalledPackageVersion)('next', tmpDir)).toBe('15.3.0');
|
|
57
|
+
});
|
|
58
|
+
it('reads prerelease versions', () => {
|
|
59
|
+
installFakePackage('next', '16.0.0-canary.42');
|
|
60
|
+
expect((0, package_json_1.getInstalledPackageVersion)('next', tmpDir)).toBe('16.0.0-canary.42');
|
|
61
|
+
});
|
|
62
|
+
it('reads scoped package versions', () => {
|
|
63
|
+
installFakePackage('@angular/core', '19.2.0');
|
|
64
|
+
expect((0, package_json_1.getInstalledPackageVersion)('@angular/core', tmpDir)).toBe('19.2.0');
|
|
65
|
+
});
|
|
66
|
+
it('returns undefined when package is not installed', () => {
|
|
67
|
+
expect((0, package_json_1.getInstalledPackageVersion)('next', tmpDir)).toBeUndefined();
|
|
68
|
+
});
|
|
69
|
+
it('returns undefined when node_modules does not exist', () => {
|
|
70
|
+
const noModulesDir = path_1.default.join(tmpDir, 'empty-project');
|
|
71
|
+
(0, fs_1.mkdirSync)(noModulesDir);
|
|
72
|
+
expect((0, package_json_1.getInstalledPackageVersion)('next', noModulesDir)).toBeUndefined();
|
|
73
|
+
});
|
|
74
|
+
it('returns undefined for malformed package.json in node_modules', () => {
|
|
75
|
+
const pkgDir = path_1.default.join(tmpDir, 'node_modules', 'broken');
|
|
76
|
+
(0, fs_1.mkdirSync)(pkgDir, { recursive: true });
|
|
77
|
+
(0, fs_1.writeFileSync)(path_1.default.join(pkgDir, 'package.json'), 'not json');
|
|
78
|
+
expect((0, package_json_1.getInstalledPackageVersion)('broken', tmpDir)).toBeUndefined();
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
describe('getInstalledPackageVersion vs getPackageVersion', () => {
|
|
82
|
+
let tmpDir;
|
|
83
|
+
beforeEach(() => {
|
|
84
|
+
tmpDir = (0, fs_1.mkdtempSync)(path_1.default.join((0, os_1.tmpdir)(), 'wizard-test-'));
|
|
85
|
+
});
|
|
86
|
+
afterEach(() => {
|
|
87
|
+
(0, fs_1.rmSync)(tmpDir, { recursive: true, force: true });
|
|
88
|
+
});
|
|
89
|
+
function installFakePackage(name, version) {
|
|
90
|
+
const pkgDir = path_1.default.join(tmpDir, 'node_modules', name);
|
|
91
|
+
(0, fs_1.mkdirSync)(pkgDir, { recursive: true });
|
|
92
|
+
(0, fs_1.writeFileSync)(path_1.default.join(pkgDir, 'package.json'), JSON.stringify({ name, version }));
|
|
93
|
+
}
|
|
94
|
+
const rangeSpecifiers = [
|
|
95
|
+
// Caret and tilde — most common in real projects
|
|
96
|
+
{ range: '^15.1.0', installed: '15.5.9', label: 'caret (^)' },
|
|
97
|
+
{ range: '~15.1.0', installed: '15.1.7', label: 'tilde (~)' },
|
|
98
|
+
// Comparison operators
|
|
99
|
+
{ range: '>=15.0.0', installed: '15.5.9', label: 'gte (>=)' },
|
|
100
|
+
{ range: '>15.0.0', installed: '15.5.9', label: 'gt (>)' },
|
|
101
|
+
{ range: '<=16.0.0', installed: '15.5.9', label: 'lte (<=)' },
|
|
102
|
+
{ range: '<16.0.0', installed: '15.5.9', label: 'lt (<)' },
|
|
103
|
+
// Compound range
|
|
104
|
+
{
|
|
105
|
+
range: '>=15.0.0 <16.0.0',
|
|
106
|
+
installed: '15.5.9',
|
|
107
|
+
label: 'compound (>=a <b)',
|
|
108
|
+
},
|
|
109
|
+
// Hyphen range
|
|
110
|
+
{
|
|
111
|
+
range: '15.0.0 - 16.0.0',
|
|
112
|
+
installed: '15.5.9',
|
|
113
|
+
label: 'hyphen (a - b)',
|
|
114
|
+
},
|
|
115
|
+
// OR / union
|
|
116
|
+
{
|
|
117
|
+
range: '^14.0.0 || ^15.0.0',
|
|
118
|
+
installed: '15.5.9',
|
|
119
|
+
label: 'OR (||)',
|
|
120
|
+
},
|
|
121
|
+
// Wildcards and x-ranges
|
|
122
|
+
{ range: '*', installed: '15.5.9', label: 'wildcard (*)' },
|
|
123
|
+
{ range: '15.x', installed: '15.5.9', label: 'x-range (15.x)' },
|
|
124
|
+
{ range: '15.1.x', installed: '15.1.7', label: 'x-range patch (15.1.x)' },
|
|
125
|
+
{
|
|
126
|
+
range: '15.*.*',
|
|
127
|
+
installed: '15.5.9',
|
|
128
|
+
label: 'wildcard minor+patch (15.*.*)',
|
|
129
|
+
},
|
|
130
|
+
// Exact / pinned
|
|
131
|
+
{ range: '15.5.9', installed: '15.5.9', label: 'pinned exact' },
|
|
132
|
+
// pnpm workspace protocol
|
|
133
|
+
{ range: 'workspace:^', installed: '15.5.9', label: 'workspace:^' },
|
|
134
|
+
{ range: 'workspace:*', installed: '15.5.9', label: 'workspace:*' },
|
|
135
|
+
{ range: 'workspace:~', installed: '15.5.9', label: 'workspace:~' },
|
|
136
|
+
// Dist-tags (npm resolves these, node_modules always has real version)
|
|
137
|
+
{ range: 'latest', installed: '15.5.9', label: 'dist-tag (latest)' },
|
|
138
|
+
{ range: 'next', installed: '16.0.0-canary.42', label: 'dist-tag (next)' },
|
|
139
|
+
];
|
|
140
|
+
it.each(rangeSpecifiers)('getPackageVersion returns the range for $label, getInstalledPackageVersion returns the real version', ({ range, installed }) => {
|
|
141
|
+
const pkg = { dependencies: { next: range } };
|
|
142
|
+
installFakePackage('next', installed);
|
|
143
|
+
// getPackageVersion returns the raw range from package.json
|
|
144
|
+
expect((0, package_json_1.getPackageVersion)('next', pkg)).toBe(range);
|
|
145
|
+
// getInstalledPackageVersion returns the actual resolved version
|
|
146
|
+
expect((0, package_json_1.getInstalledPackageVersion)('next', tmpDir)).toBe(installed);
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
describe('hasPackageInstalled', () => {
|
|
150
|
+
it('returns true when package exists in dependencies', () => {
|
|
151
|
+
const pkg = { dependencies: { next: '^15.1.0' } };
|
|
152
|
+
expect((0, package_json_1.hasPackageInstalled)('next', pkg)).toBe(true);
|
|
153
|
+
});
|
|
154
|
+
it('returns false when package is missing', () => {
|
|
155
|
+
const pkg = { dependencies: { react: '19.0.0' } };
|
|
156
|
+
expect((0, package_json_1.hasPackageInstalled)('next', pkg)).toBe(false);
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
describe('findInstalledPackageFromList', () => {
|
|
160
|
+
it('returns first matching package with its version', () => {
|
|
161
|
+
const pkg = {
|
|
162
|
+
dependencies: { react: '19.0.0', next: '^15.1.0' },
|
|
163
|
+
};
|
|
164
|
+
const result = (0, package_json_1.findInstalledPackageFromList)(['vue', 'next', 'react'], pkg);
|
|
165
|
+
expect(result).toEqual({ name: 'next', version: '^15.1.0' });
|
|
166
|
+
});
|
|
167
|
+
it('returns undefined when none match', () => {
|
|
168
|
+
const pkg = { dependencies: { react: '19.0.0' } };
|
|
169
|
+
const result = (0, package_json_1.findInstalledPackageFromList)(['vue', 'next'], pkg);
|
|
170
|
+
expect(result).toBeUndefined();
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
//# sourceMappingURL=package-json.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-json.test.js","sourceRoot":"","sources":["../../../src/__tests__/package-json.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { mkdtempSync, mkdirSync, writeFileSync, rmSync } from 'fs';\nimport path from 'path';\nimport { tmpdir } from 'os';\nimport {\n getPackageVersion,\n getInstalledPackageVersion,\n hasPackageInstalled,\n findInstalledPackageFromList,\n type PackageDotJson,\n} from '../utils/package-json';\n\ndescribe('getPackageVersion', () => {\n it('returns version from dependencies', () => {\n const pkg: PackageDotJson = { dependencies: { next: '^15.1.0' } };\n expect(getPackageVersion('next', pkg)).toBe('^15.1.0');\n });\n\n it('returns version from devDependencies', () => {\n const pkg: PackageDotJson = { devDependencies: { jest: '~29.5.0' } };\n expect(getPackageVersion('jest', pkg)).toBe('~29.5.0');\n });\n\n it('prefers dependencies over devDependencies', () => {\n const pkg: PackageDotJson = {\n dependencies: { next: '15.5.9' },\n devDependencies: { next: '^15.0.0' },\n };\n expect(getPackageVersion('next', pkg)).toBe('15.5.9');\n });\n\n it('returns undefined for missing package', () => {\n const pkg: PackageDotJson = { dependencies: { react: '19.0.0' } };\n expect(getPackageVersion('next', pkg)).toBeUndefined();\n });\n\n it('returns undefined for empty package.json', () => {\n const pkg: PackageDotJson = {};\n expect(getPackageVersion('next', pkg)).toBeUndefined();\n });\n});\n\ndescribe('getInstalledPackageVersion', () => {\n let tmpDir: string;\n\n beforeEach(() => {\n tmpDir = mkdtempSync(path.join(tmpdir(), 'wizard-test-'));\n });\n\n afterEach(() => {\n rmSync(tmpDir, { recursive: true, force: true });\n });\n\n function installFakePackage(name: string, version: string) {\n const pkgDir = path.join(tmpDir, 'node_modules', name);\n mkdirSync(pkgDir, { recursive: true });\n writeFileSync(\n path.join(pkgDir, 'package.json'),\n JSON.stringify({ name, version }),\n );\n }\n\n it('reads the actual installed version, not the range', () => {\n // This is the bug that caused Andy's issue: package.json says \"^15.1.0\"\n // but the installed version in node_modules is 15.5.9\n installFakePackage('next', '15.5.9');\n expect(getInstalledPackageVersion('next', tmpDir)).toBe('15.5.9');\n });\n\n it('reads exact pinned versions', () => {\n installFakePackage('next', '15.3.0');\n expect(getInstalledPackageVersion('next', tmpDir)).toBe('15.3.0');\n });\n\n it('reads prerelease versions', () => {\n installFakePackage('next', '16.0.0-canary.42');\n expect(getInstalledPackageVersion('next', tmpDir)).toBe('16.0.0-canary.42');\n });\n\n it('reads scoped package versions', () => {\n installFakePackage('@angular/core', '19.2.0');\n expect(getInstalledPackageVersion('@angular/core', tmpDir)).toBe('19.2.0');\n });\n\n it('returns undefined when package is not installed', () => {\n expect(getInstalledPackageVersion('next', tmpDir)).toBeUndefined();\n });\n\n it('returns undefined when node_modules does not exist', () => {\n const noModulesDir = path.join(tmpDir, 'empty-project');\n mkdirSync(noModulesDir);\n expect(getInstalledPackageVersion('next', noModulesDir)).toBeUndefined();\n });\n\n it('returns undefined for malformed package.json in node_modules', () => {\n const pkgDir = path.join(tmpDir, 'node_modules', 'broken');\n mkdirSync(pkgDir, { recursive: true });\n writeFileSync(path.join(pkgDir, 'package.json'), 'not json');\n expect(getInstalledPackageVersion('broken', tmpDir)).toBeUndefined();\n });\n});\n\ndescribe('getInstalledPackageVersion vs getPackageVersion', () => {\n let tmpDir: string;\n\n beforeEach(() => {\n tmpDir = mkdtempSync(path.join(tmpdir(), 'wizard-test-'));\n });\n\n afterEach(() => {\n rmSync(tmpDir, { recursive: true, force: true });\n });\n\n function installFakePackage(name: string, version: string) {\n const pkgDir = path.join(tmpDir, 'node_modules', name);\n mkdirSync(pkgDir, { recursive: true });\n writeFileSync(\n path.join(pkgDir, 'package.json'),\n JSON.stringify({ name, version }),\n );\n }\n\n const rangeSpecifiers = [\n // Caret and tilde — most common in real projects\n { range: '^15.1.0', installed: '15.5.9', label: 'caret (^)' },\n { range: '~15.1.0', installed: '15.1.7', label: 'tilde (~)' },\n\n // Comparison operators\n { range: '>=15.0.0', installed: '15.5.9', label: 'gte (>=)' },\n { range: '>15.0.0', installed: '15.5.9', label: 'gt (>)' },\n { range: '<=16.0.0', installed: '15.5.9', label: 'lte (<=)' },\n { range: '<16.0.0', installed: '15.5.9', label: 'lt (<)' },\n\n // Compound range\n {\n range: '>=15.0.0 <16.0.0',\n installed: '15.5.9',\n label: 'compound (>=a <b)',\n },\n\n // Hyphen range\n {\n range: '15.0.0 - 16.0.0',\n installed: '15.5.9',\n label: 'hyphen (a - b)',\n },\n\n // OR / union\n {\n range: '^14.0.0 || ^15.0.0',\n installed: '15.5.9',\n label: 'OR (||)',\n },\n\n // Wildcards and x-ranges\n { range: '*', installed: '15.5.9', label: 'wildcard (*)' },\n { range: '15.x', installed: '15.5.9', label: 'x-range (15.x)' },\n { range: '15.1.x', installed: '15.1.7', label: 'x-range patch (15.1.x)' },\n {\n range: '15.*.*',\n installed: '15.5.9',\n label: 'wildcard minor+patch (15.*.*)',\n },\n\n // Exact / pinned\n { range: '15.5.9', installed: '15.5.9', label: 'pinned exact' },\n\n // pnpm workspace protocol\n { range: 'workspace:^', installed: '15.5.9', label: 'workspace:^' },\n { range: 'workspace:*', installed: '15.5.9', label: 'workspace:*' },\n { range: 'workspace:~', installed: '15.5.9', label: 'workspace:~' },\n\n // Dist-tags (npm resolves these, node_modules always has real version)\n { range: 'latest', installed: '15.5.9', label: 'dist-tag (latest)' },\n { range: 'next', installed: '16.0.0-canary.42', label: 'dist-tag (next)' },\n ];\n\n it.each(rangeSpecifiers)(\n 'getPackageVersion returns the range for $label, getInstalledPackageVersion returns the real version',\n ({ range, installed }) => {\n const pkg: PackageDotJson = { dependencies: { next: range } };\n installFakePackage('next', installed);\n\n // getPackageVersion returns the raw range from package.json\n expect(getPackageVersion('next', pkg)).toBe(range);\n\n // getInstalledPackageVersion returns the actual resolved version\n expect(getInstalledPackageVersion('next', tmpDir)).toBe(installed);\n },\n );\n});\n\ndescribe('hasPackageInstalled', () => {\n it('returns true when package exists in dependencies', () => {\n const pkg: PackageDotJson = { dependencies: { next: '^15.1.0' } };\n expect(hasPackageInstalled('next', pkg)).toBe(true);\n });\n\n it('returns false when package is missing', () => {\n const pkg: PackageDotJson = { dependencies: { react: '19.0.0' } };\n expect(hasPackageInstalled('next', pkg)).toBe(false);\n });\n});\n\ndescribe('findInstalledPackageFromList', () => {\n it('returns first matching package with its version', () => {\n const pkg: PackageDotJson = {\n dependencies: { react: '19.0.0', next: '^15.1.0' },\n };\n const result = findInstalledPackageFromList(['vue', 'next', 'react'], pkg);\n expect(result).toEqual({ name: 'next', version: '^15.1.0' });\n });\n\n it('returns undefined when none match', () => {\n const pkg: PackageDotJson = { dependencies: { react: '19.0.0' } };\n const result = findInstalledPackageFromList(['vue', 'next'], pkg);\n expect(result).toBeUndefined();\n });\n});\n"]}
|
|
@@ -18,12 +18,7 @@ exports.ANGULAR_AGENT_CONFIG = {
|
|
|
18
18
|
getVersion: (packageJson) => (0, package_json_1.getPackageVersion)('@angular/core', packageJson),
|
|
19
19
|
getVersionBucket: utils_1.getAngularVersionBucket,
|
|
20
20
|
minimumVersion: '19.0.0',
|
|
21
|
-
getInstalledVersion:
|
|
22
|
-
const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
|
|
23
|
-
return packageJson
|
|
24
|
-
? (0, package_json_1.getPackageVersion)('@angular/core', packageJson)
|
|
25
|
-
: undefined;
|
|
26
|
-
},
|
|
21
|
+
getInstalledVersion: (options) => Promise.resolve((0, package_json_1.getInstalledPackageVersion)('@angular/core', options.installDir)),
|
|
27
22
|
detect: async (options) => {
|
|
28
23
|
const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
|
|
29
24
|
return packageJson
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-wizard-agent.js","sourceRoot":"","sources":["../../../../src/frameworks/angular/angular-wizard-agent.ts"],"names":[],"mappings":";;;AAGA,mFAAgF;AAChF,mDAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"angular-wizard-agent.js","sourceRoot":"","sources":["../../../../src/frameworks/angular/angular-wizard-agent.ts"],"names":[],"mappings":";;;AAGA,mFAAgF;AAChF,mDAAkD;AAClD,2DAKkC;AAClC,yDAA4D;AAC5D,mCAAkD;AAIrC,QAAA,oBAAoB,GAAoC;IACnE,QAAQ,EAAE;QACR,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,uBAAW,CAAC,OAAO;QAChC,OAAO,EAAE,4CAA4C;KACtD;IAED,SAAS,EAAE;QACT,WAAW,EAAE,eAAe;QAC5B,kBAAkB,EAAE,SAAS;QAC7B,UAAU,EAAE,CAAC,WAAoB,EAAE,EAAE,CACnC,IAAA,gCAAiB,EAAC,eAAe,EAAE,WAA6B,CAAC;QACnE,gBAAgB,EAAE,+BAAuB;QACzC,cAAc,EAAE,QAAQ;QACxB,mBAAmB,EAAE,CAAC,OAAsB,EAAE,EAAE,CAC9C,OAAO,CAAC,OAAO,CACb,IAAA,yCAA0B,EAAC,eAAe,EAAE,OAAO,CAAC,UAAU,CAAC,CAChE;QACH,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACxB,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAiB,EAAC,OAAO,CAAC,CAAC;YACrD,OAAO,WAAW;gBAChB,CAAC,CAAC,IAAA,kCAAmB,EAAC,eAAe,EAAE,WAAW,CAAC;gBACnD,CAAC,CAAC,KAAK,CAAC;QACZ,CAAC;QACD,oBAAoB,EAAE,qDAAyB;KAChD;IAED,WAAW,EAAE;QACX,eAAe,EAAE,KAAK;QACtB,UAAU,EAAE,CAAC,MAAc,EAAE,IAAY,EAAE,EAAE,CAAC,CAAC;YAC7C,kBAAkB,EAAE,MAAM;YAC1B,mBAAmB,EAAE,IAAI;SAC1B,CAAC;KACH;IAED,SAAS,EAAE;QACT,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;KACpB;IAED,OAAO,EAAE;QACP,oBAAoB,EAClB,2IAA2I;QAC7I,yBAAyB,EAAE,GAAG,EAAE;YAC9B,MAAM,WAAW,GAAG,SAAS,CAAC;YAE9B,OAAO;gBACL,sBAAsB,WAAW,mCAAmC,WAAW,qBAAqB;gBACpG,6FAA6F;gBAC7F,2FAA2F;aAC5F,CAAC;QACJ,CAAC;KACF;IAED,EAAE,EAAE;QACF,cAAc,EAAE,8BAA8B;QAC9C,wBAAwB,EAAE,CAAC;QAC3B,eAAe,EAAE,GAAG,EAAE,CAAC;YACrB,yCAAyC;YACzC,wCAAwC;YACxC,0CAA0C;SAC3C;QACD,iBAAiB,EAAE,GAAG,EAAE,CAAC;YACvB,wEAAwE;YACxE,qDAAqD;SACtD;KACF;CACF,CAAC","sourcesContent":["/* Angular wizard using posthog-agent with PostHog MCP */\nimport type { WizardOptions } from '../../utils/types';\nimport type { FrameworkConfig } from '../../lib/framework-config';\nimport { detectNodePackageManagers } from '../../lib/package-manager-detection';\nimport { Integration } from '../../lib/constants';\nimport {\n getPackageVersion,\n getInstalledPackageVersion,\n hasPackageInstalled,\n type PackageDotJson,\n} from '../../utils/package-json';\nimport { tryGetPackageJson } from '../../utils/setup-utils';\nimport { getAngularVersionBucket } from './utils';\n\ntype AngularContext = Record<string, unknown>;\n\nexport const ANGULAR_AGENT_CONFIG: FrameworkConfig<AngularContext> = {\n metadata: {\n name: 'Angular',\n integration: Integration.angular,\n docsUrl: 'https://posthog.com/docs/libraries/angular',\n },\n\n detection: {\n packageName: '@angular/core',\n packageDisplayName: 'Angular',\n getVersion: (packageJson: unknown) =>\n getPackageVersion('@angular/core', packageJson as PackageDotJson),\n getVersionBucket: getAngularVersionBucket,\n minimumVersion: '19.0.0',\n getInstalledVersion: (options: WizardOptions) =>\n Promise.resolve(\n getInstalledPackageVersion('@angular/core', options.installDir),\n ),\n detect: async (options) => {\n const packageJson = await tryGetPackageJson(options);\n return packageJson\n ? hasPackageInstalled('@angular/core', packageJson)\n : false;\n },\n detectPackageManager: detectNodePackageManagers,\n },\n\n environment: {\n uploadToHosting: false,\n getEnvVars: (apiKey: string, host: string) => ({\n NG_APP_POSTHOG_KEY: apiKey,\n NG_APP_POSTHOG_HOST: host,\n }),\n },\n\n analytics: {\n getTags: () => ({}),\n },\n\n prompts: {\n projectTypeDetection:\n 'This is an Angular project. Look for package.json, angular.json, and lockfiles (package-lock.json, yarn.lock, pnpm-lock.yaml) to confirm.',\n getAdditionalContextLines: () => {\n const frameworkId = 'angular';\n\n return [\n `Framework docs ID: ${frameworkId} (use posthog://docs/frameworks/${frameworkId} for documentation)`,\n 'Angular uses dependency injection for services. PostHog should be initialized as a service.',\n 'For standalone components, ensure PostHog is properly provided in the application config.',\n ];\n },\n },\n\n ui: {\n successMessage: 'PostHog integration complete',\n estimatedDurationMinutes: 8,\n getOutroChanges: () => [\n `Analyzed your Angular project structure`,\n `Created and configured PostHog service`,\n `Integrated PostHog into your application`,\n ],\n getOutroNextSteps: () => [\n 'Start your development server with `ng serve` to see PostHog in action',\n 'Visit your PostHog dashboard to see incoming events',\n ],\n },\n};\n"]}
|
|
@@ -24,10 +24,7 @@ exports.ASTRO_AGENT_CONFIG = {
|
|
|
24
24
|
getVersion: (packageJson) => (0, package_json_1.getPackageVersion)('astro', packageJson),
|
|
25
25
|
getVersionBucket: utils_1.getAstroVersionBucket,
|
|
26
26
|
minimumVersion: '4.0.0',
|
|
27
|
-
getInstalledVersion:
|
|
28
|
-
const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
|
|
29
|
-
return packageJson ? (0, package_json_1.getPackageVersion)('astro', packageJson) : undefined;
|
|
30
|
-
},
|
|
27
|
+
getInstalledVersion: (options) => Promise.resolve((0, package_json_1.getInstalledPackageVersion)('astro', options.installDir)),
|
|
31
28
|
detect: async (options) => {
|
|
32
29
|
const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
|
|
33
30
|
return packageJson ? (0, package_json_1.hasPackageInstalled)('astro', packageJson) : false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"astro-wizard-agent.js","sourceRoot":"","sources":["../../../../src/frameworks/astro/astro-wizard-agent.ts"],"names":[],"mappings":";;;AAGA,mFAAgF;AAChF,mDAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"astro-wizard-agent.js","sourceRoot":"","sources":["../../../../src/frameworks/astro/astro-wizard-agent.ts"],"names":[],"mappings":"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","sourcesContent":["/* Astro wizard using posthog-agent with PostHog MCP */\nimport type { WizardOptions } from '../../utils/types';\nimport type { FrameworkConfig } from '../../lib/framework-config';\nimport { detectNodePackageManagers } from '../../lib/package-manager-detection';\nimport { Integration } from '../../lib/constants';\nimport {\n getPackageVersion,\n getInstalledPackageVersion,\n hasPackageInstalled,\n type PackageDotJson,\n} from '../../utils/package-json';\nimport { tryGetPackageJson } from '../../utils/setup-utils';\nimport { getUI } from '../../ui';\nimport {\n getAstroRenderingMode,\n getAstroVersionBucket,\n getAstroRenderingModeName,\n AstroRenderingMode,\n} from './utils';\n\ntype AstroContext = {\n renderingMode?: AstroRenderingMode;\n};\n\nexport const ASTRO_AGENT_CONFIG: FrameworkConfig<AstroContext> = {\n metadata: {\n name: 'Astro',\n integration: Integration.astro,\n docsUrl: 'https://posthog.com/docs/libraries/astro',\n gatherContext: async (options: WizardOptions) => {\n const renderingMode = await getAstroRenderingMode(options);\n getUI().setDetectedFramework(\n `Astro ${getAstroRenderingModeName(renderingMode)}`,\n );\n return { renderingMode };\n },\n },\n\n detection: {\n packageName: 'astro',\n packageDisplayName: 'Astro',\n getVersion: (packageJson: unknown) =>\n getPackageVersion('astro', packageJson as PackageDotJson),\n getVersionBucket: getAstroVersionBucket,\n minimumVersion: '4.0.0',\n getInstalledVersion: (options: WizardOptions) =>\n Promise.resolve(getInstalledPackageVersion('astro', options.installDir)),\n detect: async (options) => {\n const packageJson = await tryGetPackageJson(options);\n return packageJson ? hasPackageInstalled('astro', packageJson) : false;\n },\n detectPackageManager: detectNodePackageManagers,\n },\n\n environment: {\n uploadToHosting: true,\n getEnvVars: (apiKey: string, host: string) => ({\n PUBLIC_POSTHOG_KEY: apiKey,\n PUBLIC_POSTHOG_HOST: host,\n }),\n },\n\n analytics: {\n getTags: (context) => ({\n 'rendering-mode': context.renderingMode ?? 'static',\n }),\n },\n\n prompts: {\n projectTypeDetection:\n 'This is a JavaScript/TypeScript project. Look for package.json and lockfiles (package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb) to confirm.',\n getAdditionalContextLines: (context) => {\n const modeName = getAstroRenderingModeName(\n context.renderingMode ?? AstroRenderingMode.STATIC,\n );\n\n // Map rendering mode to framework ID for MCP docs resource\n const frameworkIdMap: Record<AstroRenderingMode, string> = {\n [AstroRenderingMode.STATIC]: 'astro-static',\n [AstroRenderingMode.VIEW_TRANSITIONS]: 'astro-view-transitions',\n [AstroRenderingMode.SSR]: 'astro-ssr',\n [AstroRenderingMode.HYBRID]: 'astro-hybrid',\n };\n\n const frameworkId =\n frameworkIdMap[context.renderingMode ?? AstroRenderingMode.STATIC];\n\n const lines = [\n `Rendering mode: ${modeName}`,\n `Framework docs ID: ${frameworkId} (use posthog://docs/frameworks/${frameworkId} for documentation)`,\n ];\n\n // Add mode-specific guidance\n if (context.renderingMode === AstroRenderingMode.VIEW_TRANSITIONS) {\n lines.push(\n 'IMPORTANT: Use window.__posthog_initialized guard to prevent re-initialization during soft navigation',\n );\n lines.push(\n \"IMPORTANT: Set capture_pageview: 'history_change' for automatic pageview tracking\",\n );\n }\n\n if (\n context.renderingMode === AstroRenderingMode.SSR ||\n context.renderingMode === AstroRenderingMode.HYBRID\n ) {\n lines.push(\n 'IMPORTANT: Use posthog-node for server-side tracking in API routes',\n );\n lines.push(\n 'IMPORTANT: Create a singleton pattern for the posthog-node client',\n );\n }\n\n return lines;\n },\n },\n\n ui: {\n successMessage: 'PostHog integration complete',\n estimatedDurationMinutes: 6,\n getOutroChanges: (context) => {\n const modeName = getAstroRenderingModeName(\n context.renderingMode ?? AstroRenderingMode.STATIC,\n );\n const changes = [\n `Analyzed your Astro project structure (${modeName})`,\n `Created PostHog component with is:inline script`,\n `Integrated PostHog into your layout`,\n ];\n\n if (\n context.renderingMode === AstroRenderingMode.SSR ||\n context.renderingMode === AstroRenderingMode.HYBRID\n ) {\n changes.push(`Set up posthog-node for server-side tracking`);\n }\n\n if (context.renderingMode === AstroRenderingMode.VIEW_TRANSITIONS) {\n changes.push(\n `Added initialization guard for view transitions compatibility`,\n );\n }\n\n return changes;\n },\n getOutroNextSteps: () => {\n return [\n 'Start your development server to see PostHog in action',\n 'Visit your PostHog dashboard to see incoming events',\n ];\n },\n },\n};\n"]}
|
|
@@ -45,10 +45,7 @@ exports.NEXTJS_AGENT_CONFIG = {
|
|
|
45
45
|
getVersion: (packageJson) => (0, package_json_1.getPackageVersion)('next', packageJson),
|
|
46
46
|
getVersionBucket: utils_1.getNextJsVersionBucket,
|
|
47
47
|
minimumVersion: '15.3.0',
|
|
48
|
-
getInstalledVersion:
|
|
49
|
-
const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
|
|
50
|
-
return packageJson ? (0, package_json_1.getPackageVersion)('next', packageJson) : undefined;
|
|
51
|
-
},
|
|
48
|
+
getInstalledVersion: (options) => Promise.resolve((0, package_json_1.getInstalledPackageVersion)('next', options.installDir)),
|
|
52
49
|
detect: async (options) => {
|
|
53
50
|
const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
|
|
54
51
|
return packageJson ? (0, package_json_1.hasPackageInstalled)('next', packageJson) : false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextjs-wizard-agent.js","sourceRoot":"","sources":["../../../../src/frameworks/nextjs/nextjs-wizard-agent.ts"],"names":[],"mappings":";;;AAGA,mFAAgF;AAChF,mDAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"nextjs-wizard-agent.js","sourceRoot":"","sources":["../../../../src/frameworks/nextjs/nextjs-wizard-agent.ts"],"names":[],"mappings":"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","sourcesContent":["/* Simplified Next.js wizard using posthog-agent with PostHog MCP */\nimport type { WizardOptions } from '../../utils/types';\nimport type { FrameworkConfig } from '../../lib/framework-config';\nimport { detectNodePackageManagers } from '../../lib/package-manager-detection';\nimport { Integration } from '../../lib/constants';\nimport {\n getPackageVersion,\n getInstalledPackageVersion,\n hasPackageInstalled,\n type PackageDotJson,\n} from '../../utils/package-json';\nimport { tryGetPackageJson } from '../../utils/setup-utils';\nimport { getUI } from '../../ui';\nimport {\n getNextJsRouter,\n getNextJsVersionBucket,\n getNextJsRouterName,\n NextJsRouter,\n} from './utils';\n\ntype NextjsContext = {\n router?: NextJsRouter;\n};\n\nexport const NEXTJS_AGENT_CONFIG: FrameworkConfig<NextjsContext> = {\n metadata: {\n name: 'Next.js',\n integration: Integration.nextjs,\n docsUrl: 'https://posthog.com/docs/libraries/next-js',\n unsupportedVersionDocsUrl: 'https://posthog.com/docs/libraries/next-js',\n gatherContext: async (options: WizardOptions) => {\n const router = await getNextJsRouter(options);\n if (router) {\n const emoji =\n router === NextJsRouter.APP_ROUTER ? '\\u{1F4F1}' : '\\u{1F4C3}';\n getUI().setDetectedFramework(\n `Next.js ${getNextJsRouterName(router)} ${emoji}`,\n );\n return { router };\n }\n return {};\n },\n setup: {\n questions: [\n {\n key: 'router',\n message: 'Which Next.js router are you using?',\n options: [\n { label: 'App Router', value: NextJsRouter.APP_ROUTER },\n { label: 'Pages Router', value: NextJsRouter.PAGES_ROUTER },\n ],\n detect: async (opts) => {\n const result = await getNextJsRouter(opts);\n return result;\n },\n },\n ],\n },\n },\n\n detection: {\n packageName: 'next',\n packageDisplayName: 'Next.js',\n getVersion: (packageJson: unknown) =>\n getPackageVersion('next', packageJson as PackageDotJson),\n getVersionBucket: getNextJsVersionBucket,\n minimumVersion: '15.3.0',\n getInstalledVersion: (options: WizardOptions) =>\n Promise.resolve(getInstalledPackageVersion('next', options.installDir)),\n detect: async (options) => {\n const packageJson = await tryGetPackageJson(options);\n return packageJson ? hasPackageInstalled('next', packageJson) : false;\n },\n detectPackageManager: detectNodePackageManagers,\n },\n\n environment: {\n uploadToHosting: true,\n getEnvVars: (apiKey: string, host: string) => ({\n NEXT_PUBLIC_POSTHOG_KEY: apiKey,\n NEXT_PUBLIC_POSTHOG_HOST: host,\n }),\n },\n\n analytics: {\n getTags: (context) => ({\n router: context.router === NextJsRouter.APP_ROUTER ? 'app' : 'pages',\n }),\n },\n\n prompts: {\n projectTypeDetection:\n 'This is a JavaScript/TypeScript project. Look for package.json and lockfiles (package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb) to confirm.',\n getAdditionalContextLines: (context) => {\n const routerType =\n context.router === NextJsRouter.APP_ROUTER ? 'app' : 'pages';\n return [`Router: ${routerType}`];\n },\n },\n\n ui: {\n successMessage: 'PostHog integration complete',\n estimatedDurationMinutes: 8,\n getOutroChanges: (context) => {\n const router = context.router ?? NextJsRouter.APP_ROUTER;\n const routerName = getNextJsRouterName(router);\n return [\n `Analyzed your Next.js project structure (${routerName})`,\n `Created and configured PostHog initializers`,\n `Integrated PostHog into your application`,\n ];\n },\n getOutroNextSteps: () => {\n return [\n 'Start your development server to see PostHog in action',\n 'Visit your PostHog dashboard to see incoming events',\n ];\n },\n },\n};\n"]}
|
|
@@ -27,10 +27,7 @@ exports.NUXT_AGENT_CONFIG = {
|
|
|
27
27
|
packageDisplayName: 'Nuxt',
|
|
28
28
|
getVersion: (packageJson) => (0, package_json_1.getPackageVersion)('nuxt', packageJson),
|
|
29
29
|
getVersionBucket: getNuxtVersionBucket,
|
|
30
|
-
getInstalledVersion:
|
|
31
|
-
const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
|
|
32
|
-
return packageJson ? (0, package_json_1.getPackageVersion)('nuxt', packageJson) : undefined;
|
|
33
|
-
},
|
|
30
|
+
getInstalledVersion: (options) => Promise.resolve((0, package_json_1.getInstalledPackageVersion)('nuxt', options.installDir)),
|
|
34
31
|
detect: async (options) => {
|
|
35
32
|
const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
|
|
36
33
|
return packageJson ? (0, package_json_1.hasPackageInstalled)('nuxt', packageJson) : false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nuxt-wizard-agent.js","sourceRoot":"","sources":["../../../../src/frameworks/nuxt/nuxt-wizard-agent.ts"],"names":[],"mappings":";;;AAGA,mFAAgF;AAChF,mDAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"nuxt-wizard-agent.js","sourceRoot":"","sources":["../../../../src/frameworks/nuxt/nuxt-wizard-agent.ts"],"names":[],"mappings":";;;AAGA,mFAAgF;AAChF,mDAAkD;AAClD,2DAKkC;AAClC,yDAA4D;AAC5D,+CAAyD;AAEzD,MAAM,oBAAoB,GAAG,IAAA,4BAAmB,GAAE,CAAC;AAMtC,QAAA,iBAAiB,GAAiC;IAC7D,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,uBAAW,CAAC,IAAI;QAC7B,OAAO,EAAE,yCAAyC;QAClD,IAAI,EAAE,IAAI;QACV,aAAa,EAAE,KAAK,EAAE,OAAsB,EAAE,EAAE;YAC9C,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAiB,EAAC,OAAO,CAAC,CAAC;YACrD,IAAI,CAAC,WAAW;gBAAE,OAAO,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAA,gCAAiB,EAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACvD,MAAM,aAAa,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;YACpD,OAAO,EAAE,aAAa,EAAE,CAAC;QAC3B,CAAC;KACF;IAED,SAAS,EAAE;QACT,WAAW,EAAE,MAAM;QACnB,kBAAkB,EAAE,MAAM;QAC1B,UAAU,EAAE,CAAC,WAAoB,EAAE,EAAE,CACnC,IAAA,gCAAiB,EAAC,MAAM,EAAE,WAA6B,CAAC;QAC1D,gBAAgB,EAAE,oBAAoB;QACtC,mBAAmB,EAAE,CAAC,OAAsB,EAAE,EAAE,CAC9C,OAAO,CAAC,OAAO,CAAC,IAAA,yCAA0B,EAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QACzE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACxB,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAiB,EAAC,OAAO,CAAC,CAAC;YACrD,OAAO,WAAW,CAAC,CAAC,CAAC,IAAA,kCAAmB,EAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACxE,CAAC;QACD,oBAAoB,EAAE,qDAAyB;KAChD;IAED,WAAW,EAAE;QACX,eAAe,EAAE,IAAI;QACrB,UAAU,EAAE,CAAC,MAAc,EAAE,IAAY,EAAE,EAAE,CAAC,CAAC;YAC7C,uBAAuB,EAAE,MAAM;YAC/B,wBAAwB,EAAE,IAAI;SAC/B,CAAC;KACH;IAED,SAAS,EAAE;QACT,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACrB,GAAG,CAAC,OAAO,CAAC,aAAa;gBACvB,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE;gBAC1C,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;KACH;IAED,OAAO,EAAE;QACP,oBAAoB,EAClB,oJAAoJ;QACtJ,yBAAyB,EAAE,CAAC,OAAO,EAAE,EAAE;YACrC,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;YACvD,CAAC;YACD,MAAM,WAAW,GAAG,MAAM,CAAC;YAC3B,KAAK,CAAC,IAAI,CACR,sBAAsB,WAAW,mCAAmC,WAAW,qBAAqB,CACrG,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;KACF;IAED,EAAE,EAAE;QACF,cAAc,EAAE,8BAA8B;QAC9C,wBAAwB,EAAE,CAAC;QAC3B,eAAe,EAAE,GAAG,EAAE,CAAC;YACrB,sCAAsC;YACtC,kCAAkC;YAClC,0CAA0C;SAC3C;QACD,iBAAiB,EAAE,GAAG,EAAE,CAAC;YACvB,wDAAwD;YACxD,qDAAqD;SACtD;KACF;CACF,CAAC","sourcesContent":["/* Nuxt wizard using posthog-agent with PostHog MCP */\nimport type { WizardOptions } from '../../utils/types';\nimport type { FrameworkConfig } from '../../lib/framework-config';\nimport { detectNodePackageManagers } from '../../lib/package-manager-detection';\nimport { Integration } from '../../lib/constants';\nimport {\n getPackageVersion,\n getInstalledPackageVersion,\n hasPackageInstalled,\n type PackageDotJson,\n} from '../../utils/package-json';\nimport { tryGetPackageJson } from '../../utils/setup-utils';\nimport { createVersionBucket } from '../../utils/semver';\n\nconst getNuxtVersionBucket = createVersionBucket();\n\ntype NuxtContext = {\n versionBucket?: string;\n};\n\nexport const NUXT_AGENT_CONFIG: FrameworkConfig<NuxtContext> = {\n metadata: {\n name: 'Nuxt',\n integration: Integration.nuxt,\n docsUrl: 'https://posthog.com/docs/libraries/nuxt',\n beta: true,\n gatherContext: async (options: WizardOptions) => {\n const packageJson = await tryGetPackageJson(options);\n if (!packageJson) return {};\n const version = getPackageVersion('nuxt', packageJson);\n const versionBucket = getNuxtVersionBucket(version);\n return { versionBucket };\n },\n },\n\n detection: {\n packageName: 'nuxt',\n packageDisplayName: 'Nuxt',\n getVersion: (packageJson: unknown) =>\n getPackageVersion('nuxt', packageJson as PackageDotJson),\n getVersionBucket: getNuxtVersionBucket,\n getInstalledVersion: (options: WizardOptions) =>\n Promise.resolve(getInstalledPackageVersion('nuxt', options.installDir)),\n detect: async (options) => {\n const packageJson = await tryGetPackageJson(options);\n return packageJson ? hasPackageInstalled('nuxt', packageJson) : false;\n },\n detectPackageManager: detectNodePackageManagers,\n },\n\n environment: {\n uploadToHosting: true,\n getEnvVars: (apiKey: string, host: string) => ({\n NUXT_PUBLIC_POSTHOG_KEY: apiKey,\n NUXT_PUBLIC_POSTHOG_HOST: host,\n }),\n },\n\n analytics: {\n getTags: (context) => ({\n ...(context.versionBucket\n ? { versionBucket: context.versionBucket }\n : {}),\n }),\n },\n\n prompts: {\n projectTypeDetection:\n 'This is a JavaScript/TypeScript project. Look for package.json and lockfiles (package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb) to confirm.',\n getAdditionalContextLines: (context) => {\n const lines: string[] = [];\n if (context.versionBucket) {\n lines.push(`Nuxt version: ${context.versionBucket}`);\n }\n const frameworkId = 'nuxt';\n lines.push(\n `Framework docs ID: ${frameworkId} (use posthog://docs/frameworks/${frameworkId} for documentation)`,\n );\n return lines;\n },\n },\n\n ui: {\n successMessage: 'PostHog integration complete',\n estimatedDurationMinutes: 5,\n getOutroChanges: () => [\n 'Analyzed your Nuxt project structure',\n 'Configured PostHog module/plugin',\n 'Integrated PostHog into your application',\n ],\n getOutroNextSteps: () => [\n 'Start your development server to see PostHog in action',\n 'Visit your PostHog dashboard to see incoming events',\n ],\n },\n};\n"]}
|
|
@@ -22,12 +22,7 @@ exports.REACT_NATIVE_AGENT_CONFIG = {
|
|
|
22
22
|
getVersion: (packageJson) => (0, package_json_1.getPackageVersion)('react-native', packageJson),
|
|
23
23
|
getVersionBucket: utils_1.getReactNativeVersionBucket,
|
|
24
24
|
minimumVersion: '0.73.0',
|
|
25
|
-
getInstalledVersion:
|
|
26
|
-
const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
|
|
27
|
-
return packageJson
|
|
28
|
-
? (0, package_json_1.getPackageVersion)('react-native', packageJson)
|
|
29
|
-
: undefined;
|
|
30
|
-
},
|
|
25
|
+
getInstalledVersion: (options) => Promise.resolve((0, package_json_1.getInstalledPackageVersion)('react-native', options.installDir)),
|
|
31
26
|
detect: async (options) => {
|
|
32
27
|
const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
|
|
33
28
|
return packageJson
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-native-wizard-agent.js","sourceRoot":"","sources":["../../../../src/frameworks/react-native/react-native-wizard-agent.ts"],"names":[],"mappings":";;;AAGA,mFAAgF;AAChF,mDAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"react-native-wizard-agent.js","sourceRoot":"","sources":["../../../../src/frameworks/react-native/react-native-wizard-agent.ts"],"names":[],"mappings":"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","sourcesContent":["/* React Native wizard using posthog-agent with PostHog MCP */\nimport type { WizardOptions } from '../../utils/types';\nimport type { FrameworkConfig } from '../../lib/framework-config';\nimport { detectNodePackageManagers } from '../../lib/package-manager-detection';\nimport { Integration } from '../../lib/constants';\nimport {\n getPackageVersion,\n getInstalledPackageVersion,\n hasPackageInstalled,\n type PackageDotJson,\n} from '../../utils/package-json';\nimport { tryGetPackageJson } from '../../utils/setup-utils';\nimport {\n detectReactNativeVariant,\n getReactNativeVariantName,\n getReactNativeVersionBucket,\n ReactNativeVariant,\n} from './utils';\n\ntype ReactNativeContext = {\n variant?: ReactNativeVariant;\n};\n\nexport const REACT_NATIVE_AGENT_CONFIG: FrameworkConfig<ReactNativeContext> = {\n metadata: {\n name: 'React Native',\n integration: Integration.reactNative,\n docsUrl: 'https://posthog.com/docs/libraries/react-native',\n gatherContext: async (options: WizardOptions) => {\n const variant = await detectReactNativeVariant(options);\n return { variant };\n },\n },\n\n detection: {\n packageName: 'react-native',\n packageDisplayName: 'React Native',\n getVersion: (packageJson: unknown) =>\n getPackageVersion('react-native', packageJson as PackageDotJson),\n getVersionBucket: getReactNativeVersionBucket,\n minimumVersion: '0.73.0',\n getInstalledVersion: (options: WizardOptions) =>\n Promise.resolve(\n getInstalledPackageVersion('react-native', options.installDir),\n ),\n detect: async (options) => {\n const packageJson = await tryGetPackageJson(options);\n return packageJson\n ? hasPackageInstalled('react-native', packageJson)\n : false;\n },\n detectPackageManager: detectNodePackageManagers,\n },\n\n environment: {\n uploadToHosting: false,\n getEnvVars: (apiKey: string, host: string) => ({\n POSTHOG_API_KEY: apiKey,\n POSTHOG_HOST: host,\n }),\n },\n\n analytics: {\n getTags: (context) => ({\n variant:\n context.variant === ReactNativeVariant.EXPO ? 'expo' : 'react-native',\n }),\n },\n\n prompts: {\n projectTypeDetection:\n 'This is a React Native project. Look for package.json, android/ and ios/ directories, and lockfiles to confirm. Check for expo in package.json to determine the variant.',\n getAdditionalContextLines: (context) => {\n const isExpo = context.variant === ReactNativeVariant.EXPO;\n const frameworkId = 'react-native';\n\n const lines = [\n `Framework docs ID: ${frameworkId} (use posthog://docs/frameworks/${frameworkId} for documentation)`,\n `Variant: ${isExpo ? 'Expo' : 'React Native'}`,\n ];\n\n if (isExpo) {\n lines.push(\n 'Use `npx expo install` for package installation.',\n 'Use EXPO_PUBLIC_ prefix for environment variables exposed to the client.',\n );\n } else {\n lines.push(\n 'This is a React Native project without Expo. Native linking may be required.',\n 'For iOS, ensure pods are installed after adding PostHog.',\n );\n }\n\n return lines;\n },\n },\n\n ui: {\n successMessage: 'PostHog integration complete',\n estimatedDurationMinutes: 10,\n getOutroChanges: (context) => {\n const variant = context.variant ?? ReactNativeVariant.REACT_NATIVE;\n const variantName = getReactNativeVariantName(variant);\n return [\n `Analyzed your React Native project structure (${variantName})`,\n `Installed and configured the PostHog React Native SDK`,\n `Integrated PostHog into your application`,\n ];\n },\n getOutroNextSteps: (context) => {\n const isExpo = context.variant === ReactNativeVariant.EXPO;\n const steps = [];\n\n if (!isExpo) {\n steps.push('Run `npx pod-install` to install iOS dependencies');\n }\n\n steps.push(\n isExpo\n ? 'Start your development server with `npx expo start` to see PostHog in action'\n : 'Start your development server to see PostHog in action',\n 'Visit your PostHog dashboard to see incoming events',\n );\n\n return steps;\n },\n },\n};\n"]}
|
|
@@ -28,12 +28,7 @@ exports.REACT_ROUTER_AGENT_CONFIG = {
|
|
|
28
28
|
getVersion: (packageJson) => (0, package_json_1.getPackageVersion)('react-router', packageJson),
|
|
29
29
|
getVersionBucket: utils_1.getReactRouterVersionBucket,
|
|
30
30
|
minimumVersion: '6.0.0',
|
|
31
|
-
getInstalledVersion:
|
|
32
|
-
const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
|
|
33
|
-
return packageJson
|
|
34
|
-
? (0, package_json_1.getPackageVersion)('react-router', packageJson)
|
|
35
|
-
: undefined;
|
|
36
|
-
},
|
|
31
|
+
getInstalledVersion: (options) => Promise.resolve((0, package_json_1.getInstalledPackageVersion)('react-router', options.installDir)),
|
|
37
32
|
detect: async (options) => {
|
|
38
33
|
const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
|
|
39
34
|
return packageJson
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-router-wizard-agent.js","sourceRoot":"","sources":["../../../../src/frameworks/react-router/react-router-wizard-agent.ts"],"names":[],"mappings":";;;AAGA,mFAAgF;AAChF,mDAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"react-router-wizard-agent.js","sourceRoot":"","sources":["../../../../src/frameworks/react-router/react-router-wizard-agent.ts"],"names":[],"mappings":"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","sourcesContent":["/* React Router wizard using posthog-agent with PostHog MCP */\nimport type { WizardOptions } from '../../utils/types';\nimport type { FrameworkConfig } from '../../lib/framework-config';\nimport { detectNodePackageManagers } from '../../lib/package-manager-detection';\nimport { Integration } from '../../lib/constants';\nimport {\n getPackageVersion,\n getInstalledPackageVersion,\n hasPackageInstalled,\n type PackageDotJson,\n} from '../../utils/package-json';\nimport { tryGetPackageJson } from '../../utils/setup-utils';\nimport { getUI } from '../../ui';\nimport {\n getReactRouterMode,\n getReactRouterModeName,\n getReactRouterVersionBucket,\n ReactRouterMode,\n} from './utils';\n\ntype ReactRouterContext = {\n routerMode?: ReactRouterMode;\n};\n\nexport const REACT_ROUTER_AGENT_CONFIG: FrameworkConfig<ReactRouterContext> = {\n metadata: {\n name: 'React Router',\n integration: Integration.reactRouter,\n docsUrl: 'https://posthog.com/docs/libraries/react',\n unsupportedVersionDocsUrl: 'https://posthog.com/docs/libraries/react',\n gatherContext: async (options: WizardOptions) => {\n const routerMode = await getReactRouterMode(options);\n if (routerMode) {\n getUI().setDetectedFramework(\n `React Router ${getReactRouterModeName(routerMode)}`,\n );\n return { routerMode };\n }\n return {};\n },\n },\n\n detection: {\n packageName: 'react-router',\n packageDisplayName: 'React Router',\n getVersion: (packageJson: unknown) =>\n getPackageVersion('react-router', packageJson as PackageDotJson),\n getVersionBucket: getReactRouterVersionBucket,\n minimumVersion: '6.0.0',\n getInstalledVersion: (options: WizardOptions) =>\n Promise.resolve(\n getInstalledPackageVersion('react-router', options.installDir),\n ),\n detect: async (options) => {\n const packageJson = await tryGetPackageJson(options);\n return packageJson\n ? hasPackageInstalled('react-router', packageJson)\n : false;\n },\n detectPackageManager: detectNodePackageManagers,\n },\n\n environment: {\n uploadToHosting: false,\n getEnvVars: (apiKey: string, host: string) => ({\n REACT_APP_POSTHOG_KEY: apiKey,\n REACT_APP_POSTHOG_HOST: host,\n }),\n },\n\n analytics: {\n getTags: (context) => ({\n routerMode: context.routerMode || 'unknown',\n }),\n },\n\n prompts: {\n projectTypeDetection:\n 'This is a JavaScript/TypeScript project. Look for package.json and lockfiles (package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb) to confirm.',\n getAdditionalContextLines: (context) => {\n const routerMode = context.routerMode;\n const modeName = routerMode\n ? getReactRouterModeName(routerMode)\n : 'unknown';\n\n // Map router mode to framework ID for MCP docs resource\n const frameworkIdMap: Record<ReactRouterMode, string> = {\n [ReactRouterMode.V6]: 'react-react-router-6',\n [ReactRouterMode.V7_FRAMEWORK]: 'react-react-router-7-framework',\n [ReactRouterMode.V7_DATA]: 'react-react-router-7-data',\n [ReactRouterMode.V7_DECLARATIVE]: 'react-react-router-7-declarative',\n };\n\n const frameworkId = routerMode\n ? frameworkIdMap[routerMode]\n : ReactRouterMode.V7_FRAMEWORK;\n\n return [\n `Router mode: ${modeName}`,\n `Framework docs ID: ${frameworkId} (use posthog://docs/frameworks/${frameworkId} for documentation)`,\n ];\n },\n },\n\n ui: {\n successMessage: 'PostHog integration complete',\n estimatedDurationMinutes: 8,\n getOutroChanges: (context) => {\n const modeName = context.routerMode\n ? getReactRouterModeName(context.routerMode)\n : 'React Router';\n return [\n `Analyzed your React Router project structure (${modeName})`,\n `Created and configured PostHog initializers`,\n `Integrated PostHog into your application`,\n ];\n },\n getOutroNextSteps: () => [\n 'Start your development server to see PostHog in action',\n 'Visit your PostHog dashboard to see incoming events',\n ],\n },\n};\n"]}
|
|
@@ -27,12 +27,7 @@ exports.TANSTACK_ROUTER_AGENT_CONFIG = {
|
|
|
27
27
|
getVersion: (packageJson) => (0, package_json_1.getPackageVersion)('@tanstack/react-router', packageJson),
|
|
28
28
|
getVersionBucket: utils_1.getTanStackRouterVersionBucket,
|
|
29
29
|
minimumVersion: '1.0.0',
|
|
30
|
-
getInstalledVersion:
|
|
31
|
-
const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
|
|
32
|
-
return packageJson
|
|
33
|
-
? (0, package_json_1.getPackageVersion)('@tanstack/react-router', packageJson)
|
|
34
|
-
: undefined;
|
|
35
|
-
},
|
|
30
|
+
getInstalledVersion: (options) => Promise.resolve((0, package_json_1.getInstalledPackageVersion)('@tanstack/react-router', options.installDir)),
|
|
36
31
|
detect: async (options) => {
|
|
37
32
|
const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
|
|
38
33
|
if (!packageJson) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tanstack-router-wizard-agent.js","sourceRoot":"","sources":["../../../../src/frameworks/tanstack-router/tanstack-router-wizard-agent.ts"],"names":[],"mappings":";;;AAGA,mFAAgF;AAChF,mDAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"tanstack-router-wizard-agent.js","sourceRoot":"","sources":["../../../../src/frameworks/tanstack-router/tanstack-router-wizard-agent.ts"],"names":[],"mappings":"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","sourcesContent":["/* TanStack Router wizard using posthog-agent with PostHog MCP */\nimport type { WizardOptions } from '../../utils/types';\nimport type { FrameworkConfig } from '../../lib/framework-config';\nimport { detectNodePackageManagers } from '../../lib/package-manager-detection';\nimport { Integration } from '../../lib/constants';\nimport {\n getPackageVersion,\n getInstalledPackageVersion,\n hasPackageInstalled,\n type PackageDotJson,\n} from '../../utils/package-json';\nimport { tryGetPackageJson } from '../../utils/setup-utils';\nimport { getUI } from '../../ui';\nimport {\n getTanStackRouterMode,\n getTanStackRouterModeName,\n getTanStackRouterVersionBucket,\n TanStackRouterMode,\n} from './utils';\n\ntype TanStackRouterContext = {\n routerMode?: TanStackRouterMode;\n};\n\nexport const TANSTACK_ROUTER_AGENT_CONFIG: FrameworkConfig<TanStackRouterContext> =\n {\n metadata: {\n name: 'React (TanStack Router)',\n integration: Integration.tanstackRouter,\n docsUrl: 'https://posthog.com/docs/libraries/react',\n gatherContext: async (options: WizardOptions) => {\n const routerMode = await getTanStackRouterMode(options);\n if (routerMode) {\n getUI().setDetectedFramework(\n `TanStack Router ${getTanStackRouterModeName(routerMode)}`,\n );\n return { routerMode };\n }\n return {};\n },\n },\n\n detection: {\n packageName: '@tanstack/react-router',\n packageDisplayName: 'TanStack Router',\n getVersion: (packageJson: unknown) =>\n getPackageVersion(\n '@tanstack/react-router',\n packageJson as PackageDotJson,\n ),\n getVersionBucket: getTanStackRouterVersionBucket,\n minimumVersion: '1.0.0',\n getInstalledVersion: (options: WizardOptions) =>\n Promise.resolve(\n getInstalledPackageVersion(\n '@tanstack/react-router',\n options.installDir,\n ),\n ),\n detect: async (options) => {\n const packageJson = await tryGetPackageJson(options);\n if (!packageJson) {\n return false;\n }\n // Exclude TanStack Start projects (they have their own integration)\n if (hasPackageInstalled('@tanstack/react-start', packageJson)) {\n return false;\n }\n return hasPackageInstalled('@tanstack/react-router', packageJson);\n },\n detectPackageManager: detectNodePackageManagers,\n },\n\n environment: {\n uploadToHosting: false,\n getEnvVars: (apiKey: string, host: string) => ({\n VITE_PUBLIC_POSTHOG_KEY: apiKey,\n VITE_PUBLIC_POSTHOG_HOST: host,\n }),\n },\n\n analytics: {\n getTags: (context) => ({\n routerMode: context.routerMode || 'unknown',\n }),\n },\n\n prompts: {\n projectTypeDetection:\n 'This is a JavaScript/TypeScript project. Look for package.json and lockfiles (package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb) to confirm.',\n getAdditionalContextLines: (context) => {\n const routerMode = context.routerMode;\n const modeName = routerMode\n ? getTanStackRouterModeName(routerMode)\n : 'unknown';\n\n // Map router mode to framework ID for MCP docs resource\n const frameworkIdMap: Record<TanStackRouterMode, string> = {\n [TanStackRouterMode.FILE_BASED]: 'react-tanstack-router-file-based',\n [TanStackRouterMode.CODE_BASED]: 'react-tanstack-router-code-based',\n };\n\n const frameworkId = routerMode\n ? frameworkIdMap[routerMode]\n : 'react-tanstack-router-file-based';\n\n return [\n `Router mode: ${modeName}`,\n `Framework docs ID: ${frameworkId} (use posthog://docs/frameworks/${frameworkId} for documentation)`,\n ];\n },\n },\n\n ui: {\n successMessage: 'PostHog integration complete',\n estimatedDurationMinutes: 8,\n getOutroChanges: (context) => {\n const modeName = context.routerMode\n ? getTanStackRouterModeName(context.routerMode)\n : 'TanStack Router';\n return [\n `Analyzed your React (TanStack Router) project structure (${modeName})`,\n `Created and configured PostHog initializers`,\n `Integrated PostHog into your application`,\n ];\n },\n getOutroNextSteps: () => [\n 'Start your development server to see PostHog in action',\n 'Visit your PostHog dashboard to see incoming events',\n ],\n },\n };\n"]}
|
|
@@ -18,12 +18,7 @@ exports.TANSTACK_START_AGENT_CONFIG = {
|
|
|
18
18
|
getVersion: (packageJson) => (0, package_json_1.getPackageVersion)('@tanstack/react-start', packageJson),
|
|
19
19
|
getVersionBucket: utils_1.getTanStackStartVersionBucket,
|
|
20
20
|
minimumVersion: '1.0.0',
|
|
21
|
-
getInstalledVersion:
|
|
22
|
-
const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
|
|
23
|
-
return packageJson
|
|
24
|
-
? (0, package_json_1.getPackageVersion)('@tanstack/react-start', packageJson)
|
|
25
|
-
: undefined;
|
|
26
|
-
},
|
|
21
|
+
getInstalledVersion: (options) => Promise.resolve((0, package_json_1.getInstalledPackageVersion)('@tanstack/react-start', options.installDir)),
|
|
27
22
|
detect: async (options) => {
|
|
28
23
|
const packageJson = await (0, setup_utils_1.tryGetPackageJson)(options);
|
|
29
24
|
return packageJson
|