Simplify runAgent: just pass the prompt
- Remove context building (group name, chat JID, permissions) - Agent runs in group folder which determines its permissions - Caller handles response prefixing and where to send reply - Session provides continuity, no need for metadata in each message Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
23
src/index.ts
23
src/index.ts
@@ -90,21 +90,15 @@ async function processMessage(msg: NewMessage): Promise<void> {
|
|||||||
if (!prompt) return;
|
if (!prompt) return;
|
||||||
|
|
||||||
logger.info({ group: group.name, prompt: prompt.slice(0, 50) }, 'Processing message');
|
logger.info({ group: group.name, prompt: prompt.slice(0, 50) }, 'Processing message');
|
||||||
const response = await runAgent(group, prompt, msg.chat_jid);
|
const response = await runAgent(group, prompt);
|
||||||
if (response) await sendMessage(msg.chat_jid, response);
|
if (response) {
|
||||||
|
await sendMessage(msg.chat_jid, `${ASSISTANT_NAME}: ${response}`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function runAgent(group: RegisteredGroup, prompt: string, chatJid: string): Promise<string | null> {
|
async function runAgent(group: RegisteredGroup, prompt: string): Promise<string | null> {
|
||||||
const isMain = group.folder === 'main';
|
|
||||||
const groupDir = path.join(GROUPS_DIR, group.folder);
|
const groupDir = path.join(GROUPS_DIR, group.folder);
|
||||||
fs.mkdirSync(path.join(groupDir, 'logs'), { recursive: true });
|
fs.mkdirSync(groupDir, { recursive: true });
|
||||||
|
|
||||||
const context = `[WhatsApp message from group: ${group.name}]
|
|
||||||
[Reply to chat_jid: ${chatJid}]
|
|
||||||
[Can write to global memory (../CLAUDE.md): ${isMain}]
|
|
||||||
[Prefix your responses with "${ASSISTANT_NAME}:"]
|
|
||||||
|
|
||||||
User message: ${prompt}`;
|
|
||||||
|
|
||||||
const sessionId = sessions[group.folder];
|
const sessionId = sessions[group.folder];
|
||||||
let newSessionId: string | undefined;
|
let newSessionId: string | undefined;
|
||||||
@@ -112,7 +106,7 @@ User message: ${prompt}`;
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
for await (const message of query({
|
for await (const message of query({
|
||||||
prompt: context,
|
prompt,
|
||||||
options: {
|
options: {
|
||||||
cwd: groupDir,
|
cwd: groupDir,
|
||||||
resume: sessionId,
|
resume: sessionId,
|
||||||
@@ -134,7 +128,7 @@ User message: ${prompt}`;
|
|||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
logger.error({ group: group.name, err }, 'Agent error');
|
logger.error({ group: group.name, err }, 'Agent error');
|
||||||
return `${ASSISTANT_NAME}: Sorry, I encountered an error. Please try again.`;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newSessionId) {
|
if (newSessionId) {
|
||||||
@@ -142,7 +136,6 @@ User message: ${prompt}`;
|
|||||||
saveJson(path.join(DATA_DIR, 'sessions.json'), sessions);
|
saveJson(path.join(DATA_DIR, 'sessions.json'), sessions);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result) logger.info({ group: group.name, result: result.slice(0, 100) }, 'Agent response');
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user