diff --git a/apps/broker/src/broker.ts b/apps/broker/src/broker.ts index 098c65b..e6b92f0 100644 --- a/apps/broker/src/broker.ts +++ b/apps/broker/src/broker.ts @@ -418,6 +418,7 @@ export async function setSummary( export interface QueueParams { meshId: string; senderMemberId: string; + senderSessionPubkey?: string; targetSpec: string; priority: Priority; nonce: string; @@ -432,6 +433,7 @@ export async function queueMessage(params: QueueParams): Promise { .values({ meshId: params.meshId, senderMemberId: params.senderMemberId, + senderSessionPubkey: params.senderSessionPubkey ?? null, targetSpec: params.targetSpec, priority: params.priority, nonce: params.nonce, @@ -520,7 +522,7 @@ export async function drainForMember( AND m.id = mq.sender_member_id RETURNING mq.id, mq.priority, mq.nonce, mq.ciphertext, mq.created_at, mq.sender_member_id, - m.peer_pubkey AS sender_pubkey + COALESCE(mq.sender_session_pubkey, m.peer_pubkey) AS sender_pubkey ) SELECT * FROM claimed ORDER BY created_at ASC, id ASC `); diff --git a/apps/broker/src/index.ts b/apps/broker/src/index.ts index 9bfa2ec..6a2f2e0 100644 --- a/apps/broker/src/index.ts +++ b/apps/broker/src/index.ts @@ -438,6 +438,7 @@ async function handleSend( const messageId = await queueMessage({ meshId: conn.meshId, senderMemberId: conn.memberId, + senderSessionPubkey: conn.sessionPubkey ?? undefined, targetSpec: msg.targetSpec, priority: msg.priority, nonce: msg.nonce, diff --git a/apps/cli/package.json b/apps/cli/package.json index 2c3fc15..c864375 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -1,6 +1,6 @@ { "name": "claudemesh-cli", - "version": "0.1.10", + "version": "0.1.11", "description": "Claude Code MCP client for claudemesh — peer mesh messaging between Claude sessions.", "keywords": [ "claude-code", diff --git a/packages/db/migrations/0006_add-sender-session-pubkey.sql b/packages/db/migrations/0006_add-sender-session-pubkey.sql new file mode 100644 index 0000000..b137755 --- /dev/null +++ b/packages/db/migrations/0006_add-sender-session-pubkey.sql @@ -0,0 +1 @@ +ALTER TABLE "mesh"."message_queue" ADD COLUMN "sender_session_pubkey" text; \ No newline at end of file diff --git a/packages/db/src/schema/mesh.ts b/packages/db/src/schema/mesh.ts index d0a7649..73cb19f 100644 --- a/packages/db/src/schema/mesh.ts +++ b/packages/db/src/schema/mesh.ts @@ -222,6 +222,7 @@ export const messageQueue = meshSchema.table("message_queue", { senderMemberId: text() .references(() => meshMember.id, { onDelete: "cascade", onUpdate: "cascade" }) .notNull(), + senderSessionPubkey: text(), targetSpec: text().notNull(), priority: messagePriorityEnum().notNull().default("next"), nonce: text().notNull(),