UNPKG

@gftdcojp/actor-sdk

Version:

Comprehensive TypeScript SDK for GFTD Actor Platform with Well-becoming Agent as default - Supporting mental wellness and personal growth through AI

2,131 lines (2,106 loc) 77.4 kB
import { Document } from '@langchain/core/documents'; import { NextRequest, NextResponse } from 'next/server'; import LightningFS from '@isomorphic-git/lightning-fs'; import { ClassValue } from 'clsx'; /** * Actor v3 API型定義 * プロセス代数とLangChain.js互換性 * https://actor.gftd.ai/api/v3/actor */ type ActorID = string; interface Message { id: string; label: string; payload: Record<string, any>; timestamp: string; sender?: ActorID; } interface State { [key: string]: any; } interface OutAction { type: 'send' | 'spawn' | 'terminate'; target?: ActorID; message?: Message; behavior?: Behavior; } interface BehaviorResult { new_state: State; actions: OutAction[]; error?: string; } interface Behavior { id: string; name: string; description: string; version: string; handler: (message: Message, state: State) => Promise<BehaviorResult>; metadata: { created_at: string; updated_at: string; author: string; tags: string[]; capabilities: string[]; }; process_algebra: { notation: 'CCS' | 'π-calculus' | 'ACP'; expression: string; channels: string[]; }; } interface CreateActorRequest { behavior: Behavior; organization_id: string; initial_state?: State; } interface CreateActorResponse { actor_id: ActorID; status: 'created'; timestamp: string; } interface SendMessageRequest { target: ActorID; message: Omit<Message, 'id' | 'timestamp'>; } interface SendMessageResponse { message_id: string; status: 'sent'; timestamp: string; } interface ReceiveMessagesRequest { max_messages?: number; timeout?: number; filter?: { labels?: string[]; sender?: ActorID; }; } interface ReceiveMessagesResponse { messages: Message[]; behavior_results: BehaviorResult[]; timestamp: string; } interface ListActorsResponse { actors: { actor_id: ActorID; behavior_name: string; status: 'active' | 'inactive' | 'terminated'; created_at: string; }[]; total_count: number; } interface ActorSystemConfig { process_algebra_analysis: { deadlock_free: boolean; livelock_free: boolean; deadlock_actors?: ActorID[]; livelock_patterns?: string[]; }; communication_topology: { edges: { from: ActorID; to: ActorID; channel: string; weight: number; }[]; }; } interface SystemStatsResponse { stats: { active_actors: number; total_messages: number; average_latency_ms: number; }; detailed_metrics: { performance_metrics: { throughput: number; latency_p95: number; }; }; } interface LangChainMessage { role: "user" | "assistant" | "system"; content: string; name?: string; function_call?: any; } interface RunnableConfig$1 { timeout?: number; maxMessages?: number; } interface ActorV3RunnableInterface { invoke(input: any, config?: RunnableConfig$1): Promise<any>; stream(input: any, config?: RunnableConfig$1): AsyncGenerator<any, any, unknown>; batch(inputs: any[], config?: RunnableConfig$1): Promise<any[]>; pipe<T>(next: T): T; withFallbacks(fallbacks: any[]): any; } declare function createMessage(label: string, payload: Record<string, any>, sender?: ActorID): Message; declare function langChainToActorV3(lcMsg: LangChainMessage): Message; declare function actorV3ToLangChain(actorMsg: Message): LangChainMessage; interface ActorV3Error { code: string; message: string; details?: Record<string, any>; } interface ApiV3Response<T> { success: boolean; data?: T; error?: ActorV3Error; } /** * LangChain.js互換の型定義 * OpenAPI仕様に基づくMessageLike、RunnableConfig等 */ /** * LangChain.js MessageLike型定義 */ type MessageLike = HumanMessage | AIMessage | SystemMessage | ToolMessage; interface HumanMessage { type: "human"; content: string; additional_kwargs?: Record<string, any>; name?: string; id?: string; } interface AIMessage { type: "ai"; content: string; tool_calls?: ToolCall[]; additional_kwargs?: Record<string, any>; response_metadata?: Record<string, any>; name?: string; id?: string; } interface SystemMessage { type: "system"; content: string; additional_kwargs?: Record<string, any>; name?: string; id?: string; } interface ToolMessage { type: "tool"; content: string; tool_call_id: string; artifact?: Record<string, any>; additional_kwargs?: Record<string, any>; name?: string; id?: string; } interface ToolCall { id: string; name: string; args: Record<string, any>; type: "tool_call"; } interface StructuredTool { name: string; description: string; schema: Record<string, any>; } /** * LangChain.js RunnableConfig型定義 */ interface RunnableConfig { tags?: string[]; metadata?: Record<string, any>; callbacks?: any[]; recursion_limit?: number; max_concurrency?: number; run_name?: string; run_id?: string; configurable?: Record<string, any>; } /** * Runnable実行リクエスト型定義 */ type RunnableInput = string | MessageLike | MessageLike[]; interface InvokeRequest { input: RunnableInput; config?: RunnableConfig; } interface StreamRequest { input: RunnableInput; config?: RunnableConfig; } interface BatchRequest { inputs: RunnableInput[]; config?: RunnableConfig; max_concurrency?: number; } /** * Runnable実行レスポンス型定義 */ interface InvokeResponse { output: MessageLike; metadata: { run_id: string; session_id?: string; usage?: { prompt_tokens?: number; completion_tokens?: number; total_tokens?: number; }; execution_time: number; }; } interface BatchResponse { outputs: InvokeResponse[]; metadata: { batch_id: string; total_executions: number; successful_executions: number; failed_executions: number; execution_time: number; }; } /** * エラーレスポンス型定義 */ interface ErrorResponse { error: { code: string; message: string; type: "invalid_request_error" | "authentication_error" | "permission_error" | "not_found_error" | "rate_limit_error" | "api_error"; param?: string; details?: Record<string, any>; }; } /** * Actor セッション管理の型定義 * OpenAPI仕様に基づくLangChain.js互換のSessionRunnable */ /** * LangChain.js互換のSessionRunnable型定義 */ interface SessionRunnable { /** Session ID */ id: string; /** Actor ID */ actor_id: string; /** Session name */ name: string; /** Session type - 固定値 "session" */ type: "session"; /** LangChain.js namespace */ lc_namespace: string[]; /** LangChain.js serializable flag */ lc_serializable: boolean; /** Session configuration */ config: SessionConfig; /** Session messages */ messages: MessageLike[]; /** Session state */ state: Record<string, any>; /** Creation timestamp */ created_at: string; /** Update timestamp */ updated_at: string; /** Session metadata */ metadata?: Record<string, any>; } interface ActorSession { /** Session ID (Git branch name) */ id: string; /** Actor ID (repository_name with UUID) */ actor_id: string; created_at: string; updated_at: string; status: "active" | "completed" | "failed" | "paused"; metadata?: Record<string, any>; last_message_id?: string; message_count: number; } interface ActorMessage { id: string; session_id: string; role: "user" | "assistant" | "system"; content: string | Record<string, any>; created_at: string; metadata?: Record<string, any>; tool_calls?: ActorToolCall[]; function_call?: ActorFunctionCall; } interface ActorToolCall { id: string; type: "function"; function: { name: string; arguments: string; }; } interface ActorFunctionCall { name: string; arguments: string; } /** * OpenAPI仕様に基づくCreateSessionRequest */ interface CreateSessionRequest { name: string; branch?: string; parent_branch?: string; description?: string; config?: SessionConfig; } interface SessionCreateRequest { /** Actor ID (repository_name with UUID) */ actor_id: string; metadata?: Record<string, any>; initial_message?: { content: string | Record<string, any>; metadata?: Record<string, any>; }; } interface SessionContinueRequest { /** Session ID (Git branch name) */ session_id: string; message: { content: string | Record<string, any>; metadata?: Record<string, any>; }; } interface SessionResponse { session: ActorSession; messages: ActorMessage[]; has_more: boolean; } interface MessageResponse { message: ActorMessage; session: ActorSession; next_messages?: ActorMessage[]; } interface SessionListResponse { sessions: ActorSession[]; total: number; page: number; limit: number; has_next: boolean; has_previous: boolean; } interface SessionStreamEvent { type: "message" | "message_delta" | "session_update" | "error" | "done"; data: any; } interface SessionStreamResponse { event: SessionStreamEvent; session_id: string; message_id?: string; } /** * OpenAPI仕様に基づくSessionConfig */ interface SessionConfig { max_iterations?: number; memory_window?: number; auto_save?: boolean; branch?: string; parent_session?: string; } interface SessionError { code: string; message: string; session_id?: string; details?: Record<string, any>; } /** * @file lib/git/git-fs.ts * @description isomorphic-gitを使用したGitファイルシステム * @author GFTD Co., Ltd. */ /** * Git設定インターフェース */ interface GitConfig { /** リポジトリURL */ url: string; /** Personal Access Token */ token: string; /** 作成者情報 */ author: { name: string; email: string; }; /** ブランチ名 */ branch?: string; /** ローカルディレクトリ名 */ dir?: string; } /** * GitFileSystemクラス * isomorphic-gitを使用してGitリポジトリをファイルシステムとして操作 */ declare class GitFileSystem { private fs; private config; private dir; private currentBranch; private isInitialized; constructor(config: GitConfig); /** * ディレクトリを再帰的に作成 */ private ensureDir; /** * リポジトリを初期化またはクローン */ initialize(): Promise<void>; /** * リポジトリをクローン */ private clone; /** * 新しいリポジトリを初期化 */ private init; /** * ブランチを切り替え * @param branchName ブランチ名 * @param createIfNotExists 存在しない場合は作成 */ switchBranch(branchName: string, createIfNotExists?: boolean): Promise<void>; /** * ファイルを書き込み * @param filePath ファイルパス * @param content ファイル内容 */ writeFile(filePath: string, content: string): Promise<void>; /** * ファイルを読み込み * @param filePath ファイルパス * @returns ファイル内容 */ readFile(filePath: string): Promise<string>; /** * ファイルを削除 * @param filePath ファイルパス */ deleteFile(filePath: string): Promise<void>; /** * ディレクトリの内容を一覧取得 * @param dirPath ディレクトリパス * @returns ファイル・ディレクトリ一覧 */ readDir(dirPath?: string): Promise<string[]>; /** * ファイルが存在するかチェック * @param filePath ファイルパス * @returns 存在するかどうか */ exists(filePath: string): Promise<boolean>; /** * 変更をコミット * @param message コミットメッセージ * @param filePaths コミットするファイルパス(空の場合は全て) */ commit(message: string, filePaths?: string[]): Promise<string>; /** * リモートにプッシュ */ push(): Promise<void>; /** * リモートからプル */ pull(): Promise<void>; /** * ブランチ一覧を取得 * @returns ブランチ一覧 */ listBranches(): Promise<string[]>; /** * 現在のブランチを取得 * @returns 現在のブランチ名 */ getCurrentBranch(): string; /** * コミット履歴を取得 * @param depth 取得する履歴の深さ * @returns コミット履歴 */ getCommitHistory(depth?: number): Promise<any[]>; /** * 作業ディレクトリの状態を取得 * @returns ファイルの状態一覧 */ getStatus(): Promise<any[]>; /** * ファイルの状態を判定 */ private getFileStatus; /** * リソースのクリーンアップ */ cleanup(): Promise<void>; } /** * @file lib/types/chat-git.ts * @description チャット履歴のGit保存機能に関する型定義 * @author GFTD Co., Ltd. */ /** * チャット履歴のGit保存設定 */ interface ChatGitConfig { /** Git設定 */ git: GitConfig; /** 保存形式 */ format: 'markdown' | 'json' | 'both'; /** 自動コミット */ autoCommit: boolean; /** コミットメッセージのテンプレート */ commitMessageTemplate?: string; /** ファイル保存のディレクトリ */ baseDirectory?: string; } /** * チャット履歴ファイルのメタデータ */ interface ChatHistoryMetadata { /** セッションID */ sessionId: string; /** アクターID */ actorId: string; /** セッション作成日時 */ createdAt: string; /** 最終更新日時 */ updatedAt: string; /** メッセージ数 */ messageCount: number; /** ファイル形式 */ format: 'markdown' | 'json' | 'both'; /** Gitコミットハッシュ */ commitSha?: string; /** ブランチ名 */ branch: string; } /** * チャット履歴のファイル構造 */ interface ChatHistoryFile { /** メタデータ */ metadata: ChatHistoryMetadata; /** セッション情報 */ session: ActorSession; /** メッセージ履歴 */ messages: ActorMessage[]; /** 追加情報 */ additionalInfo?: Record<string, any>; } /** * Git保存結果 */ interface ChatGitSaveResult { /** 成功フラグ */ success: boolean; /** コミットハッシュ */ commitSha?: string; /** 保存されたファイルパス */ filePaths: string[]; /** エラーメッセージ */ error?: string; } /** * チャット履歴検索条件 */ interface ChatHistorySearchQuery { /** セッションID */ sessionId?: string; /** アクターID */ actorId?: string; /** 日付範囲(開始) */ dateFrom?: string; /** 日付範囲(終了) */ dateTo?: string; /** メッセージ内容のキーワード */ keyword?: string; /** ブランチ名 */ branch?: string; /** 最大結果数 */ limit?: number; } /** * チャット履歴検索結果 */ interface ChatHistorySearchResult { /** 履歴ファイル */ historyFile: ChatHistoryFile; /** マッチしたメッセージのインデックス */ matchedMessageIndices?: number[]; /** スコア(検索の関連度) */ score?: number; /** ファイルパス */ filePath: string; } /** * チャット履歴のGit操作インターフェース */ interface IChatGitManager { /** * チャット履歴を保存 * @param session セッション情報 * @param messages メッセージ履歴 * @param commitMessage コミットメッセージ */ saveHistory(session: ActorSession, messages: ActorMessage[], commitMessage?: string): Promise<ChatGitSaveResult>; /** * チャット履歴を読み込み * @param sessionId セッションID * @param branch ブランチ名 */ loadHistory(sessionId: string, branch?: string): Promise<ChatHistoryFile | null>; /** * チャット履歴を検索 * @param query 検索条件 */ searchHistory(query: ChatHistorySearchQuery): Promise<ChatHistorySearchResult[]>; /** * メッセージを追加保存 * @param sessionId セッションID * @param newMessages 新しいメッセージ * @param commitMessage コミットメッセージ */ appendMessages(sessionId: string, newMessages: ActorMessage[], commitMessage?: string): Promise<ChatGitSaveResult>; /** * セッションのブランチを作成 * @param sessionId セッションID * @param branchName ブランチ名 * @param baseBranch ベースブランチ */ createSessionBranch(sessionId: string, branchName: string, baseBranch?: string): Promise<boolean>; /** * 履歴のGitステータス取得 * @param sessionId セッションID */ getHistoryStatus(sessionId: string): Promise<{ hasChanges: boolean; lastCommitSha?: string; lastCommitMessage?: string; branch: string; }>; /** * コミット履歴取得 * @param sessionId セッションID * @param limit 件数制限 */ getCommitHistory(sessionId: string, limit?: number): Promise<{ commitSha: string; message: string; author: string; date: string; messageCount: number; }[]>; } /** * チャット履歴のファイル命名規則 */ interface ChatHistoryFileNaming { /** セッションディレクトリのパターン */ sessionDirPattern: string; /** Markdownファイル名のパターン */ markdownFilePattern: string; /** JSONファイル名のパターン */ jsonFilePattern: string; /** メタデータファイル名のパターン */ metadataFilePattern: string; } /** * Markdownエクスポート設定 */ interface MarkdownExportOptions { /** タイトル形式 */ titleFormat: string; /** メッセージ形式 */ messageFormat: string; /** タイムスタンプ形式 */ timestampFormat: string; /** 目次を含める */ includeToc: boolean; /** メタデータを含める */ includeMetadata: boolean; } /** * @file lib/types/config.ts * @description Actor SDK Config 設定システム * @author GFTD Co., Ltd. */ /** * GFTD認証設定 */ interface GFTDAuthConfig { /** 認証必須かどうか */ required?: boolean; /** 認証サーバーURL */ authUrl?: string; /** 認証APIキー */ apiKey?: string; /** 認証トークンの有効期限 (秒) */ tokenExpiry?: number; /** 認証プロバイダー */ provider?: 'gftd' | 'custom'; /** 認証スコープ */ scopes?: string[]; /** 自動リフレッシュ設定 */ autoRefresh?: boolean; /** リダイレクトURL */ redirectUrl?: string; } /** * ツール機能設定 */ interface ToolsConfig { /** Actor管理機能 */ actorManagement: boolean; /** セッション管理機能 */ sessionManagement: boolean; /** ストリーミング機能 */ streaming: boolean; /** Embedding & Vector Search機能 */ embedding: boolean; /** Git統合機能 */ gitIntegration: boolean; /** チャット履歴Git管理 */ chatGitManagement: boolean; /** モニタリング & アナリティクス */ monitoring: boolean; /** React UI コンポーネント */ uiComponents: boolean; } /** * Actor API設定 */ interface ActorApiConfig { /** API ベース URL */ baseUrl: string; /** API キー */ apiKey?: string; /** タイムアウト設定 (秒) */ timeout?: number; /** リトライ回数 */ retryCount?: number; /** リクエストヘッダー */ headers?: Record<string, string>; } /** * Embedding設定 */ interface EmbeddingConfig$1 { /** モデル名 */ modelName?: string; /** ベクトル次元数 */ dimensions?: number; /** キャッシュディレクトリ */ cacheDir?: string; /** バッチサイズ */ batchSize?: number; } /** * Git統合設定 */ interface GitIntegrationConfig { /** GitLab設定 */ gitlab?: { url: string; token: string; defaultVisibility?: 'private' | 'internal' | 'public'; }; /** Git作成者情報 */ author?: { name: string; email: string; }; /** 自動コミット設定 */ autoCommit?: boolean; /** 自動プッシュ設定 */ autoPush?: boolean; /** デフォルトブランチ名 */ defaultBranch?: string; } /** * ストリーミング設定 */ interface StreamingConfig { /** ストリーミング有効化 */ enabled: boolean; /** チャンクサイズ */ chunkSize?: number; /** タイムアウト設定 (秒) */ timeout?: number; /** 再接続設定 */ reconnect?: { enabled: boolean; maxAttempts?: number; interval?: number; }; } /** * モニタリング設定 */ interface MonitoringConfig { /** メトリクス収集 */ metricsEnabled: boolean; /** ログレベル */ logLevel?: 'debug' | 'info' | 'warn' | 'error'; /** パフォーマンス追跡 */ performanceTracking?: boolean; /** エラー自動レポート */ errorReporting?: boolean; } /** * UI設定 */ interface UIConfig { /** テーマ */ theme?: 'light' | 'dark' | 'auto'; /** 言語設定 */ locale?: string; /** デフォルトページサイズ */ defaultPageSize?: number; /** アニメーション有効化 */ animations?: boolean; /** カスタムCSS */ customStyles?: string; } /** * デバッグ設定 */ interface DebugConfig { /** デバッグモード */ enabled: boolean; /** 詳細ログ */ verboseLogging?: boolean; /** API呼び出しログ */ logApiCalls?: boolean; /** Git操作ログ */ logGitOperations?: boolean; /** パフォーマンス計測 */ measurePerformance?: boolean; } /** * Actor SDK 包括的設定 */ interface ActorSDKConfig { /** 有効化するtools */ tools: ToolsConfig; /** Actor API設定 */ api: ActorApiConfig; /** GFTD認証設定 */ auth?: GFTDAuthConfig; /** セッション管理のデフォルト設定 */ session?: SessionConfig; /** Embedding設定 */ embedding?: EmbeddingConfig$1; /** Git統合設定 */ git?: GitIntegrationConfig; /** チャット履歴Git管理設定 */ chatGit?: ChatGitConfig; /** ストリーミング設定 */ streaming?: StreamingConfig; /** モニタリング設定 */ monitoring?: MonitoringConfig; /** UI設定 */ ui?: UIConfig; /** デバッグ設定 */ debug?: DebugConfig; /** カスタム設定 */ custom?: Record<string, any>; } /** * デフォルト設定を生成 */ declare function createDefaultConfig(): ActorSDKConfig; /** * 開発環境用設定を生成 */ declare function createDevelopmentConfig(): ActorSDKConfig; /** * プロダクション環境用設定を生成 */ declare function createProductionConfig(): ActorSDKConfig; /** * 設定をマージ */ declare function mergeConfig(...configs: Partial<ActorSDKConfig>[]): ActorSDKConfig; /** * 設定の検証 */ declare function validateConfig(config: ActorSDKConfig): { valid: boolean; errors: string[]; }; /** * 設定が有効かチェック */ declare function isToolEnabled(config: ActorSDKConfig, tool: keyof ToolsConfig): boolean; /** * 環境変数から設定を生成 */ declare function createConfigFromEnv(): Partial<ActorSDKConfig>; /** * 開発環境設定を生成(統一されたAPIエンドポイント使用) */ declare function createLocalDevelopmentConfig(organizationId?: string): ActorSDKConfig; /** * 環境判定: 開発環境かどうか */ declare function isLocalDevelopment(): boolean; /** * GitLabデフォルト設定付きSDK設定を生成 */ declare function createConfigWithDefaultGitLab(overrides?: Partial<ActorSDKConfig>): ActorSDKConfig; /** * Actor v3 APIクライアント * プロセス代数とLangChain.js互換性対応 * https://actor.gftd.ai/api/v3/actor */ /** * Actor v3 メインクライアント */ declare class ActorV3Client { private baseUrl; private apiKey?; constructor(config?: { apiKey?: string; baseUrl?: string; }); private request; /** * アクター管理API */ actors: { /** * 新しいアクターを作成 */ create: (request: CreateActorRequest) => Promise<ApiV3Response<CreateActorResponse>>; /** * アクター一覧を取得 */ list: (organizationId?: string) => Promise<ApiV3Response<ListActorsResponse>>; /** * アクターにメッセージを送信 */ send: (actorId: ActorID, request: SendMessageRequest) => Promise<ApiV3Response<SendMessageResponse>>; /** * アクターからメッセージを受信 */ receive: (actorId: ActorID, request?: ReceiveMessagesRequest) => Promise<ApiV3Response<ReceiveMessagesResponse>>; /** * アクターを削除 */ delete: (actorId: ActorID) => Promise<ApiV3Response<{ status: "deleted"; }>>; }; /** * システム管理API */ system: { /** * システム設定を取得(プロセス代数分析含む) */ getConfig: () => Promise<ApiV3Response<ActorSystemConfig>>; /** * システム統計を取得 */ getStats: () => Promise<ApiV3Response<SystemStatsResponse>>; }; } /** * LangChain.js互換性ラッパー */ declare class ActorV3Runnable { private actorId; private client; constructor(actorId: ActorID, client: ActorV3Client); /** * LangChain.js invoke() 互換メソッド */ invoke(input: any, config?: RunnableConfig$1): Promise<any>; /** * LangChain.js stream() 互換メソッド */ stream(input: any, config?: RunnableConfig$1): AsyncGenerator<any, any, unknown>; /** * LangChain.js batch() 互換メソッド */ batch(inputs: any[], config?: RunnableConfig$1): Promise<any[]>; /** * LangChain.js pipe() 互換メソッド */ pipe<T>(next: T): T; /** * LangChain.js withFallbacks() 互換メソッド */ withFallbacks(fallbacks: any[]): ActorV3Runnable; } /** * デフォルトクライアントインスタンス */ declare const actorV3Api: ActorV3Client; /** * サンプルBehavior作成ヘルパー */ declare function createSampleBehavior(name: string, description: string): Behavior; /** * Actor v3 LangChain Chat API クライアント * https://api.actor.gftd.ai/v3/langchain/actor を使用したチャット機能を提供 */ interface ChatMessage { id: string; role: "user" | "assistant" | "system"; content: string; timestamp: Date; } interface LangChainActorConfig { name: string; description?: string; model?: "gpt-4o" | "gpt-4o-mini" | "gpt-4-turbo" | "gpt-4" | "gpt-3.5-turbo"; temperature?: number; max_tokens?: number; system_prompt?: string; organization_id: string; openai_api_key?: string; max_history_length?: number; actor_id?: string; } interface LangChainActorResponse { actor_id: string; actor: any; config: LangChainActorConfig; endpoints: { chat: string; system_prompt: string; config_update: string; stats: string; }; } interface ChatRequest { message: string; conversation_id?: string; timeout?: number; stream?: boolean; } interface ChatResponse { content: string; usage: { total_tokens: number; prompt_tokens: number; completion_tokens: number; }; model: string; conversation_id: string; execution_time_ms: number; timestamp: string; } /** * Actor v3 LangChain Chat API クライアントクラス * Actor v3のLangChain統合機能を使用したチャット機能を提供 */ declare class ActorV3ChatClient { private baseUrl; private headers; private organizationId; private currentActorId; constructor(baseUrl?: string, organizationId?: string, apiKey?: string); /** * LangChain Actor を作成 * @param config LangChain Actor設定 * @returns LangChain Actor作成レスポンス */ createLangChainActor(config: Partial<LangChainActorConfig>): Promise<LangChainActorResponse>; /** * チャットメッセージを送信 * @param actorId Actor ID * @param request チャットリクエスト * @returns チャットレスポンス */ sendChatMessage(actorId: string, request: ChatRequest): Promise<ChatResponse>; /** * 現在のActorでチャット(簡易版) * @param message メッセージ内容 * @param conversationId 会話ID(オプション) * @returns チャットレスポンス */ chat(message: string, conversationId?: string): Promise<ChatResponse>; /** * システムプロンプトを更新 * @param actorId Actor ID * @param systemPrompt 新しいシステムプロンプト */ updateSystemPrompt(actorId: string, systemPrompt: string): Promise<void>; /** * APIの健全性をチェック * @returns APIが利用可能かどうか */ healthCheck(): Promise<boolean>; /** * 現在のActor IDを取得 * @returns 現在のActor ID */ getCurrentActorId(): string | null; /** * Actor IDを手動設定 * @param actorId 設定するActor ID */ setCurrentActorId(actorId: string): void; } /** * デフォルトのActor v3 Chat APIクライアントインスタンス */ declare const actorV3ChatClient: ActorV3ChatClient; /** * Actor v3 一覧管理Hook */ declare function useActorV3List(organizationId?: string): { actors: { actor_id: ActorID; behavior_name: string; status: "active" | "inactive" | "terminated"; created_at: string; }[]; loading: boolean; error: string | null; totalCount: number; refetch: () => void; }; /** * Actor v3 作成Hook */ declare function useActorV3Creation(): { createActor: (behavior: Behavior, organizationId: string, initialState?: State) => Promise<CreateActorResponse | null>; createSampleActor: (name: string, description: string, organizationId: string) => Promise<CreateActorResponse | null>; loading: boolean; error: string | null; }; /** * Actor v3 メッセージング Hook */ declare function useActorV3Messaging(actorId: ActorID): { sendMessage: (label: string, payload: Record<string, any>, target?: ActorID) => Promise<SendMessageResponse | null | undefined>; receiveMessages: (request?: ReceiveMessagesRequest) => Promise<ReceiveMessagesResponse | null>; clearMessages: () => void; messages: Message[]; loading: boolean; error: string | null; }; /** * LangChain.js互換 Actor v3 Hook */ declare function useActorV3Runnable(actorId: ActorID): { runnable: ActorV3Runnable; invoke: (input: any, config?: any) => Promise<any>; batch: (inputs: any[], config?: any) => Promise<any[]>; loading: boolean; error: string | null; }; /** * Actor v3 システム管理Hook */ declare function useActorV3System(): { config: ActorSystemConfig | null; stats: SystemStatsResponse | null; loading: boolean; error: string | null; fetchConfig: () => Promise<void>; fetchStats: () => Promise<void>; refreshAll: () => Promise<void>; }; /** * Actor v3 ヘルスチェック Hook */ declare function useActorV3Health(): { status: "unknown" | "checking" | "healthy" | "unhealthy"; lastChecked: string | null; error: string | null; checkHealth: () => Promise<void>; }; /** * Actor v3 LangChain Chat API用Reactフック * Actor v3のLangChain統合を使用したチャット機能の状態管理とAPI呼び出しを提供 */ interface UseGftdChatOptions { initialMessages?: ChatMessage[]; model?: string; temperature?: number; maxTokens?: number; } interface UseGftdChatReturn { messages: ChatMessage[]; isLoading: boolean; error: string | null; isConnected: boolean; sendMessage: (content: string) => Promise<void>; clearMessages: () => void; retryLastMessage: () => Promise<void>; setMessages: (messages: ChatMessage[]) => void; } /** * GFTD Chat APIを使用するためのカスタムフック * @param options チャット設定オプション * @returns チャット機能のインターフェース */ declare function useGftdChat(options?: UseGftdChatOptions): UseGftdChatReturn; /** * @file lib/config/sdk-config-manager.ts * @description SDK起動時のconfigファイル管理 * @author GFTD Co., Ltd. */ interface SDKConfig { version: string; initialized: boolean; defaultActorId?: string; actors: { [key: string]: { id: string; name: string; type: string; repositoryType: 'local' | 'online'; repositoryPath: string; repositoryUrl?: string; gitConfig?: any; lastAccessed: string; isDefault?: boolean; }; }; settings: { theme: 'light' | 'dark'; autoSave: boolean; showWelcome: boolean; defaultView: 'actors' | 'code' | 'preview'; }; created: string; lastModified: string; } /** * デフォルトアクター設定テンプレート */ interface DefaultActorTemplate { name: string; description: string; type: string; repositoryType: 'local'; gitConfig: { user: { name: string; email: string; }; remoteUrl?: string; defaultBranch: string; autoCommit: boolean; autoSync: boolean; }; } /** * 利用可能なデフォルトアクタータイプ */ declare const DEFAULT_ACTOR_TEMPLATES: Record<string, DefaultActorTemplate>; /** * デフォルトのSDK設定 */ declare function createDefaultSDKConfig(): SDKConfig; /** * SDK設定管理クラス */ declare class SDKConfigManager { private static readonly CONFIG_FILE_PATH; private static readonly LOCAL_STORAGE_KEY; /** * 実行環境がブラウザかチェック */ private static isBrowser; /** * 実行環境がNode.jsかチェック */ private static isNode; /** * configファイルが存在するかチェック */ static hasConfig(): Promise<boolean>; /** * configファイルを読み込み */ static loadConfig(): Promise<SDKConfig | null>; /** * configファイルを保存 */ static saveConfig(config: SDKConfig): Promise<boolean>; /** * configにアクターを追加 */ static addActor(actorData: { id: string; name: string; type: string; repositoryType: 'local' | 'online'; repositoryPath: string; repositoryUrl?: string; gitConfig?: any; }): Promise<boolean>; /** * デフォルトアクターを設定 */ static setDefaultActor(actorId: string): Promise<boolean>; /** * アクターのアクセス時刻を更新 */ static updateActorAccess(actorId: string): Promise<boolean>; /** * 設定を更新 */ static updateSettings(settings: Partial<SDKConfig['settings']>): Promise<boolean>; /** * configを初期化済みにマーク */ static markAsInitialized(): Promise<boolean>; /** * configを検証・マイグレーション */ private static validateAndMigrateConfig; /** * configをリセット(開発用) */ static resetConfig(): Promise<boolean>; /** * デバッグ情報を出力(ブラウザのコンソールに表示) */ static debugConfig(): Promise<void>; /** * デフォルトアクターを作成 */ static createDefaultActor(template?: keyof typeof DEFAULT_ACTOR_TEMPLATES): Promise<{ success: boolean; actorId?: string; error?: string; }>; /** * 初期セットアップ - デフォルトアクターと設定を作成 */ static performInitialSetup(actorTemplate?: keyof typeof DEFAULT_ACTOR_TEMPLATES): Promise<{ success: boolean; config?: SDKConfig; error?: string; }>; /** * 利用可能なデフォルトアクタータイプのリストを取得 */ static getAvailableTemplates(): Array<{ key: string; template: DefaultActorTemplate; }>; } /** * @file lib/git/gitlab-client.ts * @description GitLab API クライアント * @author GFTD Co., Ltd. */ /** * GitLab設定インターフェース */ interface GitLabConfig { /** GitLabのURL */ url: string; /** Personal Access Token */ token: string; /** デフォルトプロジェクトの可視性 */ defaultVisibility?: 'private' | 'internal' | 'public'; } /** * プロジェクト作成設定 */ interface CreateProjectConfig { /** プロジェクト名 */ name: string; /** 説明 */ description?: string; /** 可視性 */ visibility?: 'private' | 'internal' | 'public'; /** 初期化設定 */ initialize_with_readme?: boolean; /** デフォルトブランチ */ default_branch?: string; } /** * ブランチ作成設定 */ interface CreateBranchConfig { /** ブランチ名 */ name: string; /** 基点となるブランチまたはコミット */ ref: string; } /** * GitLab APIクライアント */ declare class GitLabClient { private client; private config; constructor(config: GitLabConfig); /** * 新しいプロジェクト(Actor)を作成 * @param config プロジェクト作成設定 * @returns プロジェクト情報 */ createActor(config: CreateProjectConfig): Promise<{ id: number; name: string; description: string | undefined; clone_url: string; ssh_url: string; web_url: string; default_branch: string | undefined; created_at: string; }>; /** * プロジェクトを取得 * @param projectId プロジェクトID * @returns プロジェクト情報 */ getActor(projectId: number | string): Promise<{ id: number; name: string; description: string | undefined; clone_url: string; ssh_url: string; web_url: string; default_branch: string | undefined; created_at: string; updated_at: string; }>; /** * 新しいブランチ(Session)を作成 * 概念: new session -> new_branch * @param projectId プロジェクトID * @param config ブランチ作成設定 * @returns ブランチ情報 */ createSession(projectId: number | string, config: CreateBranchConfig): Promise<{ name: string; commit: { id: unknown; message: unknown; author_name: unknown; author_email: unknown; created_at: unknown; }; protected: boolean; can_push: boolean; web_url: string; }>; /** * ブランチ(Session)を取得 * 概念: session = Git branch * @param projectId プロジェクトID * @param branchName ブランチ名(Session ID) * @returns ブランチ情報 */ getSession(projectId: number | string, branchName: string): Promise<{ name: string; commit: { id: unknown; message: unknown; author_name: unknown; author_email: unknown; created_at: unknown; }; protected: boolean; can_push: boolean; web_url: string; }>; /** * プロジェクトの全ブランチ(Sessions)を取得 * 概念: sessions = Git branches * @param projectId プロジェクトID * @returns ブランチ一覧(Session一覧) */ listSessions(projectId: number | string): Promise<{ name: string; commit: { id: unknown; message: unknown; author_name: unknown; author_email: unknown; created_at: unknown; }; protected: boolean; can_push: boolean; web_url: string; }[]>; /** * ブランチを削除 * @param projectId プロジェクトID * @param branchName ブランチ名 */ deleteSession(projectId: number | string, branchName: string): Promise<boolean>; /** * プロジェクトを削除 * @param projectId プロジェクトID */ deleteActor(projectId: number | string): Promise<boolean>; /** * ファイルを作成または更新 * @param projectId プロジェクトID * @param filePath ファイルパス * @param content ファイル内容 * @param commitMessage コミットメッセージ * @param branch ブランチ名 */ createOrUpdateFile(projectId: number | string, filePath: string, content: string, commitMessage: string, branch?: string): Promise<any>; /** * ファイルを取得 * @param projectId プロジェクトID * @param filePath ファイルパス * @param branch ブランチ名 */ getFile(projectId: number | string, filePath: string, branch?: string): Promise<any>; /** * ファイルを削除 * @param projectId プロジェクトID * @param filePath ファイルパス * @param commitMessage コミットメッセージ * @param branch ブランチ名 */ deleteFile(projectId: number | string, filePath: string, commitMessage: string, branch?: string): Promise<any>; /** * リポジトリのファイル一覧を取得 * @param projectId プロジェクトID * @param path パス(オプション) * @param branch ブランチ名 */ listFiles(projectId: number | string, path?: string, branch?: string): Promise<any[]>; } /** * @file lib/git/git-vector-store.ts * @description Git対応のベクトルストア * @author GFTD Co., Ltd. */ /** * Git対応ベクトルストアエントリー */ interface GitVectorStoreEntry { id: string; vector: number[]; document: Document; timestamp: number; commitSha?: string; } /** * Git検索結果 */ interface GitSearchResult { document: Document; score: number; id: string; commitSha?: string; } /** * Git対応のベクトルストアクラス * usearchとGitを組み合わせて、ベクトル検索データをGitリポジトリで管理 */ declare class GitVectorStore { private index; private gitFs; private entries; private dimensions; private isInitialized; private vectorsDir; private metadataDir; private indexFile; constructor(gitFs: GitFileSystem, dimensions?: number); /** * ベクトルストアの初期化 */ initialize(): Promise<void>; /** * 必要なディレクトリを初期化 */ private initializeDirectories; /** * 既存のインデックスを読み込み */ private loadExistingIndex; /** * ベクトルとドキュメントを追加 * @param vector ベクトル * @param document ドキュメント * @returns エントリーID */ add(vector: number[], document: Document): Promise<string>; /** * ベクトル検索 * @param query クエリベクトル * @param k 返す結果数 * @returns 検索結果 */ search(query: number[], k?: number): Promise<GitSearchResult[]>; /** * エントリーをファイルシステムに保存 */ private saveEntry; /** * インデックスファイルを保存 */ private saveIndexFile; /** * 変更をGitにコミット */ private commitChanges; /** * リモートにプッシュ */ push(): Promise<void>; /** * リモートからプル */ pull(): Promise<void>; /** * インデックスサイズを取得 */ size(): number; /** * エントリーをIDで取得 */ getEntry(id: string): GitVectorStoreEntry | undefined; /** * エントリーをIDで削除 */ remove(id: string): Promise<boolean>; /** * インデックスを再構築 */ private rebuildIndex; /** * すべてのエントリーをクリア */ clear(): Promise<void>; /** * ブランチを切り替え * @param branchName ブランチ名 * @param createIfNotExists 存在しない場合は作成 */ switchBranch(branchName: string, createIfNotExists?: boolean): Promise<void>; /** * 現在のブランチを取得 */ getCurrentBranch(): string; /** * ブランチ一覧を取得 */ listBranches(): Promise<string[]>; /** * コミット履歴を取得 */ getCommitHistory(depth?: number): Promise<any[]>; /** * リソースのクリーンアップ */ cleanup(): Promise<void>; } /** * @file lib/git/git-embedding-sdk.ts * @description Git対応のEmbeddingSDK * @author GFTD Co., Ltd. */ /** * Git対応Embedding設定インターフェース */ interface GitEmbeddingConfig { /** Git設定 */ git: GitConfig; /** モデル名 (デフォルト: 'Xenova/all-MiniLM-L6-v2') */ modelName?: string; /** ベクトル次元数 */ dimensions?: number; } /** * Git対応EmbeddingSDKクラス * HuggingFaceTransformersEmbeddingsとGitを使用してテキストをベクトル化し、 * Gitリポジトリで管理 */ declare class GitEmbeddingSDK { private embeddings; private gitFs; private vectorStore; private config; private isInitialized; constructor(config: GitEmbeddingConfig); /** * SDKの初期化 */ initialize(): Promise<void>; /** * テキストをembeddingに変換 * @param text テキスト * @returns embedding vector */ embedText(text: string): Promise<number[]>; /** * 複数のテキストをembeddingに変換 * @param texts テキスト配列 * @returns embedding vectors */ embedTexts(texts: string[]): Promise<number[][]>; /** * ドキュメントをembeddingに変換してVectorStoreに追加 * @param documents ドキュメント配列 * @returns 追加されたドキュメントのID配列 */ addDocuments(documents: Document[]): Promise<string[]>; /** * 類似検索 * @param query 検索クエリ * @param k 返す結果数 * @returns 類似ドキュメント配列 */ search(query: string, k?: number): Promise<{ document: Document; score: number; id: string; commitSha?: string; }[]>; /** * 新しいセッション(ブランチ)を作成 * @param sessionName セッション名 * @param baseBranch 基点となるブランチ(デフォルト: 現在のブランチ) */ createSession(sessionName: string, baseBranch?: string): Promise<void>; /** * セッション(ブランチ)を切り替え * @param sessionName セッション名 */ switchSession(sessionName: string): Promise<void>; /** * 現在のセッション(ブランチ)を取得 */ getCurrentSession(): string; /** * セッション(ブランチ)一覧を取得 */ listSessions(): Promise<string[]>; /** * リモートにプッシュ */ push(): Promise<void>; /** * リモートからプル */ pull(): Promise<void>; /** * ファイルをGitリポジトリに保存 * @param filePath ファイルパス * @param content ファイル内容 * @param commitMessage コミットメッセージ */ saveFile(filePath: string, content: string, commitMessage?: string): Promise<string>; /** * ファイルをGitリポジトリから読み込み * @param filePath ファイルパス * @returns ファイル内容 */ loadFile(filePath: string): Promise<string>; /** * ファイルが存在するかチェック * @param filePath ファイルパス */ fileExists(filePath: string): Promise<boolean>; /** * ディレクトリの内容を一覧取得 * @param dirPath ディレクトリパス */ listFiles(dirPath?: string): Promise<string[]>; /** * インデックスサイズを取得 */ getIndexSize(): Promise<number>; /** * コミット履歴を取得 * @param depth 取得する履歴の深さ */ getCommitHistory(depth?: number): Promise<any[]>; /** * Gitリポジトリの状態を取得 */ getStatus(): Promise<any[]>; /** * 構造化データをJSONとして保存 * @param filePath ファイルパス * @param data データオブジェクト * @param commitMessage コミットメッセージ */ saveJSON(filePath: string, data: any, commitMessage?: string): Promise<string>; /** * JSONファイルを読み込み * @param filePath ファイルパス * @returns パースされたデータ */ loadJSON(filePath: string): Promise<any>; /** * セッション設定を保存 * @param config セッション設定 */ saveSessionConfig(config: any): Promise<string>; /** * セッション設定を読み込み * @param sessionName セッション名(省略時は現在のセッション) */ loadSessionConfig(sessionName?: string): Promise<any>; /** * ベクトルストアを直接取得(高度な操作用) */ getVectorStore(): GitVectorStore; /** * GitFileSystemを直接取得(高度な操作用) */ getGitFileSystem(): GitFileSystem; /** * リソースのクリーンアップ */ cleanup(): Promise<void>; } /** * @file lib/git/actor-git-manager.ts * @description Actor/Session管理のGitマネージャー * @author GFTD Co., Ltd. */ /** * Actor情報インターフェース * GitLabプロジェクトとしてのActor表現 */ interface ActorInfo { /** GitLab Project ID (数値) - 内部的にはproject_idだが、actor_id概念ではrepository_name(UUID)を使用 */ id: number; /** Repository name with UUID (actor_id概念での実際の識別子) */ name: string; description?: string; clone_url: string; web_url: string; default_branch: string; created_at: string; updated_at?: string; } /** * Session情報インターフェース */ interface SessionInfo { name: string; commit: { id: string; message: string; author_name: string; author_email: string; created_at: string; }; protected: boolean; can_push: boolean; web_url?: string; } /** * ActorGitManager設定インターフェース */ interface ActorGitManagerConfig { /** GitLab設定 */ gitlab: GitLabConfig; /** Embedding設定(モデル名など) */ embedding?: { modelName?: string; dimensions?: number; }; /** 作成者情報 */ author: { name: string; email: string; }; } /** * ActorGitManagerクラス * GitLabとGitEmbeddingSDKを統合したActor/Session管理システム */ declare class ActorGitManager { private gitlabClient; private config; private embeddingSDKs; constructor(config: ActorGitManagerConfig); /** * 新しいActor(プロジェクト)を作成 * @param actorConfig Actor作成設定 * @returns Actor情報 */ createActor(actorConfig: CreateProjectConfig): Promise<ActorInfo>; /** * Actorを取得 * @param actorId Actor ID * @returns Actor情報 */ getActor(actorId: number): Promise<ActorInfo>; /** * 新しいSession(ブランチ)を作成 * @param actorId Actor ID * @param sessionConfig Session作成設定 * @returns Session情報 */ createSession(actorId: number, sessionConfig: CreateBranchConfig): Promise<SessionInfo>; /** * Sessionを取得 * @param actorId Actor ID * @param sessionName Session名 * @returns Session情報 */ getSession(actorId: number, sessionName: string): Promise<SessionInfo>; /** * Actorの全Sessionを取得 * @param actorId Actor ID * @returns Session一覧 */ listSessions(actorId: number): Promise<SessionInfo[]>; /** * EmbeddingSDKを初期化 * @param actorId Actor ID * @param branch ブランチ名(省略時はdefault_branch) * @returns GitEmbeddingSDK */ initializeEmbeddingSDK(actorId: number, branch?: string): Promise<GitEmbeddingSDK>; /** * ActorのEmbeddingSDKを取得(未初期化の場合は初期化) * @param actorId Actor ID * @param branch ブランチ名 * @returns GitEmbeddingSDK */ getEmbeddingSDK(actorId: number, branch?: string): Promise<GitEmbeddingSDK>; /** * Actorにドキュメントを追加 * @param actorId Actor ID * @param documents ドキュメント配列 * @param sessionName セッション名(省略時は現在のセッション) * @returns 追加されたドキュメントのID配列 */ addDocumentsToActor(actorId: number, documents: Document[], sessionName?: string): Promise<string[]>; /** * Actorで検索 * @param actorId Actor ID * @param query 検索クエリ * @param k 返す結果数 * @param sessionName セッション名(省略時は現在のセッション) * @returns 検索結果 */ searchInActor(actorId: number, query: string, k?: number, sessionName?: string): Promise<any[]>; /** * ActorでSessionを作成し、EmbeddingSDKを初期化 * @param actorId Actor ID * @param sessionName セッション名 * @param baseBranch 基点となるブランチ(省略時はdefault_branch) * @returns GitEmbeddingSDK */ createActorSession(actorId: number, sessionName: string, baseBranch?: string): Promise<GitEmbeddingSDK>; /** * ActorのSessionを切り替え * @param actorId Actor ID * @param sessionName セッション名 * @returns GitEmbeddingSDK */ switchActorSession(actorId: number, sessionName: string): Promise<GitEmbeddingSDK>; /** * Actorのファイルを保存 * @param actorId Actor ID * @param filePath ファイルパス * @param content ファイル内容 * @param commitMessage コミットメッセージ * @param sessionName セッション名 */ saveFileToActor(actorId: number, filePath: string, content: string, commitMessage?: string, sessionName?: string): Promise<string>; /** * Actorからファイルを読み込み * @param actorId Actor ID * @param filePath ファイルパス * @param sessionName セッション名 */ loadFileFromActor(actorId: number, filePath: string, sessionName?: string): Promise<string>; /** * Actorの状態を取得 * @param actorId Actor ID * @param sessionName セッション名 */ getActorStatus(actorId: number, sessionName?: string): Promise<{ actor: ActorInfo; currentSession: string; sessions: SessionInfo[]; indexSize: number; status: any[]; commitHistory: any[]; }>; /** * Actorを削除 * @param actorId Actor ID */ deleteActor(actorId: number): Promise<boolean>; /** * Sessionを削除 * @param actorId Actor ID * @param sessionName セッション名 */ deleteSession(actorId: number, sessionName: string): Promise<boolean>; /** * 全てのEmbeddingSDKをクリーンアップ */ cleanup(): Promise<void>; } /** * @file lib/git/actor-repository-manager.ts * @description アクターリポジトリの作成・初期化マネージャー * @author GFTD Co., Ltd. */ interface ActorRepositoryConfig { name: string; description?: string; type: string; repositoryType: 'local' | 'online'; repositoryUrl?: string; gitConfig: ChatGitConfig; localPath?: string; repositoryName?: string; } interface RepositoryInitResult { success: boolean; repositoryPath: string; gitConfig: ChatGitConfig; initialCommitSha?: string; error?: string; } /** * アクターリポジトリ管理クラス * ローカル・オンラインリポジトリの作成と初期化を管理 */ declare class ActorRepositoryManager { /** * 新しいアクターリポジトリを作成・初期化 */ static createActorRepository(config: ActorRepositoryConfig): Promise<RepositoryInitResult>; /** * ローカルリポジトリを作成 */ private static createLocalRepository; /** * オンラインリポジトリを初期化 */ private static initializeOnlineRepository; /** * 初期ファイルを作成 */ private static createInitialFiles; /** * README.mdの内容を生成 */ private static generateReadmeContent; /** * .gitignoreの内容を生成 */ private static generateGitignoreContent; /** * Actor設定ファイルを生成 */ private static generateActorConfig; /** * package.jsonを生成 */ private static generatePackageJson; /** * package.jsonを作成すべきかチェック *