mirror of
https://github.com/CopilotKit/CopilotKit.git
synced 2026-09-14 16:26:20 +08:00
5ecdee36b8
Adds a durable persistence layer for @copilotkit/bot, replacing the
in-memory-only ActionStore with a pluggable StateStore.
- StateStore interface (kv/list/lock/dedup/queue) with a shared
conformance suite; MemoryStore default plus @copilotkit/bot-store-redis
and @copilotkit/bot-store-postgres backends.
- createBot({ store }): typed per-thread state via Standard Schema,
action snapshots persisted through the store, per-conversation turn
lock (onLockConflict drop|force), and inbound-event dedup keyed on a
stable eventId. ActionStore is kept as a deprecated alias.
- Cross-platform transcripts (bot.transcripts + identity resolver) with
age-bounded retention (prune on append + filter on read), and
runAgent({ transcript: true }) to auto-inject history and capture the
reply.
- createBot({ components }) re-registers components so durable actions
re-fire after a restart; restart-durability demo in examples/slack.
- Dedup is marked seen only after the turn lock is acquired, so a turn
dropped on lock-conflict does not burn its eventId (no lost retries).
- Release lockstep: bot-store-redis/postgres version with bot + bot-ui.
45 lines
1.2 KiB
CSS
45 lines
1.2 KiB
CSS
@import "tailwindcss";
|
|
|
|
:root {
|
|
--background: #ffffff;
|
|
--foreground: #18181b;
|
|
}
|
|
|
|
@theme inline {
|
|
--color-background: var(--background);
|
|
--color-foreground: var(--foreground);
|
|
--font-sans: var(--font-geist-sans);
|
|
--font-mono: var(--font-geist-mono);
|
|
}
|
|
|
|
html,
|
|
body {
|
|
height: 100%;
|
|
}
|
|
|
|
body {
|
|
background: var(--background);
|
|
color: var(--foreground);
|
|
font-family: var(--font-geist-sans), ui-sans-serif, system-ui, sans-serif;
|
|
}
|
|
|
|
/* Let the embedded CopilotKit chat fill the fixed-height panel it sits in. */
|
|
.chat-fill > * {
|
|
height: 100%;
|
|
}
|
|
|
|
/*
|
|
* Theme the embedded CopilotKit chat to match the app. It themes via --cpk-*
|
|
* variables (defined on :root); redefining them on this ancestor cascades into
|
|
* the [data-copilotkit] root inside. Here we just align the font to Geist so the
|
|
* chat stops looking like a generic default and reads as one surface with the page.
|
|
*/
|
|
.chat-fill {
|
|
--cpk-font-sans: var(--font-geist-sans), ui-sans-serif, system-ui, sans-serif;
|
|
--cpk-font-mono: var(--font-geist-mono), ui-monospace, monospace;
|
|
--cpk-default-font-family:
|
|
var(--font-geist-sans), ui-sans-serif, system-ui, sans-serif;
|
|
--cpk-default-mono-font-family:
|
|
var(--font-geist-mono), ui-monospace, monospace;
|
|
}
|