From 41c6e889776b5124c50074e490186291baa7642c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 3 Feb 2026 18:54:56 -0800 Subject: [PATCH] Upgrade Letta Code SDK to 0.0.5 (#117) Breaking API changes in SDK 0.0.5 require: - Use createAgent() for new agents with custom systemPrompt and memory - Remove systemPrompt from createSession()/resumeSession() options Fixes #116 Co-authored-by: letta-code <248085862+letta-code@users.noreply.github.com> Co-authored-by: Cameron --- package-lock.json | 8 ++++---- package.json | 2 +- src/core/bot.ts | 22 +++++++++++++++------- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 512921a..964ca39 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@clack/prompts": "^0.11.0", "@hapi/boom": "^10.0.1", "@letta-ai/letta-client": "^1.7.7", - "@letta-ai/letta-code-sdk": "^0.0.4", + "@letta-ai/letta-code-sdk": "^0.0.5", "@types/express": "^5.0.6", "@types/node": "^25.0.10", "@types/node-schedule": "^2.1.8", @@ -1297,9 +1297,9 @@ } }, "node_modules/@letta-ai/letta-code-sdk": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@letta-ai/letta-code-sdk/-/letta-code-sdk-0.0.4.tgz", - "integrity": "sha512-ipNzKgZA0VF5npOBuQhL9wqQbvhzsEuSXhawqen/jdorSonIEnwFw7OvpVcVvxmah9+5yEk1KvD5ymrVJWu08A==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@letta-ai/letta-code-sdk/-/letta-code-sdk-0.0.5.tgz", + "integrity": "sha512-mBGZ9RFd2d4p4RffRctfE3yvEjM5AndIaXfqus6Nu3TNJcOs40c/AsdeeAFN61LLQ7gpqSea+Dh4/PE+zR+ABQ==", "license": "Apache-2.0", "dependencies": { "@letta-ai/letta-code": "latest" diff --git a/package.json b/package.json index 2d9caf2..679815b 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "@clack/prompts": "^0.11.0", "@hapi/boom": "^10.0.1", "@letta-ai/letta-client": "^1.7.7", - "@letta-ai/letta-code-sdk": "^0.0.4", + "@letta-ai/letta-code-sdk": "^0.0.5", "@types/express": "^5.0.6", "@types/node": "^25.0.10", "@types/node-schedule": "^2.1.8", diff --git a/src/core/bot.ts b/src/core/bot.ts index b329873..f128d5c 100644 --- a/src/core/bot.ts +++ b/src/core/bot.ts @@ -4,7 +4,7 @@ * Single agent, single conversation - chat continues across all channels. */ -import { createSession, resumeSession, type Session } from '@letta-ai/letta-code-sdk'; +import { createAgent, createSession, resumeSession, type Session } from '@letta-ai/letta-code-sdk'; import { mkdirSync } from 'node:fs'; import type { ChannelAdapter } from '../channels/types.js'; import type { BotConfig, InboundMessage, TriggerContext } from './types.js'; @@ -185,12 +185,11 @@ export class LettaBot { let session: Session; let usedDefaultConversation = false; let usedSpecificConversation = false; - // Base options for all sessions (model only included for new agents) + // Base options for sessions (systemPrompt/memory set via createAgent for new agents) const baseOptions = { permissionMode: 'bypassPermissions' as const, allowedTools: this.config.allowedTools, cwd: this.config.workingDir, - systemPrompt: SYSTEM_PROMPT, // bypassPermissions mode auto-allows all tools, no canUseTool callback needed }; @@ -211,7 +210,12 @@ export class LettaBot { } else { // Create new agent with default conversation console.log('[Bot] Creating new agent'); - session = createSession(undefined, { ...baseOptions, model: this.config.model, memory: loadMemoryBlocks(this.config.agentName) }); + const newAgentId = await createAgent({ + model: this.config.model, + systemPrompt: SYSTEM_PROMPT, + memory: loadMemoryBlocks(this.config.agentName), + }); + session = createSession(newAgentId, baseOptions); } console.log('[Bot] Session created/resumed'); @@ -450,12 +454,11 @@ export class LettaBot { text: string, _context?: TriggerContext ): Promise { - // Base options (model only for new agents) + // Base options for sessions (systemPrompt/memory set via createAgent for new agents) const baseOptions = { permissionMode: 'bypassPermissions' as const, allowedTools: this.config.allowedTools, cwd: this.config.workingDir, - systemPrompt: SYSTEM_PROMPT, // bypassPermissions mode auto-allows all tools, no canUseTool callback needed }; @@ -472,7 +475,12 @@ export class LettaBot { session = resumeSession(this.store.agentId, baseOptions); } else { // Create new agent with default conversation - session = createSession(undefined, { ...baseOptions, model: this.config.model, memory: loadMemoryBlocks(this.config.agentName) }); + const newAgentId = await createAgent({ + model: this.config.model, + systemPrompt: SYSTEM_PROMPT, + memory: loadMemoryBlocks(this.config.agentName), + }); + session = createSession(newAgentId, baseOptions); } try {