@chatcode/chatcode-cli 3.0.3 → 3.0.4-rc.1

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 (174) hide show
  1. package/README.i18n.yaml +10 -10
  2. package/README.md +16 -1
  3. package/README.zh.md +16 -1
  4. package/lib/bin.js +62 -11
  5. package/lib/{command-errors-CBJRI2gy.js → command-errors-BkCHTQHj.js} +12 -12
  6. package/lib/{command-trees-Dvq4C7a4.js → command-trees-5HFyC5sI.js} +2 -2
  7. package/lib/{component-identity-DPdJglJO.js → component-identity-De91VHwW.js} +3 -3
  8. package/lib/{dist-w_sIm4VD.js → dist-CsDWUvQ4.js} +231 -231
  9. package/lib/{dump-config-CauO75nE.js → dump-config-BcH-VYuv.js} +5 -5
  10. package/lib/dump-config-CyopmD85.js +2 -0
  11. package/lib/{dump-config-schema-CObLWWaW.js → dump-config-schema-DM0fb6Ns.js} +2 -2
  12. package/lib/{extension-events-Be9LWvHD.js → extension-events-CdYCRP0o.js} +26 -26
  13. package/lib/{frames-7PAg0Q9b.js → frames-DOX-Jgk8.js} +4 -4
  14. package/lib/headless-compat.js +2 -2
  15. package/lib/{host-access-DeCjoRQP.js → host-access-Bk4xps5E.js} +1 -1
  16. package/lib/{keymap-CRUxM_qn.js → keymap-CJ1kvLR2.js} +17 -16
  17. package/lib/{plugin-CDFSDE_y.js → plugin-XR7ncbnW.js} +2928 -2240
  18. package/lib/{plugin-Cn-hyYY8.js → plugin-eJjD6r12.js} +1 -1
  19. package/lib/{profile-boot-SJGbpLgN.js → profile-boot-BNQry1NM.js} +97 -14
  20. package/lib/profile-boot.js +2 -2
  21. package/lib/{scenes-D6jV1EEi.js → scenes-CAmWncZD.js} +3 -3
  22. package/lib/{settings-sections-DJQRNBo9.js → settings-sections-CakcvBv9.js} +7 -3
  23. package/lib/statusBarSettings-BPPS_Usm.js +382 -0
  24. package/lib/{supports-color-CcW-FGjr.js → supports-color-DyChQwlI.js} +2 -2
  25. package/lib/{themes-BCly4_y9.js → themes-OjcUpZzw.js} +13 -13
  26. package/lib/tui-compat-command-trees.js +1 -1
  27. package/lib/tui-compat-extensions.js +3 -3
  28. package/lib/tui-compat-plugin-host.js +5 -5
  29. package/lib/tui-compat-scenes.js +1 -1
  30. package/lib/tui-compat-settings-sections.js +1 -1
  31. package/lib/tui-compat-working-activity.js +4 -4
  32. package/lib/tui-compat-workspaces.js +1 -1
  33. package/lib/tui-compat.js +9 -26
  34. package/lib/types/args.d.ts +2 -0
  35. package/lib/types/permission-bypass.d.ts +16 -0
  36. package/lib/types/profile-boot.d.ts +12 -0
  37. package/lib/types/tui-compat.d.ts +4 -0
  38. package/lib/types/web-browser.d.ts +6 -0
  39. package/lib/types/web-instance.d.ts +42 -0
  40. package/lib/web-browser-Vcgfdsv_.js +46 -0
  41. package/lib/web-instance-B0jec7cq.js +2 -0
  42. package/lib/web-instance-DbP7IHPv.js +280 -0
  43. package/lib/{workspaces-Bb3kCAFb.js → workspaces-XY7UdfXp.js} +2 -2
  44. package/package.json +34 -32
  45. package/runtime/manifest.json +4 -2
  46. package/runtime/node_modules/@deepseek-ai/dsh-agent-default-model/lib/index.js +34 -4
  47. package/runtime/node_modules/@deepseek-ai/dsh-agent-default-model/lib/types/index.d.ts +9 -0
  48. package/runtime/node_modules/@deepseek-ai/dsh-agent-preset/skills/cordis-composition-reference/references/packages.md +2 -1
  49. package/runtime/node_modules/@deepseek-ai/dsh-api-gateway/lib/client.js +2 -0
  50. package/runtime/node_modules/@deepseek-ai/dsh-api-gateway/lib/types/client/remote-stream.js +4 -0
  51. package/runtime/node_modules/@deepseek-ai/dsh-api-remotes/lib/client.js +39 -0
  52. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/index.js +6 -1
  53. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/typert.host.js +10 -3
  54. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/typert.remote-client.js +7 -0
  55. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/catalog.js +8 -1
  56. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/types.d.ts +10 -0
  57. package/runtime/node_modules/@deepseek-ai/dsh-api-settings-controller/lib/index.js +28 -1
  58. package/runtime/node_modules/@deepseek-ai/dsh-api-settings-controller/lib/typert.host.js +39 -0
  59. package/runtime/node_modules/@deepseek-ai/dsh-api-settings-controller/lib/typert.remote-client.d.ts +2 -0
  60. package/runtime/node_modules/@deepseek-ai/dsh-api-settings-controller/lib/typert.remote-client.js +32 -0
  61. package/runtime/node_modules/@deepseek-ai/dsh-api-settings-controller/lib/types/index.d.ts +8 -0
  62. package/runtime/node_modules/@deepseek-ai/dsh-api-settings-controller/lib/types/index.js +19 -1
  63. package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/index.js +28 -0
  64. package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/types/feed.js +17 -0
  65. package/runtime/node_modules/@deepseek-ai/dsh-app-boot/lib/index.js +67 -19
  66. package/runtime/node_modules/@deepseek-ai/dsh-app-boot/lib/types/index.d.ts +1 -1
  67. package/runtime/node_modules/@deepseek-ai/dsh-app-boot/lib/types/profile-context.d.ts +11 -1
  68. package/runtime/node_modules/@deepseek-ai/dsh-app-boot/lib/worker/profile-resolution-bootstrap.js +22 -3
  69. package/runtime/node_modules/@deepseek-ai/dsh-base/cordis.patch.yml +9 -3
  70. package/runtime/node_modules/@deepseek-ai/dsh-base/package.json +2 -1
  71. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-chat/lib/client.js +3 -2
  72. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-chat/lib/types/index.d.ts +2 -2
  73. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-conversation/lib/client.js +1 -1
  74. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-goal/lib/client.js +1 -1
  75. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-model-selection/lib/client.js +60 -12
  76. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-model-selection/lib/types/client/directory.d.ts +3 -1
  77. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-model-selection/lib/types/client/locales.d.ts +6 -0
  78. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/markdown/CodeBlock.module.css +3 -5
  79. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/markdown/MarkdownText.module.css +23 -27
  80. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings/lib/types/client/contract/slots.d.ts +3 -1
  81. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-account/lib/client.js +2 -2
  82. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-account/lib/types/index.d.ts +2 -2
  83. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-general/lib/client.js +8 -7
  84. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-general/lib/types/client/SettingsDocumentAction.d.ts +1 -1
  85. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-general/lib/types/client/settings-document-store.d.ts +2 -1
  86. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-models/lib/client.js +33 -12
  87. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-models/lib/types/client/locales.d.ts +2 -0
  88. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-plugin-inventory/lib/client.js +1 -1
  89. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/client.js +1 -1
  90. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-theme/lib/client.js +1 -1
  91. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/client.js +8 -1
  92. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/locales.d.ts +2 -0
  93. package/runtime/node_modules/@deepseek-ai/dsh-computer-use/lib/index.js +35 -0
  94. package/runtime/node_modules/@deepseek-ai/dsh-computer-use/lib/types/brand.d.ts +11 -0
  95. package/runtime/node_modules/@deepseek-ai/dsh-computer-use/lib/types/brand.js +10 -0
  96. package/runtime/node_modules/@deepseek-ai/dsh-computer-use/lib/types/index.d.ts +28 -0
  97. package/runtime/node_modules/@deepseek-ai/dsh-computer-use/lib/types/index.js +36 -0
  98. package/runtime/node_modules/@deepseek-ai/dsh-computer-use/package.json +42 -0
  99. package/runtime/node_modules/@deepseek-ai/dsh-config-editor/lib/index.js +102 -14
  100. package/runtime/node_modules/@deepseek-ai/dsh-config-editor/lib/types/index.d.ts +34 -4
  101. package/runtime/node_modules/@deepseek-ai/dsh-config-editor/package.json +1 -0
  102. package/runtime/node_modules/@deepseek-ai/dsh-host-webserver/lib/index.js +2 -1
  103. package/runtime/node_modules/@deepseek-ai/dsh-native-command/lib/index.js +21 -8
  104. package/runtime/node_modules/@deepseek-ai/dsh-native-command/lib/types/path-opener.d.ts +4 -6
  105. package/runtime/node_modules/@deepseek-ai/dsh-native-command/lib/types/path-opener.js +18 -7
  106. package/runtime/node_modules/@deepseek-ai/dsh-settings/lib/index.js +5 -4
  107. package/runtime/node_modules/@deepseek-ai/dsh-settings/lib/types/index.d.ts +4 -3
  108. package/runtime/node_modules/@deepseek-ai/dsh-settings/lib/types/index.js +4 -3
  109. package/runtime/node_modules/@deepseek-ai/dsh-storage/lib/types/backend.d.ts +4 -0
  110. package/runtime/node_modules/@deepseek-ai/dsh-storage-domain/lib/index.js +60 -0
  111. package/runtime/node_modules/@deepseek-ai/dsh-storage-domain/lib/types/domain.d.ts +15 -0
  112. package/runtime/node_modules/@deepseek-ai/dsh-storage-json/lib/index.js +25 -0
  113. package/runtime/node_modules/@deepseek-ai/dsh-storage-json/package.json +1 -0
  114. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/index.js +5472 -0
  115. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/command-args.d.ts +17 -0
  116. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/commands/tianti/cicd.d.ts +8 -0
  117. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/commands/tianti/tianti.d.ts +7 -0
  118. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/commands/tianti-deliver/tianti-deliver.d.ts +8 -0
  119. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/config.d.ts +27 -0
  120. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/index.d.ts +12 -0
  121. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/memory-config.d.ts +10 -0
  122. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/runtime.d.ts +105 -0
  123. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/tianti/aliases.d.ts +11 -0
  124. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/tianti/auth.d.ts +20 -0
  125. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/tianti/client.d.ts +206 -0
  126. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/tianti/config.d.ts +20 -0
  127. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/tianti/index.d.ts +6 -0
  128. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/tianti/log.d.ts +16 -0
  129. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/tianti/types.d.ts +136 -0
  130. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/codebase.d.ts +19 -0
  131. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/dynamicWorkflow.d.ts +10 -0
  132. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/engine.d.ts +8 -0
  133. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/executor.d.ts +11 -0
  134. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/executors.d.ts +15 -0
  135. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/index.d.ts +23 -0
  136. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/memorySuggestions.d.ts +12 -0
  137. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/openspec.d.ts +31 -0
  138. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/recommend.d.ts +8 -0
  139. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/render.d.ts +8 -0
  140. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/requirementContext.d.ts +12 -0
  141. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/scenarioUpgrade.d.ts +24 -0
  142. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/state.d.ts +16 -0
  143. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/store.d.ts +33 -0
  144. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/templates.d.ts +8 -0
  145. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/types.d.ts +385 -0
  146. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/writeReviewSync.d.ts +6 -0
  147. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/writeReview/index.d.ts +29 -0
  148. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/writeReview/store.d.ts +20 -0
  149. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/writeReview/types.d.ts +49 -0
  150. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/tools.d.ts +12 -0
  151. package/runtime/node_modules/@deepseek-ai/dsh-tianti/package.json +55 -0
  152. package/runtime/node_modules/@deepseek-ai/dsh-tool-cordis/lib/types/api-catalog.js +57 -13
  153. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/index-D5kpKf--.css +1 -0
  154. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/index-Dz_cDcce.js +133 -0
  155. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/index-Dz_cDcce.js.map +1 -0
  156. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/chatcode-apple-touch-icon.png +0 -0
  157. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/chatcode-icon-32.png +0 -0
  158. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/chatcode-mask-icon.svg +1 -0
  159. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/favicon-dark.svg +1 -3
  160. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/favicon.ico +0 -0
  161. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/favicon.svg +1 -3
  162. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/index.html +8 -4
  163. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/preview.html +8 -4
  164. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/package.json +2 -1
  165. package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/index.js +110 -33
  166. package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/types/entity.d.ts +6 -0
  167. package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/types/entity.js +23 -17
  168. package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/types/index.d.ts +10 -0
  169. package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/types/index.js +95 -21
  170. package/lib/dump-config-CijLv_kn.js +0 -2
  171. package/lib/tuiDisplayPrefs-Dm_fULiR.js +0 -204
  172. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/index-DUvMhLle.css +0 -1
  173. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/index-Q6zc2uHV.js +0 -127
  174. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/index-Q6zc2uHV.js.map +0 -1
@@ -540,13 +540,15 @@ const PROFILE_TEMPLATES = {
540
540
  web: { bundles: [
541
541
  "@deepseek-ai/dsh-base",
542
542
  "@deepseek-ai/dsh-web-app",
543
- "dshmarket"
543
+ "dshmarket",
544
+ "dsh-computer-use"
544
545
  ] },
545
546
  cli: { bundles: [
546
547
  "@deepseek-ai/dsh-base",
547
548
  "@deepseek-harness-tui/dsh-tui",
548
549
  "dsh-llm-chatcode-config",
549
- "dshmarket"
550
+ "dshmarket",
551
+ "dsh-computer-use"
550
552
  ] },
551
553
  headless: { bundles: ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-headless"] },
552
554
  sdk: { bundles: ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-sdk-app"] },
@@ -554,16 +556,26 @@ const PROFILE_TEMPLATES = {
554
556
  };
555
557
  /** Installation-owned bundle tuples normalized to the shipped template. */
556
558
  const INSTALLATION_OWNED_PROFILE_TUPLES = {
557
- cli: [
559
+ web: [[
560
+ "@deepseek-ai/dsh-base",
561
+ "@deepseek-ai/dsh-web-app",
562
+ "dshmarket"
563
+ ]],
564
+ cli: [[
558
565
  "@deepseek-ai/dsh-base",
559
566
  "@deepseek-harness-tui/dsh-tui",
560
567
  "dsh-llm-chatcode-config"
561
- ],
562
- headless: [
568
+ ], [
569
+ "@deepseek-ai/dsh-base",
570
+ "@deepseek-harness-tui/dsh-tui",
571
+ "dsh-llm-chatcode-config",
572
+ "dshmarket"
573
+ ]],
574
+ headless: [[
563
575
  "@deepseek-ai/dsh-base",
564
576
  "@deepseek-ai/dsh-web-app",
565
577
  "@deepseek-ai/dsh-headless"
566
- ]
578
+ ]]
567
579
  };
568
580
  /** The bundle list a `dsh plugin` init uses for a name with no shipped template. */
569
581
  const DEFAULT_PROFILE_BUNDLES = ["@deepseek-ai/dsh-base"];
@@ -882,7 +894,7 @@ function normalizeShippedProfile(name, dir, manifest) {
882
894
  const template = PROFILE_TEMPLATES[name];
883
895
  const bundles = manifest.dsh?.profile?.bundles;
884
896
  if (template === void 0 || bundles === void 0) return manifest;
885
- if (!(installationOwned !== void 0 && sameBundles(bundles, installationOwned))) return manifest;
897
+ if (!(installationOwned?.some((tuple) => sameBundles(bundles, tuple)) ?? false)) return manifest;
886
898
  const normalized = {
887
899
  ...manifest,
888
900
  dsh: {
@@ -1024,6 +1036,43 @@ function composeEntries(layers, warn = () => {}) {
1024
1036
  //#region lib/types/profile-context.js
1025
1037
  /** Launcher-owned profile locations and composition inputs. */
1026
1038
  const TELEMETRY_ROW_ID = "session-telemetry-otel";
1039
+ function findEntry(rows, id) {
1040
+ for (const row of rows) {
1041
+ if (row.id === id) return row;
1042
+ if (row.group && Array.isArray(row.config)) {
1043
+ const nested = findEntry(row.config, id);
1044
+ if (nested !== void 0) return nested;
1045
+ }
1046
+ }
1047
+ }
1048
+ function configObject(value) {
1049
+ return value !== null && typeof value === "object" && !Array.isArray(value);
1050
+ }
1051
+ /** Resolve shared home field overrides without replacing inherited deployment fields.
1052
+ * @param binName Diagnostic prefix for malformed configuration.
1053
+ * @param inherited Bundle and profile patches beneath the home layer.
1054
+ * @param homePatches Parsed home layer, including optional mergeConfig markers.
1055
+ * @returns Detached home patches ready for Loader composition or configuration dumps.
1056
+ */
1057
+ function resolveHomePatchConfigs(binName, inherited, homePatches) {
1058
+ const patches = structuredClone([...inherited]);
1059
+ for (const patch of structuredClone(homePatches)) {
1060
+ if (patch.mergeConfig === true) {
1061
+ if (typeof patch.id !== "string" || patch.insert !== void 0 || !configObject(patch.config)) throw new TypeError(`${binName}: mergeConfig requires an id-targeted object config in the home patch`);
1062
+ const target = findEntry(composeEntries([patches]), patch.id);
1063
+ if (target !== void 0 && (!patch.name || patch.name === target.name)) {
1064
+ if (target.config !== void 0 && !configObject(target.config)) throw new TypeError(`${binName}: cannot merge non-object config for ${patch.id}`);
1065
+ patch.config = {
1066
+ ...target.config,
1067
+ ...patch.config
1068
+ };
1069
+ }
1070
+ Reflect.deleteProperty(patch, "mergeConfig");
1071
+ }
1072
+ patches.push(patch);
1073
+ }
1074
+ return patches.slice(inherited.length);
1075
+ }
1027
1076
  /**
1028
1077
  * Resolve the telemetry opt-out switch into its boot patch. ANY non-empty
1029
1078
  * value (including `'0'`/`'false'`) disables: a privacy switch prefers
@@ -1046,22 +1095,20 @@ function resolveTelemetryPatch(disabledEnv, hasRow) {
1046
1095
  * @param binName Diagnostic prefix for malformed or missing configuration.
1047
1096
  * @param context Data supplied by the profile launcher.
1048
1097
  * @param initialProfile Already loaded startup profile; omitted reads the current files.
1098
+ * @param homePatches Candidate home layer for an edit; omitted reads the home patch.
1049
1099
  * @returns Detached ordered patches; this function does not update the Loader.
1050
1100
  */
1051
- function readProfilePatches(binName, context, initialProfile) {
1101
+ function readProfilePatches(binName, context, initialProfile, homePatches) {
1052
1102
  const profile = initialProfile ?? loadProfileDirectory(binName, context.dir, context.installAnchor, {
1053
1103
  ...context.trustedVersionExemptions === void 0 ? {} : { trustedVersionExemptions: context.trustedVersionExemptions },
1054
1104
  userLayer: false
1055
1105
  });
1056
- const patches = structuredClone([
1057
- ...profile.layers.flatMap((layer) => layer.patches),
1058
- ...initialProfile?.patches ?? loadOptionalPatches(binName, context.patchPath) ?? [],
1059
- ...loadOptionalPatches(binName, join(context.home, "cordis.patch.yml")) ?? [],
1060
- ...context.overlays
1061
- ]);
1106
+ const patches = structuredClone([...profile.layers.flatMap((layer) => layer.patches), ...initialProfile?.patches ?? loadOptionalPatches(binName, context.patchPath) ?? []]);
1107
+ patches.push(...resolveHomePatchConfigs(binName, patches, homePatches ?? loadOptionalPatches(binName, join(context.home, "cordis.patch.yml")) ?? []));
1108
+ patches.push(...structuredClone(context.overlays));
1062
1109
  const telemetryPatch = resolveTelemetryPatch(context.telemetryDisabledEnv, composeEntries([patches]).some((row) => row.id === TELEMETRY_ROW_ID));
1063
1110
  if (telemetryPatch !== void 0) patches.push(telemetryPatch);
1064
- return patches;
1111
+ return context.transformPatches?.(patches) ?? patches;
1065
1112
  }
1066
1113
  //#endregion
1067
1114
  //#region lib/types/profile-plugins.js
@@ -1203,7 +1250,7 @@ function barePackageName(request) {
1203
1250
  }
1204
1251
  function canonicalPath(path) {
1205
1252
  try {
1206
- return realpathSync(path);
1253
+ return realModuleDirectory(path);
1207
1254
  } catch {
1208
1255
  return resolve(path);
1209
1256
  }
@@ -1214,14 +1261,15 @@ function prefixes(path) {
1214
1261
  return canonical === configured ? [configured] : [configured, canonical];
1215
1262
  }
1216
1263
  function compileResolution(resolution) {
1264
+ const linkedPaths = resolution.linkedRoots.flatMap((root) => prefixes(root.realPath));
1217
1265
  return {
1218
1266
  entries: new Map(resolution.entries.map((entry) => [entry.name, entry])),
1219
1267
  profilesDir: resolution.profilesDir,
1220
1268
  profileDir: resolution.profileDir,
1221
1269
  profilePaths: prefixes(resolution.profilesDir),
1222
1270
  profile: resolution.profileDir === void 0 ? [] : prefixes(resolution.profileDir),
1223
- installationPaths: [...new Set(resolution.entries.filter((entry) => entry.scope === "installation").flatMap((entry) => prefixes(entry.packageDir)))],
1224
- linkedPaths: resolution.linkedRoots.flatMap((root) => prefixes(root.realPath)),
1271
+ installationPaths: linkedPaths.length === 0 ? [] : [...new Set(resolution.entries.filter((entry) => entry.scope === "installation").flatMap((entry) => prefixes(entry.packageDir)))],
1272
+ linkedPaths,
1225
1273
  localPackageNames: new Set(resolution.localPackageNames),
1226
1274
  esmRoutes: /* @__PURE__ */ new Map(),
1227
1275
  cjsRoutes: /* @__PURE__ */ new Map()
@@ -4168,4 +4216,4 @@ function addHarnessSourceSection(ctx, sourceRoot) {
4168
4216
  });
4169
4217
  }
4170
4218
  //#endregion
4171
- export { DEFAULT_PROFILE_BUNDLES, FAIL_LOUD_RELEASE_TIMEOUT_MS, HARNESS_SOURCE_SECTION, LOADER_EXPRESSION_SCHEMA, OPTIONAL_BUNDLES, PROFILES_DIR, PROFILE_COMPATIBILITY_FILENAME, PROFILE_PATCH_FILENAME, PROFILE_TEMPLATES, PluginPackages, StartupError, addHarnessSourceSection, auditStartupEntries, boot, bundlePatchFiles, bundlePatchPaths, composeEntries, createConfigProjector, createRuntimeResolution, evaluatePluginCompatibility, generateConfigSchema, getDshRuntimeVersion, initProfile, installFailLoud, isNativeConfigSchema, loadEnv, loadLayeredEnv, loadOptionalPatches, loadOverlayPatches, loadProfile, loadProfileDirectory, mergeVersionExemptions, mountRootInclude, pluginCompatibilityWarning, prepareProfileEntries, prepareProfilePatches, readPluginMeta, readProfileCompatibility, readProfileManifest, readProfilePatches, readProfilePlugins, readProfileVersionExemptions, reconcileProfilePatches, reconcileProfilePlugins, removeLinkProjections, renderConfigDump, reportSkippedBundles, resolveBundleDir, resolveConfigPath, resolveProfileDir, resolveTelemetryPatch, sanitizeProfile, setProfileVersionExemption, writeProfileBundles, writeProfileManifest };
4219
+ export { DEFAULT_PROFILE_BUNDLES, FAIL_LOUD_RELEASE_TIMEOUT_MS, HARNESS_SOURCE_SECTION, LOADER_EXPRESSION_SCHEMA, OPTIONAL_BUNDLES, PROFILES_DIR, PROFILE_COMPATIBILITY_FILENAME, PROFILE_PATCH_FILENAME, PROFILE_TEMPLATES, PluginPackages, StartupError, addHarnessSourceSection, auditStartupEntries, boot, bundlePatchFiles, bundlePatchPaths, composeEntries, createConfigProjector, createRuntimeResolution, evaluatePluginCompatibility, generateConfigSchema, getDshRuntimeVersion, initProfile, installFailLoud, isNativeConfigSchema, loadEnv, loadLayeredEnv, loadOptionalPatches, loadOverlayPatches, loadProfile, loadProfileDirectory, mergeVersionExemptions, mountRootInclude, pluginCompatibilityWarning, prepareProfileEntries, prepareProfilePatches, readPluginMeta, readProfileCompatibility, readProfileManifest, readProfilePatches, readProfilePlugins, readProfileVersionExemptions, reconcileProfilePatches, reconcileProfilePlugins, removeLinkProjections, renderConfigDump, reportSkippedBundles, resolveBundleDir, resolveConfigPath, resolveHomePatchConfigs, resolveProfileDir, resolveTelemetryPatch, sanitizeProfile, setProfileVersionExemption, writeProfileBundles, writeProfileManifest };
@@ -10,7 +10,7 @@ import { type Entry } from '@deepseek-ai/cordis-plugin-loader';
10
10
  import { type PatchOptions } from '@deepseek-ai/cordis-plugin-include';
11
11
  import { dshHomePath } from '@deepseek-ai/dsh-home-paths';
12
12
  import { type LaunchEnvironmentSnapshot } from '@deepseek-ai/dsh-launch-environment';
13
- export { readProfilePatches, resolveTelemetryPatch, type ProfileContext, type ProfilePnpmInvocation } from './profile-context.ts';
13
+ export { readProfilePatches, resolveHomePatchConfigs, resolveTelemetryPatch, type ProfileContext, type ProfilePnpmInvocation, } from './profile-context.ts';
14
14
  export { sanitizeProfile } from './profile-sanitize.ts';
15
15
  export { getDshRuntimeVersion, evaluatePluginCompatibility, pluginCompatibilityWarning, type PluginCompatibility } from './plugin-compatibility.ts';
16
16
  export { PROFILE_COMPATIBILITY_FILENAME, readProfileCompatibility, readProfileVersionExemptions, mergeVersionExemptions, setProfileVersionExemption, type ProfileCompatibility, } from './profile-compatibility.ts';
@@ -20,6 +20,8 @@ export interface ProfileContext {
20
20
  readonly startedBundles: readonly string[];
21
21
  /** Parsed command-line overlays, applied above profile and home patches. */
22
22
  readonly overlays: readonly PatchOptions[];
23
+ /** Launcher package aliases applied identically at startup and on every reload. */
24
+ readonly transformPatches?: (patches: PatchOptions[]) => PatchOptions[];
23
25
  /** Distributor-reviewed exact plugin/runtime pairs, additive to user-owned profile exemptions. */
24
26
  readonly trustedVersionExemptions?: Readonly<Record<string, readonly string[]>>;
25
27
  /** Launch-time CHATCODE_CLI_TELEMETRY_DISABLED value; any non-empty value opts out. */
@@ -31,6 +33,13 @@ declare module '@deepseek-ai/cordis' {
31
33
  profileContext: ProfileContext;
32
34
  }
33
35
  }
36
+ /** Resolve shared home field overrides without replacing inherited deployment fields.
37
+ * @param binName Diagnostic prefix for malformed configuration.
38
+ * @param inherited Bundle and profile patches beneath the home layer.
39
+ * @param homePatches Parsed home layer, including optional mergeConfig markers.
40
+ * @returns Detached home patches ready for Loader composition or configuration dumps.
41
+ */
42
+ export declare function resolveHomePatchConfigs(binName: string, inherited: readonly PatchOptions[], homePatches: readonly PatchOptions[]): PatchOptions[];
34
43
  /**
35
44
  * Resolve the telemetry opt-out switch into its boot patch. ANY non-empty
36
45
  * value (including `'0'`/`'false'`) disables: a privacy switch prefers
@@ -47,7 +56,8 @@ export declare function resolveTelemetryPatch(disabledEnv: string | undefined, h
47
56
  * @param binName Diagnostic prefix for malformed or missing configuration.
48
57
  * @param context Data supplied by the profile launcher.
49
58
  * @param initialProfile Already loaded startup profile; omitted reads the current files.
59
+ * @param homePatches Candidate home layer for an edit; omitted reads the home patch.
50
60
  * @returns Detached ordered patches; this function does not update the Loader.
51
61
  */
52
- export declare function readProfilePatches(binName: string, context: ProfileContext, initialProfile?: Profile): PatchOptions[];
62
+ export declare function readProfilePatches(binName: string, context: ProfileContext, initialProfile?: Profile, homePatches?: readonly PatchOptions[]): PatchOptions[];
53
63
  //# sourceMappingURL=profile-context.d.ts.map
@@ -41,6 +41,24 @@ function f(e, r, t) {
41
41
  if (e.imports) return n(e.name, e.imports, r, t);
42
42
  }
43
43
  //#endregion
44
+ //#region lib/types/profile-resolution/legacy-links.js
45
+ /** Package directory canonicalization through the active runtime carrier's filesystem. */
46
+ /**
47
+ * Return whether the process reads application modules from pkg's virtual filesystem.
48
+ * @returns whether pkg owns the module filesystem.
49
+ */
50
+ function isPackagedExecutable() {
51
+ return process.pkg !== void 0;
52
+ }
53
+ /**
54
+ * Resolve a directory through the active carrier's filesystem implementation.
55
+ * @param path - directory path to canonicalize.
56
+ * @returns the canonical directory path.
57
+ */
58
+ function realModuleDirectory(path) {
59
+ return isPackagedExecutable() ? realpathSync(path) : realpathSync.native(path);
60
+ }
61
+ //#endregion
44
62
  //#region lib/types/profile-resolution/resolver.js
45
63
  /** In-memory profile package routing for Node's default ESM and CommonJS loaders. */
46
64
  const EMPTY_ATTRIBUTES = Object.freeze({});
@@ -59,7 +77,7 @@ function barePackageName(request) {
59
77
  }
60
78
  function canonicalPath(path) {
61
79
  try {
62
- return realpathSync(path);
80
+ return realModuleDirectory(path);
63
81
  } catch {
64
82
  return resolve(path);
65
83
  }
@@ -70,14 +88,15 @@ function prefixes(path) {
70
88
  return canonical === configured ? [configured] : [configured, canonical];
71
89
  }
72
90
  function compileResolution(resolution) {
91
+ const linkedPaths = resolution.linkedRoots.flatMap((root) => prefixes(root.realPath));
73
92
  return {
74
93
  entries: new Map(resolution.entries.map((entry) => [entry.name, entry])),
75
94
  profilesDir: resolution.profilesDir,
76
95
  profileDir: resolution.profileDir,
77
96
  profilePaths: prefixes(resolution.profilesDir),
78
97
  profile: resolution.profileDir === void 0 ? [] : prefixes(resolution.profileDir),
79
- installationPaths: [...new Set(resolution.entries.filter((entry) => entry.scope === "installation").flatMap((entry) => prefixes(entry.packageDir)))],
80
- linkedPaths: resolution.linkedRoots.flatMap((root) => prefixes(root.realPath)),
98
+ installationPaths: linkedPaths.length === 0 ? [] : [...new Set(resolution.entries.filter((entry) => entry.scope === "installation").flatMap((entry) => prefixes(entry.packageDir)))],
99
+ linkedPaths,
81
100
  localPackageNames: new Set(resolution.localPackageNames),
82
101
  esmRoutes: /* @__PURE__ */ new Map(),
83
102
  cjsRoutes: /* @__PURE__ */ new Map()
@@ -97,6 +97,8 @@
97
97
  - id: config-editor
98
98
  name: '@deepseek-ai/dsh-config-editor'
99
99
  disabled: !!js "!ctx.get('profileContext')"
100
+ config:
101
+ sharedEntries: [llm-pi-ai]
100
102
 
101
103
  - id: settings
102
104
  name: '@deepseek-ai/dsh-settings'
@@ -204,7 +206,7 @@
204
206
  - id: session-telemetry-otel
205
207
  name: '@deepseek-ai/dsh-session-telemetry-otel'
206
208
  config:
207
- mode: !!js process.env.DSH_TELEMETRY_MODE || 'FEEDBACK_ONLY'
209
+ mode: !!js process.env.CHATCODE_CLI_TELEMETRY_MODE || process.env.DSH_TELEMETRY_MODE || 'FEEDBACK_ONLY'
208
210
  shutdownTimeoutMillis: 3000
209
211
  exporter:
210
212
  url: !!js process.env.DSH_TELEMETRY_OTLP_URL ?? 'https://harness-telemetry.deepseeksvc.com/v1/logs'
@@ -228,7 +230,7 @@
228
230
  - id: sandbox-policy
229
231
  name: '@deepseek-ai/dsh-sandbox-policy'
230
232
  config:
231
- mode: !!js process.env.DSH_PERMISSION_MODE ?? 'workspace-write'
233
+ mode: !!js process.env.CHATCODE_CLI_PERMISSION_MODE || process.env.DSH_PERMISSION_MODE || 'workspace-write'
232
234
  workspaceRoot: !!js process.cwd()
233
235
 
234
236
  - id: bash-sandbox
@@ -244,7 +246,7 @@
244
246
  - id: approval
245
247
  name: '@deepseek-ai/dsh-user-approval'
246
248
  config:
247
- policy: !!js "(process.env.DSH_PERMISSION_MODE ?? 'workspace-write') === 'danger-full-access' ? 'never' : 'ask'"
249
+ policy: !!js "(process.env.CHATCODE_CLI_PERMISSION_MODE || process.env.DSH_PERMISSION_MODE || 'workspace-write') === 'danger-full-access' ? 'never' : 'ask'"
248
250
 
249
251
  - id: permission
250
252
  name: '@deepseek-ai/dsh-permission-presets'
@@ -340,6 +342,10 @@
340
342
  - id: compaction-basic
341
343
  name: '@deepseek-ai/dsh-compaction-basic'
342
344
 
345
+ # Shared ChatCode login is consumed only when a Tianti command or tool runs.
346
+ - id: tianti
347
+ name: '@deepseek-ai/dsh-tianti'
348
+
343
349
  # Human `/compact`: one useful reduction below the automatic threshold. Backend
344
350
  # independent, so it follows whichever compaction service this leaf mounts.
345
351
  - id: command-compact
@@ -124,7 +124,8 @@
124
124
  "@deepseek-ai/dsh-authorization": "workspace:*",
125
125
  "@deepseek-ai/dsh-deepseek-account-platform": "workspace:*",
126
126
  "@deepseek-ai/dsh-config-editor": "workspace:*",
127
- "@deepseek-ai/dsh-settings": "workspace:*"
127
+ "@deepseek-ai/dsh-settings": "workspace:*",
128
+ "@deepseek-ai/dsh-tianti": "workspace:*"
128
129
  },
129
130
  "peerDependencies": {
130
131
  "@deepseek-ai/cordis": "workspace:~"
@@ -211,7 +211,7 @@ window.__ModuleLoader__.load({
211
211
  }
212
212
  //#endregion
213
213
  //#region \0dsh-css:/Users/shiguifeng/IdeaProjects/chonggou/deepseek-harness/packages/client/ui-chat/src/client/chat/MessageItem.module.css.mjs
214
- const css$17 = ".b0VkcW_userRow{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.b0VkcW_userStack{min-width:0;max-width:min(calc(var(--dsh-chat-content-width,748px) * .702), 82%);flex-direction:column;align-items:flex-end;gap:8px;display:flex}.b0VkcW_bubble{background:var(--dsw-specific-bubble);border-radius:var(--dsw-radius-xl);max-width:100%;font-size:var(--dsh-content-font-size,14px);line-height:calc(22px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-primary);white-space:pre-wrap;word-break:break-word;padding:10px 16px}.b0VkcW_referenceSummary{color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(18px + var(--dsh-content-font-delta-secondary,0px))}.b0VkcW_contextRow{padding:2px 0}.b0VkcW_compactionRow{--dsh-compaction-header-height:calc(24px + var(--dsh-content-font-delta,0px));padding:2px 0}.b0VkcW_compactionButton{width:100%;height:var(--dsh-compaction-header-height);border-radius:var(--dsw-radius-sm);min-width:0;color:inherit;font:inherit;text-align:left;background:0 0;border:none;align-items:center;padding:0;display:flex}.b0VkcW_compactionRow:has(.b0VkcW_compactionBody) .b0VkcW_compactionButton{z-index:7;background:var(--dsw-alias-bg-base);border-radius:0;position:sticky;top:0}.b0VkcW_compactionBody :has(>[data-code-block-banner]){top:var(--dsh-compaction-header-height)}.b0VkcW_compactionRow:has(.b0VkcW_compactionBody) .b0VkcW_compactionButton:hover{background:var(--dsw-alias-interactive-bg-hover-solid)}.b0VkcW_compactionButton:not(:disabled){cursor:pointer}.b0VkcW_compactionButton:not(:disabled):hover{background:var(--dsw-alias-interactive-bg-hover)}.b0VkcW_compactionLeading{width:calc(16px + var(--dsh-content-font-delta,0px));height:calc(16px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-secondary);flex:none;place-items:center;margin-right:6px;display:inline-grid}.b0VkcW_compactionLeading svg{width:calc(14px + var(--dsh-content-font-delta,0px));height:calc(14px + var(--dsh-content-font-delta,0px))}.b0VkcW_compactionContextIcon,.b0VkcW_compactionDisclosureIcon{grid-area:1/1;justify-content:center;align-items:center;display:inline-flex}.b0VkcW_compactionDisclosureIcon,.b0VkcW_compactionButton:not(:disabled):hover .b0VkcW_compactionContextIcon,.b0VkcW_compactionButton:not(:disabled):focus-visible .b0VkcW_compactionContextIcon{opacity:0}.b0VkcW_compactionButton:not(:disabled):hover .b0VkcW_compactionDisclosureIcon,.b0VkcW_compactionButton:not(:disabled):focus-visible .b0VkcW_compactionDisclosureIcon{opacity:1}.b0VkcW_compactionTitle{font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-primary-dimmed);flex:none}.b0VkcW_compactionSep{background:var(--dsw-alias-label-caption);border-radius:1px;flex:none;width:2px;height:2px;margin:0 8px}.b0VkcW_compactionSummary{min-width:0;color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}.b0VkcW_compactionBody{padding:4px 0 4px calc(22px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px))}.b0VkcW_retryRow{color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(20px + var(--dsh-content-font-delta-secondary,0px))}.b0VkcW_retrySummary{border-radius:var(--dsw-radius-sm);width:fit-content;color:inherit;cursor:pointer;user-select:none;align-items:center;gap:7px;padding:2px 0;list-style:none;display:inline-flex}.b0VkcW_retrySummary::-webkit-details-marker{display:none}.b0VkcW_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)}.b0VkcW_retrySummary:hover{color:var(--dsw-alias-label-secondary)}.b0VkcW_retrySummary:focus-visible{outline:1.5px solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:2px}.b0VkcW_retryText{color:inherit}.b0VkcW_retryRow[data-active] .b0VkcW_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 b0VkcW_retry-shimmer}.b0VkcW_retryRow[open] .b0VkcW_retrySummary:after{transform:rotate(45deg)}.b0VkcW_retryDetails{overflow-wrap:anywhere;font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(18px + var(--dsh-content-font-delta-secondary,0px));gap:2px;margin-top:3px;padding-left:14px;display:grid}.b0VkcW_retryDetailLabel{color:var(--dsw-alias-label-secondary)}.b0VkcW_turnErrorRow{font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(20px + var(--dsh-content-font-delta-secondary,0px));grid-template-columns:10px minmax(0,1fr) auto;align-items:start;gap:8px;padding:2px 0;display:grid}.b0VkcW_turnErrorDot{margin-top:5px}.b0VkcW_turnErrorCopy{overflow-wrap:anywhere;min-width:0}.b0VkcW_turnErrorTitle{color:var(--dsw-alias-state-error-primary);margin-right:6px;font-weight:600}.b0VkcW_turnErrorMessage{color:var(--dsw-alias-label-secondary)}.b0VkcW_turnErrorCode{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-markdown-code-block-small)}.b0VkcW_maxTokensTitle{color:var(--dsw-alias-state-warn-primary);margin-right:6px;font-weight:600}@keyframes b0VkcW_retry-shimmer{0%{background-position:100%}to{background-position:0}}@media (prefers-reduced-motion:reduce){.b0VkcW_retryRow[data-active] .b0VkcW_retryText{color:inherit;background:0 0;animation:none}}.b0VkcW_attachmentRow{flex-wrap:wrap;justify-content:flex-end;gap:8px;max-width:100%;display:flex}.b0VkcW_fileCard{border:.5px solid var(--dsw-alias-border-l2,#0000001f);border-radius:var(--dsw-radius-xl);background:var(--dsw-specific-input-major,transparent);box-sizing:border-box;flex:0 0 240px;align-items:center;gap:10px;width:240px;min-height:64px;padding:8px 12px;display:inline-flex}.b0VkcW_fileIcon{flex:none;width:28px;height:28px}.b0VkcW_fileContent{flex-direction:column;flex:1;min-width:0;display:flex}.b0VkcW_fileName{white-space:nowrap;text-overflow:ellipsis;color:var(--dsw-alias-label-primary);font-size:14px;font-weight:500;line-height:22px;overflow:hidden}.b0VkcW_fileMeta{white-space:nowrap;text-overflow:ellipsis;color:var(--dsw-alias-label-tertiary,#00000073);font-size:12px;line-height:15px;overflow:hidden}";
214
+ const css$17 = ".b0VkcW_userRow{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.b0VkcW_userStack{min-width:0;max-width:min(calc(var(--dsh-chat-content-width,748px) * .702), 82%);flex-direction:column;align-items:flex-end;gap:8px;display:flex}.b0VkcW_bubble{background:var(--dsw-specific-bubble);border-radius:var(--dsw-radius-xl);max-width:100%;font:var(--dsw-font-markdown-base);color:var(--dsw-alias-label-primary);white-space:pre-wrap;word-break:break-word;padding:10px 16px}.b0VkcW_referenceSummary{color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(18px + var(--dsh-content-font-delta-secondary,0px))}.b0VkcW_contextRow{padding:2px 0}.b0VkcW_compactionRow{--dsh-compaction-header-height:calc(24px + var(--dsh-content-font-delta,0px));padding:2px 0}.b0VkcW_compactionButton{width:100%;height:var(--dsh-compaction-header-height);border-radius:var(--dsw-radius-sm);min-width:0;color:inherit;font:inherit;text-align:left;background:0 0;border:none;align-items:center;padding:0;display:flex}.b0VkcW_compactionRow:has(.b0VkcW_compactionBody) .b0VkcW_compactionButton{z-index:7;background:var(--dsw-alias-bg-base);border-radius:0;position:sticky;top:0}.b0VkcW_compactionBody :has(>[data-code-block-banner]){top:var(--dsh-compaction-header-height)}.b0VkcW_compactionRow:has(.b0VkcW_compactionBody) .b0VkcW_compactionButton:hover{background:var(--dsw-alias-interactive-bg-hover-solid)}.b0VkcW_compactionButton:not(:disabled){cursor:pointer}.b0VkcW_compactionButton:not(:disabled):hover{background:var(--dsw-alias-interactive-bg-hover)}.b0VkcW_compactionLeading{width:calc(16px + var(--dsh-content-font-delta,0px));height:calc(16px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-secondary);flex:none;place-items:center;margin-right:6px;display:inline-grid}.b0VkcW_compactionLeading svg{width:calc(14px + var(--dsh-content-font-delta,0px));height:calc(14px + var(--dsh-content-font-delta,0px))}.b0VkcW_compactionContextIcon,.b0VkcW_compactionDisclosureIcon{grid-area:1/1;justify-content:center;align-items:center;display:inline-flex}.b0VkcW_compactionDisclosureIcon,.b0VkcW_compactionButton:not(:disabled):hover .b0VkcW_compactionContextIcon,.b0VkcW_compactionButton:not(:disabled):focus-visible .b0VkcW_compactionContextIcon{opacity:0}.b0VkcW_compactionButton:not(:disabled):hover .b0VkcW_compactionDisclosureIcon,.b0VkcW_compactionButton:not(:disabled):focus-visible .b0VkcW_compactionDisclosureIcon{opacity:1}.b0VkcW_compactionTitle{font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-primary-dimmed);flex:none}.b0VkcW_compactionSep{background:var(--dsw-alias-label-caption);border-radius:1px;flex:none;width:2px;height:2px;margin:0 8px}.b0VkcW_compactionSummary{min-width:0;color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}.b0VkcW_compactionBody{padding:4px 0 4px calc(22px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px))}.b0VkcW_retryRow{color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(20px + var(--dsh-content-font-delta-secondary,0px))}.b0VkcW_retrySummary{border-radius:var(--dsw-radius-sm);width:fit-content;color:inherit;cursor:pointer;user-select:none;align-items:center;gap:7px;padding:2px 0;list-style:none;display:inline-flex}.b0VkcW_retrySummary::-webkit-details-marker{display:none}.b0VkcW_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)}.b0VkcW_retrySummary:hover{color:var(--dsw-alias-label-secondary)}.b0VkcW_retrySummary:focus-visible{outline:1.5px solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:2px}.b0VkcW_retryText{color:inherit}.b0VkcW_retryRow[data-active] .b0VkcW_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 b0VkcW_retry-shimmer}.b0VkcW_retryRow[open] .b0VkcW_retrySummary:after{transform:rotate(45deg)}.b0VkcW_retryDetails{overflow-wrap:anywhere;font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(18px + var(--dsh-content-font-delta-secondary,0px));gap:2px;margin-top:3px;padding-left:14px;display:grid}.b0VkcW_retryDetailLabel{color:var(--dsw-alias-label-secondary)}.b0VkcW_turnErrorRow{font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(20px + var(--dsh-content-font-delta-secondary,0px));grid-template-columns:10px minmax(0,1fr) auto;align-items:start;gap:8px;padding:2px 0;display:grid}.b0VkcW_turnErrorDot{margin-top:5px}.b0VkcW_turnErrorCopy{overflow-wrap:anywhere;min-width:0}.b0VkcW_turnErrorTitle{color:var(--dsw-alias-state-error-primary);margin-right:6px;font-weight:600}.b0VkcW_turnErrorMessage{color:var(--dsw-alias-label-secondary)}.b0VkcW_turnErrorCode{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-markdown-code-block-small)}.b0VkcW_maxTokensTitle{color:var(--dsw-alias-state-warn-primary);margin-right:6px;font-weight:600}@keyframes b0VkcW_retry-shimmer{0%{background-position:100%}to{background-position:0}}@media (prefers-reduced-motion:reduce){.b0VkcW_retryRow[data-active] .b0VkcW_retryText{color:inherit;background:0 0;animation:none}}.b0VkcW_attachmentRow{flex-wrap:wrap;justify-content:flex-end;gap:8px;max-width:100%;display:flex}.b0VkcW_fileCard{border:.5px solid var(--dsw-alias-border-l2,#0000001f);border-radius:var(--dsw-radius-xl);background:var(--dsw-specific-input-major,transparent);box-sizing:border-box;flex:0 0 240px;align-items:center;gap:10px;width:240px;min-height:64px;padding:8px 12px;display:inline-flex}.b0VkcW_fileIcon{flex:none;width:28px;height:28px}.b0VkcW_fileContent{flex-direction:column;flex:1;min-width:0;display:flex}.b0VkcW_fileName{white-space:nowrap;text-overflow:ellipsis;color:var(--dsw-alias-label-primary);font-size:14px;font-weight:500;line-height:22px;overflow:hidden}.b0VkcW_fileMeta{white-space:nowrap;text-overflow:ellipsis;color:var(--dsw-alias-label-tertiary,#00000073);font-size:12px;line-height:15px;overflow:hidden}";
215
215
  const tagId$17 = "@deepseek-ai/dsh-client-ui-chat/MessageItem.module.css";
216
216
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$17) + "]") === null) {
217
217
  const tag = document.createElement("style");
@@ -5773,7 +5773,7 @@ window.__ModuleLoader__.load({
5773
5773
  });
5774
5774
  //#endregion
5775
5775
  //#region \0dsh-css:/Users/shiguifeng/IdeaProjects/chonggou/deepseek-harness/packages/client/ui-chat/src/client/chat/AssistantMarkdown.module.css.mjs
5776
- const css$8 = ".LSXNsa_root{font-size:var(--dsh-content-font-size,14px);line-height:calc(24px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-primary);flex-direction:column;display:flex}.LSXNsa_body{flex-direction:column;gap:16px;display:flex}.LSXNsa_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)}.LSXNsa_body .md-table-wide>table{z-index:1;position:relative}.LSXNsa_body>[data-turn-process-inline][hidden]{margin-bottom:-16px}.LSXNsa_stopped{border-radius:var(--dsw-radius-sm);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-tertiary);align-self:flex-start;padding:0 6px;font-size:11px;line-height:18px}.LSXNsa_actions{margin-top:16px;margin-left:-6px}";
5776
+ const css$8 = ".LSXNsa_root{font:var(--dsw-font-markdown-base);color:var(--dsw-alias-label-primary);flex-direction:column;display:flex}.LSXNsa_body{--dsh-assistant-block-gap:16px;gap:var(--dsh-assistant-block-gap);flex-direction:column;display:flex}.LSXNsa_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)}.LSXNsa_body .md-table-wide>table{z-index:1;position:relative}.LSXNsa_body>[data-turn-process-inline][hidden]{margin-bottom:calc(-1 * var(--dsh-assistant-block-gap))}.LSXNsa_stopped{border-radius:var(--dsw-radius-sm);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-tertiary);align-self:flex-start;padding:0 6px;font-size:11px;line-height:18px}.LSXNsa_actions{margin-top:16px;margin-left:-6px}";
5777
5777
  const tagId$8 = "@deepseek-ai/dsh-client-ui-chat/AssistantMarkdown.module.css";
5778
5778
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$8) + "]") === null) {
5779
5779
  const tag = document.createElement("style");
@@ -5874,6 +5874,7 @@ window.__ModuleLoader__.load({
5874
5874
  "data-streaming": streaming || void 0,
5875
5875
  children: (0, react_jsx_runtime.jsxs)("div", {
5876
5876
  className: AssistantMarkdown_module_css_default.body,
5877
+ "data-assistant-body": true,
5877
5878
  children: [rendered, interrupted && (groupPart === void 0 || groupPart === "response" || !blocks.some((block) => block.kind !== "reasoning" && block.kind !== "tool-call")) && (0, react_jsx_runtime.jsx)("span", {
5878
5879
  className: AssistantMarkdown_module_css_default.stopped,
5879
5880
  children: t("message.stopped")
@@ -13,11 +13,11 @@ export interface Config {
13
13
  }
14
14
  /** Live preferences projected to the browser. */
15
15
  export declare const Config: z<Schemastery.ObjectS<NoInfer<{
16
- transcriptView: z<"compact" | "standard" | "detailed" | "verbose" | "normal" | "expanded", "compact" | "standard" | "detailed" | "verbose" | "normal" | "expanded", "volatile-defined">;
16
+ transcriptView: z<"compact" | "detailed" | "standard" | "verbose" | "normal" | "expanded", "compact" | "detailed" | "standard" | "verbose" | "normal" | "expanded", "volatile-defined">;
17
17
  performanceUsage: z<"compact" | "detailed", "compact" | "detailed", "volatile-defined">;
18
18
  linkOpening: z<"sidebar" | "new-tab", "sidebar" | "new-tab", "volatile-defined">;
19
19
  }>>, Schemastery.ObjectT<NoInfer<{
20
- transcriptView: z<"compact" | "standard" | "detailed" | "verbose" | "normal" | "expanded", "compact" | "standard" | "detailed" | "verbose" | "normal" | "expanded", "volatile-defined">;
20
+ transcriptView: z<"compact" | "detailed" | "standard" | "verbose" | "normal" | "expanded", "compact" | "detailed" | "standard" | "verbose" | "normal" | "expanded", "volatile-defined">;
21
21
  performanceUsage: z<"compact" | "detailed", "compact" | "detailed", "volatile-defined">;
22
22
  linkOpening: z<"sidebar" | "new-tab", "sidebar" | "new-tab", "volatile-defined">;
23
23
  }>>, "plain">;
@@ -17092,7 +17092,7 @@ window.__ModuleLoader__.load({
17092
17092
  }
17093
17093
  //#endregion
17094
17094
  //#region \0dsh-css:/Users/shiguifeng/IdeaProjects/chonggou/deepseek-harness/packages/client/ui-conversation/src/client/skeleton/InputBar.module.css.mjs
17095
- const css$1 = ".k_Uu_G_root{padding:0 var(--dsh-composer-side-clearance) 4px;flex-direction:column;align-items:center;display:flex}.k_Uu_G_dock{justify-content:center;align-items:center;gap:12px;max-width:100%;padding-top:4px;display:flex}.k_Uu_G_hero .k_Uu_G_dock:empty{display:none}.k_Uu_G_hero{padding:0 var(--dsh-composer-side-clearance)}.k_Uu_G_notice{width:100%;max-width:var(--dsh-composer-card-max-width);border-radius:var(--dsw-radius-md);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary);margin-bottom:6px;padding:4px 8px;font-size:12px;line-height:18px}.k_Uu_G_card{box-sizing:border-box;width:100%;max-width:var(--dsh-composer-card-max-width);--dsw-elevation-stroke-color:var(--dsw-alias-border-l2);border-radius:var(--dsw-radius-panel);background:var(--dsw-specific-input-major);box-shadow:var(--dsw-elevation-soft);font-size:var(--dsh-content-font-size,14px);line-height:calc(24px + var(--dsh-content-font-delta,0px));--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);border:0;flex-direction:column;gap:12px;padding-top:8px;display:flex;position:relative}.k_Uu_G_cardWorkspaceTrigger{--dsw-elevation-stroke-color:transparent;cursor:pointer}.k_Uu_G_cardWorkspaceTrigger:after{content:\"\";box-sizing:border-box;border-radius:var(--dsw-radius-panel);color:var(--dsw-alias-border-l4);pointer-events:none;border:1px dashed;transition:color .1s;position:absolute;inset:0}.k_Uu_G_cardWorkspaceTrigger :disabled{pointer-events:none}.k_Uu_G_cardWorkspaceTrigger:hover:after{color:var(--dsw-alias-state-business-primary)}.k_Uu_G_accessory{align-items:center;gap:8px;padding:10px 12px 0;display:flex}.k_Uu_G_overlayAnchor{height:0;position:absolute;inset:0 0 auto}.k_Uu_G_scroll{max-height:var(--dsh-composer-text-max-height);margin-right:4px;overflow-y:auto}.k_Uu_G_scroll::-webkit-scrollbar-track{margin-top:8px}.k_Uu_G_grow{position:relative}.k_Uu_G_pending{corner-shape:round;background:var(--dsw-alias-state-business-primary);border-radius:50%;width:8px;height:8px;animation:1s ease-in-out infinite alternate k_Uu_G_input-pending}@keyframes k_Uu_G_input-pending{0%{opacity:.35}to{opacity:1}}.k_Uu_G_input{box-sizing:border-box;min-height:36px;font-family:var(--dsw-font-family);font-size:inherit;line-height:inherit;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;color:var(--dsw-alias-label-primary);caret-color:var(--dsw-alias-state-business-primary);outline:none;padding:4px 8px 0 14px}.k_Uu_G_input p{margin:0}.k_Uu_G_input p:last-child:after{content:var(--dsh-composer-hint);color:var(--dsw-alias-label-caption)}.k_Uu_G_input[data-composer-composing] p:last-child:after{content:none}.k_Uu_G_input[data-composer-composing]+.k_Uu_G_placeholder{visibility:hidden}.k_Uu_G_placeholder{color:var(--dsw-alias-label-caption);white-space:nowrap;text-overflow:ellipsis;pointer-events:none;user-select:none;position:absolute;inset:4px 8px auto 14px;overflow:hidden}.k_Uu_G_inputDisabled{color:var(--dsw-alias-label-tertiary);cursor:not-allowed}.k_Uu_G_input[aria-haspopup=menu]{cursor:pointer}.k_Uu_G_hero .k_Uu_G_input{min-height:52px}.k_Uu_G_hero .k_Uu_G_placeholder{white-space:normal;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box}.k_Uu_G_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}.k_Uu_G_row[data-model-compact]{--dsh-composer-model-text-display:none;--dsh-composer-model-icon-display:block}.k_Uu_G_tools,.k_Uu_G_modes,.k_Uu_G_trailing{align-items:center;min-width:0;display:flex}.k_Uu_G_tools,.k_Uu_G_modes{gap:12px}.k_Uu_G_trailing{flex:none;gap:12px;margin-left:auto}@container (width<=560px){.k_Uu_G_tools,.k_Uu_G_modes,.k_Uu_G_trailing{gap:8px}}.k_Uu_G_add{corner-shape:round;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}.k_Uu_G_add:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-solid)}.k_Uu_G_add:disabled{opacity:.5;cursor:default}.k_Uu_G_select{border-radius:var(--dsw-radius-sm);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;outline:none;padding:0 20px 0 8px;font-size:13px;font-weight:500;line-height:20px}.k_Uu_G_select:hover:not(:disabled){background-color:var(--dsw-alias-interactive-bg-hover)}.k_Uu_G_select:disabled{opacity:.5;cursor:default}.k_Uu_G_primary{corner-shape:round;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)}.k_Uu_G_primary:hover:not(:disabled){background:var(--dsw-alias-button-info-hover)}.k_Uu_G_primary:disabled{opacity:.4;cursor:default}.k_Uu_G_retry{border-radius:var(--dsw-radius-sm);color:inherit;cursor:pointer;background:0 0;border:1px solid;margin-left:8px;padding:1px 8px;font-size:12px}.k_Uu_G_standardControls{align-items:center;gap:12px;min-width:0;display:flex}.k_Uu_G_tools[hidden],.k_Uu_G_standardControls[hidden]{display:none}.k_Uu_G_trailingActive{flex:1;margin-left:0}.k_Uu_G_activity{flex:none;align-items:center;display:flex}.k_Uu_G_activity:empty{display:none}.k_Uu_G_activityExpanded{flex:1;min-width:0}";
17095
+ const css$1 = ".k_Uu_G_root{padding:0 var(--dsh-composer-side-clearance) 4px;flex-direction:column;align-items:center;display:flex}.k_Uu_G_dock{justify-content:center;align-items:center;gap:12px;max-width:100%;padding-top:4px;display:flex}.k_Uu_G_hero .k_Uu_G_dock:empty{display:none}.k_Uu_G_hero{padding:0 var(--dsh-composer-side-clearance)}.k_Uu_G_notice{width:100%;max-width:var(--dsh-composer-card-max-width);border-radius:var(--dsw-radius-md);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary);margin-bottom:6px;padding:4px 8px;font-size:12px;line-height:18px}.k_Uu_G_card{box-sizing:border-box;width:100%;max-width:var(--dsh-composer-card-max-width);--dsw-elevation-stroke-color:var(--dsw-alias-border-l2);border-radius:var(--dsw-radius-panel);background:var(--dsw-specific-input-major);box-shadow:var(--dsw-elevation-soft);font:var(--dsw-font-markdown-base);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);border:0;flex-direction:column;gap:12px;padding-top:8px;display:flex;position:relative}.k_Uu_G_cardWorkspaceTrigger{--dsw-elevation-stroke-color:transparent;cursor:pointer}.k_Uu_G_cardWorkspaceTrigger:after{content:\"\";box-sizing:border-box;border-radius:var(--dsw-radius-panel);color:var(--dsw-alias-border-l4);pointer-events:none;border:1px dashed;transition:color .1s;position:absolute;inset:0}.k_Uu_G_cardWorkspaceTrigger :disabled{pointer-events:none}.k_Uu_G_cardWorkspaceTrigger:hover:after{color:var(--dsw-alias-state-business-primary)}.k_Uu_G_accessory{align-items:center;gap:8px;padding:10px 12px 0;display:flex}.k_Uu_G_overlayAnchor{height:0;position:absolute;inset:0 0 auto}.k_Uu_G_scroll{max-height:var(--dsh-composer-text-max-height);margin-right:4px;overflow-y:auto}.k_Uu_G_scroll::-webkit-scrollbar-track{margin-top:8px}.k_Uu_G_grow{position:relative}.k_Uu_G_pending{corner-shape:round;background:var(--dsw-alias-state-business-primary);border-radius:50%;width:8px;height:8px;animation:1s ease-in-out infinite alternate k_Uu_G_input-pending}@keyframes k_Uu_G_input-pending{0%{opacity:.35}to{opacity:1}}.k_Uu_G_input{box-sizing:border-box;min-height:36px;font-family:var(--dsw-font-family);font-size:inherit;line-height:inherit;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;color:var(--dsw-alias-label-primary);caret-color:var(--dsw-alias-state-business-primary);outline:none;padding:4px 8px 0 14px}.k_Uu_G_input p{margin:0}.k_Uu_G_input p:last-child:after{content:var(--dsh-composer-hint);color:var(--dsw-alias-label-caption)}.k_Uu_G_input[data-composer-composing] p:last-child:after{content:none}.k_Uu_G_input[data-composer-composing]+.k_Uu_G_placeholder{visibility:hidden}.k_Uu_G_placeholder{color:var(--dsw-alias-label-caption);white-space:nowrap;text-overflow:ellipsis;pointer-events:none;user-select:none;position:absolute;inset:4px 8px auto 14px;overflow:hidden}.k_Uu_G_inputDisabled{color:var(--dsw-alias-label-tertiary);cursor:not-allowed}.k_Uu_G_input[aria-haspopup=menu]{cursor:pointer}.k_Uu_G_hero .k_Uu_G_input{min-height:52px}.k_Uu_G_hero .k_Uu_G_placeholder{white-space:normal;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box}.k_Uu_G_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}.k_Uu_G_row[data-model-compact]{--dsh-composer-model-text-display:none;--dsh-composer-model-icon-display:block}.k_Uu_G_tools,.k_Uu_G_modes,.k_Uu_G_trailing{align-items:center;min-width:0;display:flex}.k_Uu_G_tools,.k_Uu_G_modes{gap:12px}.k_Uu_G_trailing{flex:none;gap:12px;margin-left:auto}@container (width<=560px){.k_Uu_G_tools,.k_Uu_G_modes,.k_Uu_G_trailing{gap:8px}}.k_Uu_G_add{corner-shape:round;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}.k_Uu_G_add:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-solid)}.k_Uu_G_add:disabled{opacity:.5;cursor:default}.k_Uu_G_select{border-radius:var(--dsw-radius-sm);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;outline:none;padding:0 20px 0 8px;font-size:13px;font-weight:500;line-height:20px}.k_Uu_G_select:hover:not(:disabled){background-color:var(--dsw-alias-interactive-bg-hover)}.k_Uu_G_select:disabled{opacity:.5;cursor:default}.k_Uu_G_primary{corner-shape:round;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)}.k_Uu_G_primary:hover:not(:disabled){background:var(--dsw-alias-button-info-hover)}.k_Uu_G_primary:disabled{opacity:.4;cursor:default}.k_Uu_G_retry{border-radius:var(--dsw-radius-sm);color:inherit;cursor:pointer;background:0 0;border:1px solid;margin-left:8px;padding:1px 8px;font-size:12px}.k_Uu_G_standardControls{align-items:center;gap:12px;min-width:0;display:flex}.k_Uu_G_tools[hidden],.k_Uu_G_standardControls[hidden]{display:none}.k_Uu_G_trailingActive{flex:1;margin-left:0}.k_Uu_G_activity{flex:none;align-items:center;display:flex}.k_Uu_G_activity:empty{display:none}.k_Uu_G_activityExpanded{flex:1;min-width:0}";
17096
17096
  const tagId$1 = "@deepseek-ai/dsh-client-ui-conversation/InputBar.module.css";
17097
17097
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
17098
17098
  const tag = document.createElement("style");
@@ -435,7 +435,7 @@ window.__ModuleLoader__.load({
435
435
  };
436
436
  //#endregion
437
437
  //#region \0dsh-css:/Users/shiguifeng/IdeaProjects/chonggou/deepseek-harness/packages/client/ui-goal/src/client/GoalCommandInputView.module.css.mjs
438
- const css = ".qGV2Nq_row{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.qGV2Nq_stack{min-width:0;max-width:min(calc(var(--dsh-chat-content-width,748px) * .702), 82%);flex-direction:column;align-items:flex-end;display:flex}.qGV2Nq_bubble{overflow-wrap:anywhere;border-radius:var(--dsw-radius-xl);background:var(--dsw-specific-bubble);max-width:100%;color:var(--dsw-alias-label-primary);font-size:var(--dsh-content-font-size,14px);line-height:calc(22px + var(--dsh-content-font-delta,0px));white-space:pre-wrap;padding:10px 16px}";
438
+ const css = ".qGV2Nq_row{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.qGV2Nq_stack{min-width:0;max-width:min(calc(var(--dsh-chat-content-width,748px) * .702), 82%);flex-direction:column;align-items:flex-end;display:flex}.qGV2Nq_bubble{overflow-wrap:anywhere;border-radius:var(--dsw-radius-xl);background:var(--dsw-specific-bubble);max-width:100%;color:var(--dsw-alias-label-primary);font:var(--dsw-font-markdown-base);white-space:pre-wrap;padding:10px 16px}";
439
439
  const tagId = "@deepseek-ai/dsh-client-ui-goal/GoalCommandInputView.module.css";
440
440
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
441
441
  const tag = document.createElement("style");