kryptheon 0.1.36 → 0.1.38
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/bin/kryptheon.js +60 -1
- package/kryptheon-dashboard-page.js +3 -5
- package/package.json +2 -2
package/bin/kryptheon.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
1
|
+
#!/usr/bin/env node
|
|
2
2
|
// The kryptheon CLI. A thin wrapper so nobody has to remember Playwright's
|
|
3
3
|
// command line or edit a config file. Everything here shells out to the
|
|
4
4
|
// Playwright binary that ships with this package.
|
|
@@ -2563,9 +2563,68 @@ function dashboardAlreadyRunning(port) {
|
|
|
2563
2563
|
});
|
|
2564
2564
|
}
|
|
2565
2565
|
|
|
2566
|
+
/**
|
|
2567
|
+
* The dashboard, started from the home folder: kept in a kryptheon-tests
|
|
2568
|
+
* folder there, the one record already uses - set up the first time, asked
|
|
2569
|
+
* once, and simply opened every time after.
|
|
2570
|
+
*
|
|
2571
|
+
* Found when the first person paid: the site's Kryptheon.cmd download was
|
|
2572
|
+
* flagged as dangerous by the browser and by Windows, and would not open
|
|
2573
|
+
* once saved. Its replacement is Win+R and one pasted line - and Win+R starts
|
|
2574
|
+
* in the home folder, where dashboard used to refuse to run at all.
|
|
2575
|
+
*/
|
|
2576
|
+
async function dashboardFromHome(plan) {
|
|
2577
|
+
const ready = project.hasPackageJson(plan.into) && project.kryptheonInstalledIn(plan.into);
|
|
2578
|
+
if (!ready) {
|
|
2579
|
+
console.log('');
|
|
2580
|
+
console.log(' Kryptheon keeps your recordings and results in a folder of their own:');
|
|
2581
|
+
console.log('');
|
|
2582
|
+
console.log(' ' + plan.into);
|
|
2583
|
+
console.log('');
|
|
2584
|
+
console.log(' The first time, I make it and install kryptheon in it (about 20MB).');
|
|
2585
|
+
console.log(' Nothing else on this computer is touched.');
|
|
2586
|
+
console.log('');
|
|
2587
|
+
const question = project.setupQuestion(plan);
|
|
2588
|
+
const yes = process.stdin.isTTY
|
|
2589
|
+
? project.answeredYes(await askLine(question.text), question.yesByDefault)
|
|
2590
|
+
: question.yesByDefault;
|
|
2591
|
+
if (!yes) {
|
|
2592
|
+
console.log('');
|
|
2593
|
+
console.log(' Nothing was changed. To keep them beside your app instead, open a');
|
|
2594
|
+
console.log(' terminal in its folder and run: npx kryptheon@latest dashboard');
|
|
2595
|
+
console.log('');
|
|
2596
|
+
return 1;
|
|
2597
|
+
}
|
|
2598
|
+
try {
|
|
2599
|
+
fs.mkdirSync(plan.into, { recursive: true });
|
|
2600
|
+
} catch (err) {
|
|
2601
|
+
console.error('');
|
|
2602
|
+
console.error(' Could not make the folder: ' + plan.into);
|
|
2603
|
+
console.error('');
|
|
2604
|
+
return 1;
|
|
2605
|
+
}
|
|
2606
|
+
if (!makeReady(plan.into)) return 1;
|
|
2607
|
+
}
|
|
2608
|
+
// Run again from inside that folder, as record does: every path in this
|
|
2609
|
+
// file is worked out once, from the folder the command started in.
|
|
2610
|
+
const child = spawn(process.execPath, [__filename, 'dashboard'], { cwd: plan.into, stdio: 'inherit' });
|
|
2611
|
+
const wait = () => {};
|
|
2612
|
+
process.on('SIGINT', wait);
|
|
2613
|
+
process.on('SIGTERM', wait);
|
|
2614
|
+
const code = await new Promise((resolve) => {
|
|
2615
|
+
child.on('error', () => resolve(1));
|
|
2616
|
+
child.on('close', (status) => resolve(status === null ? 1 : status));
|
|
2617
|
+
});
|
|
2618
|
+
process.removeListener('SIGINT', wait);
|
|
2619
|
+
process.removeListener('SIGTERM', wait);
|
|
2620
|
+
return code;
|
|
2621
|
+
}
|
|
2622
|
+
|
|
2566
2623
|
async function dashboardCommand() {
|
|
2567
2624
|
const here = project.inspectProject(USER_DIR);
|
|
2568
2625
|
if (!here.ok) {
|
|
2626
|
+
const plan = project.setupPlan(USER_DIR);
|
|
2627
|
+
if (plan.action === 'home') return await dashboardFromHome(plan);
|
|
2569
2628
|
for (const line of project.noProjectLines(here)) console.error(line);
|
|
2570
2629
|
return 1;
|
|
2571
2630
|
}
|
|
@@ -624,12 +624,10 @@
|
|
|
624
624
|
{ id: 'claude-code', name: 'Claude Code', tested: true,
|
|
625
625
|
steps: ['Run this once, in any terminal. That is the whole set-up.'],
|
|
626
626
|
code: 'claude mcp add kryptheon -- npx -y kryptheon-mcp', file: 'terminal' },
|
|
627
|
+
// No "Add to Cursor" button: it was never seen working end to end, and
|
|
628
|
+
// the person asked for it to go. By hand, as for every other tool.
|
|
627
629
|
{ id: 'cursor', name: 'Cursor', tested: false,
|
|
628
|
-
|
|
629
|
-
// where Cursor does not open - not installed, or blocked - it shows the
|
|
630
|
-
// config to paste, rather than a click that does nothing at all.
|
|
631
|
-
oneClick: { href: 'https://cursor.com/en/install-mcp?name=kryptheon&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsImtyeXB0aGVvbi1tY3AiXX0=', label: 'Add to Cursor' },
|
|
632
|
-
steps: ['Press Add to Cursor. Cursor\'s page opens and hands it to Cursor, which asks you to confirm - say yes. Cursor has to be installed on this computer.', 'Or by hand: paste the config into mcp.json in the .cursor folder of your home folder.'],
|
|
630
|
+
steps: ['Open Cursor Settings, then MCP, and press Add new MCP server - Cursor opens its mcp.json.', 'Paste the config and save. It lives in the .cursor folder of your home folder.'],
|
|
633
631
|
code: MCP_JSON, file: '~/.cursor/mcp.json' },
|
|
634
632
|
{ id: 'vscode', name: 'VS Code', tested: false,
|
|
635
633
|
oneClick: { href: 'vscode:mcp/install?' + encodeURIComponent(JSON.stringify({ name: 'kryptheon', command: 'npx', args: ['-y', 'kryptheon-mcp'] })), label: 'Install in VS Code' },
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kryptheon",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.38",
|
|
4
4
|
"description": "Record what you do in your app and get plain-language reports when it breaks.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"type": "commonjs",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"@playwright/test": "^1.62.1"
|
|
53
53
|
},
|
|
54
54
|
"scripts": {
|
|
55
|
-
"check": "node kryptheon-store.check.js && node kryptheon-code.check.js && node kryptheon-constdata.check.js && node kryptheon-accept.check.js && node kryptheon-keys.check.js && node kryptheon-dashboard.check.js && node kryptheon-autostart.check.js && node kryptheon-changes.check.js && node kryptheon-look.check.js && node kryptheon-verify.check.js && node kryptheon-recheck.check.js && node kryptheon-reporter.check.js && node kryptheon-signature.check.js && node kryptheon-signature.stream.check.js && node kryptheon-signature.baseline.check.js && node kryptheon-signature.settle.check.js && node kryptheon-signature.number.check.js && node kryptheon-env.check.js && node kryptheon-watchdog.check.js && node kryptheon-phone.check.js && node kryptheon-record.check.js && node kryptheon-selectors.check.js && node kryptheon-recordings.check.js && node kryptheon-cleanup.check.js && node kryptheon-orphan.check.js && node kryptheon-project.check.js && node kryptheon-setup.check.js && node kryptheon-browser.check.js && node kryptheon-heal.check.js && node kryptheon-load.check.js && node kryptheon-package.check.js",
|
|
55
|
+
"check": "node kryptheon-store.check.js && node kryptheon-code.check.js && node kryptheon-constdata.check.js && node kryptheon-accept.check.js && node kryptheon-keys.check.js && node kryptheon-dashboard.check.js && node kryptheon-autostart.check.js && node kryptheon-changes.check.js && node kryptheon-look.check.js && node kryptheon-verify.check.js && node kryptheon-recheck.check.js && node kryptheon-reporter.check.js && node kryptheon-signature.check.js && node kryptheon-signature.stream.check.js && node kryptheon-signature.baseline.check.js && node kryptheon-signature.settle.check.js && node kryptheon-signature.number.check.js && node kryptheon-env.check.js && node kryptheon-watchdog.check.js && node kryptheon-phone.check.js && node kryptheon-homedash.check.js && node kryptheon-record.check.js && node kryptheon-selectors.check.js && node kryptheon-recordings.check.js && node kryptheon-cleanup.check.js && node kryptheon-orphan.check.js && node kryptheon-project.check.js && node kryptheon-setup.check.js && node kryptheon-browser.check.js && node kryptheon-heal.check.js && node kryptheon-load.check.js && node kryptheon-package.check.js",
|
|
56
56
|
"check:store": "node kryptheon-store.check.js",
|
|
57
57
|
"check:code": "node kryptheon-code.check.js",
|
|
58
58
|
"check:constdata": "node kryptheon-constdata.check.js",
|