@bolt-foundry/gambit 0.6.7 → 0.7.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/CHANGELOG.md +1 -110
- package/README.md +53 -23
- package/esm/gambit/simulator-ui/dist/bundle.js +1010 -333
- package/esm/gambit/simulator-ui/dist/bundle.js.map +3 -3
- package/esm/src/server.d.ts.map +1 -1
- package/esm/src/server.js +119 -0
- package/package.json +2 -2
- package/script/gambit/simulator-ui/dist/bundle.js +1010 -333
- package/script/gambit/simulator-ui/dist/bundle.js.map +3 -3
- package/script/src/server.d.ts.map +1 -1
- package/script/src/server.js +119 -0
package/esm/src/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/src/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAY5C,OAAO,KAAK,EAGV,aAAa,EAEd,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/src/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAY5C,OAAO,KAAK,EAGV,aAAa,EAEd,MAAM,2BAA2B,CAAC;AAuanC;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CA8wExC"}
|
package/esm/src/server.js
CHANGED
|
@@ -1205,6 +1205,124 @@ export function startWebSocketSimulator(opts) {
|
|
|
1205
1205
|
}), { status: 400, headers: { "content-type": "application/json" } });
|
|
1206
1206
|
}
|
|
1207
1207
|
}
|
|
1208
|
+
if (url.pathname === "/api/calibrate/flag") {
|
|
1209
|
+
if (req.method !== "POST") {
|
|
1210
|
+
return new Response("Method not allowed", { status: 405 });
|
|
1211
|
+
}
|
|
1212
|
+
try {
|
|
1213
|
+
const body = await req.json();
|
|
1214
|
+
if (!body.sessionId || !body.refId) {
|
|
1215
|
+
throw new Error("Missing sessionId or refId");
|
|
1216
|
+
}
|
|
1217
|
+
const state = readSessionState(body.sessionId);
|
|
1218
|
+
if (!state) {
|
|
1219
|
+
throw new Error("Session not found");
|
|
1220
|
+
}
|
|
1221
|
+
const meta = (state.meta && typeof state.meta === "object")
|
|
1222
|
+
? { ...state.meta }
|
|
1223
|
+
: {};
|
|
1224
|
+
const existingFlags = Array.isArray(meta.gradingFlags)
|
|
1225
|
+
? (meta.gradingFlags)
|
|
1226
|
+
: [];
|
|
1227
|
+
const flagIndex = existingFlags.findIndex((flag) => flag?.refId === body.refId);
|
|
1228
|
+
let nextFlags;
|
|
1229
|
+
let flagged = false;
|
|
1230
|
+
if (flagIndex >= 0) {
|
|
1231
|
+
nextFlags = existingFlags.filter((_, idx) => idx !== flagIndex);
|
|
1232
|
+
flagged = false;
|
|
1233
|
+
}
|
|
1234
|
+
else {
|
|
1235
|
+
const now = new Date().toISOString();
|
|
1236
|
+
nextFlags = [
|
|
1237
|
+
...existingFlags,
|
|
1238
|
+
{
|
|
1239
|
+
id: randomId("flag"),
|
|
1240
|
+
refId: body.refId,
|
|
1241
|
+
runId: body.runId,
|
|
1242
|
+
turnIndex: body.turnIndex,
|
|
1243
|
+
reason: body.reason?.trim() || undefined,
|
|
1244
|
+
createdAt: now,
|
|
1245
|
+
},
|
|
1246
|
+
];
|
|
1247
|
+
flagged = true;
|
|
1248
|
+
}
|
|
1249
|
+
const updated = persistSessionState({
|
|
1250
|
+
...state,
|
|
1251
|
+
meta: {
|
|
1252
|
+
...meta,
|
|
1253
|
+
gradingFlags: nextFlags,
|
|
1254
|
+
},
|
|
1255
|
+
});
|
|
1256
|
+
const sessionMeta = buildSessionMeta(body.sessionId, updated);
|
|
1257
|
+
appendDurableStreamEvent(CALIBRATE_STREAM_ID, {
|
|
1258
|
+
type: "calibrateSession",
|
|
1259
|
+
sessionId: body.sessionId,
|
|
1260
|
+
session: sessionMeta,
|
|
1261
|
+
});
|
|
1262
|
+
return new Response(JSON.stringify({
|
|
1263
|
+
sessionId: body.sessionId,
|
|
1264
|
+
flagged,
|
|
1265
|
+
flags: nextFlags,
|
|
1266
|
+
}), { headers: { "content-type": "application/json" } });
|
|
1267
|
+
}
|
|
1268
|
+
catch (err) {
|
|
1269
|
+
return new Response(JSON.stringify({
|
|
1270
|
+
error: err instanceof Error ? err.message : String(err),
|
|
1271
|
+
}), { status: 400, headers: { "content-type": "application/json" } });
|
|
1272
|
+
}
|
|
1273
|
+
}
|
|
1274
|
+
if (url.pathname === "/api/calibrate/flag/reason") {
|
|
1275
|
+
if (req.method !== "POST") {
|
|
1276
|
+
return new Response("Method not allowed", { status: 405 });
|
|
1277
|
+
}
|
|
1278
|
+
try {
|
|
1279
|
+
const body = await req.json();
|
|
1280
|
+
if (!body.sessionId || !body.refId) {
|
|
1281
|
+
throw new Error("Missing sessionId or refId");
|
|
1282
|
+
}
|
|
1283
|
+
const state = readSessionState(body.sessionId);
|
|
1284
|
+
if (!state) {
|
|
1285
|
+
throw new Error("Session not found");
|
|
1286
|
+
}
|
|
1287
|
+
const meta = (state.meta && typeof state.meta === "object")
|
|
1288
|
+
? { ...state.meta }
|
|
1289
|
+
: {};
|
|
1290
|
+
const existingFlags = Array.isArray(meta.gradingFlags)
|
|
1291
|
+
? (meta.gradingFlags)
|
|
1292
|
+
: [];
|
|
1293
|
+
const flagIndex = existingFlags.findIndex((flag) => flag?.refId === body.refId);
|
|
1294
|
+
if (flagIndex < 0) {
|
|
1295
|
+
throw new Error("Flag not found");
|
|
1296
|
+
}
|
|
1297
|
+
const updatedFlag = {
|
|
1298
|
+
...existingFlags[flagIndex],
|
|
1299
|
+
reason: body.reason?.trim() || undefined,
|
|
1300
|
+
};
|
|
1301
|
+
const nextFlags = existingFlags.map((flag, idx) => idx === flagIndex ? updatedFlag : flag);
|
|
1302
|
+
const updated = persistSessionState({
|
|
1303
|
+
...state,
|
|
1304
|
+
meta: {
|
|
1305
|
+
...meta,
|
|
1306
|
+
gradingFlags: nextFlags,
|
|
1307
|
+
},
|
|
1308
|
+
});
|
|
1309
|
+
const sessionMeta = buildSessionMeta(body.sessionId, updated);
|
|
1310
|
+
appendDurableStreamEvent(CALIBRATE_STREAM_ID, {
|
|
1311
|
+
type: "calibrateSession",
|
|
1312
|
+
sessionId: body.sessionId,
|
|
1313
|
+
session: sessionMeta,
|
|
1314
|
+
});
|
|
1315
|
+
return new Response(JSON.stringify({
|
|
1316
|
+
sessionId: body.sessionId,
|
|
1317
|
+
flags: nextFlags,
|
|
1318
|
+
}), { headers: { "content-type": "application/json" } });
|
|
1319
|
+
}
|
|
1320
|
+
catch (err) {
|
|
1321
|
+
return new Response(JSON.stringify({
|
|
1322
|
+
error: err instanceof Error ? err.message : String(err),
|
|
1323
|
+
}), { status: 400, headers: { "content-type": "application/json" } });
|
|
1324
|
+
}
|
|
1325
|
+
}
|
|
1208
1326
|
if (url.pathname === "/api/grading/reference") {
|
|
1209
1327
|
if (req.method !== "POST") {
|
|
1210
1328
|
return new Response("Method not allowed", { status: 405 });
|
|
@@ -1793,6 +1911,7 @@ export function startWebSocketSimulator(opts) {
|
|
|
1793
1911
|
sessionId,
|
|
1794
1912
|
messages: state.messages,
|
|
1795
1913
|
messageRefs: state.messageRefs,
|
|
1914
|
+
feedback: state.feedback,
|
|
1796
1915
|
traces: state.traces,
|
|
1797
1916
|
notes: state.notes,
|
|
1798
1917
|
meta: state.meta,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bolt-foundry/gambit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Agent harness framework for building, running, and verifying LLM workflows in Markdown and code.",
|
|
5
5
|
"homepage": "https://github.com/bolt-foundry/gambit",
|
|
6
6
|
"repository": {
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"gambit": "bin/gambit.cjs"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@bolt-foundry/gambit-core": "^0.
|
|
27
|
+
"@bolt-foundry/gambit-core": "^0.7.0",
|
|
28
28
|
"zod": "^3.23.8",
|
|
29
29
|
"@deno/shim-deno": "~0.18.0"
|
|
30
30
|
},
|