666db0b939
Persist goal runs in MySQL, bind agent runs to checkpoints, expose awaiting-approval UX in chat, and add admin inspection routes with local verify scripts. Co-authored-by: Cursor <cursoragent@cursor.com>
31 lines
928 B
JavaScript
31 lines
928 B
JavaScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
import { findAwaitingApprovalCheckpoint, listAwaitingGoalRuns } from './goal-run-awaiting.mjs';
|
|
|
|
test('findAwaitingApprovalCheckpoint returns awaiting checkpoint', () => {
|
|
const checkpoint = findAwaitingApprovalCheckpoint({
|
|
id: 'goal-1',
|
|
checkpoints: [
|
|
{ id: 'cp-1', status: 'approved' },
|
|
{ id: 'cp-2', status: 'awaiting_approval' },
|
|
],
|
|
});
|
|
assert.equal(checkpoint?.id, 'cp-2');
|
|
});
|
|
|
|
test('listAwaitingGoalRuns filters non-awaiting goals', () => {
|
|
const items = listAwaitingGoalRuns([
|
|
{
|
|
id: 'goal-1',
|
|
checkpoints: [{ id: 'cp-1', status: 'running' }],
|
|
},
|
|
{
|
|
id: 'goal-2',
|
|
checkpoints: [{ id: 'cp-2', status: 'awaiting_approval', title: '输出' }],
|
|
},
|
|
]);
|
|
assert.equal(items.length, 1);
|
|
assert.equal(items[0].goal.id, 'goal-2');
|
|
assert.equal(items[0].checkpoint.id, 'cp-2');
|
|
});
|