jevctl 0.2.0 → 0.2.2
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/CHANGELOG.md +16 -0
- package/README.md +1 -0
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/auth.d.ts +1 -1
- package/dist/commands/auth.js +41 -17
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/update.d.ts +16 -0
- package/dist/commands/update.js +73 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/provider.js +8 -5
- package/dist/provider.js.map +1 -1
- package/docs/auth.md +1 -1
- package/docs/update.md +17 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,22 @@ breaking changes to flags or JSON output; they are called out below.
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.2.2] - 2026-09-19
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- `jev update [--check]`: checks npm for a newer `jevctl` release and installs it globally with `npm install -g jevctl@latest`; `--check` reports without installing.
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- The "no credentials" and provider-specific credential errors now hint at `jev auth login` / `jev auth login openrouter`.
|
|
19
|
+
|
|
20
|
+
## [0.2.1] - 2026-09-19
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- `jev auth login`: the key prompt now echoes `*` per keystroke instead of muting all output, so keystrokes are visibly registered. Backspace edits, Ctrl+C aborts cleanly.
|
|
25
|
+
|
|
10
26
|
## [0.2.0] - 2026-09-18
|
|
11
27
|
|
|
12
28
|
### Changed
|
package/README.md
CHANGED
|
@@ -56,6 +56,7 @@ Each command has its own page with options, output fields, and examples.
|
|
|
56
56
|
| `jev auth` | Store the API key in the keychain instead of exporting it | [docs/auth.md](docs/auth.md) |
|
|
57
57
|
| `jev config` | Show or edit settings; check which key source is in use | [docs/config.md](docs/config.md) |
|
|
58
58
|
| `jev models` | List the models your account can use | [docs/config.md#models](docs/config.md#models) |
|
|
59
|
+
| `jev update` | Check npm for a newer jevctl release and install it | [docs/update.md](docs/update.md) |
|
|
59
60
|
|
|
60
61
|
## Conventions
|
|
61
62
|
|
package/dist/cli.js
CHANGED
|
@@ -16,6 +16,7 @@ import { registerModels } from "./commands/models.js";
|
|
|
16
16
|
import { registerRerank } from "./commands/rerank.js";
|
|
17
17
|
import { registerRoute } from "./commands/route.js";
|
|
18
18
|
import { registerScreen } from "./commands/screen.js";
|
|
19
|
+
import { registerUpdate } from "./commands/update.js";
|
|
19
20
|
import { registerVerify } from "./commands/verify.js";
|
|
20
21
|
import { buildContext } from "./context.js";
|
|
21
22
|
import { CliError, describeError, EXIT } from "./errors.js";
|
|
@@ -52,6 +53,7 @@ const COMMANDS = {
|
|
|
52
53
|
models: { group: "Account", summary: "List the models available to your account" },
|
|
53
54
|
auth: { group: "Account", summary: "Store, inspect, or remove API keys (keychain or 0600 file)" },
|
|
54
55
|
config: { group: "Account", summary: "Show or edit the jev configuration file" },
|
|
56
|
+
update: { group: "Account", summary: "Check npm for a newer jevctl release and install it" },
|
|
55
57
|
};
|
|
56
58
|
const HELP_FOOTER = `
|
|
57
59
|
Examples:
|
|
@@ -124,6 +126,7 @@ export function createProgram() {
|
|
|
124
126
|
registerModels(program, run);
|
|
125
127
|
registerAuth(program, run);
|
|
126
128
|
registerConfig(program, run);
|
|
129
|
+
registerUpdate(program, run, version);
|
|
127
130
|
for (const cmd of program.commands) {
|
|
128
131
|
const meta = COMMANDS[cmd.name()];
|
|
129
132
|
if (!meta)
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,iDAAiD;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAyC,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAE5D,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAA6C,CAAC;AAExG,4GAA4G;AAC5G,MAAM,QAAQ,GAAuD;IACnE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,kEAAkE,EAAE;IAC3G,MAAM,EAAE;QACN,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,2EAA2E;KACrF;IACD,QAAQ,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,6DAA6D,EAAE;IACxG,OAAO,EAAE;QACP,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,8EAA8E;KACxF;IACD,KAAK,EAAE;QACL,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,wEAAwE;KAClF;IACD,KAAK,EAAE;QACL,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,sEAAsE;KAChF;IACD,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,4DAA4D,EAAE;IAClG,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,0DAA0D,EAAE;IAC/F,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,yDAAyD,EAAE;IAChG,OAAO,EAAE;QACP,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,6EAA6E;KACvF;IACD,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,mEAAmE,EAAE;IAC3G,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,2CAA2C,EAAE;IAClF,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,4DAA4D,EAAE;IACjG,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,yCAAyC,EAAE;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,iDAAiD;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAyC,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAE5D,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAA6C,CAAC;AAExG,4GAA4G;AAC5G,MAAM,QAAQ,GAAuD;IACnE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,kEAAkE,EAAE;IAC3G,MAAM,EAAE;QACN,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,2EAA2E;KACrF;IACD,QAAQ,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,6DAA6D,EAAE;IACxG,OAAO,EAAE;QACP,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,8EAA8E;KACxF;IACD,KAAK,EAAE;QACL,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,wEAAwE;KAClF;IACD,KAAK,EAAE;QACL,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,sEAAsE;KAChF;IACD,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,4DAA4D,EAAE;IAClG,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,0DAA0D,EAAE;IAC/F,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,yDAAyD,EAAE;IAChG,OAAO,EAAE;QACP,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,6EAA6E;KACvF;IACD,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,mEAAmE,EAAE;IAC3G,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,2CAA2C,EAAE;IAClF,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,4DAA4D,EAAE;IACjG,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,yCAAyC,EAAE;IAChF,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,qDAAqD,EAAE;CAC7F,CAAC;AAEF,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;8GAkB0F,CAAC;AAE/G,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO;SACJ,IAAI,CAAC,KAAK,CAAC;SACX,WAAW,CAAC,WAAW,CAAC;SACxB,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,mBAAmB,CAAC;SACtD,kBAAkB,CAAC,6BAA6B,CAAC;SACjD,wBAAwB,EAAE;SAC1B,aAAa,CAAC;QACb,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,GAAG,EAAE,GAAG,CAAC;QACvD,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QACvC,gBAAgB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7C,mBAAmB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QAChD,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7C,iBAAiB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;KACjD,CAAC;SACD,YAAY,CAAC,SAAS,CAAC;SACvB,MAAM,CAAC,QAAQ,EAAE,+CAA+C,CAAC;SACjE,MAAM,CAAC,MAAM,EAAE,uCAAuC,CAAC;SACvD,MAAM,CAAC,gBAAgB,EAAE,oCAAoC,CAAC;SAC9D,MAAM,CAAC,gBAAgB,EAAE,uEAAuE,CAAC;SACjG,MAAM,CAAC,aAAa,EAAE,4CAA4C,CAAC;SACnE,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC;SAC9C,YAAY,CAAC,sBAAsB,CAAC;SACpC,MAAM,CAAC,oBAAoB,EAAE,0CAA0C,CAAC;SACxE,MAAM,CAAC,uBAAuB,EAAE,2CAA2C,CAAC;SAC5E,MAAM,CAAC,gBAAgB,EAAE,qCAAqC,CAAC;SAC/D,MAAM,CAAC,WAAW,EAAE,uEAAuE,CAAC;SAC5F,YAAY,CAAC,UAAU,CAAC;SACxB,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAErC,MAAM,GAAG,GAAG,KAAK,EAAE,EAA4C,EAAE,GAAY,EAAE,EAAE;QAC/E,MAAM,KAAK,GAAG,GAAG,CAAC,eAAe,EAAe,CAAC;QACjD,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,IAAI,KAAK,IAAI,CAAC,EAAE;YAAE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAChD,CAAC,CAAC;IAEF,mDAAmD;IACnD,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC7B,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC7B,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC/B,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC9B,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC5B,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC5B,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC1B,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC3B,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC7B,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC9B,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC5B,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC7B,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC3B,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC7B,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAEtC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAChF,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACxD,CAAC;IACD,OAAO;SACJ,WAAW,CAAC,KAAK,CAAC;SAClB,OAAO,CAAC,gBAAgB,CAAC;SACzB,OAAO,CAAC,yBAAyB,CAAC;SAClC,WAAW,CAAC,8EAA8E,CAAC;SAC3F,SAAS,CAAC,UAAU,CAAC;SACrB,MAAM,CAAC,CAAC,IAAwB,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAChF,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,QAAQ,CAAC,oBAAoB,IAAI,iCAAiC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACvG,MAAM,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IACL,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAI,GAAa,OAAO,CAAC,IAAI;IACtD,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC;QAC5C,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;YAC9C,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrD,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAChC,CAAC;QACD,IAAI,KAAK,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,KAAK;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;IACzF,CAAC;AACH,CAAC;AAED,MAAM,IAAI,EAAE,CAAC"}
|
package/dist/commands/auth.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
2
|
import type { CommandContext } from "../context.js";
|
|
3
3
|
import { type CredentialProvider } from "../credentials.js";
|
|
4
|
-
/** Prompt for a secret
|
|
4
|
+
/** Prompt for a secret, echoing `*` per keystroke. Falls back to reading one line from a pipe. */
|
|
5
5
|
export declare function promptSecret(prompt: string): Promise<string>;
|
|
6
6
|
export declare function validateKey(provider: CredentialProvider, key: string): void;
|
|
7
7
|
export declare function authLogin(providerName: string | undefined, flags: {
|
package/dist/commands/auth.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { createInterface } from "node:readline";
|
|
2
|
-
import { Writable } from "node:stream";
|
|
3
1
|
import { CREDENTIAL_PROVIDERS, ENV_VAR, resolveCredentials, resolveStore, } from "../credentials.js";
|
|
4
2
|
import { CliError, EXIT } from "../errors.js";
|
|
5
3
|
import { readStdin } from "../input.js";
|
|
@@ -12,23 +10,49 @@ function providerArg(raw) {
|
|
|
12
10
|
}
|
|
13
11
|
return p;
|
|
14
12
|
}
|
|
15
|
-
/** Prompt for a secret
|
|
13
|
+
/** Prompt for a secret, echoing `*` per keystroke. Falls back to reading one line from a pipe. */
|
|
16
14
|
export async function promptSecret(prompt) {
|
|
17
15
|
if (!process.stdin.isTTY)
|
|
18
16
|
return readStdin("API key").split(/\r?\n/)[0]?.trim() ?? "";
|
|
19
|
-
const muted = new Writable({
|
|
20
|
-
write(_chunk, _enc, cb) {
|
|
21
|
-
cb();
|
|
22
|
-
},
|
|
23
|
-
});
|
|
24
|
-
const rl = createInterface({ input: process.stdin, output: muted, terminal: true });
|
|
25
17
|
process.stderr.write(prompt);
|
|
26
|
-
return new Promise((resolve) => {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
18
|
+
return new Promise((resolve, reject) => {
|
|
19
|
+
const stdin = process.stdin;
|
|
20
|
+
const wasRaw = stdin.isRaw;
|
|
21
|
+
stdin.setRawMode(true);
|
|
22
|
+
stdin.resume();
|
|
23
|
+
stdin.setEncoding("utf8");
|
|
24
|
+
let input = "";
|
|
25
|
+
const cleanup = () => {
|
|
26
|
+
stdin.removeListener("data", onData);
|
|
27
|
+
stdin.setRawMode(wasRaw ?? false);
|
|
28
|
+
stdin.pause();
|
|
29
|
+
};
|
|
30
|
+
const onData = (chunk) => {
|
|
31
|
+
for (const char of chunk) {
|
|
32
|
+
if (char === "\r" || char === "\n") {
|
|
33
|
+
cleanup();
|
|
34
|
+
process.stderr.write("\n");
|
|
35
|
+
resolve(input.trim());
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (char === "\u0003") {
|
|
39
|
+
cleanup();
|
|
40
|
+
process.stderr.write("\n");
|
|
41
|
+
reject(new CliError("Aborted."));
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (char === "\u007f" || char === "\b") {
|
|
45
|
+
if (input.length > 0) {
|
|
46
|
+
input = input.slice(0, -1);
|
|
47
|
+
process.stderr.write("\b \b");
|
|
48
|
+
}
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
input += char;
|
|
52
|
+
process.stderr.write("*");
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
stdin.on("data", onData);
|
|
32
56
|
});
|
|
33
57
|
}
|
|
34
58
|
export function validateKey(provider, key) {
|
|
@@ -44,7 +68,7 @@ export async function authLogin(providerName, flags, ctx, env = process.env) {
|
|
|
44
68
|
const store = resolveStore(env);
|
|
45
69
|
const key = flags.keyStdin
|
|
46
70
|
? (readStdin("API key").split(/\r?\n/)[0]?.trim() ?? "")
|
|
47
|
-
: await promptSecret(`Paste your ${provider} API key
|
|
71
|
+
: await promptSecret(`Paste your ${provider} API key: `);
|
|
48
72
|
validateKey(provider, key);
|
|
49
73
|
store.set(provider, key);
|
|
50
74
|
const note = env[ENV_VAR[provider]]
|
|
@@ -101,7 +125,7 @@ export function registerAuth(program, run) {
|
|
|
101
125
|
.description("Store the API key in the OS keychain (or a 0600 file) instead of exporting it.");
|
|
102
126
|
auth
|
|
103
127
|
.command("login")
|
|
104
|
-
.description("Prompt for a key (
|
|
128
|
+
.description("Prompt for a key (masked input) and store it. Reads one line from stdin when piped or with --key-stdin.")
|
|
105
129
|
.argument("[provider]", "typesafe (default) or openrouter")
|
|
106
130
|
.option("--key-stdin", "read the key from stdin (for scripts and password managers)")
|
|
107
131
|
.addHelpText("after", `
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
import type { CommandContext } from "../context.js";
|
|
3
|
+
export declare const PACKAGE_NAME = "jevctl";
|
|
4
|
+
export interface UpdateRunner {
|
|
5
|
+
/** Latest published version, e.g. "0.3.0". */
|
|
6
|
+
latestVersion(): string;
|
|
7
|
+
/** Installs the given version globally; throws on failure. */
|
|
8
|
+
install(version: string): void;
|
|
9
|
+
}
|
|
10
|
+
export declare function npmRunner(): UpdateRunner;
|
|
11
|
+
/** Compare dotted numeric versions: positive if `a` is newer than `b`. */
|
|
12
|
+
export declare function compareVersions(a: string, b: string): number;
|
|
13
|
+
export declare function updateAction(flags: {
|
|
14
|
+
check?: boolean;
|
|
15
|
+
}, ctx: CommandContext, currentVersion: string, runner?: UpdateRunner): number;
|
|
16
|
+
export declare function registerUpdate(program: Command, run: (fn: (ctx: CommandContext) => Promise<number>, cmd: Command) => Promise<void>, currentVersion: string): void;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { execFileSync } from "node:child_process";
|
|
2
|
+
import { CliError, EXIT } from "../errors.js";
|
|
3
|
+
import { emit } from "../output.js";
|
|
4
|
+
export const PACKAGE_NAME = "jevctl";
|
|
5
|
+
export function npmRunner() {
|
|
6
|
+
return {
|
|
7
|
+
latestVersion() {
|
|
8
|
+
try {
|
|
9
|
+
return execFileSync("npm", ["view", PACKAGE_NAME, "version"], {
|
|
10
|
+
encoding: "utf8",
|
|
11
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
12
|
+
}).trim();
|
|
13
|
+
}
|
|
14
|
+
catch (err) {
|
|
15
|
+
throw new CliError(`Could not reach npm to check the latest version: ${err.message}`);
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
install(version) {
|
|
19
|
+
try {
|
|
20
|
+
execFileSync("npm", ["install", "-g", `${PACKAGE_NAME}@${version}`], { stdio: "inherit" });
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
throw new CliError(`npm install failed: ${err.message}`);
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/** Compare dotted numeric versions: positive if `a` is newer than `b`. */
|
|
29
|
+
export function compareVersions(a, b) {
|
|
30
|
+
const pa = a.split(".").map(Number);
|
|
31
|
+
const pb = b.split(".").map(Number);
|
|
32
|
+
for (let i = 0; i < Math.max(pa.length, pb.length); i++) {
|
|
33
|
+
const diff = (pa[i] ?? 0) - (pb[i] ?? 0);
|
|
34
|
+
if (diff !== 0)
|
|
35
|
+
return diff;
|
|
36
|
+
}
|
|
37
|
+
return 0;
|
|
38
|
+
}
|
|
39
|
+
export function updateAction(flags, ctx, currentVersion, runner = npmRunner()) {
|
|
40
|
+
const latest = runner.latestVersion();
|
|
41
|
+
const payload = { command: "update", current: currentVersion, latest };
|
|
42
|
+
if (compareVersions(latest, currentVersion) <= 0) {
|
|
43
|
+
emit(ctx.output, { ...payload, updated: false }, () => ({
|
|
44
|
+
head: [`jev is up to date (${currentVersion}).`],
|
|
45
|
+
}));
|
|
46
|
+
return EXIT.OK;
|
|
47
|
+
}
|
|
48
|
+
if (flags.check) {
|
|
49
|
+
emit(ctx.output, { ...payload, updated: false }, () => ({
|
|
50
|
+
head: [`Update available: ${currentVersion} -> ${latest}. Run \`jev update\` to install.`],
|
|
51
|
+
}));
|
|
52
|
+
return EXIT.OK;
|
|
53
|
+
}
|
|
54
|
+
runner.install(latest);
|
|
55
|
+
emit(ctx.output, { ...payload, updated: true }, () => ({
|
|
56
|
+
head: [`Updated jev ${currentVersion} -> ${latest}.`],
|
|
57
|
+
}));
|
|
58
|
+
return EXIT.OK;
|
|
59
|
+
}
|
|
60
|
+
export function registerUpdate(program, run, currentVersion) {
|
|
61
|
+
program
|
|
62
|
+
.command("update")
|
|
63
|
+
.description("Check npm for a newer jevctl release and install it globally.")
|
|
64
|
+
.option("--check", "only report whether an update is available; do not install")
|
|
65
|
+
.addHelpText("after", `
|
|
66
|
+
Examples:
|
|
67
|
+
jev update
|
|
68
|
+
jev update --check`)
|
|
69
|
+
.action(async (flags, cmd) => {
|
|
70
|
+
await run(async (ctx) => updateAction(flags, ctx, currentVersion), cmd);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
package/dist/provider.js
CHANGED
|
@@ -16,12 +16,14 @@ export function resolveProvider(env, explicit = "auto") {
|
|
|
16
16
|
const hasCloudflare = Boolean(cfToken && env.CLOUDFLARE_ACCOUNT_ID);
|
|
17
17
|
switch (explicit) {
|
|
18
18
|
case "typesafe":
|
|
19
|
-
if (!hasTypesafe)
|
|
20
|
-
throw new CliError("Provider is typesafe but TYPESAFE_API_KEY is not set.");
|
|
19
|
+
if (!hasTypesafe) {
|
|
20
|
+
throw new CliError("Provider is typesafe but TYPESAFE_API_KEY is not set. Run `jev auth login` to store a key.");
|
|
21
|
+
}
|
|
21
22
|
return "typesafe";
|
|
22
23
|
case "openrouter":
|
|
23
24
|
if (!hasOpenRouter) {
|
|
24
|
-
throw new CliError("Provider is openrouter but OPENROUTER_API_KEY is not set or is not an sk-or- key."
|
|
25
|
+
throw new CliError("Provider is openrouter but OPENROUTER_API_KEY is not set or is not an sk-or- key. " +
|
|
26
|
+
"Run `jev auth login openrouter` to store one.");
|
|
25
27
|
}
|
|
26
28
|
return "openrouter";
|
|
27
29
|
case "cloudflare":
|
|
@@ -36,8 +38,9 @@ export function resolveProvider(env, explicit = "auto") {
|
|
|
36
38
|
return "openrouter";
|
|
37
39
|
if (hasCloudflare)
|
|
38
40
|
return "cloudflare";
|
|
39
|
-
throw new CliError("No credentials found.
|
|
40
|
-
"OPENROUTER_API_KEY (sk-or-...),
|
|
41
|
+
throw new CliError("No credentials found. Run `jev auth login` to store a key, or set TYPESAFE_API_KEY " +
|
|
42
|
+
"(https://console.typesafe.ai/settings/keys), OPENROUTER_API_KEY (sk-or-...), " +
|
|
43
|
+
"or CLOUDFLARE_API_TOKEN + CLOUDFLARE_ACCOUNT_ID.");
|
|
41
44
|
default: {
|
|
42
45
|
const never = explicit;
|
|
43
46
|
throw new CliError(`Unknown provider ${String(never)}`);
|
package/dist/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,+EAA+E;AAC/E,sEAAsE;AACtE,uBAAuB;AAEvB,OAAO,EAAkB,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA8BvC,MAAM,UAAU,GAAG,QAAQ,CAAC;AAY5B,MAAM,OAAO,GAAG,yCAAyC,CAAC;AAE1D,8EAA8E;AAC9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAE5C,qFAAqF;AACrF,MAAM,UAAU,eAAe,CAAC,GAAsB,EAAE,QAAQ,GAAiB,MAAM;IACrF,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,GAAG,CAAC,wBAAwB,IAAI,GAAG,CAAC,oBAAoB,CAAC;IACzE,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAEpE,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,UAAU;YACb,IAAI,CAAC,WAAW;
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
|
package/docs/auth.md
CHANGED
|
@@ -12,7 +12,7 @@ jev auth logout [provider] [--all]
|
|
|
12
12
|
|
|
13
13
|
| Subcommand | Does |
|
|
14
14
|
| --- | --- |
|
|
15
|
-
| `login [typesafe\|openrouter]` | Prompts with
|
|
15
|
+
| `login [typesafe\|openrouter]` | Prompts with masked input and stores the key. With `--key-stdin`, or when piped, reads one line from stdin so password managers work. |
|
|
16
16
|
| `status` | Where each provider's key comes from: `env`, `keychain`, `file`, or `none`. Exit 1 if none. |
|
|
17
17
|
| `logout [provider] [--all]` | Remove a stored key |
|
|
18
18
|
|
package/docs/update.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# jev update
|
|
2
|
+
|
|
3
|
+
Check npm for a newer `jevctl` release and install it globally.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
jev update
|
|
7
|
+
jev update --check
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
| Flag | Does |
|
|
11
|
+
| --- | --- |
|
|
12
|
+
| (none) | Check the npm registry; if a newer version exists, run `npm install -g jevctl@latest` |
|
|
13
|
+
| `--check` | Report whether an update is available without installing it |
|
|
14
|
+
|
|
15
|
+
Already up to date prints a short confirmation and exits 0; so does a completed install. A registry lookup failure (no network, npm missing) is exit 1.
|
|
16
|
+
|
|
17
|
+
Uses the `npm` binary on `PATH`, so it follows whatever registry, proxy, or `.npmrc` settings you already have configured.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jevctl",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "Command-line tool for TypeSafe's Jev AI model. Check claims against evidence, detect prompt injection, find the best match in a list, or ask your own yes/no, multiple-choice, and rating questions. Returns probabilities, not text.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|