From 3590fdbdf7d36428f0d544e6dbcea5b33790bdd9 Mon Sep 17 00:00:00 2001 From: RainbowBird Date: Wed, 21 Jan 2026 23:23:20 +0800 Subject: [PATCH] feat(stage-ui): add datetime as context provider for chat --- packages/stage-ui/src/stores/chat.ts | 4 ++++ .../stores/chat/context-providers/datetime.ts | 22 +++++++++++++++++++ .../stores/chat/context-providers/index.ts | 1 + 3 files changed, 27 insertions(+) create mode 100644 packages/stage-ui/src/stores/chat/context-providers/datetime.ts create mode 100644 packages/stage-ui/src/stores/chat/context-providers/index.ts diff --git a/packages/stage-ui/src/stores/chat.ts b/packages/stage-ui/src/stores/chat.ts index 32d9968f8..8fc489582 100644 --- a/packages/stage-ui/src/stores/chat.ts +++ b/packages/stage-ui/src/stores/chat.ts @@ -12,6 +12,7 @@ import { ref, toRaw } from 'vue' import { useAnalytics } from '../composables' import { useLlmmarkerParser } from '../composables/llm-marker-parser' import { categorizeResponse, createStreamingCategorizer } from '../composables/response-categoriser' +import { createDatetimeContext } from './chat/context-providers' import { useChatContextStore } from './chat/context-store' import { createChatHooks } from './chat/hooks' import { useChatSessionStore } from './chat/session-store' @@ -99,6 +100,9 @@ export const useChatOrchestratorStore = defineStore('chat-orchestrator', () => { chatSession.ensureSession(sessionId) + // Inject current datetime context before composing the message + chatContext.ingestContextMessage(createDatetimeContext()) + const sendingCreatedAt = Date.now() const streamingMessageContext: ChatStreamEventContext = { message: { role: 'user', content: sendingMessage, createdAt: sendingCreatedAt }, diff --git a/packages/stage-ui/src/stores/chat/context-providers/datetime.ts b/packages/stage-ui/src/stores/chat/context-providers/datetime.ts new file mode 100644 index 000000000..8f08ccd4a --- /dev/null +++ b/packages/stage-ui/src/stores/chat/context-providers/datetime.ts @@ -0,0 +1,22 @@ +import type { ContextMessage } from '../../../types/chat' + +import { ContextUpdateStrategy } from '@proj-airi/server-sdk' +import { nanoid } from 'nanoid' + +const DATETIME_CONTEXT_ID = 'system:datetime' + +/** + * Creates a context message containing the current datetime information. + * This context is injected before each chat message to provide temporal awareness. + */ +export function createDatetimeContext(): ContextMessage { + const now = new Date() + + return { + id: nanoid(), + contextId: DATETIME_CONTEXT_ID, + strategy: ContextUpdateStrategy.ReplaceSelf, + text: `Current datetime: ${now.toISOString()} (${now.toLocaleString()})`, + createdAt: Date.now(), + } +} diff --git a/packages/stage-ui/src/stores/chat/context-providers/index.ts b/packages/stage-ui/src/stores/chat/context-providers/index.ts new file mode 100644 index 000000000..a4221dc1f --- /dev/null +++ b/packages/stage-ui/src/stores/chat/context-providers/index.ts @@ -0,0 +1 @@ +export { createDatetimeContext } from './datetime'