feat: expand live chat and work server tools

This commit is contained in:
2026-04-30 11:40:02 +09:00
parent 42ae640470
commit 2df0ba30cb
112 changed files with 15241 additions and 996 deletions

View File

@@ -0,0 +1,67 @@
const CODEX_LIVE_DRAFT_STORAGE_KEY = 'codex-live:draft-bridge';
export type CodexLiveDraftPayload = {
text: string;
source: string;
createdAt: string;
autoSend?: boolean;
sendMode?: 'queue' | 'direct';
};
export function stashCodexLiveDraft(payload: CodexLiveDraftPayload) {
if (typeof window === 'undefined') {
return false;
}
const text = payload.text.trim();
if (!text) {
return false;
}
window.sessionStorage.setItem(
CODEX_LIVE_DRAFT_STORAGE_KEY,
JSON.stringify({
text,
source: payload.source.trim() || 'unknown',
createdAt: payload.createdAt.trim() || new Date().toISOString(),
autoSend: payload.autoSend === true,
sendMode: payload.sendMode === 'direct' ? 'direct' : 'queue',
}),
);
return true;
}
export function consumeCodexLiveDraft() {
if (typeof window === 'undefined') {
return null;
}
const raw = window.sessionStorage.getItem(CODEX_LIVE_DRAFT_STORAGE_KEY);
if (!raw) {
return null;
}
window.sessionStorage.removeItem(CODEX_LIVE_DRAFT_STORAGE_KEY);
try {
const payload = JSON.parse(raw) as Partial<CodexLiveDraftPayload>;
const text = typeof payload.text === 'string' ? payload.text.trim() : '';
if (!text) {
return null;
}
return {
text,
source: typeof payload.source === 'string' ? payload.source.trim() || 'unknown' : 'unknown',
createdAt:
typeof payload.createdAt === 'string' && payload.createdAt.trim()
? payload.createdAt.trim()
: new Date().toISOString(),
autoSend: payload.autoSend === true,
sendMode: payload.sendMode === 'direct' ? 'direct' : 'queue',
} satisfies CodexLiveDraftPayload;
} catch {
return null;
}
}