feat: add attachment support for Codex and Gemini agents

close #84
This commit is contained in:
weishu
2026-01-18 20:30:09 +08:00
parent 662ed952a3
commit ccdcb3d75d
2 changed files with 6 additions and 2 deletions
+3 -1
View File
@@ -10,6 +10,7 @@ import { startHappyServer } from '@/claude/utils/startHappyServer';
import { getHappyCliCommand } from '@/utils/spawnHappyCLI'; import { getHappyCliCommand } from '@/utils/spawnHappyCLI';
import { registerKillSessionHandler } from '@/claude/registerKillSessionHandler'; import { registerKillSessionHandler } from '@/claude/registerKillSessionHandler';
import { bootstrapSession } from '@/agent/sessionFactory'; import { bootstrapSession } from '@/agent/sessionFactory';
import { formatMessageWithAttachments } from '@/utils/attachmentFormatter';
function emitReadyIfIdle(props: { function emitReadyIfIdle(props: {
queueSize: () => number; queueSize: () => number;
@@ -45,7 +46,8 @@ export async function runAgentSession(opts: {
const messageQueue = new MessageQueue2<Record<string, never>>(() => hashObject({})); const messageQueue = new MessageQueue2<Record<string, never>>(() => hashObject({}));
session.onUserMessage((message) => { session.onUserMessage((message) => {
messageQueue.push(message.content.text, {}); const formattedText = formatMessageWithAttachments(message.content.text, message.content.attachments);
messageQueue.push(formattedText, {});
}); });
const backend: AgentBackend = AgentRegistry.create(opts.agentType); const backend: AgentBackend = AgentRegistry.create(opts.agentType);
+3 -1
View File
@@ -10,6 +10,7 @@ import { bootstrapSession } from '@/agent/sessionFactory';
import { createModeChangeHandler, createRunnerLifecycle, setControlledByUser } from '@/agent/runnerLifecycle'; import { createModeChangeHandler, createRunnerLifecycle, setControlledByUser } from '@/agent/runnerLifecycle';
import { isPermissionModeAllowedForFlavor } from '@hapi/protocol'; import { isPermissionModeAllowedForFlavor } from '@hapi/protocol';
import { PermissionModeSchema } from '@hapi/protocol/schemas'; import { PermissionModeSchema } from '@hapi/protocol/schemas';
import { formatMessageWithAttachments } from '@/utils/attachmentFormatter';
export { emitReadyIfIdle } from './utils/emitReadyIfIdle'; export { emitReadyIfIdle } from './utils/emitReadyIfIdle';
@@ -73,7 +74,8 @@ export async function runCodex(opts: {
const enhancedMode: EnhancedMode = { const enhancedMode: EnhancedMode = {
permissionMode: messagePermissionMode ?? 'default' permissionMode: messagePermissionMode ?? 'default'
}; };
messageQueue.push(message.content.text, enhancedMode); const formattedText = formatMessageWithAttachments(message.content.text, message.content.attachments);
messageQueue.push(formattedText, enhancedMode);
}); });
const formatFailureReason = (message: string): string => { const formatFailureReason = (message: string): string => {