dsh-edge 0.2.0-alpha.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.i18n.yaml +2 -2
  2. package/README.md +6 -6
  3. package/README.zh.md +6 -6
  4. package/THIRD_PARTY_NOTICES.md +387 -1131
  5. package/dist/assets/index-BNMwCG9c.css +1 -0
  6. package/dist/assets/index-CA9Bpko5.js +96 -0
  7. package/dist/assets/langs/{php-D-uCvoST.js → php-DDkx9sim.js} +2 -2
  8. package/dist/assets/langs/{ruby-DEItuUFs.js → ruby-DCxyoPen.js} +2 -2
  9. package/dist/assets/{vendor-Cjbwl5VI.js → vendor-D22_Mp1f.js} +2 -2
  10. package/dist/index.html +26 -5
  11. package/dist/plugins/@deepseek-ai/dsh-api-remotes/client.js +166 -27
  12. package/dist/plugins/@deepseek-ai/dsh-client-connection/client.js +136 -19
  13. package/dist/plugins/@deepseek-ai/dsh-client-locale/client.js +51 -12
  14. package/dist/plugins/@deepseek-ai/dsh-client-modules/client.js +188 -123
  15. package/dist/plugins/@deepseek-ai/dsh-client-runtime/client.js +43 -8
  16. package/dist/plugins/@deepseek-ai/dsh-client-ui-agent-preset/client.js +54 -54
  17. package/dist/plugins/@deepseek-ai/dsh-client-ui-brand-official/client.js +50 -0
  18. package/dist/plugins/@deepseek-ai/dsh-client-ui-commands/client.js +46 -17
  19. package/dist/plugins/@deepseek-ai/dsh-client-ui-conversation/client.js +805 -486
  20. package/dist/plugins/@deepseek-ai/dsh-client-ui-deliverables/client.js +5 -5
  21. package/dist/plugins/@deepseek-ai/dsh-client-ui-input-trigger/client.js +82 -26
  22. package/dist/plugins/@deepseek-ai/dsh-client-ui-jobs/client.js +7 -7
  23. package/dist/plugins/@deepseek-ai/dsh-client-ui-layout/client.js +2 -2
  24. package/dist/plugins/@deepseek-ai/dsh-client-ui-model-selection/client.js +18 -18
  25. package/dist/plugins/@deepseek-ai/dsh-client-ui-permission-presets/client.js +96 -82
  26. package/dist/plugins/@deepseek-ai/dsh-client-ui-renderer/client.js +989 -0
  27. package/dist/plugins/@deepseek-ai/dsh-client-ui-settings/client.js +1177 -67
  28. package/dist/plugins/@deepseek-ai/dsh-client-ui-settings-general/client.js +61 -65
  29. package/dist/plugins/@deepseek-ai/dsh-client-ui-sidebar/client.js +51 -21
  30. package/dist/plugins/@deepseek-ai/dsh-client-ui-skill/client.js +12 -12
  31. package/dist/plugins/@deepseek-ai/dsh-client-ui-subagent/client.js +18 -45
  32. package/dist/plugins/@deepseek-ai/dsh-client-ui-theme/client.js +46 -3
  33. package/dist/plugins/@deepseek-ai/dsh-client-ui-tool/client.js +102 -62
  34. package/dist/plugins/@deepseek-ai/dsh-client-ui-trajectory/client.js +143 -142
  35. package/dist/plugins/@deepseek-ai/dsh-client-ui-user-questions/client.js +25 -25
  36. package/dist/plugins/@deepseek-ai/dsh-client-ui-workflow-run/client.js +261 -86
  37. package/dist/plugins/@deepseek-ai/dsh-client-ui-workspace/client.js +72 -62
  38. package/package.json +22 -22
  39. package/scripts/legal-files.mjs +2 -1
  40. package/worker/direct/index.js +692 -688
  41. package/worker/isolated/index.js +469 -465
  42. package/dist/assets/index-C-1AiF3k.js +0 -112
  43. package/dist/assets/index-CSGf6Qzd.css +0 -1
@@ -341,40 +341,40 @@ window.__ModuleLoader__.load({
341
341
  document.head.appendChild(tag);
342
342
  }
343
343
  var Rows_module_css_default = {
344
- "rowActions": "YDXeBa_rowActions",
344
+ "arrow": "YDXeBa_arrow",
345
+ "arrowOpen": "YDXeBa_arrowOpen",
346
+ "chevron": "YDXeBa_chevron",
345
347
  "dot": "YDXeBa_dot",
346
- "time": "YDXeBa_time",
347
- "visuallyHidden": "YDXeBa_visuallyHidden",
348
- "meta": "YDXeBa_meta",
349
- "searchResultTitle": "YDXeBa_searchResultTitle",
350
- "searchResultHeading": "YDXeBa_searchResultHeading",
348
+ "dropAfter": "YDXeBa_dropAfter",
349
+ "dropBefore": "YDXeBa_dropBefore",
350
+ "flatSessionRowWithoutStatus": "YDXeBa_flatSessionRowWithoutStatus",
351
351
  "folder": "YDXeBa_folder",
352
+ "folderActive": "YDXeBa_folderActive",
352
353
  "hoverContent": "YDXeBa_hoverContent",
353
- "projectRow": "YDXeBa_projectRow",
354
- "hoverStatus": "YDXeBa_hoverStatus",
355
- "dropAfter": "YDXeBa_dropAfter",
356
- "searchResultMeta": "YDXeBa_searchResultMeta",
357
- "chevron": "YDXeBa_chevron",
358
354
  "hoverPath": "YDXeBa_hoverPath",
359
- "menuOpen": "YDXeBa_menuOpen",
360
- "sessionRow": "YDXeBa_sessionRow",
355
+ "hoverStatus": "YDXeBa_hoverStatus",
356
+ "hoverTime": "YDXeBa_hoverTime",
361
357
  "hoverTitle": "YDXeBa_hoverTitle",
362
- "slot": "YDXeBa_slot",
363
- "flatSessionRowWithoutStatus": "YDXeBa_flatSessionRowWithoutStatus",
358
+ "iconButton": "YDXeBa_iconButton",
359
+ "menuOpen": "YDXeBa_menuOpen",
360
+ "meta": "YDXeBa_meta",
361
+ "projectRow": "YDXeBa_projectRow",
362
+ "projectText": "YDXeBa_projectText",
363
+ "renameInput": "YDXeBa_renameInput",
364
364
  "row-in": "YDXeBa_row-in",
365
+ "rowActions": "YDXeBa_rowActions",
366
+ "searchResultHeading": "YDXeBa_searchResultHeading",
367
+ "searchResultMeta": "YDXeBa_searchResultMeta",
368
+ "searchResultRow": "YDXeBa_searchResultRow",
369
+ "searchResultSnippet": "YDXeBa_searchResultSnippet",
370
+ "searchResultTitle": "YDXeBa_searchResultTitle",
365
371
  "searchResultWorkspace": "YDXeBa_searchResultWorkspace",
366
- "hoverTime": "YDXeBa_hoverTime",
367
372
  "selected": "YDXeBa_selected",
368
- "folderActive": "YDXeBa_folderActive",
369
- "arrow": "YDXeBa_arrow",
370
- "searchResultSnippet": "YDXeBa_searchResultSnippet",
371
- "iconButton": "YDXeBa_iconButton",
372
- "projectText": "YDXeBa_projectText",
373
+ "sessionRow": "YDXeBa_sessionRow",
374
+ "slot": "YDXeBa_slot",
375
+ "time": "YDXeBa_time",
373
376
  "title": "YDXeBa_title",
374
- "arrowOpen": "YDXeBa_arrowOpen",
375
- "searchResultRow": "YDXeBa_searchResultRow",
376
- "renameInput": "YDXeBa_renameInput",
377
- "dropBefore": "YDXeBa_dropBefore"
377
+ "visuallyHidden": "YDXeBa_visuallyHidden"
378
378
  };
379
379
  //#endregion
380
380
  //#region lib/types/client/rows/Rows.js
@@ -413,7 +413,7 @@ window.__ModuleLoader__.load({
413
413
  d: d.getDate()
414
414
  })} ${pad2(d.getHours())}:${pad2(d.getMinutes())}` });
415
415
  }
416
- /** Hover-card body: workspace title, full directory path, absolute creation time. */
416
+ /** Hover-card body: workspace title, display directory path, absolute creation time. */
417
417
  function WorkspaceHoverContent({ label, cwd, createdAt, t }) {
418
418
  return (0, react_jsx_runtime.jsxs)("div", {
419
419
  className: Rows_module_css_default.hoverContent,
@@ -447,10 +447,11 @@ window.__ModuleLoader__.load({
447
447
  * @param props.onToggle - expand/collapse the group.
448
448
  * @param props.onCreate - start a frontend Session inside this Workspace.
449
449
  * @param props.drag - optional workspace-row drag wiring.
450
+ * @param props.home - host account home for POSIX hover-path abbreviation.
450
451
  * @param props.t - the browser root's locale seat.
451
452
  * @returns the row element.
452
453
  */
453
- function ProjectRowItem({ group, onToggle, onCreate, actions, drag, t }) {
454
+ function ProjectRowItem({ group, onToggle, onCreate, actions, drag, home, t }) {
454
455
  const row = group;
455
456
  const label = row.workspaceId === void 0 ? t("group.ungrouped") : row.label;
456
457
  const active = group.expanded && group.containsCurrent;
@@ -538,7 +539,7 @@ window.__ModuleLoader__.load({
538
539
  anchor: ownRow,
539
540
  content: (0, react_jsx_runtime.jsx)(WorkspaceHoverContent, {
540
541
  label: row.label,
541
- cwd: row.cwd,
542
+ cwd: row.cwd === void 0 ? void 0 : (0, _deepseek_ai_dsh_client_runtime_client.abbreviateHomePath)(row.cwd, home),
542
543
  createdAt: row.createdAt,
543
544
  t
544
545
  }),
@@ -975,42 +976,42 @@ window.__ModuleLoader__.load({
975
976
  document.head.appendChild(tag);
976
977
  }
977
978
  var WorkspaceBrowser_module_css_default = {
978
- "sectionLabel": "qDHVXG_sectionLabel",
979
- "searchExpanded": "qDHVXG_searchExpanded",
980
- "list": "qDHVXG_list",
981
- "headerActions": "qDHVXG_headerActions",
982
- "searchWarning": "qDHVXG_searchWarning",
983
- "listTopDropIndicator": "qDHVXG_listTopDropIndicator",
984
- "searchInput": "qDHVXG_searchInput",
985
- "renameInput": "qDHVXG_renameInput",
986
- "renameError": "qDHVXG_renameError",
987
- "listTopDropActive": "qDHVXG_listTopDropActive",
979
+ "clearButton": "qDHVXG_clearButton",
980
+ "deleteAction": "qDHVXG_deleteAction",
981
+ "deleteStatus": "qDHVXG_deleteStatus",
988
982
  "empty": "qDHVXG_empty",
989
- "workspaceDropAfter": "qDHVXG_workspaceDropAfter",
990
- "sectionLabelHidden": "qDHVXG_sectionLabelHidden",
991
- "searchStatus": "qDHVXG_searchStatus",
992
- "searchSlotExpanded": "qDHVXG_searchSlotExpanded",
983
+ "fade": "qDHVXG_fade",
984
+ "flatList": "qDHVXG_flatList",
985
+ "groupSection": "qDHVXG_groupSection",
986
+ "headerActions": "qDHVXG_headerActions",
993
987
  "headerActionsHidden": "qDHVXG_headerActionsHidden",
988
+ "iconButton": "qDHVXG_iconButton",
989
+ "list": "qDHVXG_list",
994
990
  "listArea": "qDHVXG_listArea",
995
- "wide-in": "qDHVXG_wide-in",
996
- "fade": "qDHVXG_fade",
991
+ "listTopDropActive": "qDHVXG_listTopDropActive",
992
+ "listTopDropIndicator": "qDHVXG_listTopDropIndicator",
997
993
  "rail": "qDHVXG_rail",
998
- "searchSlot": "qDHVXG_searchSlot",
999
- "searchTree": "qDHVXG_searchTree",
994
+ "renameError": "qDHVXG_renameError",
995
+ "renameInput": "qDHVXG_renameInput",
1000
996
  "root": "qDHVXG_root",
1001
- "iconButton": "qDHVXG_iconButton",
1002
997
  "search": "qDHVXG_search",
1003
- "workspaceDropBefore": "qDHVXG_workspaceDropBefore",
1004
- "sectionHeader": "qDHVXG_sectionHeader",
1005
- "clearButton": "qDHVXG_clearButton",
1006
998
  "searchButton": "qDHVXG_searchButton",
1007
- "wide": "qDHVXG_wide",
1008
- "flatList": "qDHVXG_flatList",
1009
- "treeBody": "qDHVXG_treeBody",
1010
- "deleteAction": "qDHVXG_deleteAction",
1011
- "groupSection": "qDHVXG_groupSection",
999
+ "searchExpanded": "qDHVXG_searchExpanded",
1000
+ "searchInput": "qDHVXG_searchInput",
1001
+ "searchSlot": "qDHVXG_searchSlot",
1002
+ "searchSlotExpanded": "qDHVXG_searchSlotExpanded",
1003
+ "searchStatus": "qDHVXG_searchStatus",
1004
+ "searchTree": "qDHVXG_searchTree",
1005
+ "searchWarning": "qDHVXG_searchWarning",
1006
+ "sectionHeader": "qDHVXG_sectionHeader",
1007
+ "sectionLabel": "qDHVXG_sectionLabel",
1008
+ "sectionLabelHidden": "qDHVXG_sectionLabelHidden",
1012
1009
  "sessionOverflowButton": "qDHVXG_sessionOverflowButton",
1013
- "deleteStatus": "qDHVXG_deleteStatus"
1010
+ "treeBody": "qDHVXG_treeBody",
1011
+ "wide": "qDHVXG_wide",
1012
+ "wide-in": "qDHVXG_wide-in",
1013
+ "workspaceDropAfter": "qDHVXG_workspaceDropAfter",
1014
+ "workspaceDropBefore": "qDHVXG_workspaceDropBefore"
1014
1015
  };
1015
1016
  //#endregion
1016
1017
  //#region lib/types/client/WorkspaceBrowser.js
@@ -1196,7 +1197,7 @@ window.__ModuleLoader__.load({
1196
1197
  return e.clientY < rect.top + rect.height / 2 ? "before" : "after";
1197
1198
  }
1198
1199
  /** The scrolling session tree; unmounting drops the sessions subscription and expand-all state. */
1199
- function SessionTree({ useSessions, startSession, open, forkSession, workspaces, archivedSessionIds, onRenameRequest, onDeleteRequest, onSessionRename, onSessionArchive, canAddWorkspace, insertWorkspaceBefore, insertSessionBefore, orderBy, groupExpansion, setGroupExpanded, sessionOrderByAccount, sessionUpdatedAtByAccount, syncSessionOrderAccount, setSessionOrder, t }) {
1200
+ function SessionTree({ useSessions, startSession, open, forkSession, workspaces, archivedSessionIds, onRenameRequest, onDeleteRequest, onSessionRename, onSessionArchive, insertWorkspaceBefore, insertSessionBefore, orderBy, groupExpansion, setGroupExpanded, sessionOrderByAccount, sessionUpdatedAtByAccount, syncSessionOrderAccount, setSessionOrder, canAddWorkspace, home, t }) {
1200
1201
  const list = useSessions((s) => s);
1201
1202
  const current = list.current;
1202
1203
  const [expandedSessionGroups, setExpandedSessionGroups] = (0, react.useState)([]);
@@ -1376,6 +1377,7 @@ window.__ModuleLoader__.load({
1376
1377
  children: [
1377
1378
  (0, react_jsx_runtime.jsx)(ProjectRowItem, {
1378
1379
  group,
1380
+ home,
1379
1381
  t,
1380
1382
  onToggle: () => {
1381
1383
  if (group.expanded) setExpandedSessionGroups((keys) => keys.filter((key) => key !== group.key));
@@ -1644,7 +1646,8 @@ window.__ModuleLoader__.load({
1644
1646
  * @param props - composed slot props (shell owner share + store + injected actions).
1645
1647
  * @returns the region element tree.
1646
1648
  */
1647
- function WorkspaceBrowser({ wide, expandSidebar, useSessions, useWorkspaces, useStore, actions, startSession, open, renameSession, forkSession, renameWorkspace, deleteWorkspace, insertWorkspaceBefore, archiveSession, insertSessionBefore, createWorkspace, searchSessions, searchResultLimit, useDirectoryFlow, renderSlot, t }) {
1649
+ function WorkspaceBrowser({ wide, expandSidebar, useSessions, useWorkspaces, useStore, actions, startSession, open, renameSession, forkSession, renameWorkspace, deleteWorkspace, insertWorkspaceBefore, archiveSession, insertSessionBefore, createWorkspace, searchSessions, searchResultLimit, useDirectoryFlow, useHostDescription, renderSlot, t }) {
1650
+ const home = useHostDescription((description) => description?.home);
1648
1651
  const workspaces = useWorkspaces((state) => state.items);
1649
1652
  const workspacePhase = useWorkspaces((state) => state.phase);
1650
1653
  const archivedSessionIds = useWorkspaces((state) => state.archivedSessionIds);
@@ -1701,7 +1704,7 @@ window.__ModuleLoader__.load({
1701
1704
  searchOnExpand
1702
1705
  ]);
1703
1706
  (0, react.useEffect)(() => {
1704
- if (!wide || !searchExpanded) return;
1707
+ if (!wide || !searchExpanded || searchOnExpand) return;
1705
1708
  const onClick = (event) => {
1706
1709
  if (!(event.target instanceof Node) || searchRoot.current?.contains(event.target) === true) return;
1707
1710
  searchInput.current?.blur();
@@ -1715,7 +1718,8 @@ window.__ModuleLoader__.load({
1715
1718
  }, [
1716
1719
  normalizedQuery,
1717
1720
  wide,
1718
- searchExpanded
1721
+ searchExpanded,
1722
+ searchOnExpand
1719
1723
  ]);
1720
1724
  (0, react.useEffect)(() => {
1721
1725
  if (normalizedQuery === "") {
@@ -2023,6 +2027,7 @@ window.__ModuleLoader__.load({
2023
2027
  insertSessionBefore,
2024
2028
  orderBy,
2025
2029
  canAddWorkspace: directoryFlowAvailable,
2030
+ home,
2026
2031
  t,
2027
2032
  onRenameRequest: (workspaceId, currentTitle) => {
2028
2033
  setRenameTarget({
@@ -2327,7 +2332,8 @@ window.__ModuleLoader__.load({
2327
2332
  "slots",
2328
2333
  "sessions",
2329
2334
  "workspaces",
2330
- "locale"
2335
+ "locale",
2336
+ "connection"
2331
2337
  ];
2332
2338
  /**
2333
2339
  * Register the browser and picker once their slot declarations are on the
@@ -2336,6 +2342,7 @@ window.__ModuleLoader__.load({
2336
2342
  * @param ctx - client root context.
2337
2343
  */
2338
2344
  function apply(ctx) {
2345
+ const hostDescription = ctx.get("connection").hostDescription;
2339
2346
  ctx.effect(() => ctx.locale.register(NS, {
2340
2347
  zh,
2341
2348
  en
@@ -2390,7 +2397,10 @@ window.__ModuleLoader__.load({
2390
2397
  await ctx.workspaces.insertSessionBefore(workspaceId, sessionId, beforeSessionId);
2391
2398
  },
2392
2399
  createWorkspace: (input) => ctx.workspaces.create(input),
2393
- hooks: { directoryFlow: browserFlowSource }
2400
+ hooks: {
2401
+ directoryFlow: browserFlowSource,
2402
+ hostDescription
2403
+ }
2394
2404
  });
2395
2405
  const pickerInjected = () => ({
2396
2406
  createWorkspace: (input) => ctx.workspaces.create(input),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-edge",
3
- "version": "0.2.0-alpha.2",
3
+ "version": "0.2.0",
4
4
  "description": "Run DeepSeek Harness on Cloudflare Workers as an independent community project",
5
5
  "author": "pawaca",
6
6
  "license": "MIT",
@@ -41,7 +41,7 @@
41
41
  "access": "public"
42
42
  },
43
43
  "dshEdge": {
44
- "upstreamVersion": "0.1.0-rc.7"
44
+ "upstreamVersion": "0.1.0-rc.8"
45
45
  },
46
46
  "dependencies": {
47
47
  "@clack/prompts": "1.7.0",
@@ -54,26 +54,26 @@
54
54
  "@cloudflare/computer": "0.2.0",
55
55
  "@cloudflare/workers-types": "5.20260812.1",
56
56
  "@deepseek-ai/cordis": "4.0.1",
57
- "@deepseek-ai/dsh-agent": "0.1.0-rc.7",
58
- "@deepseek-ai/dsh-agent-loop": "0.1.0-rc.7",
59
- "@deepseek-ai/dsh-anonymous-user-id": "0.1.0-rc.7",
60
- "@deepseek-ai/dsh-brand": "0.1.0-rc.7",
61
- "@deepseek-ai/dsh-credentials": "0.1.0-rc.7",
62
- "@deepseek-ai/dsh-host-apiproxy": "0.1.0-rc.7",
63
- "@deepseek-ai/dsh-launch-environment": "0.1.0-rc.7",
64
- "@deepseek-ai/dsh-llm": "0.1.0-rc.7",
65
- "@deepseek-ai/dsh-llm-deepseek": "0.1.0-rc.7",
66
- "@deepseek-ai/dsh-session": "0.1.0-rc.7",
67
- "@deepseek-ai/dsh-session-persistence": "0.1.0-rc.7",
68
- "@deepseek-ai/dsh-session-query": "0.1.0-rc.7",
69
- "@deepseek-ai/dsh-session-title": "0.1.0-rc.7",
70
- "@deepseek-ai/dsh-settings": "0.1.0-rc.7",
71
- "@deepseek-ai/dsh-system-prompt": "0.1.0-rc.7",
72
- "@deepseek-ai/dsh-tool-call-timeout-policy": "0.1.0-rc.7",
73
- "@deepseek-ai/dsh-tool-web": "0.1.0-rc.7",
74
- "@deepseek-ai/dsh-tools": "0.1.0-rc.7",
75
- "@deepseek-ai/dsh-web": "0.1.0-rc.7",
76
- "@deepseek-ai/dsh-web-search-deepseek": "0.1.0-rc.7",
57
+ "@deepseek-ai/dsh-agent": "0.1.0-rc.8",
58
+ "@deepseek-ai/dsh-agent-loop": "0.1.0-rc.8",
59
+ "@deepseek-ai/dsh-anonymous-user-id": "0.1.0-rc.8",
60
+ "@deepseek-ai/dsh-brand": "0.1.0-rc.8",
61
+ "@deepseek-ai/dsh-credentials": "0.1.0-rc.8",
62
+ "@deepseek-ai/dsh-host-apiproxy": "0.1.0-rc.8",
63
+ "@deepseek-ai/dsh-launch-environment": "0.1.0-rc.8",
64
+ "@deepseek-ai/dsh-llm": "0.1.0-rc.8",
65
+ "@deepseek-ai/dsh-llm-deepseek": "0.1.0-rc.8",
66
+ "@deepseek-ai/dsh-session": "0.1.0-rc.8",
67
+ "@deepseek-ai/dsh-session-persistence": "0.1.0-rc.8",
68
+ "@deepseek-ai/dsh-session-query": "0.1.0-rc.8",
69
+ "@deepseek-ai/dsh-session-title": "0.1.0-rc.8",
70
+ "@deepseek-ai/dsh-settings": "0.1.0-rc.8",
71
+ "@deepseek-ai/dsh-system-prompt": "0.1.0-rc.8",
72
+ "@deepseek-ai/dsh-tool-call-timeout-policy": "0.1.0-rc.8",
73
+ "@deepseek-ai/dsh-tool-web": "0.1.0-rc.8",
74
+ "@deepseek-ai/dsh-tools": "0.1.0-rc.8",
75
+ "@deepseek-ai/dsh-web": "0.1.0-rc.8",
76
+ "@deepseek-ai/dsh-web-search-deepseek": "0.1.0-rc.8",
77
77
  "just-bash": "3.3.0",
78
78
  "playwright": "^1.49.0",
79
79
  "typescript": "^6.0.3",
@@ -40,6 +40,7 @@ const LEGAL_FILE = /^(?:licen[cs]e|copying|notice)(?:$|[._-])/iu
40
40
  const repositoryRoot = fileURLToPath(new URL('../../../', import.meta.url))
41
41
  const packageRoot = fileURLToPath(new URL('../', import.meta.url))
42
42
  const standaloneRoot = join(packageRoot, 'standalone')
43
+ const edgeManifest = JSON.parse(readFileSync(join(packageRoot, 'package.json'), 'utf8'))
43
44
 
44
45
  function bundledComponents() {
45
46
  const invocation = resolvePnpmInvocation(process.env.npm_execpath ?? 'pnpm', [
@@ -211,7 +212,7 @@ function renderNotices(components) {
211
212
 
212
213
  ## DeepSeek Harness
213
214
 
214
- \`dsh-edge\` assembles published DeepSeek Harness packages and applies six version-bound adaptations to the pinned \`0.1.0-rc.7\` release. DeepSeek Harness remains under its upstream MIT license:
215
+ \`dsh-edge\` assembles published DeepSeek Harness packages and applies six version-bound adaptations to the pinned \`${edgeManifest.dshEdge.upstreamVersion}\` release. DeepSeek Harness remains under its upstream MIT license:
215
216
 
216
217
  \`\`\`text
217
218
  ${upstreamLicense}