@stacknext/cli 0.8.0 → 0.9.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/agents.d.ts +27 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +226 -0
- package/dist/agents.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +22 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +6 -6
- package/skills/stacknext-debugging/SKILL.md +1 -1
package/dist/agents.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare const AGENTS_FILE_NAME = "AGENTS.md";
|
|
2
|
+
export declare const AGENT_RULES_BEGIN = "<!-- BEGIN STACKNEXT AGENT RULES -->";
|
|
3
|
+
export declare const AGENT_RULES_END = "<!-- END STACKNEXT AGENT RULES -->";
|
|
4
|
+
export interface AgentPackageDocs {
|
|
5
|
+
name: string;
|
|
6
|
+
version: string;
|
|
7
|
+
docsPath: string;
|
|
8
|
+
visibility: 'public' | 'internal';
|
|
9
|
+
role: string;
|
|
10
|
+
}
|
|
11
|
+
export interface AgentRulesOptions {
|
|
12
|
+
version: string;
|
|
13
|
+
packages: AgentPackageDocs[];
|
|
14
|
+
}
|
|
15
|
+
export interface AgentRulesInstallResult {
|
|
16
|
+
file: string;
|
|
17
|
+
status: 'created' | 'appended' | 'updated' | 'unchanged';
|
|
18
|
+
changed: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare function discoverAgentPackages(projectDir: string): Promise<AgentPackageDocs[]>;
|
|
21
|
+
export declare function renderAgentRules(options: AgentRulesOptions): string;
|
|
22
|
+
/**
|
|
23
|
+
* Adds or replaces only the managed StackNext block. User content outside the
|
|
24
|
+
* markers is preserved exactly, including its line endings.
|
|
25
|
+
*/
|
|
26
|
+
export declare function installAgentRules(projectDir: string, options: AgentRulesOptions): Promise<AgentRulesInstallResult>;
|
|
27
|
+
//# sourceMappingURL=agents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gBAAgB,cAAc,CAAA;AAC3C,eAAO,MAAM,iBAAiB,yCAAyC,CAAA;AACvE,eAAO,MAAM,eAAe,uCAAuC,CAAA;AAEnE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,QAAQ,GAAG,UAAU,CAAA;IACjC,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,gBAAgB,EAAE,CAAA;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAA;IACxD,OAAO,EAAE,OAAO,CAAA;CACjB;AA6FD,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAgC7B;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAuDnE;AAkBD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,uBAAuB,CAAC,CAwDlC"}
|
package/dist/agents.js
ADDED
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { access, readFile, writeFile } from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
export const AGENTS_FILE_NAME = 'AGENTS.md';
|
|
4
|
+
export const AGENT_RULES_BEGIN = '<!-- BEGIN STACKNEXT AGENT RULES -->';
|
|
5
|
+
export const AGENT_RULES_END = '<!-- END STACKNEXT AGENT RULES -->';
|
|
6
|
+
const PACKAGE_DOCS = [
|
|
7
|
+
{
|
|
8
|
+
slug: 'cli',
|
|
9
|
+
name: '@stacknext/cli',
|
|
10
|
+
visibility: 'public',
|
|
11
|
+
role: 'CLI, collector and dashboard',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
slug: 'next',
|
|
15
|
+
name: '@stacknext/next',
|
|
16
|
+
visibility: 'public',
|
|
17
|
+
role: 'Next.js instrumentation',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
slug: 'core',
|
|
21
|
+
name: '@stacknext/core',
|
|
22
|
+
visibility: 'internal',
|
|
23
|
+
role: 'shared schemas, redaction and transport',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
slug: 'diagnostics',
|
|
27
|
+
name: '@stacknext/diagnostics',
|
|
28
|
+
visibility: 'internal',
|
|
29
|
+
role: 'deterministic findings',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
slug: 'regression',
|
|
33
|
+
name: '@stacknext/regression',
|
|
34
|
+
visibility: 'internal',
|
|
35
|
+
role: 'capture and comparison data',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
slug: 'playwright',
|
|
39
|
+
name: '@stacknext/playwright',
|
|
40
|
+
visibility: 'public',
|
|
41
|
+
role: 'optional Playwright fixture',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
slug: 'drizzle',
|
|
45
|
+
name: '@stacknext/drizzle',
|
|
46
|
+
visibility: 'public',
|
|
47
|
+
role: 'optional Drizzle adapter',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
slug: 'prisma',
|
|
51
|
+
name: '@stacknext/prisma',
|
|
52
|
+
visibility: 'public',
|
|
53
|
+
role: 'optional Prisma adapter',
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
slug: 'mcp',
|
|
57
|
+
name: '@stacknext/mcp',
|
|
58
|
+
visibility: 'internal',
|
|
59
|
+
role: 'read-only MCP server',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
slug: 'dashboard',
|
|
63
|
+
name: '@stacknext/dashboard',
|
|
64
|
+
visibility: 'internal',
|
|
65
|
+
role: 'static dashboard',
|
|
66
|
+
},
|
|
67
|
+
];
|
|
68
|
+
async function exists(file) {
|
|
69
|
+
try {
|
|
70
|
+
await access(file);
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
async function findPackageDir(projectDir, slug) {
|
|
78
|
+
let current = path.resolve(projectDir);
|
|
79
|
+
for (;;) {
|
|
80
|
+
const candidate = path.join(current, 'node_modules', '@stacknext', slug);
|
|
81
|
+
if (await exists(path.join(candidate, 'package.json')))
|
|
82
|
+
return candidate;
|
|
83
|
+
const parent = path.dirname(current);
|
|
84
|
+
if (parent === current)
|
|
85
|
+
return null;
|
|
86
|
+
current = parent;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
export async function discoverAgentPackages(projectDir) {
|
|
90
|
+
const found = [];
|
|
91
|
+
const root = path.resolve(projectDir);
|
|
92
|
+
for (const entry of PACKAGE_DOCS) {
|
|
93
|
+
const packageDir = await findPackageDir(root, entry.slug);
|
|
94
|
+
if (!packageDir)
|
|
95
|
+
continue;
|
|
96
|
+
const manifestFile = path.join(packageDir, 'package.json');
|
|
97
|
+
const docsFile = path.join(packageDir, 'docs', 'index.md');
|
|
98
|
+
if (!(await exists(docsFile)))
|
|
99
|
+
continue;
|
|
100
|
+
try {
|
|
101
|
+
const manifest = JSON.parse(await readFile(manifestFile, 'utf8'));
|
|
102
|
+
const name = typeof manifest.name === 'string' ? manifest.name : entry.name;
|
|
103
|
+
const version = typeof manifest.version === 'string' ? manifest.version : 'unknown';
|
|
104
|
+
const docsPath = path
|
|
105
|
+
.relative(root, docsFile)
|
|
106
|
+
.split(path.sep)
|
|
107
|
+
.join('/');
|
|
108
|
+
found.push({
|
|
109
|
+
name,
|
|
110
|
+
version,
|
|
111
|
+
docsPath,
|
|
112
|
+
visibility: entry.visibility,
|
|
113
|
+
role: entry.role,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
// An unreadable package manifest is not a reason to reference its docs.
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return found;
|
|
121
|
+
}
|
|
122
|
+
export function renderAgentRules(options) {
|
|
123
|
+
const lines = [
|
|
124
|
+
AGENT_RULES_BEGIN,
|
|
125
|
+
'# StackNext',
|
|
126
|
+
'',
|
|
127
|
+
`StackNext is installed in this project (CLI v${options.version}). Its`,
|
|
128
|
+
'version-matched documentation ships inside each installed npm package.',
|
|
129
|
+
'',
|
|
130
|
+
'Before using or changing a StackNext API:',
|
|
131
|
+
'',
|
|
132
|
+
];
|
|
133
|
+
const steps = [];
|
|
134
|
+
if (options.packages.length === 0) {
|
|
135
|
+
steps.push([
|
|
136
|
+
'No StackNext package docs were found under `node_modules`. Install',
|
|
137
|
+
'`@stacknext/cli` and the packages you use, then re-run',
|
|
138
|
+
'`stacknext init --agents`. Do not assume package APIs are available.',
|
|
139
|
+
].join('\n'));
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
const cli = options.packages.find((entry) => entry.name === '@stacknext/cli');
|
|
143
|
+
if (cli) {
|
|
144
|
+
steps.push(`Read \`${cli.docsPath}\` for the local documentation entry point.`);
|
|
145
|
+
}
|
|
146
|
+
const installed = options.packages
|
|
147
|
+
.map((entry) => `- \`${entry.docsPath}\` — ${entry.name} ${entry.version} (${entry.visibility}, ${entry.role})`)
|
|
148
|
+
.join('\n');
|
|
149
|
+
steps.push(`Read the package docs for every StackNext package involved in the task:\n${installed}`);
|
|
150
|
+
steps.push('Confirm the installed version in the package.json next to each\ndocumentation directory. Do not apply documentation for another version.');
|
|
151
|
+
}
|
|
152
|
+
steps.push('Prefer the local documentation over external docs or model memory.', 'Do not assume undocumented exports, configuration keys, internal\npackages or integrations exist.', 'For runtime investigation, use the StackNext MCP tools where available.\nStart with `get_project_summary`; the server is local and read-only.', 'Follow the installed `stacknext-debugging` Agent Skill for debugging and\nperformance workflows.', 'Treat diagnostic findings as evidence, not confirmed root causes, and\n`inconclusive` regression comparisons as inconclusive, not passes.', 'Verify changes against the installed implementation and tests where\navailable. Do not invent a fallback API when a package is absent.');
|
|
153
|
+
for (const [index, step] of steps.entries()) {
|
|
154
|
+
const [first, ...rest] = step.split('\n');
|
|
155
|
+
lines.push(`${index + 1}. ${first}`, ...rest.map((line) => ` ${line}`));
|
|
156
|
+
}
|
|
157
|
+
lines.push(AGENT_RULES_END);
|
|
158
|
+
return lines.join('\n');
|
|
159
|
+
}
|
|
160
|
+
function count(haystack, needle) {
|
|
161
|
+
return haystack.split(needle).length - 1;
|
|
162
|
+
}
|
|
163
|
+
function escapeRegExp(value) {
|
|
164
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
165
|
+
}
|
|
166
|
+
function detectNewline(source) {
|
|
167
|
+
return source.includes('\r\n') ? '\r\n' : '\n';
|
|
168
|
+
}
|
|
169
|
+
function withNewline(block, newline) {
|
|
170
|
+
return newline === '\n' ? block : block.replace(/\n/g, newline);
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Adds or replaces only the managed StackNext block. User content outside the
|
|
174
|
+
* markers is preserved exactly, including its line endings.
|
|
175
|
+
*/
|
|
176
|
+
export async function installAgentRules(projectDir, options) {
|
|
177
|
+
const file = path.join(projectDir, AGENTS_FILE_NAME);
|
|
178
|
+
const block = renderAgentRules(options);
|
|
179
|
+
let source;
|
|
180
|
+
let created = false;
|
|
181
|
+
try {
|
|
182
|
+
source = await readFile(file, 'utf8');
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
if (error.code !== 'ENOENT')
|
|
186
|
+
throw error;
|
|
187
|
+
source = '';
|
|
188
|
+
created = true;
|
|
189
|
+
}
|
|
190
|
+
const begins = count(source, AGENT_RULES_BEGIN);
|
|
191
|
+
const ends = count(source, AGENT_RULES_END);
|
|
192
|
+
if (begins > 1 || ends > 1) {
|
|
193
|
+
throw new Error(`${file} contains more than one StackNext managed block. Remove the duplicates before running init again.`);
|
|
194
|
+
}
|
|
195
|
+
if (begins !== ends) {
|
|
196
|
+
throw new Error(`${file} contains an incomplete StackNext managed block. Restore or remove the missing marker before running init again.`);
|
|
197
|
+
}
|
|
198
|
+
const newline = detectNewline(source);
|
|
199
|
+
let next;
|
|
200
|
+
let status;
|
|
201
|
+
if (begins === 1 && ends === 1) {
|
|
202
|
+
const pattern = new RegExp(`${escapeRegExp(AGENT_RULES_BEGIN)}[\\s\\S]*?${escapeRegExp(AGENT_RULES_END)}`);
|
|
203
|
+
if (!pattern.test(source)) {
|
|
204
|
+
throw new Error(`${file} has StackNext markers in an unexpected order. Fix them manually before running init again.`);
|
|
205
|
+
}
|
|
206
|
+
next = source.replace(pattern, withNewline(block, newline));
|
|
207
|
+
status = next === source ? 'unchanged' : 'updated';
|
|
208
|
+
}
|
|
209
|
+
else if (created || source.trim() === '') {
|
|
210
|
+
next = `${withNewline(block, newline)}${newline}`;
|
|
211
|
+
status = 'created';
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
const separator = source.endsWith(`${newline}${newline}`)
|
|
215
|
+
? ''
|
|
216
|
+
: source.endsWith(newline)
|
|
217
|
+
? newline
|
|
218
|
+
: `${newline}${newline}`;
|
|
219
|
+
next = `${source}${separator}${withNewline(block, newline)}${newline}`;
|
|
220
|
+
status = 'appended';
|
|
221
|
+
}
|
|
222
|
+
if (next !== source)
|
|
223
|
+
await writeFile(file, next);
|
|
224
|
+
return { file, status, changed: next !== source };
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -5,6 +5,8 @@ export declare function manualPatchSnippet(): string;
|
|
|
5
5
|
export declare function fileExists(file: string): Promise<boolean>;
|
|
6
6
|
export interface InitOptions {
|
|
7
7
|
install?: boolean;
|
|
8
|
+
agents?: boolean;
|
|
9
|
+
skipAgents?: boolean;
|
|
8
10
|
}
|
|
9
11
|
export declare function runInit(options: InitOptions, cwd?: string): Promise<number>;
|
|
10
12
|
export declare function registerInitCommand(program: Command, cwd: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAuBxC,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,CA+CpE;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAMlE;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAU3C;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO/D;AAoBD,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,SAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiJxF;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAWvE"}
|
package/dist/commands/init.js
CHANGED
|
@@ -4,6 +4,8 @@ import path from 'node:path';
|
|
|
4
4
|
import { CONFIG_FILE_NAME, configPath, loadConfig } from '@stacknext/core/config-file';
|
|
5
5
|
import { detectProject, installCommand, isStackNextIntegrated, } from '../project.js';
|
|
6
6
|
import { printCheck, printSection, style } from '../output.js';
|
|
7
|
+
import { CLI_VERSION } from '../version.js';
|
|
8
|
+
import { discoverAgentPackages, installAgentRules } from '../agents.js';
|
|
7
9
|
function instrumentationTarget(project) {
|
|
8
10
|
const inSrc = project.appDir?.startsWith('src/') === true ||
|
|
9
11
|
(project.appDir === null && project.srcDir);
|
|
@@ -183,6 +185,24 @@ export async function runInit(options, cwd = process.cwd()) {
|
|
|
183
185
|
if (project.hasPrisma) {
|
|
184
186
|
printCheck('warn', 'Prisma detected', 'Add instrumentPrismaClient() from @stacknext/prisma after creating PrismaClient.');
|
|
185
187
|
}
|
|
188
|
+
if (options.agents && !options.skipAgents) {
|
|
189
|
+
const packages = await discoverAgentPackages(project.dir);
|
|
190
|
+
const installed = await installAgentRules(project.dir, {
|
|
191
|
+
version: CLI_VERSION,
|
|
192
|
+
packages,
|
|
193
|
+
});
|
|
194
|
+
if (installed.status === 'unchanged') {
|
|
195
|
+
printCheck('pass', `${installed.file} is up to date`, 'managed StackNext block');
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
const action = installed.status === 'created'
|
|
199
|
+
? 'Created'
|
|
200
|
+
: installed.status === 'appended'
|
|
201
|
+
? 'Appended StackNext rules to'
|
|
202
|
+
: 'Updated StackNext rules in';
|
|
203
|
+
printCheck('pass', `${action} ${path.relative(project.dir, installed.file)}`, 'managed block only');
|
|
204
|
+
}
|
|
205
|
+
}
|
|
186
206
|
printSection('Next steps');
|
|
187
207
|
console.log(`1. Run ${style.cyan('stacknext dev')} (or ${style.cyan('stacknext dev --install')} if packages are missing).`);
|
|
188
208
|
console.log(`2. Open the dashboard and make a request to your app.`);
|
|
@@ -195,6 +215,8 @@ export function registerInitCommand(program, cwd) {
|
|
|
195
215
|
.command('init')
|
|
196
216
|
.description('Configure a Next.js project for StackNext')
|
|
197
217
|
.option('--install', 'install @stacknext/next with the detected package manager')
|
|
218
|
+
.option('--agents', 'add or update the managed StackNext block in AGENTS.md')
|
|
219
|
+
.option('--skip-agents', 'skip the AGENTS.md managed block (the default)')
|
|
198
220
|
.action(async (options) => {
|
|
199
221
|
const code = await runInit(options, cwd);
|
|
200
222
|
if (code !== 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC9D,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACtF,OAAO,EACL,aAAa,EACb,cAAc,EACd,qBAAqB,GAEtB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const CLI_VERSION = "0.
|
|
1
|
+
export declare const CLI_VERSION = "0.9.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const CLI_VERSION = '0.
|
|
1
|
+
export const CLI_VERSION = '0.9.0';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stacknext/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Local-first runtime debugging, diagnostics and Playwright regression testing for Next.js",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -22,11 +22,11 @@
|
|
|
22
22
|
"./package.json": "./package.json"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@stacknext/core": "0.
|
|
26
|
-
"@stacknext/dashboard": "0.
|
|
27
|
-
"@stacknext/diagnostics": "0.
|
|
28
|
-
"@stacknext/mcp": "0.
|
|
29
|
-
"@stacknext/regression": "0.
|
|
25
|
+
"@stacknext/core": "0.9.0",
|
|
26
|
+
"@stacknext/dashboard": "0.9.0",
|
|
27
|
+
"@stacknext/diagnostics": "0.9.0",
|
|
28
|
+
"@stacknext/mcp": "0.9.0",
|
|
29
|
+
"@stacknext/regression": "0.9.0",
|
|
30
30
|
"commander": "14.0.3",
|
|
31
31
|
"zod": "4.6.7"
|
|
32
32
|
},
|
|
@@ -4,7 +4,7 @@ description: Investigate Next.js App Router runtime behavior with StackNext's lo
|
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: Next.js 15 or 16 App Router on the Node.js runtime, with a local StackNext collector. No cloud account, AI API key, or remote service is required.
|
|
6
6
|
metadata:
|
|
7
|
-
version: "0.
|
|
7
|
+
version: "0.9.0"
|
|
8
8
|
author: StackNext
|
|
9
9
|
---
|
|
10
10
|
|