MCPcopy Index your code
hub / github.com/claude-code-best/claude-code / sendRequest

Method sendRequest

src/cli/structuredIO.ts:492–557  ·  view source on GitHub ↗
(
    request: SDKControlRequest['request'],
    schema: z.Schema,
    signal?: AbortSignal,
    requestId: string = randomUUID(),
  )

Source from the content-addressed store, hash-verified

490 }
491
492 private async sendRequest<Response>(
493 request: SDKControlRequest['request'],
494 schema: z.Schema,
495 signal?: AbortSignal,
496 requestId: string = randomUUID(),
497 ): Promise<Response> {
498 const message: SDKControlRequest = {
499 type: 'control_request',
500 request_id: requestId,
501 request,
502 }
503 if (this.inputClosed) {
504 throw new Error('Stream closed')
505 }
506 if (signal?.aborted) {
507 throw new Error('Request aborted')
508 }
509 this.outbound.enqueue(message)
510 if (
511 (request as { subtype?: string }).subtype === 'can_use_tool' &&
512 this.onControlRequestSent
513 ) {
514 this.onControlRequestSent(message)
515 }
516 const aborted = () => {
517 this.outbound.enqueue({
518 type: 'control_cancel_request',
519 request_id: requestId,
520 })
521 // Immediately reject the outstanding promise, without
522 // waiting for the host to acknowledge the cancellation.
523 const request = this.pendingRequests.get(requestId)
524 if (request) {
525 // Track the tool_use ID as resolved before rejecting, so that a
526 // late response from the host is ignored by the orphan handler.
527 this.trackResolvedToolUseId(request.request)
528 request.reject(new AbortError())
529 }
530 }
531 if (signal) {
532 signal.addEventListener('abort', aborted, {
533 once: true,
534 })
535 }
536 try {
537 return await new Promise<Response>((resolve, reject) => {
538 this.pendingRequests.set(requestId, {
539 request: {
540 type: 'control_request',
541 request_id: requestId,
542 request,
543 },
544 resolve: result => {
545 resolve(result as Response)
546 },
547 reject,
548 schema,
549 })

Callers 7

createCanUseToolMethod · 0.95
REPLFunction · 0.45
initializeFunction · 0.45
sendRequestFunction · 0.45
stopFunction · 0.45
sendRequestFunction · 0.45

Calls 4

setMethod · 0.80
deleteMethod · 0.65
resolveFunction · 0.50
enqueueMethod · 0.45

Tested by

no test coverage detected