Skip to content

Commit 121c253

Browse files
committed
Handle abort cancellation and unwrap validateAgents result
1 parent bfc4f60 commit 121c253

File tree

5 files changed

+205
-118
lines changed

5 files changed

+205
-118
lines changed

cli/src/utils/__tests__/validate-agents-wrapper.test.ts

Lines changed: 64 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,11 @@ describe('validateAgentsWithNetworkHandling', () => {
1717
test('returns success with no errors', async () => {
1818
mockValidateAgents.mockResolvedValue({
1919
success: true,
20-
validationErrors: [],
21-
errorCount: 0,
20+
value: {
21+
success: true,
22+
validationErrors: [],
23+
errorCount: 0,
24+
},
2225
})
2326

2427
const result = await validateAgentsWithNetworkHandling(
@@ -34,8 +37,11 @@ describe('validateAgentsWithNetworkHandling', () => {
3437
test('passes through agent definitions and options correctly', async () => {
3538
mockValidateAgents.mockResolvedValue({
3639
success: true,
37-
validationErrors: [],
38-
errorCount: 0,
40+
value: {
41+
success: true,
42+
validationErrors: [],
43+
errorCount: 0,
44+
},
3945
})
4046

4147
const agents = [
@@ -58,9 +64,12 @@ describe('validateAgentsWithNetworkHandling', () => {
5864
]
5965

6066
mockValidateAgents.mockResolvedValue({
61-
success: false,
62-
validationErrors,
63-
errorCount: 2,
67+
success: true,
68+
value: {
69+
success: false,
70+
validationErrors,
71+
errorCount: 2,
72+
},
6473
})
6574

6675
const result = await validateAgentsWithNetworkHandling([], { remote: true })
@@ -77,9 +86,12 @@ describe('validateAgentsWithNetworkHandling', () => {
7786
}
7887

7988
mockValidateAgents.mockResolvedValue({
80-
success: false,
81-
validationErrors: [detailedError],
82-
errorCount: 1,
89+
success: true,
90+
value: {
91+
success: false,
92+
validationErrors: [detailedError],
93+
errorCount: 1,
94+
},
8395
})
8496

8597
const result = await validateAgentsWithNetworkHandling([], { remote: false })
@@ -94,7 +106,10 @@ describe('validateAgentsWithNetworkHandling', () => {
94106
const networkError = new Error('Failed to connect to validation API') as any
95107
networkError.code = 'NETWORK_ERROR'
96108

97-
mockValidateAgents.mockRejectedValue(networkError)
109+
mockValidateAgents.mockResolvedValue({
110+
success: false,
111+
error: networkError,
112+
})
98113

99114
const result = await validateAgentsWithNetworkHandling([], { remote: true })
100115

@@ -108,7 +123,10 @@ describe('validateAgentsWithNetworkHandling', () => {
108123
const networkError = new Error() as any
109124
networkError.code = 'NETWORK_ERROR'
110125

111-
mockValidateAgents.mockRejectedValue(networkError)
126+
mockValidateAgents.mockResolvedValue({
127+
success: false,
128+
error: networkError,
129+
})
112130

113131
const result = await validateAgentsWithNetworkHandling([], { remote: true })
114132

@@ -119,7 +137,10 @@ describe('validateAgentsWithNetworkHandling', () => {
119137
const networkError = new Error('Server timeout') as any
120138
networkError.code = 'NETWORK_ERROR'
121139

122-
mockValidateAgents.mockRejectedValue(networkError)
140+
mockValidateAgents.mockResolvedValue({
141+
success: false,
142+
error: networkError,
143+
})
123144

124145
const result = await validateAgentsWithNetworkHandling(
125146
[{ id: 'test' } as any],
@@ -170,8 +191,11 @@ describe('validateAgentsWithNetworkHandling', () => {
170191
test('uses remote validation when remote: true', async () => {
171192
mockValidateAgents.mockResolvedValue({
172193
success: true,
173-
validationErrors: [],
174-
errorCount: 0,
194+
value: {
195+
success: true,
196+
validationErrors: [],
197+
errorCount: 0,
198+
},
175199
})
176200

177201
await validateAgentsWithNetworkHandling([], { remote: true })
@@ -182,8 +206,11 @@ describe('validateAgentsWithNetworkHandling', () => {
182206
test('uses local validation when remote: false', async () => {
183207
mockValidateAgents.mockResolvedValue({
184208
success: true,
185-
validationErrors: [],
186-
errorCount: 0,
209+
value: {
210+
success: true,
211+
validationErrors: [],
212+
errorCount: 0,
213+
},
187214
})
188215

189216
await validateAgentsWithNetworkHandling([], { remote: false })
@@ -194,8 +221,11 @@ describe('validateAgentsWithNetworkHandling', () => {
194221
test('handles undefined options', async () => {
195222
mockValidateAgents.mockResolvedValue({
196223
success: true,
197-
validationErrors: [],
198-
errorCount: 0,
224+
value: {
225+
success: true,
226+
validationErrors: [],
227+
errorCount: 0,
228+
},
199229
})
200230

201231
await validateAgentsWithNetworkHandling([])
@@ -208,8 +238,11 @@ describe('validateAgentsWithNetworkHandling', () => {
208238
test('always returns the expected structure', async () => {
209239
mockValidateAgents.mockResolvedValue({
210240
success: true,
211-
validationErrors: [],
212-
errorCount: 0,
241+
value: {
242+
success: true,
243+
validationErrors: [],
244+
errorCount: 0,
245+
},
213246
})
214247

215248
const result = await validateAgentsWithNetworkHandling([])
@@ -225,20 +258,26 @@ describe('validateAgentsWithNetworkHandling', () => {
225258
// Test with network error
226259
const networkError = new Error('Network issue') as any
227260
networkError.code = 'NETWORK_ERROR'
228-
mockValidateAgents.mockRejectedValue(networkError)
261+
mockValidateAgents.mockResolvedValue({
262+
success: false,
263+
error: networkError,
264+
})
229265

230266
const networkResult = await validateAgentsWithNetworkHandling([])
231267
expect(typeof networkResult.networkError).toBe('string')
232268

233269
// Test without network error
234270
mockValidateAgents.mockResolvedValue({
235271
success: true,
236-
validationErrors: [],
237-
errorCount: 0,
272+
value: {
273+
success: true,
274+
validationErrors: [],
275+
errorCount: 0,
276+
},
238277
})
239278

240279
const successResult = await validateAgentsWithNetworkHandling([])
241280
expect(successResult.networkError).toBeNull()
242281
})
243282
})
244-
})
283+
})

cli/src/utils/validate-agents-wrapper.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,15 @@ export async function validateAgentsWithNetworkHandling(
1717
): Promise<ValidationResult> {
1818
try {
1919
const result = await validateAgentsSDK(agentDefinitions, options)
20+
if (!result.success) {
21+
throw result.error
22+
}
23+
24+
const { success: validationSucceeded, validationErrors } = result.value
2025

2126
return {
22-
success: result.success,
23-
validationErrors: result.validationErrors,
27+
success: validationSucceeded,
28+
validationErrors,
2429
networkError: null,
2530
}
2631
} catch (error) {
@@ -36,4 +41,4 @@ export async function validateAgentsWithNetworkHandling(
3641
// Re-throw unexpected errors
3742
throw error
3843
}
39-
}
44+
}

sdk/src/__tests__/abort-controller.test.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,12 @@ describe('Abort Controller - Single Controller Architecture', () => {
9999

100100
// Should return immediately (within 100ms) without trying to connect
101101
expect(elapsed).toBeLessThan(100)
102-
expect(result.output.type).toBe('error')
103-
if (result.output.type === 'error') {
104-
expect(result.output.message).toContain('cancelled')
102+
expect(result.success).toBe(true)
103+
if (result.success) {
104+
expect(result.value.output.type).toBe('error')
105+
if (result.value.output.type === 'error') {
106+
expect(result.value.output.message).toContain('cancelled')
107+
}
105108
}
106109
})
107110
})

0 commit comments

Comments
 (0)