@chatcode/chatcode-cli 3.0.4 → 3.0.5-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 (143) hide show
  1. package/README.i18n.yaml +6 -6
  2. package/README.md +10 -4
  3. package/README.zh.md +10 -4
  4. package/lib/bin.js +23 -9
  5. package/lib/{command-errors-Ca64Lgba.js → command-errors-CsRCh0gk.js} +12 -12
  6. package/lib/{command-trees-CVc4Xu_z.js → command-trees-CD_43rxX.js} +2 -2
  7. package/lib/{component-identity-6aEut5Yt.js → component-identity-DGA2-TeB.js} +3 -3
  8. package/lib/{dump-config-ZzrfvtnX.js → dump-config-D8kXfdTs.js} +1 -1
  9. package/lib/dump-config-DuCc-QB7.js +2 -0
  10. package/lib/{dump-config-schema-BlO-eZ-J.js → dump-config-schema-CtZbroi6.js} +2 -2
  11. package/lib/{extension-events-C7MUpqVE.js → extension-events-D0BjYRqT.js} +21 -21
  12. package/lib/{host-access-CLbyAGT5.js → host-access-DLJjuR07.js} +1 -1
  13. package/lib/{keymap-82JwLLHe.js → keymap-C4cs2IBN.js} +2 -2
  14. package/lib/{plugin-BlQlWIR5.js → plugin-CGtTByud.js} +801 -456
  15. package/lib/{plugin-BZdazFXS.js → plugin-CYw-MBRn.js} +1 -1
  16. package/lib/{profile-boot-B0aEEQIR.js → profile-boot-CffsubnV.js} +7 -7
  17. package/lib/profile-boot.js +1 -1
  18. package/lib/{scenes-BNS0ZFyQ.js → scenes-CbAGK5Uy.js} +3 -3
  19. package/lib/{settings-sections-CXH24cu5.js → settings-sections-DYKDa04e.js} +3 -3
  20. package/lib/{statusBarSettings-BAMzn8fX.js → statusBarSettings-T1m8xad4.js} +3 -3
  21. package/lib/{themes-DXUIvP7m.js → themes-BY2ui1Dv.js} +12 -12
  22. package/lib/tui-compat-command-trees.js +1 -1
  23. package/lib/tui-compat-extensions.js +3 -3
  24. package/lib/tui-compat-plugin-host.js +5 -5
  25. package/lib/tui-compat-scenes.js +1 -1
  26. package/lib/tui-compat-settings-sections.js +1 -1
  27. package/lib/tui-compat-working-activity.js +1 -1
  28. package/lib/tui-compat-workspaces.js +1 -1
  29. package/lib/tui-compat.js +7 -7
  30. package/lib/types/bin.d.ts +9 -0
  31. package/lib/types/tui-compat.d.ts +1 -1
  32. package/lib/types/web-instance-process.d.ts +20 -0
  33. package/lib/{web-instance-DbP7IHPv.js → web-instance-D_Ppi2Zo.js} +176 -14
  34. package/lib/{web-instance-B0jec7cq.js → web-instance-amvCJWnq.js} +1 -1
  35. package/lib/{workspaces-CUJXNU5W.js → workspaces-D5VKbESy.js} +2 -2
  36. package/package.json +23 -24
  37. package/runtime/manifest.json +2 -2
  38. package/runtime/node_modules/@deepseek-ai/dsh-agent-default-model/lib/index.js +7 -3
  39. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/client.js +11 -3
  40. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/contract/snapshot.d.ts +1 -0
  41. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/sessions/assistant-stream.d.ts +2 -0
  42. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/sessions/assistant-stream.js +4 -0
  43. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/sessions/session.js +10 -3
  44. package/runtime/node_modules/@deepseek-ai/dsh-app-boot/lib/index.js +32 -11
  45. package/runtime/node_modules/@deepseek-ai/dsh-atomic-write/lib/index.js +62 -11
  46. package/runtime/node_modules/@deepseek-ai/dsh-atomic-write/lib/types/darwin-lock.d.ts +7 -0
  47. package/runtime/node_modules/@deepseek-ai/dsh-atomic-write/lib/types/index.d.ts +7 -2
  48. package/runtime/node_modules/@deepseek-ai/dsh-atomic-write/lib/types/linux-lock.d.ts +1 -1
  49. package/runtime/node_modules/@deepseek-ai/dsh-client-locale/lib/client.js +7 -7
  50. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-agent-preset/lib/client.js +62 -62
  51. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-approval/lib/client.js +10 -10
  52. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-attachment/lib/client.js +49 -49
  53. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-chat/lib/client.js +204 -204
  54. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-commands/lib/client.js +16 -16
  55. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-conversation/lib/client.js +159 -157
  56. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-conversation/lib/types/client/service.d.ts +4 -2
  57. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-cordis/lib/client.js +74 -74
  58. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-deliverables/lib/client.js +129 -123
  59. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-deliverables/lib/index.js +19 -14
  60. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-deliverables/lib/types/changes.d.ts +2 -2
  61. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-deliverables/lib/types/client/Deliverables.d.ts +1 -2
  62. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-deliverables/lib/types/client/locales.d.ts +2 -1
  63. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-deliverables/lib/types/client/present-open.d.ts +1 -1
  64. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-deliverables/package.json +2 -4
  65. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-directory-picker-browse/lib/client.js +39 -39
  66. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-goal/lib/client.js +16 -16
  67. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-input-trigger/lib/client.js +23 -23
  68. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-jobs/lib/client.js +37 -37
  69. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-layout/lib/client.js +9 -9
  70. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-message-feedback/lib/client.js +12 -12
  71. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-model-selection/lib/client.js +119 -32
  72. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-model-selection/lib/types/client/catalog.d.ts +13 -0
  73. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-model-selection/lib/types/client/directory.d.ts +2 -0
  74. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-model-selection/lib/types/client/effort-preferences.d.ts +20 -0
  75. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-model-selection/lib/types/client/slots.d.ts +2 -1
  76. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-open-in-app/lib/client.js +8 -8
  77. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-permission-presets/lib/client.js +18 -18
  78. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-plan/lib/client.js +22 -22
  79. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-plugin-manager/lib/client.js +128 -128
  80. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-schedule/lib/client.js +182 -182
  81. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-account/lib/client.js +130 -130
  82. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-general/lib/client.js +50 -50
  83. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-models/lib/client.js +88 -88
  84. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-plugin-inventory/lib/client.js +36 -36
  85. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-plugins/lib/client.js +13 -13
  86. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-subagent/lib/client.js +27 -27
  87. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-shortcuts/lib/client.js +42 -42
  88. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/client.js +44 -44
  89. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-sidebar-browser/lib/client.js +25 -25
  90. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-sidebar-documentpreview/lib/client.excel.js +9 -9
  91. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-sidebar-documentpreview/lib/client.js +70 -70
  92. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-sidebar-documentpreview/lib/client.pdf.js +9 -9
  93. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-sidebar-files/lib/client.js +18 -18
  94. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-sidebar-right/lib/client.js +26 -26
  95. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-sidebar-terminal/lib/client.js +16 -16
  96. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-sidebar-terminal/lib/client.terminal.js +11 -11
  97. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-skill/lib/client.js +20 -20
  98. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-subagent/lib/client.js +37 -37
  99. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-theme/lib/client.js +27 -27
  100. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-tool/lib/client.js +95 -95
  101. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-trajectory/lib/client.js +197 -197
  102. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-user-questions/lib/client.js +49 -49
  103. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workflow-run/lib/client.js +24 -24
  104. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/client.js +656 -152
  105. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/ArchivedSessions.d.ts +9 -2
  106. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/locales.d.ts +46 -0
  107. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/session-actions/DeleteSession.d.ts +9 -10
  108. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/session-actions/deletion.d.ts +57 -0
  109. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/package.json +2 -0
  110. package/runtime/node_modules/@deepseek-ai/dsh-experimental-client-ui-agent-team/lib/client.js +32 -32
  111. package/runtime/node_modules/@deepseek-ai/dsh-experimental-client-ui-voice-input/lib/client.js +24 -24
  112. package/runtime/node_modules/@deepseek-ai/dsh-llm-deepseek/lib/index.js +899 -453
  113. package/runtime/node_modules/@deepseek-ai/dsh-llm-deepseek/lib/types/adapter.d.ts +4 -20
  114. package/runtime/node_modules/@deepseek-ai/dsh-llm-deepseek/lib/types/chat-completions/adapter.d.ts +8 -0
  115. package/runtime/node_modules/@deepseek-ai/dsh-llm-deepseek/lib/types/chat-completions/serialize.d.ts +10 -0
  116. package/runtime/node_modules/@deepseek-ai/dsh-llm-deepseek/lib/types/chat-completions/sse.d.ts +24 -0
  117. package/runtime/node_modules/@deepseek-ai/dsh-llm-deepseek/lib/types/chat-completions/translate.d.ts +37 -0
  118. package/runtime/node_modules/@deepseek-ai/dsh-llm-deepseek/lib/types/chat-completions/types.d.ts +159 -0
  119. package/runtime/node_modules/@deepseek-ai/dsh-llm-deepseek/lib/types/file-store.d.ts +3 -0
  120. package/runtime/node_modules/@deepseek-ai/dsh-llm-deepseek/lib/types/files-api.d.ts +4 -0
  121. package/runtime/node_modules/@deepseek-ai/dsh-llm-deepseek/lib/types/index.d.ts +1 -0
  122. package/runtime/node_modules/@deepseek-ai/dsh-llm-deepseek/lib/types/protocol-adapter.d.ts +41 -0
  123. package/runtime/node_modules/@deepseek-ai/dsh-llm-deepseek/lib/types/protocol.d.ts +35 -0
  124. package/runtime/node_modules/@deepseek-ai/dsh-llm-deepseek/lib/types/transport.d.ts +2 -1
  125. package/runtime/node_modules/@deepseek-ai/dsh-llm-deepseek/lib/types/types.d.ts +2 -2
  126. package/runtime/node_modules/@deepseek-ai/dsh-mcp-client/lib/index.js +5 -4
  127. package/runtime/node_modules/@deepseek-ai/dsh-session-log-export/lib/client.js +4 -4
  128. package/runtime/node_modules/@deepseek-ai/dsh-session-log-export/lib/index.js +1 -1
  129. package/runtime/node_modules/@deepseek-ai/dsh-session-persistence-jsonl/lib/index.js +2 -2
  130. package/runtime/node_modules/@deepseek-ai/dsh-tool-cordis/lib/types/api-catalog.js +12 -10
  131. package/runtime/node_modules/@deepseek-ai/dsh-workspace-changes/lib/index.js +208 -39
  132. package/runtime/node_modules/@deepseek-ai/dsh-workspace-changes/lib/types/archive.d.ts +47 -0
  133. package/runtime/node_modules/@deepseek-ai/dsh-workspace-changes/lib/types/archive.js +129 -0
  134. package/runtime/node_modules/@deepseek-ai/dsh-workspace-changes/lib/types/index.d.ts +2 -0
  135. package/runtime/node_modules/@deepseek-ai/dsh-workspace-changes/lib/types/index.js +31 -8
  136. package/runtime/node_modules/@deepseek-ai/dsh-workspace-changes/lib/types/recorder.d.ts +7 -2
  137. package/runtime/node_modules/@deepseek-ai/dsh-workspace-changes/lib/types/recorder.js +35 -19
  138. package/runtime/node_modules/@deepseek-ai/dsh-workspace-changes/lib/types/types.d.ts +11 -10
  139. package/runtime/node_modules/@deepseek-ai/dsh-workspace-changes/package.json +1 -0
  140. package/scripts/link-embedded-runtime.mjs +1 -1
  141. package/lib/dump-config-CDixiJNt.js +0 -2
  142. package/lib/{home-migration-BjDmRwBB.js → home-migration-lRjtl2fP.js} +1 -1
  143. package/lib/{startup-diagnostics-C_hRCp-q.js → startup-diagnostics-4mLHYTFc.js} +1 -1
@@ -9,9 +9,9 @@ window.__ModuleLoader__.load({
9
9
  let react = require("react");
10
10
  let _deepseek_ai_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
11
11
  //#region lib/types/changes.js
12
- /** Authenticated GET route serving one announced change summary while its Session lives. */
12
+ /** Authenticated GET route serving one announced change summary from live or archived turn records. */
13
13
  const CHANGED_FILES_PATH = "/api/changes.summary";
14
- /** Authenticated GET route serving one listed file's turn-start and turn-end comparison while its Session lives. */
14
+ /** Authenticated GET route serving one listed file's turn-start and turn-end comparison from live or archived turn records. */
15
15
  const CHANGES_DIFF_PATH = "/api/changes.diff";
16
16
  /** Authenticated POST route for opening a changed file on the Host desktop. */
17
17
  const CHANGES_OPEN_PATH = "/api/changes.open";
@@ -468,8 +468,8 @@ window.__ModuleLoader__.load({
468
468
  }
469
469
  };
470
470
  //#endregion
471
- //#region \0dsh-css:/Users/shiguifeng/IdeaProjects/chonggou/deepseek-harness/packages/client/ui-deliverables/src/client/PresentRow.module.css.mjs
472
- const css$4 = ".l0PNDq_summary{min-width:0;color:var(--dsw-alias-label-secondary);align-items:center;gap:8px;margin-left:8px;font-size:12px;display:flex}.l0PNDq_summary>:first-child{flex-shrink:0}.l0PNDq_paths{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.l0PNDq_output{border-radius:var(--dsw-radius-lg);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;margin:8px 0;padding:12px;font-size:12px}.l0PNDq_inspect{color:var(--dsw-alias-link);font:inherit;cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:4px 0;font-size:12px}";
471
+ //#region \0dsh-css:/Users/shiguifeng/IdeaProjects/chonggou/chatcode-cli-harness/packages/client/ui-deliverables/src/client/PresentRow.module.css.mjs
472
+ const css$4 = ".SbR9aG_summary{min-width:0;color:var(--dsw-alias-label-secondary);align-items:center;gap:8px;margin-left:8px;font-size:12px;display:flex}.SbR9aG_summary>:first-child{flex-shrink:0}.SbR9aG_paths{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.SbR9aG_output{border-radius:var(--dsw-radius-lg);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;margin:8px 0;padding:12px;font-size:12px}.SbR9aG_inspect{color:var(--dsw-alias-link);font:inherit;cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:4px 0;font-size:12px}";
473
473
  const tagId$4 = "@deepseek-ai/dsh-client-ui-deliverables/PresentRow.module.css";
474
474
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$4) + "]") === null) {
475
475
  const tag = document.createElement("style");
@@ -479,10 +479,10 @@ window.__ModuleLoader__.load({
479
479
  document.head.appendChild(tag);
480
480
  }
481
481
  var PresentRow_module_css_default = {
482
- "inspect": "l0PNDq_inspect",
483
- "output": "l0PNDq_output",
484
- "paths": "l0PNDq_paths",
485
- "summary": "l0PNDq_summary"
482
+ "inspect": "SbR9aG_inspect",
483
+ "output": "SbR9aG_output",
484
+ "paths": "SbR9aG_paths",
485
+ "summary": "SbR9aG_summary"
486
486
  };
487
487
  //#endregion
488
488
  //#region lib/types/client/PresentRow.js
@@ -636,8 +636,8 @@ window.__ModuleLoader__.load({
636
636
  return sessionFileAddress(sessionId, normalized);
637
637
  }
638
638
  //#endregion
639
- //#region \0dsh-css:/Users/shiguifeng/IdeaProjects/chonggou/deepseek-harness/packages/client/ui-deliverables/src/client/FileDiff.module.css.mjs
640
- const css$3 = ".cjIIYW_root{--diff-empty-fill:color-mix(in srgb, var(--dsw-alias-interactive-bg-hover) 50%, transparent);box-sizing:border-box;width:100%;min-height:0;color:var(--dsw-alias-label-primary);flex-direction:column;display:flex}.cjIIYW_header{box-sizing:border-box;border-bottom:.5px solid var(--dsw-alias-border-l3);flex:none;align-items:center;gap:6px;height:38px;padding:0 6px 0 8px;display:flex}.cjIIYW_status{color:var(--dsw-alias-label-secondary);align-items:center;gap:12px;margin:0;padding:16px;font-size:13px;display:flex}.cjIIYW_body{min-height:0;font:var(--dsw-font-markdown-code-block);flex-direction:column;flex:auto;padding:8px 0 16px;display:flex;overflow:auto}.cjIIYW_columns{flex:auto;grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:0;display:grid}.cjIIYW_column,.cjIIYW_body[data-review-view=unified]:not([data-review-wrap]){grid-template-columns:minmax(max-content,100%);align-content:start;display:grid}.cjIIYW_column{overscroll-behavior:none;min-width:0;overflow-x:scroll}.cjIIYW_column+.cjIIYW_column{border-left:.5px solid var(--dsw-alias-border-l3)}.cjIIYW_sideLine{box-sizing:border-box;white-space:pre;grid-template-columns:3.5em max-content;width:max-content;min-width:100%;min-height:22px;line-height:22px;display:grid}.cjIIYW_note{font:var(--dsw-font-xs-13);color:var(--dsw-alias-label-tertiary);margin:0;padding:4px 16px 8px}.cjIIYW_hunk{margin-bottom:8px}.cjIIYW_hunkHeader{color:var(--dsw-alias-label-tertiary);white-space:pre;padding:4px 16px}.cjIIYW_line{box-sizing:border-box;white-space:pre;grid-template-columns:3.5em 3.5em 1.2em minmax(0,1fr);min-height:22px;line-height:22px;display:grid}.cjIIYW_splitLine{white-space:pre;grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:22px;line-height:22px;display:grid}.cjIIYW_cell{box-sizing:border-box;grid-template-columns:3.5em minmax(0,1fr);min-width:0;display:grid}.cjIIYW_cell+.cjIIYW_cell{border-left:.5px solid var(--dsw-alias-border-l3)}.cjIIYW_number{color:var(--dsw-alias-label-tertiary);text-align:right;user-select:none;padding-right:8px}.cjIIYW_sign{text-align:center;user-select:none}.cjIIYW_text{padding-right:16px}.cjIIYW_body[data-review-wrap] .cjIIYW_line,.cjIIYW_body[data-review-wrap] .cjIIYW_splitLine{white-space:pre-wrap}.cjIIYW_body[data-review-wrap] .cjIIYW_text{overflow-wrap:anywhere}.cjIIYW_add{--diff-gutter-fill:var(--dsw-alias-file-diff-added-gutter);--diff-marker:var(--dsw-alias-file-diff-added-marker);background:var(--dsw-alias-file-diff-added-bg)}.cjIIYW_del{--diff-gutter-fill:var(--dsw-alias-file-diff-deleted-gutter);--diff-marker:var(--dsw-alias-file-diff-deleted-marker);background:var(--dsw-alias-file-diff-deleted-bg)}.cjIIYW_add .cjIIYW_number,.cjIIYW_del .cjIIYW_number{background:var(--diff-gutter-fill);color:var(--diff-marker)}.cjIIYW_add .cjIIYW_number:first-child,.cjIIYW_del .cjIIYW_number:first-child{box-shadow:inset 3px 0 0 var(--diff-marker)}.cjIIYW_add .cjIIYW_sign,.cjIIYW_del .cjIIYW_sign{color:var(--diff-marker)}.cjIIYW_context .cjIIYW_text{color:var(--dsw-alias-label-secondary)}.cjIIYW_empty{background:var(--diff-empty-fill)}";
639
+ //#region \0dsh-css:/Users/shiguifeng/IdeaProjects/chonggou/chatcode-cli-harness/packages/client/ui-deliverables/src/client/FileDiff.module.css.mjs
640
+ const css$3 = ".nVYGPW_root{--diff-empty-fill:color-mix(in srgb, var(--dsw-alias-interactive-bg-hover) 50%, transparent);box-sizing:border-box;width:100%;min-height:0;color:var(--dsw-alias-label-primary);flex-direction:column;display:flex}.nVYGPW_header{box-sizing:border-box;border-bottom:.5px solid var(--dsw-alias-border-l3);flex:none;align-items:center;gap:6px;height:38px;padding:0 6px 0 8px;display:flex}.nVYGPW_status{color:var(--dsw-alias-label-secondary);align-items:center;gap:12px;margin:0;padding:16px;font-size:13px;display:flex}.nVYGPW_body{min-height:0;font:var(--dsw-font-markdown-code-block);flex-direction:column;flex:auto;padding:8px 0 16px;display:flex;overflow:auto}.nVYGPW_columns{flex:auto;grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:0;display:grid}.nVYGPW_column,.nVYGPW_body[data-review-view=unified]:not([data-review-wrap]){grid-template-columns:minmax(max-content,100%);align-content:start;display:grid}.nVYGPW_column{overscroll-behavior:none;min-width:0;overflow-x:scroll}.nVYGPW_column+.nVYGPW_column{border-left:.5px solid var(--dsw-alias-border-l3)}.nVYGPW_sideLine{box-sizing:border-box;white-space:pre;grid-template-columns:3.5em max-content;width:max-content;min-width:100%;min-height:22px;line-height:22px;display:grid}.nVYGPW_note{font:var(--dsw-font-xs-13);color:var(--dsw-alias-label-tertiary);margin:0;padding:4px 16px 8px}.nVYGPW_hunk{margin-bottom:8px}.nVYGPW_hunkHeader{color:var(--dsw-alias-label-tertiary);white-space:pre;padding:4px 16px}.nVYGPW_line{box-sizing:border-box;white-space:pre;grid-template-columns:3.5em 3.5em 1.2em minmax(0,1fr);min-height:22px;line-height:22px;display:grid}.nVYGPW_splitLine{white-space:pre;grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:22px;line-height:22px;display:grid}.nVYGPW_cell{box-sizing:border-box;grid-template-columns:3.5em minmax(0,1fr);min-width:0;display:grid}.nVYGPW_cell+.nVYGPW_cell{border-left:.5px solid var(--dsw-alias-border-l3)}.nVYGPW_number{color:var(--dsw-alias-label-tertiary);text-align:right;user-select:none;padding-right:8px}.nVYGPW_sign{text-align:center;user-select:none}.nVYGPW_text{padding-right:16px}.nVYGPW_body[data-review-wrap] .nVYGPW_line,.nVYGPW_body[data-review-wrap] .nVYGPW_splitLine{white-space:pre-wrap}.nVYGPW_body[data-review-wrap] .nVYGPW_text{overflow-wrap:anywhere}.nVYGPW_add{--diff-gutter-fill:var(--dsw-alias-file-diff-added-gutter);--diff-marker:var(--dsw-alias-file-diff-added-marker);background:var(--dsw-alias-file-diff-added-bg)}.nVYGPW_del{--diff-gutter-fill:var(--dsw-alias-file-diff-deleted-gutter);--diff-marker:var(--dsw-alias-file-diff-deleted-marker);background:var(--dsw-alias-file-diff-deleted-bg)}.nVYGPW_add .nVYGPW_number,.nVYGPW_del .nVYGPW_number{background:var(--diff-gutter-fill);color:var(--diff-marker)}.nVYGPW_add .nVYGPW_number:first-child,.nVYGPW_del .nVYGPW_number:first-child{box-shadow:inset 3px 0 0 var(--diff-marker)}.nVYGPW_add .nVYGPW_sign,.nVYGPW_del .nVYGPW_sign{color:var(--diff-marker)}.nVYGPW_context .nVYGPW_text{color:var(--dsw-alias-label-secondary)}.nVYGPW_empty{background:var(--diff-empty-fill)}";
641
641
  const tagId$3 = "@deepseek-ai/dsh-client-ui-deliverables/FileDiff.module.css";
642
642
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$3) + "]") === null) {
643
643
  const tag = document.createElement("style");
@@ -647,26 +647,26 @@ window.__ModuleLoader__.load({
647
647
  document.head.appendChild(tag);
648
648
  }
649
649
  var FileDiff_module_css_default = {
650
- "add": "cjIIYW_add",
651
- "body": "cjIIYW_body",
652
- "cell": "cjIIYW_cell",
653
- "column": "cjIIYW_column",
654
- "columns": "cjIIYW_columns",
655
- "context": "cjIIYW_context",
656
- "del": "cjIIYW_del",
657
- "empty": "cjIIYW_empty",
658
- "header": "cjIIYW_header",
659
- "hunk": "cjIIYW_hunk",
660
- "hunkHeader": "cjIIYW_hunkHeader",
661
- "line": "cjIIYW_line",
662
- "note": "cjIIYW_note",
663
- "number": "cjIIYW_number",
664
- "root": "cjIIYW_root",
665
- "sideLine": "cjIIYW_sideLine",
666
- "sign": "cjIIYW_sign",
667
- "splitLine": "cjIIYW_splitLine",
668
- "status": "cjIIYW_status",
669
- "text": "cjIIYW_text"
650
+ "add": "nVYGPW_add",
651
+ "body": "nVYGPW_body",
652
+ "cell": "nVYGPW_cell",
653
+ "column": "nVYGPW_column",
654
+ "columns": "nVYGPW_columns",
655
+ "context": "nVYGPW_context",
656
+ "del": "nVYGPW_del",
657
+ "empty": "nVYGPW_empty",
658
+ "header": "nVYGPW_header",
659
+ "hunk": "nVYGPW_hunk",
660
+ "hunkHeader": "nVYGPW_hunkHeader",
661
+ "line": "nVYGPW_line",
662
+ "note": "nVYGPW_note",
663
+ "number": "nVYGPW_number",
664
+ "root": "nVYGPW_root",
665
+ "sideLine": "nVYGPW_sideLine",
666
+ "sign": "nVYGPW_sign",
667
+ "splitLine": "nVYGPW_splitLine",
668
+ "status": "nVYGPW_status",
669
+ "text": "nVYGPW_text"
670
670
  };
671
671
  //#endregion
672
672
  //#region lib/types/client/FileDiff.js
@@ -1288,8 +1288,8 @@ window.__ModuleLoader__.load({
1288
1288
  return matches.length === 1 ? matches[0] : void 0;
1289
1289
  }
1290
1290
  //#endregion
1291
- //#region \0dsh-css:/Users/shiguifeng/IdeaProjects/chonggou/deepseek-harness/packages/client/ui-deliverables/src/client/ChangedFiles.module.css.mjs
1292
- const css$2 = ".nqoI_W_card{--changes-fill:var(--dsw-static-neutral-50);--changes-hover:var(--dsw-static-neutral-100);border:.5px solid var(--dsw-alias-border-l2);border-radius:var(--dsw-radius-lg);background:var(--dsw-alias-bg-layer-1);min-width:0;color:var(--dsw-alias-label-primary);flex-direction:column;margin-top:4px;display:flex;overflow:hidden}.nqoI_W_card[data-single=true]{border-color:var(--dsw-alias-border-l1)}body[data-ds-dark-theme] .nqoI_W_card{--changes-fill:var(--dsw-static-neutral-850);--changes-hover:var(--dsw-static-neutral-800)}.nqoI_W_header{box-sizing:border-box;background:var(--changes-fill);width:100%;min-width:0;height:60px;color:inherit;font:inherit;text-align:left;border:0;align-items:center;gap:10px;margin:0;padding:8px 10px;display:flex}button.nqoI_W_header{cursor:pointer;transition:background-color .12s}button.nqoI_W_header:hover:not(:disabled),button.nqoI_W_header:focus-visible{background:var(--changes-hover)}button.nqoI_W_header:focus-visible{box-shadow:inset 0 0 0 2px var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline:none}button.nqoI_W_header:disabled{cursor:progress}.nqoI_W_tile{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l1);border-radius:var(--dsw-radius-lg);background:color-mix(in srgb, var(--dsw-static-neutral-00) 50%, transparent);flex:none;place-items:center;width:40px;height:40px;display:grid}body[data-ds-dark-theme] .nqoI_W_tile{background:color-mix(in srgb, var(--dsw-static-neutral-00) 5%, transparent)}.nqoI_W_titles{flex-direction:column;flex:1;min-width:0;display:flex}.nqoI_W_title{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;line-height:20px;overflow:hidden}.nqoI_W_stat{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:16px;display:inline-flex}.nqoI_W_statCounts{font-family:var(--ds-font-family-code);gap:6px;display:inline-flex}.nqoI_W_previewHint,.nqoI_W_header:hover .nqoI_W_statCounts,.nqoI_W_header:focus-visible .nqoI_W_statCounts{display:none}.nqoI_W_header:hover .nqoI_W_previewHint,.nqoI_W_header:focus-visible .nqoI_W_previewHint{display:inline}.nqoI_W_stat[data-error=true],.nqoI_W_counts[data-error=true]{color:var(--dsw-alias-state-error-primary)}.nqoI_W_added{color:var(--dsw-alias-state-success-primary)}.nqoI_W_deleted{color:var(--dsw-alias-state-error-primary)}.nqoI_W_list{border-top:.5px solid var(--dsw-alias-border-l2);margin:0;padding:0;list-style:none}.nqoI_W_row{box-sizing:border-box;width:100%;min-width:0;min-height:24px;color:var(--dsw-alias-label-tertiary);cursor:pointer;font-family:var(--ds-font-family-code);text-align:left;background:0 0;border:0;justify-content:space-between;align-items:center;gap:10px;margin:0;padding:7px 18px 7px 14px;font-size:11px;line-height:18px;display:flex}.nqoI_W_row:hover:not(:disabled),.nqoI_W_row:focus-visible{background:var(--dsw-alias-interactive-bg-hover)}.nqoI_W_row:focus-visible{box-shadow:inset 0 0 0 2px var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline:none}.nqoI_W_row:disabled{cursor:progress}.nqoI_W_path{min-width:0;font-family:var(--dsw-font-family);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.nqoI_W_counts{white-space:nowrap;color:var(--dsw-alias-label-tertiary);flex:none;gap:6px;display:inline-flex}.nqoI_W_toggle{box-sizing:border-box;width:100%;color:var(--dsw-alias-label-tertiary);cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;justify-content:flex-start;align-items:center;gap:4px;margin:0;padding:10px 18px 10px 14px;font-size:12px;line-height:18px;display:inline-flex}.nqoI_W_toggle:hover{background:var(--dsw-alias-interactive-bg-hover)}.nqoI_W_toggle svg{flex:none;width:14px;height:14px}@media (pointer:coarse){.nqoI_W_row,.nqoI_W_toggle{min-height:44px}}.nqoI_W_preview{max-height:100%;overflow:hidden}.nqoI_W_previewPath{min-width:0;color:var(--dsw-alias-label-tertiary);font-family:var(--ds-font-family-code);white-space:nowrap;flex:auto;font-size:12px;line-height:20px;overflow:auto hidden}.nqoI_W_preview [data-diff-note=metadata],.nqoI_W_preview [data-diff-hunk-header]{display:none}";
1291
+ //#region \0dsh-css:/Users/shiguifeng/IdeaProjects/chonggou/chatcode-cli-harness/packages/client/ui-deliverables/src/client/ChangedFiles.module.css.mjs
1292
+ const css$2 = ".TryzQa_card{--changes-fill:var(--dsw-static-neutral-50);border:1px solid var(--dsw-alias-border-l1);border-radius:var(--dsw-radius-lg);background:var(--dsw-alias-bg-layer-1);min-width:0;color:var(--dsw-alias-label-primary);box-shadow:0 1px 3px color-mix(in srgb, var(--dsw-alias-label-primary) 3%, transparent);flex-direction:column;margin-top:8px;display:flex;overflow:hidden}body[data-ds-dark-theme] .TryzQa_card{--changes-fill:var(--dsw-static-neutral-850)}.TryzQa_heading{align-items:center;gap:8px;min-width:0;padding-right:16px;display:flex}.TryzQa_header{box-sizing:border-box;min-width:0;height:68px;color:inherit;font:inherit;text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:12px;margin:0;padding:12px 16px;display:flex}.TryzQa_review{white-space:nowrap;flex:none;gap:6px;padding-inline:10px}button.TryzQa_header{cursor:pointer;transition:background-color .12s}button.TryzQa_header:hover:not(:disabled),button.TryzQa_header:focus-visible{background:var(--changes-fill)}button.TryzQa_header:focus-visible{box-shadow:inset 0 0 0 2px var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline:none}button.TryzQa_header:disabled{cursor:progress}.TryzQa_tile{box-sizing:border-box;border-radius:var(--dsw-radius-lg);background:var(--changes-fill);width:40px;height:40px;color:var(--dsw-alias-label-secondary);flex:none;place-items:center;display:grid}.TryzQa_titles{flex-direction:column;flex:1;min-width:0;display:flex}.TryzQa_title{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;line-height:22px;overflow:hidden}.TryzQa_stat{color:var(--dsw-alias-label-secondary);margin-top:2px;font-size:12px;line-height:18px;display:inline-flex}.TryzQa_statCounts{font-family:var(--ds-font-family-code);font-variant-numeric:tabular-nums;gap:10px;font-weight:500;display:inline-flex}.TryzQa_stat[data-error=true],.TryzQa_counts[data-error=true]{color:var(--dsw-alias-state-error-primary)}.TryzQa_added{color:var(--dsw-alias-state-success-primary)}.TryzQa_deleted{color:var(--dsw-alias-state-error-primary)}.TryzQa_list{border-top:1px solid var(--dsw-alias-border-l1);margin:0;padding:4px 0;list-style:none}.TryzQa_row{box-sizing:border-box;width:100%;min-width:0;min-height:38px;color:var(--dsw-alias-label-primary);cursor:pointer;font-family:var(--dsw-font-family);text-align:left;background:0 0;border:0;justify-content:space-between;align-items:center;gap:16px;margin:0;padding:9px 16px;font-size:13px;line-height:20px;transition:background-color .12s;display:flex}.TryzQa_row:hover:not(:disabled),.TryzQa_row:focus-visible{background:var(--dsw-alias-interactive-bg-hover)}.TryzQa_row:focus-visible{box-shadow:inset 0 0 0 2px var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline:none}.TryzQa_row:disabled{cursor:progress}.TryzQa_path{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.TryzQa_counts{white-space:nowrap;color:var(--dsw-alias-label-secondary);font-family:var(--ds-font-family-code);font-variant-numeric:tabular-nums;flex:none;gap:10px;font-size:12px;font-weight:500;display:inline-flex}.TryzQa_counts>span{text-align:right;min-width:3ch}.TryzQa_toggle{box-sizing:border-box;border:0;border-top:1px solid var(--dsw-alias-border-l1);width:100%;min-height:40px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;text-align:left;background:0 0;justify-content:flex-start;align-items:center;gap:6px;margin:0;padding:10px 16px;font-size:12px;line-height:20px;display:inline-flex}.TryzQa_toggle:hover{background:var(--dsw-alias-interactive-bg-hover)}.TryzQa_toggle:focus-visible{box-shadow:inset 0 0 0 2px var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline:none}.TryzQa_toggle svg{flex:none;width:14px;height:14px}@media (pointer:coarse){.TryzQa_row,.TryzQa_toggle,.TryzQa_review{min-height:44px}}@media (width<=480px){.TryzQa_heading{gap:4px;padding-right:12px}.TryzQa_header{gap:10px;padding-inline:12px}.TryzQa_row,.TryzQa_toggle{padding-inline:12px}}@media (prefers-reduced-motion:reduce){button.TryzQa_header,.TryzQa_row{transition:none}}.TryzQa_preview{max-height:100%;overflow:hidden}.TryzQa_previewPath{min-width:0;color:var(--dsw-alias-label-tertiary);font-family:var(--ds-font-family-code);white-space:nowrap;flex:auto;font-size:12px;line-height:20px;overflow:auto hidden}.TryzQa_preview [data-diff-note=metadata],.TryzQa_preview [data-diff-hunk-header]{display:none}";
1293
1293
  const tagId$2 = "@deepseek-ai/dsh-client-ui-deliverables/ChangedFiles.module.css";
1294
1294
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$2) + "]") === null) {
1295
1295
  const tag = document.createElement("style");
@@ -1299,29 +1299,30 @@ window.__ModuleLoader__.load({
1299
1299
  document.head.appendChild(tag);
1300
1300
  }
1301
1301
  var ChangedFiles_module_css_default = {
1302
- "added": "nqoI_W_added",
1303
- "card": "nqoI_W_card",
1304
- "counts": "nqoI_W_counts",
1305
- "deleted": "nqoI_W_deleted",
1306
- "header": "nqoI_W_header",
1307
- "list": "nqoI_W_list",
1308
- "path": "nqoI_W_path",
1309
- "preview": "nqoI_W_preview",
1310
- "previewHint": "nqoI_W_previewHint",
1311
- "previewPath": "nqoI_W_previewPath",
1312
- "row": "nqoI_W_row",
1313
- "stat": "nqoI_W_stat",
1314
- "statCounts": "nqoI_W_statCounts",
1315
- "tile": "nqoI_W_tile",
1316
- "title": "nqoI_W_title",
1317
- "titles": "nqoI_W_titles",
1318
- "toggle": "nqoI_W_toggle"
1302
+ "added": "TryzQa_added",
1303
+ "card": "TryzQa_card",
1304
+ "counts": "TryzQa_counts",
1305
+ "deleted": "TryzQa_deleted",
1306
+ "header": "TryzQa_header",
1307
+ "heading": "TryzQa_heading",
1308
+ "list": "TryzQa_list",
1309
+ "path": "TryzQa_path",
1310
+ "preview": "TryzQa_preview",
1311
+ "previewPath": "TryzQa_previewPath",
1312
+ "review": "TryzQa_review",
1313
+ "row": "TryzQa_row",
1314
+ "stat": "TryzQa_stat",
1315
+ "statCounts": "TryzQa_statCounts",
1316
+ "tile": "TryzQa_tile",
1317
+ "title": "TryzQa_title",
1318
+ "titles": "TryzQa_titles",
1319
+ "toggle": "TryzQa_toggle"
1319
1320
  };
1320
1321
  //#endregion
1321
1322
  //#region lib/types/client/ChangedFiles.js
1322
1323
  /** Turn changes use a compact single-file card or a header with a folded file list. */
1323
1324
  /** Rows shown before the fold; the design's summary height for a closing message. */
1324
- const COLLAPSED_ROWS = 4;
1325
+ const COLLAPSED_ROWS = 3;
1325
1326
  const GROUPED$1 = new Intl.NumberFormat("en-US");
1326
1327
  /** Added and deleted line counts in the card's colors. */
1327
1328
  function Counts$1({ added, deleted, t }) {
@@ -1347,42 +1348,48 @@ window.__ModuleLoader__.load({
1347
1348
  const singleFile = changes.total === 1 ? changes.files[0] : void 0;
1348
1349
  const foldable = changes.files.length > COLLAPSED_ROWS;
1349
1350
  const rows = foldable && !expanded ? changes.files.slice(0, COLLAPSED_ROWS) : changes.files;
1350
- const header = (0, react_jsx_runtime.jsxs)("button", {
1351
- type: "button",
1352
- className: ChangedFiles_module_css_default.header,
1353
- "aria-label": singleFile === void 0 ? t("changes.openReview") : t("changes.viewDiff", { name: singleFile.display }),
1354
- "aria-describedby": singleFile === void 0 ? void 0 : pathDescriptionId,
1355
- onClick: () => {
1356
- openReview(0);
1357
- },
1358
- children: [(0, react_jsx_runtime.jsx)("span", {
1359
- className: ChangedFiles_module_css_default.tile,
1360
- children: singleFile === void 0 ? (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.FileTypeIcon, {
1361
- kind: "code",
1362
- size: 20
1363
- }) : (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.FileTypeIcon, {
1364
- path: singleFile.path,
1365
- size: 20
1366
- })
1367
- }), (0, react_jsx_runtime.jsxs)("span", {
1368
- className: ChangedFiles_module_css_default.titles,
1351
+ const header = (0, react_jsx_runtime.jsxs)("div", {
1352
+ className: ChangedFiles_module_css_default.heading,
1353
+ children: [(0, react_jsx_runtime.jsxs)("button", {
1354
+ type: "button",
1355
+ className: ChangedFiles_module_css_default.header,
1356
+ "data-changes-header": true,
1357
+ "aria-label": singleFile === void 0 ? t("changes.openReview") : t("changes.viewDiff", { name: singleFile.display }),
1358
+ "aria-describedby": singleFile === void 0 ? void 0 : pathDescriptionId,
1359
+ onClick: () => {
1360
+ openReview(0);
1361
+ },
1369
1362
  children: [(0, react_jsx_runtime.jsx)("span", {
1370
- className: ChangedFiles_module_css_default.title,
1371
- children: singleFile === void 0 ? t("changes.title", { count: String(changes.total) }) : t("changes.singleTitle", { name: basename(singleFile.path) })
1363
+ className: ChangedFiles_module_css_default.tile,
1364
+ children: singleFile === void 0 ? (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconListPenOutlineRegular, { size: 20 }) : (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.FileTypeIcon, {
1365
+ path: singleFile.path,
1366
+ size: 20
1367
+ })
1372
1368
  }), (0, react_jsx_runtime.jsxs)("span", {
1373
- className: ChangedFiles_module_css_default.stat,
1369
+ className: ChangedFiles_module_css_default.titles,
1374
1370
  children: [(0, react_jsx_runtime.jsx)("span", {
1375
- className: ChangedFiles_module_css_default.statCounts,
1376
- children: singleFile?.binary === true ? t("changes.binary") : singleFile?.oversized === true ? t("changes.oversized") : (0, react_jsx_runtime.jsx)(Counts$1, {
1377
- t,
1378
- added: changes.added,
1379
- deleted: changes.deleted
1380
- })
1371
+ className: ChangedFiles_module_css_default.title,
1372
+ children: singleFile === void 0 ? t("changes.title", { count: String(changes.total) }) : t("changes.singleTitle", { name: basename(singleFile.path) })
1381
1373
  }), (0, react_jsx_runtime.jsx)("span", {
1382
- className: ChangedFiles_module_css_default.previewHint,
1383
- children: t("presented.preview")
1374
+ className: ChangedFiles_module_css_default.stat,
1375
+ children: (0, react_jsx_runtime.jsx)("span", {
1376
+ className: ChangedFiles_module_css_default.statCounts,
1377
+ children: singleFile?.binary === true ? t("changes.binary") : singleFile?.oversized === true ? t("changes.oversized") : (0, react_jsx_runtime.jsx)(Counts$1, {
1378
+ t,
1379
+ added: changes.added,
1380
+ deleted: changes.deleted
1381
+ })
1382
+ })
1384
1383
  })]
1385
1384
  })]
1385
+ }), (0, react_jsx_runtime.jsxs)(_deepseek_ai_dsh_client_ui_primitives.Button, {
1386
+ size: "sm",
1387
+ variant: "outline",
1388
+ className: ChangedFiles_module_css_default.review,
1389
+ onClick: () => {
1390
+ openReview(0);
1391
+ },
1392
+ children: [t("changes.reviewButton"), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronRightOutlineRegular, { size: 14 })]
1386
1393
  })]
1387
1394
  });
1388
1395
  return (0, react_jsx_runtime.jsxs)("div", {
@@ -1459,7 +1466,7 @@ window.__ModuleLoader__.load({
1459
1466
  onClick: () => {
1460
1467
  setExpanded((value) => !value);
1461
1468
  },
1462
- children: [(0, react_jsx_runtime.jsx)("span", { children: t(expanded ? "changes.collapse" : "changes.all", { count: String(changes.files.length) }) }), expanded ? (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronUpOutlineRegular, {}) : (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutlineRegular, {})]
1469
+ children: [(0, react_jsx_runtime.jsx)("span", { children: t(expanded ? "changes.collapse" : "changes.more", { count: String(changes.files.length - COLLAPSED_ROWS) }) }), expanded ? (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronUpOutlineRegular, {}) : (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutlineRegular, {})]
1463
1470
  })
1464
1471
  ]
1465
1472
  });
@@ -1498,8 +1505,8 @@ window.__ModuleLoader__.load({
1498
1505
  });
1499
1506
  }
1500
1507
  //#endregion
1501
- //#region \0dsh-css:/Users/shiguifeng/IdeaProjects/chonggou/deepseek-harness/packages/client/ui-deliverables/src/client/Deliverables.module.css.mjs
1502
- const css$1 = ".XeMnha_root{--deliverable-fill:var(--dsw-static-neutral-50);--deliverable-hover:var(--dsw-static-neutral-100);flex-direction:column;gap:16px;min-width:0;margin-top:4px;display:flex;container-type:inline-size}.XeMnha_root[data-after-changes=true]{margin-top:0}body[data-ds-dark-theme] .XeMnha_root{--deliverable-fill:var(--dsw-static-neutral-850);--deliverable-hover:var(--dsw-static-neutral-800)}.XeMnha_hostStatus{color:var(--dsw-alias-label-secondary);align-items:center;gap:8px;font-size:12px;line-height:18px;display:flex}.XeMnha_presented{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;min-width:0;display:grid}.XeMnha_presented[data-single=true]{grid-template-columns:minmax(0,1fr)}.XeMnha_file{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l1);border-radius:var(--dsw-radius-lg);background:var(--deliverable-fill);min-width:0;height:60px;color:var(--dsw-alias-label-primary);align-items:center;gap:10px;padding:8px 10px;transition:background-color .12s;display:flex;position:relative;overflow:hidden}.XeMnha_file:hover{background:var(--deliverable-hover)}.XeMnha_cardPreview{z-index:1;border-radius:inherit;cursor:pointer;background:0 0;border:0;width:100%;padding:0;position:absolute;inset:0}.XeMnha_cardPreview:focus-visible{box-shadow:inset 0 0 0 2px var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline:none}.XeMnha_fileIcon{z-index:2;box-sizing:border-box;pointer-events:none;border:.5px solid var(--dsw-alias-border-l1);border-radius:var(--dsw-radius-lg);background:color-mix(in srgb, var(--dsw-static-neutral-00) 50%, transparent);width:40px;height:40px;color:var(--dsw-alias-link);flex:none;place-items:center;display:grid;position:relative;overflow:hidden}body[data-ds-dark-theme] .XeMnha_fileIcon{background:color-mix(in srgb, var(--dsw-static-neutral-00) 5%, transparent)}.XeMnha_fileBody{z-index:2;pointer-events:none;flex:1;justify-content:space-between;align-items:center;gap:12px;min-width:0;display:flex;position:relative}.XeMnha_details{flex-direction:column;flex:1;justify-content:center;gap:2px;min-width:0;display:flex}.XeMnha_fileName{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;line-height:20px;overflow:hidden}.XeMnha_description{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:400;line-height:16px;overflow:hidden}.XeMnha_description[data-error=true]{color:var(--dsw-alias-state-error-primary)}.XeMnha_previewHint,.XeMnha_file:hover .XeMnha_description:not([role=status]) .XeMnha_secondaryText{display:none}.XeMnha_file:hover .XeMnha_description:not([role=status]) .XeMnha_previewHint{display:inline}.XeMnha_toggle{border-radius:var(--dsw-radius-sm);min-width:0;color:var(--dsw-alias-label-tertiary);cursor:pointer;font:inherit;background:0 0;border:0;align-self:center;align-items:center;gap:4px;padding:1px 11px;font-size:12px;line-height:18px;display:inline-flex}.XeMnha_toggle:hover{background:var(--dsw-alias-interactive-bg-hover)}.XeMnha_toggle svg{flex:none;width:14px;height:14px}@container (width<=620px){.XeMnha_presented{grid-template-columns:minmax(0,1fr)}}.XeMnha_actions{pointer-events:auto;flex:none;display:inline-flex}.XeMnha_secondaryText[data-success]{animation-name:XeMnha_success-fade;animation-timing-function:ease-out;animation-fill-mode:forwards}@keyframes XeMnha_success-fade{to{opacity:0}}@media (prefers-reduced-motion:reduce){.XeMnha_secondaryText[data-success]{animation-name:none}}";
1508
+ //#region \0dsh-css:/Users/shiguifeng/IdeaProjects/chonggou/chatcode-cli-harness/packages/client/ui-deliverables/src/client/Deliverables.module.css.mjs
1509
+ const css$1 = "._4YLVpW_root{--deliverable-fill:var(--dsw-static-neutral-50);--deliverable-hover:var(--dsw-static-neutral-100);flex-direction:column;gap:16px;min-width:0;margin-top:4px;display:flex;container-type:inline-size}._4YLVpW_root[data-after-changes=true]{margin-top:0}body[data-ds-dark-theme] ._4YLVpW_root{--deliverable-fill:var(--dsw-static-neutral-850);--deliverable-hover:var(--dsw-static-neutral-800)}._4YLVpW_hostStatus{color:var(--dsw-alias-label-secondary);align-items:center;gap:8px;font-size:12px;line-height:18px;display:flex}._4YLVpW_presented{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;min-width:0;display:grid}._4YLVpW_presented[data-single=true]{grid-template-columns:minmax(0,1fr)}._4YLVpW_file{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l1);border-radius:var(--dsw-radius-lg);background:var(--deliverable-fill);min-width:0;height:60px;color:var(--dsw-alias-label-primary);align-items:center;gap:10px;padding:8px 10px;transition:background-color .12s;display:flex;position:relative;overflow:hidden}._4YLVpW_file:hover{background:var(--deliverable-hover)}._4YLVpW_cardPreview{z-index:1;border-radius:inherit;cursor:pointer;background:0 0;border:0;width:100%;padding:0;position:absolute;inset:0}._4YLVpW_cardPreview:focus-visible{box-shadow:inset 0 0 0 2px var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline:none}._4YLVpW_fileIcon{z-index:2;box-sizing:border-box;pointer-events:none;border:.5px solid var(--dsw-alias-border-l1);border-radius:var(--dsw-radius-lg);background:color-mix(in srgb, var(--dsw-static-neutral-00) 50%, transparent);width:40px;height:40px;color:var(--dsw-alias-link);flex:none;place-items:center;display:grid;position:relative;overflow:hidden}body[data-ds-dark-theme] ._4YLVpW_fileIcon{background:color-mix(in srgb, var(--dsw-static-neutral-00) 5%, transparent)}._4YLVpW_fileBody{z-index:2;pointer-events:none;flex:1;justify-content:space-between;align-items:center;gap:12px;min-width:0;display:flex;position:relative}._4YLVpW_details{flex-direction:column;flex:1;justify-content:center;gap:2px;min-width:0;display:flex}._4YLVpW_fileName{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;line-height:20px;overflow:hidden}._4YLVpW_description{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:400;line-height:16px;overflow:hidden}._4YLVpW_description[data-error=true]{color:var(--dsw-alias-state-error-primary)}._4YLVpW_previewHint,._4YLVpW_file:hover ._4YLVpW_description:not([role=status]) ._4YLVpW_secondaryText{display:none}._4YLVpW_file:hover ._4YLVpW_description:not([role=status]) ._4YLVpW_previewHint{display:inline}._4YLVpW_toggle{border-radius:var(--dsw-radius-sm);min-width:0;color:var(--dsw-alias-label-tertiary);cursor:pointer;font:inherit;background:0 0;border:0;align-self:center;align-items:center;gap:4px;padding:1px 11px;font-size:12px;line-height:18px;display:inline-flex}._4YLVpW_toggle:hover{background:var(--dsw-alias-interactive-bg-hover)}._4YLVpW_toggle svg{flex:none;width:14px;height:14px}@container (width<=620px){._4YLVpW_presented{grid-template-columns:minmax(0,1fr)}}._4YLVpW_actions{pointer-events:auto;flex:none;display:inline-flex}._4YLVpW_secondaryText[data-success]{animation-name:_4YLVpW_success-fade;animation-timing-function:ease-out;animation-fill-mode:forwards}@keyframes _4YLVpW_success-fade{to{opacity:0}}@media (prefers-reduced-motion:reduce){._4YLVpW_secondaryText[data-success]{animation-name:none}}";
1503
1510
  const tagId$1 = "@deepseek-ai/dsh-client-ui-deliverables/Deliverables.module.css";
1504
1511
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
1505
1512
  const tag = document.createElement("style");
@@ -1509,21 +1516,21 @@ window.__ModuleLoader__.load({
1509
1516
  document.head.appendChild(tag);
1510
1517
  }
1511
1518
  var Deliverables_module_css_default = {
1512
- "actions": "XeMnha_actions",
1513
- "cardPreview": "XeMnha_cardPreview",
1514
- "description": "XeMnha_description",
1515
- "details": "XeMnha_details",
1516
- "file": "XeMnha_file",
1517
- "fileBody": "XeMnha_fileBody",
1518
- "fileIcon": "XeMnha_fileIcon",
1519
- "fileName": "XeMnha_fileName",
1520
- "hostStatus": "XeMnha_hostStatus",
1521
- "presented": "XeMnha_presented",
1522
- "previewHint": "XeMnha_previewHint",
1523
- "root": "XeMnha_root",
1524
- "secondaryText": "XeMnha_secondaryText",
1525
- "success-fade": "XeMnha_success-fade",
1526
- "toggle": "XeMnha_toggle"
1519
+ "actions": "_4YLVpW_actions",
1520
+ "cardPreview": "_4YLVpW_cardPreview",
1521
+ "description": "_4YLVpW_description",
1522
+ "details": "_4YLVpW_details",
1523
+ "file": "_4YLVpW_file",
1524
+ "fileBody": "_4YLVpW_fileBody",
1525
+ "fileIcon": "_4YLVpW_fileIcon",
1526
+ "fileName": "_4YLVpW_fileName",
1527
+ "hostStatus": "_4YLVpW_hostStatus",
1528
+ "presented": "_4YLVpW_presented",
1529
+ "previewHint": "_4YLVpW_previewHint",
1530
+ "root": "_4YLVpW_root",
1531
+ "secondaryText": "_4YLVpW_secondaryText",
1532
+ "success-fade": "_4YLVpW_success-fade",
1533
+ "toggle": "_4YLVpW_toggle"
1527
1534
  };
1528
1535
  //#endregion
1529
1536
  //#region lib/types/client/PresentedFileCard.js
@@ -1629,13 +1636,12 @@ window.__ModuleLoader__.load({
1629
1636
  * @param props - matched announcement and files, workspace opener, and localized copy.
1630
1637
  * @returns the closing turn's file rows.
1631
1638
  */
1632
- function Deliverables({ matched, openFile, t, sessionId, useSessions, openPresented, openChangesReview, usePresentedOpen, usePresentedHost, useChangesDiff, loadChangesDiff, useChangesSummary, reloadPresentedHost, loadChangesSummary, useShowCodeDiff, renderSlot }) {
1639
+ function Deliverables({ matched, openFile, t, sessionId, useSessions, openPresented, openChangesReview, usePresentedOpen, usePresentedHost, useChangesDiff, loadChangesDiff, useChangesSummary, reloadPresentedHost, loadChangesSummary, renderSlot }) {
1633
1640
  const [expanded, setExpanded] = (0, react.useState)(false);
1634
- const showCodeDiff = useShowCodeDiff((value) => value);
1635
1641
  const cwd = useSessions((state) => state.byId[sessionId]?.cwd);
1636
1642
  const states = usePresentedOpen((value) => value);
1637
1643
  const host = usePresentedHost((value) => value);
1638
- const announced = showCodeDiff ? matched.changes : null;
1644
+ const announced = matched.changes;
1639
1645
  const summary = useChangesSummary((value) => announced === null ? void 0 : value[changesSummaryUrl(sessionId, announced.seq)]);
1640
1646
  (0, react.useEffect)(() => {
1641
1647
  if (announced !== null && summary === void 0) loadChangesSummary(sessionId, announced.seq);
@@ -1721,8 +1727,8 @@ window.__ModuleLoader__.load({
1721
1727
  })] });
1722
1728
  }
1723
1729
  //#endregion
1724
- //#region \0dsh-css:/Users/shiguifeng/IdeaProjects/chonggou/deepseek-harness/packages/client/ui-deliverables/src/client/ReviewTab.module.css.mjs
1725
- const css = ".qryAHG_root{height:100%}.qryAHG_selector{flex:0 auto;min-width:0}.qryAHG_selectorLabel{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;font-size:12px;overflow:hidden}.qryAHG_selectorButton{box-sizing:border-box;border-radius:var(--dsw-radius-sm);max-width:100%;height:28px;color:var(--dsw-alias-label-primary);cursor:pointer;font:inherit;background:0 0;border:0;align-items:center;gap:4px;padding:0 6px 0 8px;font-size:12px;line-height:20px;display:inline-flex}.qryAHG_selectorButton:hover,.qryAHG_selectorButton[aria-expanded=true]{background:var(--dsw-alias-interactive-bg-hover)}.qryAHG_selectorButton svg{flex:none;display:block}.qryAHG_item{justify-content:space-between;align-items:center;gap:12px;min-width:0;display:flex}.qryAHG_itemPath{text-overflow:ellipsis;white-space:nowrap;min-width:0;line-height:20px;overflow:hidden}.qryAHG_itemCounts,.qryAHG_counts{font-family:var(--ds-font-family-code);color:var(--dsw-alias-label-tertiary);flex:none;align-items:center;gap:6px;font-size:12px;line-height:20px;display:inline-flex}.qryAHG_counts{min-width:0;margin-right:auto}.qryAHG_added{color:var(--dsw-alias-state-success-primary)}.qryAHG_deleted{color:var(--dsw-alias-state-error-primary)}.qryAHG_label{color:var(--dsw-alias-label-tertiary)}.qryAHG_tools{flex:none;align-items:center;gap:2px;margin-left:auto;display:inline-flex}.qryAHG_tool{border-radius:var(--dsw-radius-sm);width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-items:center;padding:6px;display:inline-flex}.qryAHG_tool svg{width:15px;height:15px}.qryAHG_tool:hover:not(:disabled){color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.qryAHG_tool[aria-pressed=true] .qryAHG_compareIcon{transform:rotate(90deg)}.qryAHG_tool:disabled{cursor:progress}.qryAHG_tool[data-error]{color:var(--dsw-alias-state-error-primary)}";
1730
+ //#region \0dsh-css:/Users/shiguifeng/IdeaProjects/chonggou/chatcode-cli-harness/packages/client/ui-deliverables/src/client/ReviewTab.module.css.mjs
1731
+ const css = ".OVNSLW_root{height:100%}.OVNSLW_selector{flex:0 auto;min-width:0}.OVNSLW_selectorLabel{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;font-size:12px;overflow:hidden}.OVNSLW_selectorButton{box-sizing:border-box;border-radius:var(--dsw-radius-sm);max-width:100%;height:28px;color:var(--dsw-alias-label-primary);cursor:pointer;font:inherit;background:0 0;border:0;align-items:center;gap:4px;padding:0 6px 0 8px;font-size:12px;line-height:20px;display:inline-flex}.OVNSLW_selectorButton:hover,.OVNSLW_selectorButton[aria-expanded=true]{background:var(--dsw-alias-interactive-bg-hover)}.OVNSLW_selectorButton svg{flex:none;display:block}.OVNSLW_item{justify-content:space-between;align-items:center;gap:12px;min-width:0;display:flex}.OVNSLW_itemPath{text-overflow:ellipsis;white-space:nowrap;min-width:0;line-height:20px;overflow:hidden}.OVNSLW_itemCounts,.OVNSLW_counts{font-family:var(--ds-font-family-code);color:var(--dsw-alias-label-tertiary);flex:none;align-items:center;gap:6px;font-size:12px;line-height:20px;display:inline-flex}.OVNSLW_counts{min-width:0;margin-right:auto}.OVNSLW_added{color:var(--dsw-alias-state-success-primary)}.OVNSLW_deleted{color:var(--dsw-alias-state-error-primary)}.OVNSLW_label{color:var(--dsw-alias-label-tertiary)}.OVNSLW_tools{flex:none;align-items:center;gap:2px;margin-left:auto;display:inline-flex}.OVNSLW_tool{border-radius:var(--dsw-radius-sm);width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-items:center;padding:6px;display:inline-flex}.OVNSLW_tool svg{width:15px;height:15px}.OVNSLW_tool:hover:not(:disabled){color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.OVNSLW_tool[aria-pressed=true] .OVNSLW_compareIcon{transform:rotate(90deg)}.OVNSLW_tool:disabled{cursor:progress}.OVNSLW_tool[data-error]{color:var(--dsw-alias-state-error-primary)}";
1726
1732
  const tagId = "@deepseek-ai/dsh-client-ui-deliverables/ReviewTab.module.css";
1727
1733
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
1728
1734
  const tag = document.createElement("style");
@@ -1732,20 +1738,20 @@ window.__ModuleLoader__.load({
1732
1738
  document.head.appendChild(tag);
1733
1739
  }
1734
1740
  var ReviewTab_module_css_default = {
1735
- "added": "qryAHG_added",
1736
- "compareIcon": "qryAHG_compareIcon",
1737
- "counts": "qryAHG_counts",
1738
- "deleted": "qryAHG_deleted",
1739
- "item": "qryAHG_item",
1740
- "itemCounts": "qryAHG_itemCounts",
1741
- "itemPath": "qryAHG_itemPath",
1742
- "label": "qryAHG_label",
1743
- "root": "qryAHG_root",
1744
- "selector": "qryAHG_selector",
1745
- "selectorButton": "qryAHG_selectorButton",
1746
- "selectorLabel": "qryAHG_selectorLabel",
1747
- "tool": "qryAHG_tool",
1748
- "tools": "qryAHG_tools"
1741
+ "added": "OVNSLW_added",
1742
+ "compareIcon": "OVNSLW_compareIcon",
1743
+ "counts": "OVNSLW_counts",
1744
+ "deleted": "OVNSLW_deleted",
1745
+ "item": "OVNSLW_item",
1746
+ "itemCounts": "OVNSLW_itemCounts",
1747
+ "itemPath": "OVNSLW_itemPath",
1748
+ "label": "OVNSLW_label",
1749
+ "root": "OVNSLW_root",
1750
+ "selector": "OVNSLW_selector",
1751
+ "selectorButton": "OVNSLW_selectorButton",
1752
+ "selectorLabel": "OVNSLW_selectorLabel",
1753
+ "tool": "OVNSLW_tool",
1754
+ "tools": "OVNSLW_tools"
1749
1755
  };
1750
1756
  //#endregion
1751
1757
  //#region lib/types/client/ReviewTab.js
@@ -2136,7 +2142,8 @@ window.__ModuleLoader__.load({
2136
2142
  "changes.deleted": "-{count}",
2137
2143
  "changes.binary": "二进制",
2138
2144
  "changes.openReview": "在侧边栏查看本轮改动",
2139
- "changes.all": "全部 {count} 个文件",
2145
+ "changes.reviewButton": "查看变更",
2146
+ "changes.more": "再显示 {count} 个文件",
2140
2147
  "changes.expandAria": "展开全部 {count} 个改动文件",
2141
2148
  "changes.collapse": "收起",
2142
2149
  "changes.collapseAria": "收起改动文件列表",
@@ -2199,7 +2206,8 @@ window.__ModuleLoader__.load({
2199
2206
  "changes.deleted": "-{count}",
2200
2207
  "changes.binary": "binary",
2201
2208
  "changes.openReview": "Review this turn’s changes in the sidebar",
2202
- "changes.all": "All {count} files",
2209
+ "changes.reviewButton": "View changes",
2210
+ "changes.more": "Show {count} more files",
2203
2211
  "changes.expandAria": "Show all {count} changed files",
2204
2212
  "changes.collapse": "Collapse",
2205
2213
  "changes.collapseAria": "Collapse changed files",
@@ -2236,8 +2244,7 @@ window.__ModuleLoader__.load({
2236
2244
  "remote",
2237
2245
  "remote.session",
2238
2246
  "sidebarRightTabs",
2239
- "sidebarRight",
2240
- "configForms"
2247
+ "sidebarRight"
2241
2248
  ];
2242
2249
  /**
2243
2250
  * Client plugin body: register the dictionaries, the turn-tail entry, and the comparison tab type.
@@ -2275,8 +2282,7 @@ window.__ModuleLoader__.load({
2275
2282
  changesDiff: diffs.state,
2276
2283
  presentedOpen: opener.state,
2277
2284
  presentedHost: opener.host,
2278
- changesSummary: summaries.state,
2279
- showCodeDiff: ctx.configForms.developerTools.enabled
2285
+ changesSummary: summaries.state
2280
2286
  },
2281
2287
  loadChangesDiff: (sessionId, seq, index) => diffs.load(sessionId, seq, index),
2282
2288
  reloadPresentedHost: () => opener.loadHost(),
@@ -1,8 +1,8 @@
1
1
  import { remoteErrorOf } from "@deepseek-ai/dsh-typert-protocol";
2
2
  //#region lib/types/changes.js
3
- /** Authenticated GET route serving one announced change summary while its Session lives. */
3
+ /** Authenticated GET route serving one announced change summary from live or archived turn records. */
4
4
  const CHANGED_FILES_PATH = "/api/changes.summary";
5
- /** Authenticated GET route serving one listed file's turn-start and turn-end comparison while its Session lives. */
5
+ /** Authenticated GET route serving one listed file's turn-start and turn-end comparison from live or archived turn records. */
6
6
  const CHANGES_DIFF_PATH = "/api/changes.diff";
7
7
  /** Authenticated POST route for opening a changed file on the Host desktop. */
8
8
  const CHANGES_OPEN_PATH = "/api/changes.open";
@@ -167,21 +167,26 @@ async function handlePresentOpen(ctx, request) {
167
167
  }
168
168
  }
169
169
  /** The summary one `workspace/changes` event announced, without the Host working directory; 404 once the Host no longer serves it. */
170
- function handleChangesSummary(ctx, request) {
170
+ async function handleChangesSummary(ctx, request) {
171
171
  const query = new URL(request.url).searchParams;
172
172
  const id = query.get("sessionId");
173
173
  const seq = coordinate(query.get("seq"));
174
174
  if (!id || seq === void 0) return new Response("Invalid change summary coordinates.", { status: 400 });
175
- const summary = ctx.workspaceChanges.summary(id, seq);
176
- if (summary === void 0) return new Response("Change summary unavailable.", { status: 404 });
177
- const { turn, files, total, added, deleted } = summary;
178
- return Response.json({
179
- turn,
180
- files,
181
- total,
182
- added,
183
- deleted
184
- }, { headers: { "cache-control": "no-store" } });
175
+ try {
176
+ const summary = await ctx.workspaceChanges.summary(id, seq);
177
+ if (summary === void 0) return new Response("Change summary unavailable.", { status: 404 });
178
+ const { turn, files, total, added, deleted } = summary;
179
+ return Response.json({
180
+ turn,
181
+ files,
182
+ total,
183
+ added,
184
+ deleted
185
+ }, { headers: { "cache-control": "no-store" } });
186
+ } catch (error) {
187
+ request.signal.throwIfAborted();
188
+ return new Response("Change summary unavailable.", { status: failureStatus(error) });
189
+ }
185
190
  }
186
191
  /** A changed file's coordinates from a route query, or the 400 to answer with. */
187
192
  function changedFileCoordinates(request) {
@@ -219,7 +224,7 @@ async function handleChangesOpen(ctx, request) {
219
224
  try {
220
225
  request.signal.throwIfAborted();
221
226
  if (!ctx.sessionController.workspaceDesktop().available) return new Response("Host desktop unavailable.", { status: 409 });
222
- const changes = ctx.workspaceChanges.summary(id, seq);
227
+ const changes = await ctx.workspaceChanges.summary(id, seq);
223
228
  if (changes === void 0) return new Response("Change summary unavailable.", { status: 404 });
224
229
  const workspaceRoot = changes.cwd;
225
230
  const file = changes.files[index];
@@ -1,9 +1,9 @@
1
1
  /** Validate workspace-change records that cross the Host routes and address their summary, comparison, and native-open actions. */
2
2
  import type { SessionId } from '@deepseek-ai/dsh-session/types';
3
3
  import type { WorkspaceChangedFile, WorkspaceChangesSummary, WorkspaceFileDiff } from '@deepseek-ai/dsh-workspace-changes/types';
4
- /** Authenticated GET route serving one announced change summary while its Session lives. */
4
+ /** Authenticated GET route serving one announced change summary from live or archived turn records. */
5
5
  export declare const CHANGED_FILES_PATH = "/api/changes.summary";
6
- /** Authenticated GET route serving one listed file's turn-start and turn-end comparison while its Session lives. */
6
+ /** Authenticated GET route serving one listed file's turn-start and turn-end comparison from live or archived turn records. */
7
7
  export declare const CHANGES_DIFF_PATH = "/api/changes.diff";
8
8
  /** Authenticated POST route for opening a changed file on the Host desktop. */
9
9
  export declare const CHANGES_OPEN_PATH = "/api/changes.open";
@@ -15,7 +15,6 @@ interface DeliverablesMatch {
15
15
  export interface DeliverablesInjected {
16
16
  hooks: {
17
17
  changesDiff: ObservableSnapshot<ReturnType<ChangesDiffStore['state']['getSnapshot']>>;
18
- showCodeDiff: ObservableSnapshot<boolean>;
19
18
  presentedOpen: ObservableSnapshot<ReturnType<PresentedOpenController['state']['getSnapshot']>>;
20
19
  presentedHost: ObservableSnapshot<ReturnType<PresentedOpenController['host']['getSnapshot']>>;
21
20
  changesSummary: ObservableSnapshot<ReturnType<ChangesSummaryStore['state']['getSnapshot']>>;
@@ -47,7 +46,7 @@ export declare function DeliverablesTail(props: PropsRuntime<'conversation.chat.
47
46
  * @param props - matched announcement and files, workspace opener, and localized copy.
48
47
  * @returns the closing turn's file rows.
49
48
  */
50
- export declare function Deliverables({ matched, openFile, t, sessionId, useSessions, openPresented, openChangesReview, usePresentedOpen, usePresentedHost, useChangesDiff, loadChangesDiff, useChangesSummary, reloadPresentedHost, loadChangesSummary, useShowCodeDiff, renderSlot, }: Pick<TurnTailOwnerProps, 'openFile'> & {
49
+ export declare function Deliverables({ matched, openFile, t, sessionId, useSessions, openPresented, openChangesReview, usePresentedOpen, usePresentedHost, useChangesDiff, loadChangesDiff, useChangesSummary, reloadPresentedHost, loadChangesSummary, renderSlot, }: Pick<TurnTailOwnerProps, 'openFile'> & {
51
50
  matched: DeliverablesMatch;
52
51
  } & PropsLocale<typeof NS> & Pick<SessionStandardProps, 'sessionId'> & Pick<GlobalStandardProps, 'useSessions'> & InjectFace<DeliverablesInjected> & PropsRenderSlots<'deliverables.file.actions'>): import("react").JSX.Element;
53
52
  export {};
@@ -37,7 +37,8 @@ export declare const zh: {
37
37
  'changes.deleted': string;
38
38
  'changes.binary': string;
39
39
  'changes.openReview': string;
40
- 'changes.all': string;
40
+ 'changes.reviewButton': string;
41
+ 'changes.more': string;
41
42
  'changes.expandAria': string;
42
43
  'changes.collapse': string;
43
44
  'changes.collapseAria': string;
@@ -13,7 +13,7 @@ export declare class PresentedOpenController {
13
13
  /** File action URLs key the state across Sessions, turns, and both clickable surfaces. */
14
14
  readonly state: import("@deepseek-ai/dsh-client-store").SnapshotStore<Record<string, PresentedOpenPhase | undefined>>;
15
15
  /** Native destination metadata, or a retryable read failure. */
16
- readonly host: import("@deepseek-ai/dsh-client-store").SnapshotStore<PresentedHost | "error" | null>;
16
+ readonly host: import("@deepseek-ai/dsh-client-store").SnapshotStore<"error" | PresentedHost | null>;
17
17
  private readonly expiry;
18
18
  private loading;
19
19
  private metadata;
@@ -35,8 +35,7 @@
35
35
  "@deepseek-ai/dsh-client-ui-conversation",
36
36
  "@deepseek-ai/dsh-client-ui-renderer",
37
37
  "@deepseek-ai/dsh-client-ui-sidebar-right",
38
- "@deepseek-ai/dsh-client-ui-tool",
39
- "@deepseek-ai/dsh-client-ui-settings"
38
+ "@deepseek-ai/dsh-client-ui-tool"
40
39
  ],
41
40
  "platform": "web"
42
41
  }
@@ -78,8 +77,7 @@
78
77
  "@deepseek-ai/dsh-fs": "workspace:*",
79
78
  "@deepseek-ai/dsh-fs-local": "workspace:*",
80
79
  "@deepseek-ai/dsh-agent": "workspace:*",
81
- "@deepseek-ai/dsh-sandbox-policy": "workspace:*",
82
- "@deepseek-ai/dsh-client-ui-settings": "workspace:*"
80
+ "@deepseek-ai/dsh-sandbox-policy": "workspace:*"
83
81
  },
84
82
  "files": [
85
83
  "lib/index.js",