@xrkseek/harness-cli 0.0.11 → 0.1.0

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 (974) hide show
  1. package/dist/plugin/install-client.d.ts.map +1 -1
  2. package/dist/plugin/install-client.js +80 -2
  3. package/dist/plugin/install-client.js.map +1 -1
  4. package/node_modules/@img/colour/LICENSE.md +82 -0
  5. package/node_modules/@img/colour/README.md +15 -0
  6. package/node_modules/@img/colour/color.cjs +1596 -0
  7. package/node_modules/@img/colour/index.cjs +1 -0
  8. package/node_modules/@img/colour/index.d.ts +929 -0
  9. package/node_modules/@img/colour/package.json +58 -0
  10. package/node_modules/@img/sharp-win32-x64/LICENSE +191 -0
  11. package/node_modules/@img/sharp-win32-x64/README.md +59 -0
  12. package/node_modules/@img/sharp-win32-x64/index.cjs +1 -0
  13. package/node_modules/@img/sharp-win32-x64/lib/libvips-42.dll +0 -0
  14. package/node_modules/@img/sharp-win32-x64/lib/libvips-cpp-8.18.3.dll +0 -0
  15. package/node_modules/@img/sharp-win32-x64/lib/sharp-win32-x64-0.35.3.node +0 -0
  16. package/node_modules/@img/sharp-win32-x64/package.json +40 -0
  17. package/node_modules/@img/sharp-win32-x64/versions.json +30 -0
  18. package/node_modules/@types/node/LICENSE +21 -0
  19. package/node_modules/@types/node/README.md +15 -0
  20. package/node_modules/@types/node/assert/strict.d.ts +111 -0
  21. package/node_modules/@types/node/assert.d.ts +1115 -0
  22. package/node_modules/@types/node/async_hooks.d.ts +623 -0
  23. package/node_modules/@types/node/buffer.buffer.d.ts +472 -0
  24. package/node_modules/@types/node/buffer.d.ts +1934 -0
  25. package/node_modules/@types/node/child_process.d.ts +1476 -0
  26. package/node_modules/@types/node/cluster.d.ts +578 -0
  27. package/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
  28. package/node_modules/@types/node/console.d.ts +453 -0
  29. package/node_modules/@types/node/constants.d.ts +21 -0
  30. package/node_modules/@types/node/crypto.d.ts +5417 -0
  31. package/node_modules/@types/node/dgram.d.ts +600 -0
  32. package/node_modules/@types/node/diagnostics_channel.d.ts +576 -0
  33. package/node_modules/@types/node/dns/promises.d.ts +503 -0
  34. package/node_modules/@types/node/dns.d.ts +923 -0
  35. package/node_modules/@types/node/domain.d.ts +166 -0
  36. package/node_modules/@types/node/events.d.ts +976 -0
  37. package/node_modules/@types/node/fs/promises.d.ts +1341 -0
  38. package/node_modules/@types/node/fs.d.ts +4714 -0
  39. package/node_modules/@types/node/globals.d.ts +170 -0
  40. package/node_modules/@types/node/globals.typedarray.d.ts +41 -0
  41. package/node_modules/@types/node/http.d.ts +2154 -0
  42. package/node_modules/@types/node/http2.d.ts +2835 -0
  43. package/node_modules/@types/node/https.d.ts +585 -0
  44. package/node_modules/@types/node/index.d.ts +101 -0
  45. package/node_modules/@types/node/inspector.d.ts +277 -0
  46. package/node_modules/@types/node/inspector.generated.d.ts +4239 -0
  47. package/node_modules/@types/node/module.d.ts +843 -0
  48. package/node_modules/@types/node/net.d.ts +1073 -0
  49. package/node_modules/@types/node/os.d.ts +507 -0
  50. package/node_modules/@types/node/package.json +155 -0
  51. package/node_modules/@types/node/path.d.ts +200 -0
  52. package/node_modules/@types/node/perf_hooks.d.ts +1042 -0
  53. package/node_modules/@types/node/process.d.ts +2102 -0
  54. package/node_modules/@types/node/punycode.d.ts +117 -0
  55. package/node_modules/@types/node/querystring.d.ts +152 -0
  56. package/node_modules/@types/node/readline/promises.d.ts +161 -0
  57. package/node_modules/@types/node/readline.d.ts +600 -0
  58. package/node_modules/@types/node/repl.d.ts +438 -0
  59. package/node_modules/@types/node/sea.d.ts +162 -0
  60. package/node_modules/@types/node/sqlite.d.ts +1040 -0
  61. package/node_modules/@types/node/stream/consumers.d.ts +38 -0
  62. package/node_modules/@types/node/stream/promises.d.ts +90 -0
  63. package/node_modules/@types/node/stream/web.d.ts +573 -0
  64. package/node_modules/@types/node/stream.d.ts +1706 -0
  65. package/node_modules/@types/node/string_decoder.d.ts +67 -0
  66. package/node_modules/@types/node/test.d.ts +2349 -0
  67. package/node_modules/@types/node/timers/promises.d.ts +108 -0
  68. package/node_modules/@types/node/timers.d.ts +285 -0
  69. package/node_modules/@types/node/tls.d.ts +1279 -0
  70. package/node_modules/@types/node/trace_events.d.ts +197 -0
  71. package/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +468 -0
  72. package/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
  73. package/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
  74. package/node_modules/@types/node/ts5.6/index.d.ts +103 -0
  75. package/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
  76. package/node_modules/@types/node/ts5.7/index.d.ts +103 -0
  77. package/node_modules/@types/node/tty.d.ts +208 -0
  78. package/node_modules/@types/node/url.d.ts +1079 -0
  79. package/node_modules/@types/node/util.d.ts +2336 -0
  80. package/node_modules/@types/node/v8.d.ts +982 -0
  81. package/node_modules/@types/node/vm.d.ts +1195 -0
  82. package/node_modules/@types/node/wasi.d.ts +202 -0
  83. package/node_modules/@types/node/web-globals/abortcontroller.d.ts +34 -0
  84. package/node_modules/@types/node/web-globals/crypto.d.ts +32 -0
  85. package/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  86. package/node_modules/@types/node/web-globals/events.d.ts +97 -0
  87. package/node_modules/@types/node/web-globals/fetch.d.ts +62 -0
  88. package/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
  89. package/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  90. package/node_modules/@types/node/web-globals/streams.d.ts +22 -0
  91. package/node_modules/@types/node/worker_threads.d.ts +894 -0
  92. package/node_modules/@types/node/zlib.d.ts +745 -0
  93. package/node_modules/@xrkseek/attachment/dist/error.d.ts +3 -2
  94. package/node_modules/@xrkseek/attachment/dist/error.d.ts.map +1 -1
  95. package/node_modules/@xrkseek/attachment/dist/error.js +17 -2
  96. package/node_modules/@xrkseek/attachment/dist/error.js.map +1 -1
  97. package/node_modules/@xrkseek/attachment/dist/index.d.ts +2 -2
  98. package/node_modules/@xrkseek/attachment/dist/index.d.ts.map +1 -1
  99. package/node_modules/@xrkseek/attachment/dist/index.js +1 -1
  100. package/node_modules/@xrkseek/attachment/dist/index.js.map +1 -1
  101. package/node_modules/@xrkseek/attachment/dist/memory.d.ts.map +1 -1
  102. package/node_modules/@xrkseek/attachment/dist/memory.js +6 -0
  103. package/node_modules/@xrkseek/attachment/dist/memory.js.map +1 -1
  104. package/node_modules/@xrkseek/attachment/dist/store.d.ts +6 -1
  105. package/node_modules/@xrkseek/attachment/dist/store.d.ts.map +1 -1
  106. package/node_modules/@xrkseek/attachment/dist/types.d.ts +19 -0
  107. package/node_modules/@xrkseek/attachment/dist/types.d.ts.map +1 -1
  108. package/node_modules/@xrkseek/attachment/dist/types.js.map +1 -1
  109. package/node_modules/@xrkseek/attachment-local/README.md +3 -0
  110. package/node_modules/@xrkseek/attachment-local/dist/compression-limiter.d.ts +18 -0
  111. package/node_modules/@xrkseek/attachment-local/dist/compression-limiter.d.ts.map +1 -0
  112. package/node_modules/@xrkseek/attachment-local/dist/compression-limiter.js +43 -0
  113. package/node_modules/@xrkseek/attachment-local/dist/compression-limiter.js.map +1 -0
  114. package/node_modules/@xrkseek/attachment-local/dist/encoding.d.ts +23 -0
  115. package/node_modules/@xrkseek/attachment-local/dist/encoding.d.ts.map +1 -0
  116. package/node_modules/@xrkseek/attachment-local/dist/encoding.js +33 -0
  117. package/node_modules/@xrkseek/attachment-local/dist/encoding.js.map +1 -0
  118. package/node_modules/@xrkseek/attachment-local/dist/image.d.ts +54 -0
  119. package/node_modules/@xrkseek/attachment-local/dist/image.d.ts.map +1 -0
  120. package/node_modules/@xrkseek/attachment-local/dist/image.js +97 -0
  121. package/node_modules/@xrkseek/attachment-local/dist/image.js.map +1 -0
  122. package/node_modules/@xrkseek/attachment-local/dist/index.d.ts +32 -0
  123. package/node_modules/@xrkseek/attachment-local/dist/index.d.ts.map +1 -0
  124. package/node_modules/@xrkseek/attachment-local/dist/index.js +188 -0
  125. package/node_modules/@xrkseek/attachment-local/dist/index.js.map +1 -0
  126. package/node_modules/@xrkseek/attachment-local/dist/normalization.d.ts +44 -0
  127. package/node_modules/@xrkseek/attachment-local/dist/normalization.d.ts.map +1 -0
  128. package/node_modules/@xrkseek/attachment-local/dist/normalization.js +148 -0
  129. package/node_modules/@xrkseek/attachment-local/dist/normalization.js.map +1 -0
  130. package/node_modules/@xrkseek/attachment-local/dist/request-image.d.ts +34 -0
  131. package/node_modules/@xrkseek/attachment-local/dist/request-image.d.ts.map +1 -0
  132. package/node_modules/@xrkseek/attachment-local/dist/request-image.js +208 -0
  133. package/node_modules/@xrkseek/attachment-local/dist/request-image.js.map +1 -0
  134. package/node_modules/@xrkseek/attachment-local/dist/store.d.ts +58 -0
  135. package/node_modules/@xrkseek/attachment-local/dist/store.d.ts.map +1 -0
  136. package/node_modules/@xrkseek/attachment-local/dist/store.js +290 -0
  137. package/node_modules/@xrkseek/attachment-local/dist/store.js.map +1 -0
  138. package/node_modules/@xrkseek/attachment-local/package.json +25 -0
  139. package/node_modules/@xrkseek/exec-fs/dist/index.d.ts +3 -0
  140. package/node_modules/@xrkseek/exec-fs/dist/index.d.ts.map +1 -1
  141. package/node_modules/@xrkseek/exec-fs/dist/index.js +10 -0
  142. package/node_modules/@xrkseek/exec-fs/dist/index.js.map +1 -1
  143. package/node_modules/@xrkseek/exec-fs/dist/read-image.d.ts +35 -0
  144. package/node_modules/@xrkseek/exec-fs/dist/read-image.d.ts.map +1 -0
  145. package/node_modules/@xrkseek/exec-fs/dist/read-image.js +120 -0
  146. package/node_modules/@xrkseek/exec-fs/dist/read-image.js.map +1 -0
  147. package/node_modules/@xrkseek/exec-fs/package.json +3 -1
  148. package/node_modules/@xrkseek/llm/dist/index.d.ts +1 -0
  149. package/node_modules/@xrkseek/llm/dist/index.d.ts.map +1 -1
  150. package/node_modules/@xrkseek/llm/dist/index.js.map +1 -1
  151. package/node_modules/@xrkseek/llm-deepseek/README.md +3 -1
  152. package/node_modules/@xrkseek/llm-deepseek/dist/file-id.d.ts +10 -0
  153. package/node_modules/@xrkseek/llm-deepseek/dist/file-id.d.ts.map +1 -0
  154. package/node_modules/@xrkseek/llm-deepseek/dist/file-id.js +8 -0
  155. package/node_modules/@xrkseek/llm-deepseek/dist/file-id.js.map +1 -0
  156. package/node_modules/@xrkseek/llm-deepseek/dist/file-store.d.ts +40 -0
  157. package/node_modules/@xrkseek/llm-deepseek/dist/file-store.d.ts.map +1 -0
  158. package/node_modules/@xrkseek/llm-deepseek/dist/file-store.js +164 -0
  159. package/node_modules/@xrkseek/llm-deepseek/dist/file-store.js.map +1 -0
  160. package/node_modules/@xrkseek/llm-deepseek/dist/files-api.d.ts +56 -0
  161. package/node_modules/@xrkseek/llm-deepseek/dist/files-api.d.ts.map +1 -0
  162. package/node_modules/@xrkseek/llm-deepseek/dist/files-api.js +180 -0
  163. package/node_modules/@xrkseek/llm-deepseek/dist/files-api.js.map +1 -0
  164. package/node_modules/@xrkseek/llm-deepseek/dist/index.d.ts +15 -6
  165. package/node_modules/@xrkseek/llm-deepseek/dist/index.d.ts.map +1 -1
  166. package/node_modules/@xrkseek/llm-deepseek/dist/index.js +63 -13
  167. package/node_modules/@xrkseek/llm-deepseek/dist/index.js.map +1 -1
  168. package/node_modules/@xrkseek/llm-deepseek/dist/request-policy.d.ts +8 -0
  169. package/node_modules/@xrkseek/llm-deepseek/dist/request-policy.d.ts.map +1 -0
  170. package/node_modules/@xrkseek/llm-deepseek/dist/request-policy.js +12 -0
  171. package/node_modules/@xrkseek/llm-deepseek/dist/request-policy.js.map +1 -0
  172. package/node_modules/@xrkseek/llm-deepseek/dist/upload-index.d.ts +28 -0
  173. package/node_modules/@xrkseek/llm-deepseek/dist/upload-index.d.ts.map +1 -0
  174. package/node_modules/@xrkseek/llm-deepseek/dist/upload-index.js +142 -0
  175. package/node_modules/@xrkseek/llm-deepseek/dist/upload-index.js.map +1 -0
  176. package/node_modules/@xrkseek/llm-deepseek/package.json +3 -1
  177. package/node_modules/@xrkseek/llm-openai-compatible/dist/index.d.ts +27 -0
  178. package/node_modules/@xrkseek/llm-openai-compatible/dist/index.d.ts.map +1 -1
  179. package/node_modules/@xrkseek/llm-openai-compatible/dist/index.js +20 -5
  180. package/node_modules/@xrkseek/llm-openai-compatible/dist/index.js.map +1 -1
  181. package/node_modules/@xrkseek/llm-registry/dist/registry.d.ts +1 -0
  182. package/node_modules/@xrkseek/llm-registry/dist/registry.d.ts.map +1 -1
  183. package/node_modules/@xrkseek/llm-registry/dist/registry.js +15 -1
  184. package/node_modules/@xrkseek/llm-registry/dist/registry.js.map +1 -1
  185. package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts +5 -0
  186. package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts.map +1 -1
  187. package/node_modules/@xrkseek/preset-harness/dist/preset.js +10 -1
  188. package/node_modules/@xrkseek/preset-harness/dist/preset.js.map +1 -1
  189. package/node_modules/@xrkseek/preset-harness/dist/tsconfig.tsbuildinfo +1 -1
  190. package/node_modules/@xrkseek/preset-harness/package.json +1 -0
  191. package/node_modules/@xrkseek/preset-minimal/dist/tsconfig.tsbuildinfo +1 -1
  192. package/node_modules/@xrkseek/preset-server/dist/preset.d.ts.map +1 -1
  193. package/node_modules/@xrkseek/preset-server/dist/preset.js +3 -1
  194. package/node_modules/@xrkseek/preset-server/dist/preset.js.map +1 -1
  195. package/node_modules/@xrkseek/preset-server/dist/tsconfig.tsbuildinfo +1 -1
  196. package/node_modules/@xrkseek/protocol/dist/content.d.ts +5 -0
  197. package/node_modules/@xrkseek/protocol/dist/content.d.ts.map +1 -1
  198. package/node_modules/@xrkseek/protocol/dist/content.js +8 -1
  199. package/node_modules/@xrkseek/protocol/dist/content.js.map +1 -1
  200. package/node_modules/@xrkseek/server-face/dist/context.d.ts +6 -3
  201. package/node_modules/@xrkseek/server-face/dist/context.d.ts.map +1 -1
  202. package/node_modules/@xrkseek/server-face/dist/cordis-bridge.d.ts +9 -0
  203. package/node_modules/@xrkseek/server-face/dist/cordis-bridge.d.ts.map +1 -0
  204. package/node_modules/@xrkseek/server-face/dist/cordis-bridge.js +28 -0
  205. package/node_modules/@xrkseek/server-face/dist/cordis-bridge.js.map +1 -0
  206. package/node_modules/@xrkseek/server-face/dist/cost-meter-balance.d.ts +16 -0
  207. package/node_modules/@xrkseek/server-face/dist/cost-meter-balance.d.ts.map +1 -0
  208. package/node_modules/@xrkseek/server-face/dist/cost-meter-balance.js +141 -0
  209. package/node_modules/@xrkseek/server-face/dist/cost-meter-balance.js.map +1 -0
  210. package/node_modules/@xrkseek/server-face/dist/cost-meter-coding-plan-service.d.ts +13 -0
  211. package/node_modules/@xrkseek/server-face/dist/cost-meter-coding-plan-service.d.ts.map +1 -0
  212. package/node_modules/@xrkseek/server-face/dist/cost-meter-coding-plan-service.js +158 -0
  213. package/node_modules/@xrkseek/server-face/dist/cost-meter-coding-plan-service.js.map +1 -0
  214. package/node_modules/@xrkseek/server-face/dist/cost-meter-coding-plans.d.ts +284 -0
  215. package/node_modules/@xrkseek/server-face/dist/cost-meter-coding-plans.d.ts.map +1 -0
  216. package/node_modules/@xrkseek/server-face/dist/cost-meter-coding-plans.js +696 -0
  217. package/node_modules/@xrkseek/server-face/dist/cost-meter-coding-plans.js.map +1 -0
  218. package/node_modules/@xrkseek/server-face/dist/cost-meter-custom-balance.d.ts +15 -0
  219. package/node_modules/@xrkseek/server-face/dist/cost-meter-custom-balance.d.ts.map +1 -0
  220. package/node_modules/@xrkseek/server-face/dist/cost-meter-custom-balance.js +196 -0
  221. package/node_modules/@xrkseek/server-face/dist/cost-meter-custom-balance.js.map +1 -0
  222. package/node_modules/@xrkseek/server-face/dist/cost-meter-go-quota.d.ts +19 -0
  223. package/node_modules/@xrkseek/server-face/dist/cost-meter-go-quota.d.ts.map +1 -0
  224. package/node_modules/@xrkseek/server-face/dist/cost-meter-go-quota.js +143 -0
  225. package/node_modules/@xrkseek/server-face/dist/cost-meter-go-quota.js.map +1 -0
  226. package/node_modules/@xrkseek/server-face/dist/cost-meter-pricing.d.ts +16 -0
  227. package/node_modules/@xrkseek/server-face/dist/cost-meter-pricing.d.ts.map +1 -0
  228. package/node_modules/@xrkseek/server-face/dist/cost-meter-pricing.js +84 -0
  229. package/node_modules/@xrkseek/server-face/dist/cost-meter-pricing.js.map +1 -0
  230. package/node_modules/@xrkseek/server-face/dist/cost-meter-record.d.ts +19 -0
  231. package/node_modules/@xrkseek/server-face/dist/cost-meter-record.d.ts.map +1 -0
  232. package/node_modules/@xrkseek/server-face/dist/cost-meter-record.js +221 -0
  233. package/node_modules/@xrkseek/server-face/dist/cost-meter-record.js.map +1 -0
  234. package/node_modules/@xrkseek/server-face/dist/cost-meter-store.d.ts +133 -0
  235. package/node_modules/@xrkseek/server-face/dist/cost-meter-store.d.ts.map +1 -0
  236. package/node_modules/@xrkseek/server-face/dist/cost-meter-store.js +561 -0
  237. package/node_modules/@xrkseek/server-face/dist/cost-meter-store.js.map +1 -0
  238. package/node_modules/@xrkseek/server-face/dist/dispatch.d.ts.map +1 -1
  239. package/node_modules/@xrkseek/server-face/dist/dispatch.js +15 -0
  240. package/node_modules/@xrkseek/server-face/dist/dispatch.js.map +1 -1
  241. package/node_modules/@xrkseek/server-face/dist/handlers/cordis-stub.d.ts +0 -5
  242. package/node_modules/@xrkseek/server-face/dist/handlers/cordis-stub.d.ts.map +1 -1
  243. package/node_modules/@xrkseek/server-face/dist/handlers/cordis-stub.js +277 -24
  244. package/node_modules/@xrkseek/server-face/dist/handlers/cordis-stub.js.map +1 -1
  245. package/node_modules/@xrkseek/server-face/dist/handlers/cost-meter.d.ts +30 -0
  246. package/node_modules/@xrkseek/server-face/dist/handlers/cost-meter.d.ts.map +1 -0
  247. package/node_modules/@xrkseek/server-face/dist/handlers/cost-meter.js +48 -0
  248. package/node_modules/@xrkseek/server-face/dist/handlers/cost-meter.js.map +1 -0
  249. package/node_modules/@xrkseek/server-face/dist/handlers/references.d.ts +6 -0
  250. package/node_modules/@xrkseek/server-face/dist/handlers/references.d.ts.map +1 -0
  251. package/node_modules/@xrkseek/server-face/dist/handlers/references.js +42 -0
  252. package/node_modules/@xrkseek/server-face/dist/handlers/references.js.map +1 -0
  253. package/node_modules/@xrkseek/server-face/dist/handlers/staged-client-code.d.ts +6 -0
  254. package/node_modules/@xrkseek/server-face/dist/handlers/staged-client-code.d.ts.map +1 -0
  255. package/node_modules/@xrkseek/server-face/dist/handlers/staged-client-code.js +24 -0
  256. package/node_modules/@xrkseek/server-face/dist/handlers/staged-client-code.js.map +1 -0
  257. package/node_modules/@xrkseek/server-face/dist/index.d.ts +1 -0
  258. package/node_modules/@xrkseek/server-face/dist/index.d.ts.map +1 -1
  259. package/node_modules/@xrkseek/server-face/dist/index.js +1 -0
  260. package/node_modules/@xrkseek/server-face/dist/index.js.map +1 -1
  261. package/node_modules/@xrkseek/server-face/dist/llm-resolve.d.ts.map +1 -1
  262. package/node_modules/@xrkseek/server-face/dist/llm-resolve.js +5 -3
  263. package/node_modules/@xrkseek/server-face/dist/llm-resolve.js.map +1 -1
  264. package/node_modules/@xrkseek/server-face/dist/plugin-inventory.d.ts +2 -2
  265. package/node_modules/@xrkseek/server-face/dist/plugin-inventory.d.ts.map +1 -1
  266. package/node_modules/@xrkseek/server-face/dist/plugin-inventory.js +7 -3
  267. package/node_modules/@xrkseek/server-face/dist/plugin-inventory.js.map +1 -1
  268. package/node_modules/@xrkseek/server-face/dist/projections/index.d.ts +2 -0
  269. package/node_modules/@xrkseek/server-face/dist/projections/index.d.ts.map +1 -1
  270. package/node_modules/@xrkseek/server-face/dist/projections/index.js +2 -0
  271. package/node_modules/@xrkseek/server-face/dist/projections/index.js.map +1 -1
  272. package/node_modules/@xrkseek/server-face/dist/projections/install-defaults.d.ts.map +1 -1
  273. package/node_modules/@xrkseek/server-face/dist/projections/install-defaults.js +12 -0
  274. package/node_modules/@xrkseek/server-face/dist/projections/install-defaults.js.map +1 -1
  275. package/node_modules/@xrkseek/server-face/dist/projections/registry.d.ts +45 -0
  276. package/node_modules/@xrkseek/server-face/dist/projections/registry.d.ts.map +1 -1
  277. package/node_modules/@xrkseek/server-face/dist/projections/registry.js.map +1 -1
  278. package/node_modules/@xrkseek/server-face/dist/projections/units/auto-review.d.ts +40 -0
  279. package/node_modules/@xrkseek/server-face/dist/projections/units/auto-review.d.ts.map +1 -0
  280. package/node_modules/@xrkseek/server-face/dist/projections/units/auto-review.js +103 -0
  281. package/node_modules/@xrkseek/server-face/dist/projections/units/auto-review.js.map +1 -0
  282. package/node_modules/@xrkseek/server-face/dist/projections/units/context-headers.d.ts +9 -0
  283. package/node_modules/@xrkseek/server-face/dist/projections/units/context-headers.d.ts.map +1 -0
  284. package/node_modules/@xrkseek/server-face/dist/projections/units/context-headers.js +24 -0
  285. package/node_modules/@xrkseek/server-face/dist/projections/units/context-headers.js.map +1 -0
  286. package/node_modules/@xrkseek/server-face/dist/projections/units/context-timeline.d.ts +37 -0
  287. package/node_modules/@xrkseek/server-face/dist/projections/units/context-timeline.d.ts.map +1 -0
  288. package/node_modules/@xrkseek/server-face/dist/projections/units/context-timeline.js +109 -0
  289. package/node_modules/@xrkseek/server-face/dist/projections/units/context-timeline.js.map +1 -0
  290. package/node_modules/@xrkseek/server-face/dist/projections/units/cost-usage.d.ts +35 -0
  291. package/node_modules/@xrkseek/server-face/dist/projections/units/cost-usage.d.ts.map +1 -0
  292. package/node_modules/@xrkseek/server-face/dist/projections/units/cost-usage.js +151 -0
  293. package/node_modules/@xrkseek/server-face/dist/projections/units/cost-usage.js.map +1 -0
  294. package/node_modules/@xrkseek/server-face/dist/reference-discovery.d.ts +13 -0
  295. package/node_modules/@xrkseek/server-face/dist/reference-discovery.d.ts.map +1 -0
  296. package/node_modules/@xrkseek/server-face/dist/reference-discovery.js +81 -0
  297. package/node_modules/@xrkseek/server-face/dist/reference-discovery.js.map +1 -0
  298. package/node_modules/@xrkseek/server-face/dist/runtime.d.ts +5 -1
  299. package/node_modules/@xrkseek/server-face/dist/runtime.d.ts.map +1 -1
  300. package/node_modules/@xrkseek/server-face/dist/runtime.js +25 -0
  301. package/node_modules/@xrkseek/server-face/dist/runtime.js.map +1 -1
  302. package/node_modules/@xrkseek/server-face/dist/settings-credentials.d.ts +15 -0
  303. package/node_modules/@xrkseek/server-face/dist/settings-credentials.d.ts.map +1 -1
  304. package/node_modules/@xrkseek/server-face/dist/settings-credentials.js.map +1 -1
  305. package/node_modules/@xrkseek/server-face/dist/slash.d.ts.map +1 -1
  306. package/node_modules/@xrkseek/server-face/dist/slash.js +19 -0
  307. package/node_modules/@xrkseek/server-face/dist/slash.js.map +1 -1
  308. package/node_modules/@xrkseek/server-face/dist/wire/paths.d.ts.map +1 -1
  309. package/node_modules/@xrkseek/server-face/dist/wire/paths.js +3 -0
  310. package/node_modules/@xrkseek/server-face/dist/wire/paths.js.map +1 -1
  311. package/node_modules/@xrkseek/server-face/package.json +3 -0
  312. package/node_modules/@xrkseek/server-host/dist/auto-review-bridge.d.ts +4 -0
  313. package/node_modules/@xrkseek/server-host/dist/auto-review-bridge.d.ts.map +1 -0
  314. package/node_modules/@xrkseek/server-host/dist/auto-review-bridge.js +10 -0
  315. package/node_modules/@xrkseek/server-host/dist/auto-review-bridge.js.map +1 -0
  316. package/node_modules/@xrkseek/server-host/dist/cost-meter-bridge.d.ts +11 -0
  317. package/node_modules/@xrkseek/server-host/dist/cost-meter-bridge.d.ts.map +1 -0
  318. package/node_modules/@xrkseek/server-host/dist/cost-meter-bridge.js +29 -0
  319. package/node_modules/@xrkseek/server-host/dist/cost-meter-bridge.js.map +1 -0
  320. package/node_modules/@xrkseek/server-host/dist/harness-connector-bridge.d.ts +15 -0
  321. package/node_modules/@xrkseek/server-host/dist/harness-connector-bridge.d.ts.map +1 -0
  322. package/node_modules/@xrkseek/server-host/dist/harness-connector-bridge.js +34 -0
  323. package/node_modules/@xrkseek/server-host/dist/harness-connector-bridge.js.map +1 -0
  324. package/node_modules/@xrkseek/server-host/dist/index.d.ts +6 -1
  325. package/node_modules/@xrkseek/server-host/dist/index.d.ts.map +1 -1
  326. package/node_modules/@xrkseek/server-host/dist/index.js +126 -19
  327. package/node_modules/@xrkseek/server-host/dist/index.js.map +1 -1
  328. package/node_modules/@xrkseek/server-host/dist/sidebar-pty.d.ts +17 -0
  329. package/node_modules/@xrkseek/server-host/dist/sidebar-pty.d.ts.map +1 -0
  330. package/node_modules/@xrkseek/server-host/dist/sidebar-pty.js +201 -0
  331. package/node_modules/@xrkseek/server-host/dist/sidebar-pty.js.map +1 -0
  332. package/node_modules/@xrkseek/server-host/dist/usage-stats-bridge.d.ts +10 -0
  333. package/node_modules/@xrkseek/server-host/dist/usage-stats-bridge.d.ts.map +1 -0
  334. package/node_modules/@xrkseek/server-host/dist/usage-stats-bridge.js +31 -0
  335. package/node_modules/@xrkseek/server-host/dist/usage-stats-bridge.js.map +1 -0
  336. package/node_modules/@xrkseek/server-host/dist/wallet-bridge.d.ts +7 -0
  337. package/node_modules/@xrkseek/server-host/dist/wallet-bridge.d.ts.map +1 -0
  338. package/node_modules/@xrkseek/server-host/dist/wallet-bridge.js +40 -0
  339. package/node_modules/@xrkseek/server-host/dist/wallet-bridge.js.map +1 -0
  340. package/node_modules/@xrkseek/server-host/package.json +8 -1
  341. package/node_modules/@xrkseek/server-http/dist/boot-inject.d.ts +12 -0
  342. package/node_modules/@xrkseek/server-http/dist/boot-inject.d.ts.map +1 -1
  343. package/node_modules/@xrkseek/server-http/dist/boot-inject.js +54 -0
  344. package/node_modules/@xrkseek/server-http/dist/boot-inject.js.map +1 -1
  345. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-compose.d.ts +6 -0
  346. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-compose.d.ts.map +1 -0
  347. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-compose.js +141 -0
  348. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-compose.js.map +1 -0
  349. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-providers.d.ts +3 -0
  350. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-providers.d.ts.map +1 -0
  351. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-providers.js +445 -0
  352. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-providers.js.map +1 -0
  353. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-registry.d.ts +7 -0
  354. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-registry.d.ts.map +1 -0
  355. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-registry.js +15 -0
  356. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-registry.js.map +1 -0
  357. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-types.d.ts +57 -0
  358. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-types.d.ts.map +1 -0
  359. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-types.js +2 -0
  360. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-types.js.map +1 -0
  361. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapters/builtin.d.ts +10 -0
  362. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapters/builtin.d.ts.map +1 -0
  363. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapters/builtin.js +275 -0
  364. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapters/builtin.js.map +1 -0
  365. package/node_modules/@xrkseek/server-http/dist/dsh-compat/audit-community-client.d.ts +10 -0
  366. package/node_modules/@xrkseek/server-http/dist/dsh-compat/audit-community-client.d.ts.map +1 -0
  367. package/node_modules/@xrkseek/server-http/dist/dsh-compat/audit-community-client.js +41 -0
  368. package/node_modules/@xrkseek/server-http/dist/dsh-compat/audit-community-client.js.map +1 -0
  369. package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-http.d.ts +17 -0
  370. package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-http.d.ts.map +1 -0
  371. package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-http.js +184 -0
  372. package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-http.js.map +1 -0
  373. package/node_modules/@xrkseek/server-http/dist/dsh-compat/barrel.d.ts +5 -0
  374. package/node_modules/@xrkseek/server-http/dist/dsh-compat/barrel.d.ts.map +1 -0
  375. package/node_modules/@xrkseek/server-http/dist/dsh-compat/barrel.js +5 -0
  376. package/node_modules/@xrkseek/server-http/dist/dsh-compat/barrel.js.map +1 -0
  377. package/node_modules/@xrkseek/server-http/dist/dsh-compat/bundle-chunk-stub.d.ts +21 -0
  378. package/node_modules/@xrkseek/server-http/dist/dsh-compat/bundle-chunk-stub.d.ts.map +1 -0
  379. package/node_modules/@xrkseek/server-http/dist/dsh-compat/bundle-chunk-stub.js +122 -0
  380. package/node_modules/@xrkseek/server-http/dist/dsh-compat/bundle-chunk-stub.js.map +1 -0
  381. package/node_modules/@xrkseek/server-http/dist/dsh-compat/chat-import.d.ts +10 -0
  382. package/node_modules/@xrkseek/server-http/dist/dsh-compat/chat-import.d.ts.map +1 -0
  383. package/node_modules/@xrkseek/server-http/dist/dsh-compat/chat-import.js +58 -0
  384. package/node_modules/@xrkseek/server-http/dist/dsh-compat/chat-import.js.map +1 -0
  385. package/node_modules/@xrkseek/server-http/dist/dsh-compat/community-root-http.d.ts +7 -0
  386. package/node_modules/@xrkseek/server-http/dist/dsh-compat/community-root-http.d.ts.map +1 -0
  387. package/node_modules/@xrkseek/server-http/dist/dsh-compat/community-root-http.js +59 -0
  388. package/node_modules/@xrkseek/server-http/dist/dsh-compat/community-root-http.js.map +1 -0
  389. package/node_modules/@xrkseek/server-http/dist/dsh-compat/cordis-fiber-runner.d.ts +25 -0
  390. package/node_modules/@xrkseek/server-http/dist/dsh-compat/cordis-fiber-runner.d.ts.map +1 -0
  391. package/node_modules/@xrkseek/server-http/dist/dsh-compat/cordis-fiber-runner.js +154 -0
  392. package/node_modules/@xrkseek/server-http/dist/dsh-compat/cordis-fiber-runner.js.map +1 -0
  393. package/node_modules/@xrkseek/server-http/dist/dsh-compat/cordis-fiber-worker.d.ts +2 -0
  394. package/node_modules/@xrkseek/server-http/dist/dsh-compat/cordis-fiber-worker.d.ts.map +1 -0
  395. package/node_modules/@xrkseek/server-http/dist/dsh-compat/cordis-fiber-worker.js +77 -0
  396. package/node_modules/@xrkseek/server-http/dist/dsh-compat/cordis-fiber-worker.js.map +1 -0
  397. package/node_modules/@xrkseek/server-http/dist/dsh-compat/cordis-registry.d.ts +16 -0
  398. package/node_modules/@xrkseek/server-http/dist/dsh-compat/cordis-registry.d.ts.map +1 -0
  399. package/node_modules/@xrkseek/server-http/dist/dsh-compat/cordis-registry.js +121 -0
  400. package/node_modules/@xrkseek/server-http/dist/dsh-compat/cordis-registry.js.map +1 -0
  401. package/node_modules/@xrkseek/server-http/dist/dsh-compat/cordis-settings-fallback.d.ts +12 -0
  402. package/node_modules/@xrkseek/server-http/dist/dsh-compat/cordis-settings-fallback.d.ts.map +1 -0
  403. package/node_modules/@xrkseek/server-http/dist/dsh-compat/cordis-settings-fallback.js +48 -0
  404. package/node_modules/@xrkseek/server-http/dist/dsh-compat/cordis-settings-fallback.js.map +1 -0
  405. package/node_modules/@xrkseek/server-http/dist/dsh-compat/create-host-plugin.d.ts +18 -0
  406. package/node_modules/@xrkseek/server-http/dist/dsh-compat/create-host-plugin.d.ts.map +1 -0
  407. package/node_modules/@xrkseek/server-http/dist/dsh-compat/create-host-plugin.js +62 -0
  408. package/node_modules/@xrkseek/server-http/dist/dsh-compat/create-host-plugin.js.map +1 -0
  409. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dream-skin.d.ts +9 -0
  410. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dream-skin.d.ts.map +1 -0
  411. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dream-skin.js +42 -0
  412. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dream-skin.js.map +1 -0
  413. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-client-scan.d.ts +6 -0
  414. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-client-scan.d.ts.map +1 -0
  415. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-client-scan.js +88 -0
  416. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-client-scan.js.map +1 -0
  417. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-community-infer.d.ts +9 -0
  418. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-community-infer.d.ts.map +1 -0
  419. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-community-infer.js +67 -0
  420. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-community-infer.js.map +1 -0
  421. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-compat-matrix.d.ts +18 -0
  422. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-compat-matrix.d.ts.map +1 -0
  423. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-compat-matrix.js +198 -0
  424. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-compat-matrix.js.map +1 -0
  425. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-compat-upgrades.d.ts +27 -0
  426. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-compat-upgrades.d.ts.map +1 -0
  427. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-compat-upgrades.js +71 -0
  428. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-compat-upgrades.js.map +1 -0
  429. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-envelope.d.ts +8 -0
  430. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-envelope.d.ts.map +1 -0
  431. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-envelope.js +12 -0
  432. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-envelope.js.map +1 -0
  433. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-package-names.d.ts +2 -0
  434. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-package-names.d.ts.map +1 -0
  435. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-package-names.js +6 -0
  436. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-package-names.js.map +1 -0
  437. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-path-capabilities.d.ts +22 -0
  438. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-path-capabilities.d.ts.map +1 -0
  439. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-path-capabilities.js +219 -0
  440. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-path-capabilities.js.map +1 -0
  441. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-plugin-presets.d.ts +4 -0
  442. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-plugin-presets.d.ts.map +1 -0
  443. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-plugin-presets.js +53 -0
  444. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-plugin-presets.js.map +1 -0
  445. package/node_modules/@xrkseek/server-http/dist/dsh-compat/generic-dsh-http.d.ts +11 -0
  446. package/node_modules/@xrkseek/server-http/dist/dsh-compat/generic-dsh-http.d.ts.map +1 -0
  447. package/node_modules/@xrkseek/server-http/dist/dsh-compat/generic-dsh-http.js +61 -0
  448. package/node_modules/@xrkseek/server-http/dist/dsh-compat/generic-dsh-http.js.map +1 -0
  449. package/node_modules/@xrkseek/server-http/dist/dsh-compat/generic-plugin-http.d.ts +7 -0
  450. package/node_modules/@xrkseek/server-http/dist/dsh-compat/generic-plugin-http.d.ts.map +1 -0
  451. package/node_modules/@xrkseek/server-http/dist/dsh-compat/generic-plugin-http.js +150 -0
  452. package/node_modules/@xrkseek/server-http/dist/dsh-compat/generic-plugin-http.js.map +1 -0
  453. package/node_modules/@xrkseek/server-http/dist/dsh-compat/genui.d.ts +10 -0
  454. package/node_modules/@xrkseek/server-http/dist/dsh-compat/genui.d.ts.map +1 -0
  455. package/node_modules/@xrkseek/server-http/dist/dsh-compat/genui.js +239 -0
  456. package/node_modules/@xrkseek/server-http/dist/dsh-compat/genui.js.map +1 -0
  457. package/node_modules/@xrkseek/server-http/dist/dsh-compat/harness-connector-store.d.ts +22 -0
  458. package/node_modules/@xrkseek/server-http/dist/dsh-compat/harness-connector-store.d.ts.map +1 -0
  459. package/node_modules/@xrkseek/server-http/dist/dsh-compat/harness-connector-store.js +83 -0
  460. package/node_modules/@xrkseek/server-http/dist/dsh-compat/harness-connector-store.js.map +1 -0
  461. package/node_modules/@xrkseek/server-http/dist/dsh-compat/harness-connector.d.ts +18 -0
  462. package/node_modules/@xrkseek/server-http/dist/dsh-compat/harness-connector.d.ts.map +1 -0
  463. package/node_modules/@xrkseek/server-http/dist/dsh-compat/harness-connector.js +191 -0
  464. package/node_modules/@xrkseek/server-http/dist/dsh-compat/harness-connector.js.map +1 -0
  465. package/node_modules/@xrkseek/server-http/dist/dsh-compat/honest-envelope.d.ts +21 -0
  466. package/node_modules/@xrkseek/server-http/dist/dsh-compat/honest-envelope.d.ts.map +1 -0
  467. package/node_modules/@xrkseek/server-http/dist/dsh-compat/honest-envelope.js +105 -0
  468. package/node_modules/@xrkseek/server-http/dist/dsh-compat/honest-envelope.js.map +1 -0
  469. package/node_modules/@xrkseek/server-http/dist/dsh-compat/honest-http-catchall.d.ts +7 -0
  470. package/node_modules/@xrkseek/server-http/dist/dsh-compat/honest-http-catchall.d.ts.map +1 -0
  471. package/node_modules/@xrkseek/server-http/dist/dsh-compat/honest-http-catchall.js +57 -0
  472. package/node_modules/@xrkseek/server-http/dist/dsh-compat/honest-http-catchall.js.map +1 -0
  473. package/node_modules/@xrkseek/server-http/dist/dsh-compat/host-apply-bridge.d.ts +6 -0
  474. package/node_modules/@xrkseek/server-http/dist/dsh-compat/host-apply-bridge.d.ts.map +1 -0
  475. package/node_modules/@xrkseek/server-http/dist/dsh-compat/host-apply-bridge.js +74 -0
  476. package/node_modules/@xrkseek/server-http/dist/dsh-compat/host-apply-bridge.js.map +1 -0
  477. package/node_modules/@xrkseek/server-http/dist/dsh-compat/host-apply-registry.d.ts +14 -0
  478. package/node_modules/@xrkseek/server-http/dist/dsh-compat/host-apply-registry.d.ts.map +1 -0
  479. package/node_modules/@xrkseek/server-http/dist/dsh-compat/host-apply-registry.js +17 -0
  480. package/node_modules/@xrkseek/server-http/dist/dsh-compat/host-apply-registry.js.map +1 -0
  481. package/node_modules/@xrkseek/server-http/dist/dsh-compat/host-feature-bridge.d.ts +76 -0
  482. package/node_modules/@xrkseek/server-http/dist/dsh-compat/host-feature-bridge.d.ts.map +1 -0
  483. package/node_modules/@xrkseek/server-http/dist/dsh-compat/host-feature-bridge.js +551 -0
  484. package/node_modules/@xrkseek/server-http/dist/dsh-compat/host-feature-bridge.js.map +1 -0
  485. package/node_modules/@xrkseek/server-http/dist/dsh-compat/host-manifest.d.ts +7 -0
  486. package/node_modules/@xrkseek/server-http/dist/dsh-compat/host-manifest.d.ts.map +1 -0
  487. package/node_modules/@xrkseek/server-http/dist/dsh-compat/host-manifest.js +136 -0
  488. package/node_modules/@xrkseek/server-http/dist/dsh-compat/host-manifest.js.map +1 -0
  489. package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-channels.d.ts +21 -0
  490. package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-channels.d.ts.map +1 -0
  491. package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-channels.js +281 -0
  492. package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-channels.js.map +1 -0
  493. package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-messaging-bridge.d.ts +16 -0
  494. package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-messaging-bridge.d.ts.map +1 -0
  495. package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-messaging-bridge.js +163 -0
  496. package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-messaging-bridge.js.map +1 -0
  497. package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-office.d.ts +5 -0
  498. package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-office.d.ts.map +1 -0
  499. package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-office.js +125 -0
  500. package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-office.js.map +1 -0
  501. package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-provision-bridge.d.ts +17 -0
  502. package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-provision-bridge.d.ts.map +1 -0
  503. package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-provision-bridge.js +188 -0
  504. package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-provision-bridge.js.map +1 -0
  505. package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-rpc-adapter.d.ts +9 -0
  506. package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-rpc-adapter.d.ts.map +1 -0
  507. package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-rpc-adapter.js +55 -0
  508. package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-rpc-adapter.js.map +1 -0
  509. package/node_modules/@xrkseek/server-http/dist/dsh-compat/index.d.ts +37 -0
  510. package/node_modules/@xrkseek/server-http/dist/dsh-compat/index.d.ts.map +1 -0
  511. package/node_modules/@xrkseek/server-http/dist/dsh-compat/index.js +36 -0
  512. package/node_modules/@xrkseek/server-http/dist/dsh-compat/index.js.map +1 -0
  513. package/node_modules/@xrkseek/server-http/dist/dsh-compat/json-store.d.ts +5 -0
  514. package/node_modules/@xrkseek/server-http/dist/dsh-compat/json-store.d.ts.map +1 -0
  515. package/node_modules/@xrkseek/server-http/dist/dsh-compat/json-store.js +28 -0
  516. package/node_modules/@xrkseek/server-http/dist/dsh-compat/json-store.js.map +1 -0
  517. package/node_modules/@xrkseek/server-http/dist/dsh-compat/market-adapter.d.ts +7 -0
  518. package/node_modules/@xrkseek/server-http/dist/dsh-compat/market-adapter.d.ts.map +1 -0
  519. package/node_modules/@xrkseek/server-http/dist/dsh-compat/market-adapter.js +108 -0
  520. package/node_modules/@xrkseek/server-http/dist/dsh-compat/market-adapter.js.map +1 -0
  521. package/node_modules/@xrkseek/server-http/dist/dsh-compat/market.d.ts +7 -0
  522. package/node_modules/@xrkseek/server-http/dist/dsh-compat/market.d.ts.map +1 -0
  523. package/node_modules/@xrkseek/server-http/dist/dsh-compat/market.js +218 -0
  524. package/node_modules/@xrkseek/server-http/dist/dsh-compat/market.js.map +1 -0
  525. package/node_modules/@xrkseek/server-http/dist/dsh-compat/memento.d.ts +10 -0
  526. package/node_modules/@xrkseek/server-http/dist/dsh-compat/memento.d.ts.map +1 -0
  527. package/node_modules/@xrkseek/server-http/dist/dsh-compat/memento.js +81 -0
  528. package/node_modules/@xrkseek/server-http/dist/dsh-compat/memento.js.map +1 -0
  529. package/node_modules/@xrkseek/server-http/dist/dsh-compat/meta.d.ts +10 -0
  530. package/node_modules/@xrkseek/server-http/dist/dsh-compat/meta.d.ts.map +1 -0
  531. package/node_modules/@xrkseek/server-http/dist/dsh-compat/meta.js +15 -0
  532. package/node_modules/@xrkseek/server-http/dist/dsh-compat/meta.js.map +1 -0
  533. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mnemon-adapter.d.ts +8 -0
  534. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mnemon-adapter.d.ts.map +1 -0
  535. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mnemon-adapter.js +83 -0
  536. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mnemon-adapter.js.map +1 -0
  537. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mnemon-shapes.d.ts +9 -0
  538. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mnemon-shapes.d.ts.map +1 -0
  539. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mnemon-shapes.js +144 -0
  540. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mnemon-shapes.js.map +1 -0
  541. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mnemon-store.d.ts +17 -0
  542. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mnemon-store.d.ts.map +1 -0
  543. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mnemon-store.js +52 -0
  544. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mnemon-store.js.map +1 -0
  545. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mnemon.d.ts +11 -0
  546. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mnemon.d.ts.map +1 -0
  547. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mnemon.js +221 -0
  548. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mnemon.js.map +1 -0
  549. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mobile-access.d.ts +22 -0
  550. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mobile-access.d.ts.map +1 -0
  551. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mobile-access.js +155 -0
  552. package/node_modules/@xrkseek/server-http/dist/dsh-compat/mobile-access.js.map +1 -0
  553. package/node_modules/@xrkseek/server-http/dist/dsh-compat/modlens.d.ts +14 -0
  554. package/node_modules/@xrkseek/server-http/dist/dsh-compat/modlens.d.ts.map +1 -0
  555. package/node_modules/@xrkseek/server-http/dist/dsh-compat/modlens.js +213 -0
  556. package/node_modules/@xrkseek/server-http/dist/dsh-compat/modlens.js.map +1 -0
  557. package/node_modules/@xrkseek/server-http/dist/dsh-compat/modsearch.d.ts +14 -0
  558. package/node_modules/@xrkseek/server-http/dist/dsh-compat/modsearch.d.ts.map +1 -0
  559. package/node_modules/@xrkseek/server-http/dist/dsh-compat/modsearch.js +200 -0
  560. package/node_modules/@xrkseek/server-http/dist/dsh-compat/modsearch.js.map +1 -0
  561. package/node_modules/@xrkseek/server-http/dist/dsh-compat/noema.d.ts +11 -0
  562. package/node_modules/@xrkseek/server-http/dist/dsh-compat/noema.d.ts.map +1 -0
  563. package/node_modules/@xrkseek/server-http/dist/dsh-compat/noema.js +200 -0
  564. package/node_modules/@xrkseek/server-http/dist/dsh-compat/noema.js.map +1 -0
  565. package/node_modules/@xrkseek/server-http/dist/dsh-compat/persisted-settings-store.d.ts +6 -0
  566. package/node_modules/@xrkseek/server-http/dist/dsh-compat/persisted-settings-store.d.ts.map +1 -0
  567. package/node_modules/@xrkseek/server-http/dist/dsh-compat/persisted-settings-store.js +47 -0
  568. package/node_modules/@xrkseek/server-http/dist/dsh-compat/persisted-settings-store.js.map +1 -0
  569. package/node_modules/@xrkseek/server-http/dist/dsh-compat/plugin-host-manifest.d.ts +15 -0
  570. package/node_modules/@xrkseek/server-http/dist/dsh-compat/plugin-host-manifest.d.ts.map +1 -0
  571. package/node_modules/@xrkseek/server-http/dist/dsh-compat/plugin-host-manifest.js +132 -0
  572. package/node_modules/@xrkseek/server-http/dist/dsh-compat/plugin-host-manifest.js.map +1 -0
  573. package/node_modules/@xrkseek/server-http/dist/dsh-compat/plugin-surface-adapter.d.ts +13 -0
  574. package/node_modules/@xrkseek/server-http/dist/dsh-compat/plugin-surface-adapter.d.ts.map +1 -0
  575. package/node_modules/@xrkseek/server-http/dist/dsh-compat/plugin-surface-adapter.js +336 -0
  576. package/node_modules/@xrkseek/server-http/dist/dsh-compat/plugin-surface-adapter.js.map +1 -0
  577. package/node_modules/@xrkseek/server-http/dist/dsh-compat/pocket.d.ts +10 -0
  578. package/node_modules/@xrkseek/server-http/dist/dsh-compat/pocket.d.ts.map +1 -0
  579. package/node_modules/@xrkseek/server-http/dist/dsh-compat/pocket.js +86 -0
  580. package/node_modules/@xrkseek/server-http/dist/dsh-compat/pocket.js.map +1 -0
  581. package/node_modules/@xrkseek/server-http/dist/dsh-compat/releases.d.ts +8 -0
  582. package/node_modules/@xrkseek/server-http/dist/dsh-compat/releases.d.ts.map +1 -0
  583. package/node_modules/@xrkseek/server-http/dist/dsh-compat/releases.js +34 -0
  584. package/node_modules/@xrkseek/server-http/dist/dsh-compat/releases.js.map +1 -0
  585. package/node_modules/@xrkseek/server-http/dist/dsh-compat/settings-defaults.d.ts +4 -0
  586. package/node_modules/@xrkseek/server-http/dist/dsh-compat/settings-defaults.d.ts.map +1 -0
  587. package/node_modules/@xrkseek/server-http/dist/dsh-compat/settings-defaults.js +170 -0
  588. package/node_modules/@xrkseek/server-http/dist/dsh-compat/settings-defaults.js.map +1 -0
  589. package/node_modules/@xrkseek/server-http/dist/dsh-compat/settings-store.d.ts +33 -0
  590. package/node_modules/@xrkseek/server-http/dist/dsh-compat/settings-store.d.ts.map +1 -0
  591. package/node_modules/@xrkseek/server-http/dist/dsh-compat/settings-store.js +108 -0
  592. package/node_modules/@xrkseek/server-http/dist/dsh-compat/settings-store.js.map +1 -0
  593. package/node_modules/@xrkseek/server-http/dist/dsh-compat/shared-registry.d.ts +10 -0
  594. package/node_modules/@xrkseek/server-http/dist/dsh-compat/shared-registry.d.ts.map +1 -0
  595. package/node_modules/@xrkseek/server-http/dist/dsh-compat/shared-registry.js +38 -0
  596. package/node_modules/@xrkseek/server-http/dist/dsh-compat/shared-registry.js.map +1 -0
  597. package/node_modules/@xrkseek/server-http/dist/dsh-compat/sidebar-adapter.d.ts +10 -0
  598. package/node_modules/@xrkseek/server-http/dist/dsh-compat/sidebar-adapter.d.ts.map +1 -0
  599. package/node_modules/@xrkseek/server-http/dist/dsh-compat/sidebar-adapter.js +358 -0
  600. package/node_modules/@xrkseek/server-http/dist/dsh-compat/sidebar-adapter.js.map +1 -0
  601. package/node_modules/@xrkseek/server-http/dist/dsh-compat/sidebar-git.d.ts +25 -0
  602. package/node_modules/@xrkseek/server-http/dist/dsh-compat/sidebar-git.d.ts.map +1 -0
  603. package/node_modules/@xrkseek/server-http/dist/dsh-compat/sidebar-git.js +78 -0
  604. package/node_modules/@xrkseek/server-http/dist/dsh-compat/sidebar-git.js.map +1 -0
  605. package/node_modules/@xrkseek/server-http/dist/dsh-compat/sidebar-prefs-store.d.ts +9 -0
  606. package/node_modules/@xrkseek/server-http/dist/dsh-compat/sidebar-prefs-store.d.ts.map +1 -0
  607. package/node_modules/@xrkseek/server-http/dist/dsh-compat/sidebar-prefs-store.js +56 -0
  608. package/node_modules/@xrkseek/server-http/dist/dsh-compat/sidebar-prefs-store.js.map +1 -0
  609. package/node_modules/@xrkseek/server-http/dist/dsh-compat/skin-market.d.ts +11 -0
  610. package/node_modules/@xrkseek/server-http/dist/dsh-compat/skin-market.d.ts.map +1 -0
  611. package/node_modules/@xrkseek/server-http/dist/dsh-compat/skin-market.js +106 -0
  612. package/node_modules/@xrkseek/server-http/dist/dsh-compat/skin-market.js.map +1 -0
  613. package/node_modules/@xrkseek/server-http/dist/dsh-compat/surface-registry.d.ts +18 -0
  614. package/node_modules/@xrkseek/server-http/dist/dsh-compat/surface-registry.d.ts.map +1 -0
  615. package/node_modules/@xrkseek/server-http/dist/dsh-compat/surface-registry.js +240 -0
  616. package/node_modules/@xrkseek/server-http/dist/dsh-compat/surface-registry.js.map +1 -0
  617. package/node_modules/@xrkseek/server-http/dist/dsh-compat/surfaces.d.ts +5 -0
  618. package/node_modules/@xrkseek/server-http/dist/dsh-compat/surfaces.d.ts.map +1 -0
  619. package/node_modules/@xrkseek/server-http/dist/dsh-compat/surfaces.js +78 -0
  620. package/node_modules/@xrkseek/server-http/dist/dsh-compat/surfaces.js.map +1 -0
  621. package/node_modules/@xrkseek/server-http/dist/dsh-compat/tokenledger.d.ts +42 -0
  622. package/node_modules/@xrkseek/server-http/dist/dsh-compat/tokenledger.d.ts.map +1 -0
  623. package/node_modules/@xrkseek/server-http/dist/dsh-compat/tokenledger.js +117 -0
  624. package/node_modules/@xrkseek/server-http/dist/dsh-compat/tokenledger.js.map +1 -0
  625. package/node_modules/@xrkseek/server-http/dist/dsh-compat/tongflow-node-runtime.d.ts +11 -0
  626. package/node_modules/@xrkseek/server-http/dist/dsh-compat/tongflow-node-runtime.d.ts.map +1 -0
  627. package/node_modules/@xrkseek/server-http/dist/dsh-compat/tongflow-node-runtime.js +111 -0
  628. package/node_modules/@xrkseek/server-http/dist/dsh-compat/tongflow-node-runtime.js.map +1 -0
  629. package/node_modules/@xrkseek/server-http/dist/dsh-compat/tongflow.d.ts +16 -0
  630. package/node_modules/@xrkseek/server-http/dist/dsh-compat/tongflow.d.ts.map +1 -0
  631. package/node_modules/@xrkseek/server-http/dist/dsh-compat/tongflow.js +455 -0
  632. package/node_modules/@xrkseek/server-http/dist/dsh-compat/tongflow.js.map +1 -0
  633. package/node_modules/@xrkseek/server-http/dist/dsh-compat/turn-rewind-store.d.ts +26 -0
  634. package/node_modules/@xrkseek/server-http/dist/dsh-compat/turn-rewind-store.d.ts.map +1 -0
  635. package/node_modules/@xrkseek/server-http/dist/dsh-compat/turn-rewind-store.js +22 -0
  636. package/node_modules/@xrkseek/server-http/dist/dsh-compat/turn-rewind-store.js.map +1 -0
  637. package/node_modules/@xrkseek/server-http/dist/dsh-compat/turn-rewind-workspace.d.ts +12 -0
  638. package/node_modules/@xrkseek/server-http/dist/dsh-compat/turn-rewind-workspace.d.ts.map +1 -0
  639. package/node_modules/@xrkseek/server-http/dist/dsh-compat/turn-rewind-workspace.js +123 -0
  640. package/node_modules/@xrkseek/server-http/dist/dsh-compat/turn-rewind-workspace.js.map +1 -0
  641. package/node_modules/@xrkseek/server-http/dist/dsh-compat/turn-rewind.d.ts +16 -0
  642. package/node_modules/@xrkseek/server-http/dist/dsh-compat/turn-rewind.d.ts.map +1 -0
  643. package/node_modules/@xrkseek/server-http/dist/dsh-compat/turn-rewind.js +99 -0
  644. package/node_modules/@xrkseek/server-http/dist/dsh-compat/turn-rewind.js.map +1 -0
  645. package/node_modules/@xrkseek/server-http/dist/dsh-compat/underlying/contracts/wallet-port.d.ts +106 -0
  646. package/node_modules/@xrkseek/server-http/dist/dsh-compat/underlying/contracts/wallet-port.d.ts.map +1 -0
  647. package/node_modules/@xrkseek/server-http/dist/dsh-compat/underlying/contracts/wallet-port.js +6 -0
  648. package/node_modules/@xrkseek/server-http/dist/dsh-compat/underlying/contracts/wallet-port.js.map +1 -0
  649. package/node_modules/@xrkseek/server-http/dist/dsh-compat/underlying/doc-store.d.ts +14 -0
  650. package/node_modules/@xrkseek/server-http/dist/dsh-compat/underlying/doc-store.d.ts.map +1 -0
  651. package/node_modules/@xrkseek/server-http/dist/dsh-compat/underlying/doc-store.js +21 -0
  652. package/node_modules/@xrkseek/server-http/dist/dsh-compat/underlying/doc-store.js.map +1 -0
  653. package/node_modules/@xrkseek/server-http/dist/dsh-compat/underlying/http-kit.d.ts +9 -0
  654. package/node_modules/@xrkseek/server-http/dist/dsh-compat/underlying/http-kit.d.ts.map +1 -0
  655. package/node_modules/@xrkseek/server-http/dist/dsh-compat/underlying/http-kit.js +22 -0
  656. package/node_modules/@xrkseek/server-http/dist/dsh-compat/underlying/http-kit.js.map +1 -0
  657. package/node_modules/@xrkseek/server-http/dist/dsh-compat/underlying/index.d.ts +22 -0
  658. package/node_modules/@xrkseek/server-http/dist/dsh-compat/underlying/index.d.ts.map +1 -0
  659. package/node_modules/@xrkseek/server-http/dist/dsh-compat/underlying/index.js +13 -0
  660. package/node_modules/@xrkseek/server-http/dist/dsh-compat/underlying/index.js.map +1 -0
  661. package/node_modules/@xrkseek/server-http/dist/dsh-compat/underlying/wallet-service.d.ts +21 -0
  662. package/node_modules/@xrkseek/server-http/dist/dsh-compat/underlying/wallet-service.d.ts.map +1 -0
  663. package/node_modules/@xrkseek/server-http/dist/dsh-compat/underlying/wallet-service.js +190 -0
  664. package/node_modules/@xrkseek/server-http/dist/dsh-compat/underlying/wallet-service.js.map +1 -0
  665. package/node_modules/@xrkseek/server-http/dist/dsh-compat/undo.d.ts +10 -0
  666. package/node_modules/@xrkseek/server-http/dist/dsh-compat/undo.d.ts.map +1 -0
  667. package/node_modules/@xrkseek/server-http/dist/dsh-compat/undo.js +438 -0
  668. package/node_modules/@xrkseek/server-http/dist/dsh-compat/undo.js.map +1 -0
  669. package/node_modules/@xrkseek/server-http/dist/dsh-compat/usage-stats.d.ts +8 -0
  670. package/node_modules/@xrkseek/server-http/dist/dsh-compat/usage-stats.d.ts.map +1 -0
  671. package/node_modules/@xrkseek/server-http/dist/dsh-compat/usage-stats.js +69 -0
  672. package/node_modules/@xrkseek/server-http/dist/dsh-compat/usage-stats.js.map +1 -0
  673. package/node_modules/@xrkseek/server-http/dist/dsh-compat/vision-adapter.d.ts +6 -0
  674. package/node_modules/@xrkseek/server-http/dist/dsh-compat/vision-adapter.d.ts.map +1 -0
  675. package/node_modules/@xrkseek/server-http/dist/dsh-compat/vision-adapter.js +62 -0
  676. package/node_modules/@xrkseek/server-http/dist/dsh-compat/vision-adapter.js.map +1 -0
  677. package/node_modules/@xrkseek/server-http/dist/dsh-compat/vision-defaults.d.ts +5 -0
  678. package/node_modules/@xrkseek/server-http/dist/dsh-compat/vision-defaults.d.ts.map +1 -0
  679. package/node_modules/@xrkseek/server-http/dist/dsh-compat/vision-defaults.js +17 -0
  680. package/node_modules/@xrkseek/server-http/dist/dsh-compat/vision-defaults.js.map +1 -0
  681. package/node_modules/@xrkseek/server-http/dist/dsh-compat/vision-router-adapter.d.ts +7 -0
  682. package/node_modules/@xrkseek/server-http/dist/dsh-compat/vision-router-adapter.d.ts.map +1 -0
  683. package/node_modules/@xrkseek/server-http/dist/dsh-compat/vision-router-adapter.js +67 -0
  684. package/node_modules/@xrkseek/server-http/dist/dsh-compat/vision-router-adapter.js.map +1 -0
  685. package/node_modules/@xrkseek/server-http/dist/dsh-compat/vision.d.ts +12 -0
  686. package/node_modules/@xrkseek/server-http/dist/dsh-compat/vision.d.ts.map +1 -0
  687. package/node_modules/@xrkseek/server-http/dist/dsh-compat/vision.js +198 -0
  688. package/node_modules/@xrkseek/server-http/dist/dsh-compat/vision.js.map +1 -0
  689. package/node_modules/@xrkseek/server-http/dist/dsh-compat/wallet.d.ts +15 -0
  690. package/node_modules/@xrkseek/server-http/dist/dsh-compat/wallet.d.ts.map +1 -0
  691. package/node_modules/@xrkseek/server-http/dist/dsh-compat/wallet.js +111 -0
  692. package/node_modules/@xrkseek/server-http/dist/dsh-compat/wallet.js.map +1 -0
  693. package/node_modules/@xrkseek/server-http/dist/dsh-compat/wallpaper.d.ts +9 -0
  694. package/node_modules/@xrkseek/server-http/dist/dsh-compat/wallpaper.d.ts.map +1 -0
  695. package/node_modules/@xrkseek/server-http/dist/dsh-compat/wallpaper.js +161 -0
  696. package/node_modules/@xrkseek/server-http/dist/dsh-compat/wallpaper.js.map +1 -0
  697. package/node_modules/@xrkseek/server-http/dist/dsh-compat/wire/settings-provider.d.ts +6 -0
  698. package/node_modules/@xrkseek/server-http/dist/dsh-compat/wire/settings-provider.d.ts.map +1 -0
  699. package/node_modules/@xrkseek/server-http/dist/dsh-compat/wire/settings-provider.js +31 -0
  700. package/node_modules/@xrkseek/server-http/dist/dsh-compat/wire/settings-provider.js.map +1 -0
  701. package/node_modules/@xrkseek/server-http/dist/dsh-compat/wire/stub-handlers.d.ts +9 -0
  702. package/node_modules/@xrkseek/server-http/dist/dsh-compat/wire/stub-handlers.d.ts.map +1 -0
  703. package/node_modules/@xrkseek/server-http/dist/dsh-compat/wire/stub-handlers.js +103 -0
  704. package/node_modules/@xrkseek/server-http/dist/dsh-compat/wire/stub-handlers.js.map +1 -0
  705. package/node_modules/@xrkseek/server-http/dist/dsh-compat/xrk-host-apply.d.ts +49 -0
  706. package/node_modules/@xrkseek/server-http/dist/dsh-compat/xrk-host-apply.d.ts.map +1 -0
  707. package/node_modules/@xrkseek/server-http/dist/dsh-compat/xrk-host-apply.js +190 -0
  708. package/node_modules/@xrkseek/server-http/dist/dsh-compat/xrk-host-apply.js.map +1 -0
  709. package/node_modules/@xrkseek/server-http/dist/dsh-compat/xrk-json-store.d.ts +9 -0
  710. package/node_modules/@xrkseek/server-http/dist/dsh-compat/xrk-json-store.d.ts.map +1 -0
  711. package/node_modules/@xrkseek/server-http/dist/dsh-compat/xrk-json-store.js +44 -0
  712. package/node_modules/@xrkseek/server-http/dist/dsh-compat/xrk-json-store.js.map +1 -0
  713. package/node_modules/@xrkseek/server-http/dist/dsh-compat.d.ts +6 -0
  714. package/node_modules/@xrkseek/server-http/dist/dsh-compat.d.ts.map +1 -0
  715. package/node_modules/@xrkseek/server-http/dist/dsh-compat.js +6 -0
  716. package/node_modules/@xrkseek/server-http/dist/dsh-compat.js.map +1 -0
  717. package/node_modules/@xrkseek/server-http/dist/host-wire.d.ts +14 -0
  718. package/node_modules/@xrkseek/server-http/dist/host-wire.d.ts.map +1 -0
  719. package/node_modules/@xrkseek/server-http/dist/host-wire.js +15 -0
  720. package/node_modules/@xrkseek/server-http/dist/host-wire.js.map +1 -0
  721. package/node_modules/@xrkseek/server-http/dist/http-json.d.ts +12 -0
  722. package/node_modules/@xrkseek/server-http/dist/http-json.d.ts.map +1 -0
  723. package/node_modules/@xrkseek/server-http/dist/http-json.js +40 -0
  724. package/node_modules/@xrkseek/server-http/dist/http-json.js.map +1 -0
  725. package/node_modules/@xrkseek/server-http/dist/index.d.ts +12 -1
  726. package/node_modules/@xrkseek/server-http/dist/index.d.ts.map +1 -1
  727. package/node_modules/@xrkseek/server-http/dist/index.js +12 -1
  728. package/node_modules/@xrkseek/server-http/dist/index.js.map +1 -1
  729. package/node_modules/@xrkseek/server-http/dist/public-routes.d.ts +19 -0
  730. package/node_modules/@xrkseek/server-http/dist/public-routes.d.ts.map +1 -0
  731. package/node_modules/@xrkseek/server-http/dist/public-routes.js +34 -0
  732. package/node_modules/@xrkseek/server-http/dist/public-routes.js.map +1 -0
  733. package/node_modules/@xrkseek/server-http/dist/xrk/plugin-mutate.d.ts +13 -0
  734. package/node_modules/@xrkseek/server-http/dist/xrk/plugin-mutate.d.ts.map +1 -0
  735. package/node_modules/@xrkseek/server-http/dist/xrk/plugin-mutate.js +58 -0
  736. package/node_modules/@xrkseek/server-http/dist/xrk/plugin-mutate.js.map +1 -0
  737. package/node_modules/@xrkseek/server-http/dist/xrk/plugin-routes.d.ts +16 -0
  738. package/node_modules/@xrkseek/server-http/dist/xrk/plugin-routes.d.ts.map +1 -0
  739. package/node_modules/@xrkseek/server-http/dist/xrk/plugin-routes.js +49 -0
  740. package/node_modules/@xrkseek/server-http/dist/xrk/plugin-routes.js.map +1 -0
  741. package/node_modules/@xrkseek/server-http/dist/xrk/plugin-services.d.ts +35 -0
  742. package/node_modules/@xrkseek/server-http/dist/xrk/plugin-services.d.ts.map +1 -0
  743. package/node_modules/@xrkseek/server-http/dist/xrk/plugin-services.js +103 -0
  744. package/node_modules/@xrkseek/server-http/dist/xrk/plugin-services.js.map +1 -0
  745. package/node_modules/@xrkseek/server-http/package.json +2 -1
  746. package/node_modules/@xrkseek/server-loader/dist/host.d.ts +6 -0
  747. package/node_modules/@xrkseek/server-loader/dist/host.d.ts.map +1 -0
  748. package/node_modules/@xrkseek/server-loader/dist/host.js +11 -0
  749. package/node_modules/@xrkseek/server-loader/dist/host.js.map +1 -0
  750. package/node_modules/@xrkseek/server-loader/dist/index.d.ts +2 -1
  751. package/node_modules/@xrkseek/server-loader/dist/index.d.ts.map +1 -1
  752. package/node_modules/@xrkseek/server-loader/dist/index.js +1 -0
  753. package/node_modules/@xrkseek/server-loader/dist/index.js.map +1 -1
  754. package/node_modules/@xrkseek/server-loader/dist/kinds.d.ts +5 -0
  755. package/node_modules/@xrkseek/server-loader/dist/kinds.d.ts.map +1 -1
  756. package/node_modules/@xrkseek/server-loader/dist/kinds.js +5 -0
  757. package/node_modules/@xrkseek/server-loader/dist/kinds.js.map +1 -1
  758. package/node_modules/@xrkseek/server-loader/dist/load.d.ts.map +1 -1
  759. package/node_modules/@xrkseek/server-loader/dist/load.js +5 -0
  760. package/node_modules/@xrkseek/server-loader/dist/load.js.map +1 -1
  761. package/node_modules/@xrkseek/server-loader/dist/types.d.ts +40 -0
  762. package/node_modules/@xrkseek/server-loader/dist/types.d.ts.map +1 -1
  763. package/node_modules/@xrkseek/xrk-file-reference/README.i18n.yaml +6 -0
  764. package/node_modules/@xrkseek/xrk-file-reference/README.md +22 -0
  765. package/node_modules/@xrkseek/xrk-file-reference/README.zh.md +22 -0
  766. package/node_modules/@xrkseek/xrk-file-reference/package.json +68 -0
  767. package/node_modules/@xrkseek/xrk-file-reference-local/README.i18n.yaml +6 -0
  768. package/node_modules/@xrkseek/xrk-file-reference-local/README.md +45 -0
  769. package/node_modules/@xrkseek/xrk-file-reference-local/README.zh.md +45 -0
  770. package/node_modules/@xrkseek/xrk-file-reference-local/package.json +56 -0
  771. package/node_modules/@xrkseek/xrk-session-reference/README.i18n.yaml +6 -0
  772. package/node_modules/@xrkseek/xrk-session-reference/README.md +50 -0
  773. package/node_modules/@xrkseek/xrk-session-reference/README.zh.md +50 -0
  774. package/node_modules/@xrkseek/xrk-session-reference/package.json +79 -0
  775. package/node_modules/detect-libc/LICENSE +201 -0
  776. package/node_modules/detect-libc/README.md +163 -0
  777. package/node_modules/detect-libc/index.d.ts +14 -0
  778. package/node_modules/detect-libc/lib/detect-libc.js +313 -0
  779. package/node_modules/detect-libc/lib/elf.js +39 -0
  780. package/node_modules/detect-libc/lib/filesystem.js +51 -0
  781. package/node_modules/detect-libc/lib/process.js +24 -0
  782. package/node_modules/detect-libc/package.json +44 -0
  783. package/node_modules/semver/LICENSE +15 -0
  784. package/node_modules/semver/README.md +680 -0
  785. package/node_modules/semver/bin/semver.js +195 -0
  786. package/node_modules/semver/classes/comparator.js +143 -0
  787. package/node_modules/semver/classes/index.js +7 -0
  788. package/node_modules/semver/classes/range.js +577 -0
  789. package/node_modules/semver/classes/semver.js +350 -0
  790. package/node_modules/semver/functions/clean.js +8 -0
  791. package/node_modules/semver/functions/cmp.js +54 -0
  792. package/node_modules/semver/functions/coerce.js +62 -0
  793. package/node_modules/semver/functions/compare-build.js +9 -0
  794. package/node_modules/semver/functions/compare-loose.js +5 -0
  795. package/node_modules/semver/functions/compare.js +7 -0
  796. package/node_modules/semver/functions/diff.js +60 -0
  797. package/node_modules/semver/functions/eq.js +5 -0
  798. package/node_modules/semver/functions/gt.js +5 -0
  799. package/node_modules/semver/functions/gte.js +5 -0
  800. package/node_modules/semver/functions/inc.js +21 -0
  801. package/node_modules/semver/functions/lt.js +5 -0
  802. package/node_modules/semver/functions/lte.js +5 -0
  803. package/node_modules/semver/functions/major.js +5 -0
  804. package/node_modules/semver/functions/minor.js +5 -0
  805. package/node_modules/semver/functions/neq.js +5 -0
  806. package/node_modules/semver/functions/parse.js +18 -0
  807. package/node_modules/semver/functions/patch.js +5 -0
  808. package/node_modules/semver/functions/prerelease.js +8 -0
  809. package/node_modules/semver/functions/rcompare.js +5 -0
  810. package/node_modules/semver/functions/rsort.js +5 -0
  811. package/node_modules/semver/functions/satisfies.js +12 -0
  812. package/node_modules/semver/functions/sort.js +5 -0
  813. package/node_modules/semver/functions/truncate.js +48 -0
  814. package/node_modules/semver/functions/valid.js +8 -0
  815. package/node_modules/semver/index.js +93 -0
  816. package/node_modules/semver/internal/constants.js +37 -0
  817. package/node_modules/semver/internal/debug.js +11 -0
  818. package/node_modules/semver/internal/identifiers.js +29 -0
  819. package/node_modules/semver/internal/lrucache.js +42 -0
  820. package/node_modules/semver/internal/parse-options.js +17 -0
  821. package/node_modules/semver/internal/re.js +223 -0
  822. package/node_modules/semver/package.json +78 -0
  823. package/node_modules/semver/preload.js +4 -0
  824. package/node_modules/semver/range.bnf +17 -0
  825. package/node_modules/semver/ranges/gtr.js +6 -0
  826. package/node_modules/semver/ranges/intersects.js +9 -0
  827. package/node_modules/semver/ranges/ltr.js +6 -0
  828. package/node_modules/semver/ranges/max-satisfying.js +27 -0
  829. package/node_modules/semver/ranges/min-satisfying.js +26 -0
  830. package/node_modules/semver/ranges/min-version.js +63 -0
  831. package/node_modules/semver/ranges/outside.js +82 -0
  832. package/node_modules/semver/ranges/simplify.js +49 -0
  833. package/node_modules/semver/ranges/subset.js +249 -0
  834. package/node_modules/semver/ranges/to-comparators.js +10 -0
  835. package/node_modules/semver/ranges/valid.js +13 -0
  836. package/node_modules/sharp/LICENSE +191 -0
  837. package/node_modules/sharp/README.md +112 -0
  838. package/node_modules/sharp/dist/channel.cjs +177 -0
  839. package/node_modules/sharp/dist/channel.mjs +177 -0
  840. package/node_modules/sharp/dist/colour.cjs +199 -0
  841. package/node_modules/sharp/dist/colour.mjs +199 -0
  842. package/node_modules/sharp/dist/composite.cjs +213 -0
  843. package/node_modules/sharp/dist/composite.mjs +213 -0
  844. package/node_modules/sharp/dist/constructor.cjs +511 -0
  845. package/node_modules/sharp/dist/constructor.mjs +511 -0
  846. package/node_modules/sharp/dist/index.cjs +25 -0
  847. package/node_modules/sharp/dist/index.d.cts +1999 -0
  848. package/node_modules/sharp/dist/index.d.mts +2046 -0
  849. package/node_modules/sharp/dist/index.mjs +25 -0
  850. package/node_modules/sharp/dist/input.cjs +814 -0
  851. package/node_modules/sharp/dist/input.mjs +814 -0
  852. package/node_modules/sharp/dist/is.cjs +143 -0
  853. package/node_modules/sharp/dist/is.mjs +143 -0
  854. package/node_modules/sharp/dist/libvips.cjs +212 -0
  855. package/node_modules/sharp/dist/libvips.mjs +212 -0
  856. package/node_modules/sharp/dist/operation.cjs +998 -0
  857. package/node_modules/sharp/dist/operation.mjs +998 -0
  858. package/node_modules/sharp/dist/output.cjs +1788 -0
  859. package/node_modules/sharp/dist/output.mjs +1788 -0
  860. package/node_modules/sharp/dist/resize.cjs +617 -0
  861. package/node_modules/sharp/dist/resize.mjs +617 -0
  862. package/node_modules/sharp/dist/sharp.cjs +174 -0
  863. package/node_modules/sharp/dist/sharp.mjs +174 -0
  864. package/node_modules/sharp/dist/utility.cjs +301 -0
  865. package/node_modules/sharp/dist/utility.mjs +301 -0
  866. package/node_modules/sharp/install/build.js +38 -0
  867. package/node_modules/sharp/lib/index.d.ts +1999 -0
  868. package/node_modules/sharp/package.json +227 -0
  869. package/node_modules/sharp/src/binding.gyp +303 -0
  870. package/node_modules/sharp/src/common.cc +1183 -0
  871. package/node_modules/sharp/src/common.h +421 -0
  872. package/node_modules/sharp/src/metadata.cc +404 -0
  873. package/node_modules/sharp/src/metadata.h +95 -0
  874. package/node_modules/sharp/src/operations.cc +516 -0
  875. package/node_modules/sharp/src/operations.h +137 -0
  876. package/node_modules/sharp/src/pipeline.cc +1948 -0
  877. package/node_modules/sharp/src/pipeline.h +422 -0
  878. package/node_modules/sharp/src/sharp.cc +43 -0
  879. package/node_modules/sharp/src/stats.cc +186 -0
  880. package/node_modules/sharp/src/stats.h +62 -0
  881. package/node_modules/sharp/src/utilities.cc +289 -0
  882. package/node_modules/sharp/src/utilities.h +22 -0
  883. package/node_modules/undici-types/LICENSE +21 -0
  884. package/node_modules/undici-types/README.md +6 -0
  885. package/node_modules/undici-types/agent.d.ts +32 -0
  886. package/node_modules/undici-types/api.d.ts +43 -0
  887. package/node_modules/undici-types/balanced-pool.d.ts +30 -0
  888. package/node_modules/undici-types/cache-interceptor.d.ts +173 -0
  889. package/node_modules/undici-types/cache.d.ts +36 -0
  890. package/node_modules/undici-types/client-stats.d.ts +15 -0
  891. package/node_modules/undici-types/client.d.ts +108 -0
  892. package/node_modules/undici-types/connector.d.ts +34 -0
  893. package/node_modules/undici-types/content-type.d.ts +21 -0
  894. package/node_modules/undici-types/cookies.d.ts +30 -0
  895. package/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
  896. package/node_modules/undici-types/dispatcher.d.ts +276 -0
  897. package/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
  898. package/node_modules/undici-types/errors.d.ts +161 -0
  899. package/node_modules/undici-types/eventsource.d.ts +66 -0
  900. package/node_modules/undici-types/fetch.d.ts +211 -0
  901. package/node_modules/undici-types/formdata.d.ts +108 -0
  902. package/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  903. package/node_modules/undici-types/global-origin.d.ts +7 -0
  904. package/node_modules/undici-types/h2c-client.d.ts +73 -0
  905. package/node_modules/undici-types/handlers.d.ts +15 -0
  906. package/node_modules/undici-types/header.d.ts +160 -0
  907. package/node_modules/undici-types/index.d.ts +88 -0
  908. package/node_modules/undici-types/interceptors.d.ts +73 -0
  909. package/node_modules/undici-types/mock-agent.d.ts +68 -0
  910. package/node_modules/undici-types/mock-call-history.d.ts +111 -0
  911. package/node_modules/undici-types/mock-client.d.ts +27 -0
  912. package/node_modules/undici-types/mock-errors.d.ts +12 -0
  913. package/node_modules/undici-types/mock-interceptor.d.ts +94 -0
  914. package/node_modules/undici-types/mock-pool.d.ts +27 -0
  915. package/node_modules/undici-types/package.json +55 -0
  916. package/node_modules/undici-types/patch.d.ts +29 -0
  917. package/node_modules/undici-types/pool-stats.d.ts +19 -0
  918. package/node_modules/undici-types/pool.d.ts +41 -0
  919. package/node_modules/undici-types/proxy-agent.d.ts +29 -0
  920. package/node_modules/undici-types/readable.d.ts +68 -0
  921. package/node_modules/undici-types/retry-agent.d.ts +8 -0
  922. package/node_modules/undici-types/retry-handler.d.ts +125 -0
  923. package/node_modules/undici-types/round-robin-pool.d.ts +41 -0
  924. package/node_modules/undici-types/snapshot-agent.d.ts +109 -0
  925. package/node_modules/undici-types/util.d.ts +18 -0
  926. package/node_modules/undici-types/utility.d.ts +7 -0
  927. package/node_modules/undici-types/webidl.d.ts +341 -0
  928. package/node_modules/undici-types/websocket.d.ts +186 -0
  929. package/package.json +23 -1
  930. package/product-web/assets/{index-CSGf6Qzd.css → index-C0u-TtQQ.css} +1 -1
  931. package/product-web/assets/index-CHKZdZNt.js +112 -0
  932. package/product-web/assets/index-CHKZdZNt.js.map +1 -0
  933. package/product-web/assets/langs/{php-DY2VakOf.js → php-9bx0az3O.js} +2 -2
  934. package/product-web/assets/langs/{php-DY2VakOf.js.map → php-9bx0az3O.js.map} +1 -1
  935. package/product-web/assets/langs/{ruby-hwtoiFmS.js → ruby-HDLHRjSL.js} +2 -2
  936. package/product-web/assets/langs/{ruby-hwtoiFmS.js.map → ruby-HDLHRjSL.js.map} +1 -1
  937. package/product-web/assets/{vendor-CldRVjca.js → vendor-CeMKrCZm.js} +36 -35
  938. package/product-web/assets/vendor-CeMKrCZm.js.map +1 -0
  939. package/product-web/boot.json +20 -1
  940. package/product-web/index.html +3 -3
  941. package/product-web/plugins/@xrkseek/client-modules/client.js +83 -12
  942. package/product-web/plugins/@xrkseek/client-runtime/client.js +1 -37
  943. package/product-web/plugins/@xrkseek/client-ui-agent-preset/client.js +39 -39
  944. package/product-web/plugins/@xrkseek/client-ui-attachment/client.js +782 -0
  945. package/product-web/plugins/@xrkseek/client-ui-commands/client.js +7 -7
  946. package/product-web/plugins/@xrkseek/client-ui-conversation/client.js +965 -561
  947. package/product-web/plugins/@xrkseek/client-ui-deliverables/client.js +4 -4
  948. package/product-web/plugins/@xrkseek/client-ui-directory-picker-browse/client.js +24 -24
  949. package/product-web/plugins/@xrkseek/client-ui-goal/client.js +8 -8
  950. package/product-web/plugins/@xrkseek/client-ui-input-trigger/client.js +83 -27
  951. package/product-web/plugins/@xrkseek/client-ui-jobs/client.js +9 -9
  952. package/product-web/plugins/@xrkseek/client-ui-layout/client.js +3 -3
  953. package/product-web/plugins/@xrkseek/client-ui-message-feedback/client.js +4 -4
  954. package/product-web/plugins/@xrkseek/client-ui-model-selection/client.js +15 -15
  955. package/product-web/plugins/@xrkseek/client-ui-permission-presets/client.js +2 -2
  956. package/product-web/plugins/@xrkseek/client-ui-plan/client.js +3 -3
  957. package/product-web/plugins/@xrkseek/client-ui-reference/client.js +148 -0
  958. package/product-web/plugins/@xrkseek/client-ui-settings-general/client.js +13 -13
  959. package/product-web/plugins/@xrkseek/client-ui-settings-models/client.js +56 -56
  960. package/product-web/plugins/@xrkseek/client-ui-settings-plugin-inventory/client.js +12 -12
  961. package/product-web/plugins/@xrkseek/client-ui-settings-plugins/client.js +43 -43
  962. package/product-web/plugins/@xrkseek/client-ui-sidebar/client.js +14 -14
  963. package/product-web/plugins/@xrkseek/client-ui-skill/client.js +11 -11
  964. package/product-web/plugins/@xrkseek/client-ui-subagent/client.js +289 -157
  965. package/product-web/plugins/@xrkseek/client-ui-theme/client.js +4 -4
  966. package/product-web/plugins/@xrkseek/client-ui-tool/client.js +33 -33
  967. package/product-web/plugins/@xrkseek/client-ui-trajectory/client.js +144 -165
  968. package/product-web/plugins/@xrkseek/client-ui-user-questions/client.js +26 -26
  969. package/product-web/plugins/@xrkseek/client-ui-workflow-run/client.js +15 -15
  970. package/product-web/plugins/@xrkseek/client-ui-workspace/client.js +54 -54
  971. package/product-web/plugins/@xrkseek/xrk-api-remotes/client.js +20 -1
  972. package/product-web/assets/index-CcF0Sxxg.js +0 -297
  973. package/product-web/assets/index-CcF0Sxxg.js.map +0 -1
  974. package/product-web/assets/vendor-CldRVjca.js.map +0 -1
@@ -9,7 +9,6 @@ window.__ModuleLoader__.load({
9
9
  let _xrkseek_cordis = require("@xrkseek/cordis");
10
10
  let react = require("react");
11
11
  let _xrkseek_client_ui_primitives = require("@xrkseek/client-ui-primitives");
12
- let _xrkseek_client_ui_attachment = require("@xrkseek/client-ui-attachment");
13
12
  let react_jsx_runtime = require("react/jsx-runtime");
14
13
  //#region src/client/stores.ts
15
14
  /**
@@ -126,17 +125,19 @@ window.__ModuleLoader__.load({
126
125
  * @param text - serialized prompt text.
127
126
  * @param imageIds - ordered draft-local attachment ids.
128
127
  * @param mode - queue or steer delivery selected by composer policy.
128
+ * @param signal - optional cancellation for the complete Host admission.
129
+ * @returns the Host admission outcome; local attachment preparation failures reject.
129
130
  */
130
- async sendSession(session, text, imageIds, mode) {
131
+ async sendSession(session, text, imageIds, mode, signal) {
131
132
  const attachments = this.draftImages(imageIds);
132
133
  if (attachments.length !== imageIds.length) throw new Error("conversation.sendSession: one or more draft images are no longer available");
133
134
  const content = [...await this.serializeImages(attachments.map((attachment) => attachment.file)), ...text === "" ? [] : [{
134
135
  type: "text",
135
136
  text
136
137
  }]];
137
- const result = await session.prompt(content, mode);
138
- if (!result.ok) throw new Error(`conversation.send failed: ${result.error.code}: ${result.error.message}`);
138
+ if (!(await session.prompt(content, mode, signal)).ok) return { kind: "error" };
139
139
  this.releaseDraftImages(attachments);
140
+ return { kind: "success" };
140
141
  }
141
142
  /**
142
143
  * Create runtime-only draft images and their object URLs.
@@ -166,6 +167,18 @@ window.__ModuleLoader__.load({
166
167
  return attachments;
167
168
  }
168
169
  /**
170
+ * Serialize ordered draft images to command-submit wire payloads without
171
+ * sending or releasing them (the composer releases only after the command
172
+ * settles successfully).
173
+ * @param imageIds - ordered draft-local attachment ids.
174
+ * @returns base64 payloads in id order.
175
+ */
176
+ async serializeDraftImages(imageIds) {
177
+ const attachments = this.draftImages(imageIds);
178
+ if (attachments.length !== imageIds.length) throw new Error("conversation.serializeDraftImages: one or more draft images are no longer available");
179
+ return Promise.all(attachments.map((attachment) => this.encodeImage(attachment.file)));
180
+ }
181
+ /**
169
182
  * Release one browser-owned draft image and preview URL.
170
183
  * @param id - draft attachment id.
171
184
  */
@@ -271,10 +284,16 @@ window.__ModuleLoader__.load({
271
284
  serializeImages(images) {
272
285
  return Promise.all(images.map(async (file) => ({
273
286
  type: "image",
287
+ ...await this.encodeImage(file)
288
+ })));
289
+ }
290
+ /** Canonical base64 wire form of one browser image file. */
291
+ async encodeImage(file) {
292
+ return {
274
293
  mediaType: imageMediaType(file.type),
275
294
  data: bytesToBase64(new Uint8Array(await file.arrayBuffer())),
276
295
  ...file.name === "" ? {} : { name: file.name }
277
- })));
296
+ };
278
297
  }
279
298
  };
280
299
  function imageMediaType(value) {
@@ -348,6 +367,18 @@ window.__ModuleLoader__.load({
348
367
  subscribe: (fn) => session.subscribe(fn)
349
368
  };
350
369
  }
370
+ //#endregion
371
+ //#region src/client/input/machine.ts
372
+ const REFERENCE_PLACEHOLDER_RE = /[\uE100-\uE11D\uFFFC]/gu;
373
+ /**
374
+ * Build the inline draft text whose leading marker is decorated as the
375
+ * reference icon in the backdrop.
376
+ * @param reference - reference insertion with its cached display projection.
377
+ * @returns display text with one marker glyph followed by the complete label.
378
+ */
379
+ function referenceDraftText(reference) {
380
+ return `@${reference.label}`;
381
+ }
351
382
  /** The machine never writes the queue; the wiring layer overlays the queue store's projection. */
352
383
  const EMPTY_QUEUE$1 = [];
353
384
  /** Undo ring depth (bounded self-managed transaction log). */
@@ -391,6 +422,24 @@ window.__ModuleLoader__.load({
391
422
  };
392
423
  }
393
424
  /**
425
+ * Expand the draft's reference ranges into their occurrences' clipboard text
426
+ * for persistence and clipboard projection. Table order is offset order, so
427
+ * one linear walk pairs ranges with entries.
428
+ * @param state - published input state.
429
+ * @returns the plain-text projection of the draft.
430
+ */
431
+ function projectClipboard(state) {
432
+ const { draft, occurrences } = state;
433
+ if (occurrences.length === 0) return draft;
434
+ let out = "";
435
+ let cursor = 0;
436
+ for (const o of occurrences) {
437
+ out += draft.slice(cursor, o.offset) + o.clipboardText;
438
+ cursor = o.offset + o.length;
439
+ }
440
+ return out + draft.slice(cursor);
441
+ }
442
+ /**
394
443
  * Pure input machine, one instance per session (per-session isolation is by
395
444
  * construction). The machine constructs one AbortController per SubmitAttempt
396
445
  * at enter time and aborts it itself on release; the shell never aborts, it
@@ -429,7 +478,8 @@ window.__ModuleLoader__.load({
429
478
  phase: this.phase,
430
479
  ...c ? { claim: {
431
480
  token: c.token,
432
- ...c.hint !== void 0 ? { hint: c.hint } : {}
481
+ ...c.hint !== void 0 ? { hint: c.hint } : {},
482
+ ...c.images === true ? { images: true } : {}
433
483
  } } : {},
434
484
  occurrences: this.occurrences,
435
485
  ...this.paste !== void 0 ? { paste: this.paste } : {},
@@ -481,14 +531,14 @@ window.__ModuleLoader__.load({
481
531
  }
482
532
  /**
483
533
  * Reconcile the occurrence table with one edit (old-draft coordinates):
484
- * entries past the range shift by the length delta; entries whose
485
- * placeholder sits inside the replaced range go away whole (a
486
- * deletion/replacement intersecting a placeholder acts on the whole chip).
534
+ * entries past the range shift by the length delta; an edit that intersects
535
+ * a reference range removes its structured occurrence and leaves the edited
536
+ * characters as ordinary draft text.
487
537
  */
488
538
  reconcile(range) {
489
539
  const delta = range.insertedLength - (range.end - range.start);
490
540
  const kept = [];
491
- for (const o of this.occurrences) if (o.offset < range.start) kept.push(o);
541
+ for (const o of this.occurrences) if (o.offset + o.length <= range.start) kept.push(o);
492
542
  else if (o.offset >= range.end) kept.push(delta === 0 ? o : {
493
543
  ...o,
494
544
  offset: o.offset + delta
@@ -503,14 +553,16 @@ window.__ModuleLoader__.load({
503
553
  }
504
554
  }
505
555
  /** Mint one occurrence at a draft offset. */
506
- mint(reference, offset) {
556
+ mint(reference, offset, length) {
507
557
  this.occurrenceSeq += 1;
508
558
  return {
509
559
  occurrenceId: this.occurrenceSeq,
510
560
  source: reference.source,
511
561
  ref: reference.ref,
512
562
  offset,
563
+ length,
513
564
  label: reference.label,
565
+ ...reference.appearance === void 0 ? {} : { appearance: reference.appearance },
514
566
  clipboardText: reference.clipboardText
515
567
  };
516
568
  }
@@ -567,22 +619,24 @@ window.__ModuleLoader__.load({
567
619
  return [];
568
620
  }
569
621
  /**
570
- * Shared chip-insertion transaction: replace [span) with one placeholder
622
+ * Shared reference-insertion transaction: replace [span) with one inline
571
623
  * occurrence (insert-ref and paste-upgrade both land here). A separating
572
- * space follows the chip unless one is already next.
573
- * @returns the inserted length (placeholder plus optional gap).
624
+ * space follows the reference unless one is already next.
625
+ * @returns the inserted length (display text plus optional gap).
574
626
  */
575
627
  replaceSpanWithChip(reference, span) {
576
628
  this.pushTxn();
577
629
  this.typingRun = void 0;
578
630
  const tail = this.draft.slice(span.end);
579
- const inserted = "" + (tail.length === 0 || tail[0] !== " " ? " " : "");
631
+ const gap = tail.length === 0 || tail[0] !== " " ? " " : "";
632
+ const displayText = referenceDraftText(reference);
633
+ const inserted = displayText + gap;
580
634
  this.reconcile({
581
635
  start: span.start,
582
636
  end: span.end,
583
637
  insertedLength: inserted.length
584
638
  });
585
- this.withMinted([this.mint(reference, span.start)]);
639
+ this.withMinted([this.mint(reference, span.start, displayText.length)]);
586
640
  this.adopt(this.draft.slice(0, span.start) + inserted + tail);
587
641
  this.watchClaim();
588
642
  return inserted.length;
@@ -671,7 +725,7 @@ window.__ModuleLoader__.load({
671
725
  return [];
672
726
  }
673
727
  /**
674
- * Paste as one transaction: the text (U+FFFC-sanitized) replaces the
728
+ * Paste as one transaction: the text (reference-placeholder-sanitized) replaces the
675
729
  * selection; hot-snapshot sync matches componentize inside the SAME
676
730
  * transaction (one undo returns to pre-paste); a match attempt opens for
677
731
  * the async remainder while the phase still accepts reference mutations.
@@ -679,7 +733,7 @@ window.__ModuleLoader__.load({
679
733
  onPasteBegin(rawText, selection, components = [], generation = 0) {
680
734
  const { start, end } = selection;
681
735
  if (start < 0 || start > end || end > this.draft.length) return [];
682
- const text = rawText.split("").join("");
736
+ const text = rawText.replace(REFERENCE_PLACEHOLDER_RE, "");
683
737
  this.pushTxn(selection);
684
738
  this.typingRun = void 0;
685
739
  const sorted = [...components].sort((a, b) => a.start - b.start);
@@ -688,8 +742,9 @@ window.__ModuleLoader__.load({
688
742
  let cursor = 0;
689
743
  for (const c of sorted) {
690
744
  inserted += text.slice(cursor, c.start);
691
- minted.push(this.mint(c.reference, start + inserted.length));
692
- inserted += "";
745
+ const displayText = referenceDraftText(c.reference);
746
+ minted.push(this.mint(c.reference, start + inserted.length, displayText.length));
747
+ inserted += displayText;
693
748
  cursor = c.end;
694
749
  }
695
750
  inserted += text.slice(cursor);
@@ -775,8 +830,11 @@ window.__ModuleLoader__.load({
775
830
  draft: this.draft
776
831
  }];
777
832
  }
833
+ const attempt = this.beginAttempt(mode);
834
+ this.phase = "submitting";
778
835
  return [{
779
836
  type: "default-sink",
837
+ attempt,
780
838
  draft: this.draft,
781
839
  mode
782
840
  }];
@@ -794,13 +852,18 @@ window.__ModuleLoader__.load({
794
852
  args: argsAfter(attempt.draftSnapshot, outcome.claim.token)
795
853
  }];
796
854
  }
855
+ if (outcome === void 0) {
856
+ this.phase = "submitting";
857
+ return [{
858
+ type: "default-sink",
859
+ attempt,
860
+ draft: attempt.draftSnapshot,
861
+ mode: attempt.mode
862
+ }];
863
+ }
797
864
  this.inflight = void 0;
798
865
  this.phase = "plain";
799
- return outcome === void 0 ? [{
800
- type: "default-sink",
801
- draft: attempt.draftSnapshot,
802
- mode: attempt.mode
803
- }] : [];
866
+ return [];
804
867
  }
805
868
  onAdjudicationFailed(attempt, message) {
806
869
  if (this.phase !== "adjudicating" || this.inflight?.attempt.seq !== attempt.seq) return [];
@@ -820,7 +883,8 @@ window.__ModuleLoader__.load({
820
883
  this.phase = "plain";
821
884
  this.claim = void 0;
822
885
  this.occurrences = [];
823
- this.adopt("");
886
+ const snapshot = flight.attempt.draftSnapshot;
887
+ this.adopt(this.draft !== snapshot && this.draft.startsWith(snapshot) ? this.draft.slice(snapshot.length) : "");
824
888
  this.log = [];
825
889
  this.redoStack = [];
826
890
  this.typingRun = void 0;
@@ -831,10 +895,10 @@ window.__ModuleLoader__.load({
831
895
  text: ev.outcome.text
832
896
  }] : [];
833
897
  }
834
- const text = ev.message ?? ev.outcome?.text ?? "command failed";
898
+ const text = ev.message ?? ev.outcome?.text;
835
899
  if (this.draft === flight.attempt.draftSnapshot && this.claim !== void 0 && this.draft.startsWith(this.claim.token)) {
836
900
  this.phase = "claimed";
837
- return [{
901
+ return text === void 0 ? [] : [{
838
902
  type: "notice",
839
903
  level: "error",
840
904
  text
@@ -842,15 +906,15 @@ window.__ModuleLoader__.load({
842
906
  }
843
907
  this.phase = "plain";
844
908
  this.claim = void 0;
845
- return [{
909
+ return text === void 0 ? [] : [{
846
910
  type: "notice",
847
911
  level: "error",
848
912
  text
849
913
  }];
850
914
  }
851
- /** Ordinary send accepted: clear as a commit (no undo unit; sent content
852
- * must not be resurrectable — same discipline as submit-settled success). */
915
+ /** Cut undo state after an accepted image-only send. */
853
916
  onSendCommitted() {
917
+ if (this.phase !== "plain") return [];
854
918
  this.claim = void 0;
855
919
  this.occurrences = [];
856
920
  this.adopt("");
@@ -893,7 +957,7 @@ window.__ModuleLoader__.load({
893
957
  deps;
894
958
  /** Published machine state + queue overlay (the InputZone currency source). */
895
959
  state;
896
- /** Latest surfaced notice (null after clear); the wiring renders it beside the error strip. */
960
+ /** Latest surfaced notice (null after clear); the bar renders errors as banners and information inline. */
897
961
  notices = (0, _xrkseek_client_runtime_client.createSnapshotStore)(null);
898
962
  /** The public provide-channel action face (one stable identity per session). */
899
963
  actions = {
@@ -913,10 +977,12 @@ window.__ModuleLoader__.load({
913
977
  };
914
978
  core = new InputMachine({ now: () => Date.now() });
915
979
  noticeSeq = 0;
916
- lastDraft = "";
980
+ lastMirroredDraft = "";
917
981
  imageIds = [];
982
+ /** One image-only send at a time: Enter during the Host round-trip is a no-op. */
983
+ imageSendInFlight = false;
918
984
  disposed = false;
919
- /** Draft persistence mirror (chat store write; receives the clipboard projection, never raw placeholders). */
985
+ /** Draft persistence mirror (chat store write; receives the clipboard projection, never display-only ranges). */
920
986
  mirrorFn;
921
987
  constructor(deps) {
922
988
  this.deps = deps;
@@ -946,8 +1012,13 @@ window.__ModuleLoader__.load({
946
1012
  this.publish();
947
1013
  return true;
948
1014
  }
949
- /** Remove one image id from this draft. */
1015
+ /**
1016
+ * Remove one image id from this draft. Busy admission phases refuse, like
1017
+ * {@link addImages}: a removal landing while a command submit serializes
1018
+ * would otherwise vanish from the rail yet still ride the in-flight send.
1019
+ */
950
1020
  removeImage(id) {
1021
+ if (this.snapshot.phase === "adjudicating" || this.snapshot.phase === "submitting") return;
951
1022
  const next = this.imageIds.filter((candidate) => candidate !== id);
952
1023
  if (next.length === this.imageIds.length) return;
953
1024
  this.imageIds = next;
@@ -965,15 +1036,6 @@ window.__ModuleLoader__.load({
965
1036
  this.publish();
966
1037
  }
967
1038
  /**
968
- * Restore a failed attempt before any images added after its admission.
969
- * @param ids - failed attempt image ids.
970
- */
971
- restoreImages(ids) {
972
- const current = new Set(this.imageIds);
973
- this.imageIds = [...ids.filter((id) => !current.has(id)), ...this.imageIds];
974
- this.publish();
975
- }
976
- /**
977
1039
  * Clear the draft as a successful-send commit: no undo unit is recorded and
978
1040
  * the undo history is cut, so Ctrl/Cmd-Z cannot resurrect sent content
979
1041
  * (the command path gets the same discipline from submit-settled success).
@@ -1021,7 +1083,24 @@ window.__ModuleLoader__.load({
1021
1083
  */
1022
1084
  submit(mode = "queue") {
1023
1085
  if (this.snapshot.draft.trim() === "" && this.imageIds.length > 0) {
1024
- if (this.snapshot.phase === "plain") this.deps.defaultSink("", [...this.imageIds], mode);
1086
+ if (this.snapshot.phase === "plain" && !this.imageSendInFlight) {
1087
+ const imageIds = [...this.imageIds];
1088
+ this.imageSendInFlight = true;
1089
+ this.deps.defaultSink("", imageIds, mode, new AbortController().signal).then((outcome) => {
1090
+ this.imageSendInFlight = false;
1091
+ if (this.disposed) return;
1092
+ if (outcome.kind === "success") this.commitSend(imageIds);
1093
+ else if (outcome.text !== void 0) this.notify("error", outcome.text);
1094
+ }, (error) => {
1095
+ this.imageSendInFlight = false;
1096
+ if (!this.disposed) this.notify("error", error instanceof Error ? error.message : String(error));
1097
+ });
1098
+ }
1099
+ return;
1100
+ }
1101
+ const before = this.snapshot;
1102
+ if (before.phase === "claimed" && this.imageIds.length > 0 && before.claim?.images !== true) {
1103
+ this.notify("error", this.deps.commandImages.unsupportedNotice(before.claim?.token ?? before.draft));
1025
1104
  return;
1026
1105
  }
1027
1106
  this.run(this.core.dispatch({
@@ -1149,13 +1228,19 @@ window.__ModuleLoader__.load({
1149
1228
  * a scan-derived decoration, never state.
1150
1229
  * @param text - the plain reference text to splice in (e.g. `/name `).
1151
1230
  * @param span - pick-time span snapshot (draftRev CAS).
1231
+ * @param keepCompleting - re-track at the caret after the splice so an open
1232
+ * token (a directory pick's trailing slash) reopens the menu.
1152
1233
  * @returns whether the text was applied.
1153
1234
  */
1154
- insertText(text, span) {
1235
+ insertText(text, span, keepCompleting = false) {
1155
1236
  const snapshot = this.core.state;
1156
1237
  if (span.draftRev !== snapshot.draftRev) return false;
1157
1238
  const draft = snapshot.draft;
1158
1239
  this.setDraft(draft.slice(0, span.start) + text + draft.slice(span.end));
1240
+ if (keepCompleting) {
1241
+ const next = this.snapshot;
1242
+ this.deps.inputTriggers?.()?.track(next.draft, span.start + text.length, { tier: guardOf(next.phase) }, next.draftRev);
1243
+ }
1159
1244
  return true;
1160
1245
  }
1161
1246
  /**
@@ -1215,23 +1300,23 @@ window.__ModuleLoader__.load({
1215
1300
  this.beginSubmit(fx.attempt, fx.claim, fx.args);
1216
1301
  return;
1217
1302
  case "default-sink":
1218
- this.sinkSerialized(fx.draft, fx.mode);
1303
+ this.sinkSerialized(fx.attempt, fx.draft, fx.mode);
1219
1304
  return;
1220
1305
  default: return;
1221
1306
  }
1222
1307
  }
1223
1308
  /**
1224
1309
  * Prompt serialization before the sink: expand each
1225
- * placeholder to its owner's model form via the session controller's
1310
+ * inline reference range to its owner's model form via the session controller's
1226
1311
  * codec routing. Owner missing / serialize failure / disposal blocks the
1227
1312
  * send — notice + draft and chips retained, never a silent downgrade to
1228
1313
  * the clipboard text. Chip-free drafts skip the async detour.
1229
1314
  */
1230
- sinkSerialized(draft, mode) {
1315
+ sinkSerialized(attempt, draft, mode) {
1231
1316
  const imageIds = [...this.imageIds];
1232
1317
  const occurrences = this.core.state.occurrences;
1233
1318
  if (occurrences.length === 0) {
1234
- this.deps.defaultSink(draft.trim(), imageIds, mode);
1319
+ this.settleSubmit(attempt, this.deps.defaultSink(draft.trim(), imageIds, mode, attempt.signal), imageIds);
1235
1320
  return;
1236
1321
  }
1237
1322
  const inputTriggers = this.deps.inputTriggers?.();
@@ -1240,6 +1325,7 @@ window.__ModuleLoader__.load({
1240
1325
  if (inputTriggers === void 0) throw new Error(`no serializer for reference source "${o.source}"`);
1241
1326
  return {
1242
1327
  offset: o.offset,
1328
+ length: o.length,
1243
1329
  text: await inputTriggers.serializeReference(o.source, o.ref, controller.signal)
1244
1330
  };
1245
1331
  })).then((parts) => {
@@ -1248,15 +1334,44 @@ window.__ModuleLoader__.load({
1248
1334
  let cursor = 0;
1249
1335
  for (const part of parts) {
1250
1336
  out += draft.slice(cursor, part.offset) + part.text;
1251
- cursor = part.offset + 1;
1337
+ cursor = part.offset + part.length;
1252
1338
  }
1253
1339
  out += draft.slice(cursor);
1254
- this.deps.defaultSink(out.trim(), imageIds, mode);
1340
+ this.settleSubmit(attempt, this.deps.defaultSink(out.trim(), imageIds, mode, attempt.signal), imageIds);
1255
1341
  }, (error) => {
1256
1342
  controller.abort();
1257
- if (this.disposed) return;
1343
+ if (this.dead(attempt)) return;
1258
1344
  const message = error instanceof Error ? error.message : String(error);
1259
- this.notify("error", message);
1345
+ this.run(this.core.dispatch({
1346
+ type: "submit-settled",
1347
+ attempt,
1348
+ ok: false,
1349
+ message
1350
+ }));
1351
+ });
1352
+ }
1353
+ /** Settle one admission attempt; successful sends consume only their captured images. */
1354
+ settleSubmit(attempt, pending, imageIds = []) {
1355
+ pending.then((outcome) => {
1356
+ if (this.dead(attempt)) return;
1357
+ if (outcome.kind === "success" && imageIds.length > 0) {
1358
+ const submitted = new Set(imageIds);
1359
+ this.imageIds = this.imageIds.filter((id) => !submitted.has(id));
1360
+ }
1361
+ this.run(this.core.dispatch({
1362
+ type: "submit-settled",
1363
+ attempt,
1364
+ ok: outcome.kind === "success",
1365
+ outcome
1366
+ }));
1367
+ }, (error) => {
1368
+ if (this.dead(attempt)) return;
1369
+ this.run(this.core.dispatch({
1370
+ type: "submit-settled",
1371
+ attempt,
1372
+ ok: false,
1373
+ message: error instanceof Error ? error.message : String(error)
1374
+ }));
1260
1375
  });
1261
1376
  }
1262
1377
  /** Enter adjudication: poll the session controller; failure = notice + draft retained (never a silent downgrade). */
@@ -1270,7 +1385,7 @@ window.__ModuleLoader__.load({
1270
1385
  }));
1271
1386
  return;
1272
1387
  }
1273
- inputTriggers.adjudicate(draft.trim(), attempt.signal).then((outcome) => {
1388
+ inputTriggers.adjudicate(draft.trim(), attempt.signal, { images: this.imageIds.length }).then((outcome) => {
1274
1389
  if (this.dead(attempt)) return;
1275
1390
  this.run(this.core.dispatch({
1276
1391
  type: "adjudicated",
@@ -1287,15 +1402,32 @@ window.__ModuleLoader__.load({
1287
1402
  }));
1288
1403
  });
1289
1404
  }
1290
- /** The submit transaction: claim.submit against the session scope; ok maps from the outcome kind. */
1405
+ /**
1406
+ * The submit transaction: claim.submit against the session scope; ok maps
1407
+ * from the outcome kind. An accepting claim receives the serialized draft
1408
+ * images, which are cleared and released only on a success outcome; a
1409
+ * failure (serialize, transport, or handler error) keeps draft and images
1410
+ * for correction.
1411
+ */
1291
1412
  beginSubmit(attempt, claim, args) {
1292
- Promise.resolve().then(() => claim.submit(args, this.deps.actx)).then((outcome) => {
1293
- if (this.dead(attempt)) return;
1413
+ const imageIds = claim.images === true ? [...this.imageIds] : [];
1414
+ Promise.resolve().then(async () => {
1415
+ const images = imageIds.length > 0 ? await this.deps.commandImages.serialize(imageIds) : [];
1416
+ if (this.dead(attempt)) return void 0;
1417
+ return claim.submit(args, this.deps.actx, images);
1418
+ }).then((outcome) => {
1419
+ if (outcome === void 0 || this.dead(attempt)) return;
1420
+ if (outcome.kind === "success" && imageIds.length > 0) {
1421
+ const submitted = new Set(imageIds);
1422
+ this.imageIds = this.imageIds.filter((id) => !submitted.has(id));
1423
+ this.deps.commandImages.release(imageIds);
1424
+ }
1294
1425
  this.run(this.core.dispatch({
1295
1426
  type: "submit-settled",
1296
1427
  attempt,
1297
1428
  ok: outcome.kind === "success",
1298
- outcome
1429
+ outcome,
1430
+ ...outcome.kind === "error" && outcome.text === void 0 ? { message: "command failed" } : {}
1299
1431
  }));
1300
1432
  }, (error) => {
1301
1433
  if (this.dead(attempt)) return;
@@ -1322,9 +1454,10 @@ window.__ModuleLoader__.load({
1322
1454
  publish() {
1323
1455
  const next = this.compose();
1324
1456
  this.state.set(next);
1325
- if (next.draft !== this.lastDraft) {
1326
- this.lastDraft = next.draft;
1327
- this.mirrorFn?.(next.draft);
1457
+ const mirroredDraft = projectClipboard(next);
1458
+ if (mirroredDraft !== this.lastMirroredDraft) {
1459
+ this.lastMirroredDraft = mirroredDraft;
1460
+ this.mirrorFn?.(mirroredDraft);
1328
1461
  }
1329
1462
  }
1330
1463
  };
@@ -1370,11 +1503,17 @@ window.__ModuleLoader__.load({
1370
1503
  inputTriggers: () => this.controller(actx),
1371
1504
  popup: () => this.popup(actx),
1372
1505
  queue: queueReadFaceOf(session),
1373
- defaultSink: (text, imageIds, mode) => {
1374
- this.sink(session, text, imageIds, mode);
1375
- },
1506
+ defaultSink: (text, imageIds, mode, signal) => this.sink(session, text, imageIds, mode, signal),
1376
1507
  steerQueue: () => {
1377
1508
  this.steerQueue(session, shell);
1509
+ },
1510
+ commandImages: {
1511
+ serialize: (ids) => this.conversation().serializeDraftImages(ids),
1512
+ release: (ids) => {
1513
+ const conversation = this.rootCtx.get("conversation");
1514
+ for (const imageId of ids) conversation?.releaseDraftImage(imageId);
1515
+ },
1516
+ unsupportedNotice: (token) => this.t("command.imagesUnsupported", { command: token.trim().replace(/^\//u, "") })
1378
1517
  }
1379
1518
  });
1380
1519
  this.shells.set(id, shell);
@@ -1383,7 +1522,7 @@ window.__ModuleLoader__.load({
1383
1522
  actx.on("slash/input-begin-command", (req) => shell.beginCommand(req.claim, req.span) ? true : void 0),
1384
1523
  actx.on("slash/input-insert-reference", (req) => shell.insertReference(req.reference, req.span) ? true : void 0),
1385
1524
  actx.on("slash/input-consume-token", (req) => shell.consumeToken(req.guard) ? true : void 0),
1386
- actx.on("slash/input-insert-text", (req) => shell.insertText(req.text, req.span) ? true : void 0)
1525
+ actx.on("slash/input-insert-text", (req) => shell.insertText(req.text, req.span, req.continue === true) ? true : void 0)
1387
1526
  ];
1388
1527
  return () => {
1389
1528
  for (const off of offs) off();
@@ -1433,21 +1572,11 @@ window.__ModuleLoader__.load({
1433
1572
  * Default sink: optimistic clear + prompt. The session is always a real
1434
1573
  * host entity (materialized when its workspace was picked), so there is
1435
1574
  * exactly one path; a failed first prompt is an ordinary prompt failure
1436
- * (error strip via promptError, draft restored only while untouched).
1575
+ * (banner via promptError, draft restored only while untouched).
1437
1576
  */
1438
- sink(session, text, imageIds, mode) {
1439
- if (text === "" && imageIds.length === 0) return;
1440
- const shell = this.shells.get(session.sessionId);
1441
- shell?.commitSend(imageIds);
1442
- this.conversation().sendSession(session, text, imageIds, mode).catch(() => {
1443
- if (this.shells.get(session.sessionId) === shell) {
1444
- shell?.restoreImages(imageIds);
1445
- if (shell?.snapshot.draft === "") shell.setDraft(text);
1446
- return;
1447
- }
1448
- const conversation = this.rootCtx.get("conversation");
1449
- for (const id of imageIds) conversation?.releaseDraftImage(id);
1450
- });
1577
+ sink(session, text, imageIds, mode, signal) {
1578
+ if (text === "" && imageIds.length === 0) return Promise.resolve({ kind: "success" });
1579
+ return this.conversation().sendSession(session, text, imageIds, mode, signal);
1451
1580
  }
1452
1581
  /**
1453
1582
  * Steer every still-pending queued message into the running turn, in FIFO
@@ -2374,6 +2503,7 @@ window.__ModuleLoader__.load({
2374
2503
  //#region src/client/input/decorations.ts
2375
2504
  /** Token matcher: a trigger char at line start or after whitespace, then a word-ish name (never crosses \n). */
2376
2505
  const TEXT_REF_RE = /(^|\s)([/@])([\w-]+)/g;
2506
+ const FOLDER_REF_RE = /(^|\s)(@(?:"[^"\n]*\/|[^\s"]+\/))/g;
2377
2507
  /**
2378
2508
  * Scan the draft for plain-text reference tokens against the hot lexicons.
2379
2509
  * Word-boundary discipline: the trigger must sit at the draft
@@ -2384,23 +2514,38 @@ window.__ModuleLoader__.load({
2384
2514
  * @returns matched ranges in draft order.
2385
2515
  */
2386
2516
  function scanTextRefs(draft, lexicon) {
2387
- if (lexicon.size === 0 || draft === "") return [];
2517
+ if (draft === "") return [];
2388
2518
  const out = [];
2389
- TEXT_REF_RE.lastIndex = 0;
2390
- let m;
2391
- while ((m = TEXT_REF_RE.exec(draft)) !== null) {
2392
- const trigger = m[2];
2393
- const name = m[3] ?? "";
2394
- if (lexicon.get(trigger)?.includes(name)) {
2395
- const start = m.index + (m[1]?.length ?? 0);
2396
- out.push({
2397
- start,
2398
- end: start + 1 + name.length,
2399
- trigger
2400
- });
2519
+ if (lexicon.size > 0) {
2520
+ TEXT_REF_RE.lastIndex = 0;
2521
+ let m;
2522
+ while ((m = TEXT_REF_RE.exec(draft)) !== null) {
2523
+ const trigger = m[2];
2524
+ const name = m[3] ?? "";
2525
+ if (lexicon.get(trigger)?.includes(name)) {
2526
+ const start = m.index + (m[1]?.length ?? 0);
2527
+ out.push({
2528
+ start,
2529
+ end: start + 1 + name.length,
2530
+ trigger
2531
+ });
2532
+ }
2401
2533
  }
2402
2534
  }
2403
- return out;
2535
+ FOLDER_REF_RE.lastIndex = 0;
2536
+ let folder;
2537
+ while ((folder = FOLDER_REF_RE.exec(draft)) !== null) {
2538
+ const token = folder[2] ?? "";
2539
+ const start = folder.index + (folder[1]?.length ?? 0);
2540
+ const end = start + token.length;
2541
+ if (!out.some((range) => range.start < end && range.end > start)) out.push({
2542
+ start,
2543
+ end,
2544
+ trigger: "@",
2545
+ appearance: "folder"
2546
+ });
2547
+ }
2548
+ return out.sort((left, right) => left.start - right.start);
2404
2549
  }
2405
2550
  /** The empty lexicon (default: zero text-ref decorations, old call sites unchanged). */
2406
2551
  const EMPTY_LEXICON$1 = /* @__PURE__ */ new Map();
@@ -2420,7 +2565,10 @@ window.__ModuleLoader__.load({
2420
2565
  const chips = occurrences.map((o) => ({
2421
2566
  occurrenceId: o.occurrenceId,
2422
2567
  offset: o.offset,
2568
+ length: o.length,
2569
+ text: draft.slice(o.offset, o.offset + o.length),
2423
2570
  label: o.label,
2571
+ ...o.appearance === void 0 ? {} : { appearance: o.appearance },
2424
2572
  invalid: o.invalid === true
2425
2573
  }));
2426
2574
  const hint = claimActive && claim.hint !== void 0 && draft.slice(claim.token.length).trim() === "" ? claim.hint : null;
@@ -2457,6 +2605,9 @@ window.__ModuleLoader__.load({
2457
2605
  case "MODEL_DOES_NOT_SUPPORT_IMAGES": return t("image.modelUnsupported");
2458
2606
  case "SUBAGENT_IMAGE_UNSUPPORTED": return t("image.subagentUnsupported");
2459
2607
  case "IMAGE_TOO_MANY_PIXELS": return t("image.tooManyPixels");
2608
+ case "IMAGE_DIMENSION_TOO_LARGE":
2609
+ if (limits !== void 0) return t("image.dimensionTooLarge", { size: limits.maxImageDimension });
2610
+ break;
2460
2611
  case "INVALID_IMAGE":
2461
2612
  case "IMAGE_TYPE_MISMATCH": return t("image.unsupportedType");
2462
2613
  case "TOO_MANY_IMAGES":
@@ -2469,61 +2620,36 @@ window.__ModuleLoader__.load({
2469
2620
  }
2470
2621
  return t("image.sendFailed", { reason });
2471
2622
  }
2623
+ //#endregion
2624
+ //#region src/client/reference/ReferenceIcon.tsx
2472
2625
  /**
2473
- * Resolve the original-image lightbox strings.
2474
- * @param t - the conversation-namespace translate.
2475
- * @returns the lightbox dialog and close-control labels.
2476
- */
2477
- function lightboxLabels(t) {
2478
- return {
2479
- dialog: t("image.preview"),
2480
- close: t("image.closePreview")
2481
- };
2482
- }
2483
- /**
2484
- * Resolve the chat-history image strings.
2485
- * @param t - the conversation-namespace translate.
2486
- * @returns the message-image labels including the forwarded lightbox strings.
2487
- */
2488
- function messageImageLabels(t) {
2489
- return {
2490
- image: t("image.label"),
2491
- open: t("image.openOriginal"),
2492
- openNamed: (label) => t("image.openOriginalLabel", { label }),
2493
- loading: t("image.loading"),
2494
- loadFailed: t("image.loadFailed"),
2495
- lightbox: lightboxLabels(t)
2496
- };
2497
- }
2498
- /**
2499
- * Resolve the full-page drop overlay strings.
2500
- * @param t - the conversation-namespace translate.
2501
- * @param accepting - whether drops are currently accepted.
2502
- * @param limits - per-message limits for the desc line, when known.
2503
- * @returns the overlay title, with the limits desc while accepting.
2504
- */
2505
- function dropOverlayLabels(t, accepting, limits) {
2506
- if (!accepting) return { title: t("image.dropBlocked") };
2507
- return {
2508
- title: t("image.dropTitle"),
2509
- desc: limits === void 0 ? void 0 : t("image.dropDesc", {
2510
- count: limits.count,
2511
- size: limits.size
2512
- })
2513
- };
2514
- }
2515
- /**
2516
- * Resolve the composer draft-image rail strings.
2517
- * @param t - the conversation-namespace translate.
2518
- * @returns the rail group, open-tooltip, and paging-arrow labels.
2626
+ * Render the icon that identifies one inline reference domain.
2627
+ * @param props - Reference kind, optional size, and optional CSS class.
2628
+ * @returns The corresponding current-color SVG glyph.
2519
2629
  */
2520
- function attachmentRailLabels(t) {
2521
- return {
2522
- group: t("image.pending"),
2523
- open: t("image.openOriginal"),
2524
- scrollLeft: t("image.scrollLeft"),
2525
- scrollRight: t("image.scrollRight")
2526
- };
2630
+ function ReferenceIcon({ kind, size = 16, className }) {
2631
+ switch (kind) {
2632
+ case "session": return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
2633
+ width: size,
2634
+ height: size,
2635
+ className,
2636
+ viewBox: "0 0 16 16",
2637
+ fill: "none",
2638
+ "aria-hidden": true,
2639
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
2640
+ d: "M8 0.597656C3.91296 0.597656 0.599716 3.91103 0.599609 7.99805C0.599609 9.13171 0.854567 10.2079 1.31152 11.1699L1.59277 11.7607L2.77441 11.1992L2.49414 10.6084L2.36035 10.3076C2.06865 9.59612 1.90723 8.81645 1.90723 7.99805C1.90733 4.63362 4.63554 1.90625 8 1.90625C11.3644 1.90635 14.0917 4.63368 14.0918 7.99805C14.0918 11.3625 11.3644 14.0907 8 14.0908C7.311 14.0908 6.80642 14.0414 6.35938 13.918C5.919 13.7963 5.50105 13.5929 5.00098 13.2441C4.26805 12.7329 3.21756 12.5526 2.35156 13.0996L2.33789 13.1084L2.32422 13.1182L1.74805 13.5234L2.18164 14.8184L3.05957 14.2002C3.37505 14.0068 3.84248 14.0319 4.25195 14.3174C4.84447 14.7307 5.39718 15.009 6.01172 15.1787C6.61963 15.3465 7.25579 15.3984 8 15.3984C12.087 15.3983 15.4004 12.0851 15.4004 7.99805C15.4003 3.9111 12.087 0.59776 8 0.597656ZM4.56836 8.50977V9.80371H8.12402V8.50977H4.56836ZM4.56836 7.30078H11.4619V6.00684H4.56836V7.30078Z",
2641
+ fill: "currentColor"
2642
+ })
2643
+ });
2644
+ case "file": return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_xrkseek_client_ui_primitives.IconBrowseOutline16, {
2645
+ size,
2646
+ className
2647
+ });
2648
+ case "folder": return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_xrkseek_client_ui_primitives.IconFolderClose16, {
2649
+ size,
2650
+ className
2651
+ });
2652
+ }
2527
2653
  }
2528
2654
  //#endregion
2529
2655
  //#region src/client/chat/message-chrome.ts
@@ -2761,14 +2887,52 @@ window.__ModuleLoader__.load({
2761
2887
  const whole = Math.round(s);
2762
2888
  return `${Math.floor(whole / 60)}m${whole % 60}s`;
2763
2889
  }
2890
+ /** Round a cache-read ratio to an integer percentage, with positive ties rounded up. */
2891
+ function roundedIntegerPercent(cacheReadTokens, denominator) {
2892
+ const denominatorQuotient = Math.floor(denominator / 200);
2893
+ const denominatorRemainder = denominator % 200;
2894
+ let lower = 0;
2895
+ let upper = 100;
2896
+ while (lower < upper) {
2897
+ const candidate = Math.floor((lower + upper + 1) / 2);
2898
+ const factor = candidate * 2 - 1;
2899
+ if (cacheReadTokens >= factor * denominatorQuotient + Math.ceil(factor * denominatorRemainder / 200)) lower = candidate;
2900
+ else upper = candidate - 1;
2901
+ }
2902
+ return lower;
2903
+ }
2764
2904
  /**
2765
- * Cache-hit share of prompt-side input over the whole durable log.
2905
+ * Display-ready cache-hit share of prompt-side input over the whole durable log.
2766
2906
  * @param usage - the session's token-usage projection value.
2767
- * @returns rounded integer percent, or null when no input was billed.
2907
+ * @returns integer text when integer rounding stays below 100, otherwise the
2908
+ * minimum decimal precision that still rounds below 100; a full hit returns
2909
+ * 100, and no billed input returns null.
2768
2910
  */
2769
2911
  function cacheHitPercent(usage) {
2770
2912
  const denominator = billedInputTokens(usage);
2771
- return denominator === 0 ? null : Math.round(usage.cacheReadTokens / denominator * 100);
2913
+ if (denominator === 0) return null;
2914
+ const missedInputTokens = usage.uncachedInputTokens + usage.cacheWriteTokens;
2915
+ if (missedInputTokens === 0) return "100";
2916
+ const integerPercent = roundedIntegerPercent(usage.cacheReadTokens, denominator);
2917
+ if (integerPercent < 100) return String(integerPercent);
2918
+ let decimalPlaces = 1;
2919
+ let scaledDoubleGap = missedInputTokens * 200;
2920
+ const denominatorTens = Math.floor(denominator / 10);
2921
+ while (scaledDoubleGap <= denominatorTens) {
2922
+ scaledDoubleGap *= 10;
2923
+ decimalPlaces += 1;
2924
+ }
2925
+ const denominatorOnes = denominator % 10;
2926
+ let roundedLoss = 5;
2927
+ for (let loss = 1; loss < 5; loss += 1) {
2928
+ const factor = loss * 2 + 1;
2929
+ const threshold = factor * denominatorTens + Math.floor(factor * denominatorOnes / 10);
2930
+ if (scaledDoubleGap <= threshold) {
2931
+ roundedLoss = loss;
2932
+ break;
2933
+ }
2934
+ }
2935
+ return `99.${"9".repeat(decimalPlaces - 1)}${10 - roundedLoss}`;
2772
2936
  }
2773
2937
  /**
2774
2938
  * Sum the three disjoint prompt-side billing buckets.
@@ -2873,23 +3037,23 @@ window.__ModuleLoader__.load({
2873
3037
  document.head.appendChild(tag);
2874
3038
  }
2875
3039
  var ContextMeter_module_css_default = {
2876
- "header": "bloECW_header",
2877
- "panel": "bloECW_panel",
2878
- "swatch": "bloECW_swatch",
3040
+ "percent": "bloECW_percent",
3041
+ "row": "bloECW_row",
3042
+ "figures": "bloECW_figures",
3043
+ "bar": "bloECW_bar",
2879
3044
  "colorSystem": "bloECW_colorSystem",
2880
- "rows": "bloECW_rows",
3045
+ "colorMessages": "bloECW_colorMessages",
2881
3046
  "track": "bloECW_track",
2882
- "figures": "bloECW_figures",
2883
- "row": "bloECW_row",
2884
- "root": "bloECW_root",
3047
+ "swatch": "bloECW_swatch",
3048
+ "panel": "bloECW_panel",
2885
3049
  "trigger": "bloECW_trigger",
2886
3050
  "headline": "bloECW_headline",
2887
- "segment": "bloECW_segment",
2888
- "colorTools": "bloECW_colorTools",
2889
- "percent": "bloECW_percent",
2890
- "bar": "bloECW_bar",
3051
+ "rows": "bloECW_rows",
3052
+ "header": "bloECW_header",
2891
3053
  "fill": "bloECW_fill",
2892
- "colorMessages": "bloECW_colorMessages"
3054
+ "root": "bloECW_root",
3055
+ "colorTools": "bloECW_colorTools",
3056
+ "segment": "bloECW_segment"
2893
3057
  };
2894
3058
  //#endregion
2895
3059
  //#region src/client/skeleton/ContextMeter.tsx
@@ -3061,11 +3225,11 @@ window.__ModuleLoader__.load({
3061
3225
  document.head.appendChild(tag);
3062
3226
  }
3063
3227
  var PermissionSelect_module_css_default = {
3228
+ "trigger": "UJ7tKa_trigger",
3229
+ "chevron": "UJ7tKa_chevron",
3064
3230
  "triggerIcon": "UJ7tKa_triggerIcon",
3065
3231
  "triggerLabel": "UJ7tKa_triggerLabel",
3066
- "chevron": "UJ7tKa_chevron",
3067
- "chevronOpen": "UJ7tKa_chevronOpen",
3068
- "trigger": "UJ7tKa_trigger"
3232
+ "chevronOpen": "UJ7tKa_chevronOpen"
3069
3233
  };
3070
3234
  //#endregion
3071
3235
  //#region src/client/skeleton/PermissionSelect.tsx
@@ -3289,7 +3453,7 @@ window.__ModuleLoader__.load({
3289
3453
  }
3290
3454
  //#endregion
3291
3455
  //#region \0xrk-css:C:\Users\sunflowerss\Desktop\XRKgrocery\XRK-harness\packages\client\ui-conversation\src\client\skeleton\InputBar.module.css.mjs
3292
- const css$17 = "@font-face{font-family:DshChipCell;src:url(data:font/ttf;base64,AAEAAAAKAIAAAwAgT1MvMkT8SmIAAAEoAAAAYGNtYXAADQBPAAABkAAAADRnbHlmAAAAAAAAAcwAAAABaGVhZCwtPGoAAACsAAAANmhoZWEDIg7bAAAA5AAAACRobXR4EZQAAAAAAYgAAAAIbG9jYQAAAAAAAAHEAAAABm1heHAAAwACAAABCAAAACBuYW1lvljk2gAAAdAAAABscG9zdNNweNQAAAI8AAAALQABAAAAAQAAdia1tV8PPPUAAwPoAAAAAOaLfcUAAAAA5ot9xQAAAAAAAAAAAAAAAwACAAAAAAAAAAEAAAMg/zgAAA+gAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAEAAAACAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwjKAZAABQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAPz8/PwAA//z//AMg/zgAAAMgAMgAAAAAAAAAAAAAAAAAAAAgAAAB9AAAD6AAAAAAAAIAAAADAAAAFAADAAEAAAAUAAQAIAAAAAQABAABAAD//P//AAD//P//AAUAAQAAAAAAAAAAAAAAAAAAAAAAAAAEADYAAQAAAAAAAQALAAAAAQAAAAAAAgAHAAsAAwABBAkAAQAWABIAAwABBAkAAgAOAChEc2hDaGlwQ2VsbFJlZ3VsYXIARABzAGgAQwBoAGkAcABDAGUAbABsAFIAZQBnAHUAbABhAHIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAABAgZvYmpyZXAAAAA=)format(\"truetype\")}.QdFsVG_root{padding:0 var(--dsh-composer-side-clearance) 8px;flex-direction:column;align-items:center;display:flex}.QdFsVG_hero{padding:0 var(--dsh-composer-side-clearance)}.QdFsVG_notice{width:100%;max-width:var(--dsh-composer-card-max-width);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary);border-radius:8px;margin-bottom:6px;padding:4px 8px;font-size:12px;line-height:18px}.QdFsVG_noticeError{background:var(--dsw-alias-interactive-bg-hover-danger);color:var(--dsw-alias-state-error-primary)}.QdFsVG_card{box-sizing:border-box;width:100%;max-width:var(--dsh-composer-card-max-width);border:1px solid var(--dsw-alias-border-l2-darkmode-thin);background:var(--dsw-specific-input-major);box-shadow:var(--dsw-shadow-lv2);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);border-radius:22px;flex-direction:column;gap:12px;padding-top:10px;font-size:16px;line-height:24px;display:flex;position:relative}.QdFsVG_cardWorkspaceTrigger{cursor:pointer;border-color:#0000}.QdFsVG_cardWorkspaceTrigger:after{content:\"\";background:var(--dsw-alias-border-l4);pointer-events:none;border-radius:22px;transition:background-color .1s;position:absolute;inset:-1px;-webkit-mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='100%25' height='100%25' fill='none' rx='22' ry='22' stroke='black' stroke-width='2' stroke-dasharray='4 4'/%3E%3C/svg%3E\");mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='100%25' height='100%25' fill='none' rx='22' ry='22' stroke='black' stroke-width='2' stroke-dasharray='4 4'/%3E%3C/svg%3E\")}.QdFsVG_cardWorkspaceTrigger :disabled{pointer-events:none}.QdFsVG_cardWorkspaceTrigger:hover:after{background:var(--dsw-alias-state-business-primary)}.QdFsVG_accessory{align-items:center;gap:8px;padding:10px 12px 0;display:flex}.QdFsVG_attachments{min-width:0;padding:4px 12px 0}.QdFsVG_overlayAnchor{height:0;position:absolute;inset:0 0 auto}.QdFsVG_scroll{max-height:var(--dsh-composer-text-max-height);overflow-y:auto}.QdFsVG_grow{position:relative}.QdFsVG_backdrop{color:var(--dsw-alias-label-primary);pointer-events:none;position:absolute;inset:0;overflow:hidden}.QdFsVG_hlToken{color:var(--dsw-alias-state-warn-label);background-color:#0000}.QdFsVG_hlSegment{color:#0000;background-color:#0000;border-radius:4px}.QdFsVG_hint{color:var(--dsw-alias-label-caption)}.QdFsVG_pending{background:var(--dsw-alias-state-business-primary);border-radius:50%;width:8px;height:8px;animation:1s ease-in-out infinite alternate QdFsVG_input-pending}@keyframes QdFsVG_input-pending{0%{opacity:.35}to{opacity:1}}.QdFsVG_input{resize:none;color:#0000;width:100%;height:100%;caret-color:var(--dsw-alias-state-business-primary);background:0 0;border:none;outline:none;position:absolute;inset:0;overflow:hidden}.QdFsVG_input,.QdFsVG_mirror,.QdFsVG_backdrop{box-sizing:border-box;font-family:\"DshChipCell\", var(--dsw-font-family);font-size:inherit;line-height:inherit;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;padding:4px 12px 0 16px}.QdFsVG_input::placeholder{color:var(--dsw-alias-label-caption);user-select:none}.QdFsVG_input:disabled{color:var(--dsw-alias-label-tertiary);cursor:not-allowed}.QdFsVG_input[aria-haspopup=menu]{cursor:pointer}.QdFsVG_mirror{visibility:hidden;pointer-events:none}.QdFsVG_hero .QdFsVG_mirror{min-height:52px}.QdFsVG_row{justify-content:space-between;align-items:center;gap:12px;min-width:0;padding:2px 8px 6px;display:flex;container-type:inline-size}.QdFsVG_tools,.QdFsVG_modes,.QdFsVG_trailing{align-items:center;min-width:0;display:flex}.QdFsVG_tools{gap:16px}.QdFsVG_modes{gap:12px}.QdFsVG_trailing{flex:none;gap:12px}.QdFsVG_add{background:var(--dsw-specific-selector);width:28px;height:28px;color:var(--dsw-alias-label-primary);cursor:pointer;border:none;border-radius:999px;flex:none;place-items:center;display:grid}.QdFsVG_add:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-solid)}.QdFsVG_add:disabled{opacity:.5;cursor:default}.QdFsVG_select{max-width:220px;height:28px;color:var(--dsw-alias-label-secondary);white-space:nowrap;cursor:pointer;appearance:none;background-color:#0000;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' stroke='%2381858C' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");background-position:right 4px center;background-repeat:no-repeat;background-size:12px 12px;border:none;border-radius:8px;outline:none;padding:0 20px 0 8px;font-size:13px;font-weight:500;line-height:20px}.QdFsVG_select:hover:not(:disabled){background-color:var(--dsw-alias-interactive-bg-hover)}.QdFsVG_select:disabled{opacity:.5;cursor:default}.QdFsVG_primary{background:var(--dsw-alias-button-info-fill);color:#fff;cursor:pointer;border:none;border-radius:999px;flex:none;place-items:center;width:34px;height:34px;transition:background-color .1s;display:grid;transform:translateY(-2px)}.QdFsVG_primary:hover:not(:disabled){background:var(--dsw-alias-button-info-hover)}.QdFsVG_primary:disabled{opacity:.4;cursor:default}.QdFsVG_retry{color:inherit;cursor:pointer;background:0 0;border:1px solid;border-radius:4px;margin-left:8px;padding:1px 8px;font-size:12px}.QdFsVG_textRef{color:var(--dsw-alias-state-business-primary);-webkit-box-decoration-break:clone;box-decoration-break:clone;background-color:#0000}.QdFsVG_textRef:after{display:none}.QdFsVG_chip{background:#6187d838;border-radius:6px;position:relative}.QdFsVG_chip:before{content:\"\";color:#0000}.QdFsVG_chipLabel{width:calc(138.889% - 10px);color:var(--dsw-alias-label-primary);white-space:nowrap;justify-content:center;align-items:center;display:flex;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)scale(.72)}.QdFsVG_chipInvalid{opacity:.7;background:#d8616133;text-decoration:line-through}";
3456
+ const css$17 = ".QdFsVG_root{padding:0 var(--dsh-composer-side-clearance) 8px;flex-direction:column;align-items:center;display:flex}.QdFsVG_hero{padding:0 var(--dsh-composer-side-clearance)}.QdFsVG_notice{width:100%;max-width:var(--dsh-composer-card-max-width);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary);border-radius:8px;margin-bottom:6px;padding:4px 8px;font-size:12px;line-height:18px}.QdFsVG_card{box-sizing:border-box;width:100%;max-width:var(--dsh-composer-card-max-width);border:1px solid var(--dsw-alias-border-l2-darkmode-thin);background:var(--dsw-specific-input-major);box-shadow:var(--dsw-shadow-lv2);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);border-radius:22px;flex-direction:column;gap:12px;padding-top:10px;font-size:16px;line-height:24px;display:flex;position:relative}.QdFsVG_cardWorkspaceTrigger{cursor:pointer;border-color:#0000}.QdFsVG_cardWorkspaceTrigger:after{content:\"\";background:var(--dsw-alias-border-l4);pointer-events:none;border-radius:22px;transition:background-color .1s;position:absolute;inset:-1px;-webkit-mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='100%25' height='100%25' fill='none' rx='22' ry='22' stroke='black' stroke-width='2' stroke-dasharray='4 4'/%3E%3C/svg%3E\");mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='100%25' height='100%25' fill='none' rx='22' ry='22' stroke='black' stroke-width='2' stroke-dasharray='4 4'/%3E%3C/svg%3E\")}.QdFsVG_cardWorkspaceTrigger :disabled{pointer-events:none}.QdFsVG_cardWorkspaceTrigger:hover:after{background:var(--dsw-alias-state-business-primary)}.QdFsVG_accessory{align-items:center;gap:8px;padding:10px 12px 0;display:flex}.QdFsVG_overlayAnchor{height:0;position:absolute;inset:0 0 auto}.QdFsVG_scroll{max-height:var(--dsh-composer-text-max-height);overflow-y:auto}.QdFsVG_grow{position:relative}.QdFsVG_backdrop{color:var(--dsw-alias-label-primary);pointer-events:none;position:absolute;inset:0;overflow:hidden}.QdFsVG_backdropDisabled,.QdFsVG_backdropDisabled :is(.QdFsVG_hlToken,.QdFsVG_hint,.QdFsVG_textRef,.QdFsVG_chip,.QdFsVG_chipInvalid){color:var(--dsw-alias-label-tertiary)}.QdFsVG_hlToken{color:var(--dsw-alias-state-warn-label);background-color:#0000}.QdFsVG_hlSegment{color:#0000;background-color:#0000;border-radius:4px}.QdFsVG_hint{color:var(--dsw-alias-label-caption)}.QdFsVG_pending{background:var(--dsw-alias-state-business-primary);border-radius:50%;width:8px;height:8px;animation:1s ease-in-out infinite alternate QdFsVG_input-pending}@keyframes QdFsVG_input-pending{0%{opacity:.35}to{opacity:1}}.QdFsVG_input{resize:none;color:#0000;-webkit-text-fill-color:transparent;width:100%;height:100%;caret-color:var(--dsw-alias-state-business-primary);background:0 0;border:none;outline:none;position:absolute;inset:0;overflow:hidden}.QdFsVG_input,.QdFsVG_mirror,.QdFsVG_backdrop{box-sizing:border-box;font-family:var(--dsw-font-family);font-size:inherit;line-height:inherit;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;padding:4px 12px 0 16px}.QdFsVG_input::placeholder{color:var(--dsw-alias-label-caption);-webkit-text-fill-color:var(--dsw-alias-label-caption);user-select:none}.QdFsVG_input:disabled{color:#0000;-webkit-text-fill-color:transparent;cursor:not-allowed}.QdFsVG_input[aria-haspopup=menu]{cursor:pointer}.QdFsVG_mirror{visibility:hidden;pointer-events:none}.QdFsVG_hero .QdFsVG_mirror{min-height:52px}.QdFsVG_row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;min-width:0;padding:2px 8px 6px;display:flex;container-type:inline-size}.QdFsVG_tools,.QdFsVG_modes,.QdFsVG_trailing{align-items:center;min-width:0;display:flex}.QdFsVG_tools{gap:16px}.QdFsVG_modes{gap:12px}.QdFsVG_trailing{flex:none;gap:12px;margin-left:auto}.QdFsVG_add{background:var(--dsw-specific-selector);width:28px;height:28px;color:var(--dsw-alias-label-primary);cursor:pointer;border:none;border-radius:999px;flex:none;place-items:center;display:grid}.QdFsVG_add:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-solid)}.QdFsVG_add:disabled{opacity:.5;cursor:default}.QdFsVG_select{max-width:220px;height:28px;color:var(--dsw-alias-label-secondary);white-space:nowrap;cursor:pointer;appearance:none;background-color:#0000;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' stroke='%2381858C' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");background-position:right 4px center;background-repeat:no-repeat;background-size:12px 12px;border:none;border-radius:8px;outline:none;padding:0 20px 0 8px;font-size:13px;font-weight:500;line-height:20px}.QdFsVG_select:hover:not(:disabled){background-color:var(--dsw-alias-interactive-bg-hover)}.QdFsVG_select:disabled{opacity:.5;cursor:default}.QdFsVG_primary{background:var(--dsw-alias-button-info-fill);color:#fff;cursor:pointer;border:none;border-radius:999px;flex:none;place-items:center;width:34px;height:34px;transition:background-color .1s;display:grid;transform:translateY(-2px)}.QdFsVG_primary:hover:not(:disabled){background:var(--dsw-alias-button-info-hover)}.QdFsVG_primary:disabled{opacity:.4;cursor:default}.QdFsVG_retry{color:inherit;cursor:pointer;background:0 0;border:1px solid;border-radius:4px;margin-left:8px;padding:1px 8px;font-size:12px}.QdFsVG_textRef{color:var(--dsw-alias-state-business-primary);-webkit-box-decoration-break:clone;box-decoration-break:clone;background-color:#0000}.QdFsVG_textRef:after{display:none}.QdFsVG_textRefTrigger{position:relative}.QdFsVG_textRefTriggerGlyph{color:#0000}.QdFsVG_textRefIcon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.QdFsVG_chip{color:var(--dsw-alias-state-business-primary);-webkit-box-decoration-break:clone;box-decoration-break:clone;background:0 0;position:relative}.QdFsVG_chipTrigger{position:relative}.QdFsVG_chipTriggerGlyph{color:#0000}.QdFsVG_chipIcon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.QdFsVG_chipInvalid{opacity:.7;color:var(--dsw-alias-state-error-primary);text-decoration:line-through}";
3293
3457
  const tagId$17 = "@xrkseek/client-ui-conversation/InputBar.module.css";
3294
3458
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$17) + "]") === null) {
3295
3459
  const tag = document.createElement("style");
@@ -3299,37 +3463,41 @@ window.__ModuleLoader__.load({
3299
3463
  document.head.appendChild(tag);
3300
3464
  }
3301
3465
  var InputBar_module_css_default = {
3302
- "tools": "QdFsVG_tools",
3303
- "input": "QdFsVG_input",
3466
+ "backdropDisabled": "QdFsVG_backdropDisabled",
3467
+ "hlToken": "QdFsVG_hlToken",
3468
+ "backdrop": "QdFsVG_backdrop",
3304
3469
  "textRef": "QdFsVG_textRef",
3305
- "chipInvalid": "QdFsVG_chipInvalid",
3306
- "input-pending": "QdFsVG_input-pending",
3307
- "noticeError": "QdFsVG_noticeError",
3308
- "trailing": "QdFsVG_trailing",
3309
3470
  "retry": "QdFsVG_retry",
3310
- "hint": "QdFsVG_hint",
3471
+ "textRefIcon": "QdFsVG_textRefIcon",
3472
+ "card": "QdFsVG_card",
3473
+ "chipIcon": "QdFsVG_chipIcon",
3311
3474
  "add": "QdFsVG_add",
3475
+ "tools": "QdFsVG_tools",
3476
+ "select": "QdFsVG_select",
3312
3477
  "chip": "QdFsVG_chip",
3313
- "modes": "QdFsVG_modes",
3478
+ "chipInvalid": "QdFsVG_chipInvalid",
3479
+ "input-pending": "QdFsVG_input-pending",
3314
3480
  "grow": "QdFsVG_grow",
3315
- "primary": "QdFsVG_primary",
3316
- "backdrop": "QdFsVG_backdrop",
3317
- "row": "QdFsVG_row",
3481
+ "textRefTriggerGlyph": "QdFsVG_textRefTriggerGlyph",
3482
+ "chipTrigger": "QdFsVG_chipTrigger",
3318
3483
  "cardWorkspaceTrigger": "QdFsVG_cardWorkspaceTrigger",
3484
+ "input": "QdFsVG_input",
3485
+ "mirror": "QdFsVG_mirror",
3486
+ "chipTriggerGlyph": "QdFsVG_chipTriggerGlyph",
3487
+ "hint": "QdFsVG_hint",
3488
+ "root": "QdFsVG_root",
3319
3489
  "hlSegment": "QdFsVG_hlSegment",
3320
- "chipLabel": "QdFsVG_chipLabel",
3321
- "notice": "QdFsVG_notice",
3490
+ "hero": "QdFsVG_hero",
3322
3491
  "accessory": "QdFsVG_accessory",
3323
- "scroll": "QdFsVG_scroll",
3492
+ "modes": "QdFsVG_modes",
3493
+ "trailing": "QdFsVG_trailing",
3494
+ "row": "QdFsVG_row",
3495
+ "textRefTrigger": "QdFsVG_textRefTrigger",
3324
3496
  "overlayAnchor": "QdFsVG_overlayAnchor",
3325
- "mirror": "QdFsVG_mirror",
3326
- "hlToken": "QdFsVG_hlToken",
3327
- "select": "QdFsVG_select",
3328
- "card": "QdFsVG_card",
3497
+ "primary": "QdFsVG_primary",
3329
3498
  "pending": "QdFsVG_pending",
3330
- "attachments": "QdFsVG_attachments",
3331
- "root": "QdFsVG_root",
3332
- "hero": "QdFsVG_hero"
3499
+ "scroll": "QdFsVG_scroll",
3500
+ "notice": "QdFsVG_notice"
3333
3501
  };
3334
3502
  //#endregion
3335
3503
  //#region src/client/skeleton/InputBar.tsx
@@ -3347,6 +3515,41 @@ window.__ModuleLoader__.load({
3347
3515
  textRefs: [],
3348
3516
  hint: null
3349
3517
  };
3518
+ /**
3519
+ * Resolve one edit's range from the record taken before it applied.
3520
+ * A selection the edit replaces is the range outright. A caret delete replaces
3521
+ * nothing and reports the bare caret, so the removed span is whatever the draft
3522
+ * lost, on the side `inputType` names — measured, because one caret gesture can
3523
+ * remove a multi-unit grapheme, a word, or a line.
3524
+ * @param pending - record taken at `beforeinput`, null when none was seen.
3525
+ * @param prevLength - length of the draft the edit applied to.
3526
+ * @param nextLength - length of the resulting draft.
3527
+ * @returns the exact range, or undefined when the record cannot describe this
3528
+ * edit and the machine's diff scan has to recover it.
3529
+ */
3530
+ function editRangeOf(pending, prevLength, nextLength) {
3531
+ if (pending === null || pending.draftLength !== prevLength) return void 0;
3532
+ const { start, end, inputType } = pending;
3533
+ if (start > end || end > prevLength) return void 0;
3534
+ const insertedLength = nextLength - prevLength + (end - start);
3535
+ if (insertedLength >= 0) return {
3536
+ start,
3537
+ end,
3538
+ insertedLength
3539
+ };
3540
+ if (start !== end) return void 0;
3541
+ const removed = prevLength - nextLength;
3542
+ if (inputType.endsWith("Backward")) return removed <= start ? {
3543
+ start: start - removed,
3544
+ end: start,
3545
+ insertedLength: 0
3546
+ } : void 0;
3547
+ if (inputType.endsWith("Forward")) return start + removed <= prevLength ? {
3548
+ start,
3549
+ end: start + removed,
3550
+ insertedLength: 0
3551
+ } : void 0;
3552
+ }
3350
3553
  function InputBar({ useSession, useInput, inputActions, keyboard, addImages, removeImage, draftImages, resolveSubmitMode, toggleCommandMenu, stop, command, t, renderSlot, useNotices, useLexicon, useMenuLauncher, useProjection, sessionId, variant, disabled: inert = false, blocked, workspacePickerOpen = false, onRequestWorkspace, placeholder, accessory, overlay, leftItems, rightItems, footer }) {
3351
3554
  const input = useInput((s) => s);
3352
3555
  const notice = useNotices((s) => s);
@@ -3362,8 +3565,6 @@ window.__ModuleLoader__.load({
3362
3565
  const draft = input?.draft ?? "";
3363
3566
  const attachments = (0, react.useMemo)(() => input === void 0 || draftImages === void 0 ? [] : draftImages(input.imageIds), [draftImages, input?.imageIds]);
3364
3567
  const empty = draft.trim() === "" && attachments.length === 0;
3365
- const [preview, setPreview] = (0, react.useState)(null);
3366
- const [dragActive, setDragActive] = (0, react.useState)(false);
3367
3568
  const [toast, setToast] = (0, react.useState)(null);
3368
3569
  const toastSeq = (0, react.useRef)(0);
3369
3570
  const showToast = (0, react.useCallback)((text) => {
@@ -3386,9 +3587,11 @@ window.__ModuleLoader__.load({
3386
3587
  t,
3387
3588
  imageLimits
3388
3589
  ]);
3590
+ (0, react.useEffect)(() => {
3591
+ if (notice?.level === "error") showToast(notice.text);
3592
+ }, [notice, showToast]);
3389
3593
  const inputRef = (0, react.useRef)(null);
3390
3594
  const cardRef = (0, react.useRef)(null);
3391
- const dragDepthRef = (0, react.useRef)(0);
3392
3595
  const scrollRef = (0, react.useRef)(null);
3393
3596
  const mirrorRef = (0, react.useRef)(null);
3394
3597
  const safari = (0, react.useMemo)(() => isSafariBrowser(navigator), []);
@@ -3411,7 +3614,7 @@ window.__ModuleLoader__.load({
3411
3614
  const machineBusy = input?.phase === "adjudicating" || input?.phase === "submitting";
3412
3615
  const workspaceTrigger = inert && !removed && onRequestWorkspace !== void 0;
3413
3616
  const textareaDisabled = removed || locked && !workspaceTrigger;
3414
- const canSteerQueue = !locked && !machineBusy && !commandMenuOpen && empty && running && subagent === null && (input?.queue.some((row) => row.placement === "queued") ?? false);
3617
+ const canSteerQueue = !locked && !machineBusy && !commandMenuOpen && empty && running && subagent === null && input.queue.some((row) => row.placement === "queued");
3415
3618
  (0, react.useEffect)(() => {
3416
3619
  if (input === void 0 || inputActions === void 0) return;
3417
3620
  if (attachments.length !== input.imageIds.length) inputActions.pruneImages(attachments.map((attachment) => attachment.id));
@@ -3425,9 +3628,6 @@ window.__ModuleLoader__.load({
3425
3628
  safariNativeShrinkRef.current = false;
3426
3629
  if (safari && nativeShrink) repairSafariTextareaLayout(inputRef.current);
3427
3630
  }, [draft, safari]);
3428
- (0, react.useEffect)(() => {
3429
- if (preview !== null && !attachments.some((attachment) => attachment.id === preview.id)) setPreview(null);
3430
- }, [attachments, preview]);
3431
3631
  const revealCaret = (caret) => {
3432
3632
  const scrollEl = scrollRef.current;
3433
3633
  const mirrorEl = mirrorRef.current;
@@ -3484,6 +3684,32 @@ window.__ModuleLoader__.load({
3484
3684
  el.removeEventListener("wheel", onWheel);
3485
3685
  };
3486
3686
  }, []);
3687
+ const selectionOf = (el) => ({
3688
+ start: el.selectionStart ?? 0,
3689
+ end: el.selectionEnd ?? el.selectionStart ?? 0
3690
+ });
3691
+ const pendingEditRef = (0, react.useRef)(null);
3692
+ (0, react.useEffect)(() => {
3693
+ const el = inputRef.current;
3694
+ if (el === null) return;
3695
+ const onBeforeInput = (e) => {
3696
+ if (!e.inputType.startsWith("insert") && !e.inputType.startsWith("delete")) {
3697
+ pendingEditRef.current = null;
3698
+ return;
3699
+ }
3700
+ const { start, end } = selectionOf(el);
3701
+ pendingEditRef.current = {
3702
+ start,
3703
+ end,
3704
+ draftLength: el.value.length,
3705
+ inputType: e.inputType
3706
+ };
3707
+ };
3708
+ el.addEventListener("beforeinput", onBeforeInput);
3709
+ return () => {
3710
+ el.removeEventListener("beforeinput", onBeforeInput);
3711
+ };
3712
+ }, []);
3487
3713
  const onKeyDown = (e) => {
3488
3714
  if (workspaceTrigger) {
3489
3715
  if (e.key === "Enter" || e.key === " ") {
@@ -3492,9 +3718,28 @@ window.__ModuleLoader__.load({
3492
3718
  }
3493
3719
  return;
3494
3720
  }
3495
- if (keyboard === void 0 || inputActions === void 0) return;
3721
+ if (input === void 0 || keyboard === void 0 || inputActions === void 0) return;
3496
3722
  if (e.key === "Enter" && e.shiftKey) return;
3497
3723
  const composing = composingRef.current || e.nativeEvent.isComposing || e.nativeEvent.keyCode === 229;
3724
+ if (!composing && !machineBusy && !locked && (e.key === "Backspace" || e.key === "Delete")) {
3725
+ const selection = selectionOf(e.currentTarget);
3726
+ if (selection.start === selection.end) {
3727
+ const occurrence = input.occurrences.find((o) => e.key === "Backspace" ? o.offset + o.length === selection.start : o.offset === selection.start);
3728
+ if (occurrence !== void 0) {
3729
+ e.preventDefault();
3730
+ const start = occurrence.offset;
3731
+ const end = occurrence.offset + occurrence.length;
3732
+ keyboard.setDraft(draft.slice(0, start) + draft.slice(end), {
3733
+ start,
3734
+ end,
3735
+ insertedLength: 0
3736
+ });
3737
+ restoreCaret(e.currentTarget, start);
3738
+ keyboard.track(keyboard.snapshot.draft, start);
3739
+ return;
3740
+ }
3741
+ }
3742
+ }
3498
3743
  if (e.key === "ArrowUp" || e.key === "ArrowDown") {
3499
3744
  if (keyboard.arbitrate(e.key === "ArrowUp" ? "up" : "down", composing) === "consumed") e.preventDefault();
3500
3745
  return;
@@ -3526,7 +3771,7 @@ window.__ModuleLoader__.load({
3526
3771
  if (e.repeat) return;
3527
3772
  if (locked || machineBusy) return;
3528
3773
  const accelerated = e.ctrlKey || e.metaKey;
3529
- if (canSteerQueue) {
3774
+ if (accelerated && canSteerQueue) {
3530
3775
  keyboard.steerQueue();
3531
3776
  return;
3532
3777
  }
@@ -3536,38 +3781,37 @@ window.__ModuleLoader__.load({
3536
3781
  if (keyboard === void 0 || locked) return;
3537
3782
  if (machineBusy) return;
3538
3783
  const next = e.target.value;
3784
+ const pending = pendingEditRef.current;
3785
+ pendingEditRef.current = null;
3539
3786
  safariNativeShrinkRef.current = safari && next.length < draft.length;
3540
- keyboard.setDraft(next);
3787
+ keyboard.setDraft(next, editRangeOf(pending, draft.length, next.length));
3541
3788
  keyboard.track(next, e.target.selectionStart ?? next.length);
3542
3789
  };
3543
- const selectionOf = (el) => ({
3544
- start: el.selectionStart ?? 0,
3545
- end: el.selectionEnd ?? el.selectionStart ?? 0
3546
- });
3547
3790
  const onCopyOrCut = (e, cut) => {
3548
3791
  if (input === void 0 || keyboard === void 0) return;
3549
3792
  const el = e.currentTarget;
3550
3793
  const { start, end } = selectionOf(el);
3551
3794
  if (start === end) return;
3552
- draft.slice(start, end);
3553
- const touched = input.occurrences.filter((o) => o.offset >= start && o.offset < end);
3795
+ const touched = input.occurrences.filter((o) => o.offset < end && o.offset + o.length > start);
3554
3796
  if (touched.length === 0 && !cut) return;
3555
3797
  e.preventDefault();
3798
+ const copyStart = touched.reduce((value, o) => Math.min(value, o.offset), start);
3799
+ const copyEnd = touched.reduce((value, o) => Math.max(value, o.offset + o.length), end);
3556
3800
  let text = "";
3557
- let cursor = start;
3801
+ let cursor = copyStart;
3558
3802
  for (const o of touched) {
3559
3803
  text += draft.slice(cursor, o.offset) + o.clipboardText;
3560
- cursor = o.offset + 1;
3804
+ cursor = o.offset + o.length;
3561
3805
  }
3562
- text += draft.slice(cursor, end);
3806
+ text += draft.slice(cursor, copyEnd);
3563
3807
  e.clipboardData.setData("text/plain", text);
3564
3808
  if (cut && !machineBusy && !locked) {
3565
- keyboard.setDraft(draft.slice(0, start) + draft.slice(end), {
3566
- start,
3567
- end,
3809
+ keyboard.setDraft(draft.slice(0, copyStart) + draft.slice(copyEnd), {
3810
+ start: copyStart,
3811
+ end: copyEnd,
3568
3812
  insertedLength: 0
3569
3813
  });
3570
- restoreCaret(el, start);
3814
+ restoreCaret(el, copyStart);
3571
3815
  }
3572
3816
  };
3573
3817
  const onPaste = (e) => {
@@ -3608,60 +3852,6 @@ window.__ModuleLoader__.load({
3608
3852
  t
3609
3853
  ]);
3610
3854
  const canAcceptDrop = !locked && !machineBusy && addImages !== void 0;
3611
- (0, react.useEffect)(() => {
3612
- const hasFiles = (event) => event.dataTransfer?.types.includes("Files") ?? false;
3613
- const reset = () => {
3614
- dragDepthRef.current = 0;
3615
- setDragActive(false);
3616
- };
3617
- const onDragEnter = (event) => {
3618
- if (!hasFiles(event)) return;
3619
- event.preventDefault();
3620
- dragDepthRef.current += 1;
3621
- setDragActive(true);
3622
- };
3623
- const onDragOver = (event) => {
3624
- if (!hasFiles(event) || event.dataTransfer === null) return;
3625
- event.preventDefault();
3626
- event.dataTransfer.dropEffect = canAcceptDrop ? "copy" : "none";
3627
- };
3628
- const onDragLeave = (event) => {
3629
- if (!hasFiles(event)) return;
3630
- dragDepthRef.current = Math.max(0, dragDepthRef.current - 1);
3631
- if (dragDepthRef.current === 0) setDragActive(false);
3632
- const leavingViewport = event.clientX <= 0 || event.clientY <= 0 || event.clientX >= window.innerWidth || event.clientY >= window.innerHeight;
3633
- if ((event.target === document.documentElement || event.target === document.body) && leavingViewport) reset();
3634
- };
3635
- const onDrop = (event) => {
3636
- if (!hasFiles(event)) return;
3637
- event.preventDefault();
3638
- reset();
3639
- if (!canAcceptDrop) return;
3640
- intakeImages([...event.dataTransfer?.files ?? []]);
3641
- };
3642
- document.addEventListener("dragenter", onDragEnter);
3643
- document.addEventListener("dragover", onDragOver);
3644
- document.addEventListener("dragleave", onDragLeave);
3645
- document.addEventListener("drop", onDrop);
3646
- window.addEventListener("dragend", reset);
3647
- return () => {
3648
- document.removeEventListener("dragenter", onDragEnter);
3649
- document.removeEventListener("dragover", onDragOver);
3650
- document.removeEventListener("dragleave", onDragLeave);
3651
- document.removeEventListener("drop", onDrop);
3652
- window.removeEventListener("dragend", reset);
3653
- };
3654
- }, [canAcceptDrop, intakeImages]);
3655
- const closePreview = (0, react.useCallback)(() => {
3656
- setPreview(null);
3657
- }, []);
3658
- const railItems = (0, react.useMemo)(() => attachments.map((attachment) => ({
3659
- id: attachment.id,
3660
- previewUrl: attachment.previewUrl,
3661
- alt: attachment.file.name || t("image.pending"),
3662
- removeLabel: t("image.remove", { name: attachment.file.name }),
3663
- attachment
3664
- })), [attachments, t]);
3665
3855
  const onSelect = (e) => {
3666
3856
  if (keyboard !== void 0 && keyboard.snapshot.paste !== void 0) keyboard.invalidatePaste();
3667
3857
  };
@@ -3711,34 +3901,54 @@ window.__ModuleLoader__.load({
3711
3901
  at: chip.offset,
3712
3902
  kind: "chip",
3713
3903
  chip
3714
- })), ...deco.textRefs.map((ref) => ({
3904
+ })), ...deco.textRefs.map((ref, ordinal) => ({
3715
3905
  at: ref.start,
3716
3906
  kind: "text-ref",
3717
- ref
3907
+ ref,
3908
+ ordinal
3718
3909
  }))].sort((a, b) => a.at - b.at);
3719
3910
  for (const b of boundaries) {
3720
3911
  if (b.at < cursor) continue;
3721
3912
  pushPlain(b.at);
3722
3913
  if (b.kind === "chip") {
3723
3914
  const chip = b.chip;
3724
- backdrop.push(/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3915
+ backdrop.push(/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
3725
3916
  className: clsx(InputBar_module_css_default.chip, chip.invalid && InputBar_module_css_default.chipInvalid),
3726
3917
  "data-decoration": "chip",
3918
+ "data-reference-appearance": chip.appearance,
3727
3919
  "data-occurrence": chip.occurrenceId,
3728
3920
  "data-invalid": chip.invalid || void 0,
3729
3921
  title: chip.label,
3730
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3731
- className: InputBar_module_css_default.chipLabel,
3732
- children: chip.label
3733
- })
3922
+ children: [chip.appearance === void 0 ? chip.text[0] : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
3923
+ className: InputBar_module_css_default.chipTrigger,
3924
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3925
+ className: InputBar_module_css_default.chipTriggerGlyph,
3926
+ children: chip.text[0]
3927
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ReferenceIcon, {
3928
+ kind: chip.appearance,
3929
+ size: 16,
3930
+ className: InputBar_module_css_default.chipIcon
3931
+ })]
3932
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: chip.text.slice(1) })]
3734
3933
  }, `chip-${chip.occurrenceId}`));
3735
- cursor = chip.offset + 1;
3934
+ cursor = chip.offset + chip.length;
3736
3935
  } else {
3936
+ const text = draft.slice(b.ref.start, b.ref.end);
3737
3937
  backdrop.push(/* @__PURE__ */ (0, react_jsx_runtime.jsx)("mark", {
3738
3938
  className: InputBar_module_css_default.textRef,
3739
3939
  "data-decoration": "text-ref",
3740
- children: draft.slice(b.ref.start, b.ref.end)
3741
- }, `ref-${b.ref.start}`));
3940
+ children: b.ref.appearance === "folder" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
3941
+ className: InputBar_module_css_default.textRefTrigger,
3942
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3943
+ className: InputBar_module_css_default.textRefTriggerGlyph,
3944
+ children: text[0]
3945
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ReferenceIcon, {
3946
+ kind: "folder",
3947
+ size: 16,
3948
+ className: InputBar_module_css_default.textRefIcon
3949
+ })]
3950
+ }), text.slice(1)] }) : text
3951
+ }, `ref-${b.ordinal}`));
3742
3952
  cursor = b.ref.end;
3743
3953
  }
3744
3954
  }
@@ -3758,21 +3968,14 @@ window.__ModuleLoader__.load({
3758
3968
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3759
3969
  className: clsx(InputBar_module_css_default.root, variant === "hero" && InputBar_module_css_default.hero),
3760
3970
  children: [
3761
- dragActive && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_xrkseek_client_ui_attachment.DropOverlay, {
3762
- disabled: !canAcceptDrop,
3763
- labels: dropOverlayLabels(t, canAcceptDrop, imageLimits === void 0 ? void 0 : {
3764
- count: imageLimits.maxImagesPerMessage,
3765
- size: imageSizeText(imageLimits.maxImageBytes)
3766
- })
3767
- }),
3768
3971
  toast !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_xrkseek_client_ui_primitives.Toast, {
3769
3972
  text: toast.text,
3770
3973
  icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_xrkseek_client_ui_primitives.IconWarningOutline16, {}),
3771
3974
  anchor: cardRef.current,
3772
3975
  onDone: dismissToast
3773
3976
  }, toast.seq),
3774
- notice !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
3775
- className: clsx(InputBar_module_css_default.notice, notice.level === "error" && InputBar_module_css_default.noticeError),
3977
+ notice?.level === "info" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
3978
+ className: InputBar_module_css_default.notice,
3776
3979
  role: "status",
3777
3980
  children: notice.text
3778
3981
  }),
@@ -3793,18 +3996,17 @@ window.__ModuleLoader__.load({
3793
3996
  className: InputBar_module_css_default.accessory,
3794
3997
  children: accessory
3795
3998
  }),
3796
- railItems.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
3797
- className: InputBar_module_css_default.attachments,
3798
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_xrkseek_client_ui_attachment.AttachmentRail, {
3799
- items: railItems,
3800
- labels: attachmentRailLabels(t),
3801
- onOpen: (item) => {
3802
- setPreview(item.attachment);
3803
- },
3804
- onRemove: (item) => {
3805
- removeImage?.(item.attachment.id);
3806
- }
3807
- })
3999
+ renderSlot("conversation.input.attachments", {
4000
+ attachments,
4001
+ canAcceptDrop,
4002
+ onAddImages: intakeImages,
4003
+ onRemoveImage: (id) => {
4004
+ removeImage?.(id);
4005
+ },
4006
+ dropLimits: imageLimits === void 0 ? void 0 : {
4007
+ count: imageLimits.maxImagesPerMessage,
4008
+ size: imageSizeText(imageLimits.maxImageBytes)
4009
+ }
3808
4010
  }),
3809
4011
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
3810
4012
  ref: scrollRef,
@@ -3815,8 +4017,9 @@ window.__ModuleLoader__.load({
3815
4017
  children: [
3816
4018
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
3817
4019
  "aria-hidden": true,
3818
- className: InputBar_module_css_default.backdrop,
4020
+ className: clsx(InputBar_module_css_default.backdrop, textareaDisabled && InputBar_module_css_default.backdropDisabled),
3819
4021
  "data-input-backdrop": true,
4022
+ "data-disabled": textareaDisabled || void 0,
3820
4023
  children: backdrop
3821
4024
  }),
3822
4025
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
@@ -3958,12 +4161,6 @@ window.__ModuleLoader__.load({
3958
4161
  })
3959
4162
  ]
3960
4163
  }),
3961
- preview !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_xrkseek_client_ui_attachment.ImageLightbox, {
3962
- src: preview.previewUrl,
3963
- alt: preview.file.name || t("image.original"),
3964
- labels: lightboxLabels(t),
3965
- onClose: closePreview
3966
- }),
3967
4164
  footer
3968
4165
  ]
3969
4166
  });
@@ -3980,12 +4177,12 @@ window.__ModuleLoader__.load({
3980
4177
  document.head.appendChild(tag);
3981
4178
  }
3982
4179
  var EnterBehaviorRow_module_css_default = {
3983
- "title": "ssSNSa_title",
3984
- "row": "ssSNSa_row",
3985
4180
  "chevron": "ssSNSa_chevron",
4181
+ "row": "ssSNSa_row",
4182
+ "selector": "ssSNSa_selector",
3986
4183
  "desc": "ssSNSa_desc",
3987
4184
  "rowText": "ssSNSa_rowText",
3988
- "selector": "ssSNSa_selector"
4185
+ "title": "ssSNSa_title"
3989
4186
  };
3990
4187
  //#endregion
3991
4188
  //#region src/client/settings/EnterBehaviorRow.tsx
@@ -4048,7 +4245,7 @@ window.__ModuleLoader__.load({
4048
4245
  }
4049
4246
  //#endregion
4050
4247
  //#region \0xrk-css:C:\Users\sunflowerss\Desktop\XRKgrocery\XRK-harness\packages\client\ui-conversation\src\client\chat\MessageItem.module.css.mjs
4051
- const css$15 = ".DuLIaW_userRow{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.DuLIaW_userStack{flex-direction:column;align-items:flex-end;gap:8px;min-width:0;max-width:min(525px,82%);display:flex}.DuLIaW_bubble{background:var(--dsw-specific-bubble);max-width:100%;color:var(--dsw-alias-label-primary);border-radius:22px;padding:10px 16px;font-size:16px;line-height:24px}.DuLIaW_contextRow,.DuLIaW_compactionRow{padding:2px 0}.DuLIaW_compactionButton{width:100%;min-width:0;height:24px;color:inherit;font:inherit;text-align:left;background:0 0;border:none;border-radius:6px;align-items:center;padding:0;display:flex}.DuLIaW_compactionButton:not(:disabled){cursor:pointer}.DuLIaW_compactionButton:not(:disabled):hover{background:var(--dsw-alias-interactive-bg-hover)}.DuLIaW_compactionLeading{width:16px;height:16px;color:var(--dsw-alias-label-secondary);flex:none;place-items:center;margin-right:6px;display:inline-grid}.DuLIaW_compactionContextIcon,.DuLIaW_compactionDisclosureIcon{grid-area:1/1;justify-content:center;align-items:center;display:inline-flex}.DuLIaW_compactionDisclosureIcon,.DuLIaW_compactionButton:not(:disabled):hover .DuLIaW_compactionContextIcon,.DuLIaW_compactionButton:not(:disabled):focus-visible .DuLIaW_compactionContextIcon{opacity:0}.DuLIaW_compactionButton:not(:disabled):hover .DuLIaW_compactionDisclosureIcon,.DuLIaW_compactionButton:not(:disabled):focus-visible .DuLIaW_compactionDisclosureIcon{opacity:1}.DuLIaW_compactionTitle{color:var(--dsw-alias-label-primary-dimmed);flex:none;font-size:14px;line-height:24px}.DuLIaW_compactionSep{background:var(--dsw-alias-label-caption);border-radius:1px;flex:none;width:2px;height:2px;margin:0 8px}.DuLIaW_compactionSummary{min-width:0;color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:14px;line-height:24px;overflow:hidden}.DuLIaW_compactionBody{color:var(--dsw-alias-label-tertiary);padding:4px 0 4px 22px;font-size:14px;line-height:24px}.DuLIaW_retryRow{color:var(--dsw-alias-label-tertiary);font-size:13px;line-height:20px}.DuLIaW_retrySummary{width:fit-content;color:inherit;cursor:pointer;user-select:none;border-radius:3px;align-items:center;gap:7px;padding:2px 0;list-style:none;display:inline-flex}.DuLIaW_retrySummary::-webkit-details-marker{display:none}.DuLIaW_retrySummary:after{content:\"\";opacity:.8;border-bottom:1.5px solid;border-right:1.5px solid;width:6px;height:6px;transition:transform .12s;transform:rotate(-45deg)}.DuLIaW_retrySummary:hover{color:var(--dsw-alias-label-secondary)}.DuLIaW_retrySummary:focus-visible{outline:1.5px solid var(--dsw-alias-button-info-fill);outline-offset:2px}.DuLIaW_retryText{color:inherit}.DuLIaW_retryRow[data-active] .DuLIaW_retryText{background:linear-gradient(90deg, var(--dsw-alias-label-tertiary) 0%, var(--dsw-alias-label-tertiary) 40%, var(--dsw-alias-label-secondary) 50%, var(--dsw-alias-label-tertiary) 60%, var(--dsw-alias-label-tertiary) 100%);color:#0000;background-position:100%;background-size:200% 100%;background-clip:text;animation:1.6s ease-in-out infinite DuLIaW_retry-shimmer}.DuLIaW_retryRow[open] .DuLIaW_retrySummary:after{transform:rotate(45deg)}.DuLIaW_retryDetails{overflow-wrap:anywhere;gap:2px;margin-top:3px;padding-left:14px;font-size:12px;line-height:18px;display:grid}.DuLIaW_retryDetailLabel{color:var(--dsw-alias-label-secondary)}.DuLIaW_turnErrorRow{grid-template-columns:10px minmax(0,1fr) auto;align-items:start;gap:8px;padding:2px 0;font-size:13px;line-height:20px;display:grid}.DuLIaW_turnErrorDot{margin-top:5px}.DuLIaW_turnErrorCopy{overflow-wrap:anywhere;min-width:0}.DuLIaW_turnErrorTitle{color:var(--dsw-alias-state-error-primary);margin-right:6px;font-weight:600}.DuLIaW_turnErrorMessage{color:var(--dsw-alias-label-secondary)}.DuLIaW_turnErrorCode{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-markdown-code-block-small)}.DuLIaW_maxTokensTitle{color:var(--dsw-alias-state-warn-primary);margin-right:6px;font-weight:600}@keyframes DuLIaW_retry-shimmer{0%{background-position:100%}to{background-position:0}}@media (prefers-reduced-motion:reduce){.DuLIaW_retryRow[data-active] .DuLIaW_retryText{color:inherit;background:0 0;animation:none}}.DuLIaW_refChip{color:var(--dsw-alias-label-primary);white-space:nowrap;vertical-align:baseline;background:#6187d838;border-radius:6px;margin:0 2px;padding:0 8px;font-size:.85em;line-height:1.6;display:inline-block}";
4248
+ const css$15 = ".DuLIaW_userRow{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.DuLIaW_userStack{flex-direction:column;align-items:flex-end;gap:8px;min-width:0;max-width:min(525px,82%);display:flex}.DuLIaW_bubble{background:var(--dsw-specific-bubble);max-width:100%;color:var(--dsw-alias-label-primary);border-radius:22px;padding:10px 16px;font-size:16px;line-height:24px}.DuLIaW_referenceSummary{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.DuLIaW_contextRow,.DuLIaW_compactionRow{padding:2px 0}.DuLIaW_compactionButton{width:100%;min-width:0;height:24px;color:inherit;font:inherit;text-align:left;background:0 0;border:none;border-radius:6px;align-items:center;padding:0;display:flex}.DuLIaW_compactionButton:not(:disabled){cursor:pointer}.DuLIaW_compactionButton:not(:disabled):hover{background:var(--dsw-alias-interactive-bg-hover)}.DuLIaW_compactionLeading{width:16px;height:16px;color:var(--dsw-alias-label-secondary);flex:none;place-items:center;margin-right:6px;display:inline-grid}.DuLIaW_compactionContextIcon,.DuLIaW_compactionDisclosureIcon{grid-area:1/1;justify-content:center;align-items:center;display:inline-flex}.DuLIaW_compactionDisclosureIcon,.DuLIaW_compactionButton:not(:disabled):hover .DuLIaW_compactionContextIcon,.DuLIaW_compactionButton:not(:disabled):focus-visible .DuLIaW_compactionContextIcon{opacity:0}.DuLIaW_compactionButton:not(:disabled):hover .DuLIaW_compactionDisclosureIcon,.DuLIaW_compactionButton:not(:disabled):focus-visible .DuLIaW_compactionDisclosureIcon{opacity:1}.DuLIaW_compactionTitle{color:var(--dsw-alias-label-primary-dimmed);flex:none;font-size:14px;line-height:24px}.DuLIaW_compactionSep{background:var(--dsw-alias-label-caption);border-radius:1px;flex:none;width:2px;height:2px;margin:0 8px}.DuLIaW_compactionSummary{min-width:0;color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:14px;line-height:24px;overflow:hidden}.DuLIaW_compactionBody{color:var(--dsw-alias-label-tertiary);padding:4px 0 4px 22px;font-size:14px;line-height:24px}.DuLIaW_retryRow{color:var(--dsw-alias-label-tertiary);font-size:13px;line-height:20px}.DuLIaW_retrySummary{width:fit-content;color:inherit;cursor:pointer;user-select:none;border-radius:3px;align-items:center;gap:7px;padding:2px 0;list-style:none;display:inline-flex}.DuLIaW_retrySummary::-webkit-details-marker{display:none}.DuLIaW_retrySummary:after{content:\"\";opacity:.8;border-bottom:1.5px solid;border-right:1.5px solid;width:6px;height:6px;transition:transform .12s;transform:rotate(-45deg)}.DuLIaW_retrySummary:hover{color:var(--dsw-alias-label-secondary)}.DuLIaW_retrySummary:focus-visible{outline:1.5px solid var(--dsw-alias-button-info-fill);outline-offset:2px}.DuLIaW_retryText{color:inherit}.DuLIaW_retryRow[data-active] .DuLIaW_retryText{background:linear-gradient(90deg, var(--dsw-alias-label-tertiary) 0%, var(--dsw-alias-label-tertiary) 40%, var(--dsw-alias-label-secondary) 50%, var(--dsw-alias-label-tertiary) 60%, var(--dsw-alias-label-tertiary) 100%);color:#0000;background-position:100%;background-size:200% 100%;background-clip:text;animation:1.6s ease-in-out infinite DuLIaW_retry-shimmer}.DuLIaW_retryRow[open] .DuLIaW_retrySummary:after{transform:rotate(45deg)}.DuLIaW_retryDetails{overflow-wrap:anywhere;gap:2px;margin-top:3px;padding-left:14px;font-size:12px;line-height:18px;display:grid}.DuLIaW_retryDetailLabel{color:var(--dsw-alias-label-secondary)}.DuLIaW_turnErrorRow{grid-template-columns:10px minmax(0,1fr) auto;align-items:start;gap:8px;padding:2px 0;font-size:13px;line-height:20px;display:grid}.DuLIaW_turnErrorDot{margin-top:5px}.DuLIaW_turnErrorCopy{overflow-wrap:anywhere;min-width:0}.DuLIaW_turnErrorTitle{color:var(--dsw-alias-state-error-primary);margin-right:6px;font-weight:600}.DuLIaW_turnErrorMessage{color:var(--dsw-alias-label-secondary)}.DuLIaW_turnErrorCode{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-markdown-code-block-small)}.DuLIaW_maxTokensTitle{color:var(--dsw-alias-state-warn-primary);margin-right:6px;font-weight:600}@keyframes DuLIaW_retry-shimmer{0%{background-position:100%}to{background-position:0}}@media (prefers-reduced-motion:reduce){.DuLIaW_retryRow[data-active] .DuLIaW_retryText{color:inherit;background:0 0;animation:none}}.DuLIaW_refChip{color:var(--dsw-alias-state-business-primary);white-space:nowrap;vertical-align:baseline;align-items:center;gap:4px;margin:0 2px;font-weight:500;display:inline-flex}.DuLIaW_refIcon{flex:none}";
4052
4249
  const tagId$15 = "@xrkseek/client-ui-conversation/MessageItem.module.css";
4053
4250
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$15) + "]") === null) {
4054
4251
  const tag = document.createElement("style");
@@ -4058,33 +4255,35 @@ window.__ModuleLoader__.load({
4058
4255
  document.head.appendChild(tag);
4059
4256
  }
4060
4257
  var MessageItem_module_css_default = {
4061
- "maxTokensTitle": "DuLIaW_maxTokensTitle",
4062
- "userStack": "DuLIaW_userStack",
4063
- "compactionDisclosureIcon": "DuLIaW_compactionDisclosureIcon",
4064
- "retry-shimmer": "DuLIaW_retry-shimmer",
4065
4258
  "compactionRow": "DuLIaW_compactionRow",
4066
- "refChip": "DuLIaW_refChip",
4067
- "retryDetailLabel": "DuLIaW_retryDetailLabel",
4068
- "retryText": "DuLIaW_retryText",
4069
4259
  "turnErrorDot": "DuLIaW_turnErrorDot",
4070
- "compactionContextIcon": "DuLIaW_compactionContextIcon",
4071
- "compactionSep": "DuLIaW_compactionSep",
4072
- "retryRow": "DuLIaW_retryRow",
4073
- "compactionBody": "DuLIaW_compactionBody",
4074
- "turnErrorRow": "DuLIaW_turnErrorRow",
4075
- "turnErrorCopy": "DuLIaW_turnErrorCopy",
4260
+ "compactionTitle": "DuLIaW_compactionTitle",
4261
+ "refIcon": "DuLIaW_refIcon",
4076
4262
  "bubble": "DuLIaW_bubble",
4263
+ "compactionDisclosureIcon": "DuLIaW_compactionDisclosureIcon",
4077
4264
  "contextRow": "DuLIaW_contextRow",
4078
- "retrySummary": "DuLIaW_retrySummary",
4079
- "userRow": "DuLIaW_userRow",
4080
4265
  "compactionButton": "DuLIaW_compactionButton",
4081
- "compactionTitle": "DuLIaW_compactionTitle",
4266
+ "userStack": "DuLIaW_userStack",
4082
4267
  "compactionLeading": "DuLIaW_compactionLeading",
4083
- "compactionSummary": "DuLIaW_compactionSummary",
4084
- "retryDetails": "DuLIaW_retryDetails",
4268
+ "retryDetailLabel": "DuLIaW_retryDetailLabel",
4269
+ "retry-shimmer": "DuLIaW_retry-shimmer",
4270
+ "refChip": "DuLIaW_refChip",
4271
+ "userRow": "DuLIaW_userRow",
4085
4272
  "turnErrorTitle": "DuLIaW_turnErrorTitle",
4273
+ "compactionBody": "DuLIaW_compactionBody",
4274
+ "turnErrorCopy": "DuLIaW_turnErrorCopy",
4275
+ "compactionSummary": "DuLIaW_compactionSummary",
4276
+ "compactionSep": "DuLIaW_compactionSep",
4277
+ "retrySummary": "DuLIaW_retrySummary",
4278
+ "turnErrorCode": "DuLIaW_turnErrorCode",
4279
+ "turnErrorRow": "DuLIaW_turnErrorRow",
4280
+ "retryRow": "DuLIaW_retryRow",
4281
+ "retryText": "DuLIaW_retryText",
4282
+ "maxTokensTitle": "DuLIaW_maxTokensTitle",
4283
+ "compactionContextIcon": "DuLIaW_compactionContextIcon",
4284
+ "referenceSummary": "DuLIaW_referenceSummary",
4086
4285
  "turnErrorMessage": "DuLIaW_turnErrorMessage",
4087
- "turnErrorCode": "DuLIaW_turnErrorCode"
4286
+ "retryDetails": "DuLIaW_retryDetails"
4088
4287
  };
4089
4288
  //#endregion
4090
4289
  //#region src/client/chat/CompactionItem.tsx
@@ -4156,29 +4355,29 @@ window.__ModuleLoader__.load({
4156
4355
  document.head.appendChild(tag);
4157
4356
  }
4158
4357
  var ContextBody_module_css_default = {
4159
- "recallLabel": "mBNGpa_recallLabel",
4160
- "entry": "mBNGpa_entry",
4161
- "entryName": "mBNGpa_entryName",
4162
- "sections": "mBNGpa_sections",
4163
- "recallCounts": "mBNGpa_recallCounts",
4164
- "recalls": "mBNGpa_recalls",
4165
- "filePath": "mBNGpa_filePath",
4166
- "fields": "mBNGpa_fields",
4167
- "files": "mBNGpa_files",
4168
- "fieldValue": "mBNGpa_fieldValue",
4169
4358
  "fileAction": "mBNGpa_fileAction",
4170
- "relaySender": "mBNGpa_relaySender",
4171
- "recall": "mBNGpa_recall",
4172
- "field": "mBNGpa_field",
4173
- "entryDescription": "mBNGpa_entryDescription",
4174
- "text": "mBNGpa_text",
4359
+ "catalogNotice": "mBNGpa_catalogNotice",
4175
4360
  "file": "mBNGpa_file",
4361
+ "sections": "mBNGpa_sections",
4362
+ "recallLabel": "mBNGpa_recallLabel",
4363
+ "text": "mBNGpa_text",
4176
4364
  "entries": "mBNGpa_entries",
4177
4365
  "section": "mBNGpa_section",
4178
- "sectionName": "mBNGpa_sectionName",
4179
4366
  "sectionText": "mBNGpa_sectionText",
4180
- "catalogNotice": "mBNGpa_catalogNotice",
4181
- "fieldKey": "mBNGpa_fieldKey"
4367
+ "sectionName": "mBNGpa_sectionName",
4368
+ "recall": "mBNGpa_recall",
4369
+ "files": "mBNGpa_files",
4370
+ "fieldKey": "mBNGpa_fieldKey",
4371
+ "field": "mBNGpa_field",
4372
+ "entryDescription": "mBNGpa_entryDescription",
4373
+ "relaySender": "mBNGpa_relaySender",
4374
+ "recallCounts": "mBNGpa_recallCounts",
4375
+ "recalls": "mBNGpa_recalls",
4376
+ "fields": "mBNGpa_fields",
4377
+ "fieldValue": "mBNGpa_fieldValue",
4378
+ "filePath": "mBNGpa_filePath",
4379
+ "entryName": "mBNGpa_entryName",
4380
+ "entry": "mBNGpa_entry"
4182
4381
  };
4183
4382
  //#endregion
4184
4383
  //#region src/client/chat/ContextBody.tsx
@@ -4662,24 +4861,16 @@ window.__ModuleLoader__.load({
4662
4861
  body: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(OpaqueBody, { ...props })
4663
4862
  };
4664
4863
  switch (form) {
4665
- case "instructions": {
4666
- const changes = instructionChanges(props.source);
4667
- if (changes === null) return opaque;
4668
- return {
4669
- rendered: "instructions",
4670
- summary: props.t("message.context.instructions.summary", { count: changes.length }),
4671
- body: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(InstructionsBody, { ...props })
4672
- };
4673
- }
4674
- case "catalog": {
4675
- const entries = catalogEntries(props.source);
4676
- if (entries === null) return opaque;
4677
- return {
4678
- rendered: "catalog",
4679
- summary: props.t("message.context.catalog.summary", { count: entries.length }),
4680
- body: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CatalogBody, { ...props })
4681
- };
4682
- }
4864
+ case "instructions": return instructionChanges(props.source) === null ? opaque : {
4865
+ rendered: "instructions",
4866
+ summary: null,
4867
+ body: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(InstructionsBody, { ...props })
4868
+ };
4869
+ case "catalog": return catalogEntries(props.source) === null ? opaque : {
4870
+ rendered: "catalog",
4871
+ summary: null,
4872
+ body: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CatalogBody, { ...props })
4873
+ };
4683
4874
  case "snapshot": return snapshotSections(props.source) === null ? opaque : {
4684
4875
  rendered: "snapshot",
4685
4876
  summary: null,
@@ -4721,12 +4912,12 @@ window.__ModuleLoader__.load({
4721
4912
  document.head.appendChild(tag);
4722
4913
  }
4723
4914
  var ContextInjectionRow_module_css_default = {
4915
+ "chevron": "BCt95a_chevron",
4724
4916
  "root": "BCt95a_root",
4725
- "sep": "BCt95a_sep",
4726
4917
  "source": "BCt95a_source",
4727
- "chevron": "BCt95a_chevron",
4728
- "summary": "BCt95a_summary",
4729
- "body": "BCt95a_body"
4918
+ "body": "BCt95a_body",
4919
+ "sep": "BCt95a_sep",
4920
+ "summary": "BCt95a_summary"
4730
4921
  };
4731
4922
  //#endregion
4732
4923
  //#region src/client/chat/ContextInjectionRow.tsx
@@ -4750,7 +4941,10 @@ window.__ModuleLoader__.load({
4750
4941
  });
4751
4942
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_xrkseek_client_ui_primitives.DisclosureRow, {
4752
4943
  className: ContextInjectionRow_module_css_default.root,
4753
- icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_xrkseek_client_ui_primitives.IconBrowseOutline16, { size: 14 }),
4944
+ icon: provenance.role === "recall" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4945
+ "data-context-recall-icon": true,
4946
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ReferenceIcon, { kind: "session" })
4947
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_xrkseek_client_ui_primitives.IconBrowseOutline16, { size: 14 }),
4754
4948
  chevronClassName: ContextInjectionRow_module_css_default.chevron,
4755
4949
  title: t(provenance.role === "recall" ? "message.contextRecall" : "message.contextInjection"),
4756
4950
  collapsedContent: provenance.label === null ? void 0 : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
@@ -4821,12 +5015,12 @@ window.__ModuleLoader__.load({
4821
5015
  document.head.appendChild(tag);
4822
5016
  }
4823
5017
  var MessageIconActions_module_css_default = {
5018
+ "visuallyHidden": "vWo8Ba_visuallyHidden",
4824
5019
  "runTimeDot": "vWo8Ba_runTimeDot",
4825
- "action": "vWo8Ba_action",
5020
+ "timeEnd": "vWo8Ba_timeEnd",
4826
5021
  "actions": "vWo8Ba_actions",
4827
5022
  "timeStart": "vWo8Ba_timeStart",
4828
- "timeEnd": "vWo8Ba_timeEnd",
4829
- "visuallyHidden": "vWo8Ba_visuallyHidden"
5023
+ "action": "vWo8Ba_action"
4830
5024
  };
4831
5025
  //#endregion
4832
5026
  //#region src/client/chat/MessageIconActions.tsx
@@ -5074,28 +5268,62 @@ window.__ModuleLoader__.load({
5074
5268
  * scan as the composer, minus the lexicon: sent tokens were validated at
5075
5269
  * compose time, so shape alone decorates).
5076
5270
  */
5077
- function projectUserText(text) {
5078
- const re = /(^|\s)([/@][\w-]+)(?=\s|$)/g;
5079
- const parts = [];
5080
- let cursor = 0;
5271
+ function projectUserText(text, sessionLabels) {
5272
+ const ranges = [];
5273
+ for (const rawLabel of [...new Set(sessionLabels)].sort((a, b) => b.length - a.length)) {
5274
+ const label = `@${rawLabel}`;
5275
+ let start = text.indexOf(label);
5276
+ while (start >= 0) {
5277
+ ranges.push({
5278
+ start,
5279
+ end: start + label.length,
5280
+ label,
5281
+ kind: "session"
5282
+ });
5283
+ start = text.indexOf(label, start + label.length);
5284
+ }
5285
+ }
5286
+ const re = /(^|\s)(\/[\w-]+|@"[^"\n]+"|@[^\s]+)/gu;
5081
5287
  let m;
5082
5288
  while ((m = re.exec(text)) !== null) {
5083
5289
  const tokenStart = m.index + (m[1]?.length ?? 0);
5084
- const label = m[2] ?? "";
5290
+ const rawLabel = m[2] ?? "";
5291
+ const label = rawLabel.startsWith("@\"") ? rawLabel : rawLabel.replace(/[.,;:!?,。;:!?]+$/gu, "");
5292
+ if (label.length <= 1) continue;
5293
+ ranges.push({
5294
+ start: tokenStart,
5295
+ end: tokenStart + label.length,
5296
+ label,
5297
+ kind: "plain"
5298
+ });
5299
+ }
5300
+ ranges.sort((a, b) => a.start - b.start || (a.kind === b.kind ? b.end - a.end : a.kind === "session" ? -1 : 1));
5301
+ const parts = [];
5302
+ let cursor = 0;
5303
+ for (const range of ranges) {
5304
+ if (range.start < cursor) continue;
5305
+ const { start: tokenStart, end, label, kind } = range;
5085
5306
  if (tokenStart > cursor) parts.push(/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_xrkseek_client_ui_primitives.MessageText, { text: text.slice(cursor, tokenStart) }, cursor));
5086
- parts.push(/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5307
+ const referenceKind = kind === "session" ? "session" : label.startsWith("@") ? label.endsWith("/") ? "folder" : "file" : void 0;
5308
+ const displayLabel = referenceKind === void 0 ? label : referenceKind === "session" ? label.slice(1) : label.slice(1).replace(/^"|"$/gu, "").split(/[\\/]/u).filter(Boolean).at(-1) ?? label.slice(1);
5309
+ parts.push(/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
5087
5310
  className: MessageItem_module_css_default.refChip,
5088
- "data-ref-chip": label.startsWith("@") ? "subagent" : "skill",
5089
- children: label
5311
+ "data-ref-chip": referenceKind ?? "skill",
5312
+ title: label,
5313
+ children: [referenceKind !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ReferenceIcon, {
5314
+ kind: referenceKind,
5315
+ size: 16,
5316
+ className: MessageItem_module_css_default.refIcon
5317
+ }), displayLabel]
5090
5318
  }, tokenStart));
5091
- cursor = tokenStart + label.length;
5319
+ cursor = end;
5092
5320
  }
5093
5321
  if (parts.length === 0) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_xrkseek_client_ui_primitives.MessageText, { text });
5094
5322
  if (cursor < text.length) parts.push(/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_xrkseek_client_ui_primitives.MessageText, { text: text.slice(cursor) }, cursor));
5095
5323
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: parts });
5096
5324
  }
5097
5325
  /** Right-aligned bubble shared by user and steering rows. */
5098
- function UserStyleBubble({ content, imageLoader, actions, pending = false, t }) {
5326
+ function UserStyleBubble({ content, renderMessageImages, actions, pending = false, referenceLabels = [], t }) {
5099
5327
  const { text, images, rest } = contentParts(content);
5100
5328
  const truncated = (total) => t("json.truncated", { total });
5101
5329
  const showBubble = text !== "" || rest.length > 0;
@@ -5105,19 +5333,24 @@ window.__ModuleLoader__.load({
5105
5333
  "data-time-hover-root": true,
5106
5334
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5107
5335
  className: MessageItem_module_css_default.userStack,
5108
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_xrkseek_client_ui_attachment.ImageGallery, {
5109
- images,
5110
- load: imageLoader,
5111
- align: "end",
5112
- labels: messageImageLabels(t)
5113
- }), showBubble && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5114
- className: MessageItem_module_css_default.bubble,
5115
- children: [projectUserText(text), rest.map((block, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_xrkseek_client_ui_primitives.JsonBlock, {
5116
- label: t("message.extraBlock"),
5117
- payload: block,
5118
- truncatedLabel: truncated
5119
- }, i))]
5120
- })]
5336
+ children: [
5337
+ renderMessageImages({
5338
+ images,
5339
+ align: "end"
5340
+ }),
5341
+ showBubble && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5342
+ className: MessageItem_module_css_default.bubble,
5343
+ children: [projectUserText(text, referenceLabels), rest.map((block, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_xrkseek_client_ui_primitives.JsonBlock, {
5344
+ label: t("message.extraBlock"),
5345
+ payload: block,
5346
+ truncatedLabel: truncated
5347
+ }, i))]
5348
+ }),
5349
+ referenceLabels.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5350
+ className: MessageItem_module_css_default.referenceSummary,
5351
+ children: t("message.referenceSummary", { labels: referenceLabels.join(t("message.referenceSeparator")) })
5352
+ })
5353
+ ]
5121
5354
  }), actions?.(text)]
5122
5355
  });
5123
5356
  }
@@ -5127,10 +5360,10 @@ window.__ModuleLoader__.load({
5127
5360
  * @param props - Pending message content and conversation translator.
5128
5361
  * @returns the pending steering bubble.
5129
5362
  */
5130
- function PendingSteeringBubble({ content, loadImage, t }) {
5363
+ function PendingSteeringBubble({ content, renderMessageImages, t }) {
5131
5364
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(UserStyleBubble, {
5132
5365
  content,
5133
- imageLoader: loadImage ?? (() => Promise.reject(new Error(t("image.serviceUnavailable")))),
5366
+ renderMessageImages,
5134
5367
  pending: true,
5135
5368
  t,
5136
5369
  actions: (text) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MessageIconActions, {
@@ -5142,11 +5375,12 @@ window.__ModuleLoader__.load({
5142
5375
  });
5143
5376
  }
5144
5377
  /** User and admitted-steering keyed Chat renderer. */
5145
- const UserMessageNodeView = (0, react.memo)(function UserMessageNodeView({ node, loadImage, t }) {
5378
+ const UserMessageNodeView = (0, react.memo)(function UserMessageNodeView({ node, renderMessageImages, t }) {
5146
5379
  const data = node.data;
5147
5380
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(UserStyleBubble, {
5148
5381
  content: data.content,
5149
- imageLoader: loadImage,
5382
+ renderMessageImages,
5383
+ ...data.referenceLabels === void 0 ? {} : { referenceLabels: data.referenceLabels },
5150
5384
  t,
5151
5385
  actions: (text) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MessageIconActions, {
5152
5386
  text,
@@ -5209,7 +5443,7 @@ window.__ModuleLoader__.load({
5209
5443
  });
5210
5444
  //#endregion
5211
5445
  //#region \0xrk-css:C:\Users\sunflowerss\Desktop\XRKgrocery\XRK-harness\packages\client\ui-conversation\src\client\chat\ChatView.module.css.mjs
5212
- const css$11 = ".rzfPEq_root{flex-direction:column;flex:auto;min-height:0;display:flex;position:relative}.rzfPEq_scroll{min-height:0;padding:16px calc(var(--dsh-composer-side-clearance) + 16px);flex:auto;overflow-y:auto}[data-conversation-scroll] .rzfPEq_root{flex:none;height:auto;min-height:auto}[data-conversation-scroll] .rzfPEq_scroll{flex:none;min-height:auto;overflow:visible}.rzfPEq_column{max-width:var(--dsh-chat-content-width);flex-direction:column;gap:16px;width:100%;margin:0 auto;display:flex}.rzfPEq_flowItem{min-width:0}.rzfPEq_flowItem:empty{display:none}.rzfPEq_callRow{border-radius:6px}.rzfPEq_turnStatus{height:26px;font:var(--dsw-font-s-strong-14);white-space:nowrap;background:linear-gradient(90deg, var(--dsw-static-deepseek-500) 0%, var(--dsw-static-deepseek-500) 40%, var(--dsw-static-deepseek-200) 50%, var(--dsw-static-deepseek-500) 60%, var(--dsw-static-deepseek-500) 100%);color:#0000;-webkit-text-fill-color:transparent;background-position:100% 0;background-size:250% 100%;-webkit-background-clip:text;background-clip:text;flex:none;align-self:flex-start;align-items:center;animation:1.8s linear infinite rzfPEq_dsh-turn-status-shimmer;display:inline-flex}.rzfPEq_turnStatusClock{font:var(--dsw-font-xs-13);font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-caption);-webkit-text-fill-color:var(--dsw-alias-label-caption);margin-left:8px;font-weight:400}@keyframes rzfPEq_dsh-turn-status-shimmer{to{background-position:0 0}}@media (prefers-reduced-motion:reduce){.rzfPEq_turnStatus{background-position:0 0;background-size:100% 100%;animation:none}}.rzfPEq_hint{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.rzfPEq_openError{color:var(--dsw-alias-state-error-primary);font-size:12px;line-height:18px}.rzfPEq_older{justify-content:center;display:flex}.rzfPEq_older button{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-interactive-bg-hover-solid);cursor:pointer;border:none;border-radius:14px;padding:4px 12px;font-size:12px}.rzfPEq_older button:disabled{cursor:default;opacity:.6}.rzfPEq_toBottomSlot{z-index:8;height:0;padding-right:max(0px, calc((100% - var(--dsh-chat-content-width)) / 2));pointer-events:none;justify-content:flex-end;display:flex;position:sticky;bottom:16px}[data-conversation-scroll] .rzfPEq_toBottomSlot{bottom:calc(var(--dsh-composer-height,152px) + 16px)}.rzfPEq_toBottom{border:1px solid var(--dsw-alias-border-l2);width:34px;height:34px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-button-floating-fill);box-shadow:var(--dsw-shadow-lv2);cursor:pointer;pointer-events:auto;border-radius:100px;justify-content:center;align-items:center;margin-top:-34px;padding:0;display:flex}.rzfPEq_toBottom:hover{background:var(--dsw-alias-button-floating-hover)}";
5446
+ const css$11 = ".rzfPEq_root{flex-direction:column;flex:auto;min-height:0;display:flex;position:relative}.rzfPEq_scroll{min-height:0;padding:16px calc(var(--dsh-composer-side-clearance) + 16px);flex:auto;overflow-y:auto;container-type:inline-size}[data-conversation-scroll] .rzfPEq_root{flex:none;height:auto;min-height:auto}[data-conversation-scroll] .rzfPEq_scroll{flex:none;min-height:auto;overflow:visible}.rzfPEq_column{max-width:var(--dsh-chat-content-width);flex-direction:column;gap:16px;width:100%;margin:0 auto;display:flex}.rzfPEq_flowItem{min-width:0}.rzfPEq_flowItem:empty{display:none}.rzfPEq_callRow{border-radius:6px}.rzfPEq_turnStatus{height:26px;font:var(--dsw-font-s-strong-14);white-space:nowrap;background:linear-gradient(90deg, var(--dsw-static-deepseek-500) 0%, var(--dsw-static-deepseek-500) 40%, var(--dsw-static-deepseek-200) 50%, var(--dsw-static-deepseek-500) 60%, var(--dsw-static-deepseek-500) 100%);color:#0000;-webkit-text-fill-color:transparent;background-position:100% 0;background-size:250% 100%;-webkit-background-clip:text;background-clip:text;flex:none;align-self:flex-start;align-items:center;animation:1.8s linear infinite rzfPEq_dsh-turn-status-shimmer;display:inline-flex}.rzfPEq_turnStatusClock{font:var(--dsw-font-xs-13);font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-caption);-webkit-text-fill-color:var(--dsw-alias-label-caption);margin-left:8px;font-weight:400}@keyframes rzfPEq_dsh-turn-status-shimmer{to{background-position:0 0}}@media (prefers-reduced-motion:reduce){.rzfPEq_turnStatus{background-position:0 0;background-size:100% 100%;animation:none}}.rzfPEq_hint{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.rzfPEq_openError{color:var(--dsw-alias-state-error-primary);font-size:12px;line-height:18px}.rzfPEq_older{justify-content:center;display:flex}.rzfPEq_older button{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-interactive-bg-hover-solid);cursor:pointer;border:none;border-radius:14px;padding:4px 12px;font-size:12px}.rzfPEq_older button:disabled{cursor:default;opacity:.6}.rzfPEq_toBottomSlot{z-index:8;height:0;padding-right:max(0px, calc((100% - var(--dsh-chat-content-width)) / 2));pointer-events:none;justify-content:flex-end;display:flex;position:sticky;bottom:16px}[data-conversation-scroll] .rzfPEq_toBottomSlot{bottom:calc(var(--dsh-composer-height,152px) + 16px)}.rzfPEq_toBottom{border:1px solid var(--dsw-alias-border-l2);width:34px;height:34px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-button-floating-fill);box-shadow:var(--dsw-shadow-lv2);cursor:pointer;pointer-events:auto;border-radius:100px;justify-content:center;align-items:center;margin-top:-34px;padding:0;display:flex}.rzfPEq_toBottom:hover{background:var(--dsw-alias-button-floating-hover)}.rzfPEq_modalAction{min-width:72px}";
5213
5447
  const tagId$11 = "@xrkseek/client-ui-conversation/ChatView.module.css";
5214
5448
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$11) + "]") === null) {
5215
5449
  const tag = document.createElement("style");
@@ -5219,24 +5453,25 @@ window.__ModuleLoader__.load({
5219
5453
  document.head.appendChild(tag);
5220
5454
  }
5221
5455
  var ChatView_module_css_default = {
5222
- "dsh-turn-status-shimmer": "rzfPEq_dsh-turn-status-shimmer",
5223
- "turnStatus": "rzfPEq_turnStatus",
5224
- "scroll": "rzfPEq_scroll",
5225
- "turnStatusClock": "rzfPEq_turnStatusClock",
5226
5456
  "toBottom": "rzfPEq_toBottom",
5227
- "column": "rzfPEq_column",
5228
- "openError": "rzfPEq_openError",
5457
+ "modalAction": "rzfPEq_modalAction",
5458
+ "root": "rzfPEq_root",
5229
5459
  "callRow": "rzfPEq_callRow",
5460
+ "turnStatusClock": "rzfPEq_turnStatusClock",
5461
+ "dsh-turn-status-shimmer": "rzfPEq_dsh-turn-status-shimmer",
5230
5462
  "flowItem": "rzfPEq_flowItem",
5463
+ "openError": "rzfPEq_openError",
5231
5464
  "older": "rzfPEq_older",
5232
- "toBottomSlot": "rzfPEq_toBottomSlot",
5233
- "root": "rzfPEq_root",
5234
- "hint": "rzfPEq_hint"
5465
+ "column": "rzfPEq_column",
5466
+ "hint": "rzfPEq_hint",
5467
+ "scroll": "rzfPEq_scroll",
5468
+ "turnStatus": "rzfPEq_turnStatus",
5469
+ "toBottomSlot": "rzfPEq_toBottomSlot"
5235
5470
  };
5236
5471
  //#endregion
5237
5472
  //#region src/client/chat/ChatNodeSeat.tsx
5238
5473
  /** Subscribe and dispatch one stable Context key without observing sibling Nodes. */
5239
- const ChatNodeSeat = (0, react.memo)(function ChatNodeSeat({ nodeKey, selectedCallId, cwd, openFile, inspectCall, forkAt, loadImage, fileMentions, useSession, renderSlot, t }) {
5474
+ const ChatNodeSeat = (0, react.memo)(function ChatNodeSeat({ nodeKey, selectedCallId, cwd, openFile, inspectCall, forkAt, renderMessageImages, fileMentions, useSession, renderSlot, t }) {
5240
5475
  const node = useSession((snapshot) => snapshot.chat.nodes.get(nodeKey));
5241
5476
  const routedNode = node;
5242
5477
  const owner = (0, react.useMemo)(() => node === void 0 ? null : {
@@ -5245,7 +5480,7 @@ window.__ModuleLoader__.load({
5245
5480
  openFile,
5246
5481
  inspectCall,
5247
5482
  forkAt,
5248
- loadImage,
5483
+ renderMessageImages,
5249
5484
  fileMentions
5250
5485
  }, [
5251
5486
  node,
@@ -5254,7 +5489,7 @@ window.__ModuleLoader__.load({
5254
5489
  openFile,
5255
5490
  inspectCall,
5256
5491
  forkAt,
5257
- loadImage,
5492
+ renderMessageImages,
5258
5493
  fileMentions
5259
5494
  ]);
5260
5495
  if (routedNode === void 0 || owner === null) return null;
@@ -5332,13 +5567,22 @@ window.__ModuleLoader__.load({
5332
5567
  scrollTop: scrollport.scrollTop
5333
5568
  };
5334
5569
  }
5570
+ /** Host/OS refusal text for the file-open dialog; empty throws keep a locale fallback. */
5571
+ function openFailureMessage(error, fallback) {
5572
+ const message = error instanceof Error ? error.message : String(error);
5573
+ return message === "" ? fallback : message;
5574
+ }
5575
+ /** ProducedFiles opens the session workspace as `.`. */
5576
+ function isFolderOpenPath(path) {
5577
+ return path === ".";
5578
+ }
5335
5579
  function runningTurnStartTime(timeline) {
5336
5580
  let latest = null;
5337
5581
  for (const turn of timeline.turns.values()) if (turn.status === "open" && turn.start !== void 0) latest = turn.start.time;
5338
5582
  return latest;
5339
5583
  }
5340
5584
  /** Turn-level model activity label retained across first-token, tool, and streaming phases. */
5341
- function TurnStatus({ startTime, pendingSteer, t }) {
5585
+ function TurnStatus({ startTime, t }) {
5342
5586
  const [mountedAt] = (0, react.useState)(() => Date.now());
5343
5587
  const anchor = startTime ?? mountedAt;
5344
5588
  const [elapsedMs, setElapsedMs] = (0, react.useState)(() => Math.max(0, Date.now() - anchor));
@@ -5357,18 +5601,11 @@ window.__ModuleLoader__.load({
5357
5601
  className: ChatView_module_css_default.turnStatus,
5358
5602
  role: "status",
5359
5603
  "aria-live": "polite",
5360
- children: [
5361
- t("chat.deepDiving"),
5362
- pendingSteer > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5363
- className: ChatView_module_css_default.turnStatusClock,
5364
- children: t("chat.deepDiving.steered", { count: pendingSteer })
5365
- }),
5366
- showClock && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5367
- className: ChatView_module_css_default.turnStatusClock,
5368
- "aria-hidden": true,
5369
- children: formatRunDuration(elapsedMs, t)
5370
- })
5371
- ]
5604
+ children: ["Deep diving...", showClock && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5605
+ className: ChatView_module_css_default.turnStatusClock,
5606
+ "aria-hidden": true,
5607
+ children: formatRunDuration(elapsedMs, t)
5608
+ })]
5372
5609
  });
5373
5610
  }
5374
5611
  /**
@@ -5387,7 +5624,35 @@ window.__ModuleLoader__.load({
5387
5624
  const hasMore = useSession((s) => s.hasMore);
5388
5625
  const loadingOlder = useSession((s) => s.loadingOlder);
5389
5626
  const selectedCallId = useStore((s) => s.selection?.callId);
5627
+ const [fileOpenError, setFileOpenError] = (0, react.useState)(null);
5628
+ const [fileOpenBusy, setFileOpenBusy] = (0, react.useState)(false);
5629
+ const fileOpenRequest = (0, react.useRef)(0);
5630
+ const requestOpenFile = (0, react.useCallback)((path) => {
5631
+ const id = ++fileOpenRequest.current;
5632
+ setFileOpenBusy(true);
5633
+ openFile(path).then(() => {
5634
+ if (id !== fileOpenRequest.current) return;
5635
+ setFileOpenError(null);
5636
+ setFileOpenBusy(false);
5637
+ }, (error) => {
5638
+ if (id !== fileOpenRequest.current) return;
5639
+ setFileOpenError({
5640
+ path,
5641
+ message: openFailureMessage(error, t(isFolderOpenPath(path) ? "fileOpen.folderUnknown" : "fileOpen.unknown"))
5642
+ });
5643
+ setFileOpenBusy(false);
5644
+ });
5645
+ }, [openFile, t]);
5646
+ const closeFileOpenError = (0, react.useCallback)(() => {
5647
+ fileOpenRequest.current += 1;
5648
+ setFileOpenError(null);
5649
+ setFileOpenBusy(false);
5650
+ }, []);
5390
5651
  const pendingSteering = (0, react.useMemo)(() => inbox.filter((item) => item.placement === "steering"), [inbox]);
5652
+ const renderMessageImages = (0, react.useCallback)((owner) => renderSlot("conversation.message.images", {
5653
+ ...owner,
5654
+ loadImage
5655
+ }), [loadImage, renderSlot]);
5391
5656
  const runningTurnStart = (0, react.useMemo)(() => runningTurnStartTime(timeline), [timeline]);
5392
5657
  const listRef = (0, react.useRef)(null);
5393
5658
  const columnRef = (0, react.useRef)(null);
@@ -5547,9 +5812,9 @@ window.__ModuleLoader__.load({
5547
5812
  }
5548
5813
  loadOlder();
5549
5814
  };
5550
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5815
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5551
5816
  className: ChatView_module_css_default.root,
5552
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5817
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5553
5818
  ref: listRef,
5554
5819
  className: ChatView_module_css_default.scroll,
5555
5820
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
@@ -5582,22 +5847,21 @@ window.__ModuleLoader__.load({
5582
5847
  useSession,
5583
5848
  selectedCallId,
5584
5849
  cwd,
5585
- openFile,
5850
+ openFile: requestOpenFile,
5586
5851
  inspectCall,
5587
5852
  forkAt,
5588
- loadImage,
5853
+ renderMessageImages,
5589
5854
  fileMentions,
5590
5855
  renderSlot,
5591
5856
  t
5592
5857
  }, nodeKey)),
5593
5858
  running && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TurnStatus, {
5594
5859
  startTime: runningTurnStart,
5595
- pendingSteer: pendingSteering.length,
5596
5860
  t
5597
5861
  }),
5598
5862
  pendingSteering.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PendingSteeringBubble, {
5599
5863
  content: item.content,
5600
- loadImage,
5864
+ renderMessageImages,
5601
5865
  t
5602
5866
  }, item.id))
5603
5867
  ]
@@ -5615,7 +5879,38 @@ window.__ModuleLoader__.load({
5615
5879
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_xrkseek_client_ui_primitives.IconChevronDownOutline14, {})
5616
5880
  })
5617
5881
  })]
5618
- })
5882
+ }), fileOpenError !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FileOpenErrorDialog, {
5883
+ path: fileOpenError.path,
5884
+ message: fileOpenError.message,
5885
+ busy: fileOpenBusy,
5886
+ onClose: closeFileOpenError,
5887
+ onRetry: () => {
5888
+ requestOpenFile(fileOpenError.path);
5889
+ },
5890
+ t
5891
+ })]
5892
+ });
5893
+ }
5894
+ /** In-page Host open-path refusal: the wire reason plus a retry of the same path. */
5895
+ function FileOpenErrorDialog({ path, message, busy, onClose, onRetry, t }) {
5896
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_xrkseek_client_ui_primitives.Modal, {
5897
+ open: true,
5898
+ onClose,
5899
+ closeLabel: t("close"),
5900
+ title: t(isFolderOpenPath(path) ? "fileOpen.folderTitle" : "fileOpen.title"),
5901
+ description: message,
5902
+ footer: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_xrkseek_client_ui_primitives.Button, {
5903
+ variant: "outline",
5904
+ className: ChatView_module_css_default.modalAction,
5905
+ onClick: onClose,
5906
+ children: t("cancel")
5907
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_xrkseek_client_ui_primitives.Button, {
5908
+ variant: "primary",
5909
+ className: ChatView_module_css_default.modalAction,
5910
+ disabled: busy,
5911
+ onClick: onRetry,
5912
+ children: t("retry")
5913
+ })] })
5619
5914
  });
5620
5915
  }
5621
5916
  //#endregion
@@ -5716,15 +6011,15 @@ window.__ModuleLoader__.load({
5716
6011
  document.head.appendChild(tag);
5717
6012
  }
5718
6013
  var ApprovalPanel_module_css_default = {
5719
- "headline": "HtARWq_headline",
5720
- "reject": "HtARWq_reject",
6014
+ "card": "HtARWq_card",
5721
6015
  "command": "HtARWq_command",
5722
- "dot": "HtARWq_dot",
5723
- "actionRow": "HtARWq_actionRow",
5724
- "strip": "HtARWq_strip",
5725
6016
  "body": "HtARWq_body",
5726
6017
  "root": "HtARWq_root",
5727
- "card": "HtARWq_card"
6018
+ "actionRow": "HtARWq_actionRow",
6019
+ "strip": "HtARWq_strip",
6020
+ "dot": "HtARWq_dot",
6021
+ "headline": "HtARWq_headline",
6022
+ "reject": "HtARWq_reject"
5728
6023
  };
5729
6024
  //#endregion
5730
6025
  //#region src/client/skeleton/ApprovalPanel.tsx
@@ -5836,7 +6131,7 @@ window.__ModuleLoader__.load({
5836
6131
  "input.commands": "命令",
5837
6132
  "input.stop": "停止生成",
5838
6133
  "input.send": "发送消息",
5839
- "placeholder.steerQueue": "Enter 插话发送全部排队消息",
6134
+ "placeholder.steerQueue": "Cmd/Ctrl+Enter 插话发送全部排队消息",
5840
6135
  "input.accessMode": "访问模式,当前:{name}",
5841
6136
  "image.dropTitle": "图片拖动到此处即可添加",
5842
6137
  "image.dropDesc": "最多 {count} 张,每张 {size}",
@@ -5859,6 +6154,7 @@ window.__ModuleLoader__.load({
5859
6154
  "image.fileTooLarge": "单张图片不能超过 {size}",
5860
6155
  "image.totalTooLarge": "图片总大小超过 {size},请移除部分图片",
5861
6156
  "image.tooManyPixels": "图片分辨率过大,请压缩后重试",
6157
+ "image.dimensionTooLarge": "图片宽高不能超过 {size}px,请缩小后重试",
5862
6158
  "image.modelUnsupported": "当前模型不支持图片,请切换支持图片的模型",
5863
6159
  "image.subagentUnsupported": "子智能体会话暂不支持图片",
5864
6160
  "image.sendFailed": "图片发送失败({reason}),请重新添加图片后再试",
@@ -5904,19 +6200,21 @@ window.__ModuleLoader__.load({
5904
6200
  "chat.loadError": "历史加载失败:{message}({code})",
5905
6201
  "chat.loadOlder": "加载更早",
5906
6202
  "chat.toBottom": "回到底部",
5907
- "chat.deepDiving": "Deep diving…",
5908
- "chat.deepDiving.steered": "· 已插话 {count} 条(本轮继续)",
6203
+ "fileOpen.title": "无法打开文件",
6204
+ "fileOpen.unknown": "无法打开此文件",
6205
+ "fileOpen.folderTitle": "无法打开文件夹",
6206
+ "fileOpen.folderUnknown": "无法打开此文件夹",
5909
6207
  "message.extraBlock": "附加内容块",
5910
6208
  "message.contextInjection": "上下文注入",
5911
6209
  "message.contextRecall": "跨会话召回",
6210
+ "message.referenceSummary": "引用会话 · {labels}",
6211
+ "message.referenceSeparator": "、",
5912
6212
  "message.context.instructions.loaded": "已载入",
5913
6213
  "message.context.instructions.added": "已新增",
5914
6214
  "message.context.instructions.updated": "已更新",
5915
6215
  "message.context.instructions.removed": "已移除",
5916
- "message.context.instructions.summary": "{count} 个文件",
5917
6216
  "message.context.catalog.replaced": "替换目录",
5918
6217
  "message.context.catalog.more": "…还有 {count} 条",
5919
- "message.context.catalog.summary": "{count} 个 skill",
5920
6218
  "message.context.snapshot.supersedes": "取代先前的快照",
5921
6219
  "message.context.relay.from": "来自会话 {session}",
5922
6220
  "message.context.recall.counts": "保留 {retained} 条 · 省略 {omitted} 条",
@@ -5950,6 +6248,7 @@ window.__ModuleLoader__.load({
5950
6248
  "command.failed": "命令失败",
5951
6249
  "command.done": "已完成",
5952
6250
  "command.title": "命令",
6251
+ "command.imagesUnsupported": "/{command} 不接受图片附件,请先移除图片",
5953
6252
  "approval.waiting": "等待审批",
5954
6253
  "approval.detail.aria": "审批详情",
5955
6254
  "approval.escalation": "工具 {toolName} 请求越权执行",
@@ -6005,7 +6304,7 @@ window.__ModuleLoader__.load({
6005
6304
  "input.commands": "Commands",
6006
6305
  "input.stop": "Stop generating",
6007
6306
  "input.send": "Send message",
6008
- "placeholder.steerQueue": "Enter steers all queued messages",
6307
+ "placeholder.steerQueue": "Cmd/Ctrl+Enter steers all queued messages",
6009
6308
  "input.accessMode": "Access mode, current: {name}",
6010
6309
  "image.dropTitle": "Drag images here to add them",
6011
6310
  "image.dropDesc": "Up to {count} images, {size} each",
@@ -6028,6 +6327,7 @@ window.__ModuleLoader__.load({
6028
6327
  "image.fileTooLarge": "Each image must be smaller than {size}",
6029
6328
  "image.totalTooLarge": "Images exceed {size} in total; remove some and try again",
6030
6329
  "image.tooManyPixels": "Image resolution is too high; compress it and try again",
6330
+ "image.dimensionTooLarge": "Image sides must be at most {size}px; downscale it and try again",
6031
6331
  "image.modelUnsupported": "The current model does not support images; switch to a model that does",
6032
6332
  "image.subagentUnsupported": "Subagent sessions do not support images yet",
6033
6333
  "image.sendFailed": "Sending images failed ({reason}); re-add them and try again",
@@ -6073,19 +6373,21 @@ window.__ModuleLoader__.load({
6073
6373
  "chat.loadError": "Failed to load history: {message} ({code})",
6074
6374
  "chat.loadOlder": "Load earlier",
6075
6375
  "chat.toBottom": "Back to bottom",
6076
- "chat.deepDiving": "Deep diving…",
6077
- "chat.deepDiving.steered": "· {count} steered (turn continues)",
6376
+ "fileOpen.title": "Couldn’t open file",
6377
+ "fileOpen.unknown": "Couldn’t open this file",
6378
+ "fileOpen.folderTitle": "Couldn’t open folder",
6379
+ "fileOpen.folderUnknown": "Couldn’t open this folder",
6078
6380
  "message.extraBlock": "Extra content block",
6079
6381
  "message.contextInjection": "Context injection",
6080
6382
  "message.contextRecall": "Session recall",
6383
+ "message.referenceSummary": "Referenced session · {labels}",
6384
+ "message.referenceSeparator": ", ",
6081
6385
  "message.context.instructions.loaded": "loaded",
6082
6386
  "message.context.instructions.added": "added",
6083
6387
  "message.context.instructions.updated": "updated",
6084
6388
  "message.context.instructions.removed": "removed",
6085
- "message.context.instructions.summary": "{count} files",
6086
6389
  "message.context.catalog.replaced": "Replacement catalog",
6087
6390
  "message.context.catalog.more": "… {count} more",
6088
- "message.context.catalog.summary": "{count} skills",
6089
6391
  "message.context.snapshot.supersedes": "Supersedes earlier snapshots",
6090
6392
  "message.context.relay.from": "From session {session}",
6091
6393
  "message.context.recall.counts": "{retained} kept · {omitted} omitted",
@@ -6119,6 +6421,7 @@ window.__ModuleLoader__.load({
6119
6421
  "command.failed": "Command failed",
6120
6422
  "command.done": "Completed",
6121
6423
  "command.title": "Command",
6424
+ "command.imagesUnsupported": "/{command} does not accept image attachments; remove them first",
6122
6425
  "approval.waiting": "Waiting for approval",
6123
6426
  "approval.detail.aria": "Approval details",
6124
6427
  "approval.escalation": "Tool {toolName} requests privileged execution",
@@ -6171,21 +6474,21 @@ window.__ModuleLoader__.load({
6171
6474
  document.head.appendChild(tag);
6172
6475
  }
6173
6476
  var TodoPanel_module_css_default = {
6174
- "title": "_S9Ibq_title",
6175
- "list": "_S9Ibq_list",
6176
- "glyphPending": "_S9Ibq_glyphPending",
6477
+ "glyphCompleted": "_S9Ibq_glyphCompleted",
6177
6478
  "lead": "_S9Ibq_lead",
6178
- "glyphProgress": "_S9Ibq_glyphProgress",
6479
+ "glyph": "_S9Ibq_glyph",
6179
6480
  "progress": "_S9Ibq_progress",
6481
+ "header": "_S9Ibq_header",
6180
6482
  "chevron": "_S9Ibq_chevron",
6181
- "content": "_S9Ibq_content",
6483
+ "title": "_S9Ibq_title",
6182
6484
  "todo-progress-spin": "_S9Ibq_todo-progress-spin",
6183
- "header": "_S9Ibq_header",
6184
- "item": "_S9Ibq_item",
6185
- "body": "_S9Ibq_body",
6186
- "glyph": "_S9Ibq_glyph",
6187
6485
  "root": "_S9Ibq_root",
6188
- "glyphCompleted": "_S9Ibq_glyphCompleted"
6486
+ "body": "_S9Ibq_body",
6487
+ "list": "_S9Ibq_list",
6488
+ "item": "_S9Ibq_item",
6489
+ "content": "_S9Ibq_content",
6490
+ "glyphProgress": "_S9Ibq_glyphProgress",
6491
+ "glyphPending": "_S9Ibq_glyphPending"
6189
6492
  };
6190
6493
  //#endregion
6191
6494
  //#region src/client/skeleton/TodoPanel.tsx
@@ -6379,18 +6682,18 @@ window.__ModuleLoader__.load({
6379
6682
  document.head.appendChild(tag);
6380
6683
  }
6381
6684
  var QueueDock_module_css_default = {
6382
- "dock": "u7UfBG_dock",
6383
- "editor": "u7UfBG_editor",
6384
- "action": "u7UfBG_action",
6385
- "list": "u7UfBG_list",
6685
+ "header": "u7UfBG_header",
6386
6686
  "row": "u7UfBG_row",
6387
- "chevron": "u7UfBG_chevron",
6388
6687
  "lead": "u7UfBG_lead",
6389
- "header": "u7UfBG_header",
6688
+ "panel": "u7UfBG_panel",
6390
6689
  "count": "u7UfBG_count",
6690
+ "editor": "u7UfBG_editor",
6391
6691
  "actions": "u7UfBG_actions",
6392
- "panel": "u7UfBG_panel",
6393
- "preview": "u7UfBG_preview"
6692
+ "action": "u7UfBG_action",
6693
+ "list": "u7UfBG_list",
6694
+ "chevron": "u7UfBG_chevron",
6695
+ "preview": "u7UfBG_preview",
6696
+ "dock": "u7UfBG_dock"
6394
6697
  };
6395
6698
  //#endregion
6396
6699
  //#region src/client/queue/QueueDock.tsx
@@ -6638,7 +6941,7 @@ window.__ModuleLoader__.load({
6638
6941
  };
6639
6942
  //#endregion
6640
6943
  //#region \0xrk-css:C:\Users\sunflowerss\Desktop\XRKgrocery\XRK-harness\packages\client\ui-conversation\src\client\skeleton\HeroShell.module.css.mjs
6641
- const css$7 = ".W1fuRW_root{justify-content:center;align-items:center;min-width:0;height:100%;padding:0 24px;display:flex}.W1fuRW_stack{width:100%;max-width:var(--dsh-composer-card-max-width);flex-direction:column;align-items:stretch;gap:12px;display:flex;overflow:visible}.W1fuRW_headline{color:var(--dsw-alias-label-primary);grid-template-columns:34px auto auto;justify-content:center;align-items:center;column-gap:10px;font-size:26px;font-weight:500;line-height:32px;display:grid}.W1fuRW_headlineText{grid-area:1/2}.W1fuRW_previewBadge{border:1px solid var(--dsw-alias-interactive-bg-hover);background:var(--dsw-alias-state-business-tertiary);color:var(--dsw-alias-label-primary-bluish);font-family:var(--ds-font-family-code);white-space:nowrap;border-radius:24px;grid-area:1/3;align-self:start;margin-top:2px;margin-left:-3px;padding:1px 7px 0;font-size:12px;font-weight:500;line-height:18px}.W1fuRW_markHitbox{grid-area:1/1;justify-content:center;align-items:center;display:inline-flex}.W1fuRW_mark{color:var(--dsw-alias-label-primary);transform-origin:50% 60%}@keyframes W1fuRW_hero-mark-nudge{0%,to{transform:translate(0)rotate(0)}35%{transform:translate(-1px,-1px)rotate(-5deg)}70%{transform:translate(1px)rotate(3deg)}}@media (hover:hover) and (prefers-reduced-motion:no-preference){.W1fuRW_markHitbox:hover .W1fuRW_mark{animation:W1fuRW_hero-mark-nudge var(--ds-transition-duration-slow) var(--ds-ease-in-out)}}.W1fuRW_body{flex-direction:column;gap:12px;min-width:0;display:flex;position:relative;overflow:visible}.W1fuRW_body>*{z-index:1;position:relative}.W1fuRW_body>.W1fuRW_workspaceRow{z-index:10;align-items:center;min-width:0;padding-left:8px;display:flex}.W1fuRW_workspace{max-width:min(100%,360px);min-height:28px;color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border:none;border-radius:16px;align-items:center;gap:4px;padding:0 8px;font-size:13px;font-weight:500;line-height:20px;display:inline-flex}.W1fuRW_workspace:not(:disabled):hover,.W1fuRW_workspace[aria-expanded=true]{background:var(--dsw-alias-interactive-bg-hover)}.W1fuRW_workspace:disabled{cursor:default}.W1fuRW_folder{color:var(--dsw-alias-label-primary);flex:none}.W1fuRW_workspaceLabel{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.W1fuRW_chevron{color:var(--dsw-alias-label-caption);flex:none}.W1fuRW_modalInput{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);width:100%;height:44px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:22px;outline:none;padding:7px 14px;font-size:14px;font-weight:400;line-height:22px}.W1fuRW_modalInput::placeholder{color:var(--dsw-alias-label-caption)}.W1fuRW_modalInput:disabled{color:var(--dsw-alias-label-dimmed)}.W1fuRW_modalAction{min-width:72px}.W1fuRW_modalError{color:var(--dsw-alias-state-error-primary);margin-top:8px;font-size:12px;line-height:18px}";
6944
+ const css$7 = ".W1fuRW_root{justify-content:center;align-items:center;min-width:0;height:100%;padding:0 24px;display:flex}.W1fuRW_stack{width:100%;max-width:var(--dsh-composer-card-max-width);flex-direction:column;align-items:stretch;gap:12px;display:flex;overflow:visible}.W1fuRW_headline{color:var(--dsw-alias-label-primary);grid-template-columns:34px auto auto;justify-content:center;align-items:center;column-gap:10px;font-size:26px;font-weight:500;line-height:32px;display:grid}.W1fuRW_headlineText{grid-area:1/2}.W1fuRW_previewBadge{border:1px solid var(--dsw-alias-interactive-bg-hover);background:var(--dsw-alias-state-business-tertiary);color:var(--dsw-alias-label-primary-bluish);font-family:var(--ds-font-family-code);white-space:nowrap;border-radius:24px;grid-area:1/3;align-self:start;margin-top:2px;margin-left:-3px;padding:1px 7px 0;font-size:12px;font-weight:500;line-height:18px}.W1fuRW_fishHitbox{grid-area:1/1;justify-content:center;align-items:center;display:inline-flex}.W1fuRW_fish{color:var(--dsw-alias-label-primary);transform-origin:50% 60%}@keyframes W1fuRW_hero-fish-swim{0%,to{transform:translate(0)rotate(0)}35%{transform:translate(-1px,-1px)rotate(-5deg)}70%{transform:translate(1px)rotate(3deg)}}@media (hover:hover) and (prefers-reduced-motion:no-preference){.W1fuRW_fishHitbox:hover .W1fuRW_fish{animation:W1fuRW_hero-fish-swim var(--ds-transition-duration-slow) var(--ds-ease-in-out)}}.W1fuRW_body{flex-direction:column;gap:12px;min-width:0;display:flex;position:relative;overflow:visible}.W1fuRW_body>*{z-index:1;position:relative}.W1fuRW_body>.W1fuRW_workspaceRow{z-index:10;align-items:center;min-width:0;padding-left:8px;display:flex}.W1fuRW_workspace{max-width:min(100%,360px);min-height:28px;color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border:none;border-radius:16px;align-items:center;gap:4px;padding:0 8px;font-size:13px;font-weight:500;line-height:20px;display:inline-flex}.W1fuRW_workspace:not(:disabled):hover,.W1fuRW_workspace[aria-expanded=true]{background:var(--dsw-alias-interactive-bg-hover)}.W1fuRW_workspace:disabled{cursor:default}.W1fuRW_folder{color:var(--dsw-alias-label-primary);flex:none}.W1fuRW_workspaceLabel{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.W1fuRW_chevron{color:var(--dsw-alias-label-caption);flex:none}.W1fuRW_modalInput{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);width:100%;height:44px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:22px;outline:none;padding:7px 14px;font-size:14px;font-weight:400;line-height:22px}.W1fuRW_modalInput::placeholder{color:var(--dsw-alias-label-caption)}.W1fuRW_modalInput:disabled{color:var(--dsw-alias-label-dimmed)}.W1fuRW_modalAction{min-width:72px}.W1fuRW_modalError{color:var(--dsw-alias-state-error-primary);margin-top:8px;font-size:12px;line-height:18px}";
6642
6945
  const tagId$7 = "@xrkseek/client-ui-conversation/HeroShell.module.css";
6643
6946
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$7) + "]") === null) {
6644
6947
  const tag = document.createElement("style");
@@ -6648,23 +6951,23 @@ window.__ModuleLoader__.load({
6648
6951
  document.head.appendChild(tag);
6649
6952
  }
6650
6953
  var HeroShell_module_css_default = {
6651
- "hero-mark-nudge": "W1fuRW_hero-mark-nudge",
6652
- "headlineText": "W1fuRW_headlineText",
6653
- "previewBadge": "W1fuRW_previewBadge",
6654
- "modalInput": "W1fuRW_modalInput",
6954
+ "chevron": "W1fuRW_chevron",
6655
6955
  "workspaceRow": "W1fuRW_workspaceRow",
6656
- "markHitbox": "W1fuRW_markHitbox",
6657
- "headline": "W1fuRW_headline",
6658
- "root": "W1fuRW_root",
6659
- "folder": "W1fuRW_folder",
6660
6956
  "workspace": "W1fuRW_workspace",
6661
- "modalAction": "W1fuRW_modalAction",
6957
+ "headline": "W1fuRW_headline",
6958
+ "modalInput": "W1fuRW_modalInput",
6662
6959
  "stack": "W1fuRW_stack",
6960
+ "previewBadge": "W1fuRW_previewBadge",
6961
+ "modalError": "W1fuRW_modalError",
6962
+ "fish": "W1fuRW_fish",
6963
+ "root": "W1fuRW_root",
6964
+ "fishHitbox": "W1fuRW_fishHitbox",
6663
6965
  "body": "W1fuRW_body",
6664
- "chevron": "W1fuRW_chevron",
6665
- "mark": "W1fuRW_mark",
6966
+ "folder": "W1fuRW_folder",
6967
+ "hero-fish-swim": "W1fuRW_hero-fish-swim",
6666
6968
  "workspaceLabel": "W1fuRW_workspaceLabel",
6667
- "modalError": "W1fuRW_modalError"
6969
+ "modalAction": "W1fuRW_modalAction",
6970
+ "headlineText": "W1fuRW_headlineText"
6668
6971
  };
6669
6972
  //#endregion
6670
6973
  //#region src/client/skeleton/EmptyHero.tsx
@@ -6774,7 +7077,7 @@ window.__ModuleLoader__.load({
6774
7077
  * @param props - see {@link HeroShellProps}.
6775
7078
  * @returns the centered hero element tree.
6776
7079
  */
6777
- function HeroShell({ t, children }) {
7080
+ function HeroShell({ t, renderSlot, children }) {
6778
7081
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6779
7082
  className: HeroShell_module_css_default.root,
6780
7083
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
@@ -6783,11 +7086,14 @@ window.__ModuleLoader__.load({
6783
7086
  className: HeroShell_module_css_default.headline,
6784
7087
  children: [
6785
7088
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6786
- className: HeroShell_module_css_default.markHitbox,
6787
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_xrkseek_client_ui_primitives.BrandMark, {
7089
+ className: HeroShell_module_css_default.fishHitbox,
7090
+ children: renderSlot("conversation.hero.brand.mark", {
6788
7091
  size: 34,
6789
- className: HeroShell_module_css_default.mark
6790
- })
7092
+ className: HeroShell_module_css_default.fish
7093
+ }, { fallback: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_xrkseek_client_ui_primitives.FishLogo, {
7094
+ size: 34,
7095
+ className: HeroShell_module_css_default.fish
7096
+ }) })
6791
7097
  }),
6792
7098
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
6793
7099
  className: HeroShell_module_css_default.headlineText,
@@ -6804,7 +7110,7 @@ window.__ModuleLoader__.load({
6804
7110
  }
6805
7111
  //#endregion
6806
7112
  //#region \0xrk-css:C:\Users\sunflowerss\Desktop\XRKgrocery\XRK-harness\packages\client\ui-conversation\src\client\skeleton\ConversationRoot.module.css.mjs
6807
- const css$6 = ".MBmynq_root{background:var(--dsw-alias-bg-base);--dsh-chat-content-width:748px;--dsh-composer-card-max-width:calc(var(--dsh-chat-content-width) + 32px);--dsh-composer-side-clearance:16px;--dsh-composer-dock-inset:8px;flex-direction:column;min-width:0;height:100%;display:flex}.MBmynq_header{border-bottom:1px solid #0000;flex:none;padding:12px 28px 0 20px;position:relative}.MBmynq_header:after{content:\"\";z-index:0;background:var(--dsw-alias-border-l2);pointer-events:none;height:1px;position:absolute;bottom:1px;left:0;right:0}.MBmynq_headerHidden{display:none}.MBmynq_titleRow{align-items:center;gap:0;min-height:32px;display:flex}.MBmynq_titleCluster{flex:1;align-items:center;gap:10px;min-width:0;display:flex}.MBmynq_crumbs{white-space:nowrap;align-items:center;gap:4px;min-width:0;display:flex;overflow:hidden}.MBmynq_crumbSeg{align-items:center;gap:4px;min-width:0;display:inline-flex}.MBmynq_crumbSep{color:var(--dsw-alias-label-caption);font-size:14px;line-height:20px}.MBmynq_crumb{max-width:220px;color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:12px;padding:4px 8px;font-size:14px;line-height:20px;overflow:hidden}.MBmynq_crumb:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.MBmynq_crumbCurrent{color:var(--dsw-alias-label-primary);cursor:default;font-weight:500}.MBmynq_headerActions{flex:none;align-items:center;gap:8px;display:flex}.MBmynq_headerUtilities{flex:none;align-items:center;gap:8px;margin-left:20px;display:flex}.MBmynq_headerUtilities:empty{display:none}.MBmynq_tabs{z-index:1;gap:36px;margin-top:4px;padding-left:8px;display:flex;position:relative}.MBmynq_tab{color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;padding:0 0 11px;font-size:13px;font-weight:500;line-height:16px;position:relative}.MBmynq_tab:after{content:\"\";background:0 0;border-radius:2px;height:2px;position:absolute;bottom:1px;left:0;right:0}.MBmynq_tabActive{color:var(--dsw-alias-state-business-primary)}.MBmynq_tabActive:after{background:var(--dsw-alias-state-business-primary)}.MBmynq_viewArea{flex-direction:column;flex:1;min-height:0;display:flex}.MBmynq_composerStack{--dsh-composer-stack-gap:6px;gap:var(--dsh-composer-stack-gap);flex-direction:column;display:flex}.MBmynq_composerSeat{--dsh-composer-text-max-height:336px;flex-direction:column;flex:none;display:flex}.MBmynq_root[data-phase=active]{overflow:hidden}.MBmynq_root[data-phase=active] .MBmynq_header{flex:none}.MBmynq_scrollBody{scrollbar-gutter:stable;flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden auto}.MBmynq_root[data-phase=active] .MBmynq_viewArea{flex:1 0 auto;min-height:auto}.MBmynq_root[data-phase=active] .MBmynq_composerSeat{z-index:7;background:linear-gradient(180deg, color-mix(in srgb, var(--dsw-alias-bg-base) 0%, transparent) 0px, var(--dsw-alias-bg-base) 36px);position:sticky;bottom:0}.MBmynq_scrollBody:has([data-conversation-composer-overlay]){scrollbar-gutter:auto;position:relative;overflow:hidden auto}.MBmynq_scrollBody:has([data-conversation-composer-overlay])>[data-slot=conversation\\.session]>.MBmynq_viewArea{flex:1 1 0;min-height:0;overflow:hidden}.MBmynq_scrollBody:has([data-conversation-composer-overlay])>.MBmynq_composerSeat{right:var(--dsh-scrollbar-width);position:absolute;bottom:0;left:0}.MBmynq_composerHero{width:min(calc(var(--dsh-composer-card-max-width) + 2 * var(--dsh-composer-side-clearance)), 100%);z-index:1;align-self:center;gap:8px;padding-bottom:32px;position:relative}.MBmynq_heroGlow{z-index:-1;aspect-ratio:1051/468;pointer-events:none;width:135.438%;position:absolute;bottom:92px;left:50%;transform:translate(-50%,50%)}.MBmynq_heroWorkspaceRow{align-items:center;gap:2px;min-width:0;margin-top:4px;padding-left:20px;display:flex}.MBmynq_root[data-phase=hero] .MBmynq_scrollBody{justify-content:center;overflow-y:auto}.MBmynq_root[data-phase=settling] .MBmynq_composerSeat{visibility:hidden}";
7113
+ const css$6 = ".MBmynq_root{background:var(--dsw-alias-bg-base);--dsh-chat-content-width:748px;--dsh-composer-card-max-width:calc(var(--dsh-chat-content-width) + 32px);--dsh-composer-side-clearance:16px;--dsh-composer-dock-inset:8px;flex-direction:column;min-width:0;height:100%;display:flex}.MBmynq_header{border-bottom:1px solid #0000;flex:none;padding:12px 28px 0 20px;position:relative}.MBmynq_header:after{content:\"\";z-index:0;background:var(--dsw-alias-border-l2);pointer-events:none;height:1px;position:absolute;bottom:1px;left:0;right:0}.MBmynq_headerHidden{display:none}.MBmynq_titleRow{align-items:center;gap:0;min-height:32px;display:flex}.MBmynq_titleCluster{flex:1;align-items:center;gap:10px;min-width:0;display:flex}.MBmynq_crumbs{white-space:nowrap;align-items:center;gap:4px;min-width:0;display:flex;overflow:hidden}.MBmynq_crumbSeg{align-items:center;gap:4px;min-width:0;display:inline-flex}.MBmynq_crumbSep{color:var(--dsw-alias-label-caption);font-size:14px;line-height:20px}.MBmynq_crumb{max-width:220px;color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:12px;padding:4px 8px;font-size:14px;line-height:20px;overflow:hidden}.MBmynq_crumbSubagent{font-size:12px;line-height:18px}.MBmynq_crumb:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.MBmynq_crumbCurrent{color:var(--dsw-alias-label-primary);cursor:default;font-weight:500}.MBmynq_headerActions{flex:none;align-items:center;gap:8px;display:flex}.MBmynq_headerUtilities{flex:none;align-items:center;gap:8px;margin-left:20px;display:flex}.MBmynq_headerUtilities:empty{display:none}.MBmynq_tabs{z-index:1;gap:36px;margin-top:4px;padding-left:8px;display:flex;position:relative}.MBmynq_tab{color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;padding:0 0 11px;font-size:13px;font-weight:500;line-height:16px;position:relative}.MBmynq_tab:after{content:\"\";background:0 0;border-radius:2px;height:2px;position:absolute;bottom:1px;left:0;right:0}.MBmynq_tabActive{color:var(--dsw-alias-state-business-primary)}.MBmynq_tabActive:after{background:var(--dsw-alias-state-business-primary)}.MBmynq_viewArea{flex-direction:column;flex:1;min-height:0;display:flex}.MBmynq_composerStack{--dsh-composer-stack-gap:6px;gap:var(--dsh-composer-stack-gap);flex-direction:column;display:flex}.MBmynq_composerSeat{--dsh-composer-text-max-height:336px;flex-direction:column;flex:none;display:flex}.MBmynq_root[data-phase=active]{overflow:hidden}.MBmynq_root[data-phase=active] .MBmynq_header{flex:none}.MBmynq_scrollBody{scrollbar-gutter:stable;flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden auto}.MBmynq_root[data-phase=active] .MBmynq_viewArea{flex:1 0 auto;min-height:auto}.MBmynq_root[data-phase=active] .MBmynq_composerSeat{z-index:7;background:linear-gradient(180deg, color-mix(in srgb, var(--dsw-alias-bg-base) 0%, transparent) 0px, var(--dsw-alias-bg-base) 36px);position:sticky;bottom:0}.MBmynq_scrollBody:has([data-conversation-composer-overlay]){scrollbar-gutter:auto;position:relative;overflow:hidden auto}.MBmynq_scrollBody:has([data-conversation-composer-overlay])>[data-slot=conversation\\.session]>.MBmynq_viewArea{flex:1 1 0;min-height:0;overflow:hidden}.MBmynq_scrollBody:has([data-conversation-composer-overlay])>.MBmynq_composerSeat{right:var(--dsh-scrollbar-width);position:absolute;bottom:0;left:0}.MBmynq_composerHero{width:min(calc(var(--dsh-composer-card-max-width) + 2 * var(--dsh-composer-side-clearance)), 100%);z-index:1;align-self:center;gap:8px;padding-bottom:32px;position:relative}.MBmynq_heroGlow{z-index:-1;aspect-ratio:1051/468;pointer-events:none;width:135.438%;position:absolute;bottom:92px;left:50%;transform:translate(-50%,50%)}.MBmynq_heroWorkspaceRow{align-items:center;gap:2px;min-width:0;margin-top:4px;padding-left:20px;display:flex}.MBmynq_root[data-phase=hero] .MBmynq_scrollBody{justify-content:center;overflow-y:auto}.MBmynq_root[data-phase=settling] .MBmynq_composerSeat{visibility:hidden}";
6808
7114
  const tagId$6 = "@xrkseek/client-ui-conversation/ConversationRoot.module.css";
6809
7115
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$6) + "]") === null) {
6810
7116
  const tag = document.createElement("style");
@@ -6814,28 +7120,29 @@ window.__ModuleLoader__.load({
6814
7120
  document.head.appendChild(tag);
6815
7121
  }
6816
7122
  var ConversationRoot_module_css_default = {
6817
- "header": "MBmynq_header",
6818
- "headerHidden": "MBmynq_headerHidden",
6819
- "tab": "MBmynq_tab",
6820
- "viewArea": "MBmynq_viewArea",
6821
- "scrollBody": "MBmynq_scrollBody",
6822
- "heroWorkspaceRow": "MBmynq_heroWorkspaceRow",
6823
- "composerStack": "MBmynq_composerStack",
6824
7123
  "crumbSeg": "MBmynq_crumbSeg",
6825
- "composerHero": "MBmynq_composerHero",
6826
- "heroGlow": "MBmynq_heroGlow",
6827
- "crumbCurrent": "MBmynq_crumbCurrent",
6828
- "crumbs": "MBmynq_crumbs",
6829
7124
  "root": "MBmynq_root",
6830
- "headerUtilities": "MBmynq_headerUtilities",
7125
+ "crumbSep": "MBmynq_crumbSep",
6831
7126
  "composerSeat": "MBmynq_composerSeat",
6832
7127
  "titleCluster": "MBmynq_titleCluster",
6833
7128
  "tabActive": "MBmynq_tabActive",
6834
- "tabs": "MBmynq_tabs",
7129
+ "heroWorkspaceRow": "MBmynq_heroWorkspaceRow",
7130
+ "crumbCurrent": "MBmynq_crumbCurrent",
6835
7131
  "headerActions": "MBmynq_headerActions",
6836
- "crumbSep": "MBmynq_crumbSep",
7132
+ "crumbs": "MBmynq_crumbs",
7133
+ "header": "MBmynq_header",
7134
+ "headerHidden": "MBmynq_headerHidden",
7135
+ "scrollBody": "MBmynq_scrollBody",
7136
+ "headerUtilities": "MBmynq_headerUtilities",
7137
+ "heroGlow": "MBmynq_heroGlow",
7138
+ "tab": "MBmynq_tab",
7139
+ "viewArea": "MBmynq_viewArea",
7140
+ "composerStack": "MBmynq_composerStack",
7141
+ "composerHero": "MBmynq_composerHero",
7142
+ "titleRow": "MBmynq_titleRow",
7143
+ "crumbSubagent": "MBmynq_crumbSubagent",
6837
7144
  "crumb": "MBmynq_crumb",
6838
- "titleRow": "MBmynq_titleRow"
7145
+ "tabs": "MBmynq_tabs"
6839
7146
  };
6840
7147
  //#endregion
6841
7148
  //#region src/client/skeleton/ConversationRoot.tsx
@@ -6934,7 +7241,10 @@ window.__ModuleLoader__.load({
6934
7241
  className: clsx(ConversationRoot_module_css_default.composerStack, hero && ConversationRoot_module_css_default.composerHero),
6935
7242
  children: [
6936
7243
  hero && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(HeroGlow, { className: ConversationRoot_module_css_default.heroGlow }),
6937
- hero && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(HeroShell, { t }),
7244
+ hero && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(HeroShell, {
7245
+ t,
7246
+ renderSlot
7247
+ }),
6938
7248
  hero && heroWorkspaceRow,
6939
7249
  zone !== void 0 && renderSlot("conversation.input.dock", zone),
6940
7250
  inputBar
@@ -6984,7 +7294,8 @@ window.__ModuleLoader__.load({
6984
7294
  if (summary === void 0) break;
6985
7295
  chain.unshift({
6986
7296
  id: summary.id,
6987
- displayTitle: summary.displayTitle
7297
+ displayTitle: summary.displayTitle,
7298
+ subagent: summary.origin === "subagent"
6988
7299
  });
6989
7300
  if (summary.origin !== "subagent") break;
6990
7301
  cursor = summary.parentId;
@@ -7021,20 +7332,29 @@ window.__ModuleLoader__.load({
7021
7332
  "aria-label": t("session.hierarchy"),
7022
7333
  children: [ancestry.map((summary, index) => {
7023
7334
  const last = index === ancestry.length - 1;
7335
+ const title = /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
7336
+ type: "button",
7337
+ className: clsx(ConversationRoot_module_css_default.crumb, summary.subagent && ConversationRoot_module_css_default.crumbSubagent, last && ConversationRoot_module_css_default.crumbCurrent),
7338
+ disabled: last,
7339
+ onClick: () => {
7340
+ open(summary.id);
7341
+ },
7342
+ children: summary.displayTitle
7343
+ });
7344
+ const lineage = last || summary.subagent;
7345
+ const lineageOwner = {
7346
+ lineageSessionId: summary.id,
7347
+ displayTitle: summary.displayTitle,
7348
+ ...last ? {} : { openTitle: () => {
7349
+ open(summary.id);
7350
+ } }
7351
+ };
7024
7352
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
7025
7353
  className: ConversationRoot_module_css_default.crumbSeg,
7026
7354
  children: [index > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7027
7355
  className: ConversationRoot_module_css_default.crumbSep,
7028
7356
  children: "/"
7029
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
7030
- type: "button",
7031
- className: clsx(ConversationRoot_module_css_default.crumb, last && ConversationRoot_module_css_default.crumbCurrent),
7032
- disabled: last,
7033
- onClick: () => {
7034
- open(summary.id);
7035
- },
7036
- children: summary.displayTitle
7037
- })]
7357
+ }), lineage ? summary.subagent ? renderSlot("conversation.session.header.lineage", lineageOwner, { fallback: title }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [title, renderSlot("conversation.session.header.lineage", lineageOwner, { fallback: null })] }) : title]
7038
7358
  }, summary.id);
7039
7359
  }), ancestry.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7040
7360
  className: ConversationRoot_module_css_default.crumbCurrent,
@@ -7111,15 +7431,15 @@ window.__ModuleLoader__.load({
7111
7431
  document.head.appendChild(tag);
7112
7432
  }
7113
7433
  var DetailsPanel_module_css_default = {
7114
- "close": "H9rWiW_close",
7115
- "title": "H9rWiW_title",
7116
- "body": "H9rWiW_body",
7117
- "sectionLabel": "H9rWiW_sectionLabel",
7118
7434
  "header": "H9rWiW_header",
7119
7435
  "empty": "H9rWiW_empty",
7120
- "root": "H9rWiW_root",
7436
+ "sectionLabel": "H9rWiW_sectionLabel",
7437
+ "title": "H9rWiW_title",
7121
7438
  "section": "H9rWiW_section",
7122
- "code": "H9rWiW_code"
7439
+ "root": "H9rWiW_root",
7440
+ "code": "H9rWiW_code",
7441
+ "body": "H9rWiW_body",
7442
+ "close": "H9rWiW_close"
7123
7443
  };
7124
7444
  //#endregion
7125
7445
  //#region src/client/skeleton/DetailsPanel.tsx
@@ -7662,6 +7982,76 @@ window.__ModuleLoader__.load({
7662
7982
  function orderedVisible(nodes) {
7663
7983
  return nodes.filter((node) => node.visibility === "visible").sort((left, right) => left.anchorSeq - right.anchorSeq || left.key.localeCompare(right.key));
7664
7984
  }
7985
+ function referenceMessageSeq(node) {
7986
+ const candidate = node;
7987
+ return candidate.kind === "user" || candidate.kind === "steering" ? candidate.data.seq : void 0;
7988
+ }
7989
+ function followingRecall(node) {
7990
+ const candidate = node;
7991
+ if (candidate.kind !== "context") return void 0;
7992
+ return {
7993
+ messageSeq: candidate.data.seq - 1,
7994
+ labels: (0, _xrkseek_client_runtime_client.sessionRecallLabels)(candidate.data.source)
7995
+ };
7996
+ }
7997
+ function withReferenceLabels(node, labels) {
7998
+ const candidate = node;
7999
+ if (candidate.kind !== "user" && candidate.kind !== "steering") return node;
8000
+ const current = candidate.data.referenceLabels ?? EMPTY_KEYS;
8001
+ const hasLabels = Object.hasOwn(candidate.data, "referenceLabels");
8002
+ if (sameReferences$1(current, labels) && hasLabels === labels.length > 0) return node;
8003
+ const data = { ...candidate.data };
8004
+ if (labels.length === 0) delete data.referenceLabels;
8005
+ else data.referenceLabels = labels;
8006
+ return {
8007
+ ...candidate,
8008
+ data
8009
+ };
8010
+ }
8011
+ /** Associates a direct message with the sourced recall event that immediately follows it. */
8012
+ var ReferenceLabelProjector = class {
8013
+ messagesBySeq = /* @__PURE__ */ new Map();
8014
+ labelsByMessageSeq = /* @__PURE__ */ new Map();
8015
+ replace(nodes) {
8016
+ this.messagesBySeq.clear();
8017
+ this.labelsByMessageSeq.clear();
8018
+ for (const node of nodes) {
8019
+ const messageSeq = referenceMessageSeq(node);
8020
+ if (messageSeq !== void 0) this.messagesBySeq.set(messageSeq, node.key);
8021
+ const recall = followingRecall(node);
8022
+ if (recall !== void 0 && recall.labels.length > 0) this.labelsByMessageSeq.set(recall.messageSeq, recall.labels);
8023
+ }
8024
+ return nodes.map((node) => {
8025
+ const messageSeq = referenceMessageSeq(node);
8026
+ return messageSeq === void 0 ? node : withReferenceLabels(node, this.labelsByMessageSeq.get(messageSeq) ?? EMPTY_KEYS);
8027
+ });
8028
+ }
8029
+ apply(upserts, store) {
8030
+ const byKey = new Map(upserts.map((node) => [node.key, node]));
8031
+ const affected = /* @__PURE__ */ new Set();
8032
+ for (const node of upserts) {
8033
+ const messageSeq = referenceMessageSeq(node);
8034
+ if (messageSeq !== void 0) {
8035
+ this.messagesBySeq.set(messageSeq, node.key);
8036
+ affected.add(messageSeq);
8037
+ }
8038
+ const recall = followingRecall(node);
8039
+ if (recall === void 0) continue;
8040
+ const current = this.labelsByMessageSeq.get(recall.messageSeq);
8041
+ if (recall.labels.length === 0) this.labelsByMessageSeq.delete(recall.messageSeq);
8042
+ else this.labelsByMessageSeq.set(recall.messageSeq, current !== void 0 && sameReferences$1(current, recall.labels) ? current : recall.labels);
8043
+ affected.add(recall.messageSeq);
8044
+ }
8045
+ for (const messageSeq of affected) {
8046
+ const key = this.messagesBySeq.get(messageSeq);
8047
+ if (key === void 0) continue;
8048
+ const node = byKey.get(key) ?? store.get(key);
8049
+ if (node === void 0) continue;
8050
+ byKey.set(key, withReferenceLabels(node, this.labelsByMessageSeq.get(messageSeq) ?? EMPTY_KEYS));
8051
+ }
8052
+ return [...byKey.values()];
8053
+ }
8054
+ };
7665
8055
  const EMPTY_CONTRIBUTION = {
7666
8056
  anchorSeq: 0,
7667
8057
  nodes: EMPTY_LIST,
@@ -7852,6 +8242,7 @@ window.__ModuleLoader__.load({
7852
8242
  store = new MutableChatNodeStore();
7853
8243
  locations = new MutableChatLocationIndex();
7854
8244
  legacy = new LegacySliceBuilder();
8245
+ referenceLabels = new ReferenceLabelProjector();
7855
8246
  order = EMPTY_KEYS;
7856
8247
  empty;
7857
8248
  constructor() {
@@ -7861,28 +8252,30 @@ window.__ModuleLoader__.load({
7861
8252
  });
7862
8253
  }
7863
8254
  replace(input) {
7864
- this.store.replace(input.nodes);
7865
- this.order = orderedVisible(input.nodes).map((node) => node.key);
8255
+ const nodes = this.referenceLabels.replace(input.nodes);
8256
+ this.store.replace(nodes);
8257
+ this.order = orderedVisible(nodes).map((node) => node.key);
7866
8258
  this.locations.rebuild(this.order, this.store);
7867
- return this.snapshot(input.timeline, this.legacy.replace(input.nodes, input.timeline));
8259
+ return this.snapshot(input.timeline, this.legacy.replace(nodes, input.timeline));
7868
8260
  }
7869
8261
  apply(input) {
8262
+ const upserts = this.referenceLabels.apply(input.upserts, this.store);
7870
8263
  let structural = false;
7871
8264
  const contentOnly = [];
7872
- for (const node of input.upserts) {
8265
+ for (const node of upserts) {
7873
8266
  const previous = this.store.get(node.key);
7874
8267
  const nodeStructural = previous === void 0 || previous.anchorSeq !== node.anchorSeq || previous.visibility !== node.visibility || locationIdentity(previous.location) !== locationIdentity(node.location);
7875
8268
  structural ||= nodeStructural;
7876
8269
  if (!nodeStructural) contentOnly.push(node);
7877
8270
  }
7878
- this.store.upsert(input.upserts);
8271
+ this.store.upsert(upserts);
7879
8272
  if (structural) {
7880
8273
  const next = orderedVisible(this.store.values()).map((node) => node.key);
7881
8274
  this.order = sameReferences$1(this.order, next) ? this.order : next;
7882
8275
  this.locations.rebuild(this.order, this.store);
7883
8276
  }
7884
8277
  this.locations.touch(contentOnly);
7885
- return this.snapshot(input.timeline, this.legacy.apply(input.upserts, input.timeline));
8278
+ return this.snapshot(input.timeline, this.legacy.apply(upserts, input.timeline));
7886
8279
  }
7887
8280
  snapshot(timeline, legacy = this.legacy.replace(EMPTY_LIST, timeline)) {
7888
8281
  return {
@@ -8345,19 +8738,14 @@ window.__ModuleLoader__.load({
8345
8738
  const MAX_DEPTH = 256;
8346
8739
  const projectedBlocks = /* @__PURE__ */ new WeakMap();
8347
8740
  function jsonArguments(value) {
8348
- if (typeof value === "string") return value;
8349
- try {
8350
- return JSON.stringify(value ?? {});
8351
- } catch {
8352
- return "{}";
8353
- }
8741
+ return JSON.stringify(value);
8354
8742
  }
8355
8743
  function rootCall(match) {
8356
8744
  if (match.event.type !== "tool/call") throw new Error("tool-call start requires tool/call");
8357
8745
  return {
8358
8746
  callId: String(match.event.data.callId),
8359
8747
  name: match.event.data.name,
8360
- argsRaw: jsonArguments(match.event.data.arguments),
8748
+ argsRaw: match.event.data.arguments,
8361
8749
  turn: match.event.data.turn,
8362
8750
  step: match.event.data.step,
8363
8751
  time: match.event.time,
@@ -8964,15 +9352,15 @@ window.__ModuleLoader__.load({
8964
9352
  document.head.appendChild(tag);
8965
9353
  }
8966
9354
  var ReasoningRow_module_css_default = {
9355
+ "title": "dc9yZG_title",
8967
9356
  "root": "dc9yZG_root",
8968
- "chevron": "dc9yZG_chevron",
8969
9357
  "separator": "dc9yZG_separator",
8970
- "dsh-reasoning-row-sweep": "dc9yZG_dsh-reasoning-row-sweep",
8971
- "thinkBody": "dc9yZG_thinkBody",
9358
+ "chevron": "dc9yZG_chevron",
8972
9359
  "leading": "dc9yZG_leading",
8973
- "summary": "dc9yZG_summary",
9360
+ "thinkBody": "dc9yZG_thinkBody",
8974
9361
  "row": "dc9yZG_row",
8975
- "title": "dc9yZG_title"
9362
+ "dsh-reasoning-row-sweep": "dc9yZG_dsh-reasoning-row-sweep",
9363
+ "summary": "dc9yZG_summary"
8976
9364
  };
8977
9365
  //#endregion
8978
9366
  //#region src/client/chat/ReasoningRow.tsx
@@ -9047,7 +9435,7 @@ window.__ModuleLoader__.load({
9047
9435
  }
9048
9436
  //#endregion
9049
9437
  //#region \0xrk-css:C:\Users\sunflowerss\Desktop\XRKgrocery\XRK-harness\packages\client\ui-conversation\src\client\chat\AssistantMarkdown.module.css.mjs
9050
- const css$2 = ".wAd5ea_root{color:var(--dsw-alias-label-primary);flex-direction:column;font-size:16px;line-height:28px;display:flex}.wAd5ea_body{flex-direction:column;gap:16px;display:flex}.wAd5ea_stopped{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-tertiary);border-radius:6px;align-self:flex-start;padding:0 6px;font-size:11px;line-height:18px}.wAd5ea_actions{margin-top:16px;margin-left:-6px}";
9438
+ const css$2 = ".wAd5ea_root{color:var(--dsw-alias-label-primary);flex-direction:column;font-size:16px;line-height:28px;display:flex}.wAd5ea_body{flex-direction:column;gap:16px;display:flex}.wAd5ea_body .md-table-wide{--dsh-table-spare:max(0px, calc((100cqw - var(--dsh-chat-content-width)) / 2));--dsh-table-lead:calc(var(--dsh-table-spare) + min(var(--dsh-chat-content-width), 100cqw) - 100%);box-sizing:border-box;width:calc(100% + var(--dsh-table-lead) + var(--dsh-table-spare));max-width:none;margin-left:calc(-1 * var(--dsh-table-lead));padding-left:var(--dsh-table-lead)}.wAd5ea_stopped{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-tertiary);border-radius:6px;align-self:flex-start;padding:0 6px;font-size:11px;line-height:18px}.wAd5ea_actions{margin-top:16px;margin-left:-6px}";
9051
9439
  const tagId$2 = "@xrkseek/client-ui-conversation/AssistantMarkdown.module.css";
9052
9440
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$2) + "]") === null) {
9053
9441
  const tag = document.createElement("style");
@@ -9057,16 +9445,15 @@ window.__ModuleLoader__.load({
9057
9445
  document.head.appendChild(tag);
9058
9446
  }
9059
9447
  var AssistantMarkdown_module_css_default = {
9060
- "body": "wAd5ea_body",
9061
- "stopped": "wAd5ea_stopped",
9062
9448
  "root": "wAd5ea_root",
9063
- "actions": "wAd5ea_actions"
9449
+ "body": "wAd5ea_body",
9450
+ "actions": "wAd5ea_actions",
9451
+ "stopped": "wAd5ea_stopped"
9064
9452
  };
9065
9453
  //#endregion
9066
9454
  //#region src/client/chat/AssistantMarkdown.tsx
9067
9455
  /** Reasoning block as the Think variant summary row (figma 39:28304). */
9068
- const AssistantMarkdown = (0, react.memo)(function AssistantMarkdown({ blocks, streaming, interrupted, loadImage, mentions, t }) {
9069
- const imageLoader = loadImage ?? (() => Promise.reject(new Error(t("image.serviceUnavailable"))));
9456
+ const AssistantMarkdown = (0, react.memo)(function AssistantMarkdown({ blocks, streaming, interrupted, renderMessageImages, mentions, t }) {
9070
9457
  const codeLabels = (0, react.useMemo)(() => ({
9071
9458
  copyLabel: t("copy"),
9072
9459
  copiedLabel: t("copied")
@@ -9102,12 +9489,10 @@ window.__ModuleLoader__.load({
9102
9489
  group.push(next);
9103
9490
  i += 1;
9104
9491
  }
9105
- rendered.push(/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_xrkseek_client_ui_attachment.ImageGallery, {
9106
- images: group,
9107
- load: imageLoader,
9108
- align: "start",
9109
- labels: messageImageLabels(t)
9110
- }, start));
9492
+ rendered.push(/* @__PURE__ */ (0, react_jsx_runtime.jsx)(react.Fragment, { children: renderMessageImages({
9493
+ images: group.map(({ attachment }) => ({ attachment })),
9494
+ align: "start"
9495
+ }) }, start));
9111
9496
  break;
9112
9497
  }
9113
9498
  case "tool-call": break;
@@ -9133,7 +9518,7 @@ window.__ModuleLoader__.load({
9133
9518
  //#endregion
9134
9519
  //#region src/client/chat/AssistantNodeView.tsx
9135
9520
  /** Streaming, settled, and interrupted Assistant states share one keyed renderer instance. */
9136
- const AssistantNodeView = (0, react.memo)(function AssistantNodeView({ node, useTurnData, openFile, loadImage, fileMentions, t }) {
9521
+ const AssistantNodeView = (0, react.memo)(function AssistantNodeView({ node, useTurnData, openFile, renderMessageImages, fileMentions, t }) {
9137
9522
  const data = node.data;
9138
9523
  const turn = node.location.kind === "turn" || node.location.kind === "step" ? node.location.turn : void 0;
9139
9524
  const tail = useTurnData("turn-tail");
@@ -9156,7 +9541,7 @@ window.__ModuleLoader__.load({
9156
9541
  blocks: data.blocks,
9157
9542
  streaming: data.status === "running",
9158
9543
  interrupted: data.status === "interrupted",
9159
- loadImage,
9544
+ renderMessageImages,
9160
9545
  mentions,
9161
9546
  t
9162
9547
  });
@@ -9173,15 +9558,15 @@ window.__ModuleLoader__.load({
9173
9558
  document.head.appendChild(tag);
9174
9559
  }
9175
9560
  var GenericCommandCard_module_css_default = {
9176
- "dsh-command-row-sweep": "Ga_JSG_dsh-command-row-sweep",
9177
- "row": "Ga_JSG_row",
9178
- "title": "Ga_JSG_title",
9179
- "chevron": "Ga_JSG_chevron",
9180
- "summary": "Ga_JSG_summary",
9561
+ "body": "Ga_JSG_body",
9181
9562
  "root": "Ga_JSG_root",
9563
+ "summary": "Ga_JSG_summary",
9564
+ "title": "Ga_JSG_title",
9182
9565
  "separator": "Ga_JSG_separator",
9183
- "body": "Ga_JSG_body",
9184
- "leading": "Ga_JSG_leading"
9566
+ "dsh-command-row-sweep": "Ga_JSG_dsh-command-row-sweep",
9567
+ "row": "Ga_JSG_row",
9568
+ "leading": "Ga_JSG_leading",
9569
+ "chevron": "Ga_JSG_chevron"
9185
9570
  };
9186
9571
  //#endregion
9187
9572
  //#region src/client/chat/GenericCommandCard.tsx
@@ -9316,8 +9701,8 @@ window.__ModuleLoader__.load({
9316
9701
  document.head.appendChild(tag);
9317
9702
  }
9318
9703
  var TurnTailNodeView_module_css_default = {
9319
- "root": "iH5gSa_root",
9320
- "actions": "iH5gSa_actions"
9704
+ "actions": "iH5gSa_actions",
9705
+ "root": "iH5gSa_root"
9321
9706
  };
9322
9707
  //#endregion
9323
9708
  //#region src/client/chat/TurnTailNodeView.tsx
@@ -9600,6 +9985,10 @@ window.__ModuleLoader__.load({
9600
9985
  kind: "list",
9601
9986
  scope: "session"
9602
9987
  },
9988
+ "conversation.hero.brand.mark": {
9989
+ kind: "single",
9990
+ scope: "root"
9991
+ },
9603
9992
  "conversation.hero.workspace": {
9604
9993
  kind: "single",
9605
9994
  scope: "root"
@@ -9652,6 +10041,10 @@ window.__ModuleLoader__.load({
9652
10041
  name: "conversation.session.header",
9653
10042
  locale: NS,
9654
10043
  children: {
10044
+ "conversation.session.header.lineage": {
10045
+ kind: "single",
10046
+ scope: "session"
10047
+ },
9655
10048
  "conversation.session.header.actions": {
9656
10049
  kind: "list",
9657
10050
  scope: "session"
@@ -9673,6 +10066,10 @@ window.__ModuleLoader__.load({
9673
10066
  name: "conversation.composer.bar",
9674
10067
  locale: NS,
9675
10068
  children: {
10069
+ "conversation.input.attachments": {
10070
+ kind: "single",
10071
+ scope: "session-maybe"
10072
+ },
9676
10073
  "conversation.input.plan": {
9677
10074
  kind: "single",
9678
10075
  scope: "session"
@@ -9725,6 +10122,7 @@ window.__ModuleLoader__.load({
9725
10122
  inputTriggers.toggleSource("command", {
9726
10123
  trigger: "/",
9727
10124
  query: "",
10125
+ quoted: false,
9728
10126
  position: snapshot.draft.slice(0, selection.start).trim() === "" ? "leading" : "inline",
9729
10127
  span: {
9730
10128
  ...selection,
@@ -9761,11 +10159,17 @@ window.__ModuleLoader__.load({
9761
10159
  order: 0,
9762
10160
  label: () => t("view.chat"),
9763
10161
  locale: NS,
9764
- children: { "conversation.chat.node": {
9765
- kind: "keyed",
9766
- scope: "session",
9767
- inject: CHAT_NODE_INJECT
9768
- } },
10162
+ children: {
10163
+ "conversation.chat.node": {
10164
+ kind: "keyed",
10165
+ scope: "session",
10166
+ inject: CHAT_NODE_INJECT
10167
+ },
10168
+ "conversation.message.images": {
10169
+ kind: "single",
10170
+ scope: "session"
10171
+ }
10172
+ },
9769
10173
  store: chatStore,
9770
10174
  inject: (sessionId, actions) => {
9771
10175
  const conversation = concreteConversation(ctx);
@@ -9778,7 +10182,7 @@ window.__ModuleLoader__.load({
9778
10182
  fileMentions: (owner) => ctx.get("chatFileMentions")?.forClosing(owner),
9779
10183
  openFile: (path) => {
9780
10184
  const cwd = sessions.list.getSnapshot().byId[sessionId]?.cwd;
9781
- workspaces.openPath((0, _xrkseek_client_runtime_client.resolveWorkspacePath)(cwd, path)).catch(() => {});
10185
+ return workspaces.openPath((0, _xrkseek_client_runtime_client.resolveWorkspacePath)(cwd, path));
9782
10186
  },
9783
10187
  loadOlder: () => {
9784
10188
  scoped.loadOlder();