@lobu/cli 3.0.7 → 3.0.8
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/api/credentials.d.ts +2 -1
- package/dist/api/credentials.d.ts.map +1 -1
- package/dist/api/credentials.js +30 -4
- package/dist/api/credentials.js.map +1 -1
- package/dist/commands/chat.d.ts +1 -0
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +16 -3
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/eval.d.ts +10 -0
- package/dist/commands/eval.d.ts.map +1 -0
- package/dist/commands/eval.js +194 -0
- package/dist/commands/eval.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +24 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.d.ts +1 -0
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +51 -50
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/logout.js +15 -1
- package/dist/commands/logout.js.map +1 -1
- package/dist/eval/client.d.ts +42 -0
- package/dist/eval/client.d.ts.map +1 -0
- package/dist/eval/client.js +166 -0
- package/dist/eval/client.js.map +1 -0
- package/dist/eval/grader.d.ts +14 -0
- package/dist/eval/grader.d.ts.map +1 -0
- package/dist/eval/grader.js +177 -0
- package/dist/eval/grader.js.map +1 -0
- package/dist/eval/reporter.d.ts +8 -0
- package/dist/eval/reporter.d.ts.map +1 -0
- package/dist/eval/reporter.js +242 -0
- package/dist/eval/reporter.js.map +1 -0
- package/dist/eval/runner.d.ts +11 -0
- package/dist/eval/runner.d.ts.map +1 -0
- package/dist/eval/runner.js +172 -0
- package/dist/eval/runner.js.map +1 -0
- package/dist/eval/types.d.ts +243 -0
- package/dist/eval/types.d.ts.map +1 -0
- package/dist/eval/types.js +31 -0
- package/dist/eval/types.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -1
- package/dist/templates/.gitignore.tmpl +4 -0
- package/package.json +2 -1
package/dist/commands/login.js
CHANGED
|
@@ -3,7 +3,7 @@ import inquirer from "inquirer";
|
|
|
3
3
|
import open from "open";
|
|
4
4
|
import ora from "ora";
|
|
5
5
|
import { resolveContext } from "../api/context.js";
|
|
6
|
-
import { loadCredentials, saveCredentials } from "../api/credentials.js";
|
|
6
|
+
import { clearCredentials, loadCredentials, saveCredentials, } from "../api/credentials.js";
|
|
7
7
|
function extractIdentity(payload) {
|
|
8
8
|
if (!payload || typeof payload !== "object")
|
|
9
9
|
return {};
|
|
@@ -36,40 +36,36 @@ function extractIdentity(payload) {
|
|
|
36
36
|
return { email, name, userId, agentId };
|
|
37
37
|
}
|
|
38
38
|
async function validateToken(token, apiBaseUrl) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
error: "Token was rejected by the API (unauthorized).",
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
if (response.status === 404) {
|
|
56
|
-
continue;
|
|
57
|
-
}
|
|
58
|
-
if (!response.ok) {
|
|
59
|
-
continue;
|
|
60
|
-
}
|
|
61
|
-
const body = (await response.json().catch(() => ({})));
|
|
62
|
-
const identity = extractIdentity(body);
|
|
63
|
-
return { status: "valid", ...identity };
|
|
39
|
+
try {
|
|
40
|
+
const response = await fetch(`${apiBaseUrl}/auth/whoami`, {
|
|
41
|
+
headers: {
|
|
42
|
+
Authorization: `Bearer ${token}`,
|
|
43
|
+
"Content-Type": "application/json",
|
|
44
|
+
"X-Lobu-Org": "default",
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
if (response.status === 401 || response.status === 403) {
|
|
48
|
+
return {
|
|
49
|
+
status: "invalid",
|
|
50
|
+
error: "Token was rejected by the API (unauthorized).",
|
|
51
|
+
};
|
|
64
52
|
}
|
|
65
|
-
|
|
66
|
-
|
|
53
|
+
if (!response.ok) {
|
|
54
|
+
return {
|
|
55
|
+
status: "unverified",
|
|
56
|
+
warning: "Could not validate token against API (non-200 response), but token was saved locally.",
|
|
57
|
+
};
|
|
67
58
|
}
|
|
59
|
+
const body = (await response.json().catch(() => ({})));
|
|
60
|
+
const identity = extractIdentity(body);
|
|
61
|
+
return { status: "valid", ...identity };
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return {
|
|
65
|
+
status: "unverified",
|
|
66
|
+
warning: "Could not reach API to validate token, but token was saved locally.",
|
|
67
|
+
};
|
|
68
68
|
}
|
|
69
|
-
return {
|
|
70
|
-
status: "unverified",
|
|
71
|
-
warning: "Could not validate token against API endpoints, but token was saved locally.",
|
|
72
|
-
};
|
|
73
69
|
}
|
|
74
70
|
export async function loginCommand(options) {
|
|
75
71
|
const target = await resolveContext(options.context);
|
|
@@ -77,18 +73,35 @@ export async function loginCommand(options) {
|
|
|
77
73
|
console.log(chalk.red("\n Use either `--token` or `--admin-password`, not both.\n"));
|
|
78
74
|
return;
|
|
79
75
|
}
|
|
76
|
+
// Check existing session — block unless --force
|
|
77
|
+
const existing = await loadCredentials(target.name);
|
|
78
|
+
if (existing && !options.force) {
|
|
79
|
+
console.log(chalk.dim(`\n Already logged in to ${target.name} as ${existing.email ?? existing.name ?? "user"}.`));
|
|
80
|
+
console.log(chalk.dim(" Run `npx @lobu/cli logout` first, or use `--force` to re-authenticate.\n"));
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
// Force: revoke existing session before proceeding
|
|
84
|
+
if (existing && options.force) {
|
|
85
|
+
if (existing.refreshToken) {
|
|
86
|
+
try {
|
|
87
|
+
await fetch(`${target.apiUrl}/auth/logout`, {
|
|
88
|
+
method: "POST",
|
|
89
|
+
headers: { "Content-Type": "application/json" },
|
|
90
|
+
body: JSON.stringify({ refreshToken: existing.refreshToken }),
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
// Best-effort revocation
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
await clearCredentials(target.name);
|
|
98
|
+
}
|
|
80
99
|
if (options.token) {
|
|
81
100
|
const token = options.token.trim();
|
|
82
101
|
if (!token) {
|
|
83
102
|
console.log(chalk.red("\n Token cannot be empty.\n"));
|
|
84
103
|
return;
|
|
85
104
|
}
|
|
86
|
-
const existing = await loadCredentials(target.name);
|
|
87
|
-
if (existing) {
|
|
88
|
-
console.log(chalk.dim(`\n Already logged in to ${target.name} as ${existing.email ?? "user"}.`));
|
|
89
|
-
console.log(chalk.dim(" Run `npx @lobu/cli logout` first to switch accounts.\n"));
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
105
|
const validation = await validateToken(token, target.apiUrl);
|
|
93
106
|
if (validation.status === "invalid") {
|
|
94
107
|
console.log(chalk.red(`\n ${validation.error}`));
|
|
@@ -112,12 +125,6 @@ export async function loginCommand(options) {
|
|
|
112
125
|
return;
|
|
113
126
|
}
|
|
114
127
|
if (options.adminPassword) {
|
|
115
|
-
const existing = await loadCredentials(target.name);
|
|
116
|
-
if (existing) {
|
|
117
|
-
console.log(chalk.dim(`\n Already logged in to ${target.name} as ${existing.email ?? existing.name ?? "user"}.`));
|
|
118
|
-
console.log(chalk.dim(" Run `npx @lobu/cli logout` first to switch accounts.\n"));
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
128
|
const answers = await inquirer.prompt([
|
|
122
129
|
{
|
|
123
130
|
type: "password",
|
|
@@ -164,12 +171,6 @@ export async function loginCommand(options) {
|
|
|
164
171
|
console.log(chalk.yellow(`\n Logged in to ${target.name} using the development admin password fallback.\n`));
|
|
165
172
|
return;
|
|
166
173
|
}
|
|
167
|
-
const existing = await loadCredentials(target.name);
|
|
168
|
-
if (existing) {
|
|
169
|
-
console.log(chalk.dim(`\n Already logged in to ${target.name} as ${existing.email ?? "user"}.`));
|
|
170
|
-
console.log(chalk.dim(" Run `npx @lobu/cli logout` first to switch accounts.\n"));
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
174
|
console.log(chalk.bold.cyan("\n Lobu Cloud is in early access.\n"));
|
|
174
175
|
console.log(chalk.dim(` Context: ${target.name}`));
|
|
175
176
|
console.log(chalk.dim(` API URL: ${target.apiUrl}`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEzE,SAAS,eAAe,CAAC,OAAgB;IAMvC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IAEvD,MAAM,MAAM,GAAG,OAAkC,CAAC;IAClD,MAAM,IAAI,GACR,MAAM,CAAC,IAAI,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;QAC5C,CAAC,CAAE,MAAM,CAAC,IAAgC;QAC1C,CAAC,CAAC,IAAI,CAAC;IAEX,MAAM,KAAK,GACT,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;QAC9B,CAAC,CAAC,MAAM,CAAC,KAAK;QACd,CAAC,CAAC,OAAO,IAAI,EAAE,KAAK,KAAK,QAAQ;YAC/B,CAAC,CAAC,IAAI,CAAC,KAAK;YACZ,CAAC,CAAC,SAAS,CAAC;IAClB,MAAM,IAAI,GACR,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;QAC7B,CAAC,CAAC,MAAM,CAAC,IAAI;QACb,CAAC,CAAC,OAAO,IAAI,EAAE,IAAI,KAAK,QAAQ;YAC9B,CAAC,CAAC,IAAI,CAAC,IAAI;YACX,CAAC,CAAC,SAAS,CAAC;IAClB,MAAM,MAAM,GACV,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;QAC/B,CAAC,CAAC,MAAM,CAAC,MAAM;QACf,CAAC,CAAC,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ;YAC7B,CAAC,CAAC,MAAM,CAAC,EAAE;YACX,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,KAAK,QAAQ;gBAC5B,CAAC,CAAC,IAAI,CAAC,EAAE;gBACT,CAAC,CAAC,SAAS,CAAC;IAEpB,MAAM,OAAO,GACX,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;QAChC,CAAC,CAAC,MAAM,CAAC,OAAO;QAChB,CAAC,CAAC,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;YACnC,CAAC,CAAC,MAAM,CAAC,QAAQ;YACjB,CAAC,CAAC,SAAS,CAAC;IAElB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,KAAa,EACb,UAAkB;IAYlB,MAAM,SAAS,GAAG,CAAC,cAAc,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAErD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,GAAG,QAAQ,EAAE,EAAE;gBACvD,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,KAAK,EAAE;oBAChC,cAAc,EAAE,kBAAkB;oBAClC,YAAY,EAAE,SAAS;iBACxB;aACF,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvD,OAAO;oBACL,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE,+CAA+C;iBACvD,CAAC;YACJ,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,SAAS;YACX,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,SAAS;YACX,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAY,CAAC;YAClE,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;YACvC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB;QACvB,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM,EAAE,YAAY;QACpB,OAAO,EACL,8EAA8E;KACjF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAIlC;IACC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAErD,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,6DAA6D,CAAC,CACzE,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,4BAA4B,MAAM,CAAC,IAAI,OAAO,QAAQ,CAAC,KAAK,IAAI,MAAM,GAAG,CAC1E,CACF,CAAC;YACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,0DAA0D,CAAC,CACtE,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7D,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QAED,MAAM,eAAe,CACnB;YACE,WAAW,EAAE,KAAK;YAClB,KAAK,EAAE,UAAU,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACnE,IAAI,EAAE,UAAU,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACjE,MAAM,EAAE,UAAU,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YACrE,OAAO,EAAE,UAAU,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;SACxE,EACD,MAAM,CAAC,IAAI,CACZ,CAAC;QAEF,IAAI,UAAU,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,oBAAoB,MAAM,CAAC,IAAI,oBAAoB,CAAC,CACjE,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,kBAAkB,MAAM,CAAC,IAAI,oBAAoB,CAAC,CAC/D,CAAC;QACJ,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,4BAA4B,MAAM,CAAC,IAAI,OAAO,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,IAAI,MAAM,GAAG,CAC3F,CACF,CAAC;YACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,0DAA0D,CAAC,CACtE,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,sBAAsB,MAAM,CAAC,IAAI,GAAG;gBAC7C,IAAI,EAAE,GAAG;aACV;SACF,CAAC,CAAC;QACH,MAAM,QAAQ,GACZ,OAAO,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;YAC7C,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;YACzB,CAAC,CAAC,EAAE,CAAC;QAET,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,uBAAuB,EAAE;YACpE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,YAAY,EAAE,SAAS;aACxB;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;SACnC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAErB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAUpD,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5D,MAAM,KAAK,GACT,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;gBACpC,CAAC,CAAC,IAAI,CAAC,KAAK;gBACZ,CAAC,CAAC,8BAA8B,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,MAAM,eAAe,CACnB;YACE,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM;YACzB,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI;SACtB,EACD,MAAM,CAAC,IAAI,CACZ,CAAC;QAEF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,oBAAoB,MAAM,CAAC,IAAI,mDAAmD,CACnF,CACF,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,4BAA4B,MAAM,CAAC,IAAI,OAAO,QAAQ,CAAC,KAAK,IAAI,MAAM,GAAG,CAC1E,CACF,CAAC;QACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,0DAA0D,CAAC,CACtE,CAAC;QACF,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAEtD,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,iBAAiB,EAAE;QACnE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,YAAY,EAAE,SAAS;SACxB;KACF,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAErB,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;IAED,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,MAAM,aAAa;aAC7B,IAAI,EAAE;aACN,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAC,CAAC;QACzD,MAAM,KAAK,GACT,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,IAAI;YACjD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YACpB,CAAC,CAAC,2BAA2B,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC;QACvC,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAW5C,CAAC;IAEF,IAAI,cAAc,GAAG,sBAAsB,CAAC;IAC5C,IAAI,aAA4D,CAAC;IACjE,IAAI,cAAc,GAAG,IAAI,CAAC;IAE1B,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;QAC1D,MAAM,eAAe,GACnB,SAAS,CAAC,uBAAuB,IAAI,SAAS,CAAC,eAAe,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACrD,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,eAAe,EAAE,CAAC,CAAC,CAAC;QAClD,CAAC;QACD,IACE,SAAS,CAAC,eAAe;YACzB,eAAe,KAAK,SAAS,CAAC,eAAe,EAC7C,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,eAAe,CAAC,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB;YACnB,CAAC;QACH,CAAC;QAED,cAAc,GAAG,qCAAqC,CAAC;QACvD,aAAa,GAAG,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC;QACzD,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;SAAM,IACL,SAAS,CAAC,IAAI,KAAK,SAAS;QAC5B,SAAS,CAAC,SAAS;QACnB,SAAS,CAAC,QAAQ,EAClB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAC;QAEjE,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC;QAED,cAAc,GAAG,8BAA8B,CAAC;QAChD,aAAa,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC;QACnD,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC;QACxD,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAEpE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;QAE5B,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,gBAAgB,EAAE;YACjE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,YAAY,EAAE,SAAS;aACxB;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;SACpC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAErB,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAW5D,CAAC;QAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAClC,SAAS;QACX,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,wBAAwB,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,IACE,QAAQ,CAAC,MAAM,KAAK,UAAU;YAC9B,QAAQ,CAAC,WAAW;YACpB,QAAQ,CAAC,YAAY,EACrB,CAAC;YACD,MAAM,eAAe,CACnB;gBACE,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,YAAY,EAAE,QAAQ,CAAC,YAAY;gBACnC,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAC7B,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK;gBAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI;aAC1B,EACD,MAAM,CAAC,IAAI,CACZ,CAAC;YACF,OAAO,CAAC,OAAO,CAAC,kCAAkC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO;QACT,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAIA,wBAAsB,aAAa,CAAC,OAAO,CAAC,EAAE;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAIA,wBAAsB,aAAa,CAAC,OAAO,CAAC,EAAE;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBhB"}
|
package/dist/commands/logout.js
CHANGED
|
@@ -1,8 +1,22 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import { resolveContext } from "../api/context.js";
|
|
3
|
-
import { clearCredentials } from "../api/credentials.js";
|
|
3
|
+
import { clearCredentials, loadCredentials } from "../api/credentials.js";
|
|
4
4
|
export async function logoutCommand(options) {
|
|
5
5
|
const target = await resolveContext(options?.context);
|
|
6
|
+
const creds = await loadCredentials(target.name);
|
|
7
|
+
// Revoke session server-side if we have a refresh token
|
|
8
|
+
if (creds?.refreshToken) {
|
|
9
|
+
try {
|
|
10
|
+
await fetch(`${target.apiUrl}/auth/logout`, {
|
|
11
|
+
method: "POST",
|
|
12
|
+
headers: { "Content-Type": "application/json" },
|
|
13
|
+
body: JSON.stringify({ refreshToken: creds.refreshToken }),
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
// Best-effort — clear local creds regardless
|
|
18
|
+
}
|
|
19
|
+
}
|
|
6
20
|
await clearCredentials(target.name);
|
|
7
21
|
console.log(chalk.dim(`\n Logged out of ${target.name}.\n`));
|
|
8
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE1E,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAEnC;IACC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEjD,wDAAwD;IACxD,IAAI,KAAK,EAAE,YAAY,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,cAAc,EAAE;gBAC1C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC;aAC3D,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,6CAA6C;QAC/C,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lobu API client for eval runner.
|
|
3
|
+
* Extracted from chat.ts patterns — collects responses into buffers instead of streaming to stdout.
|
|
4
|
+
*/
|
|
5
|
+
interface Session {
|
|
6
|
+
agentId: string;
|
|
7
|
+
token: string;
|
|
8
|
+
base: string;
|
|
9
|
+
}
|
|
10
|
+
export interface CollectedResponse {
|
|
11
|
+
text: string;
|
|
12
|
+
latencyMs: number;
|
|
13
|
+
error?: string;
|
|
14
|
+
tokens?: {
|
|
15
|
+
inputTokens?: number;
|
|
16
|
+
outputTokens?: number;
|
|
17
|
+
totalTokens?: number;
|
|
18
|
+
};
|
|
19
|
+
traceId?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function createSession(gatewayUrl: string, authToken: string, opts?: {
|
|
22
|
+
agentId?: string;
|
|
23
|
+
forceNew?: boolean;
|
|
24
|
+
dryRun?: boolean;
|
|
25
|
+
provider?: string;
|
|
26
|
+
model?: string;
|
|
27
|
+
}): Promise<Session>;
|
|
28
|
+
export declare function sendMessage(session: Session, content: string): Promise<{
|
|
29
|
+
traceId?: string;
|
|
30
|
+
}>;
|
|
31
|
+
/**
|
|
32
|
+
* Connect to SSE stream and collect the full response text.
|
|
33
|
+
* Accumulates 'output' deltas until 'complete' event.
|
|
34
|
+
*/
|
|
35
|
+
export declare function collectResponse(session: Session, timeoutMs: number): Promise<CollectedResponse>;
|
|
36
|
+
export declare function deleteSession(session: Session): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Send a message and collect the full response in one call.
|
|
39
|
+
*/
|
|
40
|
+
export declare function sendAndCollect(session: Session, content: string, timeoutMs: number): Promise<CollectedResponse>;
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/eval/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,UAAU,OAAO;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE;IACL,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA,OAAO,CAAC,OAAO,CAAC,CA6BlB;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAmB/B;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,iBAAiB,CAAC,CA+E5B;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAOnE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,iBAAiB,CAAC,CAO5B"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lobu API client for eval runner.
|
|
3
|
+
* Extracted from chat.ts patterns — collects responses into buffers instead of streaming to stdout.
|
|
4
|
+
*/
|
|
5
|
+
export async function createSession(gatewayUrl, authToken, opts) {
|
|
6
|
+
const body = {
|
|
7
|
+
forceNew: opts?.forceNew ?? true,
|
|
8
|
+
dryRun: opts?.dryRun ?? true,
|
|
9
|
+
};
|
|
10
|
+
if (opts?.agentId)
|
|
11
|
+
body.agentId = opts.agentId;
|
|
12
|
+
if (opts?.provider)
|
|
13
|
+
body.provider = opts.provider;
|
|
14
|
+
if (opts?.model)
|
|
15
|
+
body.model = opts.model;
|
|
16
|
+
const res = await fetch(`${gatewayUrl}/api/v1/agents`, {
|
|
17
|
+
method: "POST",
|
|
18
|
+
headers: {
|
|
19
|
+
"Content-Type": "application/json",
|
|
20
|
+
Authorization: `Bearer ${authToken}`,
|
|
21
|
+
},
|
|
22
|
+
body: JSON.stringify(body),
|
|
23
|
+
});
|
|
24
|
+
if (!res.ok) {
|
|
25
|
+
const text = await res.text().catch(() => "");
|
|
26
|
+
throw new Error(`Failed to create session (${res.status}): ${text}`);
|
|
27
|
+
}
|
|
28
|
+
const data = (await res.json());
|
|
29
|
+
return {
|
|
30
|
+
agentId: data.agentId,
|
|
31
|
+
token: data.token,
|
|
32
|
+
base: `${gatewayUrl}/api/v1/agents/${data.agentId}`,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export async function sendMessage(session, content) {
|
|
36
|
+
const res = await fetch(`${session.base}/messages`, {
|
|
37
|
+
method: "POST",
|
|
38
|
+
headers: {
|
|
39
|
+
"Content-Type": "application/json",
|
|
40
|
+
Authorization: `Bearer ${session.token}`,
|
|
41
|
+
},
|
|
42
|
+
body: JSON.stringify({ content }),
|
|
43
|
+
});
|
|
44
|
+
if (!res.ok) {
|
|
45
|
+
const text = await res.text().catch(() => "");
|
|
46
|
+
throw new Error(`Failed to send message (${res.status}): ${text}`);
|
|
47
|
+
}
|
|
48
|
+
const data = (await res.json());
|
|
49
|
+
// Extract trace ID from W3C traceparent: "00-{traceId}-{spanId}-01"
|
|
50
|
+
const traceId = data.traceparent?.split("-")[1];
|
|
51
|
+
return { traceId };
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Connect to SSE stream and collect the full response text.
|
|
55
|
+
* Accumulates 'output' deltas until 'complete' event.
|
|
56
|
+
*/
|
|
57
|
+
export async function collectResponse(session, timeoutMs) {
|
|
58
|
+
const controller = new AbortController();
|
|
59
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
60
|
+
const start = Date.now();
|
|
61
|
+
try {
|
|
62
|
+
const res = await fetch(`${session.base}/events`, {
|
|
63
|
+
headers: { Authorization: `Bearer ${session.token}` },
|
|
64
|
+
signal: controller.signal,
|
|
65
|
+
});
|
|
66
|
+
if (!res.ok || !res.body) {
|
|
67
|
+
throw new Error(`SSE connection failed (${res.status})`);
|
|
68
|
+
}
|
|
69
|
+
const reader = res.body.getReader();
|
|
70
|
+
const decoder = new TextDecoder();
|
|
71
|
+
let buffer = "";
|
|
72
|
+
let currentEvent = "";
|
|
73
|
+
let text = "";
|
|
74
|
+
while (true) {
|
|
75
|
+
const { done, value } = await reader.read();
|
|
76
|
+
if (done)
|
|
77
|
+
break;
|
|
78
|
+
buffer += decoder.decode(value, { stream: true });
|
|
79
|
+
const lines = buffer.split("\n");
|
|
80
|
+
buffer = lines.pop() ?? "";
|
|
81
|
+
for (const line of lines) {
|
|
82
|
+
if (line.startsWith("event: ")) {
|
|
83
|
+
currentEvent = line.slice(7).trim();
|
|
84
|
+
}
|
|
85
|
+
else if (line.startsWith("data: ") && currentEvent) {
|
|
86
|
+
const data = parseJSON(line.slice(6));
|
|
87
|
+
if (!data)
|
|
88
|
+
continue;
|
|
89
|
+
switch (currentEvent) {
|
|
90
|
+
case "output":
|
|
91
|
+
if (typeof data.content === "string")
|
|
92
|
+
text += data.content;
|
|
93
|
+
break;
|
|
94
|
+
case "complete": {
|
|
95
|
+
const usage = data.usage;
|
|
96
|
+
return {
|
|
97
|
+
text,
|
|
98
|
+
latencyMs: Date.now() - start,
|
|
99
|
+
tokens: usage
|
|
100
|
+
? {
|
|
101
|
+
inputTokens: usage.input_tokens ?? usage.inputTokens,
|
|
102
|
+
outputTokens: usage.output_tokens ?? usage.outputTokens,
|
|
103
|
+
totalTokens: (usage.input_tokens ?? usage.inputTokens ?? 0) +
|
|
104
|
+
(usage.output_tokens ?? usage.outputTokens ?? 0),
|
|
105
|
+
}
|
|
106
|
+
: undefined,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
case "error":
|
|
110
|
+
return {
|
|
111
|
+
text,
|
|
112
|
+
latencyMs: Date.now() - start,
|
|
113
|
+
error: String(data.error ?? "Unknown error"),
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
currentEvent = "";
|
|
117
|
+
}
|
|
118
|
+
else if (line === "") {
|
|
119
|
+
currentEvent = "";
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return { text, latencyMs: Date.now() - start };
|
|
124
|
+
}
|
|
125
|
+
catch (err) {
|
|
126
|
+
if (err instanceof Error && err.name === "AbortError") {
|
|
127
|
+
return { text: "", latencyMs: Date.now() - start, error: "Timeout" };
|
|
128
|
+
}
|
|
129
|
+
throw err;
|
|
130
|
+
}
|
|
131
|
+
finally {
|
|
132
|
+
clearTimeout(timer);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
export async function deleteSession(session) {
|
|
136
|
+
await fetch(`${session.base}`, {
|
|
137
|
+
method: "DELETE",
|
|
138
|
+
headers: { Authorization: `Bearer ${session.token}` },
|
|
139
|
+
}).catch(() => {
|
|
140
|
+
// Best-effort cleanup — ignore failures
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Send a message and collect the full response in one call.
|
|
145
|
+
*/
|
|
146
|
+
export async function sendAndCollect(session, content, timeoutMs) {
|
|
147
|
+
// Start SSE collection first, then send message
|
|
148
|
+
const collecting = collectResponse(session, timeoutMs);
|
|
149
|
+
const { traceId } = await sendMessage(session, content);
|
|
150
|
+
const response = await collecting;
|
|
151
|
+
response.traceId = traceId;
|
|
152
|
+
return response;
|
|
153
|
+
}
|
|
154
|
+
function parseJSON(str) {
|
|
155
|
+
try {
|
|
156
|
+
const parsed = JSON.parse(str);
|
|
157
|
+
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
158
|
+
return parsed;
|
|
159
|
+
}
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/eval/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM-as-judge grader using the Lobu gateway.
|
|
3
|
+
*
|
|
4
|
+
* Borrows the Claude outcomes pattern: a separate evaluator context
|
|
5
|
+
* grades agent output against a markdown rubric with per-criterion scoring.
|
|
6
|
+
*/
|
|
7
|
+
import type { RubricResult, TurnResult } from "./types.js";
|
|
8
|
+
export declare function gradeWithRubric(gatewayUrl: string, authToken: string, rubricContent: string, turns: TurnResult[], timeoutMs: number): Promise<RubricResult>;
|
|
9
|
+
export declare function gradeInline(gatewayUrl: string, authToken: string, criteria: string, agentResponse: string, timeoutMs: number): Promise<{
|
|
10
|
+
passed: boolean;
|
|
11
|
+
score: number;
|
|
12
|
+
reason: string;
|
|
13
|
+
}>;
|
|
14
|
+
//# sourceMappingURL=grader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grader.d.ts","sourceRoot":"","sources":["../../src/eval/grader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAmC3D,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,UAAU,EAAE,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,CAAC,CAqBvB;AAED,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAiB7D"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM-as-judge grader using the Lobu gateway.
|
|
3
|
+
*
|
|
4
|
+
* Borrows the Claude outcomes pattern: a separate evaluator context
|
|
5
|
+
* grades agent output against a markdown rubric with per-criterion scoring.
|
|
6
|
+
*/
|
|
7
|
+
import { createSession, deleteSession, sendAndCollect, } from "./client.js";
|
|
8
|
+
const INLINE_JUDGE_PROMPT = `You are a strict evaluator. You will be given an AI agent's response and a criteria to judge it against.
|
|
9
|
+
|
|
10
|
+
You MUST respond with ONLY a JSON object, no other text:
|
|
11
|
+
{"passed": true, "score": 0.85, "reason": "one sentence explanation"}
|
|
12
|
+
|
|
13
|
+
Rules:
|
|
14
|
+
- "passed": true if the response meets the criteria, false otherwise
|
|
15
|
+
- "score": a number between 0.0 and 1.0
|
|
16
|
+
- "reason": a brief explanation (one sentence)
|
|
17
|
+
- Return ONLY the JSON object, nothing else
|
|
18
|
+
|
|
19
|
+
## Criteria
|
|
20
|
+
{{criteria}}
|
|
21
|
+
|
|
22
|
+
## Agent Response
|
|
23
|
+
{{response}}`;
|
|
24
|
+
const RUBRIC_JUDGE_PROMPT = `You are a strict evaluator. Grade the agent's conversation against each criterion in the rubric.
|
|
25
|
+
|
|
26
|
+
You MUST respond with ONLY a JSON object, no other text:
|
|
27
|
+
{"criteria": [{"name": "criterion name", "passed": true, "explanation": "why"}], "score": 0.85}
|
|
28
|
+
|
|
29
|
+
Rules:
|
|
30
|
+
- Score each criterion independently
|
|
31
|
+
- "score" is the overall score 0.0-1.0
|
|
32
|
+
- Return ONLY the JSON object, nothing else
|
|
33
|
+
|
|
34
|
+
## Rubric
|
|
35
|
+
{{rubric}}
|
|
36
|
+
|
|
37
|
+
## Conversation
|
|
38
|
+
{{transcript}}`;
|
|
39
|
+
export async function gradeWithRubric(gatewayUrl, authToken, rubricContent, turns, timeoutMs) {
|
|
40
|
+
const transcript = turns
|
|
41
|
+
.map((t) => `User: ${t.user}\nAgent: ${t.agent}`)
|
|
42
|
+
.join("\n\n");
|
|
43
|
+
const prompt = RUBRIC_JUDGE_PROMPT.replace("{{rubric}}", rubricContent).replace("{{transcript}}", transcript);
|
|
44
|
+
const session = await createSession(gatewayUrl, authToken, {
|
|
45
|
+
forceNew: true,
|
|
46
|
+
dryRun: true,
|
|
47
|
+
});
|
|
48
|
+
try {
|
|
49
|
+
const response = await sendAndCollect(session, prompt, timeoutMs);
|
|
50
|
+
return parseGraderResponse(response);
|
|
51
|
+
}
|
|
52
|
+
finally {
|
|
53
|
+
await deleteSession(session);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export async function gradeInline(gatewayUrl, authToken, criteria, agentResponse, timeoutMs) {
|
|
57
|
+
const prompt = INLINE_JUDGE_PROMPT.replace("{{criteria}}", criteria).replace("{{response}}", agentResponse);
|
|
58
|
+
const session = await createSession(gatewayUrl, authToken, {
|
|
59
|
+
forceNew: true,
|
|
60
|
+
dryRun: true,
|
|
61
|
+
});
|
|
62
|
+
try {
|
|
63
|
+
const response = await sendAndCollect(session, prompt, timeoutMs);
|
|
64
|
+
return parseInlineResponse(response);
|
|
65
|
+
}
|
|
66
|
+
finally {
|
|
67
|
+
await deleteSession(session);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function parseGraderResponse(response) {
|
|
71
|
+
if (response.error) {
|
|
72
|
+
return {
|
|
73
|
+
score: 0,
|
|
74
|
+
criteria: [{ name: "error", passed: false, explanation: response.error }],
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
const json = extractJSON(response.text);
|
|
79
|
+
const parsed = JSON.parse(json);
|
|
80
|
+
return {
|
|
81
|
+
score: typeof parsed.score === "number" ? parsed.score : 0,
|
|
82
|
+
criteria: Array.isArray(parsed.criteria)
|
|
83
|
+
? parsed.criteria.map((c) => ({
|
|
84
|
+
name: String(c.name ?? ""),
|
|
85
|
+
passed: Boolean(c.passed),
|
|
86
|
+
explanation: String(c.explanation ?? ""),
|
|
87
|
+
}))
|
|
88
|
+
: [],
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// Fallback: try to infer from prose response
|
|
93
|
+
return inferRubricFromText(response.text);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function parseInlineResponse(response) {
|
|
97
|
+
if (response.error) {
|
|
98
|
+
return { passed: false, score: 0, reason: response.error };
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
const json = extractJSON(response.text);
|
|
102
|
+
const parsed = JSON.parse(json);
|
|
103
|
+
return {
|
|
104
|
+
passed: Boolean(parsed.passed),
|
|
105
|
+
score: typeof parsed.score === "number" ? parsed.score : parsed.passed ? 1 : 0,
|
|
106
|
+
reason: String(parsed.reason ?? ""),
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
// Fallback: infer pass/fail from prose
|
|
111
|
+
return inferInlineFromText(response.text);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/** Extract JSON from text that may contain markdown fences or surrounding prose. */
|
|
115
|
+
function extractJSON(text) {
|
|
116
|
+
// Try to find JSON in markdown code block
|
|
117
|
+
const fenced = text.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);
|
|
118
|
+
if (fenced?.[1])
|
|
119
|
+
return fenced[1].trim();
|
|
120
|
+
// Try to find raw JSON object
|
|
121
|
+
const braceMatch = text.match(/\{[\s\S]*\}/);
|
|
122
|
+
if (braceMatch)
|
|
123
|
+
return braceMatch[0];
|
|
124
|
+
return text.trim();
|
|
125
|
+
}
|
|
126
|
+
/** Fallback: infer pass/fail from prose when JSON parsing fails. */
|
|
127
|
+
function inferInlineFromText(text) {
|
|
128
|
+
const lower = text.toLowerCase();
|
|
129
|
+
const positiveSignals = [
|
|
130
|
+
"yes",
|
|
131
|
+
"pass",
|
|
132
|
+
"meets",
|
|
133
|
+
"satisfies",
|
|
134
|
+
"correct",
|
|
135
|
+
"appropriate",
|
|
136
|
+
"good",
|
|
137
|
+
"well",
|
|
138
|
+
];
|
|
139
|
+
const negativeSignals = [
|
|
140
|
+
"no",
|
|
141
|
+
"fail",
|
|
142
|
+
"does not",
|
|
143
|
+
"doesn't",
|
|
144
|
+
"incorrect",
|
|
145
|
+
"missing",
|
|
146
|
+
"lacks",
|
|
147
|
+
"poor",
|
|
148
|
+
];
|
|
149
|
+
const posCount = positiveSignals.filter((s) => lower.includes(s)).length;
|
|
150
|
+
const negCount = negativeSignals.filter((s) => lower.includes(s)).length;
|
|
151
|
+
const passed = posCount > negCount;
|
|
152
|
+
return {
|
|
153
|
+
passed,
|
|
154
|
+
score: passed ? 0.7 : 0.3,
|
|
155
|
+
reason: `Inferred from prose (pos=${posCount}, neg=${negCount}): ${text.slice(0, 100)}`,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
/** Fallback: infer rubric result from prose when JSON parsing fails. */
|
|
159
|
+
function inferRubricFromText(text) {
|
|
160
|
+
const lower = text.toLowerCase();
|
|
161
|
+
const positiveSignals = ["pass", "meets", "satisfies", "good", "correct"];
|
|
162
|
+
const negativeSignals = ["fail", "does not", "doesn't", "missing", "poor"];
|
|
163
|
+
const posCount = positiveSignals.filter((s) => lower.includes(s)).length;
|
|
164
|
+
const negCount = negativeSignals.filter((s) => lower.includes(s)).length;
|
|
165
|
+
const passed = posCount > negCount;
|
|
166
|
+
return {
|
|
167
|
+
score: passed ? 0.7 : 0.3,
|
|
168
|
+
criteria: [
|
|
169
|
+
{
|
|
170
|
+
name: "overall",
|
|
171
|
+
passed,
|
|
172
|
+
explanation: `Inferred from prose: ${text.slice(0, 200)}`,
|
|
173
|
+
},
|
|
174
|
+
],
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=grader.js.map
|