MCPcopy
hub / github.com/codeaashu/claude-code / sendRequest

Method sendRequest

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

Source from the content-addressed store, hash-verified

467 }
468
469 private async sendRequest<Response>(
470 request: SDKControlRequest['request'],
471 schema: z.Schema,
472 signal?: AbortSignal,
473 requestId: string = randomUUID(),
474 ): Promise<Response> {
475 const message: SDKControlRequest = {
476 type: 'control_request',
477 request_id: requestId,
478 request,
479 }
480 if (this.inputClosed) {
481 throw new Error('Stream closed')
482 }
483 if (signal?.aborted) {
484 throw new Error('Request aborted')
485 }
486 this.outbound.enqueue(message)
487 if (request.subtype === 'can_use_tool' && this.onControlRequestSent) {
488 this.onControlRequestSent(message)
489 }
490 const aborted = () => {
491 this.outbound.enqueue({
492 type: 'control_cancel_request',
493 request_id: requestId,
494 })
495 // Immediately reject the outstanding promise, without
496 // waiting for the host to acknowledge the cancellation.
497 const request = this.pendingRequests.get(requestId)
498 if (request) {
499 // Track the tool_use ID as resolved before rejecting, so that a
500 // late response from the host is ignored by the orphan handler.
501 this.trackResolvedToolUseId(request.request)
502 request.reject(new AbortError())
503 }
504 }
505 if (signal) {
506 signal.addEventListener('abort', aborted, {
507 once: true,
508 })
509 }
510 try {
511 return await new Promise<Response>((resolve, reject) => {
512 this.pendingRequests.set(requestId, {
513 request: {
514 type: 'control_request',
515 request_id: requestId,
516 request,
517 },
518 resolve: result => {
519 resolve(result as Response)
520 },
521 reject,
522 schema,
523 })
524 })
525 } finally {
526 if (signal) {

Callers 8

createCanUseToolMethod · 0.95
callFunction · 0.80
REPLFunction · 0.80
initializeFunction · 0.80
sendRequestFunction · 0.80
stopFunction · 0.80
sendRequestFunction · 0.80

Calls 4

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

Tested by

no test coverage detected