@things-factory/ai-assistant 10.1.15 → 10.1.16

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.
@@ -14,6 +14,28 @@ export interface ChatDefaults {
14
14
  * 그 말을 한다.
15
15
  */
16
16
  footerNoticeKey?: string;
17
+ /**
18
+ * Follow-up chips offered on a proposal that arrived without its own `choices`.
19
+ *
20
+ * These used to sit in the chat component as a literal array: "다른 콘셉트 재제안", "비율 슬림
21
+ * 조정", "색상 테마 변경", "디테일 보강". Those are a 3D modeller's words, written in Korean with
22
+ * no i18n, inside a component four apps share. A plant screen proposal offered to slim its
23
+ * aspect ratio.
24
+ *
25
+ * Same reason as `footerNoticeKey`: the host that knows what a follow-up means writes it.
26
+ * Leave it unset and a proposal without choices simply gets none, which is correct.
27
+ */
28
+ proposalChoices?: any[];
29
+ /**
30
+ * The **i18n key** for the line shown once the host reports a proposal staged. Unset means the
31
+ * badge is never drawn.
32
+ *
33
+ * The component cannot know this on its own. It used to read "선택지가 딸려 있다" as "the model is
34
+ * in the 3D viewer" and say so — in a component plant and twin also use, neither of which has a
35
+ * 3D viewer. Staging is something the host does, so the host says whether it happened
36
+ * (`acknowledgeProposalStaged`) and in what words.
37
+ */
38
+ stagedNoticeKey?: string;
17
39
  }
18
40
  export declare const chatDefaults: ChatDefaults;
19
41
  /** 호스트가 자기 기본 목록을 넣는다. 두 번 부르면 뒤엣것이 이긴다(같은 호스트의 재로드). */
@@ -20,5 +20,9 @@ export function registerChatDefaults(defaults) {
20
20
  chatDefaults.slashTemplates = defaults.slashTemplates;
21
21
  if (defaults.footerNoticeKey)
22
22
  chatDefaults.footerNoticeKey = defaults.footerNoticeKey;
23
+ if (defaults.proposalChoices)
24
+ chatDefaults.proposalChoices = defaults.proposalChoices;
25
+ if (defaults.stagedNoticeKey)
26
+ chatDefaults.stagedNoticeKey = defaults.stagedNoticeKey;
23
27
  }
24
28
  //# sourceMappingURL=chat-defaults.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-defaults.js","sourceRoot":"","sources":["../../client/components/chat-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAoBH,MAAM,CAAC,MAAM,YAAY,GAAiB,EAAE,cAAc,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,CAAA;AAEpF,yDAAyD;AACzD,MAAM,UAAU,oBAAoB,CAAC,QAA+B;IAClE,IAAI,QAAQ,CAAC,cAAc;QAAE,YAAY,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAA;IAClF,IAAI,QAAQ,CAAC,cAAc;QAAE,YAAY,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAA;IAClF,IAAI,QAAQ,CAAC,eAAe;QAAE,YAAY,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAA;AACvF,CAAC","sourcesContent":["/*\n * 대화면의 기본 목록 — **넣는 쪽이 주인이다.**\n *\n * `@` 카탈로그와 `/` 슬래시 목록은 도메인마다 다르다. 보드 저작에는 컴포넌트 타입이 뜨고, 공장\n * 대화면에는 그것이 뜨면 안 된다. 그런데 대화면이 보드 목록을 직접 import 하고 있어서, 보드가\n * 없는 제품이 이 컴포넌트를 쓰면 **쓸 수 없는 항목이 목록에 떴다.**\n *\n * 그래서 호스트가 넣는다. `board-ai` 를 import 하면 그 패키지가 부팅 때 자기 것을 넣고(client\n * barrel), 안 하는 제품은 빈 채로 시작한다. 빈 것이 맞다 — 없는 것을 보여 주는 것보다 낫다.\n *\n * ⚠ 대화면이 뜬 뒤에 넣으면 늦는다. 후보 캐시가 인스턴스 만들 때 한 번 만들어진다. 호스트의\n * client barrel(=모듈 로드 시점)에서 부르면 항상 먼저다.\n */\n\n/** 목록의 모양은 이 파일이 정하지 않는다 — 넣는 쪽의 타입을 그대로 받는다. */\nexport interface ChatDefaults {\n catalogEntries: any[]\n slashTemplates: any[]\n /**\n * 빈 화면 맨 아래 한 줄의 **i18n 키**. 없으면 그 줄을 안 그린다.\n *\n * 문장이 아니라 키를 받는 이유: 호스트의 client barrel 은 모듈 로드 시점에 돌고, 그때 i18next 가\n * 아직 언어를 안 잡았을 수 있다. 키로 받아 **그릴 때** 번역한다.\n *\n * 왜 호스트 것인가: 여기 있던 기본 문장이 「AI 응답은 항상 **보드에** 적용 전 미리보기로 확인\n * 가능합니다」였다. 보드가 없는 제품에서는 거짓이고(figure 에서 실제로 그렇게 떴다), 그 약속은\n * 보드 저작기가 patch 를 미리보기로 거는 **기계가 있어서** 할 수 있는 말이다. 기계를 가진 쪽이\n * 그 말을 한다.\n */\n footerNoticeKey?: string\n}\n\nexport const chatDefaults: ChatDefaults = { catalogEntries: [], slashTemplates: [] }\n\n/** 호스트가 자기 기본 목록을 넣는다. 두 번 부르면 뒤엣것이 이긴다(같은 호스트의 재로드). */\nexport function registerChatDefaults(defaults: Partial<ChatDefaults>): void {\n if (defaults.catalogEntries) chatDefaults.catalogEntries = defaults.catalogEntries\n if (defaults.slashTemplates) chatDefaults.slashTemplates = defaults.slashTemplates\n if (defaults.footerNoticeKey) chatDefaults.footerNoticeKey = defaults.footerNoticeKey\n}\n"]}
1
+ {"version":3,"file":"chat-defaults.js","sourceRoot":"","sources":["../../client/components/chat-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA0CH,MAAM,CAAC,MAAM,YAAY,GAAiB,EAAE,cAAc,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,CAAA;AAEpF,yDAAyD;AACzD,MAAM,UAAU,oBAAoB,CAAC,QAA+B;IAClE,IAAI,QAAQ,CAAC,cAAc;QAAE,YAAY,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAA;IAClF,IAAI,QAAQ,CAAC,cAAc;QAAE,YAAY,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAA;IAClF,IAAI,QAAQ,CAAC,eAAe;QAAE,YAAY,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAA;IACrF,IAAI,QAAQ,CAAC,eAAe;QAAE,YAAY,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAA;IACrF,IAAI,QAAQ,CAAC,eAAe;QAAE,YAAY,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAA;AACvF,CAAC","sourcesContent":["/*\n * 대화면의 기본 목록 — **넣는 쪽이 주인이다.**\n *\n * `@` 카탈로그와 `/` 슬래시 목록은 도메인마다 다르다. 보드 저작에는 컴포넌트 타입이 뜨고, 공장\n * 대화면에는 그것이 뜨면 안 된다. 그런데 대화면이 보드 목록을 직접 import 하고 있어서, 보드가\n * 없는 제품이 이 컴포넌트를 쓰면 **쓸 수 없는 항목이 목록에 떴다.**\n *\n * 그래서 호스트가 넣는다. `board-ai` 를 import 하면 그 패키지가 부팅 때 자기 것을 넣고(client\n * barrel), 안 하는 제품은 빈 채로 시작한다. 빈 것이 맞다 — 없는 것을 보여 주는 것보다 낫다.\n *\n * ⚠ 대화면이 뜬 뒤에 넣으면 늦는다. 후보 캐시가 인스턴스 만들 때 한 번 만들어진다. 호스트의\n * client barrel(=모듈 로드 시점)에서 부르면 항상 먼저다.\n */\n\n/** 목록의 모양은 이 파일이 정하지 않는다 — 넣는 쪽의 타입을 그대로 받는다. */\nexport interface ChatDefaults {\n catalogEntries: any[]\n slashTemplates: any[]\n /**\n * 빈 화면 맨 아래 한 줄의 **i18n 키**. 없으면 그 줄을 안 그린다.\n *\n * 문장이 아니라 키를 받는 이유: 호스트의 client barrel 은 모듈 로드 시점에 돌고, 그때 i18next 가\n * 아직 언어를 안 잡았을 수 있다. 키로 받아 **그릴 때** 번역한다.\n *\n * 왜 호스트 것인가: 여기 있던 기본 문장이 「AI 응답은 항상 **보드에** 적용 전 미리보기로 확인\n * 가능합니다」였다. 보드가 없는 제품에서는 거짓이고(figure 에서 실제로 그렇게 떴다), 그 약속은\n * 보드 저작기가 patch 를 미리보기로 거는 **기계가 있어서** 할 수 있는 말이다. 기계를 가진 쪽이\n * 그 말을 한다.\n */\n footerNoticeKey?: string\n /**\n * Follow-up chips offered on a proposal that arrived without its own `choices`.\n *\n * These used to sit in the chat component as a literal array: \"다른 콘셉트 재제안\", \"비율 슬림\n * 조정\", \"색상 테마 변경\", \"디테일 보강\". Those are a 3D modeller's words, written in Korean with\n * no i18n, inside a component four apps share. A plant screen proposal offered to slim its\n * aspect ratio.\n *\n * Same reason as `footerNoticeKey`: the host that knows what a follow-up means writes it.\n * Leave it unset and a proposal without choices simply gets none, which is correct.\n */\n proposalChoices?: any[]\n /**\n * The **i18n key** for the line shown once the host reports a proposal staged. Unset means the\n * badge is never drawn.\n *\n * The component cannot know this on its own. It used to read \"선택지가 딸려 있다\" as \"the model is\n * in the 3D viewer\" and say so — in a component plant and twin also use, neither of which has a\n * 3D viewer. Staging is something the host does, so the host says whether it happened\n * (`acknowledgeProposalStaged`) and in what words.\n */\n stagedNoticeKey?: string\n}\n\nexport const chatDefaults: ChatDefaults = { catalogEntries: [], slashTemplates: [] }\n\n/** 호스트가 자기 기본 목록을 넣는다. 두 번 부르면 뒤엣것이 이긴다(같은 호스트의 재로드). */\nexport function registerChatDefaults(defaults: Partial<ChatDefaults>): void {\n if (defaults.catalogEntries) chatDefaults.catalogEntries = defaults.catalogEntries\n if (defaults.slashTemplates) chatDefaults.slashTemplates = defaults.slashTemplates\n if (defaults.footerNoticeKey) chatDefaults.footerNoticeKey = defaults.footerNoticeKey\n if (defaults.proposalChoices) chatDefaults.proposalChoices = defaults.proposalChoices\n if (defaults.stagedNoticeKey) chatDefaults.stagedNoticeKey = defaults.stagedNoticeKey\n}\n"]}