skalpel 3.2.5 → 3.2.7
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/INSTALL.md +22 -1
- package/package.json +6 -6
- package/postinstall/lib/launch.js +12 -4
package/INSTALL.md
CHANGED
|
@@ -47,7 +47,28 @@ Post-W4 (OAuth port): first run is a guided TUI walkthrough plus browser-loopbac
|
|
|
47
47
|
|
|
48
48
|
This flow corresponds to Journey 1 — First launch, fresh authentication — in `SPEC.md`. That narrative describes what the user feels at each step; this document describes what the install machinery actually does.
|
|
49
49
|
|
|
50
|
-
If the user runs `skalpel` without first running `skalpel login`, the walkthrough prompts them to sign in inline (Enter), skip for now (`s`), turn interception off (`o`), or quit (`q`). To sign out of an existing account on this machine, run `skalpel logout` from a shell — the CLI revokes the backend session (best-effort) and removes `auth.json` via `internal/auth.Delete`.
|
|
50
|
+
If the user runs `skalpel` without first running `skalpel login`, the walkthrough prompts them to sign in inline (Enter), skip for now (`s`), turn interception off (`o`), or quit (`q`). The walkthrough also surfaces the website onboarding URL (`https://launch.skalpel.ai/signup`) and notes that a wizard activation command can be pasted directly — npm frequently hides `postinstall` output, so this CLI-side hint is where self-serve `npm install -g` users reliably learn how to activate. To sign out of an existing account on this machine, run `skalpel logout` from a shell — the CLI revokes the backend session (best-effort) and removes `auth.json` via `internal/auth.Delete`.
|
|
51
|
+
|
|
52
|
+
### Guided activation vs. self-serve global install
|
|
53
|
+
|
|
54
|
+
The primary, guided path is the website signup wizard, which mints a one-time, version-pinned-to-`latest` command:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
npx --yes skalpel@<latest> login --activation <token>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
`login --activation` is **auth-only**: it claims the token, writes `auth.json`, prints a next-step hint, and exits without launching the TUI (the magic flow is a deliberate terminal handoff). Browser-loopback `skalpel login` is unchanged and still lands the user on the dashboard.
|
|
61
|
+
|
|
62
|
+
A user who independently runs `npm install -g skalpel` is still supported: `postinstall` prints a best-effort pointer to `https://launch.skalpel.ai/signup`, and the first `skalpel` run repeats that pointer where output is guaranteed.
|
|
63
|
+
|
|
64
|
+
### `skalpel setup` — detect and wrap coding agents
|
|
65
|
+
|
|
66
|
+
After authentication, `skalpel setup` detects which coding-agent harnesses are installed (cross-platform on Linux, Windows, and macOS) via PATH and per-user config probes:
|
|
67
|
+
|
|
68
|
+
- **Claude Code** and **Codex CLI** — detected and wrappable.
|
|
69
|
+
- **Cursor** — detected for display only (no Skalpel wrapper today).
|
|
70
|
+
|
|
71
|
+
The user opts into which detected agents to wrap. `setup` resolves the correct shell startup file for the current OS + shell (zsh/bash/fish rc files, or the PowerShell `$PROFILE` on Windows), writes a managed fenced block (identical fences to the install-time block, so `skalpel uninstall` removes either), and prints exactly which file changed plus undo instructions (`skalpel uninstall`, or `SKALPEL_NO_AGENT_WRAP=1` to disable wrapping). It never launches the TUI. On an unknown OS/shell it prints manual instructions instead of writing.
|
|
51
72
|
|
|
52
73
|
Historical note: prior versions of skalpel supported pasting a `sk-skalpel-*` API key copied from the web dashboard as an alternative to `skalpel login`. The W4 OAuth-port grep-delete removed both the api_key-paste wizard and the daemon-side api_key sending path. Users on stale auth.json files (api_key-only, no Cognito bundle) need to run `skalpel login` once to refresh.
|
|
53
74
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skalpel",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.7",
|
|
4
4
|
"description": "Skalpel — local proxy and TUI for coding agents (skalpel + skalpeld bundle).",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://skalpel.ai",
|
|
@@ -58,10 +58,10 @@
|
|
|
58
58
|
"x64"
|
|
59
59
|
],
|
|
60
60
|
"optionalDependencies": {
|
|
61
|
-
"@skalpelai/skalpel-darwin-arm64": "3.2.
|
|
62
|
-
"@skalpelai/skalpel-darwin-x64": "3.2.
|
|
63
|
-
"@skalpelai/skalpel-linux-arm64": "3.2.
|
|
64
|
-
"@skalpelai/skalpel-linux-x64": "3.2.
|
|
65
|
-
"@skalpelai/skalpel-win32-x64": "3.2.
|
|
61
|
+
"@skalpelai/skalpel-darwin-arm64": "3.2.7",
|
|
62
|
+
"@skalpelai/skalpel-darwin-x64": "3.2.7",
|
|
63
|
+
"@skalpelai/skalpel-linux-arm64": "3.2.7",
|
|
64
|
+
"@skalpelai/skalpel-linux-x64": "3.2.7",
|
|
65
|
+
"@skalpelai/skalpel-win32-x64": "3.2.7"
|
|
66
66
|
}
|
|
67
67
|
}
|
|
@@ -15,16 +15,24 @@
|
|
|
15
15
|
const path = require('path');
|
|
16
16
|
const log = require('./log');
|
|
17
17
|
|
|
18
|
+
// ONBOARDING_URL is the canonical first-run destination. The guided
|
|
19
|
+
// product flow is the website signup wizard (which mints a one-time
|
|
20
|
+
// activation command), not `npm install -g`. We surface it here so a
|
|
21
|
+
// self-serve global install still has a clean path to activation.
|
|
22
|
+
const ONBOARDING_URL = 'https://launch.skalpel.ai/signup';
|
|
23
|
+
|
|
18
24
|
function run({ dryRun }) {
|
|
19
|
-
const hint =
|
|
20
|
-
'all set — run `skalpel` to open the guided TUI walkthrough (sign-in, daemon status, toggle tips)';
|
|
25
|
+
const hint = `next: activate your account at ${ONBOARDING_URL}`;
|
|
21
26
|
if (dryRun) {
|
|
22
27
|
log.dryRun(`step 5 launch: would print: ${hint}`);
|
|
23
28
|
return { launched: false, dryRun: true };
|
|
24
29
|
}
|
|
30
|
+
// Minimal, best-effort onboarding pointer. npm frequently hides
|
|
31
|
+
// postinstall output, so the CLI's first-run gate repeats this hint
|
|
32
|
+
// (see cmd/skalpel/signin_gate.go) where output is guaranteed.
|
|
25
33
|
log.info(hint);
|
|
26
|
-
log.info('
|
|
27
|
-
return { launched: false, deferred: true };
|
|
34
|
+
log.info('already have a wizard command? paste it in your terminal, or run `skalpel login`.');
|
|
35
|
+
return { launched: false, deferred: true, onboardingUrl: ONBOARDING_URL };
|
|
28
36
|
}
|
|
29
37
|
|
|
30
38
|
module.exports = { run };
|