feat: Model based toolset switching (#111)
Co-authored-by: cpacker <packercharles@gmail.com>
This commit is contained in:
@@ -7,7 +7,7 @@ import type {
|
||||
} from "@letta-ai/letta-client/resources/agents/agents";
|
||||
import type {
|
||||
ApprovalCreate,
|
||||
LettaMessageUnion,
|
||||
Message,
|
||||
} from "@letta-ai/letta-client/resources/agents/messages";
|
||||
import type { LlmConfig } from "@letta-ai/letta-client/resources/models/models";
|
||||
import { Box, Static } from "ink";
|
||||
@@ -131,7 +131,7 @@ export default function App({
|
||||
continueSession?: boolean;
|
||||
startupApproval?: ApprovalRequest | null; // Deprecated: use startupApprovals
|
||||
startupApprovals?: ApprovalRequest[];
|
||||
messageHistory?: LettaMessageUnion[];
|
||||
messageHistory?: Message[];
|
||||
tokenStreaming?: boolean;
|
||||
}) {
|
||||
// Track current agent (can change when swapping)
|
||||
@@ -1107,7 +1107,7 @@ export default function App({
|
||||
|
||||
try {
|
||||
const client = await getClient();
|
||||
await client.agents.modify(agentId, { name: newName });
|
||||
await client.agents.update(agentId, { name: newName });
|
||||
setAgentName(newName);
|
||||
|
||||
buffersRef.current.byId.set(cmdId, {
|
||||
@@ -1719,12 +1719,27 @@ export default function App({
|
||||
);
|
||||
setLlmConfig(updatedConfig);
|
||||
|
||||
// Update the same command with final result
|
||||
// After switching models, reload tools for the selected provider and relink
|
||||
const { switchToolsetForModel } = await import("../tools/toolset");
|
||||
const toolsetName = await switchToolsetForModel(
|
||||
selectedModel.handle ?? "",
|
||||
agentId,
|
||||
);
|
||||
|
||||
// Update the same command with final result (include toolset info)
|
||||
const autoToolsetLine = toolsetName
|
||||
? `Automatically switched toolset to ${toolsetName}. Use /toolset to change back if desired.`
|
||||
: null;
|
||||
const outputLines = [
|
||||
`Switched to ${selectedModel.label}`,
|
||||
...(autoToolsetLine ? [autoToolsetLine] : []),
|
||||
].join("\n");
|
||||
|
||||
buffersRef.current.byId.set(cmdId, {
|
||||
kind: "command",
|
||||
id: cmdId,
|
||||
input: `/model ${modelId}`,
|
||||
output: `Switched to ${selectedModel.label}`,
|
||||
output: outputLines,
|
||||
phase: "finished",
|
||||
success: true,
|
||||
});
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import type {
|
||||
LettaAssistantMessageContentUnion,
|
||||
LettaMessageUnion,
|
||||
LettaUserMessageContentUnion,
|
||||
Message,
|
||||
} from "@letta-ai/letta-client/resources/agents/messages";
|
||||
import type { Buffers } from "./accumulator";
|
||||
|
||||
@@ -53,10 +53,7 @@ function renderUserContentParts(
|
||||
return out;
|
||||
}
|
||||
|
||||
export function backfillBuffers(
|
||||
buffers: Buffers,
|
||||
history: LettaMessageUnion[],
|
||||
): void {
|
||||
export function backfillBuffers(buffers: Buffers, history: Message[]): void {
|
||||
// Clear buffers to ensure idempotency (in case this is called multiple times)
|
||||
buffers.order = [];
|
||||
buffers.byId.clear();
|
||||
|
||||
Reference in New Issue
Block a user