dsh-openwrite 0.2.27 → 0.2.28

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 (32) hide show
  1. package/README.md +8 -0
  2. package/docs/CLOSED_ISSUE_FOLLOWUPS.md +5 -3
  3. package/docs/CONTEXT_SLOTS.md +60 -0
  4. package/docs/EDITOR_SAFETY_REPAIRS.md +17 -0
  5. package/docs/ISSUES_121_123.md +97 -0
  6. package/docs/ISSUES_98_100.md +2 -0
  7. package/docs/ISSUE_123_FOLLOWUP.md +54 -0
  8. package/docs/RELEASE_ACCEPTANCE.md +73 -3
  9. package/docs/SELECTION_UPGRADE_REPAIRS.md +16 -0
  10. package/docs/TOOLS.md +1356 -0
  11. package/dog-tools.mjs +5 -3
  12. package/package.json +5 -4
  13. package/packages/openwrite-bridge/lib/dog-delivery.js +7 -3
  14. package/packages/openwrite-bridge/lib/managed-runtime.js +3 -1
  15. package/packages/openwrite-bridge/lib/tool-policy.js +2 -0
  16. package/packages/openwrite-bridge/lib/tools.js +28 -5
  17. package/packages/studio-panel/lib/client.js +760 -539
  18. package/packages/studio-panel/lib/client.js.map +1 -1
  19. package/packages/studio-panel/lib/types/client/VditorBody.d.ts +7 -1
  20. package/packages/studio-panel/lib/types/client/locales.d.ts +1 -1
  21. package/packages/studio-panel/lib/types/client/manuscript-annotations.d.ts +2 -1
  22. package/packages/studio-panel/lib/types/client/manuscript-overlay.d.ts +2 -1
  23. package/packages/studio-panel/lib/types/client/manuscript-selection.d.ts +18 -5
  24. package/packages/studio-panel/lib/types/client/selection-coordinates.d.ts +15 -0
  25. package/preset-definition.mjs +1 -1
  26. package/release/{openwrite-5.8.16-py3-none-any.whl → openwrite-5.8.20-py3-none-any.whl} +0 -0
  27. package/release/runtime-manifest.json +6 -5
  28. package/release/source.json +3 -3
  29. package/scripts/safe-upgrade.mjs +104 -9
  30. package/vendor/dsh-dog/lib/{core-BAlgZpLq.js → core--byUPJL8.js} +129 -12
  31. package/vendor/dsh-dog/lib/core.js +1 -1
  32. package/vendor/dsh-dog/lib/index.js +54 -103
@@ -29647,10 +29647,10 @@ window.__ModuleLoader__.load({
29647
29647
  document.head.appendChild(tag);
29648
29648
  }
29649
29649
  var LaunchOpenWrite_module_css_default = {
29650
- "primary": "Ll8urG_primary",
29651
- "path": "Ll8urG_path",
29652
29650
  "entry": "Ll8urG_entry",
29653
- "dialog": "Ll8urG_dialog"
29651
+ "dialog": "Ll8urG_dialog",
29652
+ "primary": "Ll8urG_primary",
29653
+ "path": "Ll8urG_path"
29654
29654
  };
29655
29655
  //#endregion
29656
29656
  //#region src/client/LaunchOpenWrite.tsx
@@ -36790,6 +36790,96 @@ window.__ModuleLoader__.load({
36790
36790
  return promise;
36791
36791
  }
36792
36792
  //#endregion
36793
+ //#region src/client/selection-coordinates.ts
36794
+ function normalize(text, foldLines = false) {
36795
+ const chars = [];
36796
+ const boundaries = [0];
36797
+ let limit = text.length;
36798
+ if (foldLines) while (limit > 0 && /[\r\n]/.test(text[limit - 1])) limit--;
36799
+ for (let index = 0; index < limit; index++) {
36800
+ if (text[index] === "\r" || foldLines && text[index] === "\n") {
36801
+ if (foldLines) while (index + 1 < limit && /[\r\n]/.test(text[index + 1])) index++;
36802
+ else if (text[index + 1] === "\n") index++;
36803
+ chars.push("\n");
36804
+ } else chars.push(text[index]);
36805
+ boundaries.push(index + 1);
36806
+ }
36807
+ return {
36808
+ text: chars.join(""),
36809
+ boundaries
36810
+ };
36811
+ }
36812
+ function boundary(text, index) {
36813
+ if (!Number.isInteger(index) || index < 0 || index > text.length) return false;
36814
+ const before = text.charCodeAt(index - 1), after = text.charCodeAt(index);
36815
+ return !(before >= 55296 && before <= 56319 && after >= 56320 && after <= 57343);
36816
+ }
36817
+ function indexOfBoundary(items, value) {
36818
+ let left = 0, right = items.length - 1;
36819
+ while (left <= right) {
36820
+ const middle = left + right >>> 1;
36821
+ if (items[middle] === value) return middle;
36822
+ if (items[middle] < value) left = middle + 1;
36823
+ else right = middle - 1;
36824
+ }
36825
+ return -1;
36826
+ }
36827
+ let cached;
36828
+ function coordinates(source, editor, serialization) {
36829
+ const serialized = serialization?.source === source && serialization.value === editor;
36830
+ if (cached?.source === source && cached.editor === editor && cached.serialized === serialized) return cached;
36831
+ const points = [0];
36832
+ for (const point of source) points.push(points[points.length - 1] + point.length);
36833
+ let raw = normalize(source), view = normalize(editor);
36834
+ if (raw.text !== view.text && serialized) {
36835
+ raw = normalize(source, true);
36836
+ view = normalize(editor, true);
36837
+ }
36838
+ cached = {
36839
+ source,
36840
+ editor,
36841
+ serialized,
36842
+ raw,
36843
+ view,
36844
+ points
36845
+ };
36846
+ return cached;
36847
+ }
36848
+ function mappedBoundary(from, to, index, fromLength, toLength) {
36849
+ const position = indexOfBoundary(from.boundaries, index);
36850
+ if (position >= 0) return to.boundaries[position];
36851
+ return index === fromLength ? toLength : -1;
36852
+ }
36853
+ /** Exact content and witnessed newline serialization; never guess among quotes. */
36854
+ function mapEditorRange(source, editor, start, end, serialization) {
36855
+ if (end <= start || !boundary(editor, start) || !boundary(editor, end)) return null;
36856
+ const { raw, view, points } = coordinates(source, editor, serialization);
36857
+ if (raw.text !== view.text) return null;
36858
+ const rawStart = mappedBoundary(view, raw, start, editor.length, source.length);
36859
+ const rawEnd = mappedBoundary(view, raw, end, editor.length, source.length);
36860
+ if (rawStart < 0 || rawEnd <= rawStart) return null;
36861
+ return {
36862
+ start: indexOfBoundary(points, rawStart),
36863
+ end: indexOfBoundary(points, rawEnd),
36864
+ text: source.slice(rawStart, rawEnd)
36865
+ };
36866
+ }
36867
+ /** Translate stored source code-point hints back into the editor's UTF-16 view. */
36868
+ function mapSourceRange(source, editor, start, end, serialization) {
36869
+ const { raw, view, points } = coordinates(source, editor, serialization);
36870
+ if (!Number.isInteger(start) || !Number.isInteger(end) || start < 0 || end <= start || end >= points.length) return null;
36871
+ if (raw.text !== view.text) return null;
36872
+ const rawStart = points[start], rawEnd = points[end];
36873
+ const viewStart = mappedBoundary(raw, view, rawStart, source.length, editor.length);
36874
+ const viewEnd = mappedBoundary(raw, view, rawEnd, source.length, editor.length);
36875
+ if (viewStart < 0 || viewEnd <= viewStart) return null;
36876
+ return {
36877
+ start: viewStart,
36878
+ end: viewEnd,
36879
+ text: editor.slice(viewStart, viewEnd)
36880
+ };
36881
+ }
36882
+ //#endregion
36793
36883
  //#region src/client/manuscript-selection.ts
36794
36884
  const SELECTION_POLISH_ACTIONS = [
36795
36885
  {
@@ -36822,14 +36912,20 @@ window.__ModuleLoader__.load({
36822
36912
  if (options.selectionInsideEditor) return false;
36823
36913
  return !nodePreservesManuscriptSelection(options.preserveNode);
36824
36914
  }
36825
- function manuscriptSelectionFromRange(value, start, end) {
36915
+ function manuscriptSelectionFromRange(value, start, end, serialization) {
36826
36916
  if (!Number.isInteger(start) || !Number.isInteger(end) || start < 0 || end > value.length || end <= start) return null;
36827
36917
  return {
36828
36918
  start,
36829
36919
  end,
36830
- text: value.slice(start, end)
36920
+ text: value.slice(start, end),
36921
+ source: value,
36922
+ ...serialization ? { serialization } : {}
36831
36923
  };
36832
36924
  }
36925
+ function mapManuscriptSelection(source, selection) {
36926
+ if (selection.source.slice(selection.start, selection.end) !== selection.text) return null;
36927
+ return mapEditorRange(source, selection.source, selection.start, selection.end, selection.serialization);
36928
+ }
36833
36929
  /** Count non-overlapping occurrences of needle in haystack. */
36834
36930
  function countOccurrences(haystack, needle) {
36835
36931
  if (needle === "") return 0;
@@ -36859,15 +36955,15 @@ window.__ModuleLoader__.load({
36859
36955
  * Map a live editor selection onto markdown offsets.
36860
36956
  * Duplicate quotes without an occurrence index do not bind the first hit.
36861
36957
  */
36862
- function locateSelectedMarkdown(value, selected, occurrence) {
36958
+ function locateSelectedMarkdown(value, selected, occurrence, serialization) {
36863
36959
  if (selected === "") return null;
36864
36960
  if (occurrence !== void 0) {
36865
36961
  const start = nthIndexOf(value, selected, occurrence);
36866
- return start < 0 ? null : manuscriptSelectionFromRange(value, start, start + selected.length);
36962
+ return start < 0 ? null : manuscriptSelectionFromRange(value, start, start + selected.length, serialization);
36867
36963
  }
36868
36964
  if (countOccurrences(value, selected) !== 1) return null;
36869
36965
  const start = value.indexOf(selected);
36870
- return manuscriptSelectionFromRange(value, start, start + selected.length);
36966
+ return manuscriptSelectionFromRange(value, start, start + selected.length, serialization);
36871
36967
  }
36872
36968
  /** Bind a stored quote to current markdown using hints, then unique relocate. */
36873
36969
  function locateQuote(content, quote, startHint, endHint) {
@@ -36905,9 +37001,10 @@ window.__ModuleLoader__.load({
36905
37001
  }
36906
37002
  function issueRange(value) {
36907
37003
  const item = asRecord$2(value);
36908
- const start = Number(item["start"] ?? asRecord$2(item["anchor"])["start"] ?? NaN);
36909
- const end = Number(item["end"] ?? asRecord$2(item["anchor"])["end"] ?? NaN);
36910
- return Number.isFinite(start) && Number.isFinite(end) ? {
37004
+ const anchor = asRecord$2(item["anchor"]);
37005
+ const start = Number(item["start"] ?? anchor["start_hint"] ?? anchor["start"] ?? NaN);
37006
+ const end = Number(item["end"] ?? anchor["end_hint"] ?? anchor["end"] ?? NaN);
37007
+ return Number.isInteger(start) && Number.isInteger(end) && start >= 0 && end > start ? {
36911
37008
  start,
36912
37009
  end
36913
37010
  } : null;
@@ -36919,13 +37016,16 @@ window.__ModuleLoader__.load({
36919
37016
  const item = asRecord$2(raw);
36920
37017
  const id = typeof item["id"] === "string" ? item["id"] : "";
36921
37018
  if (id === "" || ids.includes(id)) continue;
37019
+ const range = issueRange(item);
37020
+ if (range !== null) {
37021
+ if (range.start < selection.end && range.end > selection.start) ids.push(id);
37022
+ continue;
37023
+ }
36922
37024
  const quote = issueQuote(item);
36923
37025
  if (quote !== "" && (selection.text.includes(quote) || quote.includes(selection.text))) {
36924
37026
  ids.push(id);
36925
37027
  continue;
36926
37028
  }
36927
- const range = issueRange(item);
36928
- if (range !== null && range.start < selection.end && range.end > selection.start) ids.push(id);
36929
37029
  }
36930
37030
  return ids;
36931
37031
  }
@@ -36935,6 +37035,11 @@ window.__ModuleLoader__.load({
36935
37035
  ok: false,
36936
37036
  reason: "empty"
36937
37037
  };
37038
+ const selected = mapManuscriptSelection(input.documentContent, input.selection);
37039
+ if (selected === null) return {
37040
+ ok: false,
37041
+ reason: "source-changed"
37042
+ };
36938
37043
  if (input.kind === "reviewFix") {
36939
37044
  if (!input.reviewFresh || input.reviewRevision === "" || input.documentRevision === "") return {
36940
37045
  ok: false,
@@ -36950,7 +37055,12 @@ window.__ModuleLoader__.load({
36950
37055
  body: {
36951
37056
  chapter_id: input.chapterId,
36952
37057
  issue_ids: input.issueIds,
36953
- original_text: input.selection.text,
37058
+ original_text: selected.text,
37059
+ selection: {
37060
+ start: selected.start,
37061
+ end: selected.end,
37062
+ original_text: selected.text
37063
+ },
36954
37064
  expected_review_revision: input.reviewRevision,
36955
37065
  expected_document_revision: input.documentRevision
36956
37066
  }
@@ -36961,10 +37071,11 @@ window.__ModuleLoader__.load({
36961
37071
  path: "/revisions/selection",
36962
37072
  body: {
36963
37073
  chapter_id: input.chapterId,
36964
- start: input.selection.start,
36965
- end: input.selection.end,
36966
- original_text: input.selection.text,
36967
- action: SELECTION_ACTION_MODE[input.kind]
37074
+ start: selected.start,
37075
+ end: selected.end,
37076
+ original_text: selected.text,
37077
+ action: SELECTION_ACTION_MODE[input.kind],
37078
+ expected_document_revision: input.documentRevision
36968
37079
  }
36969
37080
  };
36970
37081
  }
@@ -37928,9 +38039,16 @@ window.__ModuleLoader__.load({
37928
38039
  function unsavedAnnotationGuard(dirty) {
37929
38040
  return dirty ? "save-first" : "ok";
37930
38041
  }
37931
- function liveAnnotationAnchor(content, item) {
37932
- if (item.anchorState === "detached" && item.currentStart === null) return locateQuote(content, item.quote, item.startHint, item.endHint);
37933
- return locateQuote(content, item.quote, item.currentStart ?? item.startHint, item.currentEnd ?? item.endHint);
38042
+ function liveAnnotationAnchor(content, item, source = content, serialization) {
38043
+ if (!(item.anchorState === "detached" && item.currentStart === null)) {
38044
+ const mapped = mapSourceRange(source, content, item.currentStart ?? item.startHint, item.currentEnd ?? item.endHint, serialization);
38045
+ if (mapped && mapEditorRange(source, content, mapped.start, mapped.end, serialization)?.text === item.quote) return {
38046
+ state: item.anchorState === "relocated" ? "relocated" : "attached",
38047
+ start: mapped.start,
38048
+ end: mapped.end
38049
+ };
38050
+ }
38051
+ return locateQuote(content, item.quote.replace(/\r\n?/g, "\n"), -1, -1);
37934
38052
  }
37935
38053
  function revalidateAnnotationRange(content, selection) {
37936
38054
  if (content.slice(selection.start, selection.end) === selection.text) return selection;
@@ -37962,18 +38080,19 @@ window.__ModuleLoader__.load({
37962
38080
  //#endregion
37963
38081
  //#region src/client/manuscript-overlay.ts
37964
38082
  /** Display-only bands. Never written back into markdown. */
37965
- function overlayBands(content, notes, markers) {
38083
+ function overlayBands(content, notes, markers, source = content, serialization) {
37966
38084
  const bands = [];
37967
38085
  for (const note of notes) {
37968
38086
  if (note.status === "resolved") continue;
37969
- const anchor = liveAnnotationAnchor(content, note);
38087
+ const anchor = liveAnnotationAnchor(content, note, source, serialization);
37970
38088
  if (anchor.state === "detached") continue;
37971
- const occurrence = countOccurrences(content.slice(0, anchor.start), note.quote);
38089
+ const needle = content.slice(anchor.start, anchor.end);
38090
+ const occurrence = countOccurrences(content.slice(0, anchor.start), needle);
37972
38091
  bands.push({
37973
38092
  kind: "note",
37974
38093
  start: anchor.start,
37975
38094
  end: anchor.end,
37976
- needle: note.quote,
38095
+ needle,
37977
38096
  occurrence,
37978
38097
  color: note.color,
37979
38098
  title: note.note
@@ -38119,262 +38238,262 @@ window.__ModuleLoader__.load({
38119
38238
  document.head.appendChild(tag);
38120
38239
  }
38121
38240
  var views_module_css_default = {
38122
- "toolbarMeta": "hpCk7W_toolbarMeta",
38123
- "researchSourceList": "hpCk7W_researchSourceList",
38124
- "detailToolbar": "hpCk7W_detailToolbar",
38125
- "taskFields": "hpCk7W_taskFields",
38126
- "taskRow": "hpCk7W_taskRow",
38127
- "vditorOverlay": "hpCk7W_vditorOverlay",
38128
- "assetRowMeta": "hpCk7W_assetRowMeta",
38129
- "benchmarkCellStack": "hpCk7W_benchmarkCellStack",
38130
- "summaryTextarea": "hpCk7W_summaryTextarea",
38131
- "modelCheckbox": "hpCk7W_modelCheckbox",
38132
- "treeChildren": "hpCk7W_treeChildren",
38133
- "relationshipWorkspace": "hpCk7W_relationshipWorkspace",
38134
- "derivedName": "hpCk7W_derivedName",
38135
- "relationFlowNode": "hpCk7W_relationFlowNode",
38136
- "resultLink": "hpCk7W_resultLink",
38137
- "modelUnsaved": "hpCk7W_modelUnsaved",
38138
- "root": "hpCk7W_root",
38139
- "derivedRelations": "hpCk7W_derivedRelations",
38140
- "taskTimelineStep": "hpCk7W_taskTimelineStep",
38141
- "researchProvenance": "hpCk7W_researchProvenance",
38142
- "relationChips": "hpCk7W_relationChips",
38143
- "relationRow": "hpCk7W_relationRow",
38144
- "taskDetailSummary": "hpCk7W_taskDetailSummary",
38145
- "dagPrimitiveList": "hpCk7W_dagPrimitiveList",
38146
- "derivedTitle": "hpCk7W_derivedTitle",
38147
- "taskChapter": "hpCk7W_taskChapter",
38241
+ "taskIssueRow": "hpCk7W_taskIssueRow",
38242
+ "profileChoice": "hpCk7W_profileChoice",
38243
+ "toolbar": "hpCk7W_toolbar",
38244
+ "benchmarkRunGroup": "hpCk7W_benchmarkRunGroup",
38148
38245
  "sidebar": "hpCk7W_sidebar",
38149
- "researchSearch": "hpCk7W_researchSearch",
38150
- "relationBlock": "hpCk7W_relationBlock",
38151
- "relationD3Label": "hpCk7W_relationD3Label",
38152
- "taskCardHeader": "hpCk7W_taskCardHeader",
38246
+ "taskSummary": "hpCk7W_taskSummary",
38247
+ "taskActions": "hpCk7W_taskActions",
38248
+ "benchmarkPhases": "hpCk7W_benchmarkPhases",
38153
38249
  "relationOrigin": "hpCk7W_relationOrigin",
38154
- "buttonDanger": "hpCk7W_buttonDanger",
38155
- "relationNode": "hpCk7W_relationNode",
38156
- "nodeSummary": "hpCk7W_nodeSummary",
38250
+ "chip": "hpCk7W_chip",
38251
+ "linkButton": "hpCk7W_linkButton",
38252
+ "relationshipSvg": "hpCk7W_relationshipSvg",
38253
+ "graphNodeMeta": "hpCk7W_graphNodeMeta",
38157
38254
  "tableScroll": "hpCk7W_tableScroll",
38158
- "taskFailure": "hpCk7W_taskFailure",
38159
- "dagRevisionAction": "hpCk7W_dagRevisionAction",
38160
- "dagObjectItem": "hpCk7W_dagObjectItem",
38161
- "searchResultHead": "hpCk7W_searchResultHead",
38162
- "searchChangeDiff": "hpCk7W_searchChangeDiff",
38163
- "taskIssueDim": "hpCk7W_taskIssueDim",
38164
- "kindBadge": "hpCk7W_kindBadge",
38165
- "relationshipCanvas": "hpCk7W_relationshipCanvas",
38166
- "groupHeader": "hpCk7W_groupHeader",
38255
+ "iconButton": "hpCk7W_iconButton",
38167
38256
  "taskProgressTrack": "hpCk7W_taskProgressTrack",
38168
- "modelListItem": "hpCk7W_modelListItem",
38169
- "dagDomainRow": "hpCk7W_dagDomainRow",
38170
- "taskProgressLine": "hpCk7W_taskProgressLine",
38171
- "referenceReader": "hpCk7W_referenceReader",
38172
- "mdInline": "hpCk7W_mdInline",
38173
- "listBlockItems": "hpCk7W_listBlockItems",
38174
- "dagWorkspace": "hpCk7W_dagWorkspace",
38175
- "searchInput": "hpCk7W_searchInput",
38176
- "truthSection": "hpCk7W_truthSection",
38177
- "detailHeading": "hpCk7W_detailHeading",
38178
- "input": "hpCk7W_input",
38179
- "graphColumnHeader": "hpCk7W_graphColumnHeader",
38180
- "treeItem": "hpCk7W_treeItem",
38181
- "searchLocator": "hpCk7W_searchLocator",
38182
- "actionButton": "hpCk7W_actionButton",
38183
- "derivedArrow": "hpCk7W_derivedArrow",
38184
- "taskTime": "hpCk7W_taskTime",
38257
+ "notice": "hpCk7W_notice",
38258
+ "derivedNote": "hpCk7W_derivedNote",
38259
+ "taskCardTitle": "hpCk7W_taskCardTitle",
38260
+ "bodyTextarea": "hpCk7W_bodyTextarea",
38261
+ "createPanel": "hpCk7W_createPanel",
38262
+ "launchPanel": "hpCk7W_launchPanel",
38263
+ "detailSummary": "hpCk7W_detailSummary",
38185
38264
  "modelList": "hpCk7W_modelList",
38186
- "body": "hpCk7W_body",
38187
- "relationshipDetail": "hpCk7W_relationshipDetail",
38188
- "modelEditor": "hpCk7W_modelEditor",
38189
- "benchmarkSection": "hpCk7W_benchmarkSection",
38190
- "taskDetail": "hpCk7W_taskDetail",
38191
- "searchSnippet": "hpCk7W_searchSnippet",
38192
- "dagNode": "hpCk7W_dagNode",
38193
- "modelGroup": "hpCk7W_modelGroup",
38194
- "taskReviewMeta": "hpCk7W_taskReviewMeta",
38195
- "mainPane": "hpCk7W_mainPane",
38196
- "listBlock": "hpCk7W_listBlock",
38197
- "textarea": "hpCk7W_textarea",
38198
- "workflowBlock": "hpCk7W_workflowBlock",
38265
+ "foreshadowNode": "hpCk7W_foreshadowNode",
38266
+ "listBlockLabel": "hpCk7W_listBlockLabel",
38267
+ "relationNode": "hpCk7W_relationNode",
38268
+ "kindBadge": "hpCk7W_kindBadge",
38269
+ "assetMeta": "hpCk7W_assetMeta",
38270
+ "edgeArrow": "hpCk7W_edgeArrow",
38271
+ "validationBlock": "hpCk7W_validationBlock",
38272
+ "searchResultPath": "hpCk7W_searchResultPath",
38273
+ "taskCardMain": "hpCk7W_taskCardMain",
38274
+ "editorLabel": "hpCk7W_editorLabel",
38275
+ "researchFilters": "hpCk7W_researchFilters",
38276
+ "relationNote": "hpCk7W_relationNote",
38277
+ "researchSearch": "hpCk7W_researchSearch",
38278
+ "benchmarkCost": "hpCk7W_benchmarkCost",
38279
+ "benchmarkError": "hpCk7W_benchmarkError",
38280
+ "scoreChip": "hpCk7W_scoreChip",
38281
+ "benchmarkStatus": "hpCk7W_benchmarkStatus",
38282
+ "toolbarMeta": "hpCk7W_toolbarMeta",
38283
+ "taskCardActions": "hpCk7W_taskCardActions",
38284
+ "relationBlock": "hpCk7W_relationBlock",
38285
+ "referenceReader": "hpCk7W_referenceReader",
38286
+ "derivedRow": "hpCk7W_derivedRow",
38287
+ "benchmarkProfiles": "hpCk7W_benchmarkProfiles",
38288
+ "taskSummaryItem": "hpCk7W_taskSummaryItem",
38289
+ "inlineActions": "hpCk7W_inlineActions",
38199
38290
  "modelGroupTitle": "hpCk7W_modelGroupTitle",
38200
- "relationD3Nodes": "hpCk7W_relationD3Nodes",
38201
- "benchmarkOutput": "hpCk7W_benchmarkOutput",
38202
- "taskTimeline": "hpCk7W_taskTimeline",
38203
- "benchmarkRunGroup": "hpCk7W_benchmarkRunGroup",
38204
- "taskIssuePriority": "hpCk7W_taskIssuePriority",
38205
- "nodeActions": "hpCk7W_nodeActions",
38206
- "searchChangePlan": "hpCk7W_searchChangePlan",
38207
- "editorRow": "hpCk7W_editorRow",
38208
- "dagStructuredRow": "hpCk7W_dagStructuredRow",
38209
- "relationDimmed": "hpCk7W_relationDimmed",
38210
- "searchResultTitle": "hpCk7W_searchResultTitle",
38211
- "benchmarkRun": "hpCk7W_benchmarkRun",
38212
- "benchmarkSources": "hpCk7W_benchmarkSources",
38213
- "bodyTextareaDirty": "hpCk7W_bodyTextareaDirty",
38291
+ "relationshipDetail": "hpCk7W_relationshipDetail",
38292
+ "benchmarkCellStack": "hpCk7W_benchmarkCellStack",
38214
38293
  "modelFormGrid": "hpCk7W_modelFormGrid",
38215
- "benchmarkProfiles": "hpCk7W_benchmarkProfiles",
38216
- "relationChip": "hpCk7W_relationChip",
38217
- "graphCanvas": "hpCk7W_graphCanvas",
38218
- "dagNodeContent": "hpCk7W_dagNodeContent",
38219
- "taskIssueText": "hpCk7W_taskIssueText",
38220
- "toolbar": "hpCk7W_toolbar",
38221
- "detailNotice": "hpCk7W_detailNotice",
38294
+ "modelDependencies": "hpCk7W_modelDependencies",
38222
38295
  "modelApiKeyInput": "hpCk7W_modelApiKeyInput",
38223
- "errorText": "hpCk7W_errorText",
38224
- "taskPhase": "hpCk7W_taskPhase",
38225
- "taskCard": "hpCk7W_taskCard",
38226
- "researchSources": "hpCk7W_researchSources",
38227
- "dagOverview": "hpCk7W_dagOverview",
38228
- "bodyEditor": "hpCk7W_bodyEditor",
38229
- "relationD3Links": "hpCk7W_relationD3Links",
38230
- "searchResultPath": "hpCk7W_searchResultPath",
38231
- "previewPane": "hpCk7W_previewPane",
38296
+ "fieldKey": "hpCk7W_fieldKey",
38297
+ "modelActions": "hpCk7W_modelActions",
38232
38298
  "libraryRoot": "hpCk7W_libraryRoot",
38233
- "sidebarFooter": "hpCk7W_sidebarFooter",
38234
- "sidebarList": "hpCk7W_sidebarList",
38235
- "createPanel": "hpCk7W_createPanel",
38236
- "relationNote": "hpCk7W_relationNote",
38299
+ "graphColumnHeader": "hpCk7W_graphColumnHeader",
38237
38300
  "editorActions": "hpCk7W_editorActions",
38238
- "dagObjectList": "hpCk7W_dagObjectList",
38239
- "previewLine": "hpCk7W_previewLine",
38240
- "overlayMark": "hpCk7W_overlayMark",
38241
- "taskIssues": "hpCk7W_taskIssues",
38242
- "graphFilterRow": "hpCk7W_graphFilterRow",
38243
- "benchmarkMetrics": "hpCk7W_benchmarkMetrics",
38244
- "editorLabel": "hpCk7W_editorLabel",
38245
- "modelTestRow": "hpCk7W_modelTestRow",
38246
- "derivedRow": "hpCk7W_derivedRow",
38247
- "taskSummaryItem": "hpCk7W_taskSummaryItem",
38248
- "modelLayout": "hpCk7W_modelLayout",
38249
- "derivedOrigin": "hpCk7W_derivedOrigin",
38250
- "conflictNotice": "hpCk7W_conflictNotice",
38251
- "notice": "hpCk7W_notice",
38252
- "assetMeta": "hpCk7W_assetMeta",
38253
- "detailBody": "hpCk7W_detailBody",
38254
- "relationshipSvg": "hpCk7W_relationshipSvg",
38255
- "kindFilterRow": "hpCk7W_kindFilterRow",
38256
- "launchPanel": "hpCk7W_launchPanel",
38257
- "benchmarkRuns": "hpCk7W_benchmarkRuns",
38258
- "previewHit": "hpCk7W_previewHit",
38259
- "fieldRow": "hpCk7W_fieldRow",
38260
- "edgeLabel": "hpCk7W_edgeLabel",
38261
- "benchmarkTable": "hpCk7W_benchmarkTable",
38262
- "taskCardActions": "hpCk7W_taskCardActions",
38263
- "derivedNote": "hpCk7W_derivedNote",
38264
- "taskEvents": "hpCk7W_taskEvents",
38265
- "taskIssueRow": "hpCk7W_taskIssueRow",
38301
+ "nodeSummary": "hpCk7W_nodeSummary",
38302
+ "titleInput": "hpCk7W_titleInput",
38303
+ "dagNode": "hpCk7W_dagNode",
38304
+ "derivedTitle": "hpCk7W_derivedTitle",
38305
+ "mainPane": "hpCk7W_mainPane",
38266
38306
  "benchmarkProvenance": "hpCk7W_benchmarkProvenance",
38267
- "taskSummaryBar": "hpCk7W_taskSummaryBar",
38268
- "researchReferenceOnly": "hpCk7W_researchReferenceOnly",
38269
- "detailTitle": "hpCk7W_detailTitle",
38307
+ "dagObjectItem": "hpCk7W_dagObjectItem",
38308
+ "relationshipCanvas": "hpCk7W_relationshipCanvas",
38309
+ "modelEditor": "hpCk7W_modelEditor",
38310
+ "graphCanvas": "hpCk7W_graphCanvas",
38311
+ "taskPhase": "hpCk7W_taskPhase",
38312
+ "taskCardHeader": "hpCk7W_taskCardHeader",
38313
+ "bodyEditor": "hpCk7W_bodyEditor",
38314
+ "textarea": "hpCk7W_textarea",
38315
+ "researchProvenance": "hpCk7W_researchProvenance",
38316
+ "actionButton": "hpCk7W_actionButton",
38317
+ "errorText": "hpCk7W_errorText",
38318
+ "searchInput": "hpCk7W_searchInput",
38270
38319
  "modelImpact": "hpCk7W_modelImpact",
38271
- "benchmarkResults": "hpCk7W_benchmarkResults",
38272
- "benchmarkRunGroupHeader": "hpCk7W_benchmarkRunGroupHeader",
38273
- "taskIssueSeverity": "hpCk7W_taskIssueSeverity",
38274
- "taskResult": "hpCk7W_taskResult",
38275
- "button": "hpCk7W_button",
38276
- "benchmarkOutputList": "hpCk7W_benchmarkOutputList",
38277
- "benchmarkUsage": "hpCk7W_benchmarkUsage",
38278
- "relationshipStats": "hpCk7W_relationshipStats",
38279
- "modelDependencies": "hpCk7W_modelDependencies",
38280
- "assetRow": "hpCk7W_assetRow",
38281
- "fieldKey": "hpCk7W_fieldKey",
38282
- "modelRoutes": "hpCk7W_modelRoutes",
38283
- "researchWorkspace": "hpCk7W_researchWorkspace",
38284
- "truncatedNote": "hpCk7W_truncatedNote",
38285
- "taskDetailError": "hpCk7W_taskDetailError",
38286
- "tree": "hpCk7W_tree",
38287
- "summaryEditor": "hpCk7W_summaryEditor",
38288
- "iconButton": "hpCk7W_iconButton",
38289
- "dagDetailRow": "hpCk7W_dagDetailRow",
38290
- "taskList": "hpCk7W_taskList",
38320
+ "resultLink": "hpCk7W_resultLink",
38321
+ "modelCheckbox": "hpCk7W_modelCheckbox",
38291
38322
  "taskError": "hpCk7W_taskError",
38292
- "researchFilters": "hpCk7W_researchFilters",
38293
- "modelActions": "hpCk7W_modelActions",
38294
- "benchmarkError": "hpCk7W_benchmarkError",
38295
- "countChip": "hpCk7W_countChip",
38296
- "benchmarkStatus": "hpCk7W_benchmarkStatus",
38297
- "inlineRename": "hpCk7W_inlineRename",
38323
+ "vditorFrame": "hpCk7W_vditorFrame",
38324
+ "relationEditor": "hpCk7W_relationEditor",
38298
38325
  "researchFailure": "hpCk7W_researchFailure",
38299
- "dagStructured": "hpCk7W_dagStructured",
38300
- "foreshadowNode": "hpCk7W_foreshadowNode",
38301
- "dagCanvas": "hpCk7W_dagCanvas",
38302
- "taskSummary": "hpCk7W_taskSummary",
38326
+ "detailHeader": "hpCk7W_detailHeader",
38327
+ "truthSection": "hpCk7W_truthSection",
38328
+ "workflowBlock": "hpCk7W_workflowBlock",
38329
+ "dagObjectList": "hpCk7W_dagObjectList",
38330
+ "relationChip": "hpCk7W_relationChip",
38331
+ "fieldList": "hpCk7W_fieldList",
38332
+ "taskIssueText": "hpCk7W_taskIssueText",
38333
+ "modelRouteRow": "hpCk7W_modelRouteRow",
38334
+ "relationDimmed": "hpCk7W_relationDimmed",
38335
+ "benchmarkSummary": "hpCk7W_benchmarkSummary",
38336
+ "taskFailure": "hpCk7W_taskFailure",
38303
38337
  "modelHint": "hpCk7W_modelHint",
38304
- "assetAliases": "hpCk7W_assetAliases",
38305
- "searchMark": "hpCk7W_searchMark",
38306
- "taskEvent": "hpCk7W_taskEvent",
38307
- "taskCardMain": "hpCk7W_taskCardMain",
38308
- "inlineActions": "hpCk7W_inlineActions",
38309
- "vditorHost": "hpCk7W_vditorHost",
38338
+ "researchReferenceOnly": "hpCk7W_researchReferenceOnly",
38339
+ "modelListItem": "hpCk7W_modelListItem",
38340
+ "modelTabs": "hpCk7W_modelTabs",
38341
+ "tree": "hpCk7W_tree",
38342
+ "benchmarkSection": "hpCk7W_benchmarkSection",
38343
+ "taskFields": "hpCk7W_taskFields",
38344
+ "dagNodeContent": "hpCk7W_dagNodeContent",
38345
+ "dagStructuredRow": "hpCk7W_dagStructuredRow",
38346
+ "researchSources": "hpCk7W_researchSources",
38347
+ "treeRow": "hpCk7W_treeRow",
38348
+ "searchChangePlan": "hpCk7W_searchChangePlan",
38349
+ "modelRoutes": "hpCk7W_modelRoutes",
38350
+ "taskReviewMeta": "hpCk7W_taskReviewMeta",
38351
+ "modelTestRow": "hpCk7W_modelTestRow",
38352
+ "modelRouteMeta": "hpCk7W_modelRouteMeta",
38310
38353
  "modelEmpty": "hpCk7W_modelEmpty",
38311
- "vditorFrame": "hpCk7W_vditorFrame",
38312
- "dagRoot": "hpCk7W_dagRoot",
38313
- "validationBlock": "hpCk7W_validationBlock",
38314
- "sidebarEmpty": "hpCk7W_sidebarEmpty",
38315
- "previewHead": "hpCk7W_previewHead",
38354
+ "dagPrimitiveList": "hpCk7W_dagPrimitiveList",
38355
+ "statusBadge": "hpCk7W_statusBadge",
38356
+ "input": "hpCk7W_input",
38357
+ "searchResultHeading": "hpCk7W_searchResultHeading",
38358
+ "relationD3Nodes": "hpCk7W_relationD3Nodes",
38359
+ "button": "hpCk7W_button",
38360
+ "sidebarList": "hpCk7W_sidebarList",
38361
+ "vditorHost": "hpCk7W_vditorHost",
38316
38362
  "benchmarkLegacy": "hpCk7W_benchmarkLegacy",
38317
- "bodyTextarea": "hpCk7W_bodyTextarea",
38363
+ "modelActiveStatus": "hpCk7W_modelActiveStatus",
38364
+ "detailTitle": "hpCk7W_detailTitle",
38365
+ "conflictNotice": "hpCk7W_conflictNotice",
38366
+ "segmentButton": "hpCk7W_segmentButton",
38367
+ "modelUnsaved": "hpCk7W_modelUnsaved",
38368
+ "benchmarkControls": "hpCk7W_benchmarkControls",
38369
+ "countChip": "hpCk7W_countChip",
38370
+ "dagDetailRow": "hpCk7W_dagDetailRow",
38371
+ "groupHeader": "hpCk7W_groupHeader",
38372
+ "previewPane": "hpCk7W_previewPane",
38373
+ "edge": "hpCk7W_edge",
38374
+ "dagRoot": "hpCk7W_dagRoot",
38318
38375
  "taskStatus": "hpCk7W_taskStatus",
38319
- "taskIssuesSummary": "hpCk7W_taskIssuesSummary",
38376
+ "nodeTitle": "hpCk7W_nodeTitle",
38377
+ "dagOverview": "hpCk7W_dagOverview",
38320
38378
  "searchResultActive": "hpCk7W_searchResultActive",
38321
- "modelChip": "hpCk7W_modelChip",
38322
- "modelActiveStatus": "hpCk7W_modelActiveStatus",
38379
+ "taskTimeline": "hpCk7W_taskTimeline",
38380
+ "researchWorkspace": "hpCk7W_researchWorkspace",
38381
+ "treeChildren": "hpCk7W_treeChildren",
38382
+ "relationshipCanvasHeader": "hpCk7W_relationshipCanvasHeader",
38323
38383
  "benchmarkSplit": "hpCk7W_benchmarkSplit",
38324
- "taskControls": "hpCk7W_taskControls",
38325
- "taskCardTitle": "hpCk7W_taskCardTitle",
38326
- "detailSummary": "hpCk7W_detailSummary",
38327
- "nodeTitle": "hpCk7W_nodeTitle",
38328
- "taskActions": "hpCk7W_taskActions",
38329
- "graphNodeMeta": "hpCk7W_graphNodeMeta",
38330
- "chevronPlaceholder": "hpCk7W_chevronPlaceholder",
38331
- "titleInput": "hpCk7W_titleInput",
38332
- "relationEditor": "hpCk7W_relationEditor",
38333
- "editor": "hpCk7W_editor",
38334
- "detailHeader": "hpCk7W_detailHeader",
38335
38384
  "dagDetail": "hpCk7W_dagDetail",
38336
- "edge": "hpCk7W_edge",
38337
- "profileChoice": "hpCk7W_profileChoice",
38385
+ "primaryButton": "hpCk7W_primaryButton",
38386
+ "benchmarkUsage": "hpCk7W_benchmarkUsage",
38387
+ "searchResultHead": "hpCk7W_searchResultHead",
38388
+ "taskEvents": "hpCk7W_taskEvents",
38389
+ "vditorOverlay": "hpCk7W_vditorOverlay",
38390
+ "researchSourceList": "hpCk7W_researchSourceList",
38391
+ "relationFlowNode": "hpCk7W_relationFlowNode",
38392
+ "searchMark": "hpCk7W_searchMark",
38393
+ "searchSnippet": "hpCk7W_searchSnippet",
38394
+ "benchmarkMetrics": "hpCk7W_benchmarkMetrics",
38395
+ "taskDetail": "hpCk7W_taskDetail",
38396
+ "summaryEditor": "hpCk7W_summaryEditor",
38397
+ "relationD3Label": "hpCk7W_relationD3Label",
38398
+ "taskIssueSeverity": "hpCk7W_taskIssueSeverity",
38399
+ "sidebarFooter": "hpCk7W_sidebarFooter",
38400
+ "taskEvent": "hpCk7W_taskEvent",
38401
+ "modelLayout": "hpCk7W_modelLayout",
38402
+ "benchmarkOutputList": "hpCk7W_benchmarkOutputList",
38403
+ "previewHead": "hpCk7W_previewHead",
38404
+ "modelChip": "hpCk7W_modelChip",
38405
+ "relationRow": "hpCk7W_relationRow",
38406
+ "assetAliases": "hpCk7W_assetAliases",
38407
+ "taskRow": "hpCk7W_taskRow",
38408
+ "taskProgressLine": "hpCk7W_taskProgressLine",
38409
+ "root": "hpCk7W_root",
38410
+ "inlineRename": "hpCk7W_inlineRename",
38338
38411
  "benchmarkInputs": "hpCk7W_benchmarkInputs",
38339
- "scoreChip": "hpCk7W_scoreChip",
38412
+ "mdInline": "hpCk7W_mdInline",
38413
+ "taskSummaryBar": "hpCk7W_taskSummaryBar",
38414
+ "derivedOrigin": "hpCk7W_derivedOrigin",
38415
+ "overlayMark": "hpCk7W_overlayMark",
38416
+ "inlineInput": "hpCk7W_inlineInput",
38340
38417
  "researchMetrics": "hpCk7W_researchMetrics",
38341
- "assetRowName": "hpCk7W_assetRowName",
38342
- "detailTitleRow": "hpCk7W_detailTitleRow",
38343
- "fieldList": "hpCk7W_fieldList",
38418
+ "assetRow": "hpCk7W_assetRow",
38419
+ "detailNotice": "hpCk7W_detailNotice",
38420
+ "benchmarkSources": "hpCk7W_benchmarkSources",
38421
+ "benchmarkOutput": "hpCk7W_benchmarkOutput",
38422
+ "benchmarkRuns": "hpCk7W_benchmarkRuns",
38423
+ "taskTime": "hpCk7W_taskTime",
38424
+ "taskTimelineStep": "hpCk7W_taskTimelineStep",
38425
+ "previewHit": "hpCk7W_previewHit",
38426
+ "dagStructured": "hpCk7W_dagStructured",
38427
+ "summaryTextarea": "hpCk7W_summaryTextarea",
38344
38428
  "groupChevron": "hpCk7W_groupChevron",
38345
- "relationFlowNodeShell": "hpCk7W_relationFlowNodeShell",
38346
- "paneHeading": "hpCk7W_paneHeading",
38347
- "taskSearch": "hpCk7W_taskSearch",
38348
- "inlineInput": "hpCk7W_inlineInput",
38349
- "detail": "hpCk7W_detail",
38429
+ "truncatedNote": "hpCk7W_truncatedNote",
38430
+ "derivedArrow": "hpCk7W_derivedArrow",
38350
38431
  "workflowStages": "hpCk7W_workflowStages",
38351
- "modelTabs": "hpCk7W_modelTabs",
38352
- "chip": "hpCk7W_chip",
38353
- "sidebarSegments": "hpCk7W_sidebarSegments",
38354
- "validationList": "hpCk7W_validationList",
38355
- "searchResultHeading": "hpCk7W_searchResultHeading",
38356
- "benchmarkControls": "hpCk7W_benchmarkControls",
38357
- "benchmarkPhases": "hpCk7W_benchmarkPhases",
38358
- "benchmarkCost": "hpCk7W_benchmarkCost",
38359
- "modelRouteMeta": "hpCk7W_modelRouteMeta",
38360
- "edgeArrow": "hpCk7W_edgeArrow",
38432
+ "taskDetailSummary": "hpCk7W_taskDetailSummary",
38433
+ "searchLocator": "hpCk7W_searchLocator",
38434
+ "assetRowMeta": "hpCk7W_assetRowMeta",
38435
+ "detailHeading": "hpCk7W_detailHeading",
38436
+ "taskCard": "hpCk7W_taskCard",
38361
38437
  "referenceUnits": "hpCk7W_referenceUnits",
38438
+ "modelChips": "hpCk7W_modelChips",
38439
+ "chevronPlaceholder": "hpCk7W_chevronPlaceholder",
38440
+ "modelGroup": "hpCk7W_modelGroup",
38441
+ "listBlockItems": "hpCk7W_listBlockItems",
38442
+ "bodyTextareaDirty": "hpCk7W_bodyTextareaDirty",
38443
+ "benchmarkTable": "hpCk7W_benchmarkTable",
38444
+ "detail": "hpCk7W_detail",
38445
+ "dagCanvas": "hpCk7W_dagCanvas",
38446
+ "detailToolbar": "hpCk7W_detailToolbar",
38447
+ "graphFilterRow": "hpCk7W_graphFilterRow",
38448
+ "benchmarkRunGroupHeader": "hpCk7W_benchmarkRunGroupHeader",
38449
+ "listBlock": "hpCk7W_listBlock",
38450
+ "assetRowName": "hpCk7W_assetRowName",
38451
+ "benchmarkResults": "hpCk7W_benchmarkResults",
38452
+ "benchmarkRun": "hpCk7W_benchmarkRun",
38453
+ "relationshipWorkspace": "hpCk7W_relationshipWorkspace",
38454
+ "derivedName": "hpCk7W_derivedName",
38455
+ "relationD3Links": "hpCk7W_relationD3Links",
38456
+ "taskResult": "hpCk7W_taskResult",
38457
+ "nodeActions": "hpCk7W_nodeActions",
38458
+ "editor": "hpCk7W_editor",
38459
+ "graphNodeTitle": "hpCk7W_graphNodeTitle",
38460
+ "fieldRow": "hpCk7W_fieldRow",
38461
+ "scopeSelect": "hpCk7W_scopeSelect",
38462
+ "taskDetailError": "hpCk7W_taskDetailError",
38362
38463
  "chevronButton": "hpCk7W_chevronButton",
38464
+ "searchResultTitle": "hpCk7W_searchResultTitle",
38465
+ "dagWorkspace": "hpCk7W_dagWorkspace",
38466
+ "previewLine": "hpCk7W_previewLine",
38467
+ "paneHeading": "hpCk7W_paneHeading",
38468
+ "treeItem": "hpCk7W_treeItem",
38469
+ "buttonDanger": "hpCk7W_buttonDanger",
38470
+ "taskIssueDim": "hpCk7W_taskIssueDim",
38471
+ "dagDomainRow": "hpCk7W_dagDomainRow",
38472
+ "detailBody": "hpCk7W_detailBody",
38473
+ "searchChangeDiff": "hpCk7W_searchChangeDiff",
38474
+ "sidebarSegments": "hpCk7W_sidebarSegments",
38475
+ "detailTitleRow": "hpCk7W_detailTitleRow",
38476
+ "validationList": "hpCk7W_validationList",
38363
38477
  "searchResult": "hpCk7W_searchResult",
38364
- "statusBadge": "hpCk7W_statusBadge",
38365
- "segmentButton": "hpCk7W_segmentButton",
38478
+ "taskSearch": "hpCk7W_taskSearch",
38366
38479
  "fieldValue": "hpCk7W_fieldValue",
38480
+ "kindFilterRow": "hpCk7W_kindFilterRow",
38481
+ "taskIssuePriority": "hpCk7W_taskIssuePriority",
38367
38482
  "tag": "hpCk7W_tag",
38368
- "listBlockLabel": "hpCk7W_listBlockLabel",
38369
- "primaryButton": "hpCk7W_primaryButton",
38370
- "graphNodeTitle": "hpCk7W_graphNodeTitle",
38371
- "modelChips": "hpCk7W_modelChips",
38372
- "benchmarkSummary": "hpCk7W_benchmarkSummary",
38373
- "scopeSelect": "hpCk7W_scopeSelect",
38374
- "relationshipCanvasHeader": "hpCk7W_relationshipCanvasHeader",
38375
- "treeRow": "hpCk7W_treeRow",
38376
- "modelRouteRow": "hpCk7W_modelRouteRow",
38377
- "linkButton": "hpCk7W_linkButton"
38483
+ "derivedRelations": "hpCk7W_derivedRelations",
38484
+ "editorRow": "hpCk7W_editorRow",
38485
+ "relationChips": "hpCk7W_relationChips",
38486
+ "edgeLabel": "hpCk7W_edgeLabel",
38487
+ "taskList": "hpCk7W_taskList",
38488
+ "taskIssuesSummary": "hpCk7W_taskIssuesSummary",
38489
+ "relationshipStats": "hpCk7W_relationshipStats",
38490
+ "body": "hpCk7W_body",
38491
+ "sidebarEmpty": "hpCk7W_sidebarEmpty",
38492
+ "taskControls": "hpCk7W_taskControls",
38493
+ "dagRevisionAction": "hpCk7W_dagRevisionAction",
38494
+ "taskIssues": "hpCk7W_taskIssues",
38495
+ "relationFlowNodeShell": "hpCk7W_relationFlowNodeShell",
38496
+ "taskChapter": "hpCk7W_taskChapter"
38378
38497
  };
38379
38498
  //#endregion
38380
38499
  //#region src/client/VditorBody.tsx
@@ -38473,18 +38592,23 @@ window.__ModuleLoader__.load({
38473
38592
  }
38474
38593
  }
38475
38594
  /** One Vditor IR instance bound to the shell theme; destroyed on unmount. */
38476
- function VditorBody({ initial, onChange, onSelectionChange, onReady = () => {}, onFailed, disabled, flushOnLeave = false, annotations = [], onInsertMarker, onEditorApi }) {
38595
+ function VditorBody({ initial, onChange, onInputStateChange, onSelectionChange, onReady = () => {}, onFailed, disabled, flushOnLeave = false, annotations = [], annotationSource = initial, onInsertMarker, onEditorApi }) {
38477
38596
  const hostRef = (0, react.useRef)(null);
38478
38597
  const overlayRef = (0, react.useRef)(null);
38479
38598
  const instanceRef = (0, react.useRef)(null);
38599
+ const serializationRef = (0, react.useRef)(void 0);
38480
38600
  const annotationsRef = (0, react.useRef)(annotations);
38481
38601
  annotationsRef.current = annotations;
38602
+ const annotationSourceRef = (0, react.useRef)(annotationSource);
38603
+ annotationSourceRef.current = annotationSource;
38482
38604
  const onInsertMarkerRef = (0, react.useRef)(onInsertMarker);
38483
38605
  onInsertMarkerRef.current = onInsertMarker;
38484
38606
  const onEditorApiRef = (0, react.useRef)(onEditorApi);
38485
38607
  onEditorApiRef.current = onEditorApi;
38486
38608
  const onChangeRef = (0, react.useRef)(onChange);
38487
38609
  onChangeRef.current = onChange;
38610
+ const onInputStateRef = (0, react.useRef)(onInputStateChange);
38611
+ onInputStateRef.current = onInputStateChange;
38488
38612
  const onFailedRef = (0, react.useRef)(onFailed);
38489
38613
  onFailedRef.current = onFailed;
38490
38614
  const onReadyRef = (0, react.useRef)(onReady);
@@ -38507,14 +38631,24 @@ window.__ModuleLoader__.load({
38507
38631
  document.addEventListener("mousedown", rememberPointer, true);
38508
38632
  const host = hostRef.current;
38509
38633
  let inputObserved = false;
38634
+ let pendingInput = false;
38510
38635
  let lastValue = initial;
38511
38636
  const emitChange = (value) => {
38512
- if (disposed || value === lastValue) return;
38637
+ if (disposed) return;
38638
+ if (pendingInput) {
38639
+ pendingInput = false;
38640
+ onInputStateRef.current?.(false);
38641
+ }
38642
+ if (value === lastValue) return;
38513
38643
  lastValue = value;
38514
38644
  onChangeRef.current(value);
38515
38645
  };
38516
38646
  const rememberInput = () => {
38517
38647
  inputObserved = true;
38648
+ if (!pendingInput) {
38649
+ pendingInput = true;
38650
+ onInputStateRef.current?.(true);
38651
+ }
38518
38652
  };
38519
38653
  const flush = () => {
38520
38654
  const current = instanceRef.current;
@@ -38592,6 +38726,13 @@ window.__ModuleLoader__.load({
38592
38726
  }
38593
38727
  },
38594
38728
  after: () => {
38729
+ if (disposed) return;
38730
+ const value = instanceRef.current.getValue();
38731
+ serializationRef.current = inputObserved ? void 0 : {
38732
+ source: initial,
38733
+ value
38734
+ };
38735
+ refreshOverlay(value);
38595
38736
  onReadyRef.current();
38596
38737
  },
38597
38738
  input: (value) => {
@@ -38606,9 +38747,12 @@ window.__ModuleLoader__.load({
38606
38747
  const overlay = overlayRef.current;
38607
38748
  const editorHost = hostRef.current;
38608
38749
  if (overlay === null || editorHost === null) return;
38609
- paintOverlay(editorHost, overlay, overlayBands(value, annotationsRef.current, parseMarkers(value)), document.body.hasAttribute("data-ds-dark-theme"));
38750
+ paintOverlay(editorHost, overlay, overlayBands(value, annotationsRef.current, parseMarkers(value), annotationSourceRef.current, serializationRef.current), document.body.hasAttribute("data-ds-dark-theme"));
38610
38751
  };
38611
38752
  onEditorApiRef.current?.({
38753
+ getValue: () => instanceRef.current?.getValue() ?? "",
38754
+ getSerialization: () => serializationRef.current,
38755
+ flush,
38612
38756
  insertAtCaret: (markdown) => {
38613
38757
  const current = instanceRef.current;
38614
38758
  if (current === null || typeof current.insertValue !== "function") return;
@@ -38624,7 +38768,7 @@ window.__ModuleLoader__.load({
38624
38768
  const value = current.getValue();
38625
38769
  const occurrence = countOccurrences(value.slice(0, Math.max(0, start)), quote);
38626
38770
  if (revealNeedle(editorHost.querySelector(".vditor-ir") ?? editorHost, quote, occurrence) === null) return false;
38627
- onSelectionChangeRef.current?.(locateSelectedMarkdown(value, quote, occurrence));
38771
+ onSelectionChangeRef.current?.(locateSelectedMarkdown(value, quote, occurrence, serializationRef.current));
38628
38772
  refreshOverlay(value);
38629
38773
  return true;
38630
38774
  }
@@ -38654,7 +38798,7 @@ window.__ModuleLoader__.load({
38654
38798
  return;
38655
38799
  }
38656
38800
  const selected = (typeof current.getSelection === "function" ? current.getSelection() : native?.toString()) ?? "";
38657
- notify(locateSelectedMarkdown(current.getValue(), selected, occurrenceBeforeCaret(editorHost, selected)));
38801
+ notify(locateSelectedMarkdown(current.getValue(), selected, occurrenceBeforeCaret(editorHost, selected), serializationRef.current));
38658
38802
  };
38659
38803
  hostRef.current.addEventListener("mouseup", emitSelection);
38660
38804
  hostRef.current.addEventListener("keyup", emitSelection);
@@ -38697,9 +38841,9 @@ window.__ModuleLoader__.load({
38697
38841
  const instance = instanceRef.current;
38698
38842
  if (host === null || overlay === null || instance === null) return;
38699
38843
  try {
38700
- paintOverlay(host, overlay, overlayBands(instance.getValue(), annotations, parseMarkers(instance.getValue())), document.body.hasAttribute("data-ds-dark-theme"));
38844
+ paintOverlay(host, overlay, overlayBands(instance.getValue(), annotations, parseMarkers(instance.getValue()), annotationSource, serializationRef.current), document.body.hasAttribute("data-ds-dark-theme"));
38701
38845
  } catch {}
38702
- }, [annotations]);
38846
+ }, [annotations, annotationSource]);
38703
38847
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
38704
38848
  className: views_module_css_default.vditorFrame,
38705
38849
  "aria-disabled": disabled,
@@ -39329,183 +39473,183 @@ window.__ModuleLoader__.load({
39329
39473
  document.head.appendChild(tag);
39330
39474
  }
39331
39475
  var Workbench_module_css_default = {
39332
- "drawerClose": "Wik-wW_drawerClose",
39476
+ "headerIconButton": "Wik-wW_headerIconButton",
39477
+ "reviewStale": "Wik-wW_reviewStale",
39478
+ "centerNotice": "Wik-wW_centerNotice",
39333
39479
  "workspaceNav": "Wik-wW_workspaceNav",
39334
- "chapterMove": "Wik-wW_chapterMove",
39335
- "documentSkeleton": "Wik-wW_documentSkeleton",
39336
- "iconButton": "Wik-wW_iconButton",
39337
- "exportIssues": "Wik-wW_exportIssues",
39338
- "manuscriptFallback": "Wik-wW_manuscriptFallback",
39339
- "tabletInspectorButton": "Wik-wW_tabletInspectorButton",
39340
- "historySection": "Wik-wW_historySection",
39341
- "foreshadowActions": "Wik-wW_foreshadowActions",
39342
- "exportPreflight": "Wik-wW_exportPreflight",
39343
- "archiveListItem": "Wik-wW_archiveListItem",
39344
- "mentionCard": "Wik-wW_mentionCard",
39345
- "chapterButton": "Wik-wW_chapterButton",
39346
- "muted": "Wik-wW_muted",
39347
- "turnValuePair": "Wik-wW_turnValuePair",
39348
- "foreshadowBuckets": "Wik-wW_foreshadowBuckets",
39349
- "restorePreview": "Wik-wW_restorePreview",
39350
- "connectionDot": "Wik-wW_connectionDot",
39351
- "editorPane": "Wik-wW_editorPane",
39352
- "transferPanel": "Wik-wW_transferPanel",
39353
- "turnSummary": "Wik-wW_turnSummary",
39354
- "headerUtilities": "Wik-wW_headerUtilities",
39355
- "chapterList": "Wik-wW_chapterList",
39356
- "issue": "Wik-wW_issue",
39357
- "colorDot": "Wik-wW_colorDot",
39358
- "inspector": "Wik-wW_inspector",
39359
- "revisionPane": "Wik-wW_revisionPane",
39360
- "editorHeader": "Wik-wW_editorHeader",
39361
- "mentionHits": "Wik-wW_mentionHits",
39362
39480
  "turnTraceLink": "Wik-wW_turnTraceLink",
39363
- "proposalProvenance": "Wik-wW_proposalProvenance",
39364
- "annotateForm": "Wik-wW_annotateForm",
39365
- "foreshadowAction": "Wik-wW_foreshadowAction",
39366
- "foreshadowDetail": "Wik-wW_foreshadowDetail",
39367
- "annotationQuote": "Wik-wW_annotationQuote",
39368
- "dangerAction": "Wik-wW_dangerAction",
39369
- "mentionCandidates": "Wik-wW_mentionCandidates",
39370
- "operationSection": "Wik-wW_operationSection",
39371
- "exportState": "Wik-wW_exportState",
39372
- "transferColumns": "Wik-wW_transferColumns",
39373
- "contextChipField": "Wik-wW_contextChipField",
39374
- "chapterTitle": "Wik-wW_chapterTitle",
39481
+ "markerFields": "Wik-wW_markerFields",
39482
+ "contextItem": "Wik-wW_contextItem",
39483
+ "contextBudgets": "Wik-wW_contextBudgets",
39484
+ "contextChipError": "Wik-wW_contextChipError",
39485
+ "contextManifest": "Wik-wW_contextManifest",
39486
+ "writingProgress": "Wik-wW_writingProgress",
39487
+ "acceptanceDetails": "Wik-wW_acceptanceDetails",
39488
+ "inspector": "Wik-wW_inspector",
39489
+ "acceptanceHeader": "Wik-wW_acceptanceHeader",
39490
+ "diffList": "Wik-wW_diffList",
39491
+ "connectionDot": "Wik-wW_connectionDot",
39492
+ "transferFailure": "Wik-wW_transferFailure",
39375
39493
  "chapterEmpty": "Wik-wW_chapterEmpty",
39376
- "chapterIndex": "Wik-wW_chapterIndex",
39377
- "inspectorNotice": "Wik-wW_inspectorNotice",
39378
- "reviewSummary": "Wik-wW_reviewSummary",
39379
- "exportControls": "Wik-wW_exportControls",
39380
- "archiveCreate": "Wik-wW_archiveCreate",
39381
- "contextChipBadge": "Wik-wW_contextChipBadge",
39382
39494
  "annotationHits": "Wik-wW_annotationHits",
39383
- "activityList": "Wik-wW_activityList",
39384
- "historyHeader": "Wik-wW_historyHeader",
39385
- "reviewClosure": "Wik-wW_reviewClosure",
39386
- "studio": "Wik-wW_studio",
39387
- "exportWorkspace": "Wik-wW_exportWorkspace",
39388
- "turnRevisionPair": "Wik-wW_turnRevisionPair",
39389
- "acceptanceHeader": "Wik-wW_acceptanceHeader",
39390
- "acceptanceDetails": "Wik-wW_acceptanceDetails",
39391
- "contextStale": "Wik-wW_contextStale",
39392
- "contextBudgets": "Wik-wW_contextBudgets",
39393
- "exportPreflightHeader": "Wik-wW_exportPreflightHeader",
39394
- "exportChapterList": "Wik-wW_exportChapterList",
39495
+ "operationSection": "Wik-wW_operationSection",
39496
+ "chapterMeta": "Wik-wW_chapterMeta",
39497
+ "commandButton": "Wik-wW_commandButton",
39498
+ "editorIdentity": "Wik-wW_editorIdentity",
39499
+ "issue": "Wik-wW_issue",
39500
+ "turnEntityChange": "Wik-wW_turnEntityChange",
39501
+ "inspectorTabs": "Wik-wW_inspectorTabs",
39502
+ "visuallyHidden": "Wik-wW_visuallyHidden",
39503
+ "importStructure": "Wik-wW_importStructure",
39504
+ "contextSectionBody": "Wik-wW_contextSectionBody",
39505
+ "dangerAction": "Wik-wW_dangerAction",
39506
+ "archivePlan": "Wik-wW_archivePlan",
39507
+ "issueList": "Wik-wW_issueList",
39508
+ "editorActions": "Wik-wW_editorActions",
39395
39509
  "inspectorBody": "Wik-wW_inspectorBody",
39396
- "activityProgress": "Wik-wW_activityProgress",
39510
+ "transferDetail": "Wik-wW_transferDetail",
39511
+ "mentionCard": "Wik-wW_mentionCard",
39512
+ "versionList": "Wik-wW_versionList",
39513
+ "foreshadowAction": "Wik-wW_foreshadowAction",
39514
+ "colorDots": "Wik-wW_colorDots",
39515
+ "exportPreflightHeader": "Wik-wW_exportPreflightHeader",
39516
+ "headerStatus": "Wik-wW_headerStatus",
39517
+ "contextChip": "Wik-wW_contextChip",
39518
+ "contextChipBadge": "Wik-wW_contextChipBadge",
39519
+ "annotationList": "Wik-wW_annotationList",
39520
+ "contextSections": "Wik-wW_contextSections",
39521
+ "contextExceptions": "Wik-wW_contextExceptions",
39522
+ "turnPlanActions": "Wik-wW_turnPlanActions",
39397
39523
  "workspaceRoot": "Wik-wW_workspaceRoot",
39398
- "proposalHunks": "Wik-wW_proposalHunks",
39399
- "mobileBar": "Wik-wW_mobileBar",
39524
+ "mentionCandidates": "Wik-wW_mentionCandidates",
39525
+ "chapterList": "Wik-wW_chapterList",
39526
+ "draftStorageError": "Wik-wW_draftStorageError",
39527
+ "manuscriptFallback": "Wik-wW_manuscriptFallback",
39528
+ "turnSummary": "Wik-wW_turnSummary",
39400
39529
  "transferWorkspace": "Wik-wW_transferWorkspace",
39401
- "turnPlanNotice": "Wik-wW_turnPlanNotice",
39402
- "restoreWorkspace": "Wik-wW_restoreWorkspace",
39530
+ "drawerClose": "Wik-wW_drawerClose",
39531
+ "historyNotice": "Wik-wW_historyNotice",
39532
+ "readerError": "Wik-wW_readerError",
39533
+ "reviewSummary": "Wik-wW_reviewSummary",
39534
+ "recoveryActions": "Wik-wW_recoveryActions",
39535
+ "historySection": "Wik-wW_historySection",
39536
+ "versionCard": "Wik-wW_versionCard",
39537
+ "acceptanceError": "Wik-wW_acceptanceError",
39538
+ "acceptanceActions": "Wik-wW_acceptanceActions",
39403
39539
  "readerChapter": "Wik-wW_readerChapter",
39404
- "operationNote": "Wik-wW_operationNote",
39405
- "orderNotice": "Wik-wW_orderNotice",
39406
- "foreshadowBucket": "Wik-wW_foreshadowBucket",
39540
+ "turnValuePair": "Wik-wW_turnValuePair",
39541
+ "chapterButton": "Wik-wW_chapterButton",
39542
+ "exportWorkspace": "Wik-wW_exportWorkspace",
39543
+ "editorBoot": "Wik-wW_editorBoot",
39544
+ "recoveryBar": "Wik-wW_recoveryBar",
39545
+ "foreshadowActions": "Wik-wW_foreshadowActions",
39546
+ "proposalList": "Wik-wW_proposalList",
39547
+ "editorPane": "Wik-wW_editorPane",
39548
+ "iconButton": "Wik-wW_iconButton",
39549
+ "chapterMove": "Wik-wW_chapterMove",
39550
+ "reviewClosure": "Wik-wW_reviewClosure",
39551
+ "acceptanceCard": "Wik-wW_acceptanceCard",
39552
+ "historyHeader": "Wik-wW_historyHeader",
39553
+ "importPlan": "Wik-wW_importPlan",
39554
+ "chapterTitle": "Wik-wW_chapterTitle",
39555
+ "activityCard": "Wik-wW_activityCard",
39556
+ "restoreWorkspace": "Wik-wW_restoreWorkspace",
39407
39557
  "recoveryBody": "Wik-wW_recoveryBody",
39408
- "contextSources": "Wik-wW_contextSources",
39558
+ "transferColumns": "Wik-wW_transferColumns",
39559
+ "exportPreflight": "Wik-wW_exportPreflight",
39560
+ "annotationQuote": "Wik-wW_annotationQuote",
39561
+ "exportSummaryGrid": "Wik-wW_exportSummaryGrid",
39562
+ "studio": "Wik-wW_studio",
39563
+ "creationRoot": "Wik-wW_creationRoot",
39564
+ "turnEntityChanges": "Wik-wW_turnEntityChanges",
39565
+ "stageRail": "Wik-wW_stageRail",
39566
+ "chapterSearch": "Wik-wW_chapterSearch",
39567
+ "turnPlanNotice": "Wik-wW_turnPlanNotice",
39568
+ "chapterDrawerClose": "Wik-wW_chapterDrawerClose",
39569
+ "contextChipRoot": "Wik-wW_contextChipRoot",
39570
+ "diffBlock": "Wik-wW_diffBlock",
39409
39571
  "proposalTexts": "Wik-wW_proposalTexts",
39410
- "versionPreview": "Wik-wW_versionPreview",
39411
- "contextChip": "Wik-wW_contextChip",
39412
- "readerContent": "Wik-wW_readerContent",
39413
- "projectCurrent": "Wik-wW_projectCurrent",
39414
- "draftStorageError": "Wik-wW_draftStorageError",
39415
- "projectPath": "Wik-wW_projectPath",
39416
- "contextOverview": "Wik-wW_contextOverview",
39417
- "turnEntityChange": "Wik-wW_turnEntityChange",
39572
+ "exportPurpose": "Wik-wW_exportPurpose",
39418
39573
  "mobileTitle": "Wik-wW_mobileTitle",
39419
- "editorIdentity": "Wik-wW_editorIdentity",
39420
- "versionCard": "Wik-wW_versionCard",
39421
- "archivePlan": "Wik-wW_archivePlan",
39422
- "versionList": "Wik-wW_versionList",
39423
- "editorActions": "Wik-wW_editorActions",
39424
- "colorDots": "Wik-wW_colorDots",
39425
- "desktopPaneButton": "Wik-wW_desktopPaneButton",
39426
- "activityPane": "Wik-wW_activityPane",
39427
- "contextChipRoot": "Wik-wW_contextChipRoot",
39428
- "contextExceptions": "Wik-wW_contextExceptions",
39429
- "acceptanceMessage": "Wik-wW_acceptanceMessage",
39430
- "contextSectionBody": "Wik-wW_contextSectionBody",
39431
- "selectionPolish": "Wik-wW_selectionPolish",
39432
- "reviewRevisionActions": "Wik-wW_reviewRevisionActions",
39433
- "conflictBar": "Wik-wW_conflictBar",
39434
- "centerNotice": "Wik-wW_centerNotice",
39435
- "exportDetailSection": "Wik-wW_exportDetailSection",
39436
- "transferDetailHeader": "Wik-wW_transferDetailHeader",
39437
39574
  "headerMenu": "Wik-wW_headerMenu",
39438
- "exportSummaryGrid": "Wik-wW_exportSummaryGrid",
39439
- "annotationCard": "Wik-wW_annotationCard",
39440
- "acceptanceCard": "Wik-wW_acceptanceCard",
39441
- "proposalCard": "Wik-wW_proposalCard",
39442
- "writingProgress": "Wik-wW_writingProgress",
39443
- "diffBlock": "Wik-wW_diffBlock",
39444
- "readerHeader": "Wik-wW_readerHeader",
39445
- "scrim": "Wik-wW_scrim",
39446
- "contextSections": "Wik-wW_contextSections",
39447
- "contextSectionButton": "Wik-wW_contextSectionButton",
39448
- "acceptanceError": "Wik-wW_acceptanceError",
39575
+ "chapterText": "Wik-wW_chapterText",
39576
+ "contextRetrieval": "Wik-wW_contextRetrieval",
39577
+ "activityProgress": "Wik-wW_activityProgress",
39449
39578
  "inspectorHeader": "Wik-wW_inspectorHeader",
39450
- "contextItem": "Wik-wW_contextItem",
39579
+ "revisionPane": "Wik-wW_revisionPane",
39451
39580
  "inspectorSkeleton": "Wik-wW_inspectorSkeleton",
39452
- "continuousReader": "Wik-wW_continuousReader",
39453
- "externalLink": "Wik-wW_externalLink",
39454
- "annotationList": "Wik-wW_annotationList",
39455
- "saveState": "Wik-wW_saveState",
39456
- "chapterRail": "Wik-wW_chapterRail",
39457
- "chapterDrawerClose": "Wik-wW_chapterDrawerClose",
39458
- "contextManifest": "Wik-wW_contextManifest",
39459
- "importStructure": "Wik-wW_importStructure",
39460
- "chapterSearch": "Wik-wW_chapterSearch",
39581
+ "inspectorDrawerClose": "Wik-wW_inspectorDrawerClose",
39582
+ "versionPreview": "Wik-wW_versionPreview",
39583
+ "tabletInspectorButton": "Wik-wW_tabletInspectorButton",
39584
+ "projectSwitchRow": "Wik-wW_projectSwitchRow",
39461
39585
  "markerForm": "Wik-wW_markerForm",
39462
- "acceptanceActions": "Wik-wW_acceptanceActions",
39463
- "turnMutationItem": "Wik-wW_turnMutationItem",
39464
- "editorBoot": "Wik-wW_editorBoot",
39465
- "manuscriptEditor": "Wik-wW_manuscriptEditor",
39466
- "transferFailure": "Wik-wW_transferFailure",
39467
- "archiveSummary": "Wik-wW_archiveSummary",
39586
+ "exportControls": "Wik-wW_exportControls",
39587
+ "contextSectionButton": "Wik-wW_contextSectionButton",
39588
+ "orderNotice": "Wik-wW_orderNotice",
39589
+ "archiveListItem": "Wik-wW_archiveListItem",
39590
+ "activityList": "Wik-wW_activityList",
39591
+ "archiveCreate": "Wik-wW_archiveCreate",
39592
+ "annotateForm": "Wik-wW_annotateForm",
39593
+ "contextStale": "Wik-wW_contextStale",
39594
+ "annotationCard": "Wik-wW_annotationCard",
39595
+ "proposalHunks": "Wik-wW_proposalHunks",
39468
39596
  "contextFullText": "Wik-wW_contextFullText",
39469
- "contextChipError": "Wik-wW_contextChipError",
39470
- "annotationChip": "Wik-wW_annotationChip",
39471
- "headerStatus": "Wik-wW_headerStatus",
39472
- "contextChipHint": "Wik-wW_contextChipHint",
39473
- "projectSwitchRow": "Wik-wW_projectSwitchRow",
39474
- "visuallyHidden": "Wik-wW_visuallyHidden",
39475
- "commandButton": "Wik-wW_commandButton",
39476
- "contextSection": "Wik-wW_contextSection",
39597
+ "projectPath": "Wik-wW_projectPath",
39598
+ "colorDot": "Wik-wW_colorDot",
39599
+ "reviewRevisionActions": "Wik-wW_reviewRevisionActions",
39600
+ "transferList": "Wik-wW_transferList",
39601
+ "transferPanel": "Wik-wW_transferPanel",
39602
+ "externalLink": "Wik-wW_externalLink",
39603
+ "contextChipPopover": "Wik-wW_contextChipPopover",
39604
+ "contextSources": "Wik-wW_contextSources",
39605
+ "transferDetailHeader": "Wik-wW_transferDetailHeader",
39477
39606
  "transferActions": "Wik-wW_transferActions",
39607
+ "mobileBar": "Wik-wW_mobileBar",
39608
+ "activityPane": "Wik-wW_activityPane",
39609
+ "importPrepare": "Wik-wW_importPrepare",
39610
+ "operationNote": "Wik-wW_operationNote",
39611
+ "headerUtilities": "Wik-wW_headerUtilities",
39612
+ "contextChipField": "Wik-wW_contextChipField",
39613
+ "selectionPolish": "Wik-wW_selectionPolish",
39614
+ "foreshadowBuckets": "Wik-wW_foreshadowBuckets",
39615
+ "foreshadowBucket": "Wik-wW_foreshadowBucket",
39616
+ "proposalProvenance": "Wik-wW_proposalProvenance",
39617
+ "readerHeader": "Wik-wW_readerHeader",
39478
39618
  "chapterJump": "Wik-wW_chapterJump",
39479
- "turnEntityChanges": "Wik-wW_turnEntityChanges",
39480
- "readerError": "Wik-wW_readerError",
39481
- "recoveryActions": "Wik-wW_recoveryActions",
39482
- "inspectorTabs": "Wik-wW_inspectorTabs",
39483
- "exportPurpose": "Wik-wW_exportPurpose",
39619
+ "manuscriptEditor": "Wik-wW_manuscriptEditor",
39620
+ "turnMutationItem": "Wik-wW_turnMutationItem",
39621
+ "chapterIndex": "Wik-wW_chapterIndex",
39622
+ "readerContent": "Wik-wW_readerContent",
39623
+ "desktopPaneButton": "Wik-wW_desktopPaneButton",
39624
+ "foreshadowDetail": "Wik-wW_foreshadowDetail",
39625
+ "turnRevisionPair": "Wik-wW_turnRevisionPair",
39626
+ "exportIssues": "Wik-wW_exportIssues",
39627
+ "muted": "Wik-wW_muted",
39628
+ "chapterRail": "Wik-wW_chapterRail",
39629
+ "contextOverview": "Wik-wW_contextOverview",
39630
+ "restorePreview": "Wik-wW_restorePreview",
39631
+ "contextSection": "Wik-wW_contextSection",
39632
+ "exportChapterList": "Wik-wW_exportChapterList",
39633
+ "proposalCard": "Wik-wW_proposalCard",
39634
+ "documentSkeleton": "Wik-wW_documentSkeleton",
39635
+ "continuousReader": "Wik-wW_continuousReader",
39636
+ "inspectorNotice": "Wik-wW_inspectorNotice",
39637
+ "exportState": "Wik-wW_exportState",
39638
+ "chapterIdentity": "Wik-wW_chapterIdentity",
39639
+ "annotationChip": "Wik-wW_annotationChip",
39484
39640
  "transferWorkspaceHeader": "Wik-wW_transferWorkspaceHeader",
39485
- "transferList": "Wik-wW_transferList",
39486
- "headerIconButton": "Wik-wW_headerIconButton",
39487
- "importPrepare": "Wik-wW_importPrepare",
39488
- "transferDetail": "Wik-wW_transferDetail",
39489
- "proposalList": "Wik-wW_proposalList",
39490
- "chapterText": "Wik-wW_chapterText",
39491
- "importPlan": "Wik-wW_importPlan",
39492
- "paneHeading": "Wik-wW_paneHeading",
39493
- "contextChipPopover": "Wik-wW_contextChipPopover",
39494
- "contextRetrieval": "Wik-wW_contextRetrieval",
39495
- "turnPlanActions": "Wik-wW_turnPlanActions",
39496
- "issueList": "Wik-wW_issueList",
39497
- "recoveryBar": "Wik-wW_recoveryBar",
39498
- "inspectorDrawerClose": "Wik-wW_inspectorDrawerClose",
39641
+ "mentionHits": "Wik-wW_mentionHits",
39642
+ "archiveSummary": "Wik-wW_archiveSummary",
39499
39643
  "workspaceContent": "Wik-wW_workspaceContent",
39500
- "stageRail": "Wik-wW_stageRail",
39501
- "chapterMeta": "Wik-wW_chapterMeta",
39502
- "diffList": "Wik-wW_diffList",
39503
- "reviewStale": "Wik-wW_reviewStale",
39504
- "activityCard": "Wik-wW_activityCard",
39505
- "creationRoot": "Wik-wW_creationRoot",
39506
- "chapterIdentity": "Wik-wW_chapterIdentity",
39507
- "historyNotice": "Wik-wW_historyNotice",
39508
- "markerFields": "Wik-wW_markerFields"
39644
+ "scrim": "Wik-wW_scrim",
39645
+ "projectCurrent": "Wik-wW_projectCurrent",
39646
+ "exportDetailSection": "Wik-wW_exportDetailSection",
39647
+ "paneHeading": "Wik-wW_paneHeading",
39648
+ "conflictBar": "Wik-wW_conflictBar",
39649
+ "editorHeader": "Wik-wW_editorHeader",
39650
+ "saveState": "Wik-wW_saveState",
39651
+ "contextChipHint": "Wik-wW_contextChipHint",
39652
+ "acceptanceMessage": "Wik-wW_acceptanceMessage"
39509
39653
  };
39510
39654
  //#endregion
39511
39655
  //#region src/client/ContinuousReader.tsx
@@ -40305,6 +40449,14 @@ window.__ModuleLoader__.load({
40305
40449
  const [insertDescription, setInsertDescription] = (0, react.useState)("");
40306
40450
  const [insertError, setInsertError] = (0, react.useState)("");
40307
40451
  const [editorApi, setEditorApi] = (0, react.useState)(null);
40452
+ const editorApiRef = (0, react.useRef)(null);
40453
+ const bindEditorApi = (0, react.useCallback)((api) => {
40454
+ editorApiRef.current = api;
40455
+ setEditorApi(api);
40456
+ }, []);
40457
+ const [loadedDocumentIdentity, setLoadedDocumentIdentity] = (0, react.useState)("");
40458
+ const [pendingEditorInput, setPendingEditorInput] = (0, react.useState)(false);
40459
+ const discardedEditorsRef = (0, react.useRef)(/* @__PURE__ */ new Set());
40308
40460
  const [readingOrder, setReadingOrder] = (0, react.useState)(null);
40309
40461
  const [readingOrderState, setReadingOrderState] = (0, react.useState)("idle");
40310
40462
  const [readingOrderError, setReadingOrderError] = (0, react.useState)("");
@@ -40384,6 +40536,9 @@ window.__ModuleLoader__.load({
40384
40536
  const documentIdentity = `${String(workbench.contextEpoch)}:${workspaceId ?? ""}:${activeChapter?.occurrenceId ?? ""}:${activeDocumentId}:${path}`;
40385
40537
  const documentIdentityRef = (0, react.useRef)(documentIdentity);
40386
40538
  documentIdentityRef.current = documentIdentity;
40539
+ const editorSessionKey = `${documentIdentity}:${editorEpoch}`;
40540
+ const editorSessionKeyRef = (0, react.useRef)(editorSessionKey);
40541
+ editorSessionKeyRef.current = editorSessionKey;
40387
40542
  const novelId = manuscriptNovelId(workbench.workspace, path);
40388
40543
  const draftIdentity = workspaceId !== void 0 && novelId !== "" && path !== "" ? {
40389
40544
  workspaceId,
@@ -40435,7 +40590,7 @@ window.__ModuleLoader__.load({
40435
40590
  index
40436
40591
  })).filter(({ chapter }) => normalizedQuery === "" || `${chapter.title} ${chapter.subtitle} ${chapter.path}`.toLocaleLowerCase().includes(normalizedQuery));
40437
40592
  const inspectorRequested = compactLayout ? rightOpen : inspectorVisible;
40438
- const hasUnsavedDraft = document_ !== null && draft !== savedContentRef.current;
40593
+ const hasUnsavedDraft = pendingEditorInput || document_ !== null && draft !== savedContentRef.current;
40439
40594
  const openContextSource = (0, react.useCallback)((relativePath) => {
40440
40595
  if (relativePath === "" || relativePath.endsWith("/")) return;
40441
40596
  const match = /^(data\/novels\/[^/]+)\//.exec(path);
@@ -40464,7 +40619,7 @@ window.__ModuleLoader__.load({
40464
40619
  workbench.epochs.assets,
40465
40620
  workbench.epochs.workspace
40466
40621
  ]);
40467
- (0, react.useEffect)(() => {
40622
+ (0, react.useLayoutEffect)(() => {
40468
40623
  mountedRef.current = true;
40469
40624
  return () => {
40470
40625
  mountedRef.current = false;
@@ -40534,6 +40689,7 @@ window.__ModuleLoader__.load({
40534
40689
  const loadDocument = (0, react.useCallback)(async (allowDiscard = false) => {
40535
40690
  if (path === "") return;
40536
40691
  const requestIdentity = documentIdentity;
40692
+ if (!allowDiscard) editorApiRef.current?.flush?.();
40537
40693
  if (dirtyRef.current && !allowDiscard) {
40538
40694
  workbenchStore.setEditorStatus("conflict", t("creation.changedElsewhere"));
40539
40695
  return;
@@ -40549,10 +40705,12 @@ window.__ModuleLoader__.load({
40549
40705
  if (!mountedRef.current || documentIdentityRef.current !== requestIdentity) return;
40550
40706
  setDocument(data);
40551
40707
  documentRef.current = data;
40708
+ setLoadedDocumentIdentity(requestIdentity);
40552
40709
  setDraft(data.content);
40553
40710
  draftRef.current = data.content;
40554
40711
  savedContentRef.current = data.content;
40555
40712
  dirtyRef.current = false;
40713
+ setPendingEditorInput(false);
40556
40714
  setEditorFailed(false);
40557
40715
  setEditorEpoch((value) => value + 1);
40558
40716
  setManuscriptSelection(null);
@@ -40562,6 +40720,7 @@ window.__ModuleLoader__.load({
40562
40720
  workbenchStore.setEditorStatus("saved");
40563
40721
  const requestDraftIdentity = draftIdentity;
40564
40722
  if (requestDraftIdentity !== null) try {
40723
+ await draftWriteChainRef.current;
40565
40724
  const stored = await manuscriptDraftStore.load(requestDraftIdentity);
40566
40725
  if (!mountedRef.current || documentIdentityRef.current !== requestIdentity) return;
40567
40726
  if (stored !== null && stored.content !== data.content) setRecoveryDraft(stored);
@@ -40586,6 +40745,7 @@ window.__ModuleLoader__.load({
40586
40745
  ]);
40587
40746
  (0, react.useEffect)(() => {
40588
40747
  documentRef.current = null;
40748
+ setPendingEditorInput(false);
40589
40749
  setRecoveryDraft(null);
40590
40750
  setDraftStorageError("");
40591
40751
  saveQueuedRef.current = false;
@@ -40826,6 +40986,7 @@ window.__ModuleLoader__.load({
40826
40986
  }, [path, workspaceId]);
40827
40987
  (0, react.useEffect)(() => {
40828
40988
  const beforeUnload = (event) => {
40989
+ editorApiRef.current?.flush?.();
40829
40990
  if (!dirtyRef.current) return;
40830
40991
  event.preventDefault();
40831
40992
  event.returnValue = "";
@@ -40844,6 +41005,7 @@ window.__ModuleLoader__.load({
40844
41005
  return () => window.removeEventListener("keydown", closeOnEscape);
40845
41006
  }, [leftOpen, rightOpen]);
40846
41007
  const save = (0, react.useCallback)(async (force = false, origin = "autosave") => {
41008
+ editorApiRef.current?.flush?.();
40847
41009
  if (saveTimerRef.current !== null) {
40848
41010
  window.clearTimeout(saveTimerRef.current);
40849
41011
  saveTimerRef.current = null;
@@ -40963,11 +41125,17 @@ window.__ModuleLoader__.load({
40963
41125
  postStudioApi,
40964
41126
  t
40965
41127
  ]);
40966
- const persistDraft = (value, previousValue) => {
40967
- const identity = draftIdentityRef.current;
40968
- const currentDocument = documentRef.current;
41128
+ const editorOwner = document_ === null ? null : {
41129
+ key: editorSessionKey,
41130
+ document: document_,
41131
+ draftIdentity,
41132
+ draft
41133
+ };
41134
+ const persistDraft = (value, previousValue, owner) => {
41135
+ const identity = owner === void 0 ? draftIdentityRef.current : owner.draftIdentity;
41136
+ const currentDocument = owner === void 0 ? documentRef.current : owner.document;
40969
41137
  if (identity === null || currentDocument === null) return;
40970
- if (value === savedContentRef.current) {
41138
+ if (value === (owner === void 0 ? savedContentRef.current : owner.document.content)) {
40971
41139
  queueDraftOperation(identity, () => manuscriptDraftStore.removeIfContent(identity, previousValue));
40972
41140
  return;
40973
41141
  }
@@ -40983,7 +41151,12 @@ window.__ModuleLoader__.load({
40983
41151
  };
40984
41152
  queueDraftOperation(identity, () => manuscriptDraftStore.save(record));
40985
41153
  };
40986
- const updateDraft = (value) => {
41154
+ const updateDraft = (value, owner) => {
41155
+ if (owner && discardedEditorsRef.current.has(owner.key)) return;
41156
+ if (owner && (!mountedRef.current || owner.key !== editorSessionKeyRef.current)) {
41157
+ persistDraft(value, owner.draft, owner);
41158
+ return;
41159
+ }
40987
41160
  const previousValue = draftRef.current;
40988
41161
  setDraft(value);
40989
41162
  draftRef.current = value;
@@ -40997,11 +41170,16 @@ window.__ModuleLoader__.load({
40997
41170
  saveRef.current();
40998
41171
  }, 1200);
40999
41172
  };
41173
+ const markEditorInput = (pending, key) => {
41174
+ if (!mountedRef.current || key !== editorSessionKeyRef.current || discardedEditorsRef.current.has(key)) return;
41175
+ setPendingEditorInput(pending);
41176
+ };
41000
41177
  const restoreRecoveryDraft = () => {
41001
41178
  const stored = recoveryDraft;
41002
41179
  const currentDocument = documentRef.current;
41003
41180
  if (stored === null || currentDocument === null) return;
41004
41181
  const staleBase = stored.baseRevision !== currentDocument.revision;
41182
+ discardedEditorsRef.current.add(editorSessionKeyRef.current);
41005
41183
  setRecoveryDraft(null);
41006
41184
  setDraft(stored.content);
41007
41185
  draftRef.current = stored.content;
@@ -41025,6 +41203,15 @@ window.__ModuleLoader__.load({
41025
41203
  const identity = stored;
41026
41204
  queueDraftOperation(identity, () => manuscriptDraftStore.removeIfContent(identity, stored.content));
41027
41205
  };
41206
+ const discardEditorDraft = () => {
41207
+ discardedEditorsRef.current.add(editorSessionKeyRef.current);
41208
+ setPendingEditorInput(false);
41209
+ if (saveTimerRef.current !== null) window.clearTimeout(saveTimerRef.current);
41210
+ saveTimerRef.current = null;
41211
+ const identity = draftIdentityRef.current;
41212
+ const content = draftRef.current;
41213
+ if (identity !== null && documentRef.current !== null && loadedDocumentIdentity === documentIdentityRef.current) queueDraftOperation(identity, () => manuscriptDraftStore.removeIfContent(identity, content));
41214
+ };
41028
41215
  const chooseChapter = (nextPath, nextOccurrenceId = "") => {
41029
41216
  if (nextPath === path) {
41030
41217
  setActiveOccurrenceId(nextOccurrenceId);
@@ -41032,7 +41219,11 @@ window.__ModuleLoader__.load({
41032
41219
  setLeftOpen(false);
41033
41220
  return;
41034
41221
  }
41035
- if (dirtyRef.current && !window.confirm(t("creation.discardConfirm"))) return;
41222
+ editorApiRef.current?.flush?.();
41223
+ if (dirtyRef.current) {
41224
+ if (!window.confirm(t("creation.discardConfirm"))) return;
41225
+ discardEditorDraft();
41226
+ }
41036
41227
  dirtyRef.current = false;
41037
41228
  setActiveOccurrenceId(nextOccurrenceId);
41038
41229
  workbenchStore.setActiveChapter(nextPath);
@@ -41053,6 +41244,7 @@ window.__ModuleLoader__.load({
41053
41244
  ]);
41054
41245
  const moveActiveChapter = async () => {
41055
41246
  if (readingOrder === null || activeChapter === void 0 || moveBusy || moveVolumeId === "") return;
41247
+ editorApiRef.current?.flush?.();
41056
41248
  if (dirtyRef.current) {
41057
41249
  await saveRef.current(false, "manual");
41058
41250
  if (dirtyRef.current) return;
@@ -41129,7 +41321,9 @@ window.__ModuleLoader__.load({
41129
41321
  }
41130
41322
  };
41131
41323
  const reload = () => {
41324
+ editorApiRef.current?.flush?.();
41132
41325
  if (dirtyRef.current && !window.confirm(t("creation.discardConfirm"))) return;
41326
+ discardEditorDraft();
41133
41327
  dirtyRef.current = false;
41134
41328
  loadDocument(true);
41135
41329
  };
@@ -41155,6 +41349,7 @@ window.__ModuleLoader__.load({
41155
41349
  };
41156
41350
  const createNamedSnapshot = async () => {
41157
41351
  if (historyBusy !== "") return;
41352
+ editorApiRef.current?.flush?.();
41158
41353
  if (dirtyRef.current) {
41159
41354
  await saveRef.current(false, "manual");
41160
41355
  if (dirtyRef.current) return;
@@ -41254,6 +41449,7 @@ window.__ModuleLoader__.load({
41254
41449
  const selection = manuscriptSelectionRef.current;
41255
41450
  const id = chapterId(path);
41256
41451
  if (selection === null || selectionBusy !== "" || id === "") return;
41452
+ editorApiRef.current?.flush?.();
41257
41453
  if (dirtyRef.current) {
41258
41454
  await saveRef.current(false, "manual");
41259
41455
  if (dirtyRef.current) {
@@ -41265,13 +41461,18 @@ window.__ModuleLoader__.load({
41265
41461
  kind,
41266
41462
  chapterId: id,
41267
41463
  selection,
41464
+ documentContent: documentRef.current?.content ?? "",
41268
41465
  documentRevision: documentRef.current?.revision ?? "",
41269
41466
  reviewRevision: workBrief?.review.review_revision ?? "",
41270
41467
  reviewFresh: reviewCasReady,
41271
- issueIds: reviewIssuesForSelection(activeChapter?.review.issueDetails ?? [], selection)
41468
+ issueIds: reviewIssuesForSelection(activeChapter?.review.issueDetails ?? [], mapManuscriptSelection(documentRef.current?.content ?? "", selection) ?? {
41469
+ start: 0,
41470
+ end: 0,
41471
+ text: ""
41472
+ })
41272
41473
  });
41273
41474
  if (!request.ok) {
41274
- setSelectionNotice(t(request.reason === "no-review" ? "creation.selection.reviewRequired" : request.reason === "no-issues" ? "creation.selection.noIssues" : "creation.selection.empty"));
41475
+ setSelectionNotice(t(request.reason === "no-review" ? "creation.selection.reviewRequired" : request.reason === "no-issues" ? "creation.selection.noIssues" : request.reason === "source-changed" ? "creation.notes.rangeLost" : "creation.selection.empty"));
41275
41476
  return;
41276
41477
  }
41277
41478
  setSelectionBusy(kind);
@@ -41294,6 +41495,7 @@ window.__ModuleLoader__.load({
41294
41495
  const selection = manuscriptSelectionRef.current;
41295
41496
  const id = chapterId(path);
41296
41497
  if (selection === null || annotateBusy || id === "") return;
41498
+ editorApiRef.current?.flush?.();
41297
41499
  if (unsavedAnnotationGuard(dirtyRef.current) === "save-first") {
41298
41500
  await saveRef.current(false, "manual");
41299
41501
  if (dirtyRef.current) {
@@ -41301,7 +41503,13 @@ window.__ModuleLoader__.load({
41301
41503
  return;
41302
41504
  }
41303
41505
  }
41304
- const live = revalidateAnnotationRange(draftRef.current, selection);
41506
+ const editorContent = editorApi?.getValue() ?? draftRef.current;
41507
+ const current = revalidateAnnotationRange(editorContent, selection);
41508
+ const live = current && mapManuscriptSelection(documentRef.current?.content ?? "", {
41509
+ ...current,
41510
+ source: editorContent,
41511
+ serialization: editorApi?.getSerialization?.()
41512
+ });
41305
41513
  if (live === null) {
41306
41514
  setSelectionNotice(t("creation.notes.rangeLost"));
41307
41515
  return;
@@ -41336,19 +41544,17 @@ window.__ModuleLoader__.load({
41336
41544
  }
41337
41545
  };
41338
41546
  const locateAnnotation = (item) => {
41339
- const live = liveAnnotationAnchor(draftRef.current, item);
41547
+ const editorContent = editorApi?.getValue() ?? draftRef.current;
41548
+ const serialization = editorApi?.getSerialization?.();
41549
+ const live = liveAnnotationAnchor(editorContent, item, documentRef.current?.content, serialization);
41340
41550
  if (live.state === "detached") {
41341
41551
  setSelectionNotice(t("creation.notes.detached"));
41342
41552
  return;
41343
41553
  }
41344
- const next = {
41345
- start: live.start,
41346
- end: live.end,
41347
- text: item.quote
41348
- };
41554
+ const next = manuscriptSelectionFromRange(editorContent, live.start, live.end, serialization);
41349
41555
  manuscriptSelectionRef.current = next;
41350
41556
  setManuscriptSelection(next);
41351
- editorApi?.revealQuote(item.quote, live.start);
41557
+ editorApi?.revealQuote(next.text, live.start);
41352
41558
  setSelectionNotice(t(live.state === "relocated" ? "creation.notes.relocated" : "creation.notes.attached"));
41353
41559
  };
41354
41560
  const resolveAnnotation = async (item) => {
@@ -42155,7 +42361,7 @@ window.__ModuleLoader__.load({
42155
42361
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(import_lucide_react.RefreshCw, { size: 15 }), t("retry")]
42156
42362
  })]
42157
42363
  }),
42158
- !readerMode && documentState === "ready" && document_ !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
42364
+ !readerMode && documentState === "ready" && document_ !== null && loadedDocumentIdentity === documentIdentity && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
42159
42365
  className: Workbench_module_css_default.manuscriptEditor,
42160
42366
  "aria-busy": !editorReady && !editorFailed,
42161
42367
  children: [
@@ -42242,20 +42448,23 @@ window.__ModuleLoader__.load({
42242
42448
  }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(VditorBody, {
42243
42449
  initial: draft,
42244
42450
  disabled: false,
42245
- onChange: updateDraft,
42451
+ onChange: (value) => updateDraft(value, editorOwner),
42452
+ flushOnLeave: true,
42453
+ onInputStateChange: (pending) => markEditorInput(pending, editorSessionKey),
42246
42454
  onSelectionChange: updateManuscriptSelection,
42247
42455
  annotations,
42456
+ annotationSource: document_?.content,
42248
42457
  onInsertMarker: () => {
42249
42458
  setInsertOpen(true);
42250
42459
  setInsertError("");
42251
42460
  },
42252
- onEditorApi: setEditorApi,
42461
+ onEditorApi: bindEditorApi,
42253
42462
  onReady: () => setEditorReady(true),
42254
42463
  onFailed: () => {
42255
42464
  setEditorReady(true);
42256
42465
  setEditorFailed(true);
42257
42466
  }
42258
- }, `${path}:${editorEpoch}`),
42467
+ }, editorSessionKey),
42259
42468
  !editorReady && !editorFailed && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
42260
42469
  className: Workbench_module_css_default.editorBoot,
42261
42470
  role: "status",
@@ -42652,7 +42861,7 @@ window.__ModuleLoader__.load({
42652
42861
  }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
42653
42862
  className: Workbench_module_css_default.annotationList,
42654
42863
  children: annotations.map((item) => {
42655
- const live = liveAnnotationAnchor(draft, item);
42864
+ const live = liveAnnotationAnchor(draft, item, document_?.content);
42656
42865
  const stateKey = item.status === "resolved" ? "creation.notes.resolved" : live.state === "detached" ? "creation.notes.detached" : live.state === "relocated" ? "creation.notes.relocated" : "creation.notes.attached";
42657
42866
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("article", {
42658
42867
  className: Workbench_module_css_default.annotationCard,
@@ -146263,6 +146472,10 @@ window.__ModuleLoader__.load({
146263
146472
  className: views_module_css_default.taskError,
146264
146473
  children: workflow.error
146265
146474
  }),
146475
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
146476
+ className: views_module_css_default.taskSummary,
146477
+ children: t("graph.workflow.executionHint")
146478
+ }),
146266
146479
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
146267
146480
  className: views_module_css_default.workflowStages,
146268
146481
  children: workflow.stages.map((stage) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
@@ -146271,6 +146484,10 @@ window.__ModuleLoader__.load({
146271
146484
  title: stage.message !== "" ? stage.message : void 0,
146272
146485
  children: stage.name
146273
146486
  }, stage.name))
146487
+ }),
146488
+ workflow.stages.some((stage) => stage.name === "user_confirm" && stage.status !== "completed") && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
146489
+ className: views_module_css_default.notice,
146490
+ children: t("graph.workflow.confirmHint")
146274
146491
  })
146275
146492
  ]
146276
146493
  }, workflow.chapterId))),
@@ -146459,35 +146676,35 @@ window.__ModuleLoader__.load({
146459
146676
  document.head.appendChild(tag);
146460
146677
  }
146461
146678
  var SceneWorkbench_module_css_default = {
146462
- "bad": "NpkHjW_bad",
146463
- "moveRow": "NpkHjW_moveRow",
146464
- "good": "NpkHjW_good",
146465
- "missingNotice": "NpkHjW_missingNotice",
146466
- "sceneCard": "NpkHjW_sceneCard",
146467
- "notice": "NpkHjW_notice",
146468
- "count": "NpkHjW_count",
146679
+ "confirmRow": "NpkHjW_confirmRow",
146680
+ "header": "NpkHjW_header",
146469
146681
  "button": "NpkHjW_button",
146470
- "metadataGrid": "NpkHjW_metadataGrid",
146682
+ "count": "NpkHjW_count",
146683
+ "sceneId": "NpkHjW_sceneId",
146684
+ "formGrid": "NpkHjW_formGrid",
146685
+ "sceneHeading": "NpkHjW_sceneHeading",
146471
146686
  "root": "NpkHjW_root",
146472
- "migrationHeading": "NpkHjW_migrationHeading",
146473
- "previewList": "NpkHjW_previewList",
146474
- "orderToolbar": "NpkHjW_orderToolbar",
146475
- "header": "NpkHjW_header",
146476
- "confirmRow": "NpkHjW_confirmRow",
146477
- "previewIssues": "NpkHjW_previewIssues",
146478
146687
  "rollbackRow": "NpkHjW_rollbackRow",
146479
- "sceneId": "NpkHjW_sceneId",
146480
146688
  "migration": "NpkHjW_migration",
146481
- "editor": "NpkHjW_editor",
146482
- "sceneList": "NpkHjW_sceneList",
146689
+ "missingNotice": "NpkHjW_missingNotice",
146690
+ "orderToolbar": "NpkHjW_orderToolbar",
146691
+ "bad": "NpkHjW_bad",
146692
+ "issuePanel": "NpkHjW_issuePanel",
146693
+ "sceneCard": "NpkHjW_sceneCard",
146694
+ "migrationHeading": "NpkHjW_migrationHeading",
146695
+ "notice": "NpkHjW_notice",
146483
146696
  "actions": "NpkHjW_actions",
146697
+ "editor": "NpkHjW_editor",
146484
146698
  "primaryButton": "NpkHjW_primaryButton",
146485
- "chapter": "NpkHjW_chapter",
146486
- "sceneHeading": "NpkHjW_sceneHeading",
146699
+ "sceneList": "NpkHjW_sceneList",
146700
+ "metadataGrid": "NpkHjW_metadataGrid",
146487
146701
  "inlineWarning": "NpkHjW_inlineWarning",
146488
- "formGrid": "NpkHjW_formGrid",
146489
- "issuePanel": "NpkHjW_issuePanel",
146490
- "statusRow": "NpkHjW_statusRow"
146702
+ "chapter": "NpkHjW_chapter",
146703
+ "moveRow": "NpkHjW_moveRow",
146704
+ "good": "NpkHjW_good",
146705
+ "previewList": "NpkHjW_previewList",
146706
+ "statusRow": "NpkHjW_statusRow",
146707
+ "previewIssues": "NpkHjW_previewIssues"
146491
146708
  };
146492
146709
  //#endregion
146493
146710
  //#region src/client/SceneWorkbench.tsx
@@ -149555,71 +149772,71 @@ window.__ModuleLoader__.load({
149555
149772
  document.head.appendChild(tag);
149556
149773
  }
149557
149774
  var BenchmarkView_module_css_default = {
149558
- "benchmarkStatus": "za6_jG_benchmarkStatus",
149559
- "benchmarkLegacy": "za6_jG_benchmarkLegacy",
149560
- "reviewWarning": "za6_jG_reviewWarning",
149561
- "sectionHeading": "za6_jG_sectionHeading",
149562
- "pipeline": "za6_jG_pipeline",
149775
+ "benchmarkSplit": "za6_jG_benchmarkSplit",
149776
+ "primaryButton": "za6_jG_primaryButton",
149777
+ "runHeading": "za6_jG_runHeading",
149778
+ "taskProgress": "za6_jG_taskProgress",
149563
149779
  "modelPicker": "za6_jG_modelPicker",
149564
- "taskFailure": "za6_jG_taskFailure",
149565
- "benchmarkUsage": "za6_jG_benchmarkUsage",
149566
- "modelGroup": "za6_jG_modelGroup",
149567
149780
  "loading": "za6_jG_loading",
149568
- "benchmarkRunGroupHeader": "za6_jG_benchmarkRunGroupHeader",
149569
- "benchmarkError": "za6_jG_benchmarkError",
149570
- "taskSelector": "za6_jG_taskSelector",
149571
- "spin": "za6_jG_spin",
149572
149781
  "benchmarkSummary": "za6_jG_benchmarkSummary",
149573
- "pipelineNodes": "za6_jG_pipelineNodes",
149574
- "benchmarkRunGroup": "za6_jG_benchmarkRunGroup",
149575
- "benchmarkTable": "za6_jG_benchmarkTable",
149576
- "body": "za6_jG_body",
149577
- "advanced": "za6_jG_advanced",
149578
- "taskError": "za6_jG_taskError",
149579
- "root": "za6_jG_root",
149782
+ "taskSelector": "za6_jG_taskSelector",
149783
+ "benchmarkInputs": "za6_jG_benchmarkInputs",
149784
+ "configFields": "za6_jG_configFields",
149785
+ "count": "za6_jG_count",
149786
+ "runList": "za6_jG_runList",
149787
+ "benchmarkRunGroupHeader": "za6_jG_benchmarkRunGroupHeader",
149788
+ "taskFailure": "za6_jG_taskFailure",
149789
+ "pageHeader": "za6_jG_pageHeader",
149790
+ "launchBar": "za6_jG_launchBar",
149580
149791
  "executionRecord": "za6_jG_executionRecord",
149581
149792
  "runScore": "za6_jG_runScore",
149582
- "launchBar": "za6_jG_launchBar",
149583
- "configFields": "za6_jG_configFields",
149793
+ "body": "za6_jG_body",
149584
149794
  "notice": "za6_jG_notice",
149585
- "metadataSection": "za6_jG_metadataSection",
149586
- "benchmarkMetrics": "za6_jG_benchmarkMetrics",
149587
- "pageHeader": "za6_jG_pageHeader",
149588
- "pageIdentity": "za6_jG_pageIdentity",
149589
- "spinning": "za6_jG_spinning",
149590
- "taskProgress": "za6_jG_taskProgress",
149591
- "resultPlaceholder": "za6_jG_resultPlaceholder",
149592
- "runList": "za6_jG_runList",
149593
- "profileChoice": "za6_jG_profileChoice",
149795
+ "benchmarkControls": "za6_jG_benchmarkControls",
149796
+ "modelGroup": "za6_jG_modelGroup",
149797
+ "benchmarkLegacy": "za6_jG_benchmarkLegacy",
149798
+ "reviewWarning": "za6_jG_reviewWarning",
149799
+ "benchmark": "za6_jG_benchmark",
149800
+ "pipelineHeading": "za6_jG_pipelineHeading",
149594
149801
  "tableScroll": "za6_jG_tableScroll",
149802
+ "benchmarkPhases": "za6_jG_benchmarkPhases",
149803
+ "taskError": "za6_jG_taskError",
149804
+ "benchmarkRuns": "za6_jG_benchmarkRuns",
149805
+ "benchmarkOutputList": "za6_jG_benchmarkOutputList",
149806
+ "historyHeading": "za6_jG_historyHeading",
149807
+ "resultPlaceholder": "za6_jG_resultPlaceholder",
149808
+ "pageIcon": "za6_jG_pageIcon",
149595
149809
  "modelGroups": "za6_jG_modelGroups",
149810
+ "root": "za6_jG_root",
149811
+ "sectionHeading": "za6_jG_sectionHeading",
149812
+ "scopeHint": "za6_jG_scopeHint",
149813
+ "advanced": "za6_jG_advanced",
149814
+ "benchmarkTable": "za6_jG_benchmarkTable",
149815
+ "metadataSection": "za6_jG_metadataSection",
149816
+ "pageIdentity": "za6_jG_pageIdentity",
149596
149817
  "runId": "za6_jG_runId",
149597
- "benchmarkOutput": "za6_jG_benchmarkOutput",
149598
- "benchmarkOutputList": "za6_jG_benchmarkOutputList",
149599
- "benchmarkCellStack": "za6_jG_benchmarkCellStack",
149600
- "benchmarkPhases": "za6_jG_benchmarkPhases",
149818
+ "pipelineNodes": "za6_jG_pipelineNodes",
149819
+ "benchmarkProfiles": "za6_jG_benchmarkProfiles",
149820
+ "benchmarkRunGroup": "za6_jG_benchmarkRunGroup",
149821
+ "benchmarkStatus": "za6_jG_benchmarkStatus",
149601
149822
  "advancedInputs": "za6_jG_advancedInputs",
149823
+ "benchmarkSources": "za6_jG_benchmarkSources",
149824
+ "benchmarkCost": "za6_jG_benchmarkCost",
149825
+ "workload": "za6_jG_workload",
149602
149826
  "benchmarkProvenance": "za6_jG_benchmarkProvenance",
149603
- "benchmarkSplit": "za6_jG_benchmarkSplit",
149604
- "benchmarkResults": "za6_jG_benchmarkResults",
149605
149827
  "benchmarkSection": "za6_jG_benchmarkSection",
149606
- "workload": "za6_jG_workload",
149607
- "scopeHint": "za6_jG_scopeHint",
149608
- "benchmarkInputs": "za6_jG_benchmarkInputs",
149609
- "runHeading": "za6_jG_runHeading",
149610
- "benchmarkProfiles": "za6_jG_benchmarkProfiles",
149828
+ "profileChoice": "za6_jG_profileChoice",
149829
+ "benchmarkUsage": "za6_jG_benchmarkUsage",
149830
+ "benchmarkResults": "za6_jG_benchmarkResults",
149831
+ "benchmarkCellStack": "za6_jG_benchmarkCellStack",
149832
+ "benchmarkOutput": "za6_jG_benchmarkOutput",
149833
+ "spinning": "za6_jG_spinning",
149611
149834
  "button": "za6_jG_button",
149612
- "benchmark": "za6_jG_benchmark",
149613
149835
  "benchmarkRun": "za6_jG_benchmarkRun",
149614
- "benchmarkCost": "za6_jG_benchmarkCost",
149615
- "benchmarkSources": "za6_jG_benchmarkSources",
149616
- "primaryButton": "za6_jG_primaryButton",
149617
- "count": "za6_jG_count",
149618
- "pipelineHeading": "za6_jG_pipelineHeading",
149619
- "historyHeading": "za6_jG_historyHeading",
149620
- "benchmarkRuns": "za6_jG_benchmarkRuns",
149621
- "benchmarkControls": "za6_jG_benchmarkControls",
149622
- "pageIcon": "za6_jG_pageIcon"
149836
+ "spin": "za6_jG_spin",
149837
+ "pipeline": "za6_jG_pipeline",
149838
+ "benchmarkError": "za6_jG_benchmarkError",
149839
+ "benchmarkMetrics": "za6_jG_benchmarkMetrics"
149623
149840
  };
149624
149841
  //#endregion
149625
149842
  //#region src/client/benchmark-options.ts
@@ -154174,13 +154391,13 @@ window.__ModuleLoader__.load({
154174
154391
  }
154175
154392
  var SerialWritingView_module_css_default = {
154176
154393
  "controls": "lkYR5a_controls",
154394
+ "notice": "lkYR5a_notice",
154177
154395
  "error": "lkYR5a_error",
154396
+ "warning": "lkYR5a_warning",
154178
154397
  "overlap": "lkYR5a_overlap",
154179
- "notice": "lkYR5a_notice",
154180
- "scroll": "lkYR5a_scroll",
154181
- "facts": "lkYR5a_facts",
154182
154398
  "root": "lkYR5a_root",
154183
- "warning": "lkYR5a_warning"
154399
+ "facts": "lkYR5a_facts",
154400
+ "scroll": "lkYR5a_scroll"
154184
154401
  };
154185
154402
  //#endregion
154186
154403
  //#region src/client/SerialWritingView.tsx
@@ -155781,16 +155998,16 @@ window.__ModuleLoader__.load({
155781
155998
  document.head.appendChild(tag);
155782
155999
  }
155783
156000
  var DomainToolCard_module_css_default = {
155784
- "family": "Pzee0G_family",
155785
156001
  "summary": "Pzee0G_summary",
156002
+ "card": "Pzee0G_card",
155786
156003
  "body": "Pzee0G_body",
156004
+ "toolName": "Pzee0G_toolName",
156005
+ "family": "Pzee0G_family",
155787
156006
  "row": "Pzee0G_row",
155788
156007
  "action": "Pzee0G_action",
155789
- "head": "Pzee0G_head",
155790
- "card": "Pzee0G_card",
155791
- "chevron": "Pzee0G_chevron",
155792
156008
  "spin": "Pzee0G_spin",
155793
- "toolName": "Pzee0G_toolName"
156009
+ "head": "Pzee0G_head",
156010
+ "chevron": "Pzee0G_chevron"
155794
156011
  };
155795
156012
  //#endregion
155796
156013
  //#region src/client/DomainToolCard.tsx
@@ -156893,6 +157110,8 @@ window.__ModuleLoader__.load({
156893
157110
  "graph.truth.relationships": "关系矩阵",
156894
157111
  "graph.workflows": "工作流",
156895
157112
  "graph.workflow.currentStage": "当前阶段",
157113
+ "graph.workflow.executionHint": "此图显示步骤是否执行完成;审稿步骤完成不代表交付通过,交付结论请查看交付验收。",
157114
+ "graph.workflow.confirmHint": "作者验收确认:先用 novel_manuscript_acceptance 查看 operation_id 和待核对影响;人工核对后,用 novel_manuscript_acceptance_reconcile(action=\"acknowledge\"、confirm=true、domains=已核对的影响域)确认。尚未完成的结算仍需先 resume。",
156896
157115
  "graph.empty.truth": "暂无真相文件内容。章节推进后由 agent 更新 data/world/ 下的真相文件。",
156897
157116
  "graph.empty.truthDoc": "(空)",
156898
157117
  "graph.empty.workflows": "暂无活动章节工作流。",
@@ -158049,6 +158268,8 @@ window.__ModuleLoader__.load({
158049
158268
  "graph.truth.relationships": "Relationship matrix",
158050
158269
  "graph.workflows": "Workflows",
158051
158270
  "graph.workflow.currentStage": "Current stage",
158271
+ "graph.workflow.executionHint": "These are execution steps. A completed review step does not mean delivery passed; see delivery acceptance for that decision.",
158272
+ "graph.workflow.confirmHint": "Author confirmation: inspect operation_id and pending impacts with novel_manuscript_acceptance. After checking the text and impacts, call novel_manuscript_acceptance_reconcile with action=\"acknowledge\", confirm=true, and the reviewed domains. Resume unfinished reconciliation first.",
158052
158273
  "graph.empty.truth": "No truth-file content yet. The agent updates the data/world/ truth files as chapters advance.",
158053
158274
  "graph.empty.truthDoc": "(empty)",
158054
158275
  "graph.empty.workflows": "No active chapter workflows.",
@@ -158370,31 +158591,31 @@ window.__ModuleLoader__.load({
158370
158591
  document.head.appendChild(tag);
158371
158592
  }
158372
158593
  var ReviewCard_module_css_default = {
158373
- "rawTitle": "InxF9G_rawTitle",
158374
- "card": "InxF9G_card",
158375
- "rawJson": "InxF9G_rawJson",
158376
- "suggestion": "InxF9G_suggestion",
158377
- "summary": "InxF9G_summary",
158594
+ "issueHead": "InxF9G_issueHead",
158595
+ "sep": "InxF9G_sep",
158596
+ "title": "InxF9G_title",
158378
158597
  "verdict": "InxF9G_verdict",
158598
+ "suggestionLabel": "InxF9G_suggestionLabel",
158379
158599
  "metric": "InxF9G_metric",
158600
+ "card": "InxF9G_card",
158380
158601
  "issue": "InxF9G_issue",
158381
- "reportSummary": "InxF9G_reportSummary",
158602
+ "severity": "InxF9G_severity",
158382
158603
  "root": "InxF9G_root",
158383
- "title": "InxF9G_title",
158384
- "bodyWrap": "InxF9G_bodyWrap",
158385
- "suggestionLabel": "InxF9G_suggestionLabel",
158604
+ "issueCount": "InxF9G_issueCount",
158605
+ "rawTitle": "InxF9G_rawTitle",
158606
+ "rawJson": "InxF9G_rawJson",
158607
+ "issueGroupTitle": "InxF9G_issueGroupTitle",
158608
+ "summary": "InxF9G_summary",
158609
+ "reportSummary": "InxF9G_reportSummary",
158386
158610
  "priority": "InxF9G_priority",
158387
158611
  "issueSummary": "InxF9G_issueSummary",
158388
- "dimension": "InxF9G_dimension",
158389
- "issueGroupTitle": "InxF9G_issueGroupTitle",
158390
- "issueCount": "InxF9G_issueCount",
158612
+ "suggestion": "InxF9G_suggestion",
158391
158613
  "verdictRow": "InxF9G_verdictRow",
158392
- "score": "InxF9G_score",
158393
- "severity": "InxF9G_severity",
158394
- "quote": "InxF9G_quote",
158614
+ "dimension": "InxF9G_dimension",
158395
158615
  "issueGroup": "InxF9G_issueGroup",
158396
- "issueHead": "InxF9G_issueHead",
158397
- "sep": "InxF9G_sep"
158616
+ "quote": "InxF9G_quote",
158617
+ "bodyWrap": "InxF9G_bodyWrap",
158618
+ "score": "InxF9G_score"
158398
158619
  };
158399
158620
  //#endregion
158400
158621
  //#region src/client/ReviewCard.tsx
@@ -159313,7 +159534,7 @@ window.__ModuleLoader__.load({
159313
159534
  pickDirectory: pickDirectoryCompat,
159314
159535
  connectWorkspace: async (id) => {
159315
159536
  const sessionId = await ctx.uiWorkspace.connectWorkspace(id);
159316
- const result = await ctx.remote.agentPresets.select(sessionId, "openwrite-0-2-27");
159537
+ const result = await ctx.remote.agentPresets.select(sessionId, "openwrite-0-2-28");
159317
159538
  if (!result.ok) throw new Error(result.error.message);
159318
159539
  return sessionId;
159319
159540
  },
@@ -159356,7 +159577,7 @@ window.__ModuleLoader__.load({
159356
159577
  if (selected === null) return false;
159357
159578
  const workspace = await ctx.workspaces.create({ path: selected });
159358
159579
  const sessionId = await ctx.sessions.create({ workspaceId: workspace.workspaceId });
159359
- const result = await ctx.remote.agentPresets.select(sessionId, "openwrite-0-2-27");
159580
+ const result = await ctx.remote.agentPresets.select(sessionId, "openwrite-0-2-28");
159360
159581
  if (!result.ok) throw new Error(result.error.message);
159361
159582
  workspaceServices.openSession(sessionId);
159362
159583
  return true;