@townco/agent 0.1.115 → 0.1.117
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1492,21 +1492,7 @@ export class AgentAcpAdapter {
|
|
|
1492
1492
|
toolCallBlock.subagentSessionId = meta.subagentSessionId;
|
|
1493
1493
|
}
|
|
1494
1494
|
if (meta?.subagentMessages) {
|
|
1495
|
-
logger.info("[SUBAGENT-ADAPTER] Updating toolCallBlock with subagent messages", {
|
|
1496
|
-
sessionId: params.sessionId,
|
|
1497
|
-
toolCallId: toolCallBlock.id,
|
|
1498
|
-
messagesReceived: meta.subagentMessages.length,
|
|
1499
|
-
firstMessageContentLength: meta.subagentMessages[0]?.content?.length,
|
|
1500
|
-
firstMessageBlocksCount: meta.subagentMessages[0]?.contentBlocks?.length,
|
|
1501
|
-
existingMessagesCount: toolCallBlock.subagentMessages?.length || 0,
|
|
1502
|
-
});
|
|
1503
1495
|
toolCallBlock.subagentMessages = meta.subagentMessages;
|
|
1504
|
-
logger.info("[SUBAGENT-ADAPTER] ToolCallBlock updated", {
|
|
1505
|
-
sessionId: params.sessionId,
|
|
1506
|
-
toolCallId: toolCallBlock.id,
|
|
1507
|
-
toolCallBlockMessagesCount: toolCallBlock.subagentMessages?.length,
|
|
1508
|
-
toolCallBlockFirstMessageLength: toolCallBlock.subagentMessages?.[0]?.content?.length,
|
|
1509
|
-
});
|
|
1510
1496
|
}
|
|
1511
1497
|
if (meta?.subagentCompleted !== undefined) {
|
|
1512
1498
|
toolCallBlock.subagentCompleted = meta.subagentCompleted;
|
|
@@ -1516,12 +1502,6 @@ export class AgentAcpAdapter {
|
|
|
1516
1502
|
if (updateMsg._meta) {
|
|
1517
1503
|
const subagentCompletedValue = updateMsg._meta
|
|
1518
1504
|
?.subagentCompleted;
|
|
1519
|
-
logger.info("[DEBUG] Adapter forwarding tool_call_update to client", {
|
|
1520
|
-
toolCallId: updateMsg.toolCallId,
|
|
1521
|
-
hasSubagentCompleted: subagentCompletedValue !== undefined,
|
|
1522
|
-
subagentCompleted: subagentCompletedValue,
|
|
1523
|
-
metaKeys: Object.keys(updateMsg._meta),
|
|
1524
|
-
});
|
|
1525
1505
|
this.connection.sessionUpdate({
|
|
1526
1506
|
sessionId: params.sessionId,
|
|
1527
1507
|
update: {
|
|
@@ -2020,13 +2000,6 @@ export class AgentAcpAdapter {
|
|
|
2020
2000
|
}
|
|
2021
2001
|
// Capture the return value (PromptResponse with tokenUsage)
|
|
2022
2002
|
_agentResponse = iterResult.value;
|
|
2023
|
-
logger.info("[MSG_ACCUMULATION] Generator loop completed", {
|
|
2024
|
-
sessionId: params.sessionId,
|
|
2025
|
-
pendingTextLength: pendingText.length,
|
|
2026
|
-
pendingTextPreview: pendingText.slice(0, 200),
|
|
2027
|
-
contentBlocksCount: contentBlocks.length,
|
|
2028
|
-
contentBlockTypes: contentBlocks.map((b) => b.type),
|
|
2029
|
-
});
|
|
2030
2003
|
// Flush any remaining pending text
|
|
2031
2004
|
flushPendingText();
|
|
2032
2005
|
}
|
|
@@ -2104,45 +2077,6 @@ export class AgentAcpAdapter {
|
|
|
2104
2077
|
// Store the complete assistant response in session messages
|
|
2105
2078
|
// Only store if session persistence is enabled
|
|
2106
2079
|
if (!this.noSession && contentBlocks.length > 0) {
|
|
2107
|
-
logger.info("[MSG_ACCUMULATION] Constructing final assistant message", {
|
|
2108
|
-
sessionId: params.sessionId,
|
|
2109
|
-
contentBlocksCount: contentBlocks.length,
|
|
2110
|
-
contentBlockTypes: contentBlocks.map((b) => b.type),
|
|
2111
|
-
contentBlockSummary: contentBlocks.map((b) => {
|
|
2112
|
-
if (b.type === "text") {
|
|
2113
|
-
return {
|
|
2114
|
-
type: "text",
|
|
2115
|
-
length: b.text.length,
|
|
2116
|
-
preview: b.text.slice(0, 100),
|
|
2117
|
-
};
|
|
2118
|
-
}
|
|
2119
|
-
if (b.type === "tool_call") {
|
|
2120
|
-
return {
|
|
2121
|
-
type: "tool_call",
|
|
2122
|
-
id: b.id,
|
|
2123
|
-
title: b.title,
|
|
2124
|
-
status: b.status,
|
|
2125
|
-
};
|
|
2126
|
-
}
|
|
2127
|
-
return { type: b.type };
|
|
2128
|
-
}),
|
|
2129
|
-
});
|
|
2130
|
-
// Debug: log contentBlocks before creating assistant message
|
|
2131
|
-
const subagentToolCalls = contentBlocks.filter((b) => b.type === "tool_call" && !!b.subagentMessages);
|
|
2132
|
-
if (subagentToolCalls.length > 0) {
|
|
2133
|
-
logger.info("[SUBAGENT-SESSION-SAVE] Creating assistant message with subagent tool calls", {
|
|
2134
|
-
sessionId: params.sessionId,
|
|
2135
|
-
totalContentBlocks: contentBlocks.length,
|
|
2136
|
-
subagentToolCallsCount: subagentToolCalls.length,
|
|
2137
|
-
subagentToolCallsDetails: subagentToolCalls.map((tc) => ({
|
|
2138
|
-
id: tc.id,
|
|
2139
|
-
title: tc.title,
|
|
2140
|
-
messagesCount: tc.subagentMessages?.length,
|
|
2141
|
-
firstMessageContentLength: tc.subagentMessages?.[0]?.content?.length,
|
|
2142
|
-
firstMessageBlocksCount: tc.subagentMessages?.[0]?.contentBlocks?.length,
|
|
2143
|
-
})),
|
|
2144
|
-
});
|
|
2145
|
-
}
|
|
2146
2080
|
const assistantMessage = {
|
|
2147
2081
|
role: "assistant",
|
|
2148
2082
|
content: contentBlocks,
|
|
@@ -2152,19 +2086,10 @@ export class AgentAcpAdapter {
|
|
|
2152
2086
|
const lastMessage = session.messages[session.messages.length - 1];
|
|
2153
2087
|
if (lastMessage && lastMessage.role === "assistant") {
|
|
2154
2088
|
// Update the existing message instead of adding a duplicate
|
|
2155
|
-
logger.debug("[MSG_ACCUMULATION] Updating existing assistant message", {
|
|
2156
|
-
sessionId: params.sessionId,
|
|
2157
|
-
previousContentBlocks: lastMessage.content.length,
|
|
2158
|
-
newContentBlocks: contentBlocks.length,
|
|
2159
|
-
});
|
|
2160
2089
|
session.messages[session.messages.length - 1] = assistantMessage;
|
|
2161
2090
|
}
|
|
2162
2091
|
else {
|
|
2163
2092
|
// Add new message (no mid-turn updates occurred)
|
|
2164
|
-
logger.debug("[MSG_ACCUMULATION] Adding new assistant message", {
|
|
2165
|
-
sessionId: params.sessionId,
|
|
2166
|
-
messageIndex: session.messages.length,
|
|
2167
|
-
});
|
|
2168
2093
|
session.messages.push(assistantMessage);
|
|
2169
2094
|
}
|
|
2170
2095
|
// Create context snapshot based on previous context
|
|
@@ -334,7 +334,9 @@ export class LangchainAgent {
|
|
|
334
334
|
const nonMcpToolMetadata = enabledTools.map(extractToolMetadata);
|
|
335
335
|
const nonMcpToolDefinitionsTokens = estimateAllToolsOverhead(nonMcpToolMetadata);
|
|
336
336
|
// Calculate TODO_WRITE_INSTRUCTIONS overhead if applicable
|
|
337
|
-
|
|
337
|
+
// Skip for subagents since the todo_write tool is filtered out for them
|
|
338
|
+
const isSubagentForTokens = req.sessionMeta?.[SUBAGENT_MODE_KEY] === true;
|
|
339
|
+
const hasTodoWriteTool = builtInNames.includes("todo_write") && !isSubagentForTokens;
|
|
338
340
|
const todoInstructionsTokens = hasTodoWriteTool
|
|
339
341
|
? countTokens(TODO_WRITE_INSTRUCTIONS)
|
|
340
342
|
: 0;
|
|
@@ -623,7 +625,9 @@ export class LangchainAgent {
|
|
|
623
625
|
agentConfig.systemPrompt = effectiveSystemPrompt;
|
|
624
626
|
}
|
|
625
627
|
// Inject system prompt with optional TodoWrite instructions
|
|
626
|
-
|
|
628
|
+
// Skip for subagents since the todo_write tool is filtered out for them
|
|
629
|
+
const isSubagentForPrompt = req.sessionMeta?.[SUBAGENT_MODE_KEY] === true;
|
|
630
|
+
const hasTodoWrite = builtInNames.includes("todo_write") && !isSubagentForPrompt;
|
|
627
631
|
if (hasTodoWrite) {
|
|
628
632
|
agentConfig.systemPrompt = `${agentConfig.systemPrompt ?? ""}\n\n${TODO_WRITE_INSTRUCTIONS}`;
|
|
629
633
|
}
|