import { ApiClient } from '../api-client'; import type { ChatChunkType, ChatFileInfo, ChatPayload, CommandResult, HistoryMessage, PageContextInfo } from '../types'; /** * Slack Marketplace 起点(読み取り専用ツールポリシー)のコマンドかどうかを判定する。 * chat-executor.ts(claude_code 経路)と api-chat-executor.ts(api 経路)の両方から * 参照される共有判定ロジック。 */ export declare function isSlackMarketplaceCommand(payload: ChatPayload): boolean; /** * 外部からのhistoryデータをパースし、有効なHistoryMessage配列を返す */ export declare function parseHistory(history: unknown): HistoryMessage[]; /** * Claude Code CLI 向けに会話履歴をメッセージに埋め込む */ export declare function formatHistoryForClaudeCode(history: HistoryMessage[], currentMessage: string): string; /** * ページコンテキスト(機能: 外部エージェント経路へのページコンテキスト配線)の防御・ * 自己認識文言。untrusted な `` ブロックの直前に前置する。 * エージェントは shell/ファイル実行権限を持つため、埋め込み先ページ由来テキストを * 指示として解釈しないよう明示する(英語固定・builtin 経路の PAGE_CONTEXT_GUARD_TEXT 相当)。 */ /** * 終端チャンク(done / error)をサーバーへ配信できなかったときのコマンド結果エラー。 * * 応答本文の生成自体は成功しているが、Web の「応答待ち」を解除する唯一のトリガーが * 届いていないため、利用者から見ると会話は完了していない。サーバー側はこの失敗結果を * 受けて会話を終端化する(api 側の補償経路)。 */ export declare const TERMINAL_CHUNK_UNDELIVERED_ERROR = "\u30C1\u30E3\u30C3\u30C8\u306E\u7D42\u7AEF\u30C1\u30E3\u30F3\u30AF\uFF08done / error\uFF09\u3092\u30B5\u30FC\u30D0\u30FC\u3078\u9001\u4FE1\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u5FDC\u7B54\u306F\u751F\u6210\u6E08\u307F\u3067\u3059\u304C\u914D\u4FE1\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"; export declare const PAGE_CONTEXT_FRAMING: string; /** * サーバから届く `payload.pageContext`(unknown)を検証して PageContextInfo に変換する。 * object でない/有効フィールドが無い場合は undefined。文字列でない・空文字は除外する。 */ export declare function parsePageContext(raw: unknown): PageContextInfo | undefined; /** * ページコンテキストを、Claude へ渡すメッセージ末尾に付加する untrusted 参考情報 * ブロックへ整形する(機能: 外部エージェント経路へのページコンテキスト配線)。 * - url/title/content は `` ブロック(防御文言を前置)。 * - user 情報は `` ブロック(別枠)。 * - ページ由来値の偽デリミタは ZWSP で無害化する。 * 出力すべき値が無い場合は空文字を返す。 */ export declare function buildPageContextNotice(pageContext: PageContextInfo | undefined): string; /** * プロジェクト設定とウィジェット設定のシステムプロンプトを順序を保って結合する。 * 空文字列や文字列以外は無視し、何も残らない場合は undefined を返す。 */ export declare function combineSystemPrompts(...values: unknown[]): string | undefined; /** * チャンクのバッチ送信設定。 * - enabled: false の場合は従来どおり 1 チャンク = 1 POST(即時送信) * - windowMs: delta をまとめる時間窓(この時間内の連続 delta を 1 POST に結合) * - maxBytes: バッファ結合サイズがこの値に達したら時間窓を待たず即 flush */ export interface ChunkBatchConfig { enabled: boolean; windowMs: number; maxBytes: number; } export interface ChunkSenderOptions { debugLog?: boolean; /** バッチ送信設定。未指定時は従来どおり即時送信(後方互換) */ batch?: ChunkBatchConfig; } /** * 環境変数からチャンクバッチ設定を解決する。 * 本番のデフォルトは有効(`CHAT_CHUNK_BATCH_ENABLED` 未設定時)。 * `'false'` を明示した場合のみ無効化する(切り戻し用キルスイッチ)。 * window/maxBytes は正の整数の env 値のみ採用し、不正値は既定へフォールバックする。 */ export declare function resolveChunkBatchConfig(): ChunkBatchConfig; /** * チャンクを送信する関数を生成するファクトリ * * `options.batch.enabled` が true の場合、`delta` チャンクは短い時間窓/バイト閾値で * まとめて 1 回の POST に結合する(本文増分の連結は web 側の index 順連結と等価)。 * `delta` 以外(tool_call/tool_result/file_attachment/done/error/system)は、 * バッファ中の delta を先に flush してから即時送信し、順序を保証する。 * * @param commandId - コマンドID * @param client - APIクライアント * @param agentId - エージェントID * @param logTag - ログのプレフィックスタグ(例: "chat", "api-chat") * @param options - オプション(debugLog: デバッグログ出力 / batch: バッチ送信設定) * @returns sendChunk(送信)・getChunkIndex(実送信数)・flush(残バッファ強制送信)・ * hasTerminalDeliveryFailure(done / error の配信に失敗したか) */ export declare function createChunkSender(commandId: string, client: ApiClient, agentId: string, logTag: string, options?: ChunkSenderOptions): { sendChunk: (type: ChatChunkType, content: string) => Promise; getChunkIndex: () => number; flush: () => Promise; hasTerminalDeliveryFailure: () => boolean; }; /** * チャットコマンドのエラーを共通的に処理する * catch ブロックで使用し、ログ出力 + エラーチャンク送信 + 失敗結果を返す */ export declare function handleChatError(error: unknown, commandId: string, logTag: string, sendChunk: (type: ChatChunkType, content: string) => Promise): Promise; /** * done チャンクを送信する(結果テキストとメタデータを含む) */ export declare function sendDoneChunk(sendChunk: (type: ChatChunkType, content: string) => Promise, content: Record): Promise; /** * ファイル添付チャンクを送信する */ export declare function sendFileAttachmentChunk(sendChunk: (type: ChatChunkType, content: string) => Promise, file: ChatFileInfo): Promise; //# sourceMappingURL=shared-chat-utils.d.ts.map