rubric-chat 0.2.3 → 0.4.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/README.md +29 -0
- package/dist/commands/login.js +37 -84
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/rate.js +38 -2
- package/dist/commands/rate.js.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/api.js +7 -4
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/config.js +20 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/render.js +26 -1
- package/dist/lib/render.js.map +1 -1
- package/dist/local/archetypes.js +102 -0
- package/dist/local/archetypes.js.map +1 -0
- package/dist/local/engine.js +130 -0
- package/dist/local/engine.js.map +1 -0
- package/dist/local/engine.test.js +156 -0
- package/dist/local/engine.test.js.map +1 -0
- package/dist/local/heuristics.js +127 -0
- package/dist/local/heuristics.js.map +1 -0
- package/dist/local/model.js +313 -0
- package/dist/local/model.js.map +1 -0
- package/dist/local/rubric.js +44 -0
- package/dist/local/rubric.js.map +1 -0
- package/package.json +4 -2
- package/dist/lib/local-server.js +0 -141
- package/dist/lib/local-server.js.map +0 -1
package/README.md
CHANGED
|
@@ -29,8 +29,36 @@ rubric-chat rate --file path # score a JSON file (ChatGPT or Claude.ai export)
|
|
|
29
29
|
# Output modes
|
|
30
30
|
rubric-chat rate <id> --json # machine-readable
|
|
31
31
|
rubric-chat rate <id> --quiet # exit code + URL only
|
|
32
|
+
|
|
33
|
+
# Fully offline scoring — your prompts never leave your machine
|
|
34
|
+
rubric-chat rate <id> --local
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Local mode (`--local`)
|
|
38
|
+
|
|
39
|
+
`rate --local` scores the session **entirely on-device** with a small open-weight
|
|
40
|
+
model — no account, no API call, no monthly cap, nothing uploaded. The default is
|
|
41
|
+
**Gemma 4 E2B** (Apache 2.0) running on ONNX Runtime via transformers.js. The
|
|
42
|
+
first run downloads the model (~3.2 GB, cached in `~/.rubric/models/`); after
|
|
43
|
+
that it's offline forever.
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
rubric-chat rate <id> --local # default (gemma-4-e2b, ~5 GB RAM)
|
|
47
|
+
rubric-chat rate <id> --local --model gemma-4-e4b # bigger judge (~8 GB RAM)
|
|
48
|
+
rubric-chat rate <id> --local --model gemma-3-1b # low-RAM machines (~2 GB)
|
|
49
|
+
rubric-chat rate <id> --local --yes # skip the first-run download prompt
|
|
32
50
|
```
|
|
33
51
|
|
|
52
|
+
Available models: `gemma-4-e2b` (default), `gemma-4-e4b`, `gemma-3-4b`,
|
|
53
|
+
`gemma-3-1b`. Gemma 4 runs on the ONNX engine; Gemma 3 runs on llama.cpp with
|
|
54
|
+
grammar-enforced output.
|
|
55
|
+
|
|
56
|
+
Local scores use the exact same rubric, weights, and strictness curve as the
|
|
57
|
+
server, but a small on-device judge is not a frontier judge — expect roughly
|
|
58
|
+
±10 points (local tends generous) and plainer feedback. The report is badged
|
|
59
|
+
`LOCAL (approximate)`; run without `--local` for the calibrated score and a
|
|
60
|
+
shareable card.
|
|
61
|
+
|
|
34
62
|
## Supported sources
|
|
35
63
|
|
|
36
64
|
| Source | How it's discovered | Status |
|
|
@@ -56,6 +84,7 @@ Only your turns. The CLI strips assistant text locally before any payload leaves
|
|
|
56
84
|
| --- | --- | --- |
|
|
57
85
|
| `RUBRIC_API_BASE_URL` | `https://api.rubric.chat` | Override for local dev |
|
|
58
86
|
| `RUBRIC_WEB_BASE_URL` | `https://rubric.chat` | Override for local dev |
|
|
87
|
+
| `RUBRIC_LOCAL_MODEL_URI` | registry default | Override the `--local` GGUF model URI |
|
|
59
88
|
|
|
60
89
|
Credentials are stored in the OS keychain (macOS Keychain, libsecret on Linux). Fallback: `~/.rubric/credentials` (chmod 600).
|
|
61
90
|
|
package/dist/commands/login.js
CHANGED
|
@@ -1,115 +1,68 @@
|
|
|
1
1
|
import kleur from "kleur";
|
|
2
|
-
import openBrowser from "open";
|
|
3
2
|
import prompts from "prompts";
|
|
4
|
-
import { fetchMe, requestMagicLink,
|
|
5
|
-
import {
|
|
6
|
-
import { startLocalCallback } from "../lib/local-server.js";
|
|
3
|
+
import { fetchMe, requestMagicLink, verifyOtp } from "../lib/api.js";
|
|
4
|
+
import { storeToken } from "../lib/config.js";
|
|
7
5
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* OTP login. Pure terminal — no browser, no local server, no port races.
|
|
7
|
+
*
|
|
8
|
+
* 1. Ask for email (or use --email).
|
|
9
|
+
* 2. Backend sends an email with a 6-digit code.
|
|
10
|
+
* 3. User types the code into the terminal.
|
|
11
|
+
* 4. CLI exchanges it for a JWT and stores it in the keychain.
|
|
10
12
|
*/
|
|
11
13
|
export async function runLogin(options = {}) {
|
|
12
14
|
const email = await ensureEmail(options.email);
|
|
13
15
|
if (!email) {
|
|
14
|
-
// User hit Escape or Ctrl-C at the prompt — exit cleanly, no error.
|
|
15
16
|
console.log(kleur.dim("Cancelled. Run `rubric-chat login` when you're ready."));
|
|
16
17
|
return false;
|
|
17
18
|
}
|
|
18
|
-
if (!options.noBrowser) {
|
|
19
|
-
try {
|
|
20
|
-
const ok = await loginViaBrowserCallback(email);
|
|
21
|
-
if (ok)
|
|
22
|
-
return true;
|
|
23
|
-
}
|
|
24
|
-
catch (err) {
|
|
25
|
-
console.error(kleur.yellow(`Browser flow couldn't complete: ${err.message}`));
|
|
26
|
-
console.error(kleur.dim("Falling back to manual token entry…"));
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
return loginViaManualToken(email);
|
|
30
|
-
}
|
|
31
|
-
async function ensureEmail(provided) {
|
|
32
|
-
if (provided)
|
|
33
|
-
return provided;
|
|
34
|
-
const response = await prompts({
|
|
35
|
-
type: "text",
|
|
36
|
-
name: "email",
|
|
37
|
-
message: "Email"
|
|
38
|
-
});
|
|
39
|
-
return response.email;
|
|
40
|
-
}
|
|
41
|
-
async function loginViaBrowserCallback(email) {
|
|
42
|
-
const callback = await startLocalCallback();
|
|
43
|
-
try {
|
|
44
|
-
await requestMagicLink(email, {
|
|
45
|
-
callbackUrl: callback.callbackUrl,
|
|
46
|
-
callbackState: callback.state
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
catch (err) {
|
|
50
|
-
callback.close();
|
|
51
|
-
throw err;
|
|
52
|
-
}
|
|
53
|
-
console.log(kleur.cyan("\nOpening browser to ") +
|
|
54
|
-
kleur.bold(email) +
|
|
55
|
-
kleur.cyan("'s magic link…"));
|
|
56
|
-
console.log(kleur.dim(`Listening on ${callback.callbackUrl} (state ${callback.state.slice(0, 8)}…)`));
|
|
57
|
-
// The magic-link email is the actual entry point; we open the inbox-agnostic
|
|
58
|
-
// login page so the user knows what to expect while they wait for the email.
|
|
59
|
-
void openBrowser(`${getWebBaseUrl()}/auth/login`).catch(() => undefined);
|
|
60
|
-
try {
|
|
61
|
-
const result = await callback.wait();
|
|
62
|
-
await storeToken(result.jwt);
|
|
63
|
-
const me = await fetchMe();
|
|
64
|
-
console.log(kleur.green(`\nSigned in as ${me.email}.`));
|
|
65
|
-
return true;
|
|
66
|
-
}
|
|
67
|
-
catch (err) {
|
|
68
|
-
if (err.message.includes("Timed out")) {
|
|
69
|
-
console.error(kleur.yellow("\nBrowser sign-in timed out."));
|
|
70
|
-
return false;
|
|
71
|
-
}
|
|
72
|
-
throw err;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
async function loginViaManualToken(email) {
|
|
76
|
-
console.log(kleur.cyan("\nWe'll send a magic link to ") + kleur.bold(email) + kleur.cyan("."));
|
|
77
19
|
try {
|
|
78
|
-
await requestMagicLink(email);
|
|
20
|
+
await requestMagicLink(email, { authType: "otp" });
|
|
79
21
|
}
|
|
80
22
|
catch (err) {
|
|
81
|
-
console.error(kleur.red(`
|
|
23
|
+
console.error(kleur.red(`Couldn't send the sign-in code: ${err.message}`));
|
|
82
24
|
process.exitCode = 1;
|
|
83
25
|
return false;
|
|
84
26
|
}
|
|
85
|
-
console.log(
|
|
86
|
-
console.log(kleur.dim("
|
|
87
|
-
|
|
88
|
-
console.log(kleur.dim(" 3. The link looks like ") + kleur.cyan("https://www.rubric.chat/auth/verify?token=") +
|
|
89
|
-
kleur.bold("<TOKEN>") + kleur.dim("."));
|
|
90
|
-
console.log(kleur.dim(" 4. Paste just the ") + kleur.bold("<TOKEN>") + kleur.dim(" part below (everything after `token=`).") + "\n");
|
|
91
|
-
const tokenAnswer = await prompts({
|
|
27
|
+
console.log("\n " + kleur.cyan("Sent a 6-digit code to ") + kleur.bold(email) + kleur.cyan("."));
|
|
28
|
+
console.log(kleur.dim(" The code expires in 30 minutes.\n"));
|
|
29
|
+
const codeAnswer = await prompts({
|
|
92
30
|
type: "text",
|
|
93
|
-
name: "
|
|
94
|
-
message: "
|
|
31
|
+
name: "code",
|
|
32
|
+
message: "Sign-in code",
|
|
33
|
+
validate: (value) => {
|
|
34
|
+
const cleaned = (value ?? "").replace(/\D/g, "");
|
|
35
|
+
return cleaned.length === 6 || "Code must be 6 digits.";
|
|
36
|
+
}
|
|
95
37
|
});
|
|
96
|
-
const
|
|
97
|
-
if (!
|
|
98
|
-
console.
|
|
99
|
-
process.exitCode = 1;
|
|
38
|
+
const code = codeAnswer.code?.replace(/\D/g, "");
|
|
39
|
+
if (!code) {
|
|
40
|
+
console.log(kleur.dim("Cancelled. Run `rubric-chat login` to request a new code."));
|
|
100
41
|
return false;
|
|
101
42
|
}
|
|
102
43
|
try {
|
|
103
|
-
const session = await
|
|
44
|
+
const session = await verifyOtp(email, code);
|
|
104
45
|
await storeToken(session.jwt);
|
|
105
46
|
const me = await fetchMe();
|
|
106
|
-
console.log(kleur.green(
|
|
47
|
+
console.log(kleur.green(`\nSigned in as ${me.email}.\n`));
|
|
107
48
|
return true;
|
|
108
49
|
}
|
|
109
50
|
catch (err) {
|
|
110
|
-
console.error(kleur.red(
|
|
51
|
+
console.error(kleur.red(`\nVerification failed: ${err.message}`));
|
|
52
|
+
console.error(kleur.dim("Double-check the code, or run `rubric-chat login` again for a fresh one."));
|
|
111
53
|
process.exitCode = 1;
|
|
112
54
|
return false;
|
|
113
55
|
}
|
|
114
56
|
}
|
|
57
|
+
async function ensureEmail(provided) {
|
|
58
|
+
if (provided)
|
|
59
|
+
return provided;
|
|
60
|
+
const response = await prompts({
|
|
61
|
+
type: "text",
|
|
62
|
+
name: "email",
|
|
63
|
+
message: "Email",
|
|
64
|
+
validate: (value) => /^[^@\s]+@[^@\s]+\.[^@\s]+$/.test((value ?? "").trim()) || "That doesn't look like an email."
|
|
65
|
+
});
|
|
66
|
+
return response.email?.trim();
|
|
67
|
+
}
|
|
115
68
|
//# sourceMappingURL=login.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/rate.js
CHANGED
|
@@ -2,7 +2,8 @@ import kleur from "kleur";
|
|
|
2
2
|
import prompts from "prompts";
|
|
3
3
|
import { analyzeSession } from "../lib/api.js";
|
|
4
4
|
import { getWebBaseUrl } from "../lib/config.js";
|
|
5
|
-
import { renderReport, renderTeaser } from "../lib/render.js";
|
|
5
|
+
import { renderLocalReport, renderReport, renderTeaser } from "../lib/render.js";
|
|
6
|
+
import { analyzeLocally } from "../local/engine.js";
|
|
6
7
|
import { loadGenericSession } from "../sources/generic.js";
|
|
7
8
|
import { getSource, SOURCES } from "../sources/index.js";
|
|
8
9
|
export async function runRate(target, options) {
|
|
@@ -51,10 +52,45 @@ export async function runRate(target, options) {
|
|
|
51
52
|
process.exitCode = 1;
|
|
52
53
|
return;
|
|
53
54
|
}
|
|
55
|
+
if (options.local) {
|
|
56
|
+
if (!options.quiet) {
|
|
57
|
+
console.log(kleur.dim(`Scoring ${session.turns.length} user turns on-device…`));
|
|
58
|
+
}
|
|
59
|
+
const localReport = await analyzeLocally(session, {
|
|
60
|
+
modelName: options.model,
|
|
61
|
+
yes: options.yes,
|
|
62
|
+
quiet: options.quiet
|
|
63
|
+
});
|
|
64
|
+
if (options.json) {
|
|
65
|
+
console.log(JSON.stringify(localReport));
|
|
66
|
+
}
|
|
67
|
+
else if (options.quiet) {
|
|
68
|
+
console.log(localReport.score);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
console.log(renderLocalReport(localReport));
|
|
72
|
+
}
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
54
75
|
if (!options.quiet) {
|
|
55
76
|
console.log(kleur.dim(`Analyzing ${session.turns.length} user turns…`));
|
|
56
77
|
}
|
|
57
|
-
|
|
78
|
+
let response;
|
|
79
|
+
try {
|
|
80
|
+
response = await analyzeSession(session);
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
84
|
+
if (/free tier cap/i.test(message)) {
|
|
85
|
+
console.error(kleur.red(message));
|
|
86
|
+
console.error(kleur.dim("Tip: score on-device with ") +
|
|
87
|
+
kleur.cyan("--local") +
|
|
88
|
+
kleur.dim(" — it's free, offline, and doesn't count against the cap."));
|
|
89
|
+
process.exitCode = 1;
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
throw err;
|
|
93
|
+
}
|
|
58
94
|
const webBase = getWebBaseUrl();
|
|
59
95
|
if (options.json) {
|
|
60
96
|
console.log(JSON.stringify(response));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate.js","sourceRoot":"","sources":["../../src/commands/rate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"rate.js","sourceRoot":"","sources":["../../src/commands/rate.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -58,6 +58,9 @@ program
|
|
|
58
58
|
.option("--json", "Print the analyze response as JSON")
|
|
59
59
|
.option("--quiet", "Print only the score")
|
|
60
60
|
.option("--interactive", "Pick a session from a list")
|
|
61
|
+
.option("--local", "Score fully on-device (offline, approximate, never uploads your prompts)")
|
|
62
|
+
.option("--model <name>", "Local model: gemma-4-e2b (default) | gemma-4-e4b | gemma-3-4b | gemma-3-1b")
|
|
63
|
+
.option("--yes", "Skip the first-run model download confirmation")
|
|
61
64
|
.action(async (sessionId, opts) => {
|
|
62
65
|
await runRate(sessionId, opts);
|
|
63
66
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CACV,2FAA2F,CAC5F;KACA,OAAO,CAAC,WAAW,CAAC;KACpB,kBAAkB,CAAC,sCAAsC,CAAC;KAC1D,cAAc,CAAC,gBAAgB,EAAE,yBAAyB,CAAC,CAAC;AAE/D,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;KACjD,MAAM,CAAC,cAAc,EAAE,oDAAoD,CAAC;KAC5E,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,SAAS,EAAE,CAAC;AACpB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,SAAS,EAAE,CAAC;AACpB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,SAAS,EAAE,CAAC;AACpB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,eAAe,EAAE,wCAAwC,CAAC;KACjE,MAAM,CAAC,aAAa,EAAE,oCAAoC,EAAE,IAAI,CAAC;KACjE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,eAAe,EAAE,yDAAyD,CAAC;KAClF,MAAM,CAAC,eAAe,EAAE,yCAAyC,CAAC;KAClE,MAAM,CAAC,QAAQ,EAAE,oCAAoC,CAAC;KACtD,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;KACzC,MAAM,CAAC,eAAe,EAAE,4BAA4B,CAAC;KACrD,MAAM,CAAC,SAAS,EAAE,0EAA0E,CAAC;KAC7F,MAAM,CAAC,gBAAgB,EAAE,4EAA4E,CAAC;KACtG,MAAM,CAAC,OAAO,EAAE,gDAAgD,CAAC;KACjE,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;IAChC,MAAM,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEL,kFAAkF;AAClF,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;IACxB,MAAM,SAAS,EAAE,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC7C,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/lib/api.js
CHANGED
|
@@ -16,14 +16,17 @@ export async function requestMagicLink(email, opts = {}) {
|
|
|
16
16
|
headers: { "content-type": "application/json" },
|
|
17
17
|
body: JSON.stringify({
|
|
18
18
|
email,
|
|
19
|
-
|
|
20
|
-
callback_state: opts.callbackState ?? null
|
|
19
|
+
auth_type: opts.authType ?? "link"
|
|
21
20
|
})
|
|
22
21
|
});
|
|
23
22
|
await unwrap(response);
|
|
24
23
|
}
|
|
25
|
-
export async function
|
|
26
|
-
const response = await fetch(`${getApiBaseUrl()}/auth/verify
|
|
24
|
+
export async function verifyOtp(email, code) {
|
|
25
|
+
const response = await fetch(`${getApiBaseUrl()}/auth/verify-otp`, {
|
|
26
|
+
method: "POST",
|
|
27
|
+
headers: { "content-type": "application/json" },
|
|
28
|
+
body: JSON.stringify({ email, code })
|
|
29
|
+
});
|
|
27
30
|
return unwrap(response);
|
|
28
31
|
}
|
|
29
32
|
export async function fetchMe() {
|
package/dist/lib/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEvD,KAAK,UAAU,WAAW;IACxB,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;IAC9B,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,MAAM,CAAI,QAAkB;IACzC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,mBAAmB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;AACtC,CAAC;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.js
CHANGED
|
@@ -31,6 +31,26 @@ export function getWebBaseUrl() {
|
|
|
31
31
|
async function ensureHome() {
|
|
32
32
|
await mkdir(RUBRIC_HOME, { recursive: true });
|
|
33
33
|
}
|
|
34
|
+
// --- Local-analysis config (~/.rubric/config.json + ~/.rubric/models/) ---
|
|
35
|
+
const LOCAL_CONFIG_FILE = join(RUBRIC_HOME, "config.json");
|
|
36
|
+
export function getModelsDir() {
|
|
37
|
+
return join(RUBRIC_HOME, "models");
|
|
38
|
+
}
|
|
39
|
+
export async function readLocalConfig() {
|
|
40
|
+
try {
|
|
41
|
+
const raw = await readFile(LOCAL_CONFIG_FILE, "utf8");
|
|
42
|
+
const parsed = JSON.parse(raw);
|
|
43
|
+
return typeof parsed === "object" && parsed !== null ? parsed : {};
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return {};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export async function writeLocalConfig(config) {
|
|
50
|
+
await ensureHome();
|
|
51
|
+
await mkdir(getModelsDir(), { recursive: true });
|
|
52
|
+
await writeFile(LOCAL_CONFIG_FILE, JSON.stringify(config, null, 2), "utf8");
|
|
53
|
+
}
|
|
34
54
|
async function loadKeytar() {
|
|
35
55
|
try {
|
|
36
56
|
const mod = await import("keytar");
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/render.js
CHANGED
|
@@ -2,7 +2,7 @@ import kleur from "kleur";
|
|
|
2
2
|
export function renderTeaser(teaser, webBase) {
|
|
3
3
|
return [
|
|
4
4
|
"",
|
|
5
|
-
` ${kleur.bold(`Score`)} ${kleur.yellow(String(teaser.score))}${kleur.dim("/100")}
|
|
5
|
+
` ${kleur.bold(`Score`)} ${kleur.yellow(String(teaser.score))}${kleur.dim("/100")}`,
|
|
6
6
|
` ${kleur.bold("Archetype")} ${teaser.archetype_name}`,
|
|
7
7
|
` ${kleur.dim(teaser.archetype_tagline)}`,
|
|
8
8
|
"",
|
|
@@ -32,6 +32,31 @@ export function renderReport(report, webBase) {
|
|
|
32
32
|
lines.push("");
|
|
33
33
|
return lines.join("\n");
|
|
34
34
|
}
|
|
35
|
+
export function renderLocalReport(report) {
|
|
36
|
+
const badge = report.mode === "model"
|
|
37
|
+
? kleur.bgYellow().black(" LOCAL (approximate) ")
|
|
38
|
+
: kleur.bgRed().white(" HEURISTIC ESTIMATE ");
|
|
39
|
+
const lines = [];
|
|
40
|
+
lines.push("");
|
|
41
|
+
lines.push(` ${badge}`);
|
|
42
|
+
lines.push("");
|
|
43
|
+
lines.push(` ${kleur.bold("Score")} ${kleur.yellow(String(report.score))}${kleur.dim("/100")} ${kleur.dim(`(raw ${report.raw_score})`)}`);
|
|
44
|
+
lines.push(` ${kleur.bold(report.archetype.name)} — ${kleur.dim(report.archetype.tagline)}`);
|
|
45
|
+
lines.push("");
|
|
46
|
+
lines.push(` ${kleur.dim(report.summary)}`);
|
|
47
|
+
lines.push("");
|
|
48
|
+
for (const dimension of report.dimensions) {
|
|
49
|
+
const bar = renderBar(dimension.score);
|
|
50
|
+
lines.push(` ${dimension.dimension.padEnd(20)} ${bar} ${String(dimension.score).padStart(3)} ${kleur.dim(dimension.feedback)}`);
|
|
51
|
+
}
|
|
52
|
+
lines.push("");
|
|
53
|
+
if (report.mode === "model") {
|
|
54
|
+
lines.push(kleur.dim(` Scored on-device by ${report.model_used} — expect ±10 vs the server score.`));
|
|
55
|
+
}
|
|
56
|
+
lines.push(kleur.dim(" Nothing left your machine. Run without --local for the calibrated score + share card."));
|
|
57
|
+
lines.push("");
|
|
58
|
+
return lines.join("\n");
|
|
59
|
+
}
|
|
35
60
|
function renderBar(score, width = 24) {
|
|
36
61
|
const filled = Math.max(0, Math.min(width, Math.round((score / 100) * width)));
|
|
37
62
|
return kleur.green("█".repeat(filled)) + kleur.dim("░".repeat(width - filled));
|
package/dist/lib/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/lib/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,UAAU,YAAY,CAAC,MAAoB,EAAE,OAAe;IAChE,OAAO;QACL,EAAE;QACF,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/lib/render.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
export const ARCHETYPES = {
|
|
2
|
+
sniper: {
|
|
3
|
+
slug: "sniper",
|
|
4
|
+
name: "The Sniper",
|
|
5
|
+
tagline: "Short, sharp, and sometimes under-scoped.",
|
|
6
|
+
description: "You tend to ask concise questions and avoid unnecessary context. This can work well for narrow tasks, but the assistant often has to infer constraints. Your next improvement is adding just enough success criteria to reduce guesswork.",
|
|
7
|
+
share_color: "#2563eb",
|
|
8
|
+
growth_tips: [
|
|
9
|
+
"Add one sentence of context before the ask.",
|
|
10
|
+
"Define what a successful answer should include.",
|
|
11
|
+
"Use follow-ups to refine, not just redirect."
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
sculptor: {
|
|
15
|
+
slug: "sculptor",
|
|
16
|
+
name: "The Sculptor",
|
|
17
|
+
tagline: "Careful setup with targeted refinements.",
|
|
18
|
+
description: "You usually shape the output through a strong opener and deliberate follow-ups. Your best sessions show clear intent and useful course correction. Watch for overloading the first prompt when a staged workflow would be cleaner.",
|
|
19
|
+
share_color: "#0891b2",
|
|
20
|
+
growth_tips: [
|
|
21
|
+
"Separate background from the actual task.",
|
|
22
|
+
"Ask for checkpoints on complex work.",
|
|
23
|
+
"Name what changed between follow-ups."
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
interrogator: {
|
|
27
|
+
slug: "interrogator",
|
|
28
|
+
name: "The Interrogator",
|
|
29
|
+
tagline: "Many focused follow-ups that drill down.",
|
|
30
|
+
description: "You learn by asking a sequence of smaller questions. This can expose details quickly, but may lose a coherent end goal. Stronger prompts would state the larger objective before the drill-down begins.",
|
|
31
|
+
share_color: "#0f766e",
|
|
32
|
+
growth_tips: [
|
|
33
|
+
"State the final decision you are trying to make.",
|
|
34
|
+
"Group related follow-ups into one structured prompt.",
|
|
35
|
+
"Summarize what you learned before pivoting."
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
firehose: {
|
|
39
|
+
slug: "firehose",
|
|
40
|
+
name: "The Firehose",
|
|
41
|
+
tagline: "Everything arrives at once.",
|
|
42
|
+
description: "You provide lots of material, often in a single heavy prompt. That can be useful for context-rich work, but it risks burying the actual instruction. The main opportunity is structure: labels, priorities, and explicit output requirements.",
|
|
43
|
+
share_color: "#dc2626",
|
|
44
|
+
growth_tips: [
|
|
45
|
+
"Put the core ask at the top.",
|
|
46
|
+
"Use headings for context, constraints, and output.",
|
|
47
|
+
"Mark which details are essential versus optional."
|
|
48
|
+
]
|
|
49
|
+
},
|
|
50
|
+
wanderer: {
|
|
51
|
+
slug: "wanderer",
|
|
52
|
+
name: "The Wanderer",
|
|
53
|
+
tagline: "Curious, but the thread drifts.",
|
|
54
|
+
description: "Your session moves across topics or goals without a stable through-line. This can be good for exploration, but it makes high-quality assistance harder. You will score higher by anchoring each turn to the current objective.",
|
|
55
|
+
share_color: "#7c3aed",
|
|
56
|
+
growth_tips: [
|
|
57
|
+
"Name the current objective before each pivot.",
|
|
58
|
+
"Start a new session for unrelated work.",
|
|
59
|
+
"Ask the assistant to track open questions."
|
|
60
|
+
]
|
|
61
|
+
},
|
|
62
|
+
repeater: {
|
|
63
|
+
slug: "repeater",
|
|
64
|
+
name: "The Repeater",
|
|
65
|
+
tagline: "Persistent, but often not more specific.",
|
|
66
|
+
description: "You tend to retry similar asks when the answer misses. Persistence helps, but repeated phrasing gives the assistant little new signal. Better diagnosis and sharper constraints will improve results quickly.",
|
|
67
|
+
share_color: "#ea580c",
|
|
68
|
+
growth_tips: [
|
|
69
|
+
"Explain what was wrong with the last answer.",
|
|
70
|
+
"Change the constraint, example, or output format.",
|
|
71
|
+
"Quote the part that needs correction."
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
architect: {
|
|
75
|
+
slug: "architect",
|
|
76
|
+
name: "The Architect",
|
|
77
|
+
tagline: "Structured prompts with clear scaffolding.",
|
|
78
|
+
description: "You often use sections, formats, roles, or constraints to guide the assistant. This makes your intent easier to follow and usually improves output quality. The next step is balancing structure with room for useful initiative.",
|
|
79
|
+
share_color: "#16a34a",
|
|
80
|
+
growth_tips: [
|
|
81
|
+
"Keep sections short and purposeful.",
|
|
82
|
+
"Specify acceptance criteria for complex tasks.",
|
|
83
|
+
"Invite the assistant to surface blockers."
|
|
84
|
+
]
|
|
85
|
+
},
|
|
86
|
+
explorer: {
|
|
87
|
+
slug: "explorer",
|
|
88
|
+
name: "The Explorer",
|
|
89
|
+
tagline: "Open-ended, curious, and iterative.",
|
|
90
|
+
description: "You use the assistant to investigate and expand possibilities. This creates breadth, but the asks can be too loose to evaluate. Convert curiosity into decisions by naming constraints and expected outputs.",
|
|
91
|
+
share_color: "#ca8a04",
|
|
92
|
+
growth_tips: [
|
|
93
|
+
"Define the decision or artifact you need.",
|
|
94
|
+
"Ask for options with tradeoffs.",
|
|
95
|
+
"Close exploration with a synthesis prompt."
|
|
96
|
+
]
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
export function getArchetype(slug) {
|
|
100
|
+
return ARCHETYPES[slug] ?? ARCHETYPES.explorer;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=archetypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archetypes.js","sourceRoot":"","sources":["../../src/local/archetypes.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,UAAU,GAA8B;IACnD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,2CAA2C;QACpD,WAAW,EACT,2OAA2O;QAC7O,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE;YACX,6CAA6C;YAC7C,iDAAiD;YACjD,8CAA8C;SAC/C;KACF;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,0CAA0C;QACnD,WAAW,EACT,oOAAoO;QACtO,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE;YACX,2CAA2C;YAC3C,sCAAsC;YACtC,uCAAuC;SACxC;KACF;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,0CAA0C;QACnD,WAAW,EACT,yMAAyM;QAC3M,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE;YACX,kDAAkD;YAClD,sDAAsD;YACtD,6CAA6C;SAC9C;KACF;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,6BAA6B;QACtC,WAAW,EACT,+OAA+O;QACjP,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE;YACX,8BAA8B;YAC9B,oDAAoD;YACpD,mDAAmD;SACpD;KACF;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,iCAAiC;QAC1C,WAAW,EACT,gOAAgO;QAClO,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE;YACX,+CAA+C;YAC/C,yCAAyC;YACzC,4CAA4C;SAC7C;KACF;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,0CAA0C;QACnD,WAAW,EACT,+MAA+M;QACjN,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE;YACX,8CAA8C;YAC9C,mDAAmD;YACnD,uCAAuC;SACxC;KACF;IACD,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,4CAA4C;QACrD,WAAW,EACT,mOAAmO;QACrO,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE;YACX,qCAAqC;YACrC,gDAAgD;YAChD,2CAA2C;SAC5C;KACF;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,qCAAqC;QAC9C,WAAW,EACT,8MAA8M;QAChN,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE;YACX,2CAA2C;YAC3C,iCAAiC;YACjC,4CAA4C;SAC7C;KACF;CACF,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC;AACjD,CAAC"}
|