@things-factory/ai-assistant 10.1.27 → 10.1.29

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.
Files changed (210) hide show
  1. package/client/components/assistant-chat.ts +701 -63
  2. package/client/components/assistant-mode.test.ts +105 -55
  3. package/client/components/assistant-mode.ts +144 -82
  4. package/client/components/chat-echo-dedup.test.ts +23 -0
  5. package/client/components/chat-echo-dedup.ts +29 -3
  6. package/client/components/chat-input-builder.test.ts +20 -20
  7. package/client/components/chat-input-builder.ts +16 -14
  8. package/client/components/chat-proposal-survival.test.ts +73 -0
  9. package/client/components/mention-popup.ts +31 -8
  10. package/client/components/panel-aria.test.ts +54 -0
  11. package/client/components/proposal-outcome-line.ts +33 -0
  12. package/client/utils/assistant-session-controller.test.ts +75 -0
  13. package/client/utils/assistant-session-controller.ts +37 -1
  14. package/client/utils/assistant-session-transport.ts +13 -5
  15. package/dist-client/components/assistant-chat.d.ts +140 -13
  16. package/dist-client/components/assistant-chat.js +659 -71
  17. package/dist-client/components/assistant-chat.js.map +1 -1
  18. package/dist-client/components/assistant-mode.d.ts +102 -68
  19. package/dist-client/components/assistant-mode.js +79 -19
  20. package/dist-client/components/assistant-mode.js.map +1 -1
  21. package/dist-client/components/assistant-mode.test.js +90 -53
  22. package/dist-client/components/assistant-mode.test.js.map +1 -1
  23. package/dist-client/components/chat-echo-dedup.d.ts +2 -0
  24. package/dist-client/components/chat-echo-dedup.js +27 -4
  25. package/dist-client/components/chat-echo-dedup.js.map +1 -1
  26. package/dist-client/components/chat-echo-dedup.test.js +20 -0
  27. package/dist-client/components/chat-echo-dedup.test.js.map +1 -1
  28. package/dist-client/components/chat-input-builder.d.ts +12 -7
  29. package/dist-client/components/chat-input-builder.js +8 -10
  30. package/dist-client/components/chat-input-builder.js.map +1 -1
  31. package/dist-client/components/chat-input-builder.test.js +17 -18
  32. package/dist-client/components/chat-input-builder.test.js.map +1 -1
  33. package/dist-client/components/chat-proposal-survival.test.d.ts +1 -0
  34. package/dist-client/components/chat-proposal-survival.test.js +61 -0
  35. package/dist-client/components/chat-proposal-survival.test.js.map +1 -0
  36. package/dist-client/components/mention-popup.js +28 -8
  37. package/dist-client/components/mention-popup.js.map +1 -1
  38. package/dist-client/components/panel-aria.test.d.ts +1 -0
  39. package/dist-client/components/panel-aria.test.js +49 -0
  40. package/dist-client/components/panel-aria.test.js.map +1 -0
  41. package/dist-client/components/proposal-outcome-line.d.ts +9 -0
  42. package/dist-client/components/proposal-outcome-line.js +15 -0
  43. package/dist-client/components/proposal-outcome-line.js.map +1 -0
  44. package/dist-client/tsconfig.tsbuildinfo +1 -1
  45. package/dist-client/utils/assistant-session-controller.d.ts +20 -0
  46. package/dist-client/utils/assistant-session-controller.js +16 -0
  47. package/dist-client/utils/assistant-session-controller.js.map +1 -1
  48. package/dist-client/utils/assistant-session-controller.test.d.ts +1 -0
  49. package/dist-client/utils/assistant-session-controller.test.js +56 -0
  50. package/dist-client/utils/assistant-session-controller.test.js.map +1 -0
  51. package/dist-client/utils/assistant-session-transport.js +13 -5
  52. package/dist-client/utils/assistant-session-transport.js.map +1 -1
  53. package/dist-server/door-declaration-report.d.ts +14 -0
  54. package/dist-server/door-declaration-report.js +54 -0
  55. package/dist-server/door-declaration-report.js.map +1 -0
  56. package/dist-server/service/assistant-capability-resolver.d.ts +17 -0
  57. package/dist-server/service/assistant-capability-resolver.js +88 -0
  58. package/dist-server/service/assistant-capability-resolver.js.map +1 -0
  59. package/dist-server/service/assistant-chat-resolver.d.ts +6 -6
  60. package/dist-server/service/assistant-chat-resolver.js +185 -44
  61. package/dist-server/service/assistant-chat-resolver.js.map +1 -1
  62. package/dist-server/service/assistant-mode/assistant-mode-resolver.d.ts +33 -0
  63. package/dist-server/service/assistant-mode/assistant-mode-resolver.js +148 -0
  64. package/dist-server/service/assistant-mode/assistant-mode-resolver.js.map +1 -0
  65. package/dist-server/service/assistant-mode/index.d.ts +9 -0
  66. package/dist-server/service/assistant-mode/index.js +19 -0
  67. package/dist-server/service/assistant-mode/index.js.map +1 -0
  68. package/dist-server/service/assistant-mode/registry.d.ts +18 -0
  69. package/dist-server/service/assistant-mode/registry.js +136 -0
  70. package/dist-server/service/assistant-mode/registry.js.map +1 -0
  71. package/dist-server/service/assistant-mode/resolve.d.ts +43 -0
  72. package/dist-server/service/assistant-mode/resolve.js +65 -0
  73. package/dist-server/service/assistant-mode/resolve.js.map +1 -0
  74. package/dist-server/service/assistant-mode/types.d.ts +120 -0
  75. package/dist-server/service/assistant-mode/types.js +12 -0
  76. package/dist-server/service/assistant-mode/types.js.map +1 -0
  77. package/dist-server/service/chat-message/carried-turns.d.ts +48 -0
  78. package/dist-server/service/chat-message/carried-turns.js +92 -0
  79. package/dist-server/service/chat-message/carried-turns.js.map +1 -0
  80. package/dist-server/service/chat-message/chat-message-subscription.d.ts +1 -1
  81. package/dist-server/service/chat-message/chat-message-subscription.js +24 -6
  82. package/dist-server/service/chat-message/chat-message-subscription.js.map +1 -1
  83. package/dist-server/service/chat-message/chat-message.d.ts +32 -0
  84. package/dist-server/service/chat-message/chat-message.js +17 -0
  85. package/dist-server/service/chat-message/chat-message.js.map +1 -1
  86. package/dist-server/service/chat-message/door-access.d.ts +27 -0
  87. package/dist-server/service/chat-message/door-access.js +34 -0
  88. package/dist-server/service/chat-message/door-access.js.map +1 -0
  89. package/dist-server/service/chat-message/fold-session-history.d.ts +30 -0
  90. package/dist-server/service/chat-message/fold-session-history.js +133 -0
  91. package/dist-server/service/chat-message/fold-session-history.js.map +1 -0
  92. package/dist-server/service/chat-message/llm-history.d.ts +7 -0
  93. package/dist-server/service/chat-message/llm-history.js +23 -11
  94. package/dist-server/service/chat-message/llm-history.js.map +1 -1
  95. package/dist-server/service/chat-message/message-doors.d.ts +29 -0
  96. package/dist-server/service/chat-message/message-doors.js +107 -0
  97. package/dist-server/service/chat-message/message-doors.js.map +1 -0
  98. package/dist-server/service/chat-message/proposal-outcome.d.ts +18 -0
  99. package/dist-server/service/chat-message/proposal-outcome.js +31 -0
  100. package/dist-server/service/chat-message/proposal-outcome.js.map +1 -0
  101. package/dist-server/service/chat-message/reader-gate.d.ts +3 -0
  102. package/dist-server/service/chat-message/reader-gate.js +39 -0
  103. package/dist-server/service/chat-message/reader-gate.js.map +1 -0
  104. package/dist-server/service/chat-message/room-message.d.ts +4 -0
  105. package/dist-server/service/chat-message/room-message.js +25 -0
  106. package/dist-server/service/chat-message/room-message.js.map +1 -0
  107. package/dist-server/service/chat-session/chat-session.d.ts +36 -0
  108. package/dist-server/service/chat-session/chat-session.js +27 -2
  109. package/dist-server/service/chat-session/chat-session.js.map +1 -1
  110. package/dist-server/service/chat-session/session-anchor.d.ts +10 -1
  111. package/dist-server/service/chat-session/session-anchor.js +12 -4
  112. package/dist-server/service/chat-session/session-anchor.js.map +1 -1
  113. package/dist-server/service/chat-session/session-inbox.d.ts +6 -1
  114. package/dist-server/service/chat-session/session-inbox.js +3 -2
  115. package/dist-server/service/chat-session/session-inbox.js.map +1 -1
  116. package/dist-server/service/chat-session/session-kind.d.ts +14 -0
  117. package/dist-server/service/chat-session/session-kind.js +30 -0
  118. package/dist-server/service/chat-session/session-kind.js.map +1 -0
  119. package/dist-server/service/chat-session/session-visibility.d.ts +15 -0
  120. package/dist-server/service/chat-session/session-visibility.js +35 -0
  121. package/dist-server/service/chat-session/session-visibility.js.map +1 -0
  122. package/dist-server/service/chat-session/station-session-guard.d.ts +1 -5
  123. package/dist-server/service/chat-session/station-session-guard.js +7 -2
  124. package/dist-server/service/chat-session/station-session-guard.js.map +1 -1
  125. package/dist-server/service/chat-session-participant/mention-invite.d.ts +29 -0
  126. package/dist-server/service/chat-session-participant/mention-invite.js +103 -0
  127. package/dist-server/service/chat-session-participant/mention-invite.js.map +1 -0
  128. package/dist-server/service/chat-session-resolver.d.ts +17 -0
  129. package/dist-server/service/chat-session-resolver.js +271 -15
  130. package/dist-server/service/chat-session-resolver.js.map +1 -1
  131. package/dist-server/service/grounding-sources.d.ts +14 -0
  132. package/dist-server/service/grounding-sources.js +26 -0
  133. package/dist-server/service/grounding-sources.js.map +1 -0
  134. package/dist-server/service/index.d.ts +9 -1
  135. package/dist-server/service/index.js +21 -0
  136. package/dist-server/service/index.js.map +1 -1
  137. package/dist-server/service/request-translator.d.ts +2 -0
  138. package/dist-server/service/request-translator.js +20 -0
  139. package/dist-server/service/request-translator.js.map +1 -0
  140. package/dist-server/service/testing/conversation-script.d.ts +123 -0
  141. package/dist-server/service/testing/conversation-script.js +202 -0
  142. package/dist-server/service/testing/conversation-script.js.map +1 -0
  143. package/dist-server/service/testing/mode-conformance.d.ts +50 -0
  144. package/dist-server/service/testing/mode-conformance.js +103 -0
  145. package/dist-server/service/testing/mode-conformance.js.map +1 -0
  146. package/dist-server/tool-registry-boot-report.d.ts +3 -0
  147. package/dist-server/tool-registry-boot-report.js +32 -2
  148. package/dist-server/tool-registry-boot-report.js.map +1 -1
  149. package/dist-server/tsconfig.tsbuildinfo +1 -1
  150. package/package.json +5 -5
  151. package/server/door-declaration-report.test.ts +53 -0
  152. package/server/door-declaration-report.ts +61 -0
  153. package/server/explicit-graphql-types.test.ts +56 -0
  154. package/server/service/assistant-capability-resolver.ts +66 -0
  155. package/server/service/assistant-chat-resolver.ts +205 -42
  156. package/server/service/assistant-mode/assistant-mode-resolver.ts +108 -0
  157. package/server/service/assistant-mode/index.ts +16 -0
  158. package/server/service/assistant-mode/registry.test.ts +105 -0
  159. package/server/service/assistant-mode/registry.ts +147 -0
  160. package/server/service/assistant-mode/resolve.test.ts +120 -0
  161. package/server/service/assistant-mode/resolve.ts +105 -0
  162. package/server/service/assistant-mode/subject-defaults.test.ts +86 -0
  163. package/server/service/assistant-mode/types.ts +121 -0
  164. package/server/service/chat-message/carried-turns.test.ts +80 -0
  165. package/server/service/chat-message/carried-turns.ts +112 -0
  166. package/server/service/chat-message/chat-message-subscription.ts +20 -4
  167. package/server/service/chat-message/chat-message.ts +44 -0
  168. package/server/service/chat-message/door-access.test.ts +72 -0
  169. package/server/service/chat-message/door-access.ts +65 -0
  170. package/server/service/chat-message/fold-history-window.test.ts +184 -0
  171. package/server/service/chat-message/fold-session-history.test.ts +98 -0
  172. package/server/service/chat-message/fold-session-history.ts +115 -0
  173. package/server/service/chat-message/llm-history.test.ts +58 -7
  174. package/server/service/chat-message/llm-history.ts +30 -11
  175. package/server/service/chat-message/message-doors.test.ts +87 -0
  176. package/server/service/chat-message/message-doors.ts +117 -0
  177. package/server/service/chat-message/proposal-outcome.test.ts +48 -0
  178. package/server/service/chat-message/proposal-outcome.ts +42 -0
  179. package/server/service/chat-message/reader-gate.ts +44 -0
  180. package/server/service/chat-message/room-message.test.ts +21 -0
  181. package/server/service/chat-message/room-message.ts +22 -0
  182. package/server/service/chat-session/chat-session.ts +46 -1
  183. package/server/service/chat-session/session-anchor.ts +12 -3
  184. package/server/service/chat-session/session-inbox.test.ts +18 -0
  185. package/server/service/chat-session/session-inbox.ts +11 -2
  186. package/server/service/chat-session/session-kind.test.ts +24 -0
  187. package/server/service/chat-session/session-kind.ts +32 -0
  188. package/server/service/chat-session/session-visibility.test.ts +52 -0
  189. package/server/service/chat-session/session-visibility.ts +34 -0
  190. package/server/service/chat-session/station-session-guard.ts +10 -2
  191. package/server/service/chat-session-participant/mention-invite.test.ts +125 -0
  192. package/server/service/chat-session-participant/mention-invite.ts +121 -0
  193. package/server/service/chat-session-resolver.ts +276 -15
  194. package/server/service/grounding-sources.test.ts +55 -0
  195. package/server/service/grounding-sources.ts +46 -0
  196. package/server/service/index.ts +21 -0
  197. package/server/service/request-translator.test.ts +45 -0
  198. package/server/service/request-translator.ts +33 -0
  199. package/server/service/station-session-guard.test.ts +12 -5
  200. package/server/service/testing/conversation-scenario.test.ts +163 -0
  201. package/server/service/testing/conversation-script.test.ts +131 -0
  202. package/server/service/testing/conversation-script.ts +288 -0
  203. package/server/service/testing/mode-conformance.ts +122 -0
  204. package/server/tool-registry-boot-report.ts +31 -2
  205. package/test/assistant-chat-call-sites.test.ts +82 -0
  206. package/translations/en.json +46 -3
  207. package/translations/ja.json +46 -3
  208. package/translations/ko.json +46 -3
  209. package/translations/ms.json +46 -3
  210. package/translations/zh.json +46 -3
@@ -59,12 +59,55 @@
59
59
  "ai-assistant.text.ungrounded-mention": "確認できない対象に言及しています — 実データにありません:",
60
60
  "ai-assistant.text.toggle-system-note": "クリックで展開",
61
61
  "ai-assistant.button.run-proposal": "実行",
62
- "ai-assistant.text.proposal-sent": "実行を依頼しました",
63
62
  "ai-assistant.text.history-folded": "会話が長くなり、前半の {count} 件は省略されました。別の話題なら新しい会話のほうが適しています。",
64
63
  "ai-assistant.text.history-folded-summarized": "会話が長くなり、前半の {count} 件は要約にまとめられました。別の話題なら新しい会話のほうが適しています。",
65
64
  "ai-assistant.button.attach": "添付",
66
- "ai-assistant.tooltip.attach-file": "画像またはファイルを添付(クリップボードの貼り付け・ドラッグ&ドロップ対応)",
65
+ "ai-assistant.tooltip.attach-file": "画像を添付 (ドラッグ&ドロップ・貼り付け対応)",
67
66
  "ai-assistant.text.drop-files-here": "ここに画像やファイルをドロップしてください",
68
67
  "ai-assistant.button.remove-attachment": "添付を削除",
69
- "ai-assistant.session.all": "すべての履歴"
68
+ "ai-assistant.session.all": "すべての履歴",
69
+ "ai-assistant.notice.stopped": "リクエストが途中で止まり、一部だけ処理しました。",
70
+ "ai-assistant.notice.provider-busy": "AI サービスが今応答していません。少し待ってからもう一度お試しください。",
71
+ "ai-assistant.notice.provider-error": "処理中に問題が発生しました。同じことが続く場合は管理者にお知らせください。",
72
+ "ai-assistant.notice.too-long": "処理が長くなり {iter} 段階で止まりました。分けて依頼してみてください。",
73
+ "ai-assistant.notice.tool-kept-failing": "{tool} の呼び出しが {count} 回続けて失敗したため止まりました。言い方を変えてみてください。",
74
+ "ai-assistant.text.no-match": "一致するものがありません",
75
+ "ai-assistant.text.messages-unreadable": "この会話を読み取れませんでした。",
76
+ "ai-assistant.text.sessions-unreadable": "会話の一覧を読み込めませんでした。",
77
+ "ai-assistant.text.session-not-created": "会話を開始できませんでした。",
78
+ "ai-assistant.text.proposal-choices": "次にできること",
79
+ "ai-assistant.text.attached-image-ask": "画像を添付しました。これを見てお願いします。",
80
+ "ai-assistant.text.attached-file-ask": "ファイルを添付しました。確認してください。",
81
+ "ai-assistant.text.other-figure-history": "この会話は別の Figure のものです。今開いているモデルの会話を開いてください。",
82
+ "ai-assistant.text.application-vs-model-history": "この会話はモデルではなくアプリケーションについてのものです。目的の会話を開いてください。",
83
+ "ai-assistant.text.other-station-history": "この会話は別の現場画面のものです。今見ている画面の会話を開いてください。",
84
+ "ai-assistant.text.unknown-mode": "この画面が求める会話がサーバーにありません({kind})。ページを再読み込みしてください。",
85
+ "ai-assistant.session.default-name": "会話 {n}",
86
+ "ai-assistant.match.id": "ID",
87
+ "ai-assistant.match.name": "名前",
88
+ "ai-assistant.match.tag": "タグ",
89
+ "ai-assistant.match.type": "種類",
90
+ "ai-assistant.match.class": "クラス",
91
+ "ai-assistant.match.text": "テキスト",
92
+ "ai-assistant.match.data": "値",
93
+ "ai-assistant.match.property": "属性",
94
+ "ai-assistant.match.description": "説明",
95
+ "ai-assistant.candidate.template": "文",
96
+ "ai-assistant.candidate.user": "人",
97
+ "ai-assistant.text.match-count": "{shown} / {all} 件",
98
+ "ai-assistant.text.match-overflow": "他 {count} 件 — 検索語を絞ってください",
99
+ "ai-assistant.verdict.accepted": "適用しました",
100
+ "ai-assistant.verdict.refused": "拒否されました",
101
+ "ai-assistant.verdict.unavailable": "実行できませんでした",
102
+ "ai-assistant.verdict.declined": "取り消しました",
103
+ "ai-assistant.text.proposal-waiting": "送信中 — {seconds}秒、まだ返事がありません",
104
+ "ai-assistant.text.proposal-applied-count": " {total} 件中 {applied} 件",
105
+ "ai-assistant.text.say-to-room-tooltip": "ここにいる人たちに話します。AI は答えません",
106
+ "ai-assistant.text.no-room-yet": "まだ保存されていない会話なので、一緒にいる人がいません",
107
+ "ai-assistant.text.will-be-invited": "送信すると {names} がこの会話に加わります",
108
+ "ai-assistant.text.cannot-invite": "{names} は加わりません。この会話にいる人だけが他の人を呼べます",
109
+ "ai-assistant.text.answer-needs-permission": "この回答を見る権限がありません。管理者に申請してください。",
110
+ "ai-assistant.label.conversation": "会話",
111
+ "ai-assistant.text.switch-conversation": "{name} の会話に切り替える",
112
+ "ai-assistant.text.session-kind-mismatch": "この会話は {sessionKind} です。{requested} として書いています。目的の会話を開いてください。"
70
113
  }
@@ -39,7 +39,6 @@
39
39
  "ai-assistant.text.ungrounded-mention": "확인되지 않은 대상을 언급했습니다 — 실제 데이터에 없습니다:",
40
40
  "ai-assistant.text.toggle-system-note": "눌러서 펼치기",
41
41
  "ai-assistant.button.run-proposal": "실행",
42
- "ai-assistant.text.proposal-sent": "실행 요청됨",
43
42
  "ai-assistant.text.history-folded": "대화가 길어져 앞부분 {count}개가 생략되었습니다. 다른 주제라면 새 대화가 낫습니다.",
44
43
  "ai-assistant.text.history-folded-summarized": "대화가 길어져 앞부분 {count}개가 요약으로 접혔습니다. 다른 주제라면 새 대화가 낫습니다.",
45
44
  "ai-assistant.example.create-monitoring-dashboard": "가동률·온도·압력 3개 게이지와 24시간 라인 차트로 모니터링 대시보드",
@@ -63,8 +62,52 @@
63
62
  "ai-assistant.text.mention-not-found": "#{token} 을(를) 찾을 수 없습니다",
64
63
  "ai-assistant.text.session-tab-label": "세션 {n}",
65
64
  "ai-assistant.button.attach": "첨부",
66
- "ai-assistant.tooltip.attach-file": "이미지 또는 파일 첨부 (클립보드 붙여넣기·드래그앤드롭 지원)",
65
+ "ai-assistant.tooltip.attach-file": "이미지 첨부 (클립보드 붙여넣기·드래그앤드롭 지원)",
67
66
  "ai-assistant.text.drop-files-here": "여기에 이미지나 파일을 놓으세요",
68
67
  "ai-assistant.button.remove-attachment": "첨부 삭제",
69
- "ai-assistant.session.all": "전체 이력"
68
+ "ai-assistant.session.all": "전체 이력",
69
+ "ai-assistant.notice.stopped": "요청이 중간에 멈춰서 일부만 처리했습니다.",
70
+ "ai-assistant.notice.provider-busy": "AI 서비스가 지금 응답하지 않습니다. 잠시 뒤에 다시 해 보세요.",
71
+ "ai-assistant.notice.provider-error": "처리 중에 문제가 생겼습니다. 같은 문제가 계속되면 관리자에게 알려 주세요.",
72
+ "ai-assistant.notice.too-long": "일이 길어져서 {iter}단계에서 멈췄습니다. 나눠서 요청해 보세요.",
73
+ "ai-assistant.notice.tool-kept-failing": "{tool} 호출이 {count}번 잇따라 실패해서 멈췄습니다. 다르게 말해 보세요.",
74
+ "ai-assistant.text.no-match": "맞는 것이 없습니다",
75
+ "ai-assistant.text.messages-unreadable": "이 대화를 읽지 못했습니다.",
76
+ "ai-assistant.text.sessions-unreadable": "대화 목록을 불러오지 못했습니다.",
77
+ "ai-assistant.text.session-not-created": "대화를 시작하지 못했습니다.",
78
+ "ai-assistant.text.proposal-choices": "이어서 할 것",
79
+ "ai-assistant.text.attached-image-ask": "이미지를 붙였습니다. 이걸 보고 해 주세요.",
80
+ "ai-assistant.text.attached-file-ask": "파일을 붙였습니다. 한번 봐 주세요.",
81
+ "ai-assistant.text.other-figure-history": "이 대화는 다른 Figure 의 것입니다. 지금 열어 둔 모델의 대화를 여세요.",
82
+ "ai-assistant.text.application-vs-model-history": "이 대화는 모델이 아니라 애플리케이션에 대한 것입니다. 원하는 쪽 대화를 여세요.",
83
+ "ai-assistant.text.other-station-history": "이 대화는 다른 현장 화면의 것입니다. 지금 보고 있는 화면의 대화를 여세요.",
84
+ "ai-assistant.text.unknown-mode": "이 화면이 찾는 대화가 서버에 없습니다({kind}). 페이지를 새로 고치세요.",
85
+ "ai-assistant.session.default-name": "대화 {n}",
86
+ "ai-assistant.match.id": "ID",
87
+ "ai-assistant.match.name": "이름",
88
+ "ai-assistant.match.tag": "태그",
89
+ "ai-assistant.match.type": "종류",
90
+ "ai-assistant.match.class": "클래스",
91
+ "ai-assistant.match.text": "글",
92
+ "ai-assistant.match.data": "값",
93
+ "ai-assistant.match.property": "속성",
94
+ "ai-assistant.match.description": "설명",
95
+ "ai-assistant.candidate.template": "문장",
96
+ "ai-assistant.candidate.user": "사람",
97
+ "ai-assistant.text.match-count": "{shown} / {all} 개",
98
+ "ai-assistant.text.match-overflow": "+{count} 개 더 있습니다 — 검색어를 좁히세요",
99
+ "ai-assistant.verdict.accepted": "적용했습니다",
100
+ "ai-assistant.verdict.refused": "거절했습니다",
101
+ "ai-assistant.verdict.unavailable": "실행하지 못했습니다",
102
+ "ai-assistant.verdict.declined": "취소했습니다",
103
+ "ai-assistant.text.proposal-waiting": "보내는 중 — {seconds}초, 아직 답이 없습니다",
104
+ "ai-assistant.text.proposal-applied-count": " {total} 중 {applied}",
105
+ "ai-assistant.text.say-to-room-tooltip": "여기 있는 사람들에게 말합니다. AI 는 답하지 않습니다",
106
+ "ai-assistant.text.no-room-yet": "아직 저장되지 않은 대화라 같이 있는 사람이 없습니다",
107
+ "ai-assistant.text.will-be-invited": "보내면 {names} 이 이 대화에 들어옵니다",
108
+ "ai-assistant.text.cannot-invite": "{names} 은 들어오지 않습니다. 이 대화에 있는 사람만 다른 사람을 부를 수 있습니다",
109
+ "ai-assistant.text.answer-needs-permission": "이 답을 볼 권한이 없습니다. 관리자에게 요청하십시오.",
110
+ "ai-assistant.label.conversation": "대화",
111
+ "ai-assistant.text.switch-conversation": "{name} 대화로 바꾸기",
112
+ "ai-assistant.text.session-kind-mismatch": "이 대화는 {sessionKind} 입니다. {requested} 로 쓰고 계십니다. 하시려는 대화를 열어 주십시오."
70
113
  }
@@ -59,12 +59,55 @@
59
59
  "ai-assistant.text.ungrounded-mention": "Menyebut sasaran yang tidak disahkan — tiada dalam data sebenar:",
60
60
  "ai-assistant.text.toggle-system-note": "klik untuk kembangkan",
61
61
  "ai-assistant.button.run-proposal": "jalankan",
62
- "ai-assistant.text.proposal-sent": "pelaksanaan diminta",
63
62
  "ai-assistant.text.history-folded": "perbualan ini menjadi panjang — {count} mesej terawal ditinggalkan. perbualan baharu lebih sesuai untuk topik lain.",
64
63
  "ai-assistant.text.history-folded-summarized": "perbualan ini menjadi panjang — {count} mesej terawal diringkaskan. perbualan baharu lebih sesuai untuk topik lain.",
65
64
  "ai-assistant.button.attach": "Lampir",
66
- "ai-assistant.tooltip.attach-file": "Lampirkan imej atau fail (tampal papan keratan dan seret & lepas disokong)",
65
+ "ai-assistant.tooltip.attach-file": "lampirkan imej (seret & lepas atau tampal disokong)",
67
66
  "ai-assistant.text.drop-files-here": "Lepaskan imej atau fail di sini",
68
67
  "ai-assistant.button.remove-attachment": "Buang lampiran",
69
- "ai-assistant.session.all": "Semua sejarah"
68
+ "ai-assistant.session.all": "Semua sejarah",
69
+ "ai-assistant.notice.stopped": "permintaan terhenti separuh jalan, jadi sebahagian sahaja selesai.",
70
+ "ai-assistant.notice.provider-busy": "perkhidmatan ai tidak menjawab sekarang. cuba lagi sebentar lagi.",
71
+ "ai-assistant.notice.provider-error": "ada masalah semasa mengendalikan ini. beritahu pentadbir jika ia berulang.",
72
+ "ai-assistant.notice.too-long": "ini berjalan lama dan berhenti pada langkah {iter}. cuba minta dalam bahagian yang lebih kecil.",
73
+ "ai-assistant.notice.tool-kept-failing": "{tool} gagal {count} kali berturut-turut, jadi ia berhenti. cuba nyatakan dengan cara lain.",
74
+ "ai-assistant.text.no-match": "tiada padanan",
75
+ "ai-assistant.text.messages-unreadable": "tidak dapat membaca perbualan ini.",
76
+ "ai-assistant.text.sessions-unreadable": "tidak dapat memuatkan senarai perbualan.",
77
+ "ai-assistant.text.session-not-created": "tidak dapat memulakan perbualan.",
78
+ "ai-assistant.text.proposal-choices": "pilihan susulan",
79
+ "ai-assistant.text.attached-image-ask": "saya lampirkan gambar — ikut gambar ini.",
80
+ "ai-assistant.text.attached-file-ask": "saya lampirkan fail — sila lihat.",
81
+ "ai-assistant.text.other-figure-history": "perbualan ini milik figure lain. buka perbualan bagi model yang sedang anda buka.",
82
+ "ai-assistant.text.application-vs-model-history": "perbualan ini tentang aplikasi, bukan tentang model. buka yang anda mahu.",
83
+ "ai-assistant.text.other-station-history": "perbualan ini milik skrin stesen lain. buka perbualan skrin yang anda sedang lihat.",
84
+ "ai-assistant.text.unknown-mode": "skrin ini meminta perbualan yang tiada pada pelayan ({kind}). muat semula halaman.",
85
+ "ai-assistant.session.default-name": "perbualan {n}",
86
+ "ai-assistant.match.id": "ID",
87
+ "ai-assistant.match.name": "nama",
88
+ "ai-assistant.match.tag": "tag",
89
+ "ai-assistant.match.type": "jenis",
90
+ "ai-assistant.match.class": "kelas",
91
+ "ai-assistant.match.text": "teks",
92
+ "ai-assistant.match.data": "data",
93
+ "ai-assistant.match.property": "sifat",
94
+ "ai-assistant.match.description": "huraian",
95
+ "ai-assistant.candidate.template": "ayat",
96
+ "ai-assistant.candidate.user": "orang",
97
+ "ai-assistant.text.match-count": "{shown} / {all} padanan",
98
+ "ai-assistant.text.match-overflow": "+{count} lagi — persempit carian",
99
+ "ai-assistant.verdict.accepted": "selesai",
100
+ "ai-assistant.verdict.refused": "ditolak",
101
+ "ai-assistant.verdict.unavailable": "tidak dapat dijalankan",
102
+ "ai-assistant.verdict.declined": "dibatalkan",
103
+ "ai-assistant.text.proposal-waiting": "menghantar — {seconds}s, belum ada jawapan",
104
+ "ai-assistant.text.proposal-applied-count": " {applied} daripada {total}",
105
+ "ai-assistant.text.say-to-room-tooltip": "cakap kepada orang di sini — pembantu tidak menjawab",
106
+ "ai-assistant.text.no-room-yet": "perbualan ini belum disimpan, jadi tiada orang lain di dalamnya",
107
+ "ai-assistant.text.will-be-invited": "{names} akan menyertai perbualan ini apabila anda hantar",
108
+ "ai-assistant.text.cannot-invite": "{names} tidak akan menyertai — hanya orang yang sudah ada dalam perbualan boleh membawa orang masuk",
109
+ "ai-assistant.text.answer-needs-permission": "anda tiada kebenaran untuk melihat jawapan ini. minta kebenaran daripada pentadbir.",
110
+ "ai-assistant.label.conversation": "perbualan",
111
+ "ai-assistant.text.switch-conversation": "tukar ke perbualan {name}",
112
+ "ai-assistant.text.session-kind-mismatch": "perbualan ini ialah {sessionKind}, dan anda menulis sebagai {requested}. buka perbualan yang anda maksudkan."
70
113
  }
@@ -59,12 +59,55 @@
59
59
  "ai-assistant.text.ungrounded-mention": "提到了未经确认的对象 — 实际数据中不存在:",
60
60
  "ai-assistant.text.toggle-system-note": "点击展开",
61
61
  "ai-assistant.button.run-proposal": "执行",
62
- "ai-assistant.text.proposal-sent": "已请求执行",
63
62
  "ai-assistant.text.history-folded": "对话变长,前面 {count} 条已省略。若是另一个话题,新建对话更合适。",
64
63
  "ai-assistant.text.history-folded-summarized": "对话变长,前面 {count} 条已折叠为摘要。若是另一个话题,新建对话更合适。",
65
64
  "ai-assistant.button.attach": "附件",
66
- "ai-assistant.tooltip.attach-file": "附加图片或文件(支持剪贴板粘贴和拖放)",
65
+ "ai-assistant.tooltip.attach-file": "附加图片(支持拖放与粘贴)",
67
66
  "ai-assistant.text.drop-files-here": "将图片或文件拖放到此处",
68
67
  "ai-assistant.button.remove-attachment": "删除附件",
69
- "ai-assistant.session.all": "全部历史"
68
+ "ai-assistant.session.all": "全部历史",
69
+ "ai-assistant.notice.stopped": "请求中途停止,只处理了一部分。",
70
+ "ai-assistant.notice.provider-busy": "AI 服务暂时没有回应,请稍后再试。",
71
+ "ai-assistant.notice.provider-error": "处理时出了问题。如果一直这样,请告知管理员。",
72
+ "ai-assistant.notice.too-long": "处理过长,在第 {iter} 步停止。请分成小一些的请求。",
73
+ "ai-assistant.notice.tool-kept-failing": "{tool} 连续失败 {count} 次,已停止。请换一种说法。",
74
+ "ai-assistant.text.no-match": "没有匹配项",
75
+ "ai-assistant.text.messages-unreadable": "无法读取这个对话。",
76
+ "ai-assistant.text.sessions-unreadable": "无法加载对话列表。",
77
+ "ai-assistant.text.session-not-created": "无法开始对话。",
78
+ "ai-assistant.text.proposal-choices": "接下来可以做的",
79
+ "ai-assistant.text.attached-image-ask": "我附上了一张图,请按它来做。",
80
+ "ai-assistant.text.attached-file-ask": "我附上了一个文件,请看一下。",
81
+ "ai-assistant.text.other-figure-history": "这个对话属于另一个 Figure。请打开当前模型的对话。",
82
+ "ai-assistant.text.application-vs-model-history": "这个对话是关于应用的,不是关于模型的。请打开你要的那个。",
83
+ "ai-assistant.text.other-station-history": "这个对话属于另一个现场画面。请打开当前画面的对话。",
84
+ "ai-assistant.text.unknown-mode": "此界面请求的对话在服务器上不存在({kind})。请刷新页面。",
85
+ "ai-assistant.session.default-name": "对话 {n}",
86
+ "ai-assistant.match.id": "ID",
87
+ "ai-assistant.match.name": "名称",
88
+ "ai-assistant.match.tag": "标签",
89
+ "ai-assistant.match.type": "类型",
90
+ "ai-assistant.match.class": "类",
91
+ "ai-assistant.match.text": "文本",
92
+ "ai-assistant.match.data": "数据",
93
+ "ai-assistant.match.property": "属性",
94
+ "ai-assistant.match.description": "说明",
95
+ "ai-assistant.candidate.template": "语句",
96
+ "ai-assistant.candidate.user": "人员",
97
+ "ai-assistant.text.match-count": "{shown} / {all} 项",
98
+ "ai-assistant.text.match-overflow": "还有 {count} 项 — 请缩小搜索范围",
99
+ "ai-assistant.verdict.accepted": "已应用",
100
+ "ai-assistant.verdict.refused": "已拒绝",
101
+ "ai-assistant.verdict.unavailable": "无法执行",
102
+ "ai-assistant.verdict.declined": "已取消",
103
+ "ai-assistant.text.proposal-waiting": "发送中 — {seconds} 秒,尚未收到答复",
104
+ "ai-assistant.text.proposal-applied-count": " {total} 项中的 {applied} 项",
105
+ "ai-assistant.text.say-to-room-tooltip": "对这里的人说,AI 不会回答",
106
+ "ai-assistant.text.no-room-yet": "这个对话还没有保存,所以没有其他人在场",
107
+ "ai-assistant.text.will-be-invited": "发送后 {names} 将加入此对话",
108
+ "ai-assistant.text.cannot-invite": "{names} 不会加入。只有已在此对话中的人才能邀请他人",
109
+ "ai-assistant.text.answer-needs-permission": "没有查看此回答的权限。请向管理员申请。",
110
+ "ai-assistant.label.conversation": "对话",
111
+ "ai-assistant.text.switch-conversation": "切换到 {name} 对话",
112
+ "ai-assistant.text.session-kind-mismatch": "此对话是 {sessionKind},而您正以 {requested} 书写。请打开您想要的对话。"
70
113
  }