@things-factory/board-ai 10.0.0-beta.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/components/board-ai-chat.test.ts +120 -0
- package/client/components/board-ai-chat.ts +1502 -0
- package/client/components/chat-input-builder.ts +40 -0
- package/client/components/markdown.test.ts +220 -0
- package/client/components/markdown.ts +184 -0
- package/client/index.ts +11 -0
- package/client/tsconfig.json +13 -0
- package/client/utils/board-edit-patch.ts +200 -0
- package/config/config.development.js +43 -0
- package/config/config.production.js +15 -0
- package/dist-client/components/board-ai-chat.d.ts +127 -0
- package/dist-client/components/board-ai-chat.js +1455 -0
- package/dist-client/components/board-ai-chat.js.map +1 -0
- package/dist-client/components/board-ai-chat.test.d.ts +1 -0
- package/dist-client/components/board-ai-chat.test.js +112 -0
- package/dist-client/components/board-ai-chat.test.js.map +1 -0
- package/dist-client/components/chat-input-builder.d.ts +30 -0
- package/dist-client/components/chat-input-builder.js +25 -0
- package/dist-client/components/chat-input-builder.js.map +1 -0
- package/dist-client/components/markdown.d.ts +16 -0
- package/dist-client/components/markdown.js +167 -0
- package/dist-client/components/markdown.js.map +1 -0
- package/dist-client/components/markdown.test.d.ts +1 -0
- package/dist-client/components/markdown.test.js +187 -0
- package/dist-client/components/markdown.test.js.map +1 -0
- package/dist-client/index.d.ts +11 -0
- package/dist-client/index.js +12 -0
- package/dist-client/index.js.map +1 -0
- package/dist-client/tsconfig.tsbuildinfo +1 -0
- package/dist-client/utils/board-edit-patch.d.ts +73 -0
- package/dist-client/utils/board-edit-patch.js +159 -0
- package/dist-client/utils/board-edit-patch.js.map +1 -0
- package/dist-server/index.d.ts +21 -0
- package/dist-server/index.js +25 -0
- package/dist-server/index.js.map +1 -0
- package/dist-server/service/apply-patch.d.ts +46 -0
- package/dist-server/service/apply-patch.js +211 -0
- package/dist-server/service/apply-patch.js.map +1 -0
- package/dist-server/service/assistant.d.ts +75 -0
- package/dist-server/service/assistant.js +1298 -0
- package/dist-server/service/assistant.js.map +1 -0
- package/dist-server/service/board-ai-resolver.d.ts +40 -0
- package/dist-server/service/board-ai-resolver.js +260 -0
- package/dist-server/service/board-ai-resolver.js.map +1 -0
- package/dist-server/service/chat-message/chat-message.d.ts +24 -0
- package/dist-server/service/chat-message/chat-message.js +108 -0
- package/dist-server/service/chat-message/chat-message.js.map +1 -0
- package/dist-server/service/chat-message/index.d.ts +3 -0
- package/dist-server/service/chat-message/index.js +7 -0
- package/dist-server/service/chat-message/index.js.map +1 -0
- package/dist-server/service/chat-session/chat-session.d.ts +22 -0
- package/dist-server/service/chat-session/chat-session.js +109 -0
- package/dist-server/service/chat-session/chat-session.js.map +1 -0
- package/dist-server/service/chat-session/index.d.ts +3 -0
- package/dist-server/service/chat-session/index.js +7 -0
- package/dist-server/service/chat-session/index.js.map +1 -0
- package/dist-server/service/chat-session-resolver.d.ts +13 -0
- package/dist-server/service/chat-session-resolver.js +178 -0
- package/dist-server/service/chat-session-resolver.js.map +1 -0
- package/dist-server/service/index.d.ts +14 -0
- package/dist-server/service/index.js +26 -0
- package/dist-server/service/index.js.map +1 -0
- package/dist-server/service/patch-entry/index.d.ts +3 -0
- package/dist-server/service/patch-entry/index.js +7 -0
- package/dist-server/service/patch-entry/index.js.map +1 -0
- package/dist-server/service/patch-entry/patch-entry.d.ts +16 -0
- package/dist-server/service/patch-entry/patch-entry.js +96 -0
- package/dist-server/service/patch-entry/patch-entry.js.map +1 -0
- package/dist-server/service/types.d.ts +137 -0
- package/dist-server/service/types.js +3 -0
- package/dist-server/service/types.js.map +1 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -0
- package/package.json +47 -0
- package/server/index.ts +21 -0
- package/server/service/apply-patch.test.ts +640 -0
- package/server/service/apply-patch.ts +250 -0
- package/server/service/assistant.test.ts +1317 -0
- package/server/service/assistant.ts +1431 -0
- package/server/service/board-ai-resolver.ts +239 -0
- package/server/service/chat-message/chat-message.ts +110 -0
- package/server/service/chat-message/index.ts +5 -0
- package/server/service/chat-session/chat-session.ts +103 -0
- package/server/service/chat-session/index.ts +5 -0
- package/server/service/chat-session-resolver.ts +154 -0
- package/server/service/index.ts +24 -0
- package/server/service/patch-entry/index.ts +5 -0
- package/server/service/patch-entry/patch-entry.ts +89 -0
- package/server/service/types.ts +138 -0
- package/things-factory.config.js +1 -0
- package/translations/en.json +39 -0
- package/translations/ja.json +39 -0
- package/translations/ko.json +40 -0
- package/translations/ms.json +39 -0
- package/translations/zh.json +39 -0
- package/tsconfig.json +9 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DefaultBoardAIAssistant — base AIClient 위에 LLM 프롬프트로 chat() 구현.
|
|
3
|
+
*/
|
|
4
|
+
import type { AIClient, AITool, AIToolCall, AIToolChatResult } from '@things-factory/ai-client-base';
|
|
5
|
+
import { type BoardModel, type ComponentCategory } from '@things-factory/board-import';
|
|
6
|
+
import type { BoardAIAssistant, BoardEditOp, ChatOptions, ChatResponse, LLMMessage } from './types.js';
|
|
7
|
+
export interface BoardAIAssistantOptions {
|
|
8
|
+
/** 기본 scope (chat 호출 시 옵션이 없으면 사용) */
|
|
9
|
+
scopes?: string[];
|
|
10
|
+
knownTypes?: string[];
|
|
11
|
+
categories?: ComponentCategory[];
|
|
12
|
+
}
|
|
13
|
+
export declare class DefaultBoardAIAssistant implements BoardAIAssistant {
|
|
14
|
+
private base;
|
|
15
|
+
private options;
|
|
16
|
+
readonly id: string;
|
|
17
|
+
constructor(base: AIClient, options?: BoardAIAssistantOptions);
|
|
18
|
+
chat(messages: LLMMessage[], currentBoard: BoardModel | undefined, options?: ChatOptions): Promise<ChatResponse>;
|
|
19
|
+
private chatViaTools;
|
|
20
|
+
private chatViaJSON;
|
|
21
|
+
private resolveTypesAndCategories;
|
|
22
|
+
private buildSystemPrompt;
|
|
23
|
+
private buildSystemPromptForTools;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 4 op 직교 set 을 4 개의 도구로 정의.
|
|
27
|
+
*
|
|
28
|
+
* 핵심: addComponent 의 `type` 파라미터가 knownTypes 의 enum 으로 강제 →
|
|
29
|
+
* LLM 이 등록 안 된 type 을 만들 수 없음 (provider 단계에서 차단).
|
|
30
|
+
*
|
|
31
|
+
* 좌표/크기 키들은 모두 optional 로 허용 (type 별로 사용 키 다름).
|
|
32
|
+
* type-specific 추가 속성은 additionalProperties 로 허용.
|
|
33
|
+
*/
|
|
34
|
+
export declare function buildBoardEditTools(knownTypes: string[]): AITool[];
|
|
35
|
+
/**
|
|
36
|
+
* Read tool 의 서버측 실행기 — currentBoard / selectedRefids 에 대해 즉시 실행해 결과 반환.
|
|
37
|
+
* LLM 의 다음 turn 에 tool_result 로 회신된다.
|
|
38
|
+
*
|
|
39
|
+
* 식별자 정책:
|
|
40
|
+
* - 컴포넌트 targeting 은 항상 refid (universal numeric handle).
|
|
41
|
+
* - id 는 데이터 바인딩 이름이며 unique 가 아니다 — filter 용도로만 사용 (findComponents).
|
|
42
|
+
*/
|
|
43
|
+
export declare function executeReadTool(call: AIToolCall, currentBoard: BoardModel | null | undefined, selectedRefids: number[]): any;
|
|
44
|
+
export declare function isReadTool(name: string): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* tool 결과를 UI fold-able 박스에 보여줄 만한 크기로 요약.
|
|
47
|
+
*
|
|
48
|
+
* 원본 그대로면 findComponents 50개 / getAtmosphereGuide 같은 큰 객체가 ChatMessage
|
|
49
|
+
* 영속까지 부담 — 핵심 모양만 유지하고 나머지는 marker.
|
|
50
|
+
*/
|
|
51
|
+
export declare function summarizeToolResult(value: any, depth?: number): any;
|
|
52
|
+
export declare function isWriteTool(name: string): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* AIToolChatResult → ChatResponse.
|
|
55
|
+
*
|
|
56
|
+
* 정책 — followUp 항상 undefined: reply 와 동일 텍스트를 followUp 에 복제하면 클라이언트
|
|
57
|
+
* 에서 .md-body 와 .followup 두 박스에 같은 내용이 표시되어 사용자에게 "동일 응답이
|
|
58
|
+
* 두 번 반복" 으로 보인다. 명확화 질문이 필요한 경우 LLM 이 reply 자체에 포함시키도록
|
|
59
|
+
* 설계.
|
|
60
|
+
*/
|
|
61
|
+
export declare function toolResultToChatResponse(result: AIToolChatResult): ChatResponse;
|
|
62
|
+
export declare function toolCallToBoardEditOp(tc: AIToolCall): BoardEditOp | null;
|
|
63
|
+
interface RawChatResponse {
|
|
64
|
+
reply?: string;
|
|
65
|
+
patch?: {
|
|
66
|
+
ops?: any[];
|
|
67
|
+
summary?: string;
|
|
68
|
+
confidence?: number;
|
|
69
|
+
} | null;
|
|
70
|
+
followUp?: string | null;
|
|
71
|
+
}
|
|
72
|
+
export declare function normalizeChatResponse(raw: RawChatResponse): ChatResponse;
|
|
73
|
+
export declare function isValidOp(op: any): boolean;
|
|
74
|
+
export declare function summarizeBoard(board: BoardModel | null | undefined): any;
|
|
75
|
+
export {};
|