Rodar container como usuário node e corrigir resume do executor

- Dockerfile: usar USER node (UID 1000) para bypassPermissions funcionar
- Volumes mapeados para /home/node/ em vez de /root/
- Corrigir resume: voltar a usar -p para mensagens curtas de chat
- Manter stdin piping apenas em execute e summarize (prompts grandes)
This commit is contained in:
Frederico Castro
2026-02-28 00:19:08 -03:00
parent d662860c61
commit 1ef5903da1
2 changed files with 4 additions and 4 deletions

View File

@@ -4,7 +4,8 @@ COPY package*.json ./
RUN npm ci --omit=dev RUN npm ci --omit=dev
RUN npm install -g @anthropic-ai/claude-code RUN npm install -g @anthropic-ai/claude-code
COPY . . COPY . .
RUN mkdir -p data RUN mkdir -p data && chown -R node:node /app
USER node
ENV HOST=0.0.0.0 ENV HOST=0.0.0.0
ENV PORT=3000 ENV PORT=3000
EXPOSE 3000 EXPOSE 3000

View File

@@ -362,6 +362,7 @@ export function resume(agentConfig, sessionId, message, callbacks = {}) {
const model = agentConfig.model || 'claude-sonnet-4-6'; const model = agentConfig.model || 'claude-sonnet-4-6';
const args = [ const args = [
'--resume', sessionId, '--resume', sessionId,
'-p', sanitizeText(message),
'--output-format', 'stream-json', '--output-format', 'stream-json',
'--verbose', '--verbose',
'--model', model, '--model', model,
@@ -378,7 +379,7 @@ export function resume(agentConfig, sessionId, message, callbacks = {}) {
const spawnOptions = { const spawnOptions = {
env: cleanEnv(), env: cleanEnv(),
stdio: ['pipe', 'pipe', 'pipe'], stdio: ['ignore', 'pipe', 'pipe'],
}; };
if (agentConfig.workingDirectory && agentConfig.workingDirectory.trim()) { if (agentConfig.workingDirectory && agentConfig.workingDirectory.trim()) {
@@ -388,8 +389,6 @@ export function resume(agentConfig, sessionId, message, callbacks = {}) {
console.log(`[executor] Resumindo sessão: ${sessionId} | Execução: ${executionId}`); console.log(`[executor] Resumindo sessão: ${sessionId} | Execução: ${executionId}`);
const child = spawn(CLAUDE_BIN, args, spawnOptions); const child = spawn(CLAUDE_BIN, args, spawnOptions);
child.stdin.write(sanitizeText(message));
child.stdin.end();
activeExecutions.set(executionId, { activeExecutions.set(executionId, {
process: child, process: child,