diff --git a/package-lock.json b/package-lock.json index f48c00e..be3ea65 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.2.0", "license": "MIT", "dependencies": { - "@inkbox/sdk": "^0.4.7", + "@inkbox/sdk": "^0.4.10", "json5": "^2.2.3", "qrcode-terminal": "^0.12.0", "typebox": "^1.1.38" @@ -421,9 +421,9 @@ } }, "node_modules/@inkbox/sdk": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/@inkbox/sdk/-/sdk-0.4.7.tgz", - "integrity": "sha512-tao2R0/yayCMQWLpvBhSgGbCvS5JZuo19o4wMr0LRLta+tBUPYpMPlM3a8WQDerpxxS4w6ONRBo7evVpYLnWUQ==", + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/@inkbox/sdk/-/sdk-0.4.10.tgz", + "integrity": "sha512-IdySaW8c1UzETXruB5FEqDRJxhmizL4j7vOiKzcoR41ocaTT1gopYfAAWMMGtHdv0NEOEOCRW5AGEvDfYbLPOg==", "license": "MIT", "dependencies": { "@peculiar/x509": "^2.0.0", diff --git a/package.json b/package.json index bc621a0..d0bacf6 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "test:watch": "vitest" }, "dependencies": { - "@inkbox/sdk": "^0.4.7", + "@inkbox/sdk": "^0.4.10", "json5": "^2.2.3", "qrcode-terminal": "^0.12.0", "typebox": "^1.1.38" diff --git a/src/inbound/session.ts b/src/inbound/session.ts index 6ec1248..1a6969c 100644 --- a/src/inbound/session.ts +++ b/src/inbound/session.ts @@ -834,8 +834,8 @@ async function sendVoiceText( ); } -const IMESSAGE_TYPING_REFRESH_MS = 40_000; -const IMESSAGE_TYPING_MAX_MS = 300_000; +export const IMESSAGE_TYPING_REFRESH_MS = 40_000; +export const IMESSAGE_TYPING_MAX_MS = 300_000; export interface IMessageTypingPulse { start(conversationId: string | undefined): void; diff --git a/src/setup-wizard.ts b/src/setup-wizard.ts index 824b0fa..707198a 100644 --- a/src/setup-wizard.ts +++ b/src/setup-wizard.ts @@ -1217,6 +1217,7 @@ async function runSelfSignup(params: { { humanEmail, noteToHuman: SELF_SIGNUP_VERIFICATION_NOTE, + harness: "openclaw", ...(agentHandle ? { agentHandle } : {}), ...(displayName ? { displayName } : {}), }, diff --git a/tests/inbound/session.test.ts b/tests/inbound/session.test.ts index 66a308b..13b4e4b 100644 --- a/tests/inbound/session.test.ts +++ b/tests/inbound/session.test.ts @@ -130,6 +130,8 @@ vi.mock("openclaw/plugin-sdk/realtime-voice", () => ({ })); import { + IMESSAGE_TYPING_MAX_MS, + IMESSAGE_TYPING_REFRESH_MS, InkboxRealtimeAudioPacer, createIMessageTypingPulse, createInkboxSessionBridge, @@ -1924,16 +1926,16 @@ describe("createIMessageTypingPulse", () => { await vi.advanceTimersByTimeAsync(0); expect(sendIMessageTyping).toHaveBeenCalledTimes(1); - await vi.advanceTimersByTimeAsync(2000); + await vi.advanceTimersByTimeAsync(IMESSAGE_TYPING_REFRESH_MS); expect(sendIMessageTyping).toHaveBeenCalledTimes(2); // Starting again for the same conversation does not double-pulse. pulse.start("imconv-1"); - await vi.advanceTimersByTimeAsync(2000); + await vi.advanceTimersByTimeAsync(IMESSAGE_TYPING_REFRESH_MS); expect(sendIMessageTyping).toHaveBeenCalledTimes(3); pulse.stop("imconv-1"); - await vi.advanceTimersByTimeAsync(10_000); + await vi.advanceTimersByTimeAsync(IMESSAGE_TYPING_REFRESH_MS * 3); expect(sendIMessageTyping).toHaveBeenCalledTimes(3); }); @@ -1947,12 +1949,15 @@ describe("createIMessageTypingPulse", () => { const pulse = createIMessageTypingPulse(runtime as any); pulse.start("imconv-1"); - await vi.advanceTimersByTimeAsync(400_000); + await vi.advanceTimersByTimeAsync(IMESSAGE_TYPING_MAX_MS + IMESSAGE_TYPING_REFRESH_MS * 2); const countAtCap = sendIMessageTyping.mock.calls.length; - // 1 immediate + one per 2s tick until the 300s cap. - expect(countAtCap).toBe(150); + // 1 immediate pulse + one per refresh tick, until elapsed hits the cap (the + // capping tick stops without pulsing). + const expectedAtCap = + 1 + Math.floor((IMESSAGE_TYPING_MAX_MS - 1) / IMESSAGE_TYPING_REFRESH_MS); + expect(countAtCap).toBe(expectedAtCap); - await vi.advanceTimersByTimeAsync(20_000); + await vi.advanceTimersByTimeAsync(IMESSAGE_TYPING_REFRESH_MS * 2); expect(sendIMessageTyping).toHaveBeenCalledTimes(countAtCap); }); }); diff --git a/tests/setup-wizard.test.ts b/tests/setup-wizard.test.ts index 1685d2b..c053e70 100644 --- a/tests/setup-wizard.test.ts +++ b/tests/setup-wizard.test.ts @@ -792,6 +792,7 @@ describe("runSetupWizard", () => { { humanEmail: "dima@example.com", noteToHuman: "OpenClaw Inkbox plugin setup", + harness: "openclaw", agentHandle: "new-agent", displayName: "New Agent", },