MCPcopy Create free account
hub / github.com/tiann/hapi / setRPCHandlers

Method setRPCHandlers

cli/src/api/apiMachine.ts:250–308  ·  view source on GitHub ↗
({ spawnSession, stopSession, requestShutdown }: MachineRpcHandlers)

Source from the content-addressed store, hash-verified

248 }
249
250 setRPCHandlers({ spawnSession, stopSession, requestShutdown }: MachineRpcHandlers): void {
251 this.rpcHandlerManager.registerHandler(RPC_METHODS.SpawnHappySession, async (params: any) => {
252 const { directory, sessionId, resumeSessionId, machineId, approvedNewDirectoryCreation, agent, model, effort, modelReasoningEffort, yolo, permissionMode, token, sessionType, worktreeName } = params || {}
253
254 if (!directory) {
255 throw new Error('Directory is required')
256 }
257
258 const resolvedDirectory = await this.resolveForWorkspaceCheck(directory)
259 if (!this.isWithinWorkspaceRoots(resolvedDirectory)) {
260 return { type: 'error', errorMessage: 'Directory is outside this machine\'s workspace roots' }
261 }
262
263 const result = await spawnSession({
264 directory,
265 sessionId,
266 resumeSessionId,
267 machineId,
268 approvedNewDirectoryCreation,
269 agent,
270 model,
271 effort,
272 modelReasoningEffort,
273 yolo,
274 permissionMode,
275 token,
276 sessionType,
277 worktreeName
278 })
279
280 switch (result.type) {
281 case 'success':
282 return { type: 'success', sessionId: result.sessionId }
283 case 'requestToApproveDirectoryCreation':
284 return { type: 'requestToApproveDirectoryCreation', directory: result.directory }
285 case 'error':
286 return { type: 'error', errorMessage: result.errorMessage }
287 }
288 })
289
290 this.rpcHandlerManager.registerHandler(RPC_METHODS.StopSession, (params: any) => {
291 const { sessionId } = params || {}
292 if (!sessionId) {
293 throw new Error('Session ID is required')
294 }
295
296 const success = stopSession(sessionId)
297 if (!success) {
298 throw new Error('Session not found or failed to stop')
299 }
300
301 return { message: 'Session stopped' }
302 })
303
304 this.rpcHandlerManager.registerHandler(RPC_METHODS.StopRunner, () => {
305 setTimeout(() => requestShutdown(), 100)
306 return { message: 'Runner stop request acknowledged' }
307 })

Callers 1

startRunnerFunction · 0.80

Calls 5

spawnSessionFunction · 0.85
stopSessionFunction · 0.85
registerHandlerMethod · 0.45

Tested by

no test coverage detected