Merge 047adb8c58 into 4583f88626
This commit is contained in:
commit
2468505d2f
@ -104,6 +104,30 @@ describe("session_status tool", () => {
|
||||
expect(details.statusText).not.toContain("OAuth/token status");
|
||||
});
|
||||
|
||||
it("accepts undefined args and defaults to current session", async () => {
|
||||
loadSessionStoreMock.mockReset();
|
||||
updateSessionStoreMock.mockReset();
|
||||
loadSessionStoreMock.mockReturnValue({
|
||||
main: {
|
||||
sessionId: "s1",
|
||||
updatedAt: 10,
|
||||
},
|
||||
});
|
||||
|
||||
const tool = createMoltbotTools({ agentSessionKey: "main" }).find(
|
||||
(candidate) => candidate.name === "session_status",
|
||||
);
|
||||
expect(tool).toBeDefined();
|
||||
if (!tool) throw new Error("missing session_status tool");
|
||||
|
||||
// Test with undefined args (the issue scenario)
|
||||
const result = await tool.execute("call1b", undefined as unknown as Record<string, unknown>);
|
||||
const details = result.details as { ok?: boolean; statusText?: string };
|
||||
expect(details.ok).toBe(true);
|
||||
expect(details.statusText).toContain("Moltbot");
|
||||
expect(details.statusText).toContain("🧠 Model:");
|
||||
});
|
||||
|
||||
it("errors for unknown session keys", async () => {
|
||||
loadSessionStoreMock.mockReset();
|
||||
updateSessionStoreMock.mockReset();
|
||||
|
||||
@ -48,10 +48,13 @@ import {
|
||||
} from "./sessions-helpers.js";
|
||||
import { loadCombinedSessionStoreForGateway } from "../../gateway/session-utils.js";
|
||||
|
||||
const SessionStatusToolSchema = Type.Object({
|
||||
sessionKey: Type.Optional(Type.String()),
|
||||
model: Type.Optional(Type.String()),
|
||||
});
|
||||
const SessionStatusToolSchema = Type.Object(
|
||||
{
|
||||
sessionKey: Type.Optional(Type.String()),
|
||||
model: Type.Optional(Type.String()),
|
||||
},
|
||||
{ additionalProperties: false },
|
||||
);
|
||||
|
||||
function formatApiKeySnippet(apiKey: string): string {
|
||||
const compact = apiKey.replace(/\s+/g, "");
|
||||
@ -241,15 +244,16 @@ export function createSessionStatusTool(opts?: {
|
||||
"Show a /status-equivalent session status card (usage + time + cost when available). Use for model-use questions (📊 session_status). Optional: set per-session model override (model=default resets overrides).",
|
||||
parameters: SessionStatusToolSchema,
|
||||
execute: async (_toolCallId, args) => {
|
||||
const params = args as Record<string, unknown>;
|
||||
const params = (args ?? {}) as Record<string, unknown>;
|
||||
const cfg = opts?.config ?? loadConfig();
|
||||
const { mainKey, alias } = resolveMainSessionAlias(cfg);
|
||||
const a2aPolicy = createAgentToAgentPolicy(cfg);
|
||||
|
||||
const requestedKeyParam = readStringParam(params, "sessionKey");
|
||||
let requestedKeyRaw = requestedKeyParam ?? opts?.agentSessionKey;
|
||||
if (!requestedKeyRaw?.trim()) {
|
||||
throw new Error("sessionKey required");
|
||||
let requestedKeyRaw = requestedKeyParam ?? opts?.agentSessionKey ?? "";
|
||||
if (!requestedKeyRaw.trim()) {
|
||||
// Default to current session if no key provided
|
||||
requestedKeyRaw = opts?.agentSessionKey ?? mainKey;
|
||||
}
|
||||
|
||||
const requesterAgentId = resolveAgentIdFromSessionKey(
|
||||
|
||||
Loading…
Reference in New Issue
Block a user