From 3bdf0b41bc5ab19f1686b37858ef78f26fcbaa7e Mon Sep 17 00:00:00 2001 From: Alex Newman Date: Thu, 6 Nov 2025 22:03:11 -0500 Subject: [PATCH] chore: Remove unused imports and variables MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cleanup: - Removed unused SDKSystemMessage import - Removed unused ensureAllDataDirs import - Removed unused userPrompt destructuring in handleInit All TypeScript diagnostics now clear. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- plugin/scripts/worker-service.cjs | 4 ++-- src/services/worker-service.ts | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/plugin/scripts/worker-service.cjs b/plugin/scripts/worker-service.cjs index 551aafb6..8f19f668 100755 --- a/plugin/scripts/worker-service.cjs +++ b/plugin/scripts/worker-service.cjs @@ -639,7 +639,7 @@ IMPORTANT: This is not the end of the session. You will receive more requests to SELECT COUNT(*) as total FROM user_prompts up JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id - `,c=[],u=[];i&&(o+=" WHERE s.project = ?",l+=" WHERE s.project = ?",c.push(i),u.push(i)),o+=" ORDER BY created_at_epoch DESC LIMIT ? OFFSET ?",c.push(s,r);let f=n.db.prepare(o).all(...c),d=n.db.prepare(l),{total:h}=d.get(...u),m=r+s{Y.failure("WORKER","Failed to sync user_prompt to Chroma - continuing",{promptId:c.id},u)}),this.broadcastProcessingStatus(!0),Y.success("WORKER","Session initialized",{sessionId:r,port:Cn()}),a.json({status:"initialized",sessionDbId:r,port:Cn()})}handleObservation(e,a){let r=parseInt(e.params.sessionDbId,10),{tool_name:s,tool_input:i,tool_output:n,prompt_number:o}=e.body,l=this.getOrCreateSession(r),c=Y.formatTool(s,i);Y.dataIn("WORKER",`Observation queued: ${c}`,{sessionId:r,queue:l.pendingMessages.length+1}),l.pendingMessages.push({type:"observation",tool_name:s,tool_input:i,tool_output:n,prompt_number:o}),a.json({status:"queued",queueLength:l.pendingMessages.length})}handleSummarize(e,a){let r=parseInt(e.params.sessionDbId,10),{prompt_number:s}=e.body,i=this.getOrCreateSession(r);Y.dataIn("WORKER","Summary requested",{sessionId:r,promptNumber:s,queue:i.pendingMessages.length+1}),i.pendingMessages.push({type:"summarize",prompt_number:s}),a.json({status:"queued",queueLength:i.pendingMessages.length})}handleComplete(e,a){let r=parseInt(e.params.sessionDbId,10);Y.info("WORKER","Session completed - stopping spinner",{sessionId:r}),this.broadcastProcessingStatus(!1),a.json({status:"ok"})}handleStatus(e,a){let r=parseInt(e.params.sessionDbId,10),s=this.sessions.get(r);if(!s){a.status(404).json({error:"Session not found"});return}a.json({sessionDbId:r,sdkSessionId:s.sdkSessionId,project:s.project,pendingMessages:s.pendingMessages.length})}async runSDKAgent(e){Y.info("SDK","Agent starting",{sessionId:e.sessionDbId});let a=a$();Y.info("SDK",`Using Claude executable: ${a}`,{sessionId:e.sessionDbId});try{let r=qb({prompt:this.createMessageGenerator(e),options:{model:Y5,disallowedTools:e$,abortController:e.abortController,pathToClaudeCodeExecutable:a}});for await(let n of r){if(n.type==="assistant"){let o=n.message.content,l=Array.isArray(o)?o.filter(u=>u.type==="text").map(u=>u.text).join(` + `).get(n);o.close(),l&&this.broadcastSSE({type:"new_prompt",prompt:{id:l.id,claude_session_id:l.claude_session_id,project:l.project,prompt_number:l.prompt_number,prompt_text:l.prompt_text,created_at_epoch:l.created_at_epoch}}),l&&this.chromaSync.syncUserPrompt(l.id,l.sdk_session_id,l.project,l.prompt_text,l.prompt_number,l.created_at_epoch).catch(c=>{Y.failure("WORKER","Failed to sync user_prompt to Chroma - continuing",{promptId:l.id},c)}),this.broadcastProcessingStatus(!0),Y.success("WORKER","Session initialized",{sessionId:r,port:Cn()}),a.json({status:"initialized",sessionDbId:r,port:Cn()})}handleObservation(e,a){let r=parseInt(e.params.sessionDbId,10),{tool_name:s,tool_input:i,tool_output:n,prompt_number:o}=e.body,l=this.getOrCreateSession(r),c=Y.formatTool(s,i);Y.dataIn("WORKER",`Observation queued: ${c}`,{sessionId:r,queue:l.pendingMessages.length+1}),l.pendingMessages.push({type:"observation",tool_name:s,tool_input:i,tool_output:n,prompt_number:o}),a.json({status:"queued",queueLength:l.pendingMessages.length})}handleSummarize(e,a){let r=parseInt(e.params.sessionDbId,10),{prompt_number:s}=e.body,i=this.getOrCreateSession(r);Y.dataIn("WORKER","Summary requested",{sessionId:r,promptNumber:s,queue:i.pendingMessages.length+1}),i.pendingMessages.push({type:"summarize",prompt_number:s}),a.json({status:"queued",queueLength:i.pendingMessages.length})}handleComplete(e,a){let r=parseInt(e.params.sessionDbId,10);Y.info("WORKER","Session completed - stopping spinner",{sessionId:r}),this.broadcastProcessingStatus(!1),a.json({status:"ok"})}handleStatus(e,a){let r=parseInt(e.params.sessionDbId,10),s=this.sessions.get(r);if(!s){a.status(404).json({error:"Session not found"});return}a.json({sessionDbId:r,sdkSessionId:s.sdkSessionId,project:s.project,pendingMessages:s.pendingMessages.length})}async runSDKAgent(e){Y.info("SDK","Agent starting",{sessionId:e.sessionDbId});let a=a$();Y.info("SDK",`Using Claude executable: ${a}`,{sessionId:e.sessionDbId});try{let r=qb({prompt:this.createMessageGenerator(e),options:{model:Y5,disallowedTools:e$,abortController:e.abortController,pathToClaudeCodeExecutable:a}});for await(let n of r){if(n.type==="assistant"){let o=n.message.content,l=Array.isArray(o)?o.filter(u=>u.type==="text").map(u=>u.text).join(` `):typeof o=="string"?o:"",c=l.length;Y.dataOut("SDK",`Response received (${c} chars)`,{sessionId:e.sessionDbId,promptNumber:e.lastPromptNumber}),Y.debug("SDK","Full response",{sessionId:e.sessionDbId},l),this.handleAgentMessage(e,l,e.lastPromptNumber)}n.type==="result"&&n.subtype}let s=Date.now()-e.startTime;Y.success("SDK","Agent completed",{sessionId:e.sessionDbId,duration:`${(s/1e3).toFixed(1)}s`});let i=new br;i.markSessionCompleted(e.sessionDbId),i.close(),this.sessions.delete(e.sessionDbId)}catch(r){throw r.name==="AbortError"?Y.warn("SDK","Agent aborted",{sessionId:e.sessionDbId}):Y.failure("SDK","Agent error",{sessionId:e.sessionDbId},r),r}}async*createMessageGenerator(e){let a=fE(e.project,e.claudeSessionId,e.userPrompt);for(Y.dataIn("SDK",`Init prompt sent (${a.length} chars)`,{sessionId:e.sessionDbId,claudeSessionId:e.claudeSessionId,project:e.project}),Y.debug("SDK","Full init prompt",{sessionId:e.sessionDbId},a),yield{type:"user",session_id:e.claudeSessionId,parent_tool_use_id:null,message:{role:"user",content:a}};!e.abortController.signal.aborted;){if(e.pendingMessages.length===0){await new Promise(r=>setTimeout(r,r$));continue}for(;e.pendingMessages.length>0;){let r=e.pendingMessages.shift();if(r.type==="summarize"){e.lastPromptNumber=r.prompt_number;let s=new br,i=s.getSessionById(e.sessionDbId);s.close();let n=hE(i);Y.dataIn("SDK",`Summary prompt sent (${n.length} chars)`,{sessionId:e.sessionDbId,promptNumber:r.prompt_number}),Y.debug("SDK","Full summary prompt",{sessionId:e.sessionDbId},n),yield{type:"user",session_id:e.claudeSessionId,parent_tool_use_id:null,message:{role:"user",content:n}}}else if(r.type==="observation"){e.lastPromptNumber=r.prompt_number;let s=mE({id:0,tool_name:r.tool_name,tool_input:r.tool_input,tool_output:r.tool_output,created_at_epoch:Date.now()}),i=Y.formatTool(r.tool_name,r.tool_input);Y.dataIn("SDK",`Observation prompt: ${i}`,{sessionId:e.sessionDbId,promptNumber:r.prompt_number,size:`${s.length} chars`}),Y.debug("SDK","Full observation prompt",{sessionId:e.sessionDbId},s),yield{type:"user",session_id:e.claudeSessionId,parent_tool_use_id:null,message:{role:"user",content:s}}}}}}handleAgentMessage(e,a,r){Y.info("PARSER",`Processing response (${a.length} chars)`,{sessionId:e.sessionDbId,promptNumber:r,preview:a.substring(0,200)});let s=vE(a);s.length>0&&Y.info("PARSER",`Parsed ${s.length} observation(s)`,{sessionId:e.sessionDbId,promptNumber:r,types:s.map(o=>o.type).join(", ")});let i=new br;for(let o of s){let{id:l,createdAtEpoch:c}=i.storeObservation(e.claudeSessionId,e.project,o,r);Y.success("DB","Observation stored",{sessionId:e.sessionDbId,type:o.type,title:o.title,id:l}),this.broadcastSSE({type:"new_observation",observation:{id:l,session_id:e.claudeSessionId,type:o.type,title:o.title,subtitle:o.subtitle,project:e.project,prompt_number:r,created_at_epoch:c}}),this.chromaSync.syncObservation(l,e.claudeSessionId,e.project,o,r,c).then(()=>{Y.success("WORKER","Observation synced to Chroma",{sessionId:e.sessionDbId,observationId:l})}).catch(u=>{Y.error("WORKER","Observation sync failed - continuing",{sessionId:e.sessionDbId,observationId:l},u)})}Y.info("PARSER","Looking for summary tags...",{sessionId:e.sessionDbId});let n=gE(a,e.sessionDbId);if(n){Y.success("PARSER","Summary parsed successfully!",{sessionId:e.sessionDbId,promptNumber:r,hasRequest:!!n.request,hasInvestigated:!!n.investigated,hasLearned:!!n.learned,hasCompleted:!!n.completed,hasNextSteps:!!n.next_steps});let{id:o,createdAtEpoch:l}=i.storeSummary(e.claudeSessionId,e.project,n,r);Y.success("DB","\u{1F4DD} SUMMARY STORED IN DATABASE",{sessionId:e.sessionDbId,promptNumber:r,id:o}),this.broadcastSSE({type:"new_summary",summary:{id:o,session_id:e.claudeSessionId,request:n.request,investigated:n.investigated,learned:n.learned,completed:n.completed,next_steps:n.next_steps,notes:n.notes,project:e.project,prompt_number:r,created_at_epoch:l}}),this.chromaSync.syncSummary(o,e.claudeSessionId,e.project,n,r,l).then(()=>{Y.success("WORKER","Summary synced to Chroma",{sessionId:e.sessionDbId,summaryId:o})}).catch(c=>{Y.error("WORKER","Summary sync failed - continuing",{sessionId:e.sessionDbId,summaryId:o},c)})}else Y.warn("PARSER","NO SUMMARY TAGS FOUND in response",{sessionId:e.sessionDbId,promptNumber:r,contentSample:a.substring(0,500)});i.close(),this.checkAndStopSpinner()}};async function s$(){await new Qc().start(),process.on("SIGINT",()=>{Y.warn("SYSTEM","Shutting down (SIGINT)"),process.exit(0)}),process.on("SIGTERM",()=>{Y.warn("SYSTEM","Shutting down (SIGTERM)"),process.exit(0)})}s$().catch(t=>{Y.failure("SYSTEM","Fatal startup error",{},t),process.exit(1)});0&&(module.exports={WorkerService}); /*! Bundled license information: diff --git a/src/services/worker-service.ts b/src/services/worker-service.ts index e3d4b311..f107bb81 100644 --- a/src/services/worker-service.ts +++ b/src/services/worker-service.ts @@ -5,14 +5,13 @@ import express, { Request, Response } from 'express'; import { query } from '@anthropic-ai/claude-agent-sdk'; -import type { SDKUserMessage, SDKSystemMessage } from '@anthropic-ai/claude-agent-sdk'; +import type { SDKUserMessage } from '@anthropic-ai/claude-agent-sdk'; import { SessionStore } from './sqlite/SessionStore.js'; import { ChromaSync } from './sync/ChromaSync.js'; import { buildInitPrompt, buildObservationPrompt, buildSummaryPrompt } from '../sdk/prompts.js'; import { parseObservations, parseSummary } from '../sdk/parser.js'; import type { SDKSession } from '../sdk/prompts.js'; import { logger } from '../utils/logger.js'; -import { ensureAllDataDirs } from '../shared/paths.js'; import { execSync } from 'child_process'; import { readFileSync, writeFileSync, existsSync, statSync } from 'fs'; import { join, dirname } from 'path'; @@ -685,7 +684,7 @@ class WorkerService { */ private async handleInit(req: Request, res: Response): Promise { const sessionDbId = parseInt(req.params.sessionDbId, 10); - const { project, userPrompt } = req.body; + const { project } = req.body; logger.info('WORKER', 'Session init', { sessionDbId, project });