@stage5/lumine 0.3.28 → 0.3.29
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/lib/admin.js +23 -1
- package/package.json +1 -1
package/lib/admin.js
CHANGED
|
@@ -370,7 +370,7 @@ function buildApprovalOperation({ action, target, options }) {
|
|
|
370
370
|
// Code agent passes wrote (no model is called), then review what they could
|
|
371
371
|
// not settle (Mikey 2026-10-06: bulk AI work runs on Claude Code agents).
|
|
372
372
|
const ENGLISH_USAGE =
|
|
373
|
-
"Use: lumine admin english import <verdicts.json> --pass a|b | adjudicate <verdicts.json> | add-questions <questions.json> | relevel <moves.json> | mastery <userId> --reason <why> | backfill-distractors | summary | review [--limit <n>] | accept|retire <questionId> [--reason <text>] | retag <questionId> --skill <code> [--reason <text>] | build-candidates [--after <questionId>] [--limit <n>] | build-import <verdicts.json> | check-candidates [--after <questionId>] [--limit <n>] | check-import <verdicts.json> | check-broken [--after <questionId>] [--limit <n>]";
|
|
373
|
+
"Use: lumine admin english import <verdicts.json> --pass a|b | adjudicate <verdicts.json> | add-questions <questions.json> | relevel <moves.json> | mastery <userId> --reason <why> | backfill-distractors | summary | review [--limit <n>] | accept|retire <questionId> [--reason <text>] | retag <questionId> --skill <code> [--reason <text>] | build-candidates [--after <questionId>] [--limit <n>] | build-import <verdicts.json> | check-candidates [--after <questionId>] [--limit <n>] | check-import <verdicts.json> | check-broken [--after <questionId>] [--limit <n>] | check-apply <fixes.json> | check-verify <checked.json>";
|
|
374
374
|
const ENGLISH_IMPORT_MAX = 500;
|
|
375
375
|
|
|
376
376
|
function buildEnglishOperation({ action, target, options }) {
|
|
@@ -431,6 +431,28 @@ function buildEnglishOperation({ action, target, options }) {
|
|
|
431
431
|
? readOperation("english.check_candidates", withQuery("/cli/admin/english/item-checks/candidates", { after, limit: limitOf(1000, 200) }), { requiresRun: false })
|
|
432
432
|
: readOperation("english.check_broken", withQuery("/cli/admin/english/item-checks/broken", { after, limit: limitOf(500, 100) }), { requiresRun: false });
|
|
433
433
|
}
|
|
434
|
+
// Mikey's approved fixes: [{ questionId, version, fix? }] — the stored
|
|
435
|
+
// proposed fix, or one given (a tidy), applied as a new version
|
|
436
|
+
// checks from before fingerprints: [{ questionId, version, question,
|
|
437
|
+
// choices, key }] as the pass saw them; matches are kept, the rest dropped
|
|
438
|
+
if (action === "check-verify") {
|
|
439
|
+
if (!target) throw cliValidationError(ENGLISH_USAGE);
|
|
440
|
+
const raw = readAdminJsonFile(target, "<checked.json>", { maxBytes: 8 * 1024 * 1024 });
|
|
441
|
+
const items = Array.isArray(raw) ? raw : Array.isArray(raw?.items) ? raw.items : null;
|
|
442
|
+
if (!items || !items.length || items.length > ENGLISH_IMPORT_MAX) {
|
|
443
|
+
throw cliValidationError(`The file must hold 1 to ${ENGLISH_IMPORT_MAX} items (an array, or { items: [...] }).`);
|
|
444
|
+
}
|
|
445
|
+
return writeOperation("english.check_verify", "POST", "/cli/admin/english/item-checks/verify", { items }, { requiresRun: false, timeoutMs: 300000 });
|
|
446
|
+
}
|
|
447
|
+
if (action === "check-apply") {
|
|
448
|
+
if (!target) throw cliValidationError(ENGLISH_USAGE);
|
|
449
|
+
const raw = readAdminJsonFile(target, "<fixes.json>", { maxBytes: 4 * 1024 * 1024 });
|
|
450
|
+
const items = Array.isArray(raw) ? raw : Array.isArray(raw?.items) ? raw.items : null;
|
|
451
|
+
if (!items || !items.length || items.length > 200) {
|
|
452
|
+
throw cliValidationError("The file must hold 1 to 200 fixes (an array, or { items: [...] }).");
|
|
453
|
+
}
|
|
454
|
+
return writeOperation("english.check_apply", "POST", "/cli/admin/english/item-checks/apply", { items }, { requiresRun: false, timeoutMs: 300000 });
|
|
455
|
+
}
|
|
434
456
|
if (action === "check-import") {
|
|
435
457
|
if (!target) throw cliValidationError(ENGLISH_USAGE);
|
|
436
458
|
const raw = readAdminJsonFile(target, "<verdicts.json>", { maxBytes: 4 * 1024 * 1024 });
|