dsh-openwrite 0.2.26 → 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 (37) hide show
  1. package/README.md +16 -4
  2. package/docs/CLOSED_ISSUE_FOLLOWUPS.md +35 -0
  3. package/docs/CONTEXT_SLOTS.md +60 -0
  4. package/docs/EDITOR_SAFETY_REPAIRS.md +17 -0
  5. package/docs/ISSUES_105_113.md +4 -1
  6. package/docs/ISSUES_121_123.md +97 -0
  7. package/docs/ISSUES_98_100.md +2 -0
  8. package/docs/ISSUE_123_FOLLOWUP.md +54 -0
  9. package/docs/OPENCODE_GO.md +24 -18
  10. package/docs/RELEASE_ACCEPTANCE.md +89 -1
  11. package/docs/SELECTION_UPGRADE_REPAIRS.md +16 -0
  12. package/docs/TOOLS.md +1356 -0
  13. package/dog-tools.mjs +5 -3
  14. package/package.json +5 -4
  15. package/packages/openwrite-bridge/lib/contracts-generated.js +9 -0
  16. package/packages/openwrite-bridge/lib/dog-delivery.js +7 -3
  17. package/packages/openwrite-bridge/lib/managed-runtime.d.ts +1 -0
  18. package/packages/openwrite-bridge/lib/managed-runtime.js +22 -2
  19. package/packages/openwrite-bridge/lib/tool-policy.js +2 -0
  20. package/packages/openwrite-bridge/lib/tools.js +28 -5
  21. package/packages/studio-panel/lib/client.js +821 -544
  22. package/packages/studio-panel/lib/client.js.map +1 -1
  23. package/packages/studio-panel/lib/types/client/VditorBody.d.ts +7 -1
  24. package/packages/studio-panel/lib/types/client/dto.d.ts +2 -0
  25. package/packages/studio-panel/lib/types/client/locales.d.ts +1 -1
  26. package/packages/studio-panel/lib/types/client/manuscript-annotations.d.ts +2 -1
  27. package/packages/studio-panel/lib/types/client/manuscript-overlay.d.ts +2 -1
  28. package/packages/studio-panel/lib/types/client/manuscript-selection.d.ts +18 -5
  29. package/packages/studio-panel/lib/types/client/selection-coordinates.d.ts +15 -0
  30. package/preset-definition.mjs +1 -1
  31. package/release/{openwrite-5.8.14-py3-none-any.whl → openwrite-5.8.20-py3-none-any.whl} +0 -0
  32. package/release/runtime-manifest.json +6 -5
  33. package/release/source.json +3 -3
  34. package/scripts/safe-upgrade.mjs +104 -9
  35. package/vendor/dsh-dog/lib/{core-BAlgZpLq.js → core--byUPJL8.js} +129 -12
  36. package/vendor/dsh-dog/lib/core.js +1 -1
  37. 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",
29650
+ "entry": "Ll8urG_entry",
29651
29651
  "dialog": "Ll8urG_dialog",
29652
- "path": "Ll8urG_path",
29653
- "entry": "Ll8urG_entry"
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
  }
@@ -37166,6 +37277,8 @@ window.__ModuleLoader__.load({
37166
37277
  model: asText$2(item["model"]),
37167
37278
  base_url: asText$2(item["base_url"]),
37168
37279
  api_format: asText$2(item["api_format"]),
37280
+ auth_source: asText$2(item["auth_source"]) || "api_key",
37281
+ workspace_id: asText$2(item["workspace_id"]),
37169
37282
  context_tokens: asInteger(item["context_tokens"]),
37170
37283
  max_output_tokens: asInteger(item["max_output_tokens"]),
37171
37284
  temperature: asFiniteNumber(item["temperature"]) ?? .7,
@@ -37926,9 +38039,16 @@ window.__ModuleLoader__.load({
37926
38039
  function unsavedAnnotationGuard(dirty) {
37927
38040
  return dirty ? "save-first" : "ok";
37928
38041
  }
37929
- function liveAnnotationAnchor(content, item) {
37930
- if (item.anchorState === "detached" && item.currentStart === null) return locateQuote(content, item.quote, item.startHint, item.endHint);
37931
- 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);
37932
38052
  }
37933
38053
  function revalidateAnnotationRange(content, selection) {
37934
38054
  if (content.slice(selection.start, selection.end) === selection.text) return selection;
@@ -37960,18 +38080,19 @@ window.__ModuleLoader__.load({
37960
38080
  //#endregion
37961
38081
  //#region src/client/manuscript-overlay.ts
37962
38082
  /** Display-only bands. Never written back into markdown. */
37963
- function overlayBands(content, notes, markers) {
38083
+ function overlayBands(content, notes, markers, source = content, serialization) {
37964
38084
  const bands = [];
37965
38085
  for (const note of notes) {
37966
38086
  if (note.status === "resolved") continue;
37967
- const anchor = liveAnnotationAnchor(content, note);
38087
+ const anchor = liveAnnotationAnchor(content, note, source, serialization);
37968
38088
  if (anchor.state === "detached") continue;
37969
- 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);
37970
38091
  bands.push({
37971
38092
  kind: "note",
37972
38093
  start: anchor.start,
37973
38094
  end: anchor.end,
37974
- needle: note.quote,
38095
+ needle,
37975
38096
  occurrence,
37976
38097
  color: note.color,
37977
38098
  title: note.note
@@ -38117,262 +38238,262 @@ window.__ModuleLoader__.load({
38117
38238
  document.head.appendChild(tag);
38118
38239
  }
38119
38240
  var views_module_css_default = {
38120
- "taskDetail": "hpCk7W_taskDetail",
38121
- "tag": "hpCk7W_tag",
38122
- "benchmarkProvenance": "hpCk7W_benchmarkProvenance",
38123
- "sidebarSegments": "hpCk7W_sidebarSegments",
38124
- "modelRouteMeta": "hpCk7W_modelRouteMeta",
38125
- "referenceReader": "hpCk7W_referenceReader",
38126
- "graphCanvas": "hpCk7W_graphCanvas",
38127
- "validationList": "hpCk7W_validationList",
38128
- "benchmarkSources": "hpCk7W_benchmarkSources",
38129
- "benchmarkSummary": "hpCk7W_benchmarkSummary",
38130
- "overlayMark": "hpCk7W_overlayMark",
38131
- "countChip": "hpCk7W_countChip",
38132
- "taskDetailSummary": "hpCk7W_taskDetailSummary",
38133
- "modelChip": "hpCk7W_modelChip",
38134
- "taskDetailError": "hpCk7W_taskDetailError",
38135
- "benchmarkSection": "hpCk7W_benchmarkSection",
38241
+ "taskIssueRow": "hpCk7W_taskIssueRow",
38242
+ "profileChoice": "hpCk7W_profileChoice",
38243
+ "toolbar": "hpCk7W_toolbar",
38244
+ "benchmarkRunGroup": "hpCk7W_benchmarkRunGroup",
38245
+ "sidebar": "hpCk7W_sidebar",
38246
+ "taskSummary": "hpCk7W_taskSummary",
38247
+ "taskActions": "hpCk7W_taskActions",
38136
38248
  "benchmarkPhases": "hpCk7W_benchmarkPhases",
38137
- "modelListItem": "hpCk7W_modelListItem",
38138
- "statusBadge": "hpCk7W_statusBadge",
38139
- "benchmarkInputs": "hpCk7W_benchmarkInputs",
38140
- "searchResultTitle": "hpCk7W_searchResultTitle",
38141
- "taskTimeline": "hpCk7W_taskTimeline",
38142
- "resultLink": "hpCk7W_resultLink",
38143
- "inlineActions": "hpCk7W_inlineActions",
38144
- "workflowBlock": "hpCk7W_workflowBlock",
38249
+ "relationOrigin": "hpCk7W_relationOrigin",
38250
+ "chip": "hpCk7W_chip",
38251
+ "linkButton": "hpCk7W_linkButton",
38252
+ "relationshipSvg": "hpCk7W_relationshipSvg",
38253
+ "graphNodeMeta": "hpCk7W_graphNodeMeta",
38254
+ "tableScroll": "hpCk7W_tableScroll",
38255
+ "iconButton": "hpCk7W_iconButton",
38256
+ "taskProgressTrack": "hpCk7W_taskProgressTrack",
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",
38264
+ "modelList": "hpCk7W_modelList",
38265
+ "foreshadowNode": "hpCk7W_foreshadowNode",
38145
38266
  "listBlockLabel": "hpCk7W_listBlockLabel",
38146
- "searchChangeDiff": "hpCk7W_searchChangeDiff",
38147
- "dagDomainRow": "hpCk7W_dagDomainRow",
38148
- "vditorOverlay": "hpCk7W_vditorOverlay",
38149
- "benchmarkControls": "hpCk7W_benchmarkControls",
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",
38150
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",
38151
38290
  "modelGroupTitle": "hpCk7W_modelGroupTitle",
38152
- "searchResultHeading": "hpCk7W_searchResultHeading",
38153
- "searchLocator": "hpCk7W_searchLocator",
38154
- "notice": "hpCk7W_notice",
38155
- "editor": "hpCk7W_editor",
38156
- "conflictNotice": "hpCk7W_conflictNotice",
38157
- "relationshipStats": "hpCk7W_relationshipStats",
38158
- "foreshadowNode": "hpCk7W_foreshadowNode",
38159
- "dagNode": "hpCk7W_dagNode",
38160
- "fieldValue": "hpCk7W_fieldValue",
38291
+ "relationshipDetail": "hpCk7W_relationshipDetail",
38161
38292
  "benchmarkCellStack": "hpCk7W_benchmarkCellStack",
38162
- "taskPhase": "hpCk7W_taskPhase",
38163
- "taskActions": "hpCk7W_taskActions",
38164
- "scoreChip": "hpCk7W_scoreChip",
38165
- "previewHead": "hpCk7W_previewHead",
38293
+ "modelFormGrid": "hpCk7W_modelFormGrid",
38294
+ "modelDependencies": "hpCk7W_modelDependencies",
38295
+ "modelApiKeyInput": "hpCk7W_modelApiKeyInput",
38296
+ "fieldKey": "hpCk7W_fieldKey",
38297
+ "modelActions": "hpCk7W_modelActions",
38298
+ "libraryRoot": "hpCk7W_libraryRoot",
38299
+ "graphColumnHeader": "hpCk7W_graphColumnHeader",
38300
+ "editorActions": "hpCk7W_editorActions",
38301
+ "nodeSummary": "hpCk7W_nodeSummary",
38166
38302
  "titleInput": "hpCk7W_titleInput",
38303
+ "dagNode": "hpCk7W_dagNode",
38304
+ "derivedTitle": "hpCk7W_derivedTitle",
38305
+ "mainPane": "hpCk7W_mainPane",
38306
+ "benchmarkProvenance": "hpCk7W_benchmarkProvenance",
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",
38319
+ "modelImpact": "hpCk7W_modelImpact",
38320
+ "resultLink": "hpCk7W_resultLink",
38321
+ "modelCheckbox": "hpCk7W_modelCheckbox",
38322
+ "taskError": "hpCk7W_taskError",
38167
38323
  "vditorFrame": "hpCk7W_vditorFrame",
38168
- "modelRoutes": "hpCk7W_modelRoutes",
38169
- "chevronButton": "hpCk7W_chevronButton",
38170
- "modelEmpty": "hpCk7W_modelEmpty",
38324
+ "relationEditor": "hpCk7W_relationEditor",
38325
+ "researchFailure": "hpCk7W_researchFailure",
38326
+ "detailHeader": "hpCk7W_detailHeader",
38327
+ "truthSection": "hpCk7W_truthSection",
38328
+ "workflowBlock": "hpCk7W_workflowBlock",
38171
38329
  "dagObjectList": "hpCk7W_dagObjectList",
38172
- "groupChevron": "hpCk7W_groupChevron",
38173
- "researchWorkspace": "hpCk7W_researchWorkspace",
38174
- "dagOverview": "hpCk7W_dagOverview",
38175
- "detailSummary": "hpCk7W_detailSummary",
38176
- "listBlock": "hpCk7W_listBlock",
38177
- "nodeActions": "hpCk7W_nodeActions",
38178
- "taskCard": "hpCk7W_taskCard",
38179
- "taskIssueRow": "hpCk7W_taskIssueRow",
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",
38337
+ "modelHint": "hpCk7W_modelHint",
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",
38180
38347
  "treeRow": "hpCk7W_treeRow",
38181
- "detail": "hpCk7W_detail",
38182
- "relationEditor": "hpCk7W_relationEditor",
38183
- "relationshipWorkspace": "hpCk7W_relationshipWorkspace",
38184
- "relationD3Nodes": "hpCk7W_relationD3Nodes",
38185
- "bodyEditor": "hpCk7W_bodyEditor",
38186
- "benchmarkOutput": "hpCk7W_benchmarkOutput",
38187
- "taskProgressLine": "hpCk7W_taskProgressLine",
38188
- "taskEvents": "hpCk7W_taskEvents",
38189
- "taskIssuePriority": "hpCk7W_taskIssuePriority",
38190
- "input": "hpCk7W_input",
38191
38348
  "searchChangePlan": "hpCk7W_searchChangePlan",
38192
- "createPanel": "hpCk7W_createPanel",
38193
- "assetAliases": "hpCk7W_assetAliases",
38194
- "derivedOrigin": "hpCk7W_derivedOrigin",
38195
- "detailNotice": "hpCk7W_detailNotice",
38196
- "editorRow": "hpCk7W_editorRow",
38197
- "dagDetail": "hpCk7W_dagDetail",
38198
- "summaryEditor": "hpCk7W_summaryEditor",
38199
- "sidebarFooter": "hpCk7W_sidebarFooter",
38349
+ "modelRoutes": "hpCk7W_modelRoutes",
38350
+ "taskReviewMeta": "hpCk7W_taskReviewMeta",
38200
38351
  "modelTestRow": "hpCk7W_modelTestRow",
38201
- "benchmarkRuns": "hpCk7W_benchmarkRuns",
38202
- "derivedName": "hpCk7W_derivedName",
38352
+ "modelRouteMeta": "hpCk7W_modelRouteMeta",
38353
+ "modelEmpty": "hpCk7W_modelEmpty",
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",
38203
38361
  "vditorHost": "hpCk7W_vditorHost",
38204
- "graphNodeMeta": "hpCk7W_graphNodeMeta",
38362
+ "benchmarkLegacy": "hpCk7W_benchmarkLegacy",
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",
38375
+ "taskStatus": "hpCk7W_taskStatus",
38376
+ "nodeTitle": "hpCk7W_nodeTitle",
38377
+ "dagOverview": "hpCk7W_dagOverview",
38378
+ "searchResultActive": "hpCk7W_searchResultActive",
38379
+ "taskTimeline": "hpCk7W_taskTimeline",
38380
+ "researchWorkspace": "hpCk7W_researchWorkspace",
38381
+ "treeChildren": "hpCk7W_treeChildren",
38382
+ "relationshipCanvasHeader": "hpCk7W_relationshipCanvasHeader",
38383
+ "benchmarkSplit": "hpCk7W_benchmarkSplit",
38384
+ "dagDetail": "hpCk7W_dagDetail",
38385
+ "primaryButton": "hpCk7W_primaryButton",
38386
+ "benchmarkUsage": "hpCk7W_benchmarkUsage",
38205
38387
  "searchResultHead": "hpCk7W_searchResultHead",
38206
- "relationOrigin": "hpCk7W_relationOrigin",
38207
- "iconButton": "hpCk7W_iconButton",
38208
- "taskError": "hpCk7W_taskError",
38209
- "modelLayout": "hpCk7W_modelLayout",
38210
- "kindBadge": "hpCk7W_kindBadge",
38211
- "paneHeading": "hpCk7W_paneHeading",
38212
- "toolbarMeta": "hpCk7W_toolbarMeta",
38213
- "assetRowMeta": "hpCk7W_assetRowMeta",
38214
- "assetRow": "hpCk7W_assetRow",
38388
+ "taskEvents": "hpCk7W_taskEvents",
38389
+ "vditorOverlay": "hpCk7W_vditorOverlay",
38390
+ "researchSourceList": "hpCk7W_researchSourceList",
38391
+ "relationFlowNode": "hpCk7W_relationFlowNode",
38392
+ "searchMark": "hpCk7W_searchMark",
38215
38393
  "searchSnippet": "hpCk7W_searchSnippet",
38216
- "dagObjectItem": "hpCk7W_dagObjectItem",
38217
- "researchMetrics": "hpCk7W_researchMetrics",
38218
- "edgeArrow": "hpCk7W_edgeArrow",
38219
- "relationshipCanvas": "hpCk7W_relationshipCanvas",
38220
- "benchmarkLegacy": "hpCk7W_benchmarkLegacy",
38221
- "relationRow": "hpCk7W_relationRow",
38222
- "taskSearch": "hpCk7W_taskSearch",
38223
- "taskCardTitle": "hpCk7W_taskCardTitle",
38224
- "researchReferenceOnly": "hpCk7W_researchReferenceOnly",
38225
- "taskIssueText": "hpCk7W_taskIssueText",
38394
+ "benchmarkMetrics": "hpCk7W_benchmarkMetrics",
38395
+ "taskDetail": "hpCk7W_taskDetail",
38396
+ "summaryEditor": "hpCk7W_summaryEditor",
38226
38397
  "relationD3Label": "hpCk7W_relationD3Label",
38227
- "primaryButton": "hpCk7W_primaryButton",
38228
- "modelHint": "hpCk7W_modelHint",
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",
38411
+ "benchmarkInputs": "hpCk7W_benchmarkInputs",
38229
38412
  "mdInline": "hpCk7W_mdInline",
38230
- "researchSources": "hpCk7W_researchSources",
38231
- "sidebarList": "hpCk7W_sidebarList",
38232
- "taskCardMain": "hpCk7W_taskCardMain",
38233
- "taskProgressTrack": "hpCk7W_taskProgressTrack",
38234
- "modelImpact": "hpCk7W_modelImpact",
38235
- "nodeTitle": "hpCk7W_nodeTitle",
38236
- "benchmarkStatus": "hpCk7W_benchmarkStatus",
38413
+ "taskSummaryBar": "hpCk7W_taskSummaryBar",
38414
+ "derivedOrigin": "hpCk7W_derivedOrigin",
38415
+ "overlayMark": "hpCk7W_overlayMark",
38416
+ "inlineInput": "hpCk7W_inlineInput",
38417
+ "researchMetrics": "hpCk7W_researchMetrics",
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",
38428
+ "groupChevron": "hpCk7W_groupChevron",
38429
+ "truncatedNote": "hpCk7W_truncatedNote",
38430
+ "derivedArrow": "hpCk7W_derivedArrow",
38431
+ "workflowStages": "hpCk7W_workflowStages",
38432
+ "taskDetailSummary": "hpCk7W_taskDetailSummary",
38433
+ "searchLocator": "hpCk7W_searchLocator",
38434
+ "assetRowMeta": "hpCk7W_assetRowMeta",
38435
+ "detailHeading": "hpCk7W_detailHeading",
38436
+ "taskCard": "hpCk7W_taskCard",
38437
+ "referenceUnits": "hpCk7W_referenceUnits",
38438
+ "modelChips": "hpCk7W_modelChips",
38439
+ "chevronPlaceholder": "hpCk7W_chevronPlaceholder",
38237
38440
  "modelGroup": "hpCk7W_modelGroup",
38441
+ "listBlockItems": "hpCk7W_listBlockItems",
38442
+ "bodyTextareaDirty": "hpCk7W_bodyTextareaDirty",
38238
38443
  "benchmarkTable": "hpCk7W_benchmarkTable",
38239
- "benchmarkProfiles": "hpCk7W_benchmarkProfiles",
38240
- "body": "hpCk7W_body",
38241
- "previewLine": "hpCk7W_previewLine",
38242
- "modelList": "hpCk7W_modelList",
38243
- "chevronPlaceholder": "hpCk7W_chevronPlaceholder",
38244
- "mainPane": "hpCk7W_mainPane",
38444
+ "detail": "hpCk7W_detail",
38245
38445
  "dagCanvas": "hpCk7W_dagCanvas",
38246
- "validationBlock": "hpCk7W_validationBlock",
38247
- "editorLabel": "hpCk7W_editorLabel",
38248
- "benchmarkUsage": "hpCk7W_benchmarkUsage",
38249
- "bodyTextarea": "hpCk7W_bodyTextarea",
38446
+ "detailToolbar": "hpCk7W_detailToolbar",
38447
+ "graphFilterRow": "hpCk7W_graphFilterRow",
38448
+ "benchmarkRunGroupHeader": "hpCk7W_benchmarkRunGroupHeader",
38449
+ "listBlock": "hpCk7W_listBlock",
38250
38450
  "assetRowName": "hpCk7W_assetRowName",
38251
- "modelRouteRow": "hpCk7W_modelRouteRow",
38252
- "groupHeader": "hpCk7W_groupHeader",
38253
- "treeChildren": "hpCk7W_treeChildren",
38254
- "editorActions": "hpCk7W_editorActions",
38255
- "truthSection": "hpCk7W_truthSection",
38256
- "modelApiKeyInput": "hpCk7W_modelApiKeyInput",
38257
- "benchmarkError": "hpCk7W_benchmarkError",
38258
- "dagDetailRow": "hpCk7W_dagDetailRow",
38259
- "modelActiveStatus": "hpCk7W_modelActiveStatus",
38260
- "assetMeta": "hpCk7W_assetMeta",
38261
- "libraryRoot": "hpCk7W_libraryRoot",
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",
38262
38459
  "graphNodeTitle": "hpCk7W_graphNodeTitle",
38263
- "relationNode": "hpCk7W_relationNode",
38264
- "dagPrimitiveList": "hpCk7W_dagPrimitiveList",
38265
- "profileChoice": "hpCk7W_profileChoice",
38266
- "researchSourceList": "hpCk7W_researchSourceList",
38267
- "detailBody": "hpCk7W_detailBody",
38268
- "searchResultActive": "hpCk7W_searchResultActive",
38269
- "previewPane": "hpCk7W_previewPane",
38270
- "previewHit": "hpCk7W_previewHit",
38460
+ "fieldRow": "hpCk7W_fieldRow",
38271
38461
  "scopeSelect": "hpCk7W_scopeSelect",
38272
- "relationshipDetail": "hpCk7W_relationshipDetail",
38273
- "relationFlowNodeShell": "hpCk7W_relationFlowNodeShell",
38274
- "taskCardHeader": "hpCk7W_taskCardHeader",
38275
- "actionButton": "hpCk7W_actionButton",
38276
- "taskRow": "hpCk7W_taskRow",
38277
- "modelUnsaved": "hpCk7W_modelUnsaved",
38278
- "dagRevisionAction": "hpCk7W_dagRevisionAction",
38279
- "researchFailure": "hpCk7W_researchFailure",
38280
- "dagStructuredRow": "hpCk7W_dagStructuredRow",
38281
- "tableScroll": "hpCk7W_tableScroll",
38282
- "modelEditor": "hpCk7W_modelEditor",
38283
- "relationFlowNode": "hpCk7W_relationFlowNode",
38284
- "taskChapter": "hpCk7W_taskChapter",
38285
- "referenceUnits": "hpCk7W_referenceUnits",
38462
+ "taskDetailError": "hpCk7W_taskDetailError",
38463
+ "chevronButton": "hpCk7W_chevronButton",
38464
+ "searchResultTitle": "hpCk7W_searchResultTitle",
38465
+ "dagWorkspace": "hpCk7W_dagWorkspace",
38466
+ "previewLine": "hpCk7W_previewLine",
38467
+ "paneHeading": "hpCk7W_paneHeading",
38468
+ "treeItem": "hpCk7W_treeItem",
38286
38469
  "buttonDanger": "hpCk7W_buttonDanger",
38287
- "derivedArrow": "hpCk7W_derivedArrow",
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",
38288
38477
  "searchResult": "hpCk7W_searchResult",
38478
+ "taskSearch": "hpCk7W_taskSearch",
38479
+ "fieldValue": "hpCk7W_fieldValue",
38289
38480
  "kindFilterRow": "hpCk7W_kindFilterRow",
38290
- "taskSummary": "hpCk7W_taskSummary",
38291
- "taskTime": "hpCk7W_taskTime",
38292
- "modelChips": "hpCk7W_modelChips",
38293
- "researchProvenance": "hpCk7W_researchProvenance",
38294
- "dagStructured": "hpCk7W_dagStructured",
38295
- "derivedNote": "hpCk7W_derivedNote",
38296
- "taskFailure": "hpCk7W_taskFailure",
38481
+ "taskIssuePriority": "hpCk7W_taskIssuePriority",
38482
+ "tag": "hpCk7W_tag",
38297
38483
  "derivedRelations": "hpCk7W_derivedRelations",
38298
- "relationBlock": "hpCk7W_relationBlock",
38299
- "taskList": "hpCk7W_taskList",
38300
- "modelDependencies": "hpCk7W_modelDependencies",
38301
- "searchResultPath": "hpCk7W_searchResultPath",
38302
- "benchmarkMetrics": "hpCk7W_benchmarkMetrics",
38303
- "modelActions": "hpCk7W_modelActions",
38304
- "root": "hpCk7W_root",
38305
- "detailToolbar": "hpCk7W_detailToolbar",
38484
+ "editorRow": "hpCk7W_editorRow",
38485
+ "relationChips": "hpCk7W_relationChips",
38306
38486
  "edgeLabel": "hpCk7W_edgeLabel",
38307
- "summaryTextarea": "hpCk7W_summaryTextarea",
38308
- "relationNote": "hpCk7W_relationNote",
38309
- "researchSearch": "hpCk7W_researchSearch",
38310
- "searchInput": "hpCk7W_searchInput",
38311
- "modelFormGrid": "hpCk7W_modelFormGrid",
38312
- "researchFilters": "hpCk7W_researchFilters",
38313
- "taskIssues": "hpCk7W_taskIssues",
38314
- "toolbar": "hpCk7W_toolbar",
38315
- "dagWorkspace": "hpCk7W_dagWorkspace",
38316
- "detailTitle": "hpCk7W_detailTitle",
38317
- "dagNodeContent": "hpCk7W_dagNodeContent",
38318
- "detailHeading": "hpCk7W_detailHeading",
38319
- "tree": "hpCk7W_tree",
38320
- "detailTitleRow": "hpCk7W_detailTitleRow",
38321
- "bodyTextareaDirty": "hpCk7W_bodyTextareaDirty",
38322
- "taskSummaryItem": "hpCk7W_taskSummaryItem",
38323
- "detailHeader": "hpCk7W_detailHeader",
38324
- "taskCardActions": "hpCk7W_taskCardActions",
38325
- "fieldRow": "hpCk7W_fieldRow",
38326
- "taskFields": "hpCk7W_taskFields",
38327
- "errorText": "hpCk7W_errorText",
38328
- "launchPanel": "hpCk7W_launchPanel",
38329
- "workflowStages": "hpCk7W_workflowStages",
38330
- "chip": "hpCk7W_chip",
38331
- "benchmarkRunGroup": "hpCk7W_benchmarkRunGroup",
38487
+ "taskList": "hpCk7W_taskList",
38332
38488
  "taskIssuesSummary": "hpCk7W_taskIssuesSummary",
38333
- "taskTimelineStep": "hpCk7W_taskTimelineStep",
38334
- "modelCheckbox": "hpCk7W_modelCheckbox",
38335
- "taskControls": "hpCk7W_taskControls",
38336
- "relationDimmed": "hpCk7W_relationDimmed",
38337
- "dagRoot": "hpCk7W_dagRoot",
38338
- "button": "hpCk7W_button",
38339
- "benchmarkRunGroupHeader": "hpCk7W_benchmarkRunGroupHeader",
38340
- "taskIssueSeverity": "hpCk7W_taskIssueSeverity",
38341
- "taskResult": "hpCk7W_taskResult",
38342
- "sidebar": "hpCk7W_sidebar",
38343
- "derivedTitle": "hpCk7W_derivedTitle",
38344
- "searchMark": "hpCk7W_searchMark",
38345
- "inlineInput": "hpCk7W_inlineInput",
38346
- "modelTabs": "hpCk7W_modelTabs",
38347
- "segmentButton": "hpCk7W_segmentButton",
38348
- "relationChip": "hpCk7W_relationChip",
38349
- "relationshipSvg": "hpCk7W_relationshipSvg",
38350
- "treeItem": "hpCk7W_treeItem",
38351
- "benchmarkSplit": "hpCk7W_benchmarkSplit",
38352
- "nodeSummary": "hpCk7W_nodeSummary",
38353
- "fieldList": "hpCk7W_fieldList",
38354
- "edge": "hpCk7W_edge",
38355
- "truncatedNote": "hpCk7W_truncatedNote",
38356
- "relationD3Links": "hpCk7W_relationD3Links",
38357
- "taskEvent": "hpCk7W_taskEvent",
38358
- "fieldKey": "hpCk7W_fieldKey",
38359
- "textarea": "hpCk7W_textarea",
38360
- "relationChips": "hpCk7W_relationChips",
38361
- "benchmarkOutputList": "hpCk7W_benchmarkOutputList",
38362
- "relationshipCanvasHeader": "hpCk7W_relationshipCanvasHeader",
38363
- "derivedRow": "hpCk7W_derivedRow",
38364
- "benchmarkRun": "hpCk7W_benchmarkRun",
38365
- "inlineRename": "hpCk7W_inlineRename",
38366
- "taskStatus": "hpCk7W_taskStatus",
38367
- "benchmarkResults": "hpCk7W_benchmarkResults",
38368
- "graphFilterRow": "hpCk7W_graphFilterRow",
38369
- "taskSummaryBar": "hpCk7W_taskSummaryBar",
38370
- "listBlockItems": "hpCk7W_listBlockItems",
38371
- "taskReviewMeta": "hpCk7W_taskReviewMeta",
38489
+ "relationshipStats": "hpCk7W_relationshipStats",
38490
+ "body": "hpCk7W_body",
38372
38491
  "sidebarEmpty": "hpCk7W_sidebarEmpty",
38373
- "taskIssueDim": "hpCk7W_taskIssueDim",
38374
- "linkButton": "hpCk7W_linkButton",
38375
- "graphColumnHeader": "hpCk7W_graphColumnHeader"
38492
+ "taskControls": "hpCk7W_taskControls",
38493
+ "dagRevisionAction": "hpCk7W_dagRevisionAction",
38494
+ "taskIssues": "hpCk7W_taskIssues",
38495
+ "relationFlowNodeShell": "hpCk7W_relationFlowNodeShell",
38496
+ "taskChapter": "hpCk7W_taskChapter"
38376
38497
  };
38377
38498
  //#endregion
38378
38499
  //#region src/client/VditorBody.tsx
@@ -38471,18 +38592,23 @@ window.__ModuleLoader__.load({
38471
38592
  }
38472
38593
  }
38473
38594
  /** One Vditor IR instance bound to the shell theme; destroyed on unmount. */
38474
- 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 }) {
38475
38596
  const hostRef = (0, react.useRef)(null);
38476
38597
  const overlayRef = (0, react.useRef)(null);
38477
38598
  const instanceRef = (0, react.useRef)(null);
38599
+ const serializationRef = (0, react.useRef)(void 0);
38478
38600
  const annotationsRef = (0, react.useRef)(annotations);
38479
38601
  annotationsRef.current = annotations;
38602
+ const annotationSourceRef = (0, react.useRef)(annotationSource);
38603
+ annotationSourceRef.current = annotationSource;
38480
38604
  const onInsertMarkerRef = (0, react.useRef)(onInsertMarker);
38481
38605
  onInsertMarkerRef.current = onInsertMarker;
38482
38606
  const onEditorApiRef = (0, react.useRef)(onEditorApi);
38483
38607
  onEditorApiRef.current = onEditorApi;
38484
38608
  const onChangeRef = (0, react.useRef)(onChange);
38485
38609
  onChangeRef.current = onChange;
38610
+ const onInputStateRef = (0, react.useRef)(onInputStateChange);
38611
+ onInputStateRef.current = onInputStateChange;
38486
38612
  const onFailedRef = (0, react.useRef)(onFailed);
38487
38613
  onFailedRef.current = onFailed;
38488
38614
  const onReadyRef = (0, react.useRef)(onReady);
@@ -38505,14 +38631,24 @@ window.__ModuleLoader__.load({
38505
38631
  document.addEventListener("mousedown", rememberPointer, true);
38506
38632
  const host = hostRef.current;
38507
38633
  let inputObserved = false;
38634
+ let pendingInput = false;
38508
38635
  let lastValue = initial;
38509
38636
  const emitChange = (value) => {
38510
- 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;
38511
38643
  lastValue = value;
38512
38644
  onChangeRef.current(value);
38513
38645
  };
38514
38646
  const rememberInput = () => {
38515
38647
  inputObserved = true;
38648
+ if (!pendingInput) {
38649
+ pendingInput = true;
38650
+ onInputStateRef.current?.(true);
38651
+ }
38516
38652
  };
38517
38653
  const flush = () => {
38518
38654
  const current = instanceRef.current;
@@ -38590,6 +38726,13 @@ window.__ModuleLoader__.load({
38590
38726
  }
38591
38727
  },
38592
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);
38593
38736
  onReadyRef.current();
38594
38737
  },
38595
38738
  input: (value) => {
@@ -38604,9 +38747,12 @@ window.__ModuleLoader__.load({
38604
38747
  const overlay = overlayRef.current;
38605
38748
  const editorHost = hostRef.current;
38606
38749
  if (overlay === null || editorHost === null) return;
38607
- 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"));
38608
38751
  };
38609
38752
  onEditorApiRef.current?.({
38753
+ getValue: () => instanceRef.current?.getValue() ?? "",
38754
+ getSerialization: () => serializationRef.current,
38755
+ flush,
38610
38756
  insertAtCaret: (markdown) => {
38611
38757
  const current = instanceRef.current;
38612
38758
  if (current === null || typeof current.insertValue !== "function") return;
@@ -38622,7 +38768,7 @@ window.__ModuleLoader__.load({
38622
38768
  const value = current.getValue();
38623
38769
  const occurrence = countOccurrences(value.slice(0, Math.max(0, start)), quote);
38624
38770
  if (revealNeedle(editorHost.querySelector(".vditor-ir") ?? editorHost, quote, occurrence) === null) return false;
38625
- onSelectionChangeRef.current?.(locateSelectedMarkdown(value, quote, occurrence));
38771
+ onSelectionChangeRef.current?.(locateSelectedMarkdown(value, quote, occurrence, serializationRef.current));
38626
38772
  refreshOverlay(value);
38627
38773
  return true;
38628
38774
  }
@@ -38652,7 +38798,7 @@ window.__ModuleLoader__.load({
38652
38798
  return;
38653
38799
  }
38654
38800
  const selected = (typeof current.getSelection === "function" ? current.getSelection() : native?.toString()) ?? "";
38655
- notify(locateSelectedMarkdown(current.getValue(), selected, occurrenceBeforeCaret(editorHost, selected)));
38801
+ notify(locateSelectedMarkdown(current.getValue(), selected, occurrenceBeforeCaret(editorHost, selected), serializationRef.current));
38656
38802
  };
38657
38803
  hostRef.current.addEventListener("mouseup", emitSelection);
38658
38804
  hostRef.current.addEventListener("keyup", emitSelection);
@@ -38695,9 +38841,9 @@ window.__ModuleLoader__.load({
38695
38841
  const instance = instanceRef.current;
38696
38842
  if (host === null || overlay === null || instance === null) return;
38697
38843
  try {
38698
- 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"));
38699
38845
  } catch {}
38700
- }, [annotations]);
38846
+ }, [annotations, annotationSource]);
38701
38847
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
38702
38848
  className: views_module_css_default.vditorFrame,
38703
38849
  "aria-disabled": disabled,
@@ -39327,183 +39473,183 @@ window.__ModuleLoader__.load({
39327
39473
  document.head.appendChild(tag);
39328
39474
  }
39329
39475
  var Workbench_module_css_default = {
39330
- "editorBoot": "Wik-wW_editorBoot",
39331
- "colorDot": "Wik-wW_colorDot",
39332
- "turnValuePair": "Wik-wW_turnValuePair",
39333
- "contextSection": "Wik-wW_contextSection",
39334
- "contextStale": "Wik-wW_contextStale",
39335
- "exportState": "Wik-wW_exportState",
39336
- "exportPreflightHeader": "Wik-wW_exportPreflightHeader",
39337
- "restoreWorkspace": "Wik-wW_restoreWorkspace",
39338
- "foreshadowBuckets": "Wik-wW_foreshadowBuckets",
39339
- "chapterButton": "Wik-wW_chapterButton",
39340
- "importPlan": "Wik-wW_importPlan",
39341
- "chapterSearch": "Wik-wW_chapterSearch",
39342
- "documentSkeleton": "Wik-wW_documentSkeleton",
39343
- "headerStatus": "Wik-wW_headerStatus",
39344
- "markerForm": "Wik-wW_markerForm",
39345
- "annotationList": "Wik-wW_annotationList",
39346
- "restorePreview": "Wik-wW_restorePreview",
39347
- "mentionCard": "Wik-wW_mentionCard",
39476
+ "headerIconButton": "Wik-wW_headerIconButton",
39477
+ "reviewStale": "Wik-wW_reviewStale",
39478
+ "centerNotice": "Wik-wW_centerNotice",
39479
+ "workspaceNav": "Wik-wW_workspaceNav",
39348
39480
  "turnTraceLink": "Wik-wW_turnTraceLink",
39349
- "annotateForm": "Wik-wW_annotateForm",
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",
39350
39487
  "acceptanceDetails": "Wik-wW_acceptanceDetails",
39351
- "turnMutationItem": "Wik-wW_turnMutationItem",
39352
- "versionList": "Wik-wW_versionList",
39353
- "turnPlanNotice": "Wik-wW_turnPlanNotice",
39354
- "exportControls": "Wik-wW_exportControls",
39355
- "turnEntityChanges": "Wik-wW_turnEntityChanges",
39356
- "exportPurpose": "Wik-wW_exportPurpose",
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",
39493
+ "chapterEmpty": "Wik-wW_chapterEmpty",
39494
+ "annotationHits": "Wik-wW_annotationHits",
39495
+ "operationSection": "Wik-wW_operationSection",
39496
+ "chapterMeta": "Wik-wW_chapterMeta",
39497
+ "commandButton": "Wik-wW_commandButton",
39498
+ "editorIdentity": "Wik-wW_editorIdentity",
39357
39499
  "issue": "Wik-wW_issue",
39358
- "contextSources": "Wik-wW_contextSources",
39359
- "transferColumns": "Wik-wW_transferColumns",
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",
39360
39507
  "issueList": "Wik-wW_issueList",
39361
- "chapterJump": "Wik-wW_chapterJump",
39362
- "transferList": "Wik-wW_transferList",
39363
- "connectionDot": "Wik-wW_connectionDot",
39508
+ "editorActions": "Wik-wW_editorActions",
39509
+ "inspectorBody": "Wik-wW_inspectorBody",
39510
+ "transferDetail": "Wik-wW_transferDetail",
39511
+ "mentionCard": "Wik-wW_mentionCard",
39512
+ "versionList": "Wik-wW_versionList",
39513
+ "foreshadowAction": "Wik-wW_foreshadowAction",
39364
39514
  "colorDots": "Wik-wW_colorDots",
39365
- "manuscriptFallback": "Wik-wW_manuscriptFallback",
39366
- "paneHeading": "Wik-wW_paneHeading",
39367
- "mentionHits": "Wik-wW_mentionHits",
39368
- "editorHeader": "Wik-wW_editorHeader",
39369
- "chapterList": "Wik-wW_chapterList",
39370
- "acceptanceHeader": "Wik-wW_acceptanceHeader",
39371
- "acceptanceCard": "Wik-wW_acceptanceCard",
39372
- "acceptanceMessage": "Wik-wW_acceptanceMessage",
39373
- "contextSectionBody": "Wik-wW_contextSectionBody",
39374
- "reviewStale": "Wik-wW_reviewStale",
39375
- "contextSectionButton": "Wik-wW_contextSectionButton",
39376
- "foreshadowActions": "Wik-wW_foreshadowActions",
39377
- "versionPreview": "Wik-wW_versionPreview",
39378
- "exportWorkspace": "Wik-wW_exportWorkspace",
39379
- "archiveCreate": "Wik-wW_archiveCreate",
39380
- "drawerClose": "Wik-wW_drawerClose",
39381
- "operationNote": "Wik-wW_operationNote",
39382
- "mobileTitle": "Wik-wW_mobileTitle",
39383
- "projectSwitchRow": "Wik-wW_projectSwitchRow",
39384
- "contextChipPopover": "Wik-wW_contextChipPopover",
39385
- "turnEntityChange": "Wik-wW_turnEntityChange",
39386
- "orderNotice": "Wik-wW_orderNotice",
39387
- "contextSections": "Wik-wW_contextSections",
39388
- "manuscriptEditor": "Wik-wW_manuscriptEditor",
39389
- "importPrepare": "Wik-wW_importPrepare",
39390
- "inspectorHeader": "Wik-wW_inspectorHeader",
39391
- "activityProgress": "Wik-wW_activityProgress",
39392
- "reviewSummary": "Wik-wW_reviewSummary",
39393
- "transferFailure": "Wik-wW_transferFailure",
39515
+ "exportPreflightHeader": "Wik-wW_exportPreflightHeader",
39516
+ "headerStatus": "Wik-wW_headerStatus",
39394
39517
  "contextChip": "Wik-wW_contextChip",
39395
- "writingProgress": "Wik-wW_writingProgress",
39396
- "contextManifest": "Wik-wW_contextManifest",
39397
- "foreshadowBucket": "Wik-wW_foreshadowBucket",
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",
39398
39523
  "workspaceRoot": "Wik-wW_workspaceRoot",
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",
39399
39529
  "transferWorkspace": "Wik-wW_transferWorkspace",
39400
- "proposalHunks": "Wik-wW_proposalHunks",
39401
- "headerUtilities": "Wik-wW_headerUtilities",
39402
- "readerChapter": "Wik-wW_readerChapter",
39403
- "chapterIndex": "Wik-wW_chapterIndex",
39530
+ "drawerClose": "Wik-wW_drawerClose",
39404
39531
  "historyNotice": "Wik-wW_historyNotice",
39405
- "desktopPaneButton": "Wik-wW_desktopPaneButton",
39406
- "headerMenu": "Wik-wW_headerMenu",
39407
- "turnPlanActions": "Wik-wW_turnPlanActions",
39408
- "recoveryBody": "Wik-wW_recoveryBody",
39409
- "reviewClosure": "Wik-wW_reviewClosure",
39410
- "annotationChip": "Wik-wW_annotationChip",
39411
- "saveState": "Wik-wW_saveState",
39412
- "recoveryBar": "Wik-wW_recoveryBar",
39413
- "contextFullText": "Wik-wW_contextFullText",
39414
- "proposalProvenance": "Wik-wW_proposalProvenance",
39415
- "transferPanel": "Wik-wW_transferPanel",
39416
- "transferDetail": "Wik-wW_transferDetail",
39417
- "contextChipRoot": "Wik-wW_contextChipRoot",
39418
- "archiveSummary": "Wik-wW_archiveSummary",
39419
- "conflictBar": "Wik-wW_conflictBar",
39420
- "contextOverview": "Wik-wW_contextOverview",
39421
39532
  "readerError": "Wik-wW_readerError",
39422
- "continuousReader": "Wik-wW_continuousReader",
39533
+ "reviewSummary": "Wik-wW_reviewSummary",
39423
39534
  "recoveryActions": "Wik-wW_recoveryActions",
39424
- "historyHeader": "Wik-wW_historyHeader",
39425
- "tabletInspectorButton": "Wik-wW_tabletInspectorButton",
39426
- "visuallyHidden": "Wik-wW_visuallyHidden",
39427
- "operationSection": "Wik-wW_operationSection",
39428
- "revisionPane": "Wik-wW_revisionPane",
39429
- "transferWorkspaceHeader": "Wik-wW_transferWorkspaceHeader",
39430
- "iconButton": "Wik-wW_iconButton",
39431
- "projectPath": "Wik-wW_projectPath",
39432
- "selectionPolish": "Wik-wW_selectionPolish",
39433
- "archivePlan": "Wik-wW_archivePlan",
39434
- "muted": "Wik-wW_muted",
39535
+ "historySection": "Wik-wW_historySection",
39435
39536
  "versionCard": "Wik-wW_versionCard",
39436
- "workspaceContent": "Wik-wW_workspaceContent",
39437
- "contextRetrieval": "Wik-wW_contextRetrieval",
39537
+ "acceptanceError": "Wik-wW_acceptanceError",
39538
+ "acceptanceActions": "Wik-wW_acceptanceActions",
39539
+ "readerChapter": "Wik-wW_readerChapter",
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",
39557
+ "recoveryBody": "Wik-wW_recoveryBody",
39558
+ "transferColumns": "Wik-wW_transferColumns",
39559
+ "exportPreflight": "Wik-wW_exportPreflight",
39438
39560
  "annotationQuote": "Wik-wW_annotationQuote",
39439
- "inspectorTabs": "Wik-wW_inspectorTabs",
39440
- "transferActions": "Wik-wW_transferActions",
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",
39441
39571
  "proposalTexts": "Wik-wW_proposalTexts",
39572
+ "exportPurpose": "Wik-wW_exportPurpose",
39573
+ "mobileTitle": "Wik-wW_mobileTitle",
39574
+ "headerMenu": "Wik-wW_headerMenu",
39575
+ "chapterText": "Wik-wW_chapterText",
39576
+ "contextRetrieval": "Wik-wW_contextRetrieval",
39577
+ "activityProgress": "Wik-wW_activityProgress",
39578
+ "inspectorHeader": "Wik-wW_inspectorHeader",
39579
+ "revisionPane": "Wik-wW_revisionPane",
39580
+ "inspectorSkeleton": "Wik-wW_inspectorSkeleton",
39581
+ "inspectorDrawerClose": "Wik-wW_inspectorDrawerClose",
39582
+ "versionPreview": "Wik-wW_versionPreview",
39583
+ "tabletInspectorButton": "Wik-wW_tabletInspectorButton",
39584
+ "projectSwitchRow": "Wik-wW_projectSwitchRow",
39585
+ "markerForm": "Wik-wW_markerForm",
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",
39596
+ "contextFullText": "Wik-wW_contextFullText",
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",
39442
39605
  "transferDetailHeader": "Wik-wW_transferDetailHeader",
39443
- "diffBlock": "Wik-wW_diffBlock",
39444
- "importStructure": "Wik-wW_importStructure",
39445
- "turnSummary": "Wik-wW_turnSummary",
39446
- "commandButton": "Wik-wW_commandButton",
39606
+ "transferActions": "Wik-wW_transferActions",
39447
39607
  "mobileBar": "Wik-wW_mobileBar",
39448
- "chapterEmpty": "Wik-wW_chapterEmpty",
39449
- "editorPane": "Wik-wW_editorPane",
39450
- "headerIconButton": "Wik-wW_headerIconButton",
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",
39451
39617
  "readerHeader": "Wik-wW_readerHeader",
39452
- "reviewRevisionActions": "Wik-wW_reviewRevisionActions",
39618
+ "chapterJump": "Wik-wW_chapterJump",
39619
+ "manuscriptEditor": "Wik-wW_manuscriptEditor",
39620
+ "turnMutationItem": "Wik-wW_turnMutationItem",
39621
+ "chapterIndex": "Wik-wW_chapterIndex",
39453
39622
  "readerContent": "Wik-wW_readerContent",
39454
- "acceptanceError": "Wik-wW_acceptanceError",
39455
- "creationRoot": "Wik-wW_creationRoot",
39456
- "acceptanceActions": "Wik-wW_acceptanceActions",
39623
+ "desktopPaneButton": "Wik-wW_desktopPaneButton",
39457
39624
  "foreshadowDetail": "Wik-wW_foreshadowDetail",
39458
- "archiveListItem": "Wik-wW_archiveListItem",
39459
- "dangerAction": "Wik-wW_dangerAction",
39625
+ "turnRevisionPair": "Wik-wW_turnRevisionPair",
39460
39626
  "exportIssues": "Wik-wW_exportIssues",
39461
- "chapterIdentity": "Wik-wW_chapterIdentity",
39462
- "studio": "Wik-wW_studio",
39463
- "projectCurrent": "Wik-wW_projectCurrent",
39464
- "inspectorDrawerClose": "Wik-wW_inspectorDrawerClose",
39465
- "inspectorNotice": "Wik-wW_inspectorNotice",
39466
- "annotationCard": "Wik-wW_annotationCard",
39467
- "contextExceptions": "Wik-wW_contextExceptions",
39468
- "exportSummaryGrid": "Wik-wW_exportSummaryGrid",
39469
- "contextChipField": "Wik-wW_contextChipField",
39470
- "editorActions": "Wik-wW_editorActions",
39471
- "activityCard": "Wik-wW_activityCard",
39627
+ "muted": "Wik-wW_muted",
39472
39628
  "chapterRail": "Wik-wW_chapterRail",
39473
- "annotationHits": "Wik-wW_annotationHits",
39474
- "inspectorBody": "Wik-wW_inspectorBody",
39475
- "contextBudgets": "Wik-wW_contextBudgets",
39476
- "draftStorageError": "Wik-wW_draftStorageError",
39477
- "proposalList": "Wik-wW_proposalList",
39478
- "centerNotice": "Wik-wW_centerNotice",
39479
- "chapterText": "Wik-wW_chapterText",
39480
- "editorIdentity": "Wik-wW_editorIdentity",
39481
- "activityPane": "Wik-wW_activityPane",
39482
- "contextItem": "Wik-wW_contextItem",
39483
- "chapterMeta": "Wik-wW_chapterMeta",
39484
- "inspectorSkeleton": "Wik-wW_inspectorSkeleton",
39485
- "historySection": "Wik-wW_historySection",
39486
- "exportPreflight": "Wik-wW_exportPreflight",
39487
- "externalLink": "Wik-wW_externalLink",
39488
- "contextChipError": "Wik-wW_contextChipError",
39489
- "chapterMove": "Wik-wW_chapterMove",
39629
+ "contextOverview": "Wik-wW_contextOverview",
39630
+ "restorePreview": "Wik-wW_restorePreview",
39631
+ "contextSection": "Wik-wW_contextSection",
39490
39632
  "exportChapterList": "Wik-wW_exportChapterList",
39491
- "stageRail": "Wik-wW_stageRail",
39492
- "contextChipBadge": "Wik-wW_contextChipBadge",
39493
39633
  "proposalCard": "Wik-wW_proposalCard",
39494
- "markerFields": "Wik-wW_markerFields",
39495
- "turnRevisionPair": "Wik-wW_turnRevisionPair",
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",
39640
+ "transferWorkspaceHeader": "Wik-wW_transferWorkspaceHeader",
39641
+ "mentionHits": "Wik-wW_mentionHits",
39642
+ "archiveSummary": "Wik-wW_archiveSummary",
39643
+ "workspaceContent": "Wik-wW_workspaceContent",
39496
39644
  "scrim": "Wik-wW_scrim",
39497
- "mentionCandidates": "Wik-wW_mentionCandidates",
39498
- "workspaceNav": "Wik-wW_workspaceNav",
39499
- "activityList": "Wik-wW_activityList",
39645
+ "projectCurrent": "Wik-wW_projectCurrent",
39500
39646
  "exportDetailSection": "Wik-wW_exportDetailSection",
39501
- "diffList": "Wik-wW_diffList",
39647
+ "paneHeading": "Wik-wW_paneHeading",
39648
+ "conflictBar": "Wik-wW_conflictBar",
39649
+ "editorHeader": "Wik-wW_editorHeader",
39650
+ "saveState": "Wik-wW_saveState",
39502
39651
  "contextChipHint": "Wik-wW_contextChipHint",
39503
- "chapterDrawerClose": "Wik-wW_chapterDrawerClose",
39504
- "chapterTitle": "Wik-wW_chapterTitle",
39505
- "foreshadowAction": "Wik-wW_foreshadowAction",
39506
- "inspector": "Wik-wW_inspector"
39652
+ "acceptanceMessage": "Wik-wW_acceptanceMessage"
39507
39653
  };
39508
39654
  //#endregion
39509
39655
  //#region src/client/ContinuousReader.tsx
@@ -40303,6 +40449,14 @@ window.__ModuleLoader__.load({
40303
40449
  const [insertDescription, setInsertDescription] = (0, react.useState)("");
40304
40450
  const [insertError, setInsertError] = (0, react.useState)("");
40305
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());
40306
40460
  const [readingOrder, setReadingOrder] = (0, react.useState)(null);
40307
40461
  const [readingOrderState, setReadingOrderState] = (0, react.useState)("idle");
40308
40462
  const [readingOrderError, setReadingOrderError] = (0, react.useState)("");
@@ -40382,6 +40536,9 @@ window.__ModuleLoader__.load({
40382
40536
  const documentIdentity = `${String(workbench.contextEpoch)}:${workspaceId ?? ""}:${activeChapter?.occurrenceId ?? ""}:${activeDocumentId}:${path}`;
40383
40537
  const documentIdentityRef = (0, react.useRef)(documentIdentity);
40384
40538
  documentIdentityRef.current = documentIdentity;
40539
+ const editorSessionKey = `${documentIdentity}:${editorEpoch}`;
40540
+ const editorSessionKeyRef = (0, react.useRef)(editorSessionKey);
40541
+ editorSessionKeyRef.current = editorSessionKey;
40385
40542
  const novelId = manuscriptNovelId(workbench.workspace, path);
40386
40543
  const draftIdentity = workspaceId !== void 0 && novelId !== "" && path !== "" ? {
40387
40544
  workspaceId,
@@ -40433,7 +40590,7 @@ window.__ModuleLoader__.load({
40433
40590
  index
40434
40591
  })).filter(({ chapter }) => normalizedQuery === "" || `${chapter.title} ${chapter.subtitle} ${chapter.path}`.toLocaleLowerCase().includes(normalizedQuery));
40435
40592
  const inspectorRequested = compactLayout ? rightOpen : inspectorVisible;
40436
- const hasUnsavedDraft = document_ !== null && draft !== savedContentRef.current;
40593
+ const hasUnsavedDraft = pendingEditorInput || document_ !== null && draft !== savedContentRef.current;
40437
40594
  const openContextSource = (0, react.useCallback)((relativePath) => {
40438
40595
  if (relativePath === "" || relativePath.endsWith("/")) return;
40439
40596
  const match = /^(data\/novels\/[^/]+)\//.exec(path);
@@ -40462,7 +40619,7 @@ window.__ModuleLoader__.load({
40462
40619
  workbench.epochs.assets,
40463
40620
  workbench.epochs.workspace
40464
40621
  ]);
40465
- (0, react.useEffect)(() => {
40622
+ (0, react.useLayoutEffect)(() => {
40466
40623
  mountedRef.current = true;
40467
40624
  return () => {
40468
40625
  mountedRef.current = false;
@@ -40532,6 +40689,7 @@ window.__ModuleLoader__.load({
40532
40689
  const loadDocument = (0, react.useCallback)(async (allowDiscard = false) => {
40533
40690
  if (path === "") return;
40534
40691
  const requestIdentity = documentIdentity;
40692
+ if (!allowDiscard) editorApiRef.current?.flush?.();
40535
40693
  if (dirtyRef.current && !allowDiscard) {
40536
40694
  workbenchStore.setEditorStatus("conflict", t("creation.changedElsewhere"));
40537
40695
  return;
@@ -40547,10 +40705,12 @@ window.__ModuleLoader__.load({
40547
40705
  if (!mountedRef.current || documentIdentityRef.current !== requestIdentity) return;
40548
40706
  setDocument(data);
40549
40707
  documentRef.current = data;
40708
+ setLoadedDocumentIdentity(requestIdentity);
40550
40709
  setDraft(data.content);
40551
40710
  draftRef.current = data.content;
40552
40711
  savedContentRef.current = data.content;
40553
40712
  dirtyRef.current = false;
40713
+ setPendingEditorInput(false);
40554
40714
  setEditorFailed(false);
40555
40715
  setEditorEpoch((value) => value + 1);
40556
40716
  setManuscriptSelection(null);
@@ -40560,6 +40720,7 @@ window.__ModuleLoader__.load({
40560
40720
  workbenchStore.setEditorStatus("saved");
40561
40721
  const requestDraftIdentity = draftIdentity;
40562
40722
  if (requestDraftIdentity !== null) try {
40723
+ await draftWriteChainRef.current;
40563
40724
  const stored = await manuscriptDraftStore.load(requestDraftIdentity);
40564
40725
  if (!mountedRef.current || documentIdentityRef.current !== requestIdentity) return;
40565
40726
  if (stored !== null && stored.content !== data.content) setRecoveryDraft(stored);
@@ -40584,6 +40745,7 @@ window.__ModuleLoader__.load({
40584
40745
  ]);
40585
40746
  (0, react.useEffect)(() => {
40586
40747
  documentRef.current = null;
40748
+ setPendingEditorInput(false);
40587
40749
  setRecoveryDraft(null);
40588
40750
  setDraftStorageError("");
40589
40751
  saveQueuedRef.current = false;
@@ -40824,6 +40986,7 @@ window.__ModuleLoader__.load({
40824
40986
  }, [path, workspaceId]);
40825
40987
  (0, react.useEffect)(() => {
40826
40988
  const beforeUnload = (event) => {
40989
+ editorApiRef.current?.flush?.();
40827
40990
  if (!dirtyRef.current) return;
40828
40991
  event.preventDefault();
40829
40992
  event.returnValue = "";
@@ -40842,6 +41005,7 @@ window.__ModuleLoader__.load({
40842
41005
  return () => window.removeEventListener("keydown", closeOnEscape);
40843
41006
  }, [leftOpen, rightOpen]);
40844
41007
  const save = (0, react.useCallback)(async (force = false, origin = "autosave") => {
41008
+ editorApiRef.current?.flush?.();
40845
41009
  if (saveTimerRef.current !== null) {
40846
41010
  window.clearTimeout(saveTimerRef.current);
40847
41011
  saveTimerRef.current = null;
@@ -40961,11 +41125,17 @@ window.__ModuleLoader__.load({
40961
41125
  postStudioApi,
40962
41126
  t
40963
41127
  ]);
40964
- const persistDraft = (value, previousValue) => {
40965
- const identity = draftIdentityRef.current;
40966
- 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;
40967
41137
  if (identity === null || currentDocument === null) return;
40968
- if (value === savedContentRef.current) {
41138
+ if (value === (owner === void 0 ? savedContentRef.current : owner.document.content)) {
40969
41139
  queueDraftOperation(identity, () => manuscriptDraftStore.removeIfContent(identity, previousValue));
40970
41140
  return;
40971
41141
  }
@@ -40981,7 +41151,12 @@ window.__ModuleLoader__.load({
40981
41151
  };
40982
41152
  queueDraftOperation(identity, () => manuscriptDraftStore.save(record));
40983
41153
  };
40984
- 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
+ }
40985
41160
  const previousValue = draftRef.current;
40986
41161
  setDraft(value);
40987
41162
  draftRef.current = value;
@@ -40995,11 +41170,16 @@ window.__ModuleLoader__.load({
40995
41170
  saveRef.current();
40996
41171
  }, 1200);
40997
41172
  };
41173
+ const markEditorInput = (pending, key) => {
41174
+ if (!mountedRef.current || key !== editorSessionKeyRef.current || discardedEditorsRef.current.has(key)) return;
41175
+ setPendingEditorInput(pending);
41176
+ };
40998
41177
  const restoreRecoveryDraft = () => {
40999
41178
  const stored = recoveryDraft;
41000
41179
  const currentDocument = documentRef.current;
41001
41180
  if (stored === null || currentDocument === null) return;
41002
41181
  const staleBase = stored.baseRevision !== currentDocument.revision;
41182
+ discardedEditorsRef.current.add(editorSessionKeyRef.current);
41003
41183
  setRecoveryDraft(null);
41004
41184
  setDraft(stored.content);
41005
41185
  draftRef.current = stored.content;
@@ -41023,6 +41203,15 @@ window.__ModuleLoader__.load({
41023
41203
  const identity = stored;
41024
41204
  queueDraftOperation(identity, () => manuscriptDraftStore.removeIfContent(identity, stored.content));
41025
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
+ };
41026
41215
  const chooseChapter = (nextPath, nextOccurrenceId = "") => {
41027
41216
  if (nextPath === path) {
41028
41217
  setActiveOccurrenceId(nextOccurrenceId);
@@ -41030,7 +41219,11 @@ window.__ModuleLoader__.load({
41030
41219
  setLeftOpen(false);
41031
41220
  return;
41032
41221
  }
41033
- 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
+ }
41034
41227
  dirtyRef.current = false;
41035
41228
  setActiveOccurrenceId(nextOccurrenceId);
41036
41229
  workbenchStore.setActiveChapter(nextPath);
@@ -41051,6 +41244,7 @@ window.__ModuleLoader__.load({
41051
41244
  ]);
41052
41245
  const moveActiveChapter = async () => {
41053
41246
  if (readingOrder === null || activeChapter === void 0 || moveBusy || moveVolumeId === "") return;
41247
+ editorApiRef.current?.flush?.();
41054
41248
  if (dirtyRef.current) {
41055
41249
  await saveRef.current(false, "manual");
41056
41250
  if (dirtyRef.current) return;
@@ -41127,7 +41321,9 @@ window.__ModuleLoader__.load({
41127
41321
  }
41128
41322
  };
41129
41323
  const reload = () => {
41324
+ editorApiRef.current?.flush?.();
41130
41325
  if (dirtyRef.current && !window.confirm(t("creation.discardConfirm"))) return;
41326
+ discardEditorDraft();
41131
41327
  dirtyRef.current = false;
41132
41328
  loadDocument(true);
41133
41329
  };
@@ -41153,6 +41349,7 @@ window.__ModuleLoader__.load({
41153
41349
  };
41154
41350
  const createNamedSnapshot = async () => {
41155
41351
  if (historyBusy !== "") return;
41352
+ editorApiRef.current?.flush?.();
41156
41353
  if (dirtyRef.current) {
41157
41354
  await saveRef.current(false, "manual");
41158
41355
  if (dirtyRef.current) return;
@@ -41252,6 +41449,7 @@ window.__ModuleLoader__.load({
41252
41449
  const selection = manuscriptSelectionRef.current;
41253
41450
  const id = chapterId(path);
41254
41451
  if (selection === null || selectionBusy !== "" || id === "") return;
41452
+ editorApiRef.current?.flush?.();
41255
41453
  if (dirtyRef.current) {
41256
41454
  await saveRef.current(false, "manual");
41257
41455
  if (dirtyRef.current) {
@@ -41263,13 +41461,18 @@ window.__ModuleLoader__.load({
41263
41461
  kind,
41264
41462
  chapterId: id,
41265
41463
  selection,
41464
+ documentContent: documentRef.current?.content ?? "",
41266
41465
  documentRevision: documentRef.current?.revision ?? "",
41267
41466
  reviewRevision: workBrief?.review.review_revision ?? "",
41268
41467
  reviewFresh: reviewCasReady,
41269
- 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
+ })
41270
41473
  });
41271
41474
  if (!request.ok) {
41272
- 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"));
41273
41476
  return;
41274
41477
  }
41275
41478
  setSelectionBusy(kind);
@@ -41292,6 +41495,7 @@ window.__ModuleLoader__.load({
41292
41495
  const selection = manuscriptSelectionRef.current;
41293
41496
  const id = chapterId(path);
41294
41497
  if (selection === null || annotateBusy || id === "") return;
41498
+ editorApiRef.current?.flush?.();
41295
41499
  if (unsavedAnnotationGuard(dirtyRef.current) === "save-first") {
41296
41500
  await saveRef.current(false, "manual");
41297
41501
  if (dirtyRef.current) {
@@ -41299,7 +41503,13 @@ window.__ModuleLoader__.load({
41299
41503
  return;
41300
41504
  }
41301
41505
  }
41302
- 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
+ });
41303
41513
  if (live === null) {
41304
41514
  setSelectionNotice(t("creation.notes.rangeLost"));
41305
41515
  return;
@@ -41334,19 +41544,17 @@ window.__ModuleLoader__.load({
41334
41544
  }
41335
41545
  };
41336
41546
  const locateAnnotation = (item) => {
41337
- 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);
41338
41550
  if (live.state === "detached") {
41339
41551
  setSelectionNotice(t("creation.notes.detached"));
41340
41552
  return;
41341
41553
  }
41342
- const next = {
41343
- start: live.start,
41344
- end: live.end,
41345
- text: item.quote
41346
- };
41554
+ const next = manuscriptSelectionFromRange(editorContent, live.start, live.end, serialization);
41347
41555
  manuscriptSelectionRef.current = next;
41348
41556
  setManuscriptSelection(next);
41349
- editorApi?.revealQuote(item.quote, live.start);
41557
+ editorApi?.revealQuote(next.text, live.start);
41350
41558
  setSelectionNotice(t(live.state === "relocated" ? "creation.notes.relocated" : "creation.notes.attached"));
41351
41559
  };
41352
41560
  const resolveAnnotation = async (item) => {
@@ -42153,7 +42361,7 @@ window.__ModuleLoader__.load({
42153
42361
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(import_lucide_react.RefreshCw, { size: 15 }), t("retry")]
42154
42362
  })]
42155
42363
  }),
42156
- !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", {
42157
42365
  className: Workbench_module_css_default.manuscriptEditor,
42158
42366
  "aria-busy": !editorReady && !editorFailed,
42159
42367
  children: [
@@ -42240,20 +42448,23 @@ window.__ModuleLoader__.load({
42240
42448
  }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(VditorBody, {
42241
42449
  initial: draft,
42242
42450
  disabled: false,
42243
- onChange: updateDraft,
42451
+ onChange: (value) => updateDraft(value, editorOwner),
42452
+ flushOnLeave: true,
42453
+ onInputStateChange: (pending) => markEditorInput(pending, editorSessionKey),
42244
42454
  onSelectionChange: updateManuscriptSelection,
42245
42455
  annotations,
42456
+ annotationSource: document_?.content,
42246
42457
  onInsertMarker: () => {
42247
42458
  setInsertOpen(true);
42248
42459
  setInsertError("");
42249
42460
  },
42250
- onEditorApi: setEditorApi,
42461
+ onEditorApi: bindEditorApi,
42251
42462
  onReady: () => setEditorReady(true),
42252
42463
  onFailed: () => {
42253
42464
  setEditorReady(true);
42254
42465
  setEditorFailed(true);
42255
42466
  }
42256
- }, `${path}:${editorEpoch}`),
42467
+ }, editorSessionKey),
42257
42468
  !editorReady && !editorFailed && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
42258
42469
  className: Workbench_module_css_default.editorBoot,
42259
42470
  role: "status",
@@ -42650,7 +42861,7 @@ window.__ModuleLoader__.load({
42650
42861
  }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
42651
42862
  className: Workbench_module_css_default.annotationList,
42652
42863
  children: annotations.map((item) => {
42653
- const live = liveAnnotationAnchor(draft, item);
42864
+ const live = liveAnnotationAnchor(draft, item, document_?.content);
42654
42865
  const stateKey = item.status === "resolved" ? "creation.notes.resolved" : live.state === "detached" ? "creation.notes.detached" : live.state === "relocated" ? "creation.notes.relocated" : "creation.notes.attached";
42655
42866
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("article", {
42656
42867
  className: Workbench_module_css_default.annotationCard,
@@ -146261,6 +146472,10 @@ window.__ModuleLoader__.load({
146261
146472
  className: views_module_css_default.taskError,
146262
146473
  children: workflow.error
146263
146474
  }),
146475
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
146476
+ className: views_module_css_default.taskSummary,
146477
+ children: t("graph.workflow.executionHint")
146478
+ }),
146264
146479
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
146265
146480
  className: views_module_css_default.workflowStages,
146266
146481
  children: workflow.stages.map((stage) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
@@ -146269,6 +146484,10 @@ window.__ModuleLoader__.load({
146269
146484
  title: stage.message !== "" ? stage.message : void 0,
146270
146485
  children: stage.name
146271
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")
146272
146491
  })
146273
146492
  ]
146274
146493
  }, workflow.chapterId))),
@@ -146457,35 +146676,35 @@ window.__ModuleLoader__.load({
146457
146676
  document.head.appendChild(tag);
146458
146677
  }
146459
146678
  var SceneWorkbench_module_css_default = {
146460
- "primaryButton": "NpkHjW_primaryButton",
146461
- "notice": "NpkHjW_notice",
146462
- "chapter": "NpkHjW_chapter",
146679
+ "confirmRow": "NpkHjW_confirmRow",
146680
+ "header": "NpkHjW_header",
146681
+ "button": "NpkHjW_button",
146682
+ "count": "NpkHjW_count",
146683
+ "sceneId": "NpkHjW_sceneId",
146463
146684
  "formGrid": "NpkHjW_formGrid",
146685
+ "sceneHeading": "NpkHjW_sceneHeading",
146686
+ "root": "NpkHjW_root",
146464
146687
  "rollbackRow": "NpkHjW_rollbackRow",
146465
- "good": "NpkHjW_good",
146466
- "editor": "NpkHjW_editor",
146467
- "actions": "NpkHjW_actions",
146468
- "moveRow": "NpkHjW_moveRow",
146469
- "sceneCard": "NpkHjW_sceneCard",
146470
- "missingNotice": "NpkHjW_missingNotice",
146471
- "sceneList": "NpkHjW_sceneList",
146472
146688
  "migration": "NpkHjW_migration",
146473
- "migrationHeading": "NpkHjW_migrationHeading",
146474
- "previewIssues": "NpkHjW_previewIssues",
146475
- "sceneId": "NpkHjW_sceneId",
146476
- "count": "NpkHjW_count",
146477
- "metadataGrid": "NpkHjW_metadataGrid",
146689
+ "missingNotice": "NpkHjW_missingNotice",
146478
146690
  "orderToolbar": "NpkHjW_orderToolbar",
146479
- "confirmRow": "NpkHjW_confirmRow",
146480
146691
  "bad": "NpkHjW_bad",
146481
146692
  "issuePanel": "NpkHjW_issuePanel",
146482
- "header": "NpkHjW_header",
146483
- "sceneHeading": "NpkHjW_sceneHeading",
146484
- "button": "NpkHjW_button",
146485
- "statusRow": "NpkHjW_statusRow",
146486
- "previewList": "NpkHjW_previewList",
146693
+ "sceneCard": "NpkHjW_sceneCard",
146694
+ "migrationHeading": "NpkHjW_migrationHeading",
146695
+ "notice": "NpkHjW_notice",
146696
+ "actions": "NpkHjW_actions",
146697
+ "editor": "NpkHjW_editor",
146698
+ "primaryButton": "NpkHjW_primaryButton",
146699
+ "sceneList": "NpkHjW_sceneList",
146700
+ "metadataGrid": "NpkHjW_metadataGrid",
146487
146701
  "inlineWarning": "NpkHjW_inlineWarning",
146488
- "root": "NpkHjW_root"
146702
+ "chapter": "NpkHjW_chapter",
146703
+ "moveRow": "NpkHjW_moveRow",
146704
+ "good": "NpkHjW_good",
146705
+ "previewList": "NpkHjW_previewList",
146706
+ "statusRow": "NpkHjW_statusRow",
146707
+ "previewIssues": "NpkHjW_previewIssues"
146489
146708
  };
146490
146709
  //#endregion
146491
146710
  //#region src/client/SceneWorkbench.tsx
@@ -149553,71 +149772,71 @@ window.__ModuleLoader__.load({
149553
149772
  document.head.appendChild(tag);
149554
149773
  }
149555
149774
  var BenchmarkView_module_css_default = {
149556
- "taskFailure": "za6_jG_taskFailure",
149557
- "pageIcon": "za6_jG_pageIcon",
149558
- "workload": "za6_jG_workload",
149559
- "profileChoice": "za6_jG_profileChoice",
149560
- "benchmarkProvenance": "za6_jG_benchmarkProvenance",
149561
- "resultPlaceholder": "za6_jG_resultPlaceholder",
149775
+ "benchmarkSplit": "za6_jG_benchmarkSplit",
149776
+ "primaryButton": "za6_jG_primaryButton",
149777
+ "runHeading": "za6_jG_runHeading",
149562
149778
  "taskProgress": "za6_jG_taskProgress",
149563
- "runId": "za6_jG_runId",
149564
- "spin": "za6_jG_spin",
149565
- "pageIdentity": "za6_jG_pageIdentity",
149566
- "executionRecord": "za6_jG_executionRecord",
149779
+ "modelPicker": "za6_jG_modelPicker",
149780
+ "loading": "za6_jG_loading",
149781
+ "benchmarkSummary": "za6_jG_benchmarkSummary",
149782
+ "taskSelector": "za6_jG_taskSelector",
149567
149783
  "benchmarkInputs": "za6_jG_benchmarkInputs",
149568
- "benchmarkRuns": "za6_jG_benchmarkRuns",
149569
- "benchmarkSection": "za6_jG_benchmarkSection",
149570
- "root": "za6_jG_root",
149571
- "primaryButton": "za6_jG_primaryButton",
149572
- "benchmarkSources": "za6_jG_benchmarkSources",
149573
- "pipelineNodes": "za6_jG_pipelineNodes",
149574
- "taskError": "za6_jG_taskError",
149784
+ "configFields": "za6_jG_configFields",
149785
+ "count": "za6_jG_count",
149786
+ "runList": "za6_jG_runList",
149575
149787
  "benchmarkRunGroupHeader": "za6_jG_benchmarkRunGroupHeader",
149788
+ "taskFailure": "za6_jG_taskFailure",
149789
+ "pageHeader": "za6_jG_pageHeader",
149790
+ "launchBar": "za6_jG_launchBar",
149791
+ "executionRecord": "za6_jG_executionRecord",
149792
+ "runScore": "za6_jG_runScore",
149793
+ "body": "za6_jG_body",
149794
+ "notice": "za6_jG_notice",
149795
+ "benchmarkControls": "za6_jG_benchmarkControls",
149796
+ "modelGroup": "za6_jG_modelGroup",
149576
149797
  "benchmarkLegacy": "za6_jG_benchmarkLegacy",
149577
- "benchmarkOutputList": "za6_jG_benchmarkOutputList",
149578
- "loading": "za6_jG_loading",
149579
- "runList": "za6_jG_runList",
149580
- "benchmarkResults": "za6_jG_benchmarkResults",
149798
+ "reviewWarning": "za6_jG_reviewWarning",
149799
+ "benchmark": "za6_jG_benchmark",
149581
149800
  "pipelineHeading": "za6_jG_pipelineHeading",
149582
- "metadataSection": "za6_jG_metadataSection",
149583
- "notice": "za6_jG_notice",
149584
- "taskSelector": "za6_jG_taskSelector",
149585
149801
  "tableScroll": "za6_jG_tableScroll",
149586
- "benchmark": "za6_jG_benchmark",
149587
- "benchmarkCost": "za6_jG_benchmarkCost",
149588
- "modelPicker": "za6_jG_modelPicker",
149589
149802
  "benchmarkPhases": "za6_jG_benchmarkPhases",
149590
- "benchmarkOutput": "za6_jG_benchmarkOutput",
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",
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",
149817
+ "runId": "za6_jG_runId",
149818
+ "pipelineNodes": "za6_jG_pipelineNodes",
149591
149819
  "benchmarkProfiles": "za6_jG_benchmarkProfiles",
149820
+ "benchmarkRunGroup": "za6_jG_benchmarkRunGroup",
149592
149821
  "benchmarkStatus": "za6_jG_benchmarkStatus",
149593
- "reviewWarning": "za6_jG_reviewWarning",
149594
- "count": "za6_jG_count",
149595
- "benchmarkMetrics": "za6_jG_benchmarkMetrics",
149596
- "scopeHint": "za6_jG_scopeHint",
149597
- "runHeading": "za6_jG_runHeading",
149598
- "benchmarkError": "za6_jG_benchmarkError",
149599
- "spinning": "za6_jG_spinning",
149600
149822
  "advancedInputs": "za6_jG_advancedInputs",
149823
+ "benchmarkSources": "za6_jG_benchmarkSources",
149824
+ "benchmarkCost": "za6_jG_benchmarkCost",
149825
+ "workload": "za6_jG_workload",
149826
+ "benchmarkProvenance": "za6_jG_benchmarkProvenance",
149827
+ "benchmarkSection": "za6_jG_benchmarkSection",
149828
+ "profileChoice": "za6_jG_profileChoice",
149601
149829
  "benchmarkUsage": "za6_jG_benchmarkUsage",
149602
- "modelGroups": "za6_jG_modelGroups",
149603
- "modelGroup": "za6_jG_modelGroup",
149604
- "benchmarkSummary": "za6_jG_benchmarkSummary",
149605
- "pipeline": "za6_jG_pipeline",
149606
- "benchmarkTable": "za6_jG_benchmarkTable",
149607
- "benchmarkRun": "za6_jG_benchmarkRun",
149608
- "advanced": "za6_jG_advanced",
149609
- "sectionHeading": "za6_jG_sectionHeading",
149610
- "runScore": "za6_jG_runScore",
149611
- "benchmarkSplit": "za6_jG_benchmarkSplit",
149612
- "benchmarkRunGroup": "za6_jG_benchmarkRunGroup",
149613
- "launchBar": "za6_jG_launchBar",
149614
- "body": "za6_jG_body",
149615
- "historyHeading": "za6_jG_historyHeading",
149616
- "benchmarkControls": "za6_jG_benchmarkControls",
149830
+ "benchmarkResults": "za6_jG_benchmarkResults",
149617
149831
  "benchmarkCellStack": "za6_jG_benchmarkCellStack",
149618
- "configFields": "za6_jG_configFields",
149619
- "pageHeader": "za6_jG_pageHeader",
149620
- "button": "za6_jG_button"
149832
+ "benchmarkOutput": "za6_jG_benchmarkOutput",
149833
+ "spinning": "za6_jG_spinning",
149834
+ "button": "za6_jG_button",
149835
+ "benchmarkRun": "za6_jG_benchmarkRun",
149836
+ "spin": "za6_jG_spin",
149837
+ "pipeline": "za6_jG_pipeline",
149838
+ "benchmarkError": "za6_jG_benchmarkError",
149839
+ "benchmarkMetrics": "za6_jG_benchmarkMetrics"
149621
149840
  };
149622
149841
  //#endregion
149623
149842
  //#region src/client/benchmark-options.ts
@@ -151277,6 +151496,8 @@ window.__ModuleLoader__.load({
151277
151496
  model: "",
151278
151497
  base_url: "",
151279
151498
  api_format: "chat",
151499
+ auth_source: "api_key",
151500
+ workspace_id: "",
151280
151501
  context_tokens: "64000",
151281
151502
  max_output_tokens: "24000",
151282
151503
  temperature: "0.7",
@@ -151437,6 +151658,8 @@ window.__ModuleLoader__.load({
151437
151658
  model: p.model,
151438
151659
  base_url: p.base_url,
151439
151660
  api_format: p.api_format || "chat",
151661
+ auth_source: p.auth_source || "api_key",
151662
+ workspace_id: p.workspace_id || "",
151440
151663
  context_tokens: String(p.context_tokens),
151441
151664
  max_output_tokens: String(p.max_output_tokens),
151442
151665
  temperature: String(p.temperature),
@@ -151638,7 +151861,7 @@ window.__ModuleLoader__.load({
151638
151861
  temperature: Number(form.temperature),
151639
151862
  timeout_seconds: Number(form.timeout_seconds)
151640
151863
  };
151641
- if (!form.api_key) delete payload.api_key;
151864
+ if (!form.api_key || form.auth_source === "opencode_console") delete payload.api_key;
151642
151865
  await postStudioApi("/model/profiles", payload);
151643
151866
  clearSavedDraft(memoryKey, "chat", snapshot(form));
151644
151867
  discardedSections.current.add("chat");
@@ -151747,7 +151970,7 @@ window.__ModuleLoader__.load({
151747
151970
  max_tokens: Number(embedding.max_tokens),
151748
151971
  api_key: embedding.provider === "openai" ? embedding.api_key : ""
151749
151972
  };
151750
- if (!target.api_key) delete target.api_key;
151973
+ if (!target.api_key || kind === "chat" && form.auth_source === "opencode_console") delete target.api_key;
151751
151974
  const result = parseConnectionTestResult(await postStudioApi(kind === "chat" ? "/model/test" : "/model/embedding/test", target));
151752
151975
  const vectorInfo = kind === "embedding" && result.dimension !== null ? ` · ${t("models.vectorDimension")}: ${Math.round(result.dimension)}` + (result.vectors !== null ? ` · ${t("models.vectorCount")}: ${Math.round(result.vectors)}` : "") : "";
151753
151976
  outcome = {
@@ -152047,6 +152270,7 @@ window.__ModuleLoader__.load({
152047
152270
  })] }),
152048
152271
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", { children: [t("models.provider"), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
152049
152272
  value: form.provider,
152273
+ disabled: form.auth_source === "opencode_console",
152050
152274
  onChange: (e) => setField("provider", e.target.value),
152051
152275
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
152052
152276
  value: "openai",
@@ -152074,10 +152298,12 @@ window.__ModuleLoader__.load({
152074
152298
  children: [
152075
152299
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", { children: [t("models.baseUrl"), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
152076
152300
  value: form.base_url,
152301
+ disabled: form.auth_source === "opencode_console",
152077
152302
  onChange: (e) => setField("base_url", e.target.value)
152078
152303
  })] }),
152079
152304
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", { children: [t("models.apiFormat"), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
152080
152305
  value: form.api_format,
152306
+ disabled: form.auth_source === "opencode_console",
152081
152307
  onChange: (e) => setField("api_format", e.target.value)
152082
152308
  })] }),
152083
152309
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", { children: [t("models.timeout"), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
@@ -152124,7 +152350,34 @@ window.__ModuleLoader__.load({
152124
152350
  className: views_module_css_default.modelGroupTitle,
152125
152351
  children: t("models.group.credentials")
152126
152352
  }),
152127
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
152353
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", { children: [t("models.authSource"), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
152354
+ "aria-label": t("models.authSource"),
152355
+ value: form.auth_source,
152356
+ onChange: (e) => {
152357
+ const source = e.target.value;
152358
+ discardedSections.current.delete("chat");
152359
+ setForm((current) => source === "opencode_console" ? {
152360
+ ...current,
152361
+ auth_source: source,
152362
+ provider: "openai",
152363
+ api_format: "chat",
152364
+ base_url: "https://opencode.ai/inference/go/openai/v1",
152365
+ model: "deepseek-v4.1-flash",
152366
+ api_key: ""
152367
+ } : {
152368
+ ...current,
152369
+ auth_source: source
152370
+ });
152371
+ },
152372
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
152373
+ value: "api_key",
152374
+ children: t("models.authApiKey")
152375
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
152376
+ value: "opencode_console",
152377
+ children: t("models.authConsole")
152378
+ })]
152379
+ })] }),
152380
+ form.auth_source === "opencode_console" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", { children: t("models.consoleHint") }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
152128
152381
  className: views_module_css_default.modelApiKeyInput,
152129
152382
  type: "password",
152130
152383
  "aria-label": t("models.group.credentials"),
@@ -152132,15 +152385,23 @@ window.__ModuleLoader__.load({
152132
152385
  value: form.api_key,
152133
152386
  onChange: (e) => setField("api_key", e.target.value),
152134
152387
  placeholder: t("models.credentialHint")
152135
- }),
152136
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
152388
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
152137
152389
  className: views_module_css_default.modelCheckbox,
152138
152390
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
152139
152391
  type: "checkbox",
152140
152392
  checked: form.remember_api_key,
152141
152393
  onChange: (e) => setField("remember_api_key", e.target.checked)
152142
152394
  }), t("models.remember")]
152143
- })
152395
+ })] }),
152396
+ form.base_url.startsWith("https://opencode.ai/") && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", { children: [
152397
+ t("models.goWorkspace"),
152398
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
152399
+ "aria-label": t("models.goWorkspace"),
152400
+ value: form.workspace_id,
152401
+ onChange: (e) => setField("workspace_id", e.target.value)
152402
+ }),
152403
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("models.goWorkspaceHint") })
152404
+ ] })
152144
152405
  ]
152145
152406
  }),
152146
152407
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("fieldset", {
@@ -154129,14 +154390,14 @@ window.__ModuleLoader__.load({
154129
154390
  document.head.appendChild(tag);
154130
154391
  }
154131
154392
  var SerialWritingView_module_css_default = {
154393
+ "controls": "lkYR5a_controls",
154394
+ "notice": "lkYR5a_notice",
154395
+ "error": "lkYR5a_error",
154132
154396
  "warning": "lkYR5a_warning",
154397
+ "overlap": "lkYR5a_overlap",
154133
154398
  "root": "lkYR5a_root",
154134
- "scroll": "lkYR5a_scroll",
154135
- "error": "lkYR5a_error",
154136
154399
  "facts": "lkYR5a_facts",
154137
- "notice": "lkYR5a_notice",
154138
- "overlap": "lkYR5a_overlap",
154139
- "controls": "lkYR5a_controls"
154400
+ "scroll": "lkYR5a_scroll"
154140
154401
  };
154141
154402
  //#endregion
154142
154403
  //#region src/client/SerialWritingView.tsx
@@ -155737,16 +155998,16 @@ window.__ModuleLoader__.load({
155737
155998
  document.head.appendChild(tag);
155738
155999
  }
155739
156000
  var DomainToolCard_module_css_default = {
155740
- "toolName": "Pzee0G_toolName",
155741
156001
  "summary": "Pzee0G_summary",
155742
- "spin": "Pzee0G_spin",
156002
+ "card": "Pzee0G_card",
155743
156003
  "body": "Pzee0G_body",
156004
+ "toolName": "Pzee0G_toolName",
155744
156005
  "family": "Pzee0G_family",
155745
156006
  "row": "Pzee0G_row",
155746
- "card": "Pzee0G_card",
155747
- "chevron": "Pzee0G_chevron",
156007
+ "action": "Pzee0G_action",
156008
+ "spin": "Pzee0G_spin",
155748
156009
  "head": "Pzee0G_head",
155749
- "action": "Pzee0G_action"
156010
+ "chevron": "Pzee0G_chevron"
155750
156011
  };
155751
156012
  //#endregion
155752
156013
  //#region src/client/DomainToolCard.tsx
@@ -156849,6 +157110,8 @@ window.__ModuleLoader__.load({
156849
157110
  "graph.truth.relationships": "关系矩阵",
156850
157111
  "graph.workflows": "工作流",
156851
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。",
156852
157115
  "graph.empty.truth": "暂无真相文件内容。章节推进后由 agent 更新 data/world/ 下的真相文件。",
156853
157116
  "graph.empty.truthDoc": "(空)",
156854
157117
  "graph.empty.workflows": "暂无活动章节工作流。",
@@ -156975,6 +157238,12 @@ window.__ModuleLoader__.load({
156975
157238
  "models.embeddingModel": "Embedding Model ID",
156976
157239
  "models.embeddingCredential": "Embedding",
156977
157240
  "models.credentialHint": "留空保持已有 API Key",
157241
+ "models.authSource": "认证方式",
157242
+ "models.authApiKey": "API Key",
157243
+ "models.authConsole": "本机 OpenCode Console(Go)",
157244
+ "models.consoleHint": "先在 Studio 所在电脑完成 OpenCode Console CLI 登录(opencode console login)。凭据按请求读取并由 CLI 自动续期,工作区信息自动携带;远程 Studio 需要在远程电脑登录。",
157245
+ "models.goWorkspace": "Go 工作区 ID(可选)",
157246
+ "models.goWorkspaceHint": "Console 模式留空跟随 CLI 当前工作区;填写后只允许该工作区。账户级 API Key 可在此填写所属工作区 ID。",
156978
157247
  "models.remember": "本次保存时记住新输入的 API Key(仅写不可读)",
156979
157248
  "models.save": "保存档案",
156980
157249
  "models.chatTest": "聊天测试",
@@ -157999,6 +158268,8 @@ window.__ModuleLoader__.load({
157999
158268
  "graph.truth.relationships": "Relationship matrix",
158000
158269
  "graph.workflows": "Workflows",
158001
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.",
158002
158273
  "graph.empty.truth": "No truth-file content yet. The agent updates the data/world/ truth files as chapters advance.",
158003
158274
  "graph.empty.truthDoc": "(empty)",
158004
158275
  "graph.empty.workflows": "No active chapter workflows.",
@@ -158168,6 +158439,12 @@ window.__ModuleLoader__.load({
158168
158439
  "models.embeddingModel": "Embedding model ID",
158169
158440
  "models.embeddingCredential": "Embedding",
158170
158441
  "models.credentialHint": "Leave blank to keep the stored API Key",
158442
+ "models.authSource": "Authentication",
158443
+ "models.authApiKey": "API Key",
158444
+ "models.authConsole": "Local OpenCode Console (Go)",
158445
+ "models.consoleHint": "Sign in with the official OpenCode Console CLI on the Studio machine (opencode console login). Credentials are resolved per request and refreshed by the CLI; workspace headers are included automatically. Remote Studio requires a login on that remote machine.",
158446
+ "models.goWorkspace": "Go workspace ID (optional)",
158447
+ "models.goWorkspaceHint": "Leave blank in Console mode to follow the active CLI workspace, or pin a workspace here. Account-level API keys can also specify their workspace ID.",
158171
158448
  "models.remember": "Remember the newly entered API Key on this save (write-only)",
158172
158449
  "models.save": "Save profile",
158173
158450
  "models.chatTest": "Chat test",
@@ -158314,31 +158591,31 @@ window.__ModuleLoader__.load({
158314
158591
  document.head.appendChild(tag);
158315
158592
  }
158316
158593
  var ReviewCard_module_css_default = {
158317
- "quote": "InxF9G_quote",
158318
- "reportSummary": "InxF9G_reportSummary",
158319
- "verdictRow": "InxF9G_verdictRow",
158320
- "issueGroup": "InxF9G_issueGroup",
158594
+ "issueHead": "InxF9G_issueHead",
158595
+ "sep": "InxF9G_sep",
158321
158596
  "title": "InxF9G_title",
158322
- "issueCount": "InxF9G_issueCount",
158323
- "issueGroupTitle": "InxF9G_issueGroupTitle",
158597
+ "verdict": "InxF9G_verdict",
158598
+ "suggestionLabel": "InxF9G_suggestionLabel",
158599
+ "metric": "InxF9G_metric",
158600
+ "card": "InxF9G_card",
158324
158601
  "issue": "InxF9G_issue",
158325
158602
  "severity": "InxF9G_severity",
158326
- "bodyWrap": "InxF9G_bodyWrap",
158327
158603
  "root": "InxF9G_root",
158604
+ "issueCount": "InxF9G_issueCount",
158605
+ "rawTitle": "InxF9G_rawTitle",
158606
+ "rawJson": "InxF9G_rawJson",
158607
+ "issueGroupTitle": "InxF9G_issueGroupTitle",
158328
158608
  "summary": "InxF9G_summary",
158329
- "dimension": "InxF9G_dimension",
158609
+ "reportSummary": "InxF9G_reportSummary",
158610
+ "priority": "InxF9G_priority",
158330
158611
  "issueSummary": "InxF9G_issueSummary",
158331
- "suggestionLabel": "InxF9G_suggestionLabel",
158332
- "rawTitle": "InxF9G_rawTitle",
158333
- "score": "InxF9G_score",
158334
- "issueHead": "InxF9G_issueHead",
158335
- "card": "InxF9G_card",
158336
158612
  "suggestion": "InxF9G_suggestion",
158337
- "sep": "InxF9G_sep",
158338
- "verdict": "InxF9G_verdict",
158339
- "metric": "InxF9G_metric",
158340
- "rawJson": "InxF9G_rawJson",
158341
- "priority": "InxF9G_priority"
158613
+ "verdictRow": "InxF9G_verdictRow",
158614
+ "dimension": "InxF9G_dimension",
158615
+ "issueGroup": "InxF9G_issueGroup",
158616
+ "quote": "InxF9G_quote",
158617
+ "bodyWrap": "InxF9G_bodyWrap",
158618
+ "score": "InxF9G_score"
158342
158619
  };
158343
158620
  //#endregion
158344
158621
  //#region src/client/ReviewCard.tsx
@@ -159257,7 +159534,7 @@ window.__ModuleLoader__.load({
159257
159534
  pickDirectory: pickDirectoryCompat,
159258
159535
  connectWorkspace: async (id) => {
159259
159536
  const sessionId = await ctx.uiWorkspace.connectWorkspace(id);
159260
- const result = await ctx.remote.agentPresets.select(sessionId, "openwrite-0-2-26");
159537
+ const result = await ctx.remote.agentPresets.select(sessionId, "openwrite-0-2-28");
159261
159538
  if (!result.ok) throw new Error(result.error.message);
159262
159539
  return sessionId;
159263
159540
  },
@@ -159300,7 +159577,7 @@ window.__ModuleLoader__.load({
159300
159577
  if (selected === null) return false;
159301
159578
  const workspace = await ctx.workspaces.create({ path: selected });
159302
159579
  const sessionId = await ctx.sessions.create({ workspaceId: workspace.workspaceId });
159303
- const result = await ctx.remote.agentPresets.select(sessionId, "openwrite-0-2-26");
159580
+ const result = await ctx.remote.agentPresets.select(sessionId, "openwrite-0-2-28");
159304
159581
  if (!result.ok) throw new Error(result.error.message);
159305
159582
  workspaceServices.openSession(sessionId);
159306
159583
  return true;