Skip to content

Commit 93d41ef

Browse files
committed
navigation-prompts
1 parent 5310c8b commit 93d41ef

5 files changed

Lines changed: 61 additions & 18 deletions

File tree

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "agent-swarm-kit",
3-
"version": "1.1.80",
3+
"version": "1.1.87",
44
"description": "A TypeScript library for building orchestrated framework-agnostic multi-agent AI systems",
55
"author": {
66
"name": "Petr Tripolsky",

src/template/createNavigateToAgent.ts

Lines changed: 49 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,13 @@ export interface INavigateToAgentParams {
5151
| ((clientId: string, defaultAgent: AgentName) => string | Promise<string>);
5252
toolOutput?:
5353
| string
54-
| ((clientId: string, agentName: AgentName) => string | Promise<string>);
54+
| ((clientId: string, lastAgent: AgentName, agentName: AgentName) => string | Promise<string>);
55+
lastMessage?: (
56+
clientId: string,
57+
lastMessage: string | null,
58+
lastAgent: AgentName,
59+
agentName: AgentName
60+
) => string | Promise<string>;
5561
emitMessage?:
5662
| string
5763
| ((
@@ -77,8 +83,8 @@ export interface INavigateToAgentParams {
7783
* @param {AgentName} agentName - The name of the agent navigated to.
7884
* @returns {string} A message confirming navigation to the agent.
7985
*/
80-
const DEFAULT_TOOL_OUTPUT = (_: SessionId, agentName: AgentName) =>
81-
`Successfully navigated to ${agentName}`;
86+
const DEFAULT_TOOL_OUTPUT = (_: SessionId, lastAgent: AgentName, agentName: AgentName) =>
87+
`Successfully navigated from ${lastAgent} to ${agentName}. Please do not call the navigate tool to ${lastAgent} during the next answer`;
8288

8389
/**
8490
* Default flush message prompting the user to repeat their input.
@@ -90,6 +96,21 @@ const DEFAULT_TOOL_OUTPUT = (_: SessionId, agentName: AgentName) =>
9096
const DEFAULT_FLUSH_MESSAGE = ({}: SessionId, {}: AgentName) =>
9197
`Sorry, I missed that. Could you repeat please`;
9298

99+
/**
100+
* Default function to retrieve the last user message for navigation scenarios.
101+
* Returns the last user message unchanged, ignoring the client and agent parameters.
102+
*
103+
* @param {SessionId} _ - The client session ID (unused).
104+
* @param {string} lastMessage - The last user message to be returned.
105+
* @param {AgentName} lastAgent - The previous agent name (unused).
106+
* @returns {string} The last user message.
107+
*/
108+
const DEFAULT_LAST_MESSAGE_FN = (
109+
_: SessionId,
110+
lastMessage: string,
111+
lastAgent: AgentName
112+
) => `User changed conversation topic. The next message recieved: ${lastMessage}. Continue conversation without navigation to ${lastAgent}`;
113+
93114
/**
94115
* Creates a function to navigate to a specified agent for a given client, handling navigation, message execution, emission, and tool output.
95116
* The factory generates a handler that checks navigation state, retrieves the last user message, commits tool outputs, and triggers execution or emission based on provided parameters.
@@ -124,6 +145,7 @@ const DEFAULT_FLUSH_MESSAGE = ({}: SessionId, {}: AgentName) =>
124145
* // Navigates to SupportAgent, commits dynamic tool output, and executes the message with the last user message.
125146
*/
126147
export const createNavigateToAgent = ({
148+
lastMessage: lastMessageFn = DEFAULT_LAST_MESSAGE_FN,
127149
executeMessage = DEFAULT_EXECUTE_MESSAGE,
128150
emitMessage,
129151
flushMessage = DEFAULT_FLUSH_MESSAGE,
@@ -161,14 +183,24 @@ export const createNavigateToAgent = ({
161183
toolId,
162184
typeof toolOutput === "string"
163185
? toolOutput
164-
: await toolOutput(clientId, agentName),
186+
: await toolOutput(clientId, lastAgent, agentName),
165187
clientId
166188
);
167189
await changeToAgent(agentName, clientId);
168190
await executeForce(
169191
typeof executeMessage === "string"
170192
? executeMessage
171-
: await executeMessage(clientId, lastMessage, lastAgent, agentName),
193+
: await executeMessage(
194+
clientId,
195+
await lastMessageFn(
196+
clientId,
197+
lastMessage,
198+
lastAgent,
199+
agentName
200+
),
201+
lastAgent,
202+
agentName
203+
),
172204
clientId
173205
);
174206
return;
@@ -184,14 +216,24 @@ export const createNavigateToAgent = ({
184216
toolId,
185217
typeof toolOutput === "string"
186218
? toolOutput
187-
: await toolOutput(clientId, agentName),
219+
: await toolOutput(clientId, lastAgent, agentName),
188220
clientId
189221
);
190222
await changeToAgent(agentName, clientId);
191223
await emitForce(
192224
typeof emitMessage === "string"
193225
? emitMessage
194-
: await emitMessage(clientId, lastMessage, lastAgent, agentName),
226+
: await emitMessage(
227+
clientId,
228+
await lastMessageFn(
229+
clientId,
230+
lastMessage,
231+
lastAgent,
232+
agentName
233+
),
234+
lastAgent,
235+
agentName
236+
),
195237
clientId
196238
);
197239
return;

src/template/createNavigateToTriageAgent.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ const DEFAULT_EXECUTE_MESSAGE = "";
4848
export interface INavigateToTriageParams {
4949
lastMessage?: (
5050
clientId: string,
51-
lastMessage: string,
51+
lastMessage: string | null,
52+
defaultAgent: AgentName,
5253
lastAgent: AgentName,
53-
defaultAgent: AgentName
5454
) => string | Promise<string>;
5555
flushMessage?:
5656
| string
@@ -73,9 +73,9 @@ const DEFAULT_REJECT_FN = (_: SessionId, defaultAgent: AgentName) =>
7373
const DEFAULT_LAST_MESSAGE_FN = (
7474
_: SessionId,
7575
lastMessage: string,
76-
lastAgent: AgentName
76+
defaultAgent: AgentName,
7777
) =>
78-
`I have been talking with ${lastAgent}. The last message was: ${lastMessage}`;
78+
`User changed conversation topic. The next message recieved: ${lastMessage}. Continue conversation based on the last message without navigating to ${defaultAgent}.`;
7979

8080
/**
8181
* Creates a function to navigate to a triage agent for a specific client, handling navigation, message execution, and tool output.
@@ -149,7 +149,7 @@ export const createNavigateToTriageAgent = ({
149149
clientId
150150
);
151151
await executeForce(
152-
await lastMessageFn(clientId, lastMessage, lastAgent, defaultAgent),
152+
await lastMessageFn(clientId, lastMessage, defaultAgent, lastAgent),
153153
clientId
154154
);
155155
return;

types.d.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11123,7 +11123,7 @@ declare const dumpClientPerformance: {
1112311123
* };
1112411124
*/
1112511125
interface INavigateToTriageParams {
11126-
lastMessage?: (clientId: string, lastMessage: string, lastAgent: AgentName, defaultAgent: AgentName) => string | Promise<string>;
11126+
lastMessage?: (clientId: string, lastMessage: string | null, defaultAgent: AgentName, lastAgent: AgentName) => string | Promise<string>;
1112711127
flushMessage?: string | ((clientId: string, defaultAgent: AgentName) => string | Promise<string>);
1112811128
executeMessage?: string | ((clientId: string, defaultAgent: AgentName) => string | Promise<string>);
1112911129
toolOutputAccept?: string | ((clientId: string, defaultAgent: AgentName) => string | Promise<string>);
@@ -11189,7 +11189,8 @@ declare const createNavigateToTriageAgent: ({ flushMessage, lastMessage: lastMes
1118911189
*/
1119011190
interface INavigateToAgentParams {
1119111191
flushMessage?: string | ((clientId: string, defaultAgent: AgentName) => string | Promise<string>);
11192-
toolOutput?: string | ((clientId: string, agentName: AgentName) => string | Promise<string>);
11192+
toolOutput?: string | ((clientId: string, lastAgent: AgentName, agentName: AgentName) => string | Promise<string>);
11193+
lastMessage?: (clientId: string, lastMessage: string | null, lastAgent: AgentName, agentName: AgentName) => string | Promise<string>;
1119311194
emitMessage?: string | ((clientId: string, lastMessage: string, lastAgent: string, agentName: AgentName) => string | Promise<string>);
1119411195
executeMessage?: string | ((clientId: string, lastMessage: string, lastAgent: string, agentName: AgentName) => string | Promise<string>);
1119511196
}
@@ -11226,7 +11227,7 @@ interface INavigateToAgentParams {
1122611227
* await navigate("tool-789", "client-012", "SupportAgent");
1122711228
* // Navigates to SupportAgent, commits dynamic tool output, and executes the message with the last user message.
1122811229
*/
11229-
declare const createNavigateToAgent: ({ executeMessage, emitMessage, flushMessage, toolOutput, }: INavigateToAgentParams) => (toolId: string, clientId: string, agentName: string) => Promise<void>;
11230+
declare const createNavigateToAgent: ({ lastMessage: lastMessageFn, executeMessage, emitMessage, flushMessage, toolOutput, }: INavigateToAgentParams) => (toolId: string, clientId: string, agentName: string) => Promise<void>;
1123011231

1123111232
/**
1123211233
* Adds navigation functionality to an agent by creating a tool that allows navigation to a specified agent.

0 commit comments

Comments
 (0)