@@ -15,6 +15,9 @@ import {
1515 EVALS_SETTINGS ,
1616} from '@roo-code/types' ;
1717import { IpcClient } from '@roo-code-cloud/ipc' ;
18+ import { createJobToken } from '@roo-code-cloud/job-auth' ;
19+ import { db , users } from '@roo-code-cloud/db/server' ;
20+ import { eq } from 'drizzle-orm' ;
1821
1922import type { JobPayload , JobType } from '@roo-code-cloud/db' ;
2023
@@ -53,6 +56,8 @@ export type RunTaskCallbacks = {
5356type RunTaskOptions < T extends JobType > = {
5457 jobType : T ;
5558 jobPayload : JobPayload < T > ;
59+ jobId ?: number ;
60+ userId ?: string ;
5661 prompt : string ;
5762 logger ?: Logger ;
5863 callbacks ?: RunTaskCallbacks ;
@@ -64,6 +69,8 @@ type RunTaskOptions<T extends JobType> = {
6469export const runTask = async < T extends JobType > ( {
6570 jobType,
6671 jobPayload,
72+ jobId,
73+ userId,
6774 prompt,
6875 logger,
6976 callbacks,
@@ -80,9 +87,36 @@ export const runTask = async <T extends JobType>({
8087 const cancelSignal = controller . signal ;
8188 const containerized = isFlyMachine ( ) || isDockerContainer ( ) ;
8289
90+ let envVars = `ROO_CODE_IPC_SOCKET_PATH=${ ipcSocketPath } ` ;
91+
92+ // Create JWT token if we have jobId and userId
93+ if ( jobId && userId ) {
94+ try {
95+ // Get user's org info
96+ const user = await db
97+ . select ( )
98+ . from ( users )
99+ . where ( eq ( users . id , userId ) )
100+ . limit ( 1 ) ;
101+ const orgId = user [ 0 ] ?. orgId || null ;
102+
103+ const token = await createJobToken (
104+ jobId . toString ( ) ,
105+ userId ,
106+ orgId ,
107+ TIMEOUT ,
108+ ) ;
109+
110+ envVars += ` ROO_CODE_CLOUD_TOKEN=${ token } ` ;
111+ } catch ( error ) {
112+ logger ?. error ( 'Failed to create job token:' , error ) ;
113+ // Continue without token - job will fall back to no auth
114+ }
115+ }
116+
83117 const codeCommand = containerized
84- ? `ROO_CODE_IPC_SOCKET_PATH= ${ ipcSocketPath } xvfb-run --auto-servernum --server-num=1 code --wait --log trace --disable-workspace-trust --disable-gpu --disable-lcd-text --no-sandbox --user-data-dir /roo/.vscode --password-store="basic" -n ${ workspacePath } `
85- : `ROO_CODE_IPC_SOCKET_PATH= ${ ipcSocketPath } code --disable-workspace-trust -n ${ workspacePath } ` ;
118+ ? `${ envVars } xvfb-run --auto-servernum --server-num=1 code --wait --log trace --disable-workspace-trust --disable-gpu --disable-lcd-text --no-sandbox --user-data-dir /roo/.vscode --password-store="basic" -n ${ workspacePath } `
119+ : `${ envVars } code --disable-workspace-trust -n ${ workspacePath } ` ;
86120
87121 if ( ! logger ) {
88122 logger = new Logger ( {
0 commit comments