@@ -6,6 +6,13 @@ import { sessionSchema, sessionStatusSchema, type Session, type SessionStatus }
66import { isoDateTimeSchema } from './time' ;
77import { configResponseSchema , type ConfigResponse } from './rest/config' ;
88import { workspaceSchema , type Workspace } from './workspace' ;
9+ import {
10+ approvalRequestSchema ,
11+ approvalResponseSchema ,
12+ type ApprovalRequest ,
13+ type ApprovalResponse ,
14+ } from './approval' ;
15+ import { questionRequestSchema , type QuestionRequest } from './question' ;
916
1017export interface TokenUsage {
1118 readonly inputOther : number ;
@@ -355,6 +362,43 @@ export interface SessionStatusChangedEvent {
355362 readonly current_prompt_id ?: string ;
356363}
357364
365+ export interface QuestionRequestedEvent extends QuestionRequest {
366+ readonly type : 'event.question.requested' ;
367+ }
368+
369+ export interface QuestionAnsweredEvent {
370+ readonly type : 'event.question.answered' ;
371+ readonly question_id : string ;
372+ readonly answers : unknown ;
373+ readonly resolved_at : string ;
374+ }
375+
376+ export interface QuestionDismissedEvent {
377+ readonly type : 'event.question.dismissed' ;
378+ readonly question_id : string ;
379+ readonly dismissed_at : string ;
380+ }
381+
382+ export interface QuestionExpiredEvent {
383+ readonly type : 'event.question.expired' ;
384+ readonly question_id : string ;
385+ }
386+
387+ export interface ApprovalRequestedEvent extends ApprovalRequest {
388+ readonly type : 'event.approval.requested' ;
389+ }
390+
391+ export interface ApprovalResolvedEvent extends ApprovalResponse {
392+ readonly type : 'event.approval.resolved' ;
393+ readonly approval_id : string ;
394+ readonly resolved_at : string ;
395+ }
396+
397+ export interface ApprovalExpiredEvent {
398+ readonly type : 'event.approval.expired' ;
399+ readonly approval_id : string ;
400+ }
401+
358402export interface ConfigChangedEvent {
359403 readonly type : 'event.config.changed' ;
360404 readonly changedFields : string [ ] ;
@@ -693,6 +737,13 @@ export type AgentEvent =
693737 | WorkspaceUpdatedEvent
694738 | WorkspaceDeletedEvent
695739 | SessionStatusChangedEvent
740+ | QuestionRequestedEvent
741+ | QuestionAnsweredEvent
742+ | QuestionDismissedEvent
743+ | QuestionExpiredEvent
744+ | ApprovalRequestedEvent
745+ | ApprovalResolvedEvent
746+ | ApprovalExpiredEvent
696747 | ConfigChangedEvent
697748 | GoalUpdatedEvent
698749 | SkillActivatedEvent
@@ -1082,6 +1133,43 @@ export const sessionStatusChangedEventSchema = z.object({
10821133 current_prompt_id : z . string ( ) . min ( 1 ) . optional ( ) ,
10831134} ) satisfies z . ZodType < SessionStatusChangedEvent > ;
10841135
1136+ export const questionRequestedEventSchema = questionRequestSchema . extend ( {
1137+ type : z . literal ( 'event.question.requested' ) ,
1138+ } ) satisfies z . ZodType < QuestionRequestedEvent > ;
1139+
1140+ export const questionAnsweredEventSchema = z . object ( {
1141+ type : z . literal ( 'event.question.answered' ) ,
1142+ question_id : z . string ( ) . min ( 1 ) ,
1143+ answers : z . unknown ( ) . nullable ( ) ,
1144+ resolved_at : isoDateTimeSchema ,
1145+ } ) satisfies z . ZodType < QuestionAnsweredEvent > ;
1146+
1147+ export const questionDismissedEventSchema = z . object ( {
1148+ type : z . literal ( 'event.question.dismissed' ) ,
1149+ question_id : z . string ( ) . min ( 1 ) ,
1150+ dismissed_at : isoDateTimeSchema ,
1151+ } ) satisfies z . ZodType < QuestionDismissedEvent > ;
1152+
1153+ export const questionExpiredEventSchema = z . object ( {
1154+ type : z . literal ( 'event.question.expired' ) ,
1155+ question_id : z . string ( ) . min ( 1 ) ,
1156+ } ) satisfies z . ZodType < QuestionExpiredEvent > ;
1157+
1158+ export const approvalRequestedEventSchema = approvalRequestSchema . extend ( {
1159+ type : z . literal ( 'event.approval.requested' ) ,
1160+ } ) satisfies z . ZodType < ApprovalRequestedEvent > ;
1161+
1162+ export const approvalResolvedEventSchema = approvalResponseSchema . extend ( {
1163+ type : z . literal ( 'event.approval.resolved' ) ,
1164+ approval_id : z . string ( ) . min ( 1 ) ,
1165+ resolved_at : isoDateTimeSchema ,
1166+ } ) satisfies z . ZodType < ApprovalResolvedEvent > ;
1167+
1168+ export const approvalExpiredEventSchema = z . object ( {
1169+ type : z . literal ( 'event.approval.expired' ) ,
1170+ approval_id : z . string ( ) . min ( 1 ) ,
1171+ } ) satisfies z . ZodType < ApprovalExpiredEvent > ;
1172+
10851173export const configChangedEventSchema = z . object ( {
10861174 type : z . literal ( 'event.config.changed' ) ,
10871175 changedFields : z . array ( z . string ( ) ) ,
@@ -1406,6 +1494,13 @@ export const agentEventSchema = z.discriminatedUnion('type', [
14061494 workspaceUpdatedEventSchema ,
14071495 workspaceDeletedEventSchema ,
14081496 sessionStatusChangedEventSchema ,
1497+ questionRequestedEventSchema ,
1498+ questionAnsweredEventSchema ,
1499+ questionDismissedEventSchema ,
1500+ questionExpiredEventSchema ,
1501+ approvalRequestedEventSchema ,
1502+ approvalResolvedEventSchema ,
1503+ approvalExpiredEventSchema ,
14091504 goalUpdatedEventSchema ,
14101505 skillActivatedEventSchema ,
14111506 advisorStatusEventSchema ,
0 commit comments