(
req: Omit<DaemonRequest, 'token'>,
options: DaemonTransportOptions = {},
)
| 33 | }; |
| 34 | |
| 35 | export async function sendToDaemon( |
| 36 | req: Omit<DaemonRequest, 'token'>, |
| 37 | options: DaemonTransportOptions = {}, |
| 38 | ): Promise<DaemonResponse> { |
| 39 | const requestId = req.meta?.requestId ?? createRequestId(); |
| 40 | const debug = Boolean(req.meta?.debug || req.flags?.verbose); |
| 41 | const settings = resolveClientSettings(req); |
| 42 | const requestTimeoutMs = resolveDaemonRequestTimeoutMs(req); |
| 43 | const daemon = await withDiagnosticTimer( |
| 44 | 'daemon_startup', |
| 45 | async () => await ensureDaemon(settings), |
| 46 | { requestId, session: req.session }, |
| 47 | ); |
| 48 | const info = daemon.info; |
| 49 | const preparedRemoteRequest = await prepareRemoteRequestArtifacts(req, info); |
| 50 | writeInstallInProgressNotice(req.command); |
| 51 | |
| 52 | const request: DaemonRequest = { |
| 53 | ...req, |
| 54 | positionals: preparedRemoteRequest.positionals, |
| 55 | flags: preparedRemoteRequest.flags, |
| 56 | token: info.token, |
| 57 | meta: { |
| 58 | ...(req.meta ?? {}), |
| 59 | requestId, |
| 60 | debug, |
| 61 | includeCost: req.meta?.includeCost, |
| 62 | cwd: req.meta?.cwd, |
| 63 | sessionExplicit: req.meta?.sessionExplicit, |
| 64 | tenantId: req.meta?.tenantId ?? req.flags?.tenant, |
| 65 | runId: req.meta?.runId ?? req.flags?.runId, |
| 66 | leaseId: req.meta?.leaseId ?? req.flags?.leaseId, |
| 67 | sessionIsolation: req.meta?.sessionIsolation ?? req.flags?.sessionIsolation, |
| 68 | lockPolicy: req.meta?.lockPolicy, |
| 69 | lockPlatform: req.meta?.lockPlatform, |
| 70 | ...(preparedRemoteRequest.uploadedArtifactId |
| 71 | ? { uploadedArtifactId: preparedRemoteRequest.uploadedArtifactId } |
| 72 | : {}), |
| 73 | ...(preparedRemoteRequest.clientArtifactPaths |
| 74 | ? { clientArtifactPaths: preparedRemoteRequest.clientArtifactPaths } |
| 75 | : {}), |
| 76 | ...(preparedRemoteRequest.installSource |
| 77 | ? { installSource: preparedRemoteRequest.installSource } |
| 78 | : {}), |
| 79 | }, |
| 80 | }; |
| 81 | emitDiagnostic({ |
| 82 | level: 'info', |
| 83 | phase: 'daemon_request_prepare', |
| 84 | data: { |
| 85 | requestId, |
| 86 | command: req.command, |
| 87 | session: req.session, |
| 88 | }, |
| 89 | }); |
| 90 | try { |
| 91 | return await withDiagnosticTimer( |
| 92 | 'daemon_request', |
nothing calls this directly
no test coverage detected