@things-factory/board-ai 10.0.0-beta.108
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/PLAN-styling-tools.md +1253 -0
- package/client/components/board-ai-chat.test.ts +149 -0
- package/client/components/board-ai-chat.ts +2574 -0
- package/client/components/chat-echo-dedup.test.ts +116 -0
- package/client/components/chat-echo-dedup.ts +89 -0
- package/client/components/chat-input-builder.ts +47 -0
- package/client/components/default-catalog-entries.test.ts +59 -0
- package/client/components/default-catalog-entries.ts +100 -0
- package/client/components/default-slash-templates.test.ts +55 -0
- package/client/components/default-slash-templates.ts +129 -0
- package/client/components/markdown.test.ts +518 -0
- package/client/components/markdown.ts +508 -0
- package/client/components/mention-popup-helpers.ts +433 -0
- package/client/components/mention-popup.test.ts +588 -0
- package/client/components/mention-popup.ts +238 -0
- package/client/index.ts +11 -0
- package/client/tsconfig.json +13 -0
- package/client/utils/board-edit-patch.ts +374 -0
- package/config/config.development.js +43 -0
- package/config/config.production.js +15 -0
- package/dist-client/client/components/board-ai-chat.d.ts +277 -0
- package/dist-client/client/components/board-ai-chat.js +2444 -0
- package/dist-client/client/components/board-ai-chat.js.map +1 -0
- package/dist-client/client/components/board-ai-chat.test.d.ts +1 -0
- package/dist-client/client/components/board-ai-chat.test.js +138 -0
- package/dist-client/client/components/board-ai-chat.test.js.map +1 -0
- package/dist-client/client/components/chat-echo-dedup.d.ts +45 -0
- package/dist-client/client/components/chat-echo-dedup.js +58 -0
- package/dist-client/client/components/chat-echo-dedup.js.map +1 -0
- package/dist-client/client/components/chat-echo-dedup.test.d.ts +1 -0
- package/dist-client/client/components/chat-echo-dedup.test.js +101 -0
- package/dist-client/client/components/chat-echo-dedup.test.js.map +1 -0
- package/dist-client/client/components/chat-input-builder.d.ts +39 -0
- package/dist-client/client/components/chat-input-builder.js +26 -0
- package/dist-client/client/components/chat-input-builder.js.map +1 -0
- package/dist-client/client/components/default-catalog-entries.d.ts +15 -0
- package/dist-client/client/components/default-catalog-entries.js +86 -0
- package/dist-client/client/components/default-catalog-entries.js.map +1 -0
- package/dist-client/client/components/default-catalog-entries.test.d.ts +1 -0
- package/dist-client/client/components/default-catalog-entries.test.js +52 -0
- package/dist-client/client/components/default-catalog-entries.test.js.map +1 -0
- package/dist-client/client/components/default-slash-templates.d.ts +17 -0
- package/dist-client/client/components/default-slash-templates.js +113 -0
- package/dist-client/client/components/default-slash-templates.js.map +1 -0
- package/dist-client/client/components/default-slash-templates.test.d.ts +1 -0
- package/dist-client/client/components/default-slash-templates.test.js +51 -0
- package/dist-client/client/components/default-slash-templates.test.js.map +1 -0
- package/dist-client/client/components/markdown.d.ts +60 -0
- package/dist-client/client/components/markdown.js +422 -0
- package/dist-client/client/components/markdown.js.map +1 -0
- package/dist-client/client/components/markdown.test.d.ts +1 -0
- package/dist-client/client/components/markdown.test.js +418 -0
- package/dist-client/client/components/markdown.test.js.map +1 -0
- package/dist-client/client/components/mention-popup-helpers.d.ts +165 -0
- package/dist-client/client/components/mention-popup-helpers.js +330 -0
- package/dist-client/client/components/mention-popup-helpers.js.map +1 -0
- package/dist-client/client/components/mention-popup.d.ts +35 -0
- package/dist-client/client/components/mention-popup.js +223 -0
- package/dist-client/client/components/mention-popup.js.map +1 -0
- package/dist-client/client/components/mention-popup.test.d.ts +1 -0
- package/dist-client/client/components/mention-popup.test.js +474 -0
- package/dist-client/client/components/mention-popup.test.js.map +1 -0
- package/dist-client/client/index.d.ts +11 -0
- package/dist-client/client/index.js +12 -0
- package/dist-client/client/index.js.map +1 -0
- package/dist-client/client/utils/board-edit-patch.d.ts +157 -0
- package/dist-client/client/utils/board-edit-patch.js +284 -0
- package/dist-client/client/utils/board-edit-patch.js.map +1 -0
- package/dist-client/server/service/agentic-loop.d.ts +87 -0
- package/dist-client/server/service/agentic-loop.js +276 -0
- package/dist-client/server/service/agentic-loop.js.map +1 -0
- package/dist-client/server/service/assistant.d.ts +84 -0
- package/dist-client/server/service/assistant.js +2220 -0
- package/dist-client/server/service/assistant.js.map +1 -0
- package/dist-client/server/service/catalog-resolver.d.ts +18 -0
- package/dist-client/server/service/catalog-resolver.js +93 -0
- package/dist-client/server/service/catalog-resolver.js.map +1 -0
- package/dist-client/server/service/component-tree.d.ts +68 -0
- package/dist-client/server/service/component-tree.js +68 -0
- package/dist-client/server/service/component-tree.js.map +1 -0
- package/dist-client/server/service/mention-resolver.d.ts +96 -0
- package/dist-client/server/service/mention-resolver.js +172 -0
- package/dist-client/server/service/mention-resolver.js.map +1 -0
- package/dist-client/server/service/prefab-registry.d.ts +73 -0
- package/dist-client/server/service/prefab-registry.js +252 -0
- package/dist-client/server/service/prefab-registry.js.map +1 -0
- package/dist-client/server/service/styling/clear-tools.d.ts +15 -0
- package/dist-client/server/service/styling/clear-tools.js +50 -0
- package/dist-client/server/service/styling/clear-tools.js.map +1 -0
- package/dist-client/server/service/styling/color-utils.d.ts +43 -0
- package/dist-client/server/service/styling/color-utils.js +205 -0
- package/dist-client/server/service/styling/color-utils.js.map +1 -0
- package/dist-client/server/service/styling/copy-tools.d.ts +27 -0
- package/dist-client/server/service/styling/copy-tools.js +78 -0
- package/dist-client/server/service/styling/copy-tools.js.map +1 -0
- package/dist-client/server/service/styling/effect-tools.d.ts +45 -0
- package/dist-client/server/service/styling/effect-tools.js +85 -0
- package/dist-client/server/service/styling/effect-tools.js.map +1 -0
- package/dist-client/server/service/styling/fill-tools.d.ts +60 -0
- package/dist-client/server/service/styling/fill-tools.js +226 -0
- package/dist-client/server/service/styling/fill-tools.js.map +1 -0
- package/dist-client/server/service/styling/material-tools.d.ts +32 -0
- package/dist-client/server/service/styling/material-tools.js +88 -0
- package/dist-client/server/service/styling/material-tools.js.map +1 -0
- package/dist-client/server/service/styling/read-tools.d.ts +34 -0
- package/dist-client/server/service/styling/read-tools.js +42 -0
- package/dist-client/server/service/styling/read-tools.js.map +1 -0
- package/dist-client/server/service/styling/registry.d.ts +91 -0
- package/dist-client/server/service/styling/registry.js +345 -0
- package/dist-client/server/service/styling/registry.js.map +1 -0
- package/dist-client/server/service/styling/stroke-tools.d.ts +35 -0
- package/dist-client/server/service/styling/stroke-tools.js +94 -0
- package/dist-client/server/service/styling/stroke-tools.js.map +1 -0
- package/dist-client/server/service/styling/text-tools.d.ts +32 -0
- package/dist-client/server/service/styling/text-tools.js +101 -0
- package/dist-client/server/service/styling/text-tools.js.map +1 -0
- package/dist-client/server/service/types.d.ts +265 -0
- package/dist-client/server/service/types.js +2 -0
- package/dist-client/server/service/types.js.map +1 -0
- package/dist-client/server/service/validation/board-model-schema.d.ts +8311 -0
- package/dist-client/server/service/validation/board-model-schema.js +402 -0
- package/dist-client/server/service/validation/board-model-schema.js.map +1 -0
- package/dist-client/server/service/validation/tool-validation.d.ts +31 -0
- package/dist-client/server/service/validation/tool-validation.js +193 -0
- package/dist-client/server/service/validation/tool-validation.js.map +1 -0
- package/dist-client/tsconfig.tsbuildinfo +1 -0
- package/dist-server/index.d.ts +23 -0
- package/dist-server/index.js +27 -0
- package/dist-server/index.js.map +1 -0
- package/dist-server/service/agentic-loop.d.ts +87 -0
- package/dist-server/service/agentic-loop.js +280 -0
- package/dist-server/service/agentic-loop.js.map +1 -0
- package/dist-server/service/apply-patch.d.ts +47 -0
- package/dist-server/service/apply-patch.js +369 -0
- package/dist-server/service/apply-patch.js.map +1 -0
- package/dist-server/service/assistant.d.ts +84 -0
- package/dist-server/service/assistant.js +2237 -0
- package/dist-server/service/assistant.js.map +1 -0
- package/dist-server/service/board-ai-resolver.d.ts +54 -0
- package/dist-server/service/board-ai-resolver.js +409 -0
- package/dist-server/service/board-ai-resolver.js.map +1 -0
- package/dist-server/service/catalog-resolver.d.ts +18 -0
- package/dist-server/service/catalog-resolver.js +98 -0
- package/dist-server/service/catalog-resolver.js.map +1 -0
- package/dist-server/service/chat-message/chat-message-broadcast.d.ts +13 -0
- package/dist-server/service/chat-message/chat-message-broadcast.js +13 -0
- package/dist-server/service/chat-message/chat-message-broadcast.js.map +1 -0
- package/dist-server/service/chat-message/chat-message-publish.d.ts +6 -0
- package/dist-server/service/chat-message/chat-message-publish.js +27 -0
- package/dist-server/service/chat-message/chat-message-publish.js.map +1 -0
- package/dist-server/service/chat-message/chat-message-subscription.d.ts +8 -0
- package/dist-server/service/chat-message/chat-message-subscription.js +53 -0
- package/dist-server/service/chat-message/chat-message-subscription.js.map +1 -0
- package/dist-server/service/chat-message/chat-message.d.ts +56 -0
- package/dist-server/service/chat-message/chat-message.js +149 -0
- package/dist-server/service/chat-message/chat-message.js.map +1 -0
- package/dist-server/service/chat-message/index.d.ts +5 -0
- package/dist-server/service/chat-message/index.js +12 -0
- package/dist-server/service/chat-message/index.js.map +1 -0
- package/dist-server/service/chat-session/chat-session.d.ts +31 -0
- package/dist-server/service/chat-session/chat-session.js +131 -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-participant/chat-session-participant.d.ts +30 -0
- package/dist-server/service/chat-session-participant/chat-session-participant.js +112 -0
- package/dist-server/service/chat-session-participant/chat-session-participant.js.map +1 -0
- package/dist-server/service/chat-session-participant/index.d.ts +4 -0
- package/dist-server/service/chat-session-participant/index.js +10 -0
- package/dist-server/service/chat-session-participant/index.js.map +1 -0
- package/dist-server/service/chat-session-participant/invite-notification.d.ts +27 -0
- package/dist-server/service/chat-session-participant/invite-notification.js +30 -0
- package/dist-server/service/chat-session-participant/invite-notification.js.map +1 -0
- package/dist-server/service/chat-session-participant/presence.d.ts +4 -0
- package/dist-server/service/chat-session-participant/presence.js +22 -0
- package/dist-server/service/chat-session-participant/presence.js.map +1 -0
- package/dist-server/service/chat-session-resolver.d.ts +20 -0
- package/dist-server/service/chat-session-resolver.js +356 -0
- package/dist-server/service/chat-session-resolver.js.map +1 -0
- package/dist-server/service/component-tree.d.ts +68 -0
- package/dist-server/service/component-tree.js +73 -0
- package/dist-server/service/component-tree.js.map +1 -0
- package/dist-server/service/index.d.ts +20 -0
- package/dist-server/service/index.js +34 -0
- package/dist-server/service/index.js.map +1 -0
- package/dist-server/service/mention-marker.d.ts +78 -0
- package/dist-server/service/mention-marker.js +162 -0
- package/dist-server/service/mention-marker.js.map +1 -0
- package/dist-server/service/mention-resolver.d.ts +96 -0
- package/dist-server/service/mention-resolver.js +177 -0
- package/dist-server/service/mention-resolver.js.map +1 -0
- package/dist-server/service/patch-entry/board-patch-broadcast.d.ts +13 -0
- package/dist-server/service/patch-entry/board-patch-broadcast.js +13 -0
- package/dist-server/service/patch-entry/board-patch-broadcast.js.map +1 -0
- package/dist-server/service/patch-entry/board-patch-subscription.d.ts +12 -0
- package/dist-server/service/patch-entry/board-patch-subscription.js +63 -0
- package/dist-server/service/patch-entry/board-patch-subscription.js.map +1 -0
- package/dist-server/service/patch-entry/index.d.ts +4 -0
- package/dist-server/service/patch-entry/index.js +12 -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/prefab-registry.d.ts +73 -0
- package/dist-server/service/prefab-registry.js +258 -0
- package/dist-server/service/prefab-registry.js.map +1 -0
- package/dist-server/service/styling/clear-tools.d.ts +15 -0
- package/dist-server/service/styling/clear-tools.js +53 -0
- package/dist-server/service/styling/clear-tools.js.map +1 -0
- package/dist-server/service/styling/color-utils.d.ts +43 -0
- package/dist-server/service/styling/color-utils.js +210 -0
- package/dist-server/service/styling/color-utils.js.map +1 -0
- package/dist-server/service/styling/copy-tools.d.ts +27 -0
- package/dist-server/service/styling/copy-tools.js +81 -0
- package/dist-server/service/styling/copy-tools.js.map +1 -0
- package/dist-server/service/styling/effect-tools.d.ts +45 -0
- package/dist-server/service/styling/effect-tools.js +90 -0
- package/dist-server/service/styling/effect-tools.js.map +1 -0
- package/dist-server/service/styling/fill-tools.d.ts +60 -0
- package/dist-server/service/styling/fill-tools.js +229 -0
- package/dist-server/service/styling/fill-tools.js.map +1 -0
- package/dist-server/service/styling/material-tools.d.ts +32 -0
- package/dist-server/service/styling/material-tools.js +92 -0
- package/dist-server/service/styling/material-tools.js.map +1 -0
- package/dist-server/service/styling/read-tools.d.ts +34 -0
- package/dist-server/service/styling/read-tools.js +45 -0
- package/dist-server/service/styling/read-tools.js.map +1 -0
- package/dist-server/service/styling/registry.d.ts +91 -0
- package/dist-server/service/styling/registry.js +352 -0
- package/dist-server/service/styling/registry.js.map +1 -0
- package/dist-server/service/styling/stroke-tools.d.ts +35 -0
- package/dist-server/service/styling/stroke-tools.js +97 -0
- package/dist-server/service/styling/stroke-tools.js.map +1 -0
- package/dist-server/service/styling/text-tools.d.ts +32 -0
- package/dist-server/service/styling/text-tools.js +105 -0
- package/dist-server/service/styling/text-tools.js.map +1 -0
- package/dist-server/service/subscribe-auth.d.ts +14 -0
- package/dist-server/service/subscribe-auth.js +33 -0
- package/dist-server/service/subscribe-auth.js.map +1 -0
- package/dist-server/service/types.d.ts +265 -0
- package/dist-server/service/types.js +3 -0
- package/dist-server/service/types.js.map +1 -0
- package/dist-server/service/validation/board-model-schema.d.ts +8311 -0
- package/dist-server/service/validation/board-model-schema.js +409 -0
- package/dist-server/service/validation/board-model-schema.js.map +1 -0
- package/dist-server/service/validation/tool-validation.d.ts +31 -0
- package/dist-server/service/validation/tool-validation.js +196 -0
- package/dist-server/service/validation/tool-validation.js.map +1 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -0
- package/package.json +48 -0
- package/server/index.ts +23 -0
- package/server/service/agentic-loop.test.ts +705 -0
- package/server/service/agentic-loop.ts +431 -0
- package/server/service/apply-patch-drift.test.ts +829 -0
- package/server/service/apply-patch.test.ts +757 -0
- package/server/service/apply-patch.ts +411 -0
- package/server/service/assistant-integration.test.ts +922 -0
- package/server/service/assistant-llm-smoke.test.ts +296 -0
- package/server/service/assistant.test.ts +2034 -0
- package/server/service/assistant.ts +2378 -0
- package/server/service/board-ai-resolver.ts +407 -0
- package/server/service/catalog-resolver.test.ts +137 -0
- package/server/service/catalog-resolver.ts +102 -0
- package/server/service/chat-message/chat-message-broadcast.integration.test.ts +73 -0
- package/server/service/chat-message/chat-message-broadcast.test.ts +40 -0
- package/server/service/chat-message/chat-message-broadcast.ts +27 -0
- package/server/service/chat-message/chat-message-publish.ts +22 -0
- package/server/service/chat-message/chat-message-subscription.ts +41 -0
- package/server/service/chat-message/chat-message.ts +169 -0
- package/server/service/chat-message/index.ts +12 -0
- package/server/service/chat-session/chat-session.ts +130 -0
- package/server/service/chat-session/index.ts +5 -0
- package/server/service/chat-session-participant/chat-session-participant.ts +110 -0
- package/server/service/chat-session-participant/index.ts +6 -0
- package/server/service/chat-session-participant/invite-notification.test.ts +30 -0
- package/server/service/chat-session-participant/invite-notification.ts +48 -0
- package/server/service/chat-session-participant/presence.test.ts +39 -0
- package/server/service/chat-session-participant/presence.ts +21 -0
- package/server/service/chat-session-resolver.ts +312 -0
- package/server/service/component-tree.test.ts +248 -0
- package/server/service/component-tree.ts +135 -0
- package/server/service/index.ts +32 -0
- package/server/service/mention-marker.extract.test.ts +61 -0
- package/server/service/mention-marker.test.ts +228 -0
- package/server/service/mention-marker.ts +184 -0
- package/server/service/mention-resolver.test.ts +273 -0
- package/server/service/mention-resolver.ts +264 -0
- package/server/service/patch-entry/board-patch-broadcast.ts +24 -0
- package/server/service/patch-entry/board-patch-subscription.test.ts +40 -0
- package/server/service/patch-entry/board-patch-subscription.ts +50 -0
- package/server/service/patch-entry/index.ts +12 -0
- package/server/service/patch-entry/patch-entry.ts +89 -0
- package/server/service/prefab-registry.test.ts +172 -0
- package/server/service/prefab-registry.ts +332 -0
- package/server/service/styling/clear-tools.test.ts +164 -0
- package/server/service/styling/clear-tools.ts +69 -0
- package/server/service/styling/color-utils.test.ts +130 -0
- package/server/service/styling/color-utils.ts +226 -0
- package/server/service/styling/copy-tools.test.ts +152 -0
- package/server/service/styling/copy-tools.ts +115 -0
- package/server/service/styling/effect-tools.test.ts +277 -0
- package/server/service/styling/effect-tools.ts +124 -0
- package/server/service/styling/fill-tools.test.ts +331 -0
- package/server/service/styling/fill-tools.ts +293 -0
- package/server/service/styling/material-tools.test.ts +294 -0
- package/server/service/styling/material-tools.ts +114 -0
- package/server/service/styling/read-tools.test.ts +78 -0
- package/server/service/styling/read-tools.ts +67 -0
- package/server/service/styling/registry.test.ts +203 -0
- package/server/service/styling/registry.ts +423 -0
- package/server/service/styling/stroke-tools.test.ts +245 -0
- package/server/service/styling/stroke-tools.ts +145 -0
- package/server/service/styling/text-tools.test.ts +253 -0
- package/server/service/styling/text-tools.ts +131 -0
- package/server/service/styling/tier1-tools.test.ts +300 -0
- package/server/service/subscribe-auth.test.ts +57 -0
- package/server/service/subscribe-auth.ts +34 -0
- package/server/service/types.ts +235 -0
- package/server/service/validation/board-model-schema.test.ts +778 -0
- package/server/service/validation/board-model-schema.ts +446 -0
- package/server/service/validation/tool-validation.ts +228 -0
- package/things-factory.config.js +1 -0
- package/translations/en.json +49 -0
- package/translations/ja.json +48 -0
- package/translations/ko.json +49 -0
- package/translations/ms.json +48 -0
- package/translations/zh.json +48 -0
- package/tsconfig.json +9 -0
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* <ox-board-ai-chat> — AI 주도 보드 모델링 채팅 컴포넌트 (Lit).
|
|
3
|
+
*
|
|
4
|
+
* 입력:
|
|
5
|
+
* - sessionId: 영속 ChatSession 식별자 (없으면 ad-hoc 모드, 메시지 영속 안 됨)
|
|
6
|
+
* - currentBoard: 현재 BoardModel JSON (호스트가 동기화)
|
|
7
|
+
* - scopes / knownTypes / categories: 도메인 컨텍스트
|
|
8
|
+
*
|
|
9
|
+
* 출력 (이벤트):
|
|
10
|
+
* - `board-edit-patch` { detail: { patch, summary, confidence, patchId } }
|
|
11
|
+
* 호스트가 받아서 보드 모델에 적용 (applyBoardEditPatch helper).
|
|
12
|
+
* - `chat-followup` { detail: { question } }
|
|
13
|
+
*
|
|
14
|
+
* 모드 전환은 컨테이너 (워크스페이스) 의 책임. 이 컴포넌트는 자체로 풀 채팅 UX.
|
|
15
|
+
*/
|
|
16
|
+
import '@material/web/icon/icon.js';
|
|
17
|
+
import { LitElement } from 'lit';
|
|
18
|
+
import './mention-popup.js';
|
|
19
|
+
import { type FilterResult } from './mention-popup.js';
|
|
20
|
+
export declare class OxBoardAIChat extends LitElement {
|
|
21
|
+
/** 영속 세션 id. 없으면 ad-hoc (메시지 영속 안 됨). */
|
|
22
|
+
sessionId?: string;
|
|
23
|
+
/**
|
|
24
|
+
* 보드의 모든 ChatSession 리스트 — 다중 세션 활성화 시 탭 UI 로 표시.
|
|
25
|
+
*
|
|
26
|
+
* 빈 배열 / 미지정 → 단일 세션 UX (탭 안 보임). 한 보드 = 한 세션 가정의 기존 호출자
|
|
27
|
+
* 호환. host (board-modeller-page) 가 chatSessionsByBoard query 결과를 그대로 전달.
|
|
28
|
+
*
|
|
29
|
+
* 이 컴포넌트는 list 자체를 fetch 하지 않음 — 영속 모델 / 권한 / 페이지네이션 정책은
|
|
30
|
+
* host 책임. 본 컴포넌트는 표시 + 이벤트 emission 만.
|
|
31
|
+
*/
|
|
32
|
+
sessions: Array<{
|
|
33
|
+
id: string;
|
|
34
|
+
name?: string;
|
|
35
|
+
createdAt?: string;
|
|
36
|
+
}>;
|
|
37
|
+
/**
|
|
38
|
+
* 현재 BoardModel — chat() 입력으로 그대로 전달.
|
|
39
|
+
*
|
|
40
|
+
* 주의: 호스트가 라이브 편집 가능한 캔버스(things-scene)를 갖고 있다면, 캔버스 안에서
|
|
41
|
+
* 일어나는 수작업 편집이 이 property 에는 자동 반영되지 않는다. 이 경우 `boardProvider`
|
|
42
|
+
* 콜백을 같이 넘기면 send() 시점에 라이브 보드를 pull 한다.
|
|
43
|
+
*/
|
|
44
|
+
currentBoard?: any;
|
|
45
|
+
/**
|
|
46
|
+
* 라이브 보드 모델 공급자 (선택).
|
|
47
|
+
*
|
|
48
|
+
* 호스트가 things-scene 같은 캔버스를 사용 중이면 사용자가 캔버스에서 수작업 편집한
|
|
49
|
+
* 내용은 `currentBoard` property 에 자동 반영되지 않는다. 이 콜백을 등록하면 `send()`
|
|
50
|
+
* 직전에 호출해 가장 최신 보드를 pull → AI 가 항상 라이브 상태를 본다.
|
|
51
|
+
*
|
|
52
|
+
* 우선순위: boardProvider() ?? currentBoard.
|
|
53
|
+
*/
|
|
54
|
+
boardProvider?: () => any;
|
|
55
|
+
/**
|
|
56
|
+
* `#` mention 검색 공급자 (선택). 호스트가 things-scene 의 SceneSearchEngine 으로 wrap.
|
|
57
|
+
*
|
|
58
|
+
* 호스트는 query 를 받아 popup 에 표시할 FilterResult[] 를 돌려준다 — chat 자체는
|
|
59
|
+
* things-scene 의존성을 갖지 않고 popup 표시 로직만 담당. 검색 우선순위 / 매칭 룰은
|
|
60
|
+
* SceneSearchEngine (F-Finder 와 공유) 에 위임 → 일관성 보장.
|
|
61
|
+
*
|
|
62
|
+
* 미설정 시 `currentBoard.components` 에서 단순 substring 매칭 (legacy fallback).
|
|
63
|
+
* 빈 query 에서는 호출되지 않음 — 빈 query 는 전체 후보 enumeration 이지 검색이 아님.
|
|
64
|
+
*/
|
|
65
|
+
searchProvider?: (query: string) => FilterResult[];
|
|
66
|
+
/**
|
|
67
|
+
* `@` mention 도메인 사용자 공급자 (선택). 호스트가 `domainUsersForMention` query 로 wrap.
|
|
68
|
+
*
|
|
69
|
+
* 호스트는 query 문자열을 받아 도메인 사용자 후보 (id/name/email) 배열을 돌려준다.
|
|
70
|
+
* 미설정 시 `@` popup 은 빈 결과 (사용자가 멘션 못 함). 멀티유저 환경 활성화 정책에 따라
|
|
71
|
+
* 호스트가 set 해야 활성화. async 가 자연스러우므로 Promise 반환 가능.
|
|
72
|
+
*/
|
|
73
|
+
userProvider?: (query: string) => Promise<Array<{
|
|
74
|
+
id: string;
|
|
75
|
+
name?: string | null;
|
|
76
|
+
email?: string | null;
|
|
77
|
+
}>> | Array<{
|
|
78
|
+
id: string;
|
|
79
|
+
name?: string | null;
|
|
80
|
+
email?: string | null;
|
|
81
|
+
}>;
|
|
82
|
+
/**
|
|
83
|
+
* 모델러에서 현재 선택된 컴포넌트의 `refid` 목록.
|
|
84
|
+
*
|
|
85
|
+
* refid 는 things-scene 이 모든 컴포넌트에 자동 발급하는 universal numeric handle.
|
|
86
|
+
* 호스트가 매 render 마다 `.selectedRefids=${...}` 로 갱신. AI 한테 selection 정보로
|
|
87
|
+
* 그대로 전달되어 "선택한" / "selected" / "this" 류 지시어 해석에 사용.
|
|
88
|
+
*/
|
|
89
|
+
selectedRefids: number[];
|
|
90
|
+
/** board-import registry scopes. */
|
|
91
|
+
scopes?: string[];
|
|
92
|
+
knownTypes?: string[];
|
|
93
|
+
categories?: string[];
|
|
94
|
+
/**
|
|
95
|
+
* 컴포넌트 type 별 유효 속성 스킴.
|
|
96
|
+
* 형태: [{ type, description?, group?, properties? }]
|
|
97
|
+
* LLM 이 정확한 컴포넌트를 만들도록 mutation input 으로 forwarding.
|
|
98
|
+
*/
|
|
99
|
+
componentSchemas?: Array<{
|
|
100
|
+
type: string;
|
|
101
|
+
description?: string;
|
|
102
|
+
group?: string;
|
|
103
|
+
properties?: Record<string, any>;
|
|
104
|
+
}>;
|
|
105
|
+
placeholder: string;
|
|
106
|
+
private lines;
|
|
107
|
+
private input;
|
|
108
|
+
/** 마지막 send 실패 시 보존 — 다시 시도 버튼 클릭 시 사용 */
|
|
109
|
+
private lastFailedInput?;
|
|
110
|
+
/** 되돌려진 patch id 들 — 한 번 revert 한 patch 는 버튼 비활성 */
|
|
111
|
+
private revertedPatchIds;
|
|
112
|
+
/** mini action — 인라인 예시 토글 */
|
|
113
|
+
private examplesOpen;
|
|
114
|
+
/** 복사 toast 표시 상태 */
|
|
115
|
+
private toastMessage?;
|
|
116
|
+
/** 복사 confirmation feedback (메시지 idx → 짧은 시간 동안 ✓ 표시) */
|
|
117
|
+
private copiedIdx?;
|
|
118
|
+
private busy;
|
|
119
|
+
private errorMessage?;
|
|
120
|
+
/** C4 presence/roster — 세션 참여자 목록. lastSeenAt 으로 online 판정. */
|
|
121
|
+
private participants;
|
|
122
|
+
/** roster online 재평가 트리거 — heartbeat tick 마다 갱신(시간 경과 반영). */
|
|
123
|
+
private _presenceTick;
|
|
124
|
+
private _heartbeatTimer?;
|
|
125
|
+
/** C4 그룹챗 — 메시지 실시간 방송 구독 핸들 + 에코 dedup. */
|
|
126
|
+
private _messageSub?;
|
|
127
|
+
/** 이미 transcript 에 반영된 서버 메시지 id 집합 — 자기 에코·중복 방송 차단. */
|
|
128
|
+
private _seenMessageIds;
|
|
129
|
+
/** optimistic 라인 임시 핸들 시퀀스 (index 비의존 reconcile 용). */
|
|
130
|
+
private _localSeq;
|
|
131
|
+
/** 현재 로그인 사용자 id — 그룹챗에서 내 메시지 vs 타인 메시지 구분 (발신자 표시). */
|
|
132
|
+
private get _myUserId();
|
|
133
|
+
/** Mention popup — `#` (컴포넌트) / `@` (카탈로그) / `/` (slash) 트리거 시 활성.
|
|
134
|
+
* 단일 popup 재사용 — mentionTrigger 로 활성 trigger 추적. */
|
|
135
|
+
private mentionOpen;
|
|
136
|
+
/** popup 표시용 — F-Finder 처럼 matchType + matchValue 동봉된 결과 */
|
|
137
|
+
private mentionResults;
|
|
138
|
+
private mentionActiveIndex;
|
|
139
|
+
/** filter cap (50) 으로 잘라낸 추가 매칭 수 — popup 의 'N more' 표시용 */
|
|
140
|
+
private mentionOverflow;
|
|
141
|
+
/** 현재 활성 mention 의 textarea 내 trigger 위치 */
|
|
142
|
+
private mentionHashPos;
|
|
143
|
+
/** 현재 활성 trigger char — '#' / '@' / '/'. popup 비활성 시 의미 없음. */
|
|
144
|
+
private mentionTrigger;
|
|
145
|
+
/** popup 열기 직전 사용자 selection 스냅샷 — Esc/blur close 시 원복용 */
|
|
146
|
+
private originalSelectedRefids;
|
|
147
|
+
/** popup 에서 명시 선택된 #mention 매핑 — {token: refid}.
|
|
148
|
+
* 사용자 textarea 에는 #token 만 보이지만 server 한테는 정확한 refid 전달.
|
|
149
|
+
* send 시 mutation input.mentions 로 함께 전송. 사용자가 textarea 비우거나
|
|
150
|
+
* 새 채팅 시작하면 정리. */
|
|
151
|
+
private pickedMentions;
|
|
152
|
+
/** popup 에서 명시 선택된 @user 멘션 매핑 — {token: userId}.
|
|
153
|
+
* textarea 에는 @username 만 보이지만 server 한테는 정확한 userId 전달.
|
|
154
|
+
* send 시 mutation input.userMentions 로 함께 전송. */
|
|
155
|
+
private pickedUserMentions;
|
|
156
|
+
/** input 디바운스 timer — 150ms 후 refreshMentionPopup 실행 (F-Finder 와 동일) */
|
|
157
|
+
private inputDebounceTimer?;
|
|
158
|
+
/** centerTo 디바운스 timer — arrow nav / hover 빠를 때 카메라 애니메이션 race 방지 */
|
|
159
|
+
private centerDebounceTimer?;
|
|
160
|
+
/** Default 카탈로그 후보 캐시 — chat panel mount 시 1회 빌드 */
|
|
161
|
+
private cachedCatalogCandidates;
|
|
162
|
+
/** Default slash template 후보 캐시 — chat panel mount 시 1회 빌드 */
|
|
163
|
+
private cachedSlashCandidates;
|
|
164
|
+
/** `@` 마지막 query 의 도메인 사용자 후보 캐시 — userProvider 응답 도착 시 갱신.
|
|
165
|
+
* query 별 캐시가 아니라 단순 "최근 결과" — async race 회피. */
|
|
166
|
+
private cachedUserCandidates;
|
|
167
|
+
/** 진행 중인 userProvider fetch token — 늦게 도착한 응답이 최신을 덮어쓰지 않도록 식별. */
|
|
168
|
+
private userFetchToken;
|
|
169
|
+
static styles: import("lit").CSSResult[];
|
|
170
|
+
connectedCallback(): void;
|
|
171
|
+
updated(changed: Map<string, any>): void;
|
|
172
|
+
disconnectedCallback(): void;
|
|
173
|
+
private _startPresence;
|
|
174
|
+
private _stopPresence;
|
|
175
|
+
private _startMessageSubscription;
|
|
176
|
+
private _stopMessageSubscription;
|
|
177
|
+
/** 서버 ChatMessage → ChatLine. */
|
|
178
|
+
private _msgToLine;
|
|
179
|
+
/**
|
|
180
|
+
* 원격(방송) 메시지 수신 — 에코·중복은 id 로 차단, 신규는 transcript 에 append.
|
|
181
|
+
* 자기 발신 메시지의 id 는 전송 reconcile 에서 이미 _seenMessageIds 에 등록됨.
|
|
182
|
+
*/
|
|
183
|
+
private _onRemoteMessage;
|
|
184
|
+
/**
|
|
185
|
+
* 전송한 optimistic 라인을 서버 id 로 reconcile (index 비의존 — _localId 로 탐색).
|
|
186
|
+
* 에코가 응답보다 먼저 도착해 이미 append 됐으면 optimistic 중복 라인을 제거한다.
|
|
187
|
+
*/
|
|
188
|
+
private _reconcileSentLine;
|
|
189
|
+
private _loadParticipants;
|
|
190
|
+
private _touchPresence;
|
|
191
|
+
/** lastSeenAt 이 TTL 이내면 online. (_presenceTick 의존으로 주기 재평가.) */
|
|
192
|
+
private _isOnline;
|
|
193
|
+
private loadHistory;
|
|
194
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
195
|
+
private onKeyDown;
|
|
196
|
+
/** input 이벤트 — value 즉시 반영 + popup 갱신은 150ms 디바운스 (F-Finder 와 동일).
|
|
197
|
+
* big board 에서 매 keystroke filter 비용 절감 + 한국어 IME 조합 중 깜빡임 완화. */
|
|
198
|
+
private onTextareaInput;
|
|
199
|
+
/** 현재 cursor 위치를 보고 mention popup 활성/비활성 + 후보 갱신.
|
|
200
|
+
* `#` (컴포넌트) / `@` (카탈로그) / `/` (slash 템플릿) 한 번에 하나만 활성. */
|
|
201
|
+
private refreshMentionPopup;
|
|
202
|
+
/** `@` query 에 대한 userProvider 비동기 호출 — 응답 도착 시 popup 결과 갱신.
|
|
203
|
+
* race 방지: token 으로 최신 호출 식별 (늦게 도착한 응답 무시). */
|
|
204
|
+
private refreshUserCandidatesAsync;
|
|
205
|
+
/** popup 후보들 outline highlight — 카메라/선택 변경 없음.
|
|
206
|
+
* 타이핑 직후 (refreshMentionPopup) 에서 호출 — 사용자가 active 를 명시 이동하지
|
|
207
|
+
* 않은 상태이므로 임의의 첫 항목을 선택하거나 카메라 이동시키지 않음.
|
|
208
|
+
* # trigger 일 때만 활성. */
|
|
209
|
+
private highlightMatchedCandidates;
|
|
210
|
+
/** active 후보 live preview — 사용자가 ↑↓ 키 / popup 마우스 hover 로 명시적으로
|
|
211
|
+
* active 를 옮긴 시점에 호출. F-Finder 동급 3-action: highlight + select + centerTo.
|
|
212
|
+
* centerTo 는 150ms 디바운스 — 빠른 nav 시 카메라 애니메이션 race 방지.
|
|
213
|
+
* # trigger 일 때만 활성. */
|
|
214
|
+
private previewActiveCandidate;
|
|
215
|
+
private dispatchActions;
|
|
216
|
+
/** 메시지 버블의 `<span class="mention">#token</span>` 클릭 — 컴포넌트로 select + centerTo.
|
|
217
|
+
* resolve 룰은 pure helper `resolveMentionToken` 에 위임 (단위 테스트 가능). */
|
|
218
|
+
private onBubbleClick;
|
|
219
|
+
/** popup 닫기. commit=false (취소) 면 # 의 경우:
|
|
220
|
+
* - highlight 정리 (highlightComponents [])
|
|
221
|
+
* - 원래 selection 으로 원복
|
|
222
|
+
* commit=true (확정) 면 현재 preview 상태 유지 + highlight 만 정리. */
|
|
223
|
+
private closeMentionPopup;
|
|
224
|
+
/** 후보 1개를 textarea 에 적용 + popup 닫고 cursor 재배치. */
|
|
225
|
+
private applyMention;
|
|
226
|
+
/** 예시 그룹 — i18n 키. localize mixin 이 언어 변경 시 자동 재렌더. */
|
|
227
|
+
private static readonly EXAMPLE_GROUPS;
|
|
228
|
+
/** 보드의 세션 탭 — 다중 세션 활성화 시 패널 상단. host 가 sessions 비워두면 표시 X.
|
|
229
|
+
* 레이블은 session.name 우선, 없으면 fallback "세션 N". */
|
|
230
|
+
private renderSessionTabs;
|
|
231
|
+
/** C4 roster — 세션 참여자 + online 표시. 참여자 2명 미만이면 숨김(혼자면 의미 없음). */
|
|
232
|
+
private renderRoster;
|
|
233
|
+
private _onSessionTabClick;
|
|
234
|
+
private _onSessionCreateClick;
|
|
235
|
+
private renderEmpty;
|
|
236
|
+
/** trigger chip 클릭 — textarea 에 trigger 문자 삽입 + focus + popup 자동 활성. */
|
|
237
|
+
private insertTrigger;
|
|
238
|
+
/** 예시 클릭 — 입력창에 채우고 포커스 (사용자가 수정 후 전송 가능) */
|
|
239
|
+
private useExample;
|
|
240
|
+
private renderInlineExamples;
|
|
241
|
+
private retryLastSend;
|
|
242
|
+
/**
|
|
243
|
+
* 메시지별 hover 액션 — 텍스트 chip 으로 명확.
|
|
244
|
+
* user : 액션 row 자체 X (자기 메시지에 시각 노이즈 X — 편집은 input 위 "새 대화" 흐름 또는 마우스 더블클릭)
|
|
245
|
+
* assistant : 복사 + 재생성 + (patch 적용된 경우만) 되돌리기
|
|
246
|
+
* system : 없음
|
|
247
|
+
*/
|
|
248
|
+
private renderMessageActions;
|
|
249
|
+
/**
|
|
250
|
+
* "AI 가 이런 도구를 사용했습니다" fold-able 박스.
|
|
251
|
+
*
|
|
252
|
+
* - 기본 닫힘 (toolUsagesOpen=false). 헤더 클릭 시 toggle.
|
|
253
|
+
* - 펼쳤을 때 도구 별로 name + arguments + result + read/write 색상 배지.
|
|
254
|
+
* - 디버그 / 신뢰도 향상용 — 사용자가 "왜 이렇게 답했지" 의문 가질 때 즉시 검증.
|
|
255
|
+
*/
|
|
256
|
+
private renderToolUsages;
|
|
257
|
+
private toggleToolUsages;
|
|
258
|
+
private formatJson;
|
|
259
|
+
private copyMessage;
|
|
260
|
+
private showToast;
|
|
261
|
+
/**
|
|
262
|
+
* 사용자 메시지 편집 — 해당 메시지 + 이후 모두 UI 에서 제거하고 입력창에 채움.
|
|
263
|
+
* 서버 영속 history 는 그대로 유지 (다음 send 시 새 메시지로 추가).
|
|
264
|
+
*/
|
|
265
|
+
private editUserMessage;
|
|
266
|
+
/**
|
|
267
|
+
* AI 응답 재생성 — 해당 assistant 메시지 + 이후 제거하고, 직전 user 메시지를 다시 send.
|
|
268
|
+
*/
|
|
269
|
+
private regenerateAssistant;
|
|
270
|
+
private onRevertClick;
|
|
271
|
+
private send;
|
|
272
|
+
}
|
|
273
|
+
declare global {
|
|
274
|
+
interface HTMLElementTagNameMap {
|
|
275
|
+
'ox-board-ai-chat': OxBoardAIChat;
|
|
276
|
+
}
|
|
277
|
+
}
|