@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.
@@ -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;AA+ZnC;;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,CAwnExC"}
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"}
@@ -1241,6 +1241,124 @@ function startWebSocketSimulator(opts) {
1241
1241
  }), { status: 400, headers: { "content-type": "application/json" } });
1242
1242
  }
1243
1243
  }
1244
+ if (url.pathname === "/api/calibrate/flag") {
1245
+ if (req.method !== "POST") {
1246
+ return new Response("Method not allowed", { status: 405 });
1247
+ }
1248
+ try {
1249
+ const body = await req.json();
1250
+ if (!body.sessionId || !body.refId) {
1251
+ throw new Error("Missing sessionId or refId");
1252
+ }
1253
+ const state = readSessionState(body.sessionId);
1254
+ if (!state) {
1255
+ throw new Error("Session not found");
1256
+ }
1257
+ const meta = (state.meta && typeof state.meta === "object")
1258
+ ? { ...state.meta }
1259
+ : {};
1260
+ const existingFlags = Array.isArray(meta.gradingFlags)
1261
+ ? (meta.gradingFlags)
1262
+ : [];
1263
+ const flagIndex = existingFlags.findIndex((flag) => flag?.refId === body.refId);
1264
+ let nextFlags;
1265
+ let flagged = false;
1266
+ if (flagIndex >= 0) {
1267
+ nextFlags = existingFlags.filter((_, idx) => idx !== flagIndex);
1268
+ flagged = false;
1269
+ }
1270
+ else {
1271
+ const now = new Date().toISOString();
1272
+ nextFlags = [
1273
+ ...existingFlags,
1274
+ {
1275
+ id: randomId("flag"),
1276
+ refId: body.refId,
1277
+ runId: body.runId,
1278
+ turnIndex: body.turnIndex,
1279
+ reason: body.reason?.trim() || undefined,
1280
+ createdAt: now,
1281
+ },
1282
+ ];
1283
+ flagged = true;
1284
+ }
1285
+ const updated = persistSessionState({
1286
+ ...state,
1287
+ meta: {
1288
+ ...meta,
1289
+ gradingFlags: nextFlags,
1290
+ },
1291
+ });
1292
+ const sessionMeta = buildSessionMeta(body.sessionId, updated);
1293
+ (0, durable_streams_js_1.appendDurableStreamEvent)(CALIBRATE_STREAM_ID, {
1294
+ type: "calibrateSession",
1295
+ sessionId: body.sessionId,
1296
+ session: sessionMeta,
1297
+ });
1298
+ return new Response(JSON.stringify({
1299
+ sessionId: body.sessionId,
1300
+ flagged,
1301
+ flags: nextFlags,
1302
+ }), { headers: { "content-type": "application/json" } });
1303
+ }
1304
+ catch (err) {
1305
+ return new Response(JSON.stringify({
1306
+ error: err instanceof Error ? err.message : String(err),
1307
+ }), { status: 400, headers: { "content-type": "application/json" } });
1308
+ }
1309
+ }
1310
+ if (url.pathname === "/api/calibrate/flag/reason") {
1311
+ if (req.method !== "POST") {
1312
+ return new Response("Method not allowed", { status: 405 });
1313
+ }
1314
+ try {
1315
+ const body = await req.json();
1316
+ if (!body.sessionId || !body.refId) {
1317
+ throw new Error("Missing sessionId or refId");
1318
+ }
1319
+ const state = readSessionState(body.sessionId);
1320
+ if (!state) {
1321
+ throw new Error("Session not found");
1322
+ }
1323
+ const meta = (state.meta && typeof state.meta === "object")
1324
+ ? { ...state.meta }
1325
+ : {};
1326
+ const existingFlags = Array.isArray(meta.gradingFlags)
1327
+ ? (meta.gradingFlags)
1328
+ : [];
1329
+ const flagIndex = existingFlags.findIndex((flag) => flag?.refId === body.refId);
1330
+ if (flagIndex < 0) {
1331
+ throw new Error("Flag not found");
1332
+ }
1333
+ const updatedFlag = {
1334
+ ...existingFlags[flagIndex],
1335
+ reason: body.reason?.trim() || undefined,
1336
+ };
1337
+ const nextFlags = existingFlags.map((flag, idx) => idx === flagIndex ? updatedFlag : flag);
1338
+ const updated = persistSessionState({
1339
+ ...state,
1340
+ meta: {
1341
+ ...meta,
1342
+ gradingFlags: nextFlags,
1343
+ },
1344
+ });
1345
+ const sessionMeta = buildSessionMeta(body.sessionId, updated);
1346
+ (0, durable_streams_js_1.appendDurableStreamEvent)(CALIBRATE_STREAM_ID, {
1347
+ type: "calibrateSession",
1348
+ sessionId: body.sessionId,
1349
+ session: sessionMeta,
1350
+ });
1351
+ return new Response(JSON.stringify({
1352
+ sessionId: body.sessionId,
1353
+ flags: nextFlags,
1354
+ }), { headers: { "content-type": "application/json" } });
1355
+ }
1356
+ catch (err) {
1357
+ return new Response(JSON.stringify({
1358
+ error: err instanceof Error ? err.message : String(err),
1359
+ }), { status: 400, headers: { "content-type": "application/json" } });
1360
+ }
1361
+ }
1244
1362
  if (url.pathname === "/api/grading/reference") {
1245
1363
  if (req.method !== "POST") {
1246
1364
  return new Response("Method not allowed", { status: 405 });
@@ -1829,6 +1947,7 @@ function startWebSocketSimulator(opts) {
1829
1947
  sessionId,
1830
1948
  messages: state.messages,
1831
1949
  messageRefs: state.messageRefs,
1950
+ feedback: state.feedback,
1832
1951
  traces: state.traces,
1833
1952
  notes: state.notes,
1834
1953
  meta: state.meta,