Compare commits
6 Commits
83db282892
...
v0.2.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cffe63680d | ||
|
|
f5fffd64b8 | ||
|
|
ad68bc912f | ||
|
|
d02d53d112 | ||
|
|
3ce7276e89 | ||
|
|
6d87e64859 |
@@ -2,7 +2,7 @@
|
|||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
"story-kit": {
|
"story-kit": {
|
||||||
"type": "http",
|
"type": "http",
|
||||||
"url": "http://localhost:3001/mcp"
|
"url": "http://localhost:3010/mcp"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
name: "Matrix bot structured conversation history"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Story 266: Matrix bot structured conversation history
|
||||||
|
|
||||||
|
## User Story
|
||||||
|
|
||||||
|
As a user chatting with the Matrix bot, I want it to remember and own its prior responses naturally, so that conversations feel like talking to one continuous entity rather than a new instance each message.
|
||||||
|
|
||||||
|
## Acceptance Criteria
|
||||||
|
|
||||||
|
- [ ] Conversation history is passed as structured API messages (user/assistant turns) rather than a flattened text prefix
|
||||||
|
- [ ] Claude recognises its prior responses as its own, maintaining consistent personality across a conversation
|
||||||
|
- [ ] Per-room history survives server restarts (persisted to disk or database)
|
||||||
|
- [ ] Rolling window trimming still applies to keep context bounded
|
||||||
|
- [ ] Multi-user rooms still attribute messages to the correct sender
|
||||||
|
|
||||||
|
## Out of Scope
|
||||||
|
|
||||||
|
- TBD
|
||||||
@@ -625,16 +625,17 @@ describe("Chat localStorage persistence (Story 145)", () => {
|
|||||||
|
|
||||||
// Verify sendChat was called with ALL prior messages + the new one
|
// Verify sendChat was called with ALL prior messages + the new one
|
||||||
expect(lastSendChatArgs).not.toBeNull();
|
expect(lastSendChatArgs).not.toBeNull();
|
||||||
expect(lastSendChatArgs?.messages).toHaveLength(3);
|
const args = lastSendChatArgs!;
|
||||||
expect(lastSendChatArgs?.messages[0]).toEqual({
|
expect(args.messages).toHaveLength(3);
|
||||||
|
expect(args.messages[0]).toEqual({
|
||||||
role: "user",
|
role: "user",
|
||||||
content: "What is Rust?",
|
content: "What is Rust?",
|
||||||
});
|
});
|
||||||
expect(lastSendChatArgs?.messages[1]).toEqual({
|
expect(args.messages[1]).toEqual({
|
||||||
role: "assistant",
|
role: "assistant",
|
||||||
content: "Rust is a systems programming language.",
|
content: "Rust is a systems programming language.",
|
||||||
});
|
});
|
||||||
expect(lastSendChatArgs?.messages[2]).toEqual({
|
expect(args.messages[2]).toEqual({
|
||||||
role: "user",
|
role: "user",
|
||||||
content: "Tell me more",
|
content: "Tell me more",
|
||||||
});
|
});
|
||||||
@@ -1343,7 +1344,7 @@ describe("Bug 264: Claude Code session ID persisted across browser refresh", ()
|
|||||||
|
|
||||||
expect(lastSendChatArgs).not.toBeNull();
|
expect(lastSendChatArgs).not.toBeNull();
|
||||||
expect(
|
expect(
|
||||||
(lastSendChatArgs?.config as Record<string, unknown>).session_id,
|
(lastSendChatArgs!.config as Record<string, unknown>).session_id,
|
||||||
).toBe("persisted-session-xyz");
|
).toBe("persisted-session-xyz");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user