@waterwx/dsh-novel-forge 2.4.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/client.js CHANGED
@@ -47,8 +47,12 @@ window.__ModuleLoader__.load({
47
47
  /** 张力曲线(GET 数据 / POST 设置)。 */
48
48
  tension: "/api/dsh-novel-forge/tension",
49
49
  styleHistory: "/api/dsh-novel-forge/style-history",
50
+ /** 风格目标卡:GET 当前卡;POST {action:'distill-archived'|'distill-sample'|'clear'}。 */
51
+ styleProfile: "/api/dsh-novel-forge/style-profile",
50
52
  /** 提示词槽位(GET 列表 / POST 写入)。 */
51
53
  promptSlots: "/api/dsh-novel-forge/prompt-slots",
54
+ /** 取名器:POST {action:'generate'} 生成候选;GET 名字库;POST {action:'adopt'|'discard'|'clear'} 维护。 */
55
+ nameForge: "/api/dsh-novel-forge/name-forge",
52
56
  /** 故事时间线(GET 列表 / POST 操作)。 */
53
57
  timeline: "/api/dsh-novel-forge/timeline",
54
58
  marketRadar: "/api/dsh-novel-forge/market-radar",
@@ -841,10 +845,53 @@ window.__ModuleLoader__.load({
841
845
  value
842
846
  });
843
847
  }
848
+ /** 取名器:本书名字库。 */
849
+ async nameForgeBank() {
850
+ return readJson(await fetch(withBookId(NOVEL_API.nameForge)));
851
+ }
852
+ /** 取名器:生成一批候选(不落盘)。 */
853
+ async nameForgeGenerate(category, count, hint) {
854
+ return postJson(NOVEL_API.nameForge, {
855
+ action: "generate",
856
+ category,
857
+ count,
858
+ hint
859
+ });
860
+ }
861
+ /** 取名器:采纳候选入名字库。 */
862
+ async nameForgeAdopt(category, candidates) {
863
+ return postJson(NOVEL_API.nameForge, {
864
+ action: "adopt",
865
+ category,
866
+ candidates
867
+ });
868
+ }
869
+ /** 取名器:从名字库移除一条。 */
870
+ async nameForgeDiscard(id) {
871
+ return postJson(NOVEL_API.nameForge, {
872
+ action: "discard",
873
+ id
874
+ });
875
+ }
844
876
  /** 故事时间线:列表(含规则初筛问题)。 */
845
877
  async timeline() {
846
878
  return readJson(await fetch(withBookId(NOVEL_API.timeline)));
847
879
  }
880
+ /** 风格目标卡:当前卡 + 生效说明 + 可蒸馏章数。 */
881
+ async styleProfile() {
882
+ return readJson(await fetch(withBookId(NOVEL_API.styleProfile)));
883
+ }
884
+ /** 蒸馏风格目标卡(archived = 本书已过审章节中位数;sample = 参考样文本)。 */
885
+ async styleProfileDistill(action, text) {
886
+ return postJson(NOVEL_API.styleProfile, {
887
+ action,
888
+ text
889
+ });
890
+ }
891
+ /** 清除风格目标卡(回落绑定资产的样本文本)。 */
892
+ async styleProfileClear() {
893
+ return postJson(NOVEL_API.styleProfile, { action: "clear" });
894
+ }
848
895
  /** 抽取某一章的时间线事件。 */
849
896
  async timelineExtract(chapterNo) {
850
897
  return postJson(NOVEL_API.timeline, {
@@ -1368,671 +1415,671 @@ window.__ModuleLoader__.load({
1368
1415
  document.head.appendChild(tag);
1369
1416
  }
1370
1417
  var panel_module_css_default = {
1371
- "nfViewIn": "jbF1yq_nfViewIn",
1372
- "wfRsName": "jbF1yq_wfRsName",
1373
- "planGroup": "jbF1yq_planGroup",
1374
- "wfStPend": "jbF1yq_wfStPend",
1375
- "cabinetAll": "jbF1yq_cabinetAll",
1376
- "heroPoolMeta": "jbF1yq_heroPoolMeta",
1377
- "brandEn": "jbF1yq_brandEn",
1378
- "brandText": "jbF1yq_brandText",
1379
- "onlyChanges": "jbF1yq_onlyChanges",
1380
- "shelfStatCard": "jbF1yq_shelfStatCard",
1381
- "numSerif": "jbF1yq_numSerif",
1382
- "pageHeaderActions": "jbF1yq_pageHeaderActions",
1383
- "dropzoneActive": "jbF1yq_dropzoneActive",
1384
- "runChipText": "jbF1yq_runChipText",
1385
- "progress": "jbF1yq_progress",
1386
- "noticeBtn": "jbF1yq_noticeBtn",
1387
- "wfStGen": "jbF1yq_wfStGen",
1388
- "shelfEmpty": "jbF1yq_shelfEmpty",
1389
- "panelNavCollapsed": "jbF1yq_panelNavCollapsed",
1390
- "planEditActions": "jbF1yq_planEditActions",
1391
- "planOpTag": "jbF1yq_planOpTag",
1392
- "assistantStatus": "jbF1yq_assistantStatus",
1393
- "nfToastOut": "jbF1yq_nfToastOut",
1394
- "chWorkToolbar": "jbF1yq_chWorkToolbar",
1395
- "confirmActions": "jbF1yq_confirmActions",
1418
+ "wfOpsRow": "jbF1yq_wfOpsRow",
1419
+ "cmdBox": "jbF1yq_cmdBox",
1420
+ "wfDlName": "jbF1yq_wfDlName",
1421
+ "t2Rail": "jbF1yq_t2Rail",
1422
+ "wfFtime": "jbF1yq_wfFtime",
1423
+ "wfCmdReason": "jbF1yq_wfCmdReason",
1424
+ "wfFdotErr": "jbF1yq_wfFdotErr",
1425
+ "wfConOk": "jbF1yq_wfConOk",
1426
+ "buttonPrimary": "jbF1yq_buttonPrimary",
1396
1427
  "timelineEvent": "jbF1yq_timelineEvent",
1397
- "planGroupEmptyTitle": "jbF1yq_planGroupEmptyTitle",
1398
- "emptyStateHint": "jbF1yq_emptyStateHint",
1399
- "readerHeader": "jbF1yq_readerHeader",
1428
+ "heroPoolGroup": "jbF1yq_heroPoolGroup",
1429
+ "dimCardSelected": "jbF1yq_dimCardSelected",
1430
+ "nfpanel": "jbF1yq_nfpanel",
1400
1431
  "chWorkAside": "jbF1yq_chWorkAside",
1401
- "contentDrawerBody": "jbF1yq_contentDrawerBody",
1402
- "adaptRules": "jbF1yq_adaptRules",
1403
- "importResult": "jbF1yq_importResult",
1404
- "aiTag": "jbF1yq_aiTag",
1405
- "bookshelf": "jbF1yq_bookshelf",
1406
- "wfFdotOk": "jbF1yq_wfFdotOk",
1407
- "confirmPhraseRow": "jbF1yq_confirmPhraseRow",
1408
- "segTab": "jbF1yq_segTab",
1409
- "importModalHead": "jbF1yq_importModalHead",
1410
- "rowBetweenBaseline": "jbF1yq_rowBetweenBaseline",
1411
- "heroPoolSeg": "jbF1yq_heroPoolSeg",
1412
- "wfToolBlue": "jbF1yq_wfToolBlue",
1413
- "inboxAct": "jbF1yq_inboxAct",
1414
- "planBeatRole": "jbF1yq_planBeatRole",
1415
- "topNavSpacer": "jbF1yq_topNavSpacer",
1416
- "nfToast": "jbF1yq_nfToast",
1417
- "active": "jbF1yq_active",
1418
- "shelfStatGrid": "jbF1yq_shelfStatGrid",
1419
- "coverPreview": "jbF1yq_coverPreview",
1420
- "chWorkDraftBar": "jbF1yq_chWorkDraftBar",
1421
- "navAboutRow": "jbF1yq_navAboutRow",
1422
- "wfProg": "jbF1yq_wfProg",
1423
- "inbox": "jbF1yq_inbox",
1424
- "adaptProposal": "jbF1yq_adaptProposal",
1425
- "assetConflicts": "jbF1yq_assetConflicts",
1426
- "diffText": "jbF1yq_diffText",
1427
- "tnum": "jbF1yq_tnum",
1428
- "assetCardName": "jbF1yq_assetCardName",
1429
- "wfRsNo": "jbF1yq_wfRsNo",
1430
- "navTitleName": "jbF1yq_navTitleName",
1431
- "chWorkFootRow": "jbF1yq_chWorkFootRow",
1432
- "rowBetweenWrap": "jbF1yq_rowBetweenWrap",
1433
- "outlineLi": "jbF1yq_outlineLi",
1434
- "input": "jbF1yq_input",
1435
- "readerTitle": "jbF1yq_readerTitle",
1436
- "emptyStateTitle": "jbF1yq_emptyStateTitle",
1437
- "inboxAll": "jbF1yq_inboxAll",
1438
- "readerMain": "jbF1yq_readerMain",
1439
- "wfDrawerBox": "jbF1yq_wfDrawerBox",
1440
- "reviewIssueItem": "jbF1yq_reviewIssueItem",
1432
+ "adaptImpacts": "jbF1yq_adaptImpacts",
1433
+ "chWorkBarStack": "jbF1yq_chWorkBarStack",
1434
+ "outlineH4": "jbF1yq_outlineH4",
1435
+ "outlineCodeBlock": "jbF1yq_outlineCodeBlock",
1436
+ "adaptMatrix": "jbF1yq_adaptMatrix",
1437
+ "panelHidden": "jbF1yq_panelHidden",
1438
+ "wfCn": "jbF1yq_wfCn",
1439
+ "subPageTitle": "jbF1yq_subPageTitle",
1440
+ "planTreeVolMeta": "jbF1yq_planTreeVolMeta",
1441
+ "pulse": "jbF1yq_pulse",
1442
+ "nfToastOut": "jbF1yq_nfToastOut",
1443
+ "chWorkAsideTitle": "jbF1yq_chWorkAsideTitle",
1444
+ "runQueueHead": "jbF1yq_runQueueHead",
1445
+ "assistantStatusBusy": "jbF1yq_assistantStatusBusy",
1441
1446
  "navSpacer": "jbF1yq_navSpacer",
1442
- "ideaCard": "jbF1yq_ideaCard",
1443
- "outlineList": "jbF1yq_outlineList",
1444
- "diffDel": "jbF1yq_diffDel",
1445
- "readerGroupCount": "jbF1yq_readerGroupCount",
1446
- "readerError": "jbF1yq_readerError",
1447
- "readerItemTitle": "jbF1yq_readerItemTitle",
1448
- "reviewIssueBody": "jbF1yq_reviewIssueBody",
1449
- "toolStepName": "jbF1yq_toolStepName",
1450
- "diffTagNew": "jbF1yq_diffTagNew",
1451
- "navTitleBook": "jbF1yq_navTitleBook",
1452
- "importModalActions": "jbF1yq_importModalActions",
1453
- "wfQt": "jbF1yq_wfQt",
1454
- "navTitle": "jbF1yq_navTitle",
1455
- "diffColumn": "jbF1yq_diffColumn",
1456
- "view": "jbF1yq_view",
1457
- "wfCmdBtn": "jbF1yq_wfCmdBtn",
1458
- "planMaster": "jbF1yq_planMaster",
1459
- "nfToastHost": "jbF1yq_nfToastHost",
1460
- "notice-error": "jbF1yq_notice-error",
1461
- "assetCardContent": "jbF1yq_assetCardContent",
1462
- "nfToastTick": "jbF1yq_nfToastTick",
1463
- "nfCmdPop": "jbF1yq_nfCmdPop",
1464
- "wfCmdReason": "jbF1yq_wfCmdReason",
1465
- "badgeGenerating": "jbF1yq_badgeGenerating",
1466
- "wfDrawerToggle": "jbF1yq_wfDrawerToggle",
1467
- "assetEditor": "jbF1yq_assetEditor",
1447
+ "bookCardCoverFallback": "jbF1yq_bookCardCoverFallback",
1448
+ "planListItem": "jbF1yq_planListItem",
1449
+ "heroPoolLegend": "jbF1yq_heroPoolLegend",
1450
+ "wfLiveChip": "jbF1yq_wfLiveChip",
1468
1451
  "heroPoolEmpty": "jbF1yq_heroPoolEmpty",
1469
- "outlineH3": "jbF1yq_outlineH3",
1470
- "readerGroupTitle": "jbF1yq_readerGroupTitle",
1471
- "readerItemNo": "jbF1yq_readerItemNo",
1452
+ "entry": "jbF1yq_entry",
1453
+ "wfQt": "jbF1yq_wfQt",
1454
+ "drawerTitleNi": "jbF1yq_drawerTitleNi",
1455
+ "cabinetDrawer": "jbF1yq_cabinetDrawer",
1456
+ "wfStage": "jbF1yq_wfStage",
1457
+ "drawerNarrow": "jbF1yq_drawerNarrow",
1458
+ "navAboutUpdate": "jbF1yq_navAboutUpdate",
1459
+ "reviewIssueItem": "jbF1yq_reviewIssueItem",
1460
+ "outlineH": "jbF1yq_outlineH",
1461
+ "wfSep": "jbF1yq_wfSep",
1462
+ "authorStrip": "jbF1yq_authorStrip",
1463
+ "reviewIssueBody": "jbF1yq_reviewIssueBody",
1464
+ "skeletonBlock": "jbF1yq_skeletonBlock",
1465
+ "wfSt": "jbF1yq_wfSt",
1466
+ "topNavNi": "jbF1yq_topNavNi",
1467
+ "rowBetweenBaseline": "jbF1yq_rowBetweenBaseline",
1468
+ "planBeatLines": "jbF1yq_planBeatLines",
1469
+ "reviewIssueDim": "jbF1yq_reviewIssueDim",
1470
+ "cabinetCardHead": "jbF1yq_cabinetCardHead",
1471
+ "topNav": "jbF1yq_topNav",
1472
1472
  "title": "jbF1yq_title",
1473
+ "cabinetCardEmpty": "jbF1yq_cabinetCardEmpty",
1474
+ "readerTitle": "jbF1yq_readerTitle",
1475
+ "entryLabel": "jbF1yq_entryLabel",
1476
+ "authorNav": "jbF1yq_authorNav",
1477
+ "noticeSuccess": "jbF1yq_noticeSuccess",
1478
+ "bookCardProgressFill": "jbF1yq_bookCardProgressFill",
1479
+ "wfBoxH": "jbF1yq_wfBoxH",
1480
+ "cmdItem": "jbF1yq_cmdItem",
1481
+ "wsEditor": "jbF1yq_wsEditor",
1482
+ "wfPsLab": "jbF1yq_wfPsLab",
1483
+ "homeHeroTitle": "jbF1yq_homeHeroTitle",
1484
+ "importFileInfo": "jbF1yq_importFileInfo",
1485
+ "pageHeader": "jbF1yq_pageHeader",
1486
+ "planEditActions": "jbF1yq_planEditActions",
1487
+ "reviewIssue": "jbF1yq_reviewIssue",
1488
+ "toolStepDetail": "jbF1yq_toolStepDetail",
1489
+ "entryIcon": "jbF1yq_entryIcon",
1490
+ "nfFadeIn": "jbF1yq_nfFadeIn",
1491
+ "assetGrid": "jbF1yq_assetGrid",
1492
+ "readerFoot": "jbF1yq_readerFoot",
1493
+ "planDetailBar": "jbF1yq_planDetailBar",
1494
+ "contentDrawerBody": "jbF1yq_contentDrawerBody",
1495
+ "kicker": "jbF1yq_kicker",
1496
+ "wsPage": "jbF1yq_wsPage",
1497
+ "outlineCodeLang": "jbF1yq_outlineCodeLang",
1498
+ "chWorkPickBtns": "jbF1yq_chWorkPickBtns",
1499
+ "wfBody": "jbF1yq_wfBody",
1500
+ "homeHeroStage": "jbF1yq_homeHeroStage",
1473
1501
  "wfBlink": "jbF1yq_wfBlink",
1474
- "homeHeroSeal": "jbF1yq_homeHeroSeal",
1475
- "timelineEvents": "jbF1yq_timelineEvents",
1476
- "toolStepActive": "jbF1yq_toolStepActive",
1477
- "t2Master": "jbF1yq_t2Master",
1502
+ "chWorkSideBody": "jbF1yq_chWorkSideBody",
1503
+ "nfToastHost": "jbF1yq_nfToastHost",
1504
+ "chWorkMainFocus": "jbF1yq_chWorkMainFocus",
1505
+ "diffOld": "jbF1yq_diffOld",
1506
+ "inboxDetail": "jbF1yq_inboxDetail",
1507
+ "nfViewIn": "jbF1yq_nfViewIn",
1508
+ "chWorkMainSurface": "jbF1yq_chWorkMainSurface",
1509
+ "confirmList": "jbF1yq_confirmList",
1510
+ "wfToolAmber": "jbF1yq_wfToolAmber",
1511
+ "genreDesc": "jbF1yq_genreDesc",
1512
+ "bookCardName": "jbF1yq_bookCardName",
1513
+ "active": "jbF1yq_active",
1514
+ "confirmAckRow": "jbF1yq_confirmAckRow",
1478
1515
  "nfToastIn": "jbF1yq_nfToastIn",
1479
- "bigProgressBar": "jbF1yq_bigProgressBar",
1480
- "confirmOverlay": "jbF1yq_confirmOverlay",
1481
- "row": "jbF1yq_row",
1482
- "planTree": "jbF1yq_planTree",
1483
- "wfLiveChip": "jbF1yq_wfLiveChip",
1484
- "wfAct": "jbF1yq_wfAct",
1485
- "navTitleLogo": "jbF1yq_navTitleLogo",
1486
- "topNavMenuItemActive": "jbF1yq_topNavMenuItemActive",
1487
- "planGroupSpacer": "jbF1yq_planGroupSpacer",
1516
+ "heroPoolDoneSep": "jbF1yq_heroPoolDoneSep",
1517
+ "bookCardCoverTitle": "jbF1yq_bookCardCoverTitle",
1488
1518
  "homeHeroBatchBar": "jbF1yq_homeHeroBatchBar",
1489
- "cabinetCard": "jbF1yq_cabinetCard",
1490
- "chatScroll": "jbF1yq_chatScroll",
1491
- "wfStRev": "jbF1yq_wfStRev",
1492
- "runLog": "jbF1yq_runLog",
1493
- "authorPageHeader": "jbF1yq_authorPageHeader",
1494
- "iconBtn": "jbF1yq_iconBtn",
1495
- "diffNew": "jbF1yq_diffNew",
1519
+ "outlineToc": "jbF1yq_outlineToc",
1520
+ "bookCardBody": "jbF1yq_bookCardBody",
1521
+ "diffTagNew": "jbF1yq_diffTagNew",
1522
+ "authorNavBtn": "jbF1yq_authorNavBtn",
1523
+ "adaptCell": "jbF1yq_adaptCell",
1524
+ "lfDot": "jbF1yq_lfDot",
1496
1525
  "planGroupEmptyHint": "jbF1yq_planGroupEmptyHint",
1497
- "bigProgressBarFill": "jbF1yq_bigProgressBarFill",
1526
+ "wfFdotOk": "jbF1yq_wfFdotOk",
1527
+ "inboxSource": "jbF1yq_inboxSource",
1528
+ "panelNavCollapsed": "jbF1yq_panelNavCollapsed",
1529
+ "toolStep": "jbF1yq_toolStep",
1498
1530
  "legendNew": "jbF1yq_legendNew",
1499
- "runQueueRow": "jbF1yq_runQueueRow",
1500
- "inboxActs": "jbF1yq_inboxActs",
1501
- "cmdMask": "jbF1yq_cmdMask",
1502
- "wfMetricWide": "jbF1yq_wfMetricWide",
1503
- "chapterList": "jbF1yq_chapterList",
1504
- "panelBody": "jbF1yq_panelBody",
1505
- "readerChapterTitle": "jbF1yq_readerChapterTitle",
1506
- "confirmIcon": "jbF1yq_confirmIcon",
1507
- "outlineTocL2": "jbF1yq_outlineTocL2",
1508
- "chWorkSideSurface": "jbF1yq_chWorkSideSurface",
1509
- "inboxEmpty": "jbF1yq_inboxEmpty",
1510
- "worldIntro": "jbF1yq_worldIntro",
1511
- "homeHeroBatchCap": "jbF1yq_homeHeroBatchCap",
1512
- "navAbout": "jbF1yq_navAbout",
1513
- "shelfToolbar": "jbF1yq_shelfToolbar",
1531
+ "assistantFloat": "jbF1yq_assistantFloat",
1532
+ "bookCardCover": "jbF1yq_bookCardCover",
1533
+ "readerView": "jbF1yq_readerView",
1534
+ "readerText": "jbF1yq_readerText",
1535
+ "drawerHeadBtn": "jbF1yq_drawerHeadBtn",
1536
+ "t2Content": "jbF1yq_t2Content",
1537
+ "chWorkSideFoot": "jbF1yq_chWorkSideFoot",
1538
+ "chWorkFootRow": "jbF1yq_chWorkFootRow",
1539
+ "readerItemTitle": "jbF1yq_readerItemTitle",
1540
+ "drawerTitle": "jbF1yq_drawerTitle",
1541
+ "topNavActive": "jbF1yq_topNavActive",
1542
+ "wfStGen": "jbF1yq_wfStGen",
1543
+ "noticeBar": "jbF1yq_noticeBar",
1544
+ "chWorkToolActions": "jbF1yq_chWorkToolActions",
1545
+ "timelineChapterEvents": "jbF1yq_timelineChapterEvents",
1546
+ "legendOld": "jbF1yq_legendOld",
1547
+ "planGroup": "jbF1yq_planGroup",
1548
+ "shelfSearchWrap": "jbF1yq_shelfSearchWrap",
1514
1549
  "cmdHint": "jbF1yq_cmdHint",
1515
- "reviewIssuePick": "jbF1yq_reviewIssuePick",
1550
+ "wfCoordStuck": "jbF1yq_wfCoordStuck",
1551
+ "chapterTitle": "jbF1yq_chapterTitle",
1552
+ "importError": "jbF1yq_importError",
1553
+ "statCardDDetail": "jbF1yq_statCardDDetail",
1554
+ "outlineQuote": "jbF1yq_outlineQuote",
1555
+ "diffNew": "jbF1yq_diffNew",
1556
+ "noticeActions": "jbF1yq_noticeActions",
1516
1557
  "outlineTocL1": "jbF1yq_outlineTocL1",
1517
- "readerItemActive": "jbF1yq_readerItemActive",
1518
- "wfDlDi": "jbF1yq_wfDlDi",
1519
- "bookCardBody": "jbF1yq_bookCardBody",
1520
- "dimCurrent": "jbF1yq_dimCurrent",
1521
- "cabinetCardBody": "jbF1yq_cabinetCardBody",
1522
- "pillNavPill": "jbF1yq_pillNavPill",
1523
- "chWorkBarStack": "jbF1yq_chWorkBarStack",
1524
- "wsColumn": "jbF1yq_wsColumn",
1525
- "planDetailBar": "jbF1yq_planDetailBar",
1526
- "nfFadeIn": "jbF1yq_nfFadeIn",
1558
+ "notice-error": "jbF1yq_notice-error",
1559
+ "assetEditor": "jbF1yq_assetEditor",
1560
+ "wsPreview": "jbF1yq_wsPreview",
1561
+ "emptyStateTitle": "jbF1yq_emptyStateTitle",
1562
+ "planTree": "jbF1yq_planTree",
1563
+ "chatBubbleUser": "jbF1yq_chatBubbleUser",
1564
+ "adaptRule": "jbF1yq_adaptRule",
1565
+ "planTreeRowTitle": "jbF1yq_planTreeRowTitle",
1566
+ "adaptOutline": "jbF1yq_adaptOutline",
1567
+ "noticeBtn": "jbF1yq_noticeBtn",
1568
+ "bookCardTitleRow": "jbF1yq_bookCardTitleRow",
1569
+ "readerHeader": "jbF1yq_readerHeader",
1570
+ "ideaCard": "jbF1yq_ideaCard",
1527
1571
  "confirmBody": "jbF1yq_confirmBody",
1528
- "wfRs": "jbF1yq_wfRs",
1529
- "wfEmpty2": "jbF1yq_wfEmpty2",
1530
- "planGroupEdit": "jbF1yq_planGroupEdit",
1531
- "assetCard": "jbF1yq_assetCard",
1532
- "nfConfirmIn": "jbF1yq_nfConfirmIn",
1533
- "chWorkSide": "jbF1yq_chWorkSide",
1534
- "wfDone": "jbF1yq_wfDone",
1535
- "busyRow": "jbF1yq_busyRow",
1536
- "dimCardSelected": "jbF1yq_dimCardSelected",
1537
- "chWorkText": "jbF1yq_chWorkText",
1538
- "panelHidden": "jbF1yq_panelHidden",
1539
- "pageHeaderTitle": "jbF1yq_pageHeaderTitle",
1540
- "genreDesc": "jbF1yq_genreDesc",
1541
- "outlineToc": "jbF1yq_outlineToc",
1542
- "runQueue": "jbF1yq_runQueue",
1543
- "pageHeaderEyebrow": "jbF1yq_pageHeaderEyebrow",
1544
- "noticeError": "jbF1yq_noticeError",
1545
- "cmdItem": "jbF1yq_cmdItem",
1546
- "headSpacer": "jbF1yq_headSpacer",
1547
- "wfDlDim": "jbF1yq_wfDlDim",
1548
- "timelineChapter": "jbF1yq_timelineChapter",
1549
- "field": "jbF1yq_field",
1550
- "wfFtime": "jbF1yq_wfFtime",
1551
- "progressLineError": "jbF1yq_progressLineError",
1552
- "homeHeroNode": "jbF1yq_homeHeroNode",
1553
- "confirmHead": "jbF1yq_confirmHead",
1554
- "wfFdot": "jbF1yq_wfFdot",
1555
- "timelineIssues": "jbF1yq_timelineIssues",
1556
- "homeHeroStage": "jbF1yq_homeHeroStage",
1557
- "diffList": "jbF1yq_diffList",
1558
- "planTreeVolGroup": "jbF1yq_planTreeVolGroup",
1559
- "wfDl": "jbF1yq_wfDl",
1560
- "wfSmallFoot": "jbF1yq_wfSmallFoot",
1561
- "buttonPrimary": "jbF1yq_buttonPrimary",
1562
- "diffChange": "jbF1yq_diffChange",
1563
- "subPageTitle": "jbF1yq_subPageTitle",
1564
- "outlineH": "jbF1yq_outlineH",
1565
- "emptyStateIcon": "jbF1yq_emptyStateIcon",
1566
- "brandName": "jbF1yq_brandName",
1567
- "adaptTextarea": "jbF1yq_adaptTextarea",
1568
- "wfPreviewName": "jbF1yq_wfPreviewName",
1569
- "wfConOk": "jbF1yq_wfConOk",
1570
- "wsEditor": "jbF1yq_wsEditor",
1571
- "bookCardCover": "jbF1yq_bookCardCover",
1572
- "runChipDot": "jbF1yq_runChipDot",
1573
- "confirmCard": "jbF1yq_confirmCard",
1574
- "timelineSurface": "jbF1yq_timelineSurface",
1575
- "chapterFocusPulse": "jbF1yq_chapterFocusPulse",
1576
- "chWorkSideBody": "jbF1yq_chWorkSideBody",
1577
- "wfTopRight": "jbF1yq_wfTopRight",
1578
- "cardTitleLg": "jbF1yq_cardTitleLg",
1579
- "planEditField": "jbF1yq_planEditField",
1580
- "importModalBody": "jbF1yq_importModalBody",
1581
- "wfDs": "jbF1yq_wfDs",
1582
- "coverPlaceholder": "jbF1yq_coverPlaceholder",
1583
- "planTreeVolMeta": "jbF1yq_planTreeVolMeta",
1572
+ "readerSegBtn": "jbF1yq_readerSegBtn",
1573
+ "tabular": "jbF1yq_tabular",
1584
1574
  "fileList": "jbF1yq_fileList",
1585
- "chWorkSideHead": "jbF1yq_chWorkSideHead",
1586
- "inboxList": "jbF1yq_inboxList",
1587
- "badgePending": "jbF1yq_badgePending",
1588
- "createBookInner": "jbF1yq_createBookInner",
1589
- "importHint": "jbF1yq_importHint",
1590
- "authorNavBtn": "jbF1yq_authorNavBtn",
1591
- "heroPoolDone": "jbF1yq_heroPoolDone",
1592
- "chatBubbleUser": "jbF1yq_chatBubbleUser",
1575
+ "topNavMenuItem": "jbF1yq_topNavMenuItem",
1593
1576
  "diffSameBody": "jbF1yq_diffSameBody",
1594
- "wfConTxt": "jbF1yq_wfConTxt",
1595
- "wfProgBig": "jbF1yq_wfProgBig",
1596
- "nfSkeletonShimmer": "jbF1yq_nfSkeletonShimmer",
1597
- "chWorkGrid": "jbF1yq_chWorkGrid",
1577
+ "shelfEmpty": "jbF1yq_shelfEmpty",
1578
+ "outlineEdit": "jbF1yq_outlineEdit",
1579
+ "wfProg": "jbF1yq_wfProg",
1580
+ "rowBetweenWrap": "jbF1yq_rowBetweenWrap",
1581
+ "dimCurrent": "jbF1yq_dimCurrent",
1598
1582
  "confirmPhraseInput": "jbF1yq_confirmPhraseInput",
1599
- "chatRole": "jbF1yq_chatRole",
1600
- "adaptImpact": "jbF1yq_adaptImpact",
1601
- "homeHeroSide": "jbF1yq_homeHeroSide",
1602
- "adaptCell": "jbF1yq_adaptCell",
1603
- "assetConflictFix": "jbF1yq_assetConflictFix",
1604
- "wfQtTone": "jbF1yq_wfQtTone",
1605
- "acts": "jbF1yq_acts",
1606
- "adaptTableScroll": "jbF1yq_adaptTableScroll",
1607
- "wsPreview": "jbF1yq_wsPreview",
1608
- "rowEnd": "jbF1yq_rowEnd",
1609
- "planDetail": "jbF1yq_planDetail",
1610
- "readerArticle": "jbF1yq_readerArticle",
1611
- "topNavLabel": "jbF1yq_topNavLabel",
1612
- "wfConsoleNote": "jbF1yq_wfConsoleNote",
1613
- "bookCardCoverFallback": "jbF1yq_bookCardCoverFallback",
1614
- "wfAccentBlue": "jbF1yq_wfAccentBlue",
1615
- "inboxDetail": "jbF1yq_inboxDetail",
1616
- "homeHeroTitle": "jbF1yq_homeHeroTitle",
1617
- "meta": "jbF1yq_meta",
1618
- "diffAdd": "jbF1yq_diffAdd",
1619
- "textarea": "jbF1yq_textarea",
1620
- "fieldLabel": "jbF1yq_fieldLabel",
1621
- "bookCardActive": "jbF1yq_bookCardActive",
1622
- "navBadgePulse": "jbF1yq_navBadgePulse",
1623
- "wfMetricSparkNote": "jbF1yq_wfMetricSparkNote",
1624
- "panelHead": "jbF1yq_panelHead",
1625
- "homeHeroBatchHead": "jbF1yq_homeHeroBatchHead",
1626
- "homeHeroNodes": "jbF1yq_homeHeroNodes",
1627
- "planDetailBody": "jbF1yq_planDetailBody",
1628
- "cabinetCardEmpty": "jbF1yq_cabinetCardEmpty",
1629
- "bookCardProgressBar": "jbF1yq_bookCardProgressBar",
1630
- "planGroupEmpty": "jbF1yq_planGroupEmpty",
1631
- "t2RailHead": "jbF1yq_t2RailHead",
1583
+ "runQueueActions": "jbF1yq_runQueueActions",
1584
+ "planTreeVol": "jbF1yq_planTreeVol",
1585
+ "wfRs": "jbF1yq_wfRs",
1632
1586
  "badgeRejected": "jbF1yq_badgeRejected",
1633
- "inboxHead": "jbF1yq_inboxHead",
1634
- "shelfToolbarExtra": "jbF1yq_shelfToolbarExtra",
1635
- "outlineHr": "jbF1yq_outlineHr",
1636
- "toolStepIcon": "jbF1yq_toolStepIcon",
1637
- "skeletonBlock": "jbF1yq_skeletonBlock",
1587
+ "readerSegActive": "jbF1yq_readerSegActive",
1588
+ "wfAccentAmber": "jbF1yq_wfAccentAmber",
1589
+ "homeHeroSeal": "jbF1yq_homeHeroSeal",
1590
+ "bookCardActions": "jbF1yq_bookCardActions",
1591
+ "runChip": "jbF1yq_runChip",
1592
+ "topNavMenuItemActive": "jbF1yq_topNavMenuItemActive",
1593
+ "wfStErr": "jbF1yq_wfStErr",
1594
+ "runLogDetails": "jbF1yq_runLogDetails",
1595
+ "onlyChanges": "jbF1yq_onlyChanges",
1596
+ "authorStripMain": "jbF1yq_authorStripMain",
1597
+ "outlineTocItem": "jbF1yq_outlineTocItem",
1598
+ "topNavMenuHint": "jbF1yq_topNavMenuHint",
1599
+ "wfPs": "jbF1yq_wfPs",
1600
+ "wfRsName": "jbF1yq_wfRsName",
1601
+ "homeHeroNodes": "jbF1yq_homeHeroNodes",
1602
+ "wfRsNo": "jbF1yq_wfRsNo",
1603
+ "chWorkSkeleton": "jbF1yq_chWorkSkeleton",
1604
+ "badgeDone": "jbF1yq_badgeDone",
1605
+ "cmdIcon": "jbF1yq_cmdIcon",
1606
+ "wfNow": "jbF1yq_wfNow",
1607
+ "planBeatsLabel": "jbF1yq_planBeatsLabel",
1608
+ "chWorkBarRow": "jbF1yq_chWorkBarRow",
1609
+ "planListLabel": "jbF1yq_planListLabel",
1610
+ "confirmCard": "jbF1yq_confirmCard",
1611
+ "coverPlaceholder": "jbF1yq_coverPlaceholder",
1612
+ "runQueueTitle": "jbF1yq_runQueueTitle",
1613
+ "wfStOk": "jbF1yq_wfStOk",
1614
+ "runLogTime": "jbF1yq_runLogTime",
1638
1615
  "inboxItemTitle": "jbF1yq_inboxItemTitle",
1639
- "shelfEmptyTitle": "jbF1yq_shelfEmptyTitle",
1640
- "cabinetDrawer": "jbF1yq_cabinetDrawer",
1641
- "runQueueList": "jbF1yq_runQueueList",
1642
- "confirmPhraseHint": "jbF1yq_confirmPhraseHint",
1643
- "wfTop": "jbF1yq_wfTop",
1644
- "titleBlock": "jbF1yq_titleBlock",
1645
- "drawerMax": "jbF1yq_drawerMax",
1646
- "readerItem": "jbF1yq_readerItem",
1647
- "adaptTable": "jbF1yq_adaptTable",
1648
- "wfFi": "jbF1yq_wfFi",
1649
- "wfPreviewLine": "jbF1yq_wfPreviewLine",
1650
- "outlineVolSummary": "jbF1yq_outlineVolSummary",
1616
+ "noticeText": "jbF1yq_noticeText",
1617
+ "homeHeroPool": "jbF1yq_homeHeroPool",
1618
+ "outlineDoc": "jbF1yq_outlineDoc",
1619
+ "worldSection": "jbF1yq_worldSection",
1620
+ "cardHead": "jbF1yq_cardHead",
1621
+ "dimCard": "jbF1yq_dimCard",
1622
+ "settingsDrawerHead": "jbF1yq_settingsDrawerHead",
1623
+ "wfDlDi": "jbF1yq_wfDlDi",
1624
+ "wfMetricWide": "jbF1yq_wfMetricWide",
1651
1625
  "cabinetSnapshot": "jbF1yq_cabinetSnapshot",
1652
- "readerBody": "jbF1yq_readerBody",
1653
- "outlineTableWrap": "jbF1yq_outlineTableWrap",
1654
- "assetLabel": "jbF1yq_assetLabel",
1655
- "wfAccentAmber": "jbF1yq_wfAccentAmber",
1656
- "toolStepError": "jbF1yq_toolStepError",
1657
- "authorContent": "jbF1yq_authorContent",
1658
- "chapterTitle": "jbF1yq_chapterTitle",
1659
- "pillNavSlider": "jbF1yq_pillNavSlider",
1660
- "planTreeSearch": "jbF1yq_planTreeSearch",
1626
+ "wfRail": "jbF1yq_wfRail",
1627
+ "assetConflictText": "jbF1yq_assetConflictText",
1628
+ "nfToastTick": "jbF1yq_nfToastTick",
1661
1629
  "wfCoord": "jbF1yq_wfCoord",
1662
- "homeHeroAlt": "jbF1yq_homeHeroAlt",
1663
- "progressTotalBar": "jbF1yq_progressTotalBar",
1630
+ "assetTextarea": "jbF1yq_assetTextarea",
1631
+ "planDetailEmpty": "jbF1yq_planDetailEmpty",
1632
+ "contentDrawer": "jbF1yq_contentDrawer",
1633
+ "noticeError": "jbF1yq_noticeError",
1634
+ "subPageBody": "jbF1yq_subPageBody",
1635
+ "nfSkeletonSweep": "jbF1yq_nfSkeletonSweep",
1636
+ "chapter": "jbF1yq_chapter",
1637
+ "wfEmpty": "jbF1yq_wfEmpty",
1638
+ "topNavBadge": "jbF1yq_topNavBadge",
1639
+ "wfCmdBtn": "jbF1yq_wfCmdBtn",
1640
+ "wfFdot": "jbF1yq_wfFdot",
1664
1641
  "wfMetricSpark": "jbF1yq_wfMetricSpark",
1665
- "heroPoolBar": "jbF1yq_heroPoolBar",
1666
- "chWorkAsideTitle": "jbF1yq_chWorkAsideTitle",
1667
1642
  "topNavMenu": "jbF1yq_topNavMenu",
1668
- "entry": "jbF1yq_entry",
1669
- "subPageMeta": "jbF1yq_subPageMeta",
1670
- "progressLineLive": "jbF1yq_progressLineLive",
1671
- "readerLoading": "jbF1yq_readerLoading",
1672
- "topNavBtn": "jbF1yq_topNavBtn",
1673
- "readerView": "jbF1yq_readerView",
1674
- "planGroupTitle": "jbF1yq_planGroupTitle",
1675
- "inboxItem": "jbF1yq_inboxItem",
1676
- "chWorkBar": "jbF1yq_chWorkBar",
1677
- "cardHeadCount": "jbF1yq_cardHeadCount",
1678
- "reviewBox": "jbF1yq_reviewBox",
1643
+ "timelineIssues": "jbF1yq_timelineIssues",
1644
+ "chapterList": "jbF1yq_chapterList",
1645
+ "wsColumn": "jbF1yq_wsColumn",
1646
+ "inboxBody": "jbF1yq_inboxBody",
1679
1647
  "confirmGo": "jbF1yq_confirmGo",
1680
- "outlineDocWrap": "jbF1yq_outlineDocWrap",
1681
- "planGroupHead": "jbF1yq_planGroupHead",
1682
- "assetGroups": "jbF1yq_assetGroups",
1683
- "subPageBody": "jbF1yq_subPageBody",
1684
- "outlineVol": "jbF1yq_outlineVol",
1685
- "rowBetween": "jbF1yq_rowBetween",
1686
- "subPageHead": "jbF1yq_subPageHead",
1687
- "reviewIssueExcerpt": "jbF1yq_reviewIssueExcerpt",
1688
- "cardHeadNote": "jbF1yq_cardHeadNote",
1689
- "assetGroup": "jbF1yq_assetGroup",
1648
+ "assetEditorRow": "jbF1yq_assetEditorRow",
1649
+ "ideaCandidate": "jbF1yq_ideaCandidate",
1650
+ "outlineH3": "jbF1yq_outlineH3",
1651
+ "shelfToolbarExtra": "jbF1yq_shelfToolbarExtra",
1652
+ "bookCardActive": "jbF1yq_bookCardActive",
1653
+ "navAboutRow": "jbF1yq_navAboutRow",
1690
1654
  "drawerSpacer": "jbF1yq_drawerSpacer",
1691
- "wfPill": "jbF1yq_wfPill",
1692
- "outlineP": "jbF1yq_outlineP",
1693
- "importModalOverlay": "jbF1yq_importModalOverlay",
1694
- "wfCoordStuck": "jbF1yq_wfCoordStuck",
1695
- "worldNote": "jbF1yq_worldNote",
1696
- "contentDrawer": "jbF1yq_contentDrawer",
1697
- "assistantFloatHeader": "jbF1yq_assistantFloatHeader",
1698
- "noticeSuccess": "jbF1yq_noticeSuccess",
1699
- "wfStage": "jbF1yq_wfStage",
1700
- "wfBox": "jbF1yq_wfBox",
1701
- "wfCn": "jbF1yq_wfCn",
1702
- "confirmAssurance": "jbF1yq_confirmAssurance",
1703
- "chWorkTitle": "jbF1yq_chWorkTitle",
1704
- "outlineEdit": "jbF1yq_outlineEdit",
1705
- "adaptOutline": "jbF1yq_adaptOutline",
1706
- "drawerHead": "jbF1yq_drawerHead",
1707
- "diffSame": "jbF1yq_diffSame",
1708
- "inboxCount": "jbF1yq_inboxCount",
1709
- "wfPsLab": "jbF1yq_wfPsLab",
1710
- "topNavBadge": "jbF1yq_topNavBadge",
1711
- "t2RailSep": "jbF1yq_t2RailSep",
1712
- "runQueueActions": "jbF1yq_runQueueActions",
1713
- "nfDrawerIn": "jbF1yq_nfDrawerIn",
1714
- "chWorkBarRow": "jbF1yq_chWorkBarRow",
1715
- "adaptRuleRow": "jbF1yq_adaptRuleRow",
1716
- "assetConflictText": "jbF1yq_assetConflictText",
1717
- "importFileInfo": "jbF1yq_importFileInfo",
1718
- "wfCard2": "jbF1yq_wfCard2",
1719
- "outlineCodeBlock": "jbF1yq_outlineCodeBlock",
1720
- "liveText": "jbF1yq_liveText",
1721
- "outlineQuote": "jbF1yq_outlineQuote",
1722
- "chWorkPickBar": "jbF1yq_chWorkPickBar",
1723
- "pillNav": "jbF1yq_pillNav",
1724
- "navTab": "jbF1yq_navTab",
1725
- "wfBody": "jbF1yq_wfBody",
1726
- "authorStripStats": "jbF1yq_authorStripStats",
1727
- "inboxBody": "jbF1yq_inboxBody",
1728
- "authorHome": "jbF1yq_authorHome",
1729
- "homeHeroSealRow": "jbF1yq_homeHeroSealRow",
1730
- "toolLive": "jbF1yq_toolLive",
1731
- "wfDot": "jbF1yq_wfDot",
1732
- "navGroupLabel": "jbF1yq_navGroupLabel",
1733
- "drawerTitle": "jbF1yq_drawerTitle",
1734
- "bookCardName": "jbF1yq_bookCardName",
1735
- "authorNav": "jbF1yq_authorNav",
1736
- "badgeWritten": "jbF1yq_badgeWritten",
1737
- "outlineH1": "jbF1yq_outlineH1",
1655
+ "planMaster": "jbF1yq_planMaster",
1656
+ "chWorkSurface": "jbF1yq_chWorkSurface",
1657
+ "buttonDanger": "jbF1yq_buttonDanger",
1658
+ "navTitleName": "jbF1yq_navTitleName",
1659
+ "nfCmdPop": "jbF1yq_nfCmdPop",
1738
1660
  "wfOpsBtnMain": "jbF1yq_wfOpsBtnMain",
1739
- "chWorkToolActions": "jbF1yq_chWorkToolActions",
1740
- "wfConBar": "jbF1yq_wfConBar",
1741
- "topNavMenuItem": "jbF1yq_topNavMenuItem",
1742
- "panel": "jbF1yq_panel",
1743
- "wfColA": "jbF1yq_wfColA",
1744
- "settingsDrawerOverlay": "jbF1yq_settingsDrawerOverlay",
1745
- "homeHeroBatch": "jbF1yq_homeHeroBatch",
1746
- "assetConflict": "jbF1yq_assetConflict",
1747
- "authorStrip": "jbF1yq_authorStrip",
1748
- "progressLine": "jbF1yq_progressLine",
1749
- "nfSkeletonSweep": "jbF1yq_nfSkeletonSweep",
1750
1661
  "dimCardHead": "jbF1yq_dimCardHead",
1751
- "entryLabel": "jbF1yq_entryLabel",
1752
- "notice-info": "jbF1yq_notice-info",
1753
- "navGroup": "jbF1yq_navGroup",
1754
- "chWorkPickBtns": "jbF1yq_chWorkPickBtns",
1755
- "runLogDetails": "jbF1yq_runLogDetails",
1756
- "runQueueNo": "jbF1yq_runQueueNo",
1757
- "planDot": "jbF1yq_planDot",
1758
- "t2Rail": "jbF1yq_t2Rail",
1759
- "wfOpsRow": "jbF1yq_wfOpsRow",
1760
- "wfOpsBtn": "jbF1yq_wfOpsBtn",
1761
- "outlineH2": "jbF1yq_outlineH2",
1762
- "shelfSearchWrap": "jbF1yq_shelfSearchWrap",
1763
- "reviewIssueSev": "jbF1yq_reviewIssueSev",
1764
- "nfSlideInRight": "jbF1yq_nfSlideInRight",
1765
- "topNavActive": "jbF1yq_topNavActive",
1766
- "diffLegend": "jbF1yq_diffLegend",
1767
- "planTreeVol": "jbF1yq_planTreeVol",
1768
- "shelfGrid": "jbF1yq_shelfGrid",
1769
- "bookCardTitleRow": "jbF1yq_bookCardTitleRow",
1770
- "bookCardActions": "jbF1yq_bookCardActions",
1771
- "homeHeroActs": "jbF1yq_homeHeroActs",
1772
- "assetFilterChipActive": "jbF1yq_assetFilterChipActive",
1773
- "topNav": "jbF1yq_topNav",
1774
- "runQueueTitle": "jbF1yq_runQueueTitle",
1775
- "reviewIssueDim": "jbF1yq_reviewIssueDim",
1776
- "bookCard": "jbF1yq_bookCard",
1777
- "wfCard1": "jbF1yq_wfCard1",
1778
- "noticeText": "jbF1yq_noticeText",
1779
- "reviewIssue": "jbF1yq_reviewIssue",
1780
- "docsSurface": "jbF1yq_docsSurface",
1781
- "readerItemBadge": "jbF1yq_readerItemBadge",
1782
- "outlineTocL3": "jbF1yq_outlineTocL3",
1783
- "wfEmpty": "jbF1yq_wfEmpty",
1784
- "wfProgRest": "jbF1yq_wfProgRest",
1785
- "homeHeroCta": "jbF1yq_homeHeroCta",
1786
- "planListItem": "jbF1yq_planListItem",
1787
- "badgeDone": "jbF1yq_badgeDone",
1788
- "wfSt": "jbF1yq_wfSt",
1789
- "nfChipPulse": "jbF1yq_nfChipPulse",
1790
- "assetGroupHeader": "jbF1yq_assetGroupHeader",
1791
- "readerSidebar": "jbF1yq_readerSidebar",
1792
- "wfMetric": "jbF1yq_wfMetric",
1793
- "adaptMatrix": "jbF1yq_adaptMatrix",
1794
- "importModal": "jbF1yq_importModal",
1795
- "entryIcon": "jbF1yq_entryIcon",
1796
- "pageHeaderMain": "jbF1yq_pageHeaderMain",
1797
- "wfTool": "jbF1yq_wfTool",
1798
- "wfNow": "jbF1yq_wfNow",
1799
- "confirmTitle": "jbF1yq_confirmTitle",
1800
- "cardHead": "jbF1yq_cardHead",
1801
- "topNavMenuPanel": "jbF1yq_topNavMenuPanel",
1802
- "chWorkSurface": "jbF1yq_chWorkSurface",
1803
- "toolStep": "jbF1yq_toolStep",
1804
- "panelTop": "jbF1yq_panelTop",
1805
- "authorStripMain": "jbF1yq_authorStripMain",
1806
- "planBeatLines": "jbF1yq_planBeatLines",
1662
+ "wbIndexTitle": "jbF1yq_wbIndexTitle",
1663
+ "worldNote": "jbF1yq_worldNote",
1664
+ "aiTag": "jbF1yq_aiTag",
1665
+ "chapterMain": "jbF1yq_chapterMain",
1666
+ "brandLogo": "jbF1yq_brandLogo",
1667
+ "shelfToolbar": "jbF1yq_shelfToolbar",
1668
+ "topNavBtn": "jbF1yq_topNavBtn",
1669
+ "toolStepStatus": "jbF1yq_toolStepStatus",
1670
+ "outlineP": "jbF1yq_outlineP",
1671
+ "inboxEmpty": "jbF1yq_inboxEmpty",
1672
+ "importHint": "jbF1yq_importHint",
1673
+ "noticeBody": "jbF1yq_noticeBody",
1807
1674
  "homeHero": "jbF1yq_homeHero",
1808
- "readerChapterMeta": "jbF1yq_readerChapterMeta",
1809
- "authorTopNav": "jbF1yq_authorTopNav",
1810
- "drawerNarrow": "jbF1yq_drawerNarrow",
1811
- "drawerHeadBtn": "jbF1yq_drawerHeadBtn",
1812
- "panelTitle": "jbF1yq_panelTitle",
1813
- "adaptOutlinePre": "jbF1yq_adaptOutlinePre",
1814
- "wfFeedList": "jbF1yq_wfFeedList",
1815
- "confirmList": "jbF1yq_confirmList",
1816
- "switch": "jbF1yq_switch",
1817
- "dimCard": "jbF1yq_dimCard",
1818
- "statCardDValue": "jbF1yq_statCardDValue",
1819
- "assistantStatusBusy": "jbF1yq_assistantStatusBusy",
1820
- "adaptResult": "jbF1yq_adaptResult",
1821
- "importPreviewList": "jbF1yq_importPreviewList",
1822
- "wfConsole": "jbF1yq_wfConsole",
1823
- "wfFeedBox": "jbF1yq_wfFeedBox",
1824
- "chWorkSideFoot": "jbF1yq_chWorkSideFoot",
1825
- "chWorkMainSurface": "jbF1yq_chWorkMainSurface",
1826
- "chapterFocus": "jbF1yq_chapterFocus",
1827
- "homeHeroBatchFill": "jbF1yq_homeHeroBatchFill",
1828
- "inboxBadge": "jbF1yq_inboxBadge",
1829
- "ideaCandidate": "jbF1yq_ideaCandidate",
1830
- "wfHint": "jbF1yq_wfHint",
1831
- "chWorkSkeleton": "jbF1yq_chWorkSkeleton",
1832
- "topNavNi": "jbF1yq_topNavNi",
1833
- "panelNav": "jbF1yq_panelNav",
1834
- "toolStepDetail": "jbF1yq_toolStepDetail",
1835
- "wsPage": "jbF1yq_wsPage",
1836
- "ideaToggle": "jbF1yq_ideaToggle",
1837
- "importPreview": "jbF1yq_importPreview",
1838
- "wfRow": "jbF1yq_wfRow",
1675
+ "homeHeroMeta": "jbF1yq_homeHeroMeta",
1676
+ "inboxCount": "jbF1yq_inboxCount",
1677
+ "planGroupEdit": "jbF1yq_planGroupEdit",
1839
1678
  "readingCol": "jbF1yq_readingCol",
1840
- "readerText": "jbF1yq_readerText",
1841
- "wfDrawerList": "jbF1yq_wfDrawerList",
1842
- "assetConflictIcon": "jbF1yq_assetConflictIcon",
1843
- "cardHeadActions": "jbF1yq_cardHeadActions",
1844
- "noticeActions": "jbF1yq_noticeActions",
1845
- "heroPoolGroup": "jbF1yq_heroPoolGroup",
1846
- "outlineCode": "jbF1yq_outlineCode",
1847
- "wfBoxH": "jbF1yq_wfBoxH",
1848
- "wfCmd": "jbF1yq_wfCmd",
1849
- "confirmText": "jbF1yq_confirmText",
1850
- "buttonDanger": "jbF1yq_buttonDanger",
1851
- "wfStFail": "jbF1yq_wfStFail",
1852
- "cardHeadLeft": "jbF1yq_cardHeadLeft",
1853
- "authorPageBodyFlow": "jbF1yq_authorPageBodyFlow",
1679
+ "planTreeSearch": "jbF1yq_planTreeSearch",
1680
+ "readerBody": "jbF1yq_readerBody",
1681
+ "card": "jbF1yq_card",
1682
+ "wfConTxt": "jbF1yq_wfConTxt",
1683
+ "planBeats": "jbF1yq_planBeats",
1684
+ "inboxItem": "jbF1yq_inboxItem",
1685
+ "assetCardName": "jbF1yq_assetCardName",
1686
+ "adaptTable": "jbF1yq_adaptTable",
1687
+ "reviewIssueHead": "jbF1yq_reviewIssueHead",
1688
+ "authorHome": "jbF1yq_authorHome",
1689
+ "planGroupHead": "jbF1yq_planGroupHead",
1690
+ "toolStepError": "jbF1yq_toolStepError",
1691
+ "assetKind": "jbF1yq_assetKind",
1692
+ "badge": "jbF1yq_badge",
1693
+ "readerLoading": "jbF1yq_readerLoading",
1694
+ "field": "jbF1yq_field",
1695
+ "outlineTocL2": "jbF1yq_outlineTocL2",
1696
+ "chWorkGridFocus": "jbF1yq_chWorkGridFocus",
1697
+ "pillNav": "jbF1yq_pillNav",
1698
+ "planDetailBody": "jbF1yq_planDetailBody",
1699
+ "button": "jbF1yq_button",
1854
1700
  "assetCardFooter": "jbF1yq_assetCardFooter",
1855
- "statCardDDetail": "jbF1yq_statCardDDetail",
1856
- "badgeError": "jbF1yq_badgeError",
1857
- "wfMetrics": "jbF1yq_wfMetrics",
1858
- "assetTextarea": "jbF1yq_assetTextarea",
1859
- "cabinetCardMeta": "jbF1yq_cabinetCardMeta",
1860
- "notice-warn": "jbF1yq_notice-warn",
1861
- "inboxSource": "jbF1yq_inboxSource",
1862
- "lfPill": "jbF1yq_lfPill",
1863
- "worldSection": "jbF1yq_worldSection",
1701
+ "wfBox": "jbF1yq_wfBox",
1702
+ "wfHint": "jbF1yq_wfHint",
1703
+ "wfMetricSparkNote": "jbF1yq_wfMetricSparkNote",
1704
+ "inboxAll": "jbF1yq_inboxAll",
1705
+ "wfBook": "jbF1yq_wfBook",
1706
+ "diffAdd": "jbF1yq_diffAdd",
1707
+ "runQueueNo": "jbF1yq_runQueueNo",
1708
+ "row": "jbF1yq_row",
1709
+ "progressBar": "jbF1yq_progressBar",
1710
+ "assetLabel": "jbF1yq_assetLabel",
1711
+ "chatScroll": "jbF1yq_chatScroll",
1712
+ "textarea": "jbF1yq_textarea",
1713
+ "planDot": "jbF1yq_planDot",
1714
+ "homeHeroKicker": "jbF1yq_homeHeroKicker",
1715
+ "wfDl": "jbF1yq_wfDl",
1716
+ "homeHeroWhy": "jbF1yq_homeHeroWhy",
1717
+ "assetCardTop": "jbF1yq_assetCardTop",
1718
+ "drawerHead": "jbF1yq_drawerHead",
1864
1719
  "wfRsChk": "jbF1yq_wfRsChk",
1865
- "skeletonLine": "jbF1yq_skeletonLine",
1866
- "planBeatsLabel": "jbF1yq_planBeatsLabel",
1867
- "bookCardBlurb": "jbF1yq_bookCardBlurb",
1868
- "wfDlName": "jbF1yq_wfDlName",
1869
- "cmdIcon": "jbF1yq_cmdIcon",
1870
- "wfConRow": "jbF1yq_wfConRow",
1871
- "chapterActions": "jbF1yq_chapterActions",
1872
- "wfLiveMark": "jbF1yq_wfLiveMark",
1720
+ "nfSkeletonShimmer": "jbF1yq_nfSkeletonShimmer",
1721
+ "homeHeroBatch": "jbF1yq_homeHeroBatch",
1722
+ "adaptRules": "jbF1yq_adaptRules",
1723
+ "timelineSurface": "jbF1yq_timelineSurface",
1724
+ "authorStripStats": "jbF1yq_authorStripStats",
1725
+ "progressLine": "jbF1yq_progressLine",
1726
+ "wfPill": "jbF1yq_wfPill",
1873
1727
  "bookCardMetaRow": "jbF1yq_bookCardMetaRow",
1874
- "eyebrow": "jbF1yq_eyebrow",
1875
- "wfPreview": "jbF1yq_wfPreview",
1876
- "runQueueHead": "jbF1yq_runQueueHead",
1877
- "panelContent": "jbF1yq_panelContent",
1878
- "lfDot": "jbF1yq_lfDot",
1728
+ "wfTopRight": "jbF1yq_wfTopRight",
1729
+ "assistantFloatHeader": "jbF1yq_assistantFloatHeader",
1879
1730
  "emptyState": "jbF1yq_emptyState",
1880
- "homeHeroWhy": "jbF1yq_homeHeroWhy",
1881
- "brandLogo": "jbF1yq_brandLogo",
1882
- "assetKind": "jbF1yq_assetKind",
1883
- "planTreeRowTitle": "jbF1yq_planTreeRowTitle",
1884
- "button": "jbF1yq_button",
1885
- "wfColB": "jbF1yq_wfColB",
1886
- "reviewIssueFix": "jbF1yq_reviewIssueFix",
1887
- "chatBubbleAssistant": "jbF1yq_chatBubbleAssistant",
1888
- "planListLabel": "jbF1yq_planListLabel",
1889
- "planTreeRowNo": "jbF1yq_planTreeRowNo",
1890
- "bookCardCoverTitle": "jbF1yq_bookCardCoverTitle",
1891
- "wsSelectedText": "jbF1yq_wsSelectedText",
1892
- "wfPs": "jbF1yq_wfPs",
1893
- "kicker": "jbF1yq_kicker",
1894
- "adaptImpacts": "jbF1yq_adaptImpacts",
1895
- "noticeBody": "jbF1yq_noticeBody",
1731
+ "shelfStatGrid": "jbF1yq_shelfStatGrid",
1732
+ "pillNavPill": "jbF1yq_pillNavPill",
1733
+ "reviewIssues": "jbF1yq_reviewIssues",
1734
+ "settingsDrawerOverlay": "jbF1yq_settingsDrawerOverlay",
1735
+ "cmdMask": "jbF1yq_cmdMask",
1736
+ "wsColumns": "jbF1yq_wsColumns",
1737
+ "adaptProposal": "jbF1yq_adaptProposal",
1738
+ "inboxBadge": "jbF1yq_inboxBadge",
1739
+ "chatRole": "jbF1yq_chatRole",
1740
+ "adaptInputCard": "jbF1yq_adaptInputCard",
1741
+ "wfAct": "jbF1yq_wfAct",
1742
+ "homeHeroMain": "jbF1yq_homeHeroMain",
1743
+ "cardTitleLg": "jbF1yq_cardTitleLg",
1744
+ "t2Master": "jbF1yq_t2Master",
1745
+ "outlineTable": "jbF1yq_outlineTable",
1746
+ "pageHeaderEyebrow": "jbF1yq_pageHeaderEyebrow",
1747
+ "runChipDot": "jbF1yq_runChipDot",
1748
+ "chWork": "jbF1yq_chWork",
1749
+ "wfStRev": "jbF1yq_wfStRev",
1750
+ "toolLive": "jbF1yq_toolLive",
1751
+ "subPage": "jbF1yq_subPage",
1752
+ "chapterActions": "jbF1yq_chapterActions",
1753
+ "rowEnd": "jbF1yq_rowEnd",
1754
+ "toolSteps": "jbF1yq_toolSteps",
1755
+ "navTitle": "jbF1yq_navTitle",
1756
+ "readerMain": "jbF1yq_readerMain",
1757
+ "wfSmallFoot": "jbF1yq_wfSmallFoot",
1758
+ "heroPoolMeta": "jbF1yq_heroPoolMeta",
1759
+ "chWorkSideHead": "jbF1yq_chWorkSideHead",
1760
+ "chapterPreview": "jbF1yq_chapterPreview",
1896
1761
  "dropzone": "jbF1yq_dropzone",
1897
- "nfpanel": "jbF1yq_nfpanel",
1898
- "noticeBar": "jbF1yq_noticeBar",
1899
- "pageHeaderSub": "jbF1yq_pageHeaderSub",
1762
+ "chWorkToolbar": "jbF1yq_chWorkToolbar",
1763
+ "wsPreviewText": "jbF1yq_wsPreviewText",
1764
+ "wsSelectedText": "jbF1yq_wsSelectedText",
1765
+ "wfTool": "jbF1yq_wfTool",
1766
+ "authorPageHeader": "jbF1yq_authorPageHeader",
1900
1767
  "shelfHero": "jbF1yq_shelfHero",
1901
- "wfRail": "jbF1yq_wfRail",
1902
- "diffOld": "jbF1yq_diffOld",
1903
- "inboxTitle": "jbF1yq_inboxTitle",
1904
- "shelfEmptyIcon": "jbF1yq_shelfEmptyIcon",
1905
- "adaptRule": "jbF1yq_adaptRule",
1906
- "diffTagOld": "jbF1yq_diffTagOld",
1907
- "assetFilterChip": "jbF1yq_assetFilterChip",
1908
- "readerPara": "jbF1yq_readerPara",
1909
- "assistantFloatBody": "jbF1yq_assistantFloatBody",
1910
- "tabular": "jbF1yq_tabular",
1911
- "assetGrid": "jbF1yq_assetGrid",
1912
- "bookCardProgressFill": "jbF1yq_bookCardProgressFill",
1768
+ "panel": "jbF1yq_panel",
1769
+ "dropzoneIcon": "jbF1yq_dropzoneIcon",
1770
+ "runChipText": "jbF1yq_runChipText",
1771
+ "badgeError": "jbF1yq_badgeError",
1772
+ "chWorkAsideSurface": "jbF1yq_chWorkAsideSurface",
1773
+ "navGroupLabel": "jbF1yq_navGroupLabel",
1774
+ "numSerif": "jbF1yq_numSerif",
1775
+ "pageHeaderMain": "jbF1yq_pageHeaderMain",
1776
+ "settingsCard": "jbF1yq_settingsCard",
1777
+ "navTab": "jbF1yq_navTab",
1913
1778
  "progressLineDone": "jbF1yq_progressLineDone",
1914
- "wfRailWrap": "jbF1yq_wfRailWrap",
1915
- "readerSegBtn": "jbF1yq_readerSegBtn",
1916
- "assistantFloat": "jbF1yq_assistantFloat",
1917
- "planDetailTitle": "jbF1yq_planDetailTitle",
1918
- "brand": "jbF1yq_brand",
1919
- "wsPageHeader": "jbF1yq_wsPageHeader",
1920
- "wsColumns": "jbF1yq_wsColumns",
1779
+ "wfStFix": "jbF1yq_wfStFix",
1780
+ "homeHeroSealRow": "jbF1yq_homeHeroSealRow",
1781
+ "adaptResult": "jbF1yq_adaptResult",
1782
+ "outlineTocL3": "jbF1yq_outlineTocL3",
1783
+ "adaptTextarea": "jbF1yq_adaptTextarea",
1784
+ "readerPara": "jbF1yq_readerPara",
1785
+ "brandEn": "jbF1yq_brandEn",
1786
+ "readerGroup": "jbF1yq_readerGroup",
1787
+ "notice-warn": "jbF1yq_notice-warn",
1788
+ "inboxHead": "jbF1yq_inboxHead",
1789
+ "heroPoolBar": "jbF1yq_heroPoolBar",
1790
+ "input": "jbF1yq_input",
1791
+ "diffSame": "jbF1yq_diffSame",
1792
+ "toolStepActive": "jbF1yq_toolStepActive",
1793
+ "panelHead": "jbF1yq_panelHead",
1794
+ "shelfEmptyIcon": "jbF1yq_shelfEmptyIcon",
1795
+ "wfConBar": "jbF1yq_wfConBar",
1796
+ "importModalOverlay": "jbF1yq_importModalOverlay",
1797
+ "settingsDrawerBody": "jbF1yq_settingsDrawerBody",
1798
+ "planBeatRole": "jbF1yq_planBeatRole",
1799
+ "inboxAct": "jbF1yq_inboxAct",
1800
+ "iconBtn": "jbF1yq_iconBtn",
1801
+ "wbIndexVol": "jbF1yq_wbIndexVol",
1802
+ "confirmPhraseHint": "jbF1yq_confirmPhraseHint",
1803
+ "bookshelf": "jbF1yq_bookshelf",
1804
+ "subPageBack": "jbF1yq_subPageBack",
1805
+ "planTreeRow": "jbF1yq_planTreeRow",
1806
+ "wfMetrics": "jbF1yq_wfMetrics",
1807
+ "drawerMax": "jbF1yq_drawerMax",
1808
+ "topNavMenuPanel": "jbF1yq_topNavMenuPanel",
1809
+ "wfConsole": "jbF1yq_wfConsole",
1810
+ "dropzoneActive": "jbF1yq_dropzoneActive",
1811
+ "authorContent": "jbF1yq_authorContent",
1812
+ "confirmOverlay": "jbF1yq_confirmOverlay",
1813
+ "diffDel": "jbF1yq_diffDel",
1814
+ "outlineH1": "jbF1yq_outlineH1",
1815
+ "shelfGrid": "jbF1yq_shelfGrid",
1816
+ "assetCardContent": "jbF1yq_assetCardContent",
1817
+ "readerSidebar": "jbF1yq_readerSidebar",
1921
1818
  "cmdEmpty": "jbF1yq_cmdEmpty",
1922
- "planBeatLine": "jbF1yq_planBeatLine",
1923
- "timelineChapterEvents": "jbF1yq_timelineChapterEvents",
1924
- "planListWrap": "jbF1yq_planListWrap",
1925
- "card": "jbF1yq_card",
1926
- "wfToolAmber": "jbF1yq_wfToolAmber",
1927
- "wfFt": "jbF1yq_wfFt",
1928
- "readerGroupArrow": "jbF1yq_readerGroupArrow",
1929
- "brandSub": "jbF1yq_brandSub",
1930
- "heroPoolLegend": "jbF1yq_heroPoolLegend",
1931
- "pillNavSliding": "jbF1yq_pillNavSliding",
1932
- "chWorkGridFocus": "jbF1yq_chWorkGridFocus",
1933
- "subPageActions": "jbF1yq_subPageActions",
1934
- "inboxMoreBtn": "jbF1yq_inboxMoreBtn",
1819
+ "badgeWritten": "jbF1yq_badgeWritten",
1820
+ "chWorkTitle": "jbF1yq_chWorkTitle",
1821
+ "assistantStatus": "jbF1yq_assistantStatus",
1822
+ "cmdList": "jbF1yq_cmdList",
1935
1823
  "runSurface": "jbF1yq_runSurface",
1936
- "progressBar": "jbF1yq_progressBar",
1937
- "inboxMore": "jbF1yq_inboxMore",
1824
+ "navBadgePulse": "jbF1yq_navBadgePulse",
1825
+ "planList": "jbF1yq_planList",
1826
+ "wfDrawerBox": "jbF1yq_wfDrawerBox",
1938
1827
  "fadeIn": "jbF1yq_fadeIn",
1939
- "chWorkMain": "jbF1yq_chWorkMain",
1940
- "wbIndexRow": "jbF1yq_wbIndexRow",
1941
- "assetEditorRow": "jbF1yq_assetEditorRow",
1942
- "noticeDetail": "jbF1yq_noticeDetail",
1943
- "wsSelected": "jbF1yq_wsSelected",
1944
- "runChip": "jbF1yq_runChip",
1945
- "notice-ok": "jbF1yq_notice-ok",
1946
- "toolStepStatus": "jbF1yq_toolStepStatus",
1828
+ "docsSurface": "jbF1yq_docsSurface",
1829
+ "fieldLabel": "jbF1yq_fieldLabel",
1830
+ "wfRow": "jbF1yq_wfRow",
1831
+ "wfPreviewName": "jbF1yq_wfPreviewName",
1832
+ "wfConRow": "jbF1yq_wfConRow",
1833
+ "confirmTitle": "jbF1yq_confirmTitle",
1834
+ "homeHeroAlt": "jbF1yq_homeHeroAlt",
1835
+ "eyebrow": "jbF1yq_eyebrow",
1836
+ "homeHeroNode": "jbF1yq_homeHeroNode",
1837
+ "assistantFloatBody": "jbF1yq_assistantFloatBody",
1838
+ "authorPageBodyFlow": "jbF1yq_authorPageBodyFlow",
1839
+ "notice-info": "jbF1yq_notice-info",
1840
+ "reviewIssueSev": "jbF1yq_reviewIssueSev",
1841
+ "pillNavSliding": "jbF1yq_pillNavSliding",
1842
+ "brandSub": "jbF1yq_brandSub",
1843
+ "chWorkGrid": "jbF1yq_chWorkGrid",
1844
+ "liveText": "jbF1yq_liveText",
1947
1845
  "wfPreviewActs": "jbF1yq_wfPreviewActs",
1948
- "cabinetCardHead": "jbF1yq_cabinetCardHead",
1846
+ "brand": "jbF1yq_brand",
1847
+ "runLog": "jbF1yq_runLog",
1848
+ "wfPillDot": "jbF1yq_wfPillDot",
1849
+ "planGroupTitle": "jbF1yq_planGroupTitle",
1850
+ "diffText": "jbF1yq_diffText",
1851
+ "cardHeadCount": "jbF1yq_cardHeadCount",
1949
1852
  "assistantResize": "jbF1yq_assistantResize",
1853
+ "planDetailTitle": "jbF1yq_planDetailTitle",
1854
+ "tnum": "jbF1yq_tnum",
1855
+ "cmdInput": "jbF1yq_cmdInput",
1856
+ "progressLineLive": "jbF1yq_progressLineLive",
1857
+ "wfPreview": "jbF1yq_wfPreview",
1950
1858
  "planGroupText": "jbF1yq_planGroupText",
1951
- "adaptInputCard": "jbF1yq_adaptInputCard",
1952
- "topNavMenuHint": "jbF1yq_topNavMenuHint",
1953
- "importError": "jbF1yq_importError",
1954
- "settingsCard": "jbF1yq_settingsCard",
1955
- "dimEdit": "jbF1yq_dimEdit",
1956
- "pageHeader": "jbF1yq_pageHeader",
1859
+ "readerArticle": "jbF1yq_readerArticle",
1860
+ "inboxMore": "jbF1yq_inboxMore",
1861
+ "assetConflicts": "jbF1yq_assetConflicts",
1862
+ "assetConflictIcon": "jbF1yq_assetConflictIcon",
1863
+ "reviewBox": "jbF1yq_reviewBox",
1864
+ "pillNavSlider": "jbF1yq_pillNavSlider",
1865
+ "panelTop": "jbF1yq_panelTop",
1866
+ "titleBlock": "jbF1yq_titleBlock",
1867
+ "confirmAssurance": "jbF1yq_confirmAssurance",
1868
+ "wfPreviewLine": "jbF1yq_wfPreviewLine",
1869
+ "planEditField": "jbF1yq_planEditField",
1870
+ "wfQtTone": "jbF1yq_wfQtTone",
1871
+ "inboxList": "jbF1yq_inboxList",
1872
+ "outlineCode": "jbF1yq_outlineCode",
1873
+ "lfPill": "jbF1yq_lfPill",
1957
1874
  "wfConErr": "jbF1yq_wfConErr",
1958
- "outlineH4": "jbF1yq_outlineH4",
1959
- "chWorkMainFocus": "jbF1yq_chWorkMainFocus",
1960
- "planBeats": "jbF1yq_planBeats",
1961
- "dimTitle": "jbF1yq_dimTitle",
1962
1875
  "chWorkActions": "jbF1yq_chWorkActions",
1963
- "outlineTocItem": "jbF1yq_outlineTocItem",
1964
1876
  "chWorkAsideBody": "jbF1yq_chWorkAsideBody",
1965
- "wfStOk": "jbF1yq_wfStOk",
1966
- "shelfSearch": "jbF1yq_shelfSearch",
1967
- "cmdInput": "jbF1yq_cmdInput",
1968
- "badge": "jbF1yq_badge",
1969
- "wfFdotErr": "jbF1yq_wfFdotErr",
1970
- "cardTitle": "jbF1yq_cardTitle",
1971
- "homeHeroMeta": "jbF1yq_homeHeroMeta",
1972
- "drawerTitleNi": "jbF1yq_drawerTitleNi",
1973
- "drawerScrim": "jbF1yq_drawerScrim",
1974
- "navAboutUpdate": "jbF1yq_navAboutUpdate",
1975
- "wbIndexVol": "jbF1yq_wbIndexVol",
1976
- "planGroups": "jbF1yq_planGroups",
1977
- "reviewIssueHead": "jbF1yq_reviewIssueHead",
1978
- "chapterPreview": "jbF1yq_chapterPreview",
1979
- "progressBarFill": "jbF1yq_progressBarFill",
1980
- "authorTopTabs": "jbF1yq_authorTopTabs",
1981
- "assetCardTop": "jbF1yq_assetCardTop",
1982
- "chapter": "jbF1yq_chapter",
1983
- "headChip": "jbF1yq_headChip",
1877
+ "homeHeroSide": "jbF1yq_homeHeroSide",
1878
+ "runQueueList": "jbF1yq_runQueueList",
1879
+ "t2RailSep": "jbF1yq_t2RailSep",
1880
+ "nfToast": "jbF1yq_nfToast",
1881
+ "wfAccentBlue": "jbF1yq_wfAccentBlue",
1882
+ "reviewIssuePick": "jbF1yq_reviewIssuePick",
1883
+ "homeHeroBatchFill": "jbF1yq_homeHeroBatchFill",
1884
+ "inboxActs": "jbF1yq_inboxActs",
1885
+ "wfRailWrap": "jbF1yq_wfRailWrap",
1886
+ "chWorkText": "jbF1yq_chWorkText",
1887
+ "wfColA": "jbF1yq_wfColA",
1984
1888
  "tab": "jbF1yq_tab",
1985
- "legendOld": "jbF1yq_legendOld",
1986
- "wbIndexTitle": "jbF1yq_wbIndexTitle",
1987
- "runQueueMeta": "jbF1yq_runQueueMeta",
1988
- "wsPreviewText": "jbF1yq_wsPreviewText",
1989
- "t2RailMeta": "jbF1yq_t2RailMeta",
1990
- "outlineDoc": "jbF1yq_outlineDoc",
1991
- "why": "jbF1yq_why",
1992
- "runLogTime": "jbF1yq_runLogTime",
1993
- "readerSeg": "jbF1yq_readerSeg",
1994
- "homeHeroKicker": "jbF1yq_homeHeroKicker",
1995
- "cmdList": "jbF1yq_cmdList",
1996
- "pulse": "jbF1yq_pulse",
1997
- "subPageBack": "jbF1yq_subPageBack",
1998
- "runLogLine": "jbF1yq_runLogLine",
1999
- "cmdBox": "jbF1yq_cmdBox",
2000
- "noticeIcon": "jbF1yq_noticeIcon",
2001
- "wsAppliedBanner": "jbF1yq_wsAppliedBanner",
2002
- "wfBook": "jbF1yq_wfBook",
2003
- "settingsDrawerBody": "jbF1yq_settingsDrawerBody",
2004
- "homeHeroPool": "jbF1yq_homeHeroPool",
2005
- "buttonSmall": "jbF1yq_buttonSmall",
2006
- "dropzoneIcon": "jbF1yq_dropzoneIcon",
2007
- "wfPillDot": "jbF1yq_wfPillDot",
2008
- "readerFoot": "jbF1yq_readerFoot",
2009
- "wfSep": "jbF1yq_wfSep",
2010
- "subPage": "jbF1yq_subPage",
1889
+ "assetGroups": "jbF1yq_assetGroups",
1890
+ "bookCardProgressBar": "jbF1yq_bookCardProgressBar",
1891
+ "wfProgBig": "jbF1yq_wfProgBig",
1892
+ "noticeDetail": "jbF1yq_noticeDetail",
1893
+ "authorTopNav": "jbF1yq_authorTopNav",
1894
+ "confirmHead": "jbF1yq_confirmHead",
1895
+ "cardHeadActions": "jbF1yq_cardHeadActions",
1896
+ "subPageHead": "jbF1yq_subPageHead",
1897
+ "readerChapterTitle": "jbF1yq_readerChapterTitle",
2011
1898
  "topNavChevron": "jbF1yq_topNavChevron",
2012
- "readerSegActive": "jbF1yq_readerSegActive",
2013
- "readerGroup": "jbF1yq_readerGroup",
2014
- "wfStErr": "jbF1yq_wfStErr",
2015
- "heroPoolDoneSep": "jbF1yq_heroPoolDoneSep",
2016
- "outlineTable": "jbF1yq_outlineTable",
2017
- "t2Content": "jbF1yq_t2Content",
1899
+ "wfCard1": "jbF1yq_wfCard1",
1900
+ "cabinetCardMeta": "jbF1yq_cabinetCardMeta",
1901
+ "confirmText": "jbF1yq_confirmText",
1902
+ "assetConflictFix": "jbF1yq_assetConflictFix",
1903
+ "inboxTitle": "jbF1yq_inboxTitle",
1904
+ "pageHeaderTitle": "jbF1yq_pageHeaderTitle",
1905
+ "assetCard": "jbF1yq_assetCard",
1906
+ "wfColB": "jbF1yq_wfColB",
1907
+ "brandText": "jbF1yq_brandText",
1908
+ "topNavSpacer": "jbF1yq_topNavSpacer",
1909
+ "emptyStateIcon": "jbF1yq_emptyStateIcon",
1910
+ "panelBody": "jbF1yq_panelBody",
1911
+ "progressTotalBar": "jbF1yq_progressTotalBar",
1912
+ "wfDlDim": "jbF1yq_wfDlDim",
1913
+ "planGroupSpacer": "jbF1yq_planGroupSpacer",
1914
+ "cabinetCardBody": "jbF1yq_cabinetCardBody",
1915
+ "chWorkSide": "jbF1yq_chWorkSide",
1916
+ "chWorkBar": "jbF1yq_chWorkBar",
1917
+ "planOpTag": "jbF1yq_planOpTag",
1918
+ "wfStPend": "jbF1yq_wfStPend",
1919
+ "importPreview": "jbF1yq_importPreview",
1920
+ "emptyStateHint": "jbF1yq_emptyStateHint",
1921
+ "rowBetween": "jbF1yq_rowBetween",
1922
+ "outlineList": "jbF1yq_outlineList",
1923
+ "runQueueRow": "jbF1yq_runQueueRow",
1924
+ "heroPoolSeg": "jbF1yq_heroPoolSeg",
1925
+ "importResult": "jbF1yq_importResult",
1926
+ "importModalHead": "jbF1yq_importModalHead",
1927
+ "confirmIcon": "jbF1yq_confirmIcon",
1928
+ "diffList": "jbF1yq_diffList",
1929
+ "wfMetric": "jbF1yq_wfMetric",
1930
+ "homeHeroBatchCap": "jbF1yq_homeHeroBatchCap",
1931
+ "nfSlideInRight": "jbF1yq_nfSlideInRight",
1932
+ "wfDs": "jbF1yq_wfDs",
1933
+ "reviewIssueFix": "jbF1yq_reviewIssueFix",
1934
+ "wsPageHeader": "jbF1yq_wsPageHeader",
1935
+ "readerItemBadge": "jbF1yq_readerItemBadge",
1936
+ "wbIndexRow": "jbF1yq_wbIndexRow",
2018
1937
  "settingsDrawer": "jbF1yq_settingsDrawer",
2019
- "settingsDrawerHead": "jbF1yq_settingsDrawerHead",
2020
- "t2RailBtn": "jbF1yq_t2RailBtn",
2021
- "reviewIssues": "jbF1yq_reviewIssues",
1938
+ "readerSeg": "jbF1yq_readerSeg",
2022
1939
  "iconButton": "jbF1yq_iconButton",
2023
- "homeHeroMain": "jbF1yq_homeHeroMain",
2024
- "planDetailEmpty": "jbF1yq_planDetailEmpty",
2025
- "confirmAckRow": "jbF1yq_confirmAckRow",
2026
- "outlineCodeLang": "jbF1yq_outlineCodeLang",
2027
- "wfStFix": "jbF1yq_wfStFix",
2028
- "toolSteps": "jbF1yq_toolSteps",
1940
+ "wfLiveMark": "jbF1yq_wfLiveMark",
1941
+ "skeletonLine": "jbF1yq_skeletonLine",
1942
+ "headSpacer": "jbF1yq_headSpacer",
1943
+ "navAbout": "jbF1yq_navAbout",
1944
+ "importPreviewList": "jbF1yq_importPreviewList",
1945
+ "toolStepName": "jbF1yq_toolStepName",
1946
+ "nfChipPulse": "jbF1yq_nfChipPulse",
1947
+ "importModalActions": "jbF1yq_importModalActions",
1948
+ "assetFilterChip": "jbF1yq_assetFilterChip",
2029
1949
  "importField": "jbF1yq_importField",
2030
- "chWork": "jbF1yq_chWork",
2031
- "planList": "jbF1yq_planList",
2032
- "planTreeRow": "jbF1yq_planTreeRow",
2033
- "chWorkAsideSurface": "jbF1yq_chWorkAsideSurface",
1950
+ "importModal": "jbF1yq_importModal",
1951
+ "dimEdit": "jbF1yq_dimEdit",
1952
+ "nfDrawerIn": "jbF1yq_nfDrawerIn",
1953
+ "runLogLine": "jbF1yq_runLogLine",
1954
+ "wfToolBlue": "jbF1yq_wfToolBlue",
1955
+ "chWorkSideSurface": "jbF1yq_chWorkSideSurface",
1956
+ "adaptTableScroll": "jbF1yq_adaptTableScroll",
1957
+ "pageHeaderActions": "jbF1yq_pageHeaderActions",
1958
+ "navTitleBook": "jbF1yq_navTitleBook",
1959
+ "planDetail": "jbF1yq_planDetail",
1960
+ "wfDrawerList": "jbF1yq_wfDrawerList",
1961
+ "chatBubbleAssistant": "jbF1yq_chatBubbleAssistant",
1962
+ "planGroupEmptyTitle": "jbF1yq_planGroupEmptyTitle",
1963
+ "cabinetCard": "jbF1yq_cabinetCard",
1964
+ "panelTitle": "jbF1yq_panelTitle",
1965
+ "meta": "jbF1yq_meta",
1966
+ "cardHeadNote": "jbF1yq_cardHeadNote",
1967
+ "readerItemActive": "jbF1yq_readerItemActive",
1968
+ "acts": "jbF1yq_acts",
1969
+ "badgePending": "jbF1yq_badgePending",
1970
+ "panelContent": "jbF1yq_panelContent",
1971
+ "outlineVolSummary": "jbF1yq_outlineVolSummary",
1972
+ "bookCardBlurb": "jbF1yq_bookCardBlurb",
1973
+ "wfFt": "jbF1yq_wfFt",
1974
+ "wfTop": "jbF1yq_wfTop",
1975
+ "chWorkMain": "jbF1yq_chWorkMain",
1976
+ "brandName": "jbF1yq_brandName",
1977
+ "diffChange": "jbF1yq_diffChange",
1978
+ "badgeGenerating": "jbF1yq_badgeGenerating",
1979
+ "authorTopTabs": "jbF1yq_authorTopTabs",
1980
+ "headChip": "jbF1yq_headChip",
1981
+ "panelNav": "jbF1yq_panelNav",
1982
+ "bigProgressBarFill": "jbF1yq_bigProgressBarFill",
1983
+ "chWorkDraftBar": "jbF1yq_chWorkDraftBar",
1984
+ "navGroup": "jbF1yq_navGroup",
1985
+ "wsAppliedBanner": "jbF1yq_wsAppliedBanner",
1986
+ "timelineChapter": "jbF1yq_timelineChapter",
1987
+ "importModalBody": "jbF1yq_importModalBody",
1988
+ "busyRow": "jbF1yq_busyRow",
1989
+ "inboxMoreBtn": "jbF1yq_inboxMoreBtn",
1990
+ "wfFeedBox": "jbF1yq_wfFeedBox",
1991
+ "readerError": "jbF1yq_readerError",
1992
+ "diffLegend": "jbF1yq_diffLegend",
1993
+ "shelfEmptyTitle": "jbF1yq_shelfEmptyTitle",
1994
+ "segTab": "jbF1yq_segTab",
1995
+ "cardTitle": "jbF1yq_cardTitle",
1996
+ "wfCard2": "jbF1yq_wfCard2",
1997
+ "diffTagOld": "jbF1yq_diffTagOld",
1998
+ "readerChapterMeta": "jbF1yq_readerChapterMeta",
1999
+ "navTitleLogo": "jbF1yq_navTitleLogo",
2000
+ "diffColumn": "jbF1yq_diffColumn",
2001
+ "chapterFocus": "jbF1yq_chapterFocus",
2002
+ "wsSelected": "jbF1yq_wsSelected",
2003
+ "chapterFocusPulse": "jbF1yq_chapterFocusPulse",
2004
+ "assetFilterChipActive": "jbF1yq_assetFilterChipActive",
2005
+ "switch": "jbF1yq_switch",
2006
+ "wfDone": "jbF1yq_wfDone",
2007
+ "noticeIcon": "jbF1yq_noticeIcon",
2008
+ "confirmActions": "jbF1yq_confirmActions",
2009
+ "cardHeadLeft": "jbF1yq_cardHeadLeft",
2010
+ "createBookInner": "jbF1yq_createBookInner",
2011
+ "outlineHr": "jbF1yq_outlineHr",
2012
+ "nfConfirmIn": "jbF1yq_nfConfirmIn",
2013
+ "homeHeroBatchHead": "jbF1yq_homeHeroBatchHead",
2014
+ "t2RailBtn": "jbF1yq_t2RailBtn",
2015
+ "heroPoolDone": "jbF1yq_heroPoolDone",
2034
2016
  "importModalTabs": "jbF1yq_importModalTabs",
2035
- "chapterMain": "jbF1yq_chapterMain"
2017
+ "reviewIssueExcerpt": "jbF1yq_reviewIssueExcerpt",
2018
+ "wfCmd": "jbF1yq_wfCmd",
2019
+ "outlineVol": "jbF1yq_outlineVol",
2020
+ "dimTitle": "jbF1yq_dimTitle",
2021
+ "adaptRuleRow": "jbF1yq_adaptRuleRow",
2022
+ "planTreeRowNo": "jbF1yq_planTreeRowNo",
2023
+ "assetGroupHeader": "jbF1yq_assetGroupHeader",
2024
+ "wfConsoleNote": "jbF1yq_wfConsoleNote",
2025
+ "assetGroup": "jbF1yq_assetGroup",
2026
+ "buttonSmall": "jbF1yq_buttonSmall",
2027
+ "subPageMeta": "jbF1yq_subPageMeta",
2028
+ "progressLineError": "jbF1yq_progressLineError",
2029
+ "readerItemNo": "jbF1yq_readerItemNo",
2030
+ "wfFi": "jbF1yq_wfFi",
2031
+ "runQueue": "jbF1yq_runQueue",
2032
+ "ideaToggle": "jbF1yq_ideaToggle",
2033
+ "t2RailHead": "jbF1yq_t2RailHead",
2034
+ "planListWrap": "jbF1yq_planListWrap",
2035
+ "planTreeVolGroup": "jbF1yq_planTreeVolGroup",
2036
+ "pageHeaderSub": "jbF1yq_pageHeaderSub",
2037
+ "wfProgRest": "jbF1yq_wfProgRest",
2038
+ "readerItem": "jbF1yq_readerItem",
2039
+ "wfFeedList": "jbF1yq_wfFeedList",
2040
+ "assetConflict": "jbF1yq_assetConflict",
2041
+ "planGroups": "jbF1yq_planGroups",
2042
+ "notice-ok": "jbF1yq_notice-ok",
2043
+ "bigProgressBar": "jbF1yq_bigProgressBar",
2044
+ "planGroupEmpty": "jbF1yq_planGroupEmpty",
2045
+ "statCardDValue": "jbF1yq_statCardDValue",
2046
+ "toolStepIcon": "jbF1yq_toolStepIcon",
2047
+ "runQueueMeta": "jbF1yq_runQueueMeta",
2048
+ "coverPreview": "jbF1yq_coverPreview",
2049
+ "worldIntro": "jbF1yq_worldIntro",
2050
+ "subPageActions": "jbF1yq_subPageActions",
2051
+ "readerGroupCount": "jbF1yq_readerGroupCount",
2052
+ "wfDot": "jbF1yq_wfDot",
2053
+ "homeHeroActs": "jbF1yq_homeHeroActs",
2054
+ "outlineH2": "jbF1yq_outlineH2",
2055
+ "wfEmpty2": "jbF1yq_wfEmpty2",
2056
+ "timelineEvents": "jbF1yq_timelineEvents",
2057
+ "view": "jbF1yq_view",
2058
+ "wfDrawerToggle": "jbF1yq_wfDrawerToggle",
2059
+ "inbox": "jbF1yq_inbox",
2060
+ "outlineLi": "jbF1yq_outlineLi",
2061
+ "outlineTableWrap": "jbF1yq_outlineTableWrap",
2062
+ "adaptImpact": "jbF1yq_adaptImpact",
2063
+ "bookCard": "jbF1yq_bookCard",
2064
+ "readerGroupTitle": "jbF1yq_readerGroupTitle",
2065
+ "planBeatLine": "jbF1yq_planBeatLine",
2066
+ "why": "jbF1yq_why",
2067
+ "confirmPhraseRow": "jbF1yq_confirmPhraseRow",
2068
+ "homeHeroCta": "jbF1yq_homeHeroCta",
2069
+ "wfOpsBtn": "jbF1yq_wfOpsBtn",
2070
+ "progress": "jbF1yq_progress",
2071
+ "adaptOutlinePre": "jbF1yq_adaptOutlinePre",
2072
+ "shelfStatCard": "jbF1yq_shelfStatCard",
2073
+ "readerGroupArrow": "jbF1yq_readerGroupArrow",
2074
+ "t2RailMeta": "jbF1yq_t2RailMeta",
2075
+ "cabinetAll": "jbF1yq_cabinetAll",
2076
+ "wfStFail": "jbF1yq_wfStFail",
2077
+ "chWorkPickBar": "jbF1yq_chWorkPickBar",
2078
+ "progressBarFill": "jbF1yq_progressBarFill",
2079
+ "drawerScrim": "jbF1yq_drawerScrim",
2080
+ "shelfSearch": "jbF1yq_shelfSearch",
2081
+ "outlineDocWrap": "jbF1yq_outlineDocWrap",
2082
+ "topNavLabel": "jbF1yq_topNavLabel"
2036
2083
  };
2037
2084
  //#endregion
2038
2085
  //#region src/client/panel/status-badge.ts
@@ -33249,7 +33296,7 @@ window.__ModuleLoader__.load({
33249
33296
  key: "kqv944"
33250
33297
  }]
33251
33298
  ]);
33252
- createLucideIcon("tag", [["path", {
33299
+ const Tag = createLucideIcon("tag", [["path", {
33253
33300
  d: "M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",
33254
33301
  key: "vktsd0"
33255
33302
  }], ["circle", {
@@ -37602,6 +37649,7 @@ window.__ModuleLoader__.load({
37602
37649
  exports.Search = Search;
37603
37650
  exports.Settings = Settings;
37604
37651
  exports.Sparkles = Sparkles;
37652
+ exports.Tag = Tag;
37605
37653
  exports.Trash2 = Trash;
37606
37654
  exports.TriangleAlert = TriangleAlert;
37607
37655
  exports.Upload = Upload;
@@ -45482,7 +45530,7 @@ window.__ModuleLoader__.load({
45482
45530
  * 作者级首页容器:书架页左侧导航 + 内容区。
45483
45531
  * 导航复用工作区 .panelNav 玻璃卡片样式(同款),导航项为作者级:书架/改编/资产库/全局资产库/AI 进度/设置。
45484
45532
  */
45485
- const PLUGIN_VERSION = "2.4.0";
45533
+ const PLUGIN_VERSION = "2.5.0";
45486
45534
  /** GitHub 仓库地址(关于区块点击跳转)。 */
45487
45535
  const REPO_URL = "https://github.com/watersxya/dsh-novel-forge";
45488
45536
  /**
@@ -51058,6 +51106,10 @@ window.__ModuleLoader__.load({
51058
51106
  * 若各画各的,作者会看到两个不一致的结论。
51059
51107
  * 2. **数值即时算、不落盘** —— 数据源就是章节文件本身,存一份快照只会带来陈旧问题。
51060
51108
  *
51109
+ * 页面分两截,各管一把尺子:
51110
+ * - **风格目标卡**(上):生成端的锚点,作者显式蒸馏后落盘;审稿不读它;
51111
+ * - **漂移曲线**(下):审稿端的自适应尺子,实时算。两者刻意分开,见 style-profile.ts 文件头。
51112
+ *
51061
51113
  * 只画四项长度/比率指标:句长起伏与意象密度是诊断用的,画成曲线反而难读。
51062
51114
  */
51063
51115
  const METRICS = [
@@ -51178,6 +51230,217 @@ window.__ModuleLoader__.load({
51178
51230
  ]
51179
51231
  });
51180
51232
  }
51233
+ /** 风格卡的六项指标展示(比率型转百分比)。 */
51234
+ const CARD_METRICS = [
51235
+ {
51236
+ key: "avgSentenceLength",
51237
+ label: "句均长",
51238
+ percent: false
51239
+ },
51240
+ {
51241
+ key: "sentenceLengthCv",
51242
+ label: "句长起伏",
51243
+ percent: false
51244
+ },
51245
+ {
51246
+ key: "shortSentenceRatio",
51247
+ label: "短句占比",
51248
+ percent: true
51249
+ },
51250
+ {
51251
+ key: "dialogueRatio",
51252
+ label: "对话占比",
51253
+ percent: true
51254
+ },
51255
+ {
51256
+ key: "avgParagraphLength",
51257
+ label: "段落均长",
51258
+ percent: false
51259
+ },
51260
+ {
51261
+ key: "imageryPer1000",
51262
+ label: "意象密度",
51263
+ percent: false
51264
+ }
51265
+ ];
51266
+ function fmtCardValue(value, percent) {
51267
+ return percent ? (value * 100).toFixed(1) + "%" : value.toFixed(2);
51268
+ }
51269
+ /** 风格目标卡(生成端锚点):展示 + 蒸馏 + 清除。 */
51270
+ function StyleProfileCard({ api, onChanged }) {
51271
+ const [data, setData] = (0, react.useState)(null);
51272
+ const [sampleText, setSampleText] = (0, react.useState)("");
51273
+ const [busy, setBusy] = (0, react.useState)(false);
51274
+ const [error, setError] = (0, react.useState)("");
51275
+ const [notice, setNotice] = (0, react.useState)("");
51276
+ const refresh = (0, react.useCallback)(async (showError = true) => {
51277
+ try {
51278
+ setData(await api.styleProfile());
51279
+ } catch (err) {
51280
+ if (showError) setError(err.message);
51281
+ }
51282
+ }, [api]);
51283
+ (0, react.useEffect)(() => {
51284
+ refresh(false);
51285
+ }, [refresh]);
51286
+ const run = (0, react.useCallback)(async (action) => {
51287
+ setBusy(true);
51288
+ setError("");
51289
+ setNotice("");
51290
+ try {
51291
+ if (action === "clear") {
51292
+ await api.styleProfileClear();
51293
+ setNotice("已恢复默认(回落绑定资产的样本文本)");
51294
+ } else {
51295
+ const r = await api.styleProfileDistill(action, action === "distill-sample" ? sampleText : void 0);
51296
+ setNotice(r.profile === null ? "蒸馏失败" : `已蒸馏:${r.profile.label}——下一次生成/审稿生效`);
51297
+ }
51298
+ await refresh();
51299
+ onChanged();
51300
+ } catch (err) {
51301
+ setError(err.message);
51302
+ } finally {
51303
+ setBusy(false);
51304
+ }
51305
+ }, [
51306
+ api,
51307
+ sampleText,
51308
+ refresh,
51309
+ onChanged
51310
+ ]);
51311
+ const profile = data?.profile ?? null;
51312
+ const approved = data?.approvedChapters ?? 0;
51313
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
51314
+ style: {
51315
+ display: "flex",
51316
+ flexDirection: "column",
51317
+ gap: "var(--nf-space-8)"
51318
+ },
51319
+ children: [
51320
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
51321
+ className: `${panel_module_css_default.row} ${panel_module_css_default.rowBetween} ${panel_module_css_default.rowBetweenWrap}`,
51322
+ style: { gap: "var(--nf-space-8)" },
51323
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
51324
+ className: panel_module_css_default.cardTitle,
51325
+ children: "风格目标卡(生成端)"
51326
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
51327
+ className: panel_module_css_default.meta,
51328
+ children: ["当前生效:", data?.effectiveLabel ?? "—"]
51329
+ })]
51330
+ }),
51331
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
51332
+ className: panel_module_css_default.meta,
51333
+ children: "把「这本书的写法」固化成确定性指标区间,注入每一次正文生成。与下方漂移曲线(审稿尺子)**刻意分开**: 尺子跟着书自适应,卡只在作者蒸馏时变——否则生成目标会跟着漂移一起走,越写越偏且互相认证。"
51334
+ }),
51335
+ notice !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(NoticeBar, {
51336
+ kind: "ok",
51337
+ children: notice
51338
+ }),
51339
+ error !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(NoticeBar, {
51340
+ kind: "error",
51341
+ detail: "蒸馏失败时原卡不变,生成目标不受影响。重试会重新提交当前操作。",
51342
+ onRetry: () => {
51343
+ refresh();
51344
+ },
51345
+ children: error
51346
+ }),
51347
+ profile !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
51348
+ style: {
51349
+ border: "1px solid var(--nf-border)",
51350
+ borderRadius: 8,
51351
+ padding: 8,
51352
+ display: "flex",
51353
+ flexDirection: "column",
51354
+ gap: 6
51355
+ },
51356
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
51357
+ className: `${panel_module_css_default.row} ${panel_module_css_default.rowBetweenWrap}`,
51358
+ style: { gap: "var(--nf-space-8)" },
51359
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("b", {
51360
+ style: { fontSize: "var(--nf-fs-12)" },
51361
+ children: profile.label
51362
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
51363
+ className: panel_module_css_default.meta,
51364
+ children: [profile.source === "archived" ? "本书已归档章节蒸馏" : "参考样本蒸馏", profile.sampleChapters !== void 0 ? ` · 采样 ${profile.sampleChapters} 章` : ""]
51365
+ })]
51366
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
51367
+ className: `${panel_module_css_default.row} ${panel_module_css_default.rowBetweenWrap}`,
51368
+ style: { gap: "var(--nf-space-8)" },
51369
+ children: CARD_METRICS.map((m) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
51370
+ className: panel_module_css_default.meta,
51371
+ children: [
51372
+ m.label,
51373
+ " ",
51374
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("b", {
51375
+ style: { color: "var(--nf-text-1)" },
51376
+ children: fmtCardValue(profile.fingerprint[m.key], m.percent)
51377
+ })
51378
+ ]
51379
+ }, m.key))
51380
+ })]
51381
+ }),
51382
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
51383
+ className: `${panel_module_css_default.row} ${panel_module_css_default.rowBetweenWrap}`,
51384
+ style: { gap: "var(--nf-space-8)" },
51385
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
51386
+ type: "button",
51387
+ className: panel_module_css_default.button + " " + panel_module_css_default.buttonPrimary,
51388
+ disabled: busy || approved < 3,
51389
+ title: approved < 3 ? "至少需要 3 章已过审章节" : `用本书已过审的 ${approved} 章(等距抽样)蒸馏中位数风格`,
51390
+ onClick: () => {
51391
+ run("distill-archived");
51392
+ },
51393
+ children: [
51394
+ "用已归档章节蒸馏(",
51395
+ approved,
51396
+ " 章)"
51397
+ ]
51398
+ }), profile !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
51399
+ type: "button",
51400
+ className: panel_module_css_default.button,
51401
+ disabled: busy,
51402
+ onClick: () => {
51403
+ run("clear");
51404
+ },
51405
+ children: "恢复默认"
51406
+ })]
51407
+ }),
51408
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
51409
+ style: {
51410
+ display: "flex",
51411
+ flexDirection: "column",
51412
+ gap: 6
51413
+ },
51414
+ children: [
51415
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
51416
+ className: panel_module_css_default.meta,
51417
+ children: "或粘贴一段参考样文本(≥200 字,取你想让全书靠近的写法):"
51418
+ }),
51419
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
51420
+ className: panel_module_css_default.textarea,
51421
+ rows: 3,
51422
+ value: sampleText,
51423
+ placeholder: "粘贴参考正文(自己的旧作或对标作品的片段)……",
51424
+ onChange: (e) => setSampleText(e.target.value),
51425
+ disabled: busy
51426
+ }),
51427
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
51428
+ className: `${panel_module_css_default.row} ${panel_module_css_default.rowEnd}`,
51429
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
51430
+ type: "button",
51431
+ className: panel_module_css_default.button,
51432
+ disabled: busy || sampleText.trim().length < 200,
51433
+ onClick: () => {
51434
+ run("distill-sample");
51435
+ },
51436
+ children: "按样本蒸馏"
51437
+ })
51438
+ })
51439
+ ]
51440
+ })
51441
+ ]
51442
+ });
51443
+ }
51181
51444
  function StyleView({ api }) {
51182
51445
  const [data, setData] = (0, react.useState)(null);
51183
51446
  const [error, setError] = (0, react.useState)("");
@@ -51220,102 +51483,117 @@ window.__ModuleLoader__.load({
51220
51483
  ]
51221
51484
  })]
51222
51485
  }),
51223
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
51224
- className: panel_module_css_default.row,
51225
- children: [
51226
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("select", {
51227
- className: panel_module_css_default.input,
51228
- value: metric,
51229
- onChange: (e) => setMetric(e.target.value),
51230
- children: METRICS.map((m) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
51231
- value: m.key,
51232
- children: m.label
51233
- }, m.key))
51234
- }),
51235
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
51236
- className: panel_module_css_default.meta,
51237
- children: "虚线=本书风格基线;红点=该指标超出容忍度。基线与审稿同源。"
51238
- }),
51239
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
51240
- type: "button",
51241
- className: panel_module_css_default.button + " " + panel_module_css_default.buttonSmall,
51242
- onClick: () => {
51243
- refresh();
51244
- },
51245
- children: "刷新"
51246
- })
51247
- ]
51248
- }),
51249
- error !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(NoticeBar, {
51250
- kind: "error",
51251
- detail: "风格漂移需要已有章节正文(每章 200 字以上)。若刚写完新章,重试通常就能算出指标。",
51252
- onRetry: () => {
51253
- refresh();
51254
- },
51255
- children: error
51486
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(StyleProfileCard, {
51487
+ api,
51488
+ onChanged: refresh
51256
51489
  }),
51257
- measured.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
51258
- className: panel_module_css_default.meta,
51259
- children: "还没有可测的章节正文(每章需 200 字以上才能算指标)。先在「总编台 → 生产单」写几章。"
51260
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
51490
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
51261
51491
  style: {
51492
+ borderTop: "1px solid var(--nf-border)",
51493
+ paddingTop: "var(--nf-space-8)",
51262
51494
  display: "flex",
51263
51495
  flexDirection: "column",
51264
51496
  gap: "var(--nf-space-8)"
51265
51497
  },
51266
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(DriftChart, {
51267
- points,
51268
- metric,
51269
- baseline,
51270
- percent: current.percent
51271
- }), offChapters.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
51272
- style: {
51273
- border: "1px solid var(--nf-border)",
51274
- borderRadius: 8,
51275
- padding: 8,
51276
- background: "var(--nf-bg-inset)",
51277
- maxHeight: 220,
51278
- overflowY: "auto"
51279
- },
51280
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("b", {
51281
- style: { fontSize: "var(--nf-fs-12)" },
51498
+ children: [
51499
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
51500
+ className: panel_module_css_default.row,
51282
51501
  children: [
51283
- "偏离章节 ",
51284
- offChapters.length,
51285
- " 章"
51502
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("select", {
51503
+ className: panel_module_css_default.input,
51504
+ value: metric,
51505
+ onChange: (e) => setMetric(e.target.value),
51506
+ children: METRICS.map((m) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
51507
+ value: m.key,
51508
+ children: m.label
51509
+ }, m.key))
51510
+ }),
51511
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
51512
+ className: panel_module_css_default.meta,
51513
+ children: "虚线=本书风格基线;红点=该指标超出容忍度。基线与审稿同源。"
51514
+ }),
51515
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
51516
+ type: "button",
51517
+ className: panel_module_css_default.button + " " + panel_module_css_default.buttonSmall,
51518
+ onClick: () => {
51519
+ refresh();
51520
+ },
51521
+ children: "刷新"
51522
+ })
51286
51523
  ]
51287
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
51524
+ }),
51525
+ error !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(NoticeBar, {
51526
+ kind: "error",
51527
+ detail: "风格漂移需要已有章节正文(每章 200 字以上)。若刚写完新章,重试通常就能算出指标。",
51528
+ onRetry: () => {
51529
+ refresh();
51530
+ },
51531
+ children: error
51532
+ }),
51533
+ measured.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
51534
+ className: panel_module_css_default.meta,
51535
+ children: "还没有可测的章节正文(每章需 200 字以上才能算指标)。先在「总编台 → 生产单」写几章。"
51536
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
51288
51537
  style: {
51289
51538
  display: "flex",
51290
51539
  flexDirection: "column",
51291
- gap: 4,
51292
- marginTop: 6
51540
+ gap: "var(--nf-space-8)"
51293
51541
  },
51294
- children: offChapters.map((p) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
51295
- style: { fontSize: "var(--nf-fs-12)" },
51296
- children: [
51297
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
51298
- className: panel_module_css_default.lfPill,
51299
- "data-phase": "requesting",
51542
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(DriftChart, {
51543
+ points,
51544
+ metric,
51545
+ baseline,
51546
+ percent: current.percent
51547
+ }), offChapters.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
51548
+ style: {
51549
+ border: "1px solid var(--nf-border)",
51550
+ borderRadius: 8,
51551
+ padding: 8,
51552
+ background: "var(--nf-bg-inset)",
51553
+ maxHeight: 220,
51554
+ overflowY: "auto"
51555
+ },
51556
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("b", {
51557
+ style: { fontSize: "var(--nf-fs-12)" },
51558
+ children: [
51559
+ "偏离章节 ",
51560
+ offChapters.length,
51561
+ " 章"
51562
+ ]
51563
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
51564
+ style: {
51565
+ display: "flex",
51566
+ flexDirection: "column",
51567
+ gap: 4,
51568
+ marginTop: 6
51569
+ },
51570
+ children: offChapters.map((p) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
51571
+ style: { fontSize: "var(--nf-fs-12)" },
51300
51572
  children: [
51301
- "第 ",
51302
- p.no,
51303
- " 章"
51573
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
51574
+ className: panel_module_css_default.lfPill,
51575
+ "data-phase": "requesting",
51576
+ children: [
51577
+ "第 ",
51578
+ p.no,
51579
+ " 章"
51580
+ ]
51581
+ }),
51582
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
51583
+ style: { marginLeft: 6 },
51584
+ children: p.title
51585
+ }),
51586
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
51587
+ className: panel_module_css_default.meta,
51588
+ style: { marginLeft: 6 },
51589
+ children: p.significant.map(labelOf).join("、")
51590
+ })
51304
51591
  ]
51305
- }),
51306
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
51307
- style: { marginLeft: 6 },
51308
- children: p.title
51309
- }),
51310
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
51311
- className: panel_module_css_default.meta,
51312
- style: { marginLeft: 6 },
51313
- children: p.significant.map(labelOf).join("、")
51314
- })
51315
- ]
51316
- }, p.no))
51317
- })]
51318
- })]
51592
+ }, p.no))
51593
+ })]
51594
+ })]
51595
+ })
51596
+ ]
51319
51597
  })
51320
51598
  ]
51321
51599
  });
@@ -51466,6 +51744,52 @@ window.__ModuleLoader__.load({
51466
51744
  });
51467
51745
  }
51468
51746
  //#endregion
51747
+ //#region src/name-forge.ts
51748
+ /** 取名类别表(顺序即面板顺序)。 */
51749
+ const NAME_CATEGORIES = [
51750
+ {
51751
+ id: "person",
51752
+ label: "人名",
51753
+ hint: "主角、配角、反派、路人——姓与名都要有题材气质。",
51754
+ brief: "人物姓名(姓氏+名,或复姓/单名/字号),需有记忆点,避免烂大街的谐音梗",
51755
+ placeholder: "例如:冷僻复姓;主角名带孤勇感;反派名要雅致但有压迫感",
51756
+ maxCount: 20
51757
+ },
51758
+ {
51759
+ id: "place",
51760
+ label: "地名",
51761
+ hint: "宗门所在地、秘境、城池、山川——世界观的空间锚点。",
51762
+ brief: "地名(山川/城池/秘境/宗门所在),需与世界观地理层级自洽",
51763
+ placeholder: "例如:剑修宗门设在雪山;秘境名字要带蛊惑感",
51764
+ maxCount: 20
51765
+ },
51766
+ {
51767
+ id: "technique",
51768
+ label: "功法",
51769
+ hint: "招式、心法、神通、禁术——战力体系的门面。",
51770
+ brief: "功法/招式/神通名(心法、剑式、禁术),需体现运转机理或意境,避免空泛形容词堆砌",
51771
+ placeholder: "例如:偏雷法;名字要短促狠戾;禁术名字带反噬感",
51772
+ maxCount: 20
51773
+ },
51774
+ {
51775
+ id: "faction",
51776
+ label: "势力",
51777
+ hint: "宗门、家族、王朝、组织——派系斗争的名字牌。",
51778
+ brief: "势力/组织/宗门/家族名,需体现其立身之道与行事风格",
51779
+ placeholder: "例如:邪道宗门;名字要堂皇但暗藏戾气",
51780
+ maxCount: 20
51781
+ },
51782
+ {
51783
+ id: "artifact",
51784
+ label: "宝物",
51785
+ hint: "法宝、丹药、神器、材料——金手指与争夺战的载体。",
51786
+ brief: "宝物/法宝/丹药/材料名,需暗示品阶或异能,避免「XX神器」式敷衍",
51787
+ placeholder: "例如:主角本命法宝;名字与功法同源",
51788
+ maxCount: 20
51789
+ }
51790
+ ];
51791
+ new Map(NAME_CATEGORIES.map((c) => [c.id, c]));
51792
+ //#endregion
51469
51793
  //#region src/client/panel/views.tsx
51470
51794
  /**
51471
51795
  * 纯展示组件(views):所有状态与事件处理器都留在 NovelPanel,
@@ -52059,6 +52383,325 @@ window.__ModuleLoader__.load({
52059
52383
  });
52060
52384
  }
52061
52385
  //#endregion
52386
+ //#region src/client/panel/NameForgeView.tsx
52387
+ /**
52388
+ * 取名器:按类别批量生成专有名字,逐条采纳入本书名字库。
52389
+ *
52390
+ * 边界写在界面上:候选不落盘,采纳后才注入写作提示词(本书层「已定名资产」块);
52391
+ * 库有容量上限(每类 60 / 全书 200),满了会明确报错而不是静默丢弃。
52392
+ */
52393
+ /** 每次可选的生成条数。 */
52394
+ const COUNT_OPTIONS = [
52395
+ 5,
52396
+ 10,
52397
+ 15,
52398
+ 20
52399
+ ];
52400
+ function NameForgeView({ api }) {
52401
+ const [category, setCategory] = (0, react.useState)("person");
52402
+ const [count, setCount] = (0, react.useState)(10);
52403
+ const [hint, setHint] = (0, react.useState)("");
52404
+ const [candidates, setCandidates] = (0, react.useState)([]);
52405
+ const [justAdopted, setJustAdopted] = (0, react.useState)(/* @__PURE__ */ new Set());
52406
+ const [bank, setBank] = (0, react.useState)([]);
52407
+ const [busy, setBusy] = (0, react.useState)(false);
52408
+ const [error, setError] = (0, react.useState)("");
52409
+ const [notice, setNotice] = (0, react.useState)("");
52410
+ const refresh = (0, react.useCallback)(async (showError = true) => {
52411
+ try {
52412
+ const r = await api.nameForgeBank();
52413
+ setBank(r.entries);
52414
+ } catch (err) {
52415
+ if (showError) setError(err.message);
52416
+ }
52417
+ }, [api]);
52418
+ (0, react.useEffect)(() => {
52419
+ refresh(false);
52420
+ }, [refresh]);
52421
+ const generate = (0, react.useCallback)(async () => {
52422
+ setBusy(true);
52423
+ setError("");
52424
+ setNotice("");
52425
+ setJustAdopted(/* @__PURE__ */ new Set());
52426
+ try {
52427
+ const r = await api.nameForgeGenerate(category, count, hint);
52428
+ setCandidates(r.candidates);
52429
+ if (r.candidates.length === 0) setNotice("模型没给出可用候选,调整补充要求再试");
52430
+ } catch (err) {
52431
+ setCandidates([]);
52432
+ setError(err.message);
52433
+ } finally {
52434
+ setBusy(false);
52435
+ }
52436
+ }, [
52437
+ api,
52438
+ category,
52439
+ count,
52440
+ hint
52441
+ ]);
52442
+ const adopt = (0, react.useCallback)(async (items) => {
52443
+ if (items.length === 0) return;
52444
+ setBusy(true);
52445
+ setError("");
52446
+ setNotice("");
52447
+ try {
52448
+ await api.nameForgeAdopt(category, items);
52449
+ setJustAdopted((prev) => {
52450
+ const next = new Set(prev);
52451
+ for (const it of items) next.add(it.name);
52452
+ return next;
52453
+ });
52454
+ await refresh();
52455
+ setNotice(`已采纳 ${items.length} 个${specLabel(category)},下一次生成/审稿生效`);
52456
+ } catch (err) {
52457
+ setError(err.message);
52458
+ } finally {
52459
+ setBusy(false);
52460
+ }
52461
+ }, [
52462
+ api,
52463
+ category,
52464
+ refresh
52465
+ ]);
52466
+ const discard = (0, react.useCallback)(async (id) => {
52467
+ setBusy(true);
52468
+ setError("");
52469
+ setNotice("");
52470
+ try {
52471
+ await api.nameForgeDiscard(id);
52472
+ await refresh();
52473
+ setNotice("已从名字库移除");
52474
+ } catch (err) {
52475
+ setError(err.message);
52476
+ } finally {
52477
+ setBusy(false);
52478
+ }
52479
+ }, [api, refresh]);
52480
+ const pending = candidates.filter((c) => !justAdopted.has(c.name));
52481
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
52482
+ className: panel_module_css_default.card,
52483
+ style: { gap: "var(--nf-space-12)" },
52484
+ children: [
52485
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
52486
+ className: `${panel_module_css_default.row} ${panel_module_css_default.rowBetween} ${panel_module_css_default.rowBetweenWrap}`,
52487
+ style: { gap: "var(--nf-space-8)" },
52488
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
52489
+ className: panel_module_css_default.cardTitle,
52490
+ children: "取名(本书)"
52491
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
52492
+ className: panel_module_css_default.meta,
52493
+ children: "采纳后才注入写作提示词"
52494
+ })]
52495
+ }),
52496
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SlideNav, {
52497
+ ariaLabel: "取名类别",
52498
+ items: NAME_CATEGORIES.map((c) => ({
52499
+ id: c.id,
52500
+ label: c.label
52501
+ })),
52502
+ active: category,
52503
+ onSelect: (id) => {
52504
+ setCategory(id);
52505
+ setCandidates([]);
52506
+ setJustAdopted(/* @__PURE__ */ new Set());
52507
+ }
52508
+ }),
52509
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
52510
+ className: panel_module_css_default.meta,
52511
+ children: specHint(category)
52512
+ }),
52513
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
52514
+ className: `${panel_module_css_default.row} ${panel_module_css_default.rowBetweenWrap}`,
52515
+ style: { gap: "var(--nf-space-8)" },
52516
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
52517
+ className: panel_module_css_default.row,
52518
+ style: { gap: "var(--nf-space-4)" },
52519
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
52520
+ className: panel_module_css_default.meta,
52521
+ children: "数量"
52522
+ }), COUNT_OPTIONS.map((n) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
52523
+ type: "button",
52524
+ className: count === n ? panel_module_css_default.buttonPrimary : panel_module_css_default.button,
52525
+ onClick: () => setCount(n),
52526
+ disabled: busy,
52527
+ children: n
52528
+ }, n))]
52529
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
52530
+ type: "button",
52531
+ className: panel_module_css_default.buttonPrimary,
52532
+ disabled: busy,
52533
+ onClick: () => {
52534
+ generate();
52535
+ },
52536
+ children: busy ? "生成中…" : `生成${specLabel(category)}`
52537
+ })]
52538
+ }),
52539
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
52540
+ className: panel_module_css_default.input,
52541
+ value: hint,
52542
+ placeholder: specPlaceholder(category),
52543
+ onChange: (e) => setHint(e.target.value),
52544
+ disabled: busy
52545
+ }),
52546
+ notice !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(NoticeBar, {
52547
+ kind: "ok",
52548
+ children: notice
52549
+ }),
52550
+ error !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(NoticeBar, {
52551
+ kind: "error",
52552
+ detail: "取名失败时本次候选未入账,名字库内容不受影响。重试会按当前类别与补充要求重新生成。",
52553
+ onRetry: () => {
52554
+ generate();
52555
+ },
52556
+ children: error
52557
+ }),
52558
+ candidates.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
52559
+ style: {
52560
+ display: "flex",
52561
+ flexDirection: "column",
52562
+ gap: "var(--nf-space-8)"
52563
+ },
52564
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
52565
+ className: `${panel_module_css_default.row} ${panel_module_css_default.rowBetween}`,
52566
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
52567
+ className: panel_module_css_default.meta,
52568
+ children: [
52569
+ "候选 ",
52570
+ candidates.length,
52571
+ " 个(采纳前不入库)"
52572
+ ]
52573
+ }), pending.length > 1 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
52574
+ type: "button",
52575
+ className: panel_module_css_default.button,
52576
+ disabled: busy,
52577
+ onClick: () => {
52578
+ adopt(pending);
52579
+ },
52580
+ children: [
52581
+ "全部采纳(",
52582
+ pending.length,
52583
+ ")"
52584
+ ]
52585
+ })]
52586
+ }), candidates.map((c) => {
52587
+ const done = justAdopted.has(c.name);
52588
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
52589
+ className: `${panel_module_css_default.row} ${panel_module_css_default.rowBetween}`,
52590
+ style: {
52591
+ border: "1px solid var(--nf-border)",
52592
+ borderRadius: 8,
52593
+ padding: "6px 8px",
52594
+ gap: "var(--nf-space-8)"
52595
+ },
52596
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
52597
+ style: { minWidth: 0 },
52598
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("b", {
52599
+ style: { fontSize: "var(--nf-fs-12)" },
52600
+ children: c.name
52601
+ }), c.note !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
52602
+ className: panel_module_css_default.meta,
52603
+ style: { marginLeft: 8 },
52604
+ children: c.note
52605
+ })]
52606
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
52607
+ type: "button",
52608
+ className: done ? panel_module_css_default.button : panel_module_css_default.buttonPrimary,
52609
+ disabled: busy || done,
52610
+ onClick: () => {
52611
+ adopt([c]);
52612
+ },
52613
+ children: done ? "已采纳" : "采纳"
52614
+ })]
52615
+ }, c.name);
52616
+ })]
52617
+ }),
52618
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
52619
+ style: {
52620
+ borderTop: "1px solid var(--nf-border)",
52621
+ paddingTop: "var(--nf-space-8)",
52622
+ display: "flex",
52623
+ flexDirection: "column",
52624
+ gap: "var(--nf-space-8)"
52625
+ },
52626
+ children: [
52627
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
52628
+ className: `${panel_module_css_default.row} ${panel_module_css_default.rowBetween}`,
52629
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
52630
+ className: panel_module_css_default.cardTitle,
52631
+ children: [
52632
+ "名字库(",
52633
+ bank.length,
52634
+ ")"
52635
+ ]
52636
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
52637
+ className: panel_module_css_default.meta,
52638
+ children: "每类上限 60 · 全书 200"
52639
+ })]
52640
+ }),
52641
+ bank.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
52642
+ className: panel_module_css_default.meta,
52643
+ children: "还没有采纳的名字。生成一批,挑顺眼的采纳。"
52644
+ }),
52645
+ NAME_CATEGORIES.map((spec) => {
52646
+ const items = bank.filter((e) => e.category === spec.id);
52647
+ if (items.length === 0) return null;
52648
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
52649
+ style: {
52650
+ display: "flex",
52651
+ flexDirection: "column",
52652
+ gap: 4
52653
+ },
52654
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
52655
+ className: panel_module_css_default.meta,
52656
+ children: [
52657
+ spec.label,
52658
+ " · ",
52659
+ items.length
52660
+ ]
52661
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
52662
+ className: `${panel_module_css_default.row} ${panel_module_css_default.rowBetweenWrap}`,
52663
+ style: { gap: "var(--nf-space-4)" },
52664
+ children: items.map((e) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
52665
+ className: `${panel_module_css_default.row}`,
52666
+ style: {
52667
+ gap: 4,
52668
+ border: "1px solid var(--nf-border)",
52669
+ borderRadius: 6,
52670
+ padding: "2px 6px"
52671
+ },
52672
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
52673
+ style: { fontSize: "var(--nf-fs-12)" },
52674
+ children: e.name
52675
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
52676
+ type: "button",
52677
+ className: panel_module_css_default.iconBtn,
52678
+ title: "从名字库移除",
52679
+ "aria-label": `移除 ${e.name}`,
52680
+ disabled: busy,
52681
+ onClick: () => {
52682
+ discard(e.id);
52683
+ },
52684
+ children: "×"
52685
+ })]
52686
+ }, e.id))
52687
+ })]
52688
+ }, spec.id);
52689
+ })
52690
+ ]
52691
+ })
52692
+ ]
52693
+ });
52694
+ }
52695
+ function specLabel(id) {
52696
+ return NAME_CATEGORIES.find((c) => c.id === id)?.label ?? "名字";
52697
+ }
52698
+ function specHint(id) {
52699
+ return NAME_CATEGORIES.find((c) => c.id === id)?.hint ?? "";
52700
+ }
52701
+ function specPlaceholder(id) {
52702
+ return NAME_CATEGORIES.find((c) => c.id === id)?.placeholder ?? "";
52703
+ }
52704
+ //#endregion
52062
52705
  //#region src/client/panel/NovelPanel.tsx
52063
52706
  /**
52064
52707
  * The novel-forge workbench panel: tabs — 工作流 (guided pipeline), 大纲
@@ -52257,12 +52900,16 @@ window.__ModuleLoader__.load({
52257
52900
  },
52258
52901
  style: {
52259
52902
  icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(import_lucide_react.Sparkles, { size: 14 }),
52260
- label: "风格漂移"
52903
+ label: "风格 · 目标卡/漂移"
52261
52904
  },
52262
52905
  promptSlots: {
52263
52906
  icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(import_lucide_react.ListTree, { size: 14 }),
52264
52907
  label: "提示词槽位"
52265
52908
  },
52909
+ nameForge: {
52910
+ icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(import_lucide_react.Tag, { size: 14 }),
52911
+ label: "取名"
52912
+ },
52266
52913
  fallback: {
52267
52914
  icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(import_lucide_react.FileText, { size: 14 }),
52268
52915
  label: "详情"
@@ -55822,6 +56469,17 @@ window.__ModuleLoader__.load({
55822
56469
  setToolsOpen(false);
55823
56470
  }
55824
56471
  },
56472
+ {
56473
+ id: "nameForge",
56474
+ label: "取名",
56475
+ icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(import_lucide_react.Tag, { size: 14 }),
56476
+ on: "nameForge",
56477
+ title: "批量生成专有名字,采纳后注入写作",
56478
+ go: () => {
56479
+ openDrawer("nameForge");
56480
+ setToolsOpen(false);
56481
+ }
56482
+ },
55825
56483
  {
55826
56484
  id: "director",
55827
56485
  label: "自动编辑",
@@ -56099,7 +56757,7 @@ window.__ModuleLoader__.load({
56099
56757
  {
56100
56758
  key: "style",
56101
56759
  group: "tools",
56102
- name: "风格漂移曲线",
56760
+ name: "风格 · 目标卡/漂移",
56103
56761
  di: chapters.length > 0 ? `● ${chapters.length} 章可比对` : "○ 需先有正文",
56104
56762
  dim: project === null,
56105
56763
  go: () => {
@@ -56143,6 +56801,16 @@ window.__ModuleLoader__.load({
56143
56801
  go: () => {
56144
56802
  openDrawer("breakdown");
56145
56803
  }
56804
+ },
56805
+ {
56806
+ key: "nameForge",
56807
+ group: "tools",
56808
+ name: "取名",
56809
+ di: (project?.nameBank ?? []).length > 0 ? `● ${(project?.nameBank ?? []).length} 个已定名` : "○ 未取名",
56810
+ dim: project === null,
56811
+ go: () => {
56812
+ openDrawer("nameForge");
56813
+ }
56146
56814
  }
56147
56815
  ];
56148
56816
  /**
@@ -58898,6 +59566,7 @@ window.__ModuleLoader__.load({
58898
59566
  }),
58899
59567
  rightDrawer === "style" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(StyleView, { api }),
58900
59568
  rightDrawer === "promptSlots" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PromptSlotsView, { api }),
59569
+ rightDrawer === "nameForge" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(NameForgeView, { api }),
58901
59570
  rightDrawer === "run" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RunPanel, {
58902
59571
  api,
58903
59572
  totalChapters: chapters.length,