mirror of
https://github.com/davidkaya/aryx.git
synced 2026-08-03 10:28:43 +02:00
Wire the sidecar user-input-requested protocol event through the main process, IPC layer, and renderer UI so agents can ask the user interactive questions with choices and freeform input. - Add UserInputRequestedEvent and ResolveUserInputCommand to sidecar protocol types - Add resolveUserInput method to SidecarClient and onUserInput callback to runTurn - Create PendingUserInputRecord domain type and add pendingUserInput to SessionRecord - Add handleUserInputRequested and resolveSessionUserInput to AryxAppService with handle management - Register sessions:resolve-user-input IPC channel with preload bridge - Create UserInputBanner component with choice buttons and freeform input - Integrate UserInputBanner into ChatPane with header indicator Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
import { describe, expect, test } from 'bun:test';
|
|
|
|
import {
|
|
markRunTurnPendingErrored,
|
|
shouldHandleRunTurnEvent,
|
|
type RunTurnPendingCommand,
|
|
} from '@main/sidecar/runTurnPending';
|
|
|
|
describe('run turn pending helpers', () => {
|
|
test('marks a run-turn pending command as errored and rejects it once', () => {
|
|
const rejected: Error[] = [];
|
|
const pending: RunTurnPendingCommand = {
|
|
kind: 'run-turn',
|
|
resolve: () => undefined,
|
|
reject: (error) => rejected.push(error),
|
|
onDelta: () => undefined,
|
|
onActivity: () => undefined,
|
|
onApproval: () => undefined,
|
|
onUserInput: () => undefined,
|
|
errored: false,
|
|
};
|
|
|
|
const first = markRunTurnPendingErrored(pending, 'boom');
|
|
const second = markRunTurnPendingErrored(pending, new Error('later'));
|
|
|
|
expect(first).toBeInstanceOf(Error);
|
|
expect(first.message).toBe('boom');
|
|
expect(second.message).toBe('later');
|
|
expect(pending.errored).toBe(true);
|
|
expect(rejected).toHaveLength(1);
|
|
expect(rejected[0].message).toBe('boom');
|
|
});
|
|
|
|
test('stops handling turn events after the pending command has errored', () => {
|
|
const pending: RunTurnPendingCommand = {
|
|
kind: 'run-turn',
|
|
resolve: () => undefined,
|
|
reject: () => undefined,
|
|
onDelta: () => undefined,
|
|
onActivity: () => undefined,
|
|
onApproval: () => undefined,
|
|
onUserInput: () => undefined,
|
|
errored: false,
|
|
};
|
|
|
|
expect(shouldHandleRunTurnEvent(pending)).toBe(true);
|
|
|
|
markRunTurnPendingErrored(pending, new Error('boom'));
|
|
|
|
expect(shouldHandleRunTurnEvent(pending)).toBe(false);
|
|
});
|
|
});
|