dsh-data-domain-knowledge 0.1.1-alpha.5 → 0.1.1-alpha.6

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/pages.js CHANGED
@@ -7285,7 +7285,7 @@
7285
7285
  });
7286
7286
 
7287
7287
  // src/client/pages.tsx
7288
- var import_react18 = __toESM(require_react(), 1);
7288
+ var import_react19 = __toESM(require_react(), 1);
7289
7289
  var import_client = __toESM(require_client(), 1);
7290
7290
 
7291
7291
  // data-domain-knowledge-css:/Users/fuzz/Documents/github/dsh-personal/packages/ui/lib/styles.css
@@ -7312,7 +7312,7 @@
7312
7312
  }
7313
7313
 
7314
7314
  // data-domain-knowledge-css:/Users/fuzz/Documents/github/dsh-personal/plugins/dsh-data-domain-knowledge/src/client/pages.css
7315
- var css3 = "/*\n * \u901A\u7528\u6574\u9875\uFF08\u62BD\u53D6\u8BD5\u8DD1 / \u7F16\u8BD1\u94FE\u8DEF\uFF09\u7684\u9875\u9762\u6837\u5F0F\u3002\n *\n * \u5B83\u548C `doc-page.css` \u662F\u540C\u4E00\u79CD\u4E1C\u897F\uFF1A\u4E00\u4EFD**\u5355\u72EC\u7684\u6D4F\u89C8\u5668\u6587\u6863**\uFF0C\u6CA1\u6709 DSH \u5916\u58F3\u3001\u6CA1\u6709\u4FA7\u680F\n * \u90A3 380px \u7684\u5BBD\u5EA6\u9650\u5236\u3002\u6240\u4EE5\u8FD9\u91CC\u7684\u51B3\u5B9A\u56F4\u7ED5\u4E24\u4EF6\u4E8B\uFF1A\n *\n * 1. **\u4E00\u6761\u5E38\u9A7B\u7684\u7A84\u6761**\u56DE\u7B54\u300C\u6211\u5728\u54EA\u4E00\u9875\u3001\u770B\u7684\u662F\u54EA\u4E2A\u5E93\u300D\u2014\u2014 \u6574\u9875\u53EF\u4EE5\u6EDA\u5F88\u4E45\uFF0C\u6807\u9898\u6EDA\u8D70\u4E86\n * \u5C31\u53EA\u5269\u5185\u5BB9\uFF0C\u800C\u8FD9\u4E09\u9875\u90FD\u9700\u8981\u77E5\u9053\u81EA\u5DF1\u5728\u54EA\u3002\n * 2. **\u4E24\u6761\u5185\u5BB9\u5BBD\u5EA6**\uFF1A\u8BF4\u660E\u7C7B\uFF08\u7F16\u8BD1\u94FE\u8DEF\uFF09\u662F\u8BFB\u6392\u7248\uFF0C\u7EA6 860px \u5C31\u591F\uFF1B\u8BD5\u8DD1\u62A5\u544A\n * \u91CC\u6709\u4E00\u5F20\u77E9\u9635\uFF0C\u7ED9\u5B83 1180px\u3002\u5BBD\u5EA6\u662F**\u5185\u5BB9**\u7684\u5C5E\u6027\uFF0C\u6240\u4EE5\u6309\u9875\u7ED9\uFF0C\u4E0D\u6309\u58F3\u7ED9\u3002\n *\n * \u989C\u8272\u5168\u90E8\u8D70\u5171\u4EAB\u4EE4\u724C\uFF08`@tita-agent/ui/styles.css` \u5E26\u8FDB\u6765\u7684\u90A3\u4E00\u5957\uFF09\u3002\u63D2\u4EF6\u81EA\u5DF1\u7684\n * `styles.css` \u4E5F\u4E00\u8D77\u8FDB\u6765\uFF1A\u8FD9\u4E09\u9875\u6E32\u67D3\u7684\u662F\u9762\u677F\u91CC\u7684\u7EC4\u4EF6\uFF08Card / Button / \u77E9\u9635\u8868\uFF09\uFF0C\n * \u90A3\u4E9B\u7C7B\u540D\u4F4F\u5728\u90A3\u513F\u3002\n */\n\n:root { color-scheme: light; }\n\nhtml { -webkit-text-size-adjust: 100%; }\n\nbody {\n margin: 0;\n background: var(--tita-canvas);\n color: var(--tita-ink);\n font-family: var(--tita-font);\n font-size: 13px;\n line-height: 1.65;\n}\n\n/* \u5E38\u9A7B\u7A84\u6761\u3002\u5B83**\u4E0D\u5438\u9876\u5230\u5E95**\uFF1A\u6EDA\u52A8\u6761\u4E00\u52A8\u5C31\u5728\u8FD9\u91CC\uFF0C\u56DE\u7B54\u300C\u8FD9\u662F\u54EA\u4E00\u9875\u300D\u3002 */\n.page-bar {\n position: sticky;\n top: 0;\n z-index: 2;\n display: flex;\n flex-wrap: wrap;\n align-items: baseline;\n gap: 4px 10px;\n border-bottom: 1px solid var(--tita-line);\n background: var(--tita-surface);\n padding: 13px 28px;\n}\n\n.page-bar h1 { margin: 0; font-size: 16px; font-weight: 720; letter-spacing: -0.02em; }\n.page-barMeta { color: var(--tita-ink-muted); font-size: 11.5px; }\n\n.page-main { padding: 28px 28px 120px; }\n\n/* \u5185\u5BB9\u5217\u3002\u5BBD\u5EA6\u6309\u9875\u7ED9\uFF1A\u8BF4\u660E 860\uFF0C\u8BD5\u8DD1\u62A5\u544A 1080\uFF0C\u67B6\u6784\u8BF4\u660E\u9875 1560\u3002 */\n.page-column { width: 100%; margin-inline: auto; }\n.page-column-help { max-width: 860px; }\n.page-column-trial { max-width: 1080px; }\n.page-column-tasks { max-width: 1220px; }\n/* \u67B6\u6784\u8BF4\u660E\u9875\u662F**\u4E00\u5757\u753B\u5E03**\uFF0C\u4E0D\u662F\u4E00\u680F\u6B63\u6587\uFF1A\u753B\u5E03\u8BBE\u8BA1\u5BBD 1172px\uFF0C\u518D\u52A0\u53F3\u5217 400px\uFF0C\n \u7A84\u4E8E 1560 \u5C31\u53EA\u80FD\u9760\u7F29\u5B57\u628A\u56FE\u585E\u8FDB\u6765\uFF08\u5B9E\u6D4B 0.55 \u500D\uFF0C\u5361\u7247\u4E0A\u7684\u5B57\u8BFB\u4E0D\u51FA\uFF09\u3002 */\n.page-column-guide { max-width: 1560px; }\n/* \u8FD9\u4E00\u9875\u7684\u8FB9\u6846\u8981\u8D34\u4F4F\u89C6\u53E3\u5E95\uFF0C\u6240\u4EE5\u628A\u7ED9\u300C\u8BFB\u6392\u7248\u300D\u90A3\u51E0\u9875\u7559\u7684 120px \u9875\u811A\u5185\u8FB9\u8DDD\u6536\u6210 40px \u2014\u2014\n \u7701\u4E0B\u7684 80px \u5168\u90E8\u6362\u6210\u753B\u5E03\u9AD8\u5EA6\u3002`:has` \u4E0D\u652F\u6301\u65F6\u8FD9\u6761\u88AB\u5FFD\u7565\uFF0C\u9000\u56DE 120px\uFF0C\u4E0D\u4F1A\u574F\u3002 */\n.page-main:has(> .page-column-guide) { padding-bottom: 40px; }\n\n/* \u5730\u5740\u4E0D\u5BF9\u3001\u6216\u8FD8\u6CA1\u8F7D\u5165\u65F6\u7684\u6574\u9875\u72B6\u6001\u3002\u4E0E `doc-page.css` \u7684 `.docPage-state` \u540C\u5F62\u3002 */\n.page-state {\n max-width: 720px;\n margin: 56px auto;\n border: 1px solid var(--tita-line);\n border-radius: 10px;\n background: var(--tita-surface);\n padding: 18px 20px;\n color: var(--tita-ink-muted);\n}\n.page-state h2 { margin: 0 0 6px; color: var(--tita-ink); font-size: 16px; font-weight: 680; }\n.page-state p { margin: 0 0 8px; line-height: 1.7; }\n.page-state code {\n border-radius: 4px;\n background: var(--tita-surface-muted);\n padding: 1px 5px;\n font-family: var(--tita-mono);\n font-size: 11.5px;\n}\n\n/* \u5185\u5BB9\u533A\u91CC\u7684\u4E00\u884C\u63D0\u793A\uFF1A\u8F7D\u5165\u4E2D\u3001\u6216\u300C\u5217\u8868\u6CA1\u53D6\u5230\u4F46\u7167\u6837\u80FD\u8DD1\u300D\u3002**\u4E0D\u662F** `.page-state` \u2014\u2014\n \u90A3\u4E00\u6761\u662F\u6574\u9875\u72B6\u6001\u7684\u5361\u7247\uFF08\u4E0A\u4E0B\u5404 56px \u5916\u8FB9\u8DDD\uFF09\uFF0C\u585E\u8FDB\u5185\u5BB9\u6D41\u91CC\u4F1A\u6491\u51FA\u4E00\u5927\u6BB5\u7A7A\u767D\u3002 */\n.page-notice {\n margin: 0 0 12px;\n border: 1px solid var(--tita-tone-amber-line);\n border-radius: 9px;\n background: var(--tita-tone-amber-tint);\n color: var(--tita-warning);\n padding: 8px 10px;\n font-size: 11.5px;\n}\n.page-loading { margin: 0; color: var(--tita-ink-muted); font-size: 12px; }\n\n/* ---------------------------------------------------------- \u77E5\u8BC6\u5904\u7406\n *\n * 2026-10-28 \u91CD\u6392\u3002\u4E0A\u4E00\u7248\u628A\u300C\u8F93\u5165\u8303\u56F4 / \u7ED3\u679C\u6458\u8981 / \u8F68\u8FF9 / \u539F\u59CB\u65E5\u5FD7\u300D\u5168\u5806\u5728\u4E3B\u680F\uFF0C\n * \u800C\u771F\u6B63\u8981\u5904\u7406\u7684\u5BF9\u8C61\uFF08\u6587\u6863\uFF09\u7F29\u5728\u53F3\u680F 260px \u7684\u5C0F\u5217\u8868\u91CC \u2014\u2014 \u4EBA\u627E\u4E0D\u5230\u300C\u54EA\u4E9B\u6587\u6863\u8FD8\u6CA1\u62BD\u300D\u3002\n *\n * \u8FD9\u4E00\u7248\u7684\u5C42\u7EA7\u6309\u95EE\u9898\u6392\uFF1A\n *\n * 1. **\u9875\u5934** \u2014\u2014 \u73B0\u5728\u4EC0\u4E48\u72B6\u6001 + \u89C6\u56FE\u5207\u6362 + \u4E09\u4E2A\u52A8\u4F5C\u3002\n * 2. **\u9636\u6BB5\u8F68** \u2014\u2014 \u4E94\u6BB5\u5404\u8D70\u5230\u54EA\u3002\u5B83\u662F\u8FD9\u4E00\u9875\u7684\u9AA8\u67B6\uFF0C\u6A2A\u8D2F\u6574\u9875\u3002\n * 3. **\u4E3B\u680F** \u2014\u2014 \u8FD9\u4E00\u6BB5\u7684\u5BF9\u8C61\uFF1A\u6587\u6863 / \u5206\u7EC4 / \u7D22\u5F15\u3002\u6BCF\u884C\u5148\u8BF4\u4ED6\u662F\u4EC0\u4E48\uFF0C\u518D\u8BF4\u62BD\u5230\u4E86\u591A\u5C11\u3002\n * 4. **\u4FA7\u680F** \u2014\u2014 \u8FC7\u7A0B\uFF1A\u9009\u4E2D\u90A3\u4E00\u4EFD\u7684\u8F68\u8FF9\uFF0C\u4EE5\u53CA\u8FD0\u884C\u8BB0\u5F55\u3002\u8F68\u8FF9\u662F\u65C1\u8BC1\uFF0C\u4E0D\u5360\u4E3B\u4F4D\u3002\n *\n * \u4E00\u6761\u7EAA\u5F8B\u6CA1\u53D8\uFF1A**\u4E00\u4E2A\u4E8B\u5B9E\u53EA\u51FA\u73B0\u4E00\u6B21**\u3002\u9636\u6BB5\u72B6\u6001\u53EA\u5728\u8F68\u4E0A\uFF0C\u5F85\u529E\u6570\u53EA\u5728\u540C\u4E00\u683C\u7B2C\u4E8C\u884C\uFF0C\n * \u6587\u6863\u72B6\u6001\u53EA\u5728\u884C\u5C3E\u90A3\u679A\u5FBD\u6807\u3002\n */\n.ktPage { display: grid; min-width: 0; gap: 14px; color: var(--tita-ink); }\n\n/* ---- \u9875\u5934 */\n.ktTop { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 10px 18px; }\n.ktTopLead { display: grid; min-width: 0; gap: 8px; }\n.ktTopActions { display: flex; flex: 0 0 auto; align-items: center; gap: 6px; }\n\n/* \u89C6\u56FE\u5207\u6362\uFF1A\u4E24\u4E2A\u8BCD\uFF0C\u4E00\u4E2A\u5E95\u3002\u5B83\u662F**\u540C\u4E00\u9875\u7684\u4E24\u79CD\u8BFB\u6CD5**\uFF0C\u4E0D\u662F\u7B2C\u4E8C\u6B65\u5BFC\u822A\uFF0C\n \u6240\u4EE5\u505A\u6210\u5C0F\u53F7\u5206\u6BB5\u63A7\u4EF6\uFF0C\u800C\u4E0D\u662F\u53C8\u4E00\u6761\u5E26\u4E0B\u5212\u7EBF\u7684\u9875\u7B7E\u3002 */\n.ktViews { display: inline-flex; width: fit-content; align-items: center; gap: 2px; border: 1px solid var(--tita-line); border-radius: 8px; background: var(--tita-surface-muted); padding: 2px; }\n.ktView { border: 0; border-radius: 6px; background: transparent; padding: 3px 11px; color: var(--tita-ink-muted); font: inherit; font-size: 11.5px; font-weight: 620; line-height: 1.5; cursor: pointer; }\n.ktView:hover { color: var(--tita-ink); }\n.ktView[aria-pressed=\"true\"] { background: var(--tita-surface); color: var(--tita-ink); box-shadow: 0 1px 2px rgb(16 24 40 / .08); }\n.ktView:focus-visible { outline: 2px solid var(--tita-focus-ring); outline-offset: 1px; }\n\n\n/* Execution owns the primary reading order. Library freshness stays in object metadata. */\n.ktCurrent { display: grid; min-width: 0; gap: 13px; border: 1px solid var(--tita-line); border-radius: 12px; background: var(--tita-surface); padding: 18px 20px; }\n.ktCurrentScope { margin: 6px 0 0; color: var(--tita-ink-muted); font-size: 11.5px; line-height: 1.6; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }\n.ktCurrentWork { display: flex; min-width: 0; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 7px 18px; }\n.ktCurrentWork strong { min-width: 0; color: var(--tita-ink); font-size: 14px; line-height: 1.6; overflow-wrap: anywhere; }\n.ktCurrentWork > span { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px; color: var(--tita-primary); font-size: 12px; }\n.ktCurrentCounts, .ktCurrentTiming { display: flex; flex-wrap: wrap; align-items: baseline; gap: 7px 20px; color: var(--tita-ink-muted); font-size: 12px; line-height: 1.6; font-variant-numeric: tabular-nums; }\n.ktCurrentCounts strong { color: var(--tita-ink); font-weight: 650; }\n.ktCurrentTiming { gap: 5px 18px; font-size: 11px; }\n.ktCurrentTiming > span { display: inline-flex; align-items: center; gap: 5px; }\n.ktCurrentHint { margin: 0; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.6; }\n.ktCompletion { border-top: 1px solid var(--tita-line); padding-top: 12px; color: var(--tita-ink-muted); font-size: 12px; line-height: 1.65; }\n.ktCompletion p { margin: 0; }\n.ktCompletion ul { display: grid; gap: 6px; margin: 10px 0; padding: 0; list-style: none; }\n.ktCompletion li { display: grid; grid-template-columns: 140px minmax(0, 1fr); gap: 12px; }\n.ktCompletion li strong { color: var(--tita-ink); font-weight: 600; }\n.ktCompletion li span { overflow-wrap: anywhere; }\n.ktRailHeading { display: flex; flex-wrap: wrap; align-items: baseline; gap: 5px 15px; }\n.ktRailHeading strong { color: var(--tita-ink); font-size: 12px; font-weight: 650; }\n.ktRailHeading > span { color: var(--tita-ink-muted); font-size: 11px; line-height: 1.6; }\n.ktActivity h3 { margin: 0; color: var(--tita-ink); font-size: 13px; font-weight: 650; }\n.ktActivityHint { margin: 5px 0 12px; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.6; }\n.ktActivityList { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }\n.ktActivityList li { display: grid; grid-template-columns: 58px minmax(0, 1fr); gap: 10px; border-bottom: 1px solid var(--tita-line); padding: 12px 0; }\n.ktActivityList li:last-child { border-bottom: 0; }\n.ktActivityList time { padding-top: 1px; color: var(--tita-ink-muted); font-size: 10.5px; font-variant-numeric: tabular-nums; }\n.ktActivityList p { margin: 0; color: var(--tita-ink); font-size: 11.5px; line-height: 1.65; overflow-wrap: anywhere; }\n.ktActivityList [data-warning] p { color: var(--tita-warning); }\n.ktWarnings { margin: 14px 0 6px; border: 1px solid color-mix(in srgb, var(--tita-warning) 30%, var(--tita-line)); border-radius: 8px; background: color-mix(in srgb, var(--tita-warning) 5%, var(--tita-surface)); padding: 10px; color: var(--tita-ink); font-size: 11px; line-height: 1.65; }\n.ktWarnings > strong { display: flex; align-items: center; gap: 6px; font-weight: 650; }\n.ktWarnings ul { margin: 8px 0 0; padding-left: 16px; overflow-wrap: anywhere; }\n.ktWarnings li + li { margin-top: 6px; }\n@media (max-width: 560px) {\n .ktCurrent { padding: 14px; }\n .ktCurrentCounts { gap: 5px 12px; }\n .ktCompletion li { grid-template-columns: minmax(0, 1fr); gap: 2px; }\n}\n\n.ktError, .ktNotice { display: flex; margin: 0; align-items: center; gap: 7px; border: 1px solid var(--tita-line); border-radius: 8px; padding: 8px 11px; font-size: 12px; line-height: 1.55; }\n.ktError { border-color: color-mix(in srgb, var(--tita-danger) 32%, var(--tita-surface)); background: color-mix(in srgb, var(--tita-danger) 8%, var(--tita-surface)); color: var(--tita-danger); }\n.ktNotice { border-color: var(--tita-tone-green-line); background: var(--tita-tone-green-tint); color: var(--tita-tone-green); }\n.ktError > span, .ktNotice > span { min-width: 0; flex: 1 1 auto; }\n.ktNoticeClose { margin-left: auto; color: inherit; }\n.ktEmpty { margin: 0; padding: 22px 0; color: var(--tita-ink-muted); font-size: 12px; line-height: 1.6; }\n.ktHint { margin: 9px 0 0; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.6; }\n.ktHintWarn { color: var(--tita-warning); }\n\n/* ---- \u9636\u6BB5\u8F68\uFF1A\u590D\u7528\u77E5\u8BC6\u5E93 SourceRaw \u2192 Knowledge \u7684\u4E24\u884C\u8282\u70B9\u6837\u5F0F */\n.ktWork { display: flex; min-width: 0; flex-direction: column; gap: 14px; }\n.ktPipelineSteps { width: 100%; }\n.ktPipelineStep { display: grid; width: 100%; min-width: 0; min-height: 70px; align-content: start; gap: 3px; padding: 7px 9px; }\n.ktPipelineStep[data-running] { border-color: var(--tita-primary); background: var(--tita-primary-soft); }\n.ktPipelineStep .tita-kbStepFacts { align-items: center; }\n.ktPipelineStep .tita-kbStepNote { display: inline-flex; flex: 0 0 auto; overflow: visible; }\n.ktPipelineStep .tita-uiBadge { font-size: 9px; }\n.ktPipelineProgress { width: 100%; height: 4px; }\n\n/* ---- \u4E24\u680F\uFF1A\u4E3B\u680F\u662F\u5BF9\u8C61\uFF0C\u4FA7\u680F\u662F\u8FC7\u7A0B */\n.ktBody { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(316px, 1fr); align-items: start; gap: 18px; }\n.ktMain { min-width: 0; }\n.ktStageTab { min-width: 0; }\n\n/* ---- \u9636\u6BB5\u5361\uFF1A\u5361\u5185**\u4E0D\u518D\u5957\u5361**\uFF0C\u5206\u8282\u7528\u53D1\u4E1D\u7EBF */\n.ktStage { min-width: 0; overflow: hidden; border: 1px solid var(--tita-line); border-radius: 10px; background: var(--tita-surface); }\n.ktStageHead { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; padding: 15px 17px 0; }\n.ktStageIntro { min-width: 0; }\n.ktStageIntro h2 { margin: 0; color: var(--tita-ink); font-size: 15px; font-weight: 700; line-height: 1.35; letter-spacing: -.015em; }\n.ktStageIntro p { margin: 3px 0 0; color: var(--tita-ink-muted); font-size: 11.5px; line-height: 1.55; }\n.ktStageActions { display: flex; flex: 0 0 auto; align-items: center; gap: 4px; }\n/* \u4E00\u884C\u5143\u4FE1\u606F\uFF1A\u8303\u56F4\u3001\u6A21\u578B\u3001\u4E0A\u6B21\u5904\u7406\u91CF\u3001\u6700\u8FD1\u65F6\u95F4\u3002\u5B83\u662F**\u8BFB\u6570**\uFF0C\u6240\u4EE5\u7B49\u5BBD\u6570\u5B57\u3001\u989C\u8272\u66F4\u8F7B\u3002 */\n.ktStageMeta { display: flex; flex-wrap: wrap; align-items: baseline; gap: 3px 0; margin: 9px 0 0; padding: 0 17px 12px; border-bottom: 1px solid var(--tita-line); color: var(--tita-ink-faint); font-size: 10.5px; line-height: 1.5; font-variant-numeric: tabular-nums; }\n.ktStageMeta i { margin: 0 7px; font-style: normal; }\n\n/* ---- \u6587\u6863\u5217\u8868\n *\n * \u4E00\u884C\u4E09\u884C\u6587\u5B57\uFF1A\u6807\u9898 / \u5B83\u662F\u4EC0\u4E48 / \u62BD\u51FA\u4E86\u591A\u5C11\u3002\u5DE6\u4FA7\u65B9\u6846\u662F**\u4E0B\u4E00\u6B21\u8FD0\u884C\u7684\u8303\u56F4**\uFF0C\n * \u884C\u672C\u8EAB\u662F**\u770B\u8FD9\u4E00\u4EFD\u7684\u8F68\u8FF9** \u2014\u2014 \u4E24\u4E2A\u547D\u4E2D\u533A\u5404\u505A\u5404\u7684\u4E8B\uFF0C\u4E0D\u4E92\u76F8\u5192\u5145\u3002\n */\n.ktDocs { display: grid; margin: 0; padding: 0; list-style: none; }\n.ktDoc { display: flex; min-width: 0; align-items: flex-start; gap: 10px; border-bottom: 1px solid var(--tita-line); padding: 10px 17px 11px; transition: background-color 120ms ease-out; }\n.ktDoc:last-child { border-bottom: 0; }\n.ktDoc:hover { background: var(--tita-surface-muted); }\n.ktDoc[data-selected] { background: color-mix(in srgb, var(--tita-primary) 7%, var(--tita-surface)); }\n.ktDoc[data-selected] .ktDocTitle { color: var(--tita-primary); }\n.ktDocPick { flex: 0 0 auto; border: 0; border-radius: 5px; background: none; padding: 2px 0 0; color: inherit; cursor: pointer; }\n.ktDocPick:focus-visible { outline: 2px solid var(--tita-focus-ring); outline-offset: 2px; }\n.ktDocPickBox { display: inline-flex; width: 15px; height: 15px; align-items: center; justify-content: center; border: 1px solid var(--tita-line-strong); border-radius: 4px; background: var(--tita-surface); color: var(--tita-primary); }\n.ktDocPick[aria-pressed=\"true\"] .ktDocPickBox { border-color: var(--tita-primary); background: var(--tita-primary-soft); }\n.ktDocMain { display: grid; min-width: 0; flex: 1 1 auto; gap: 2px; border: 0; border-radius: 6px; background: none; padding: 0; color: inherit; font: inherit; text-align: left; cursor: pointer; }\n.ktDocMain:focus-visible { outline: 2px solid var(--tita-focus-ring); outline-offset: 3px; }\n.ktDocMainStatic { cursor: default; }\n.ktDocTitle { min-width: 0; color: var(--tita-ink); font-size: 12.5px; font-weight: 650; line-height: 1.5; overflow-wrap: anywhere; }\n.ktDocMeta { display: flex; flex-wrap: wrap; align-items: baseline; color: var(--tita-ink-faint); font-size: 10.5px; line-height: 1.5; font-variant-numeric: tabular-nums; }\n.ktDocMeta i { margin: 0 5px; font-style: normal; }\n/* \u62BD\u5230\u4E86\u591A\u5C11\uFF1A\u8FD9\u4E00\u9875\u6700\u8981\u7D27\u7684\u4E00\u884C\u8BFB\u6570\u3002\u53EF\u4EE5\u6298\u4E24\u884C\uFF0C\u518D\u957F\u5C31\u622A\u65AD \u2014\u2014 \u5B8C\u6574\u6570\u5B57\u5728\u8F68\u8FF9\u5168\u6587\u91CC\u3002 */\n.ktDocFacts { display: -webkit-box; overflow: hidden; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.55; overflow-wrap: anywhere; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }\n.ktDocReason { color: var(--tita-warning); }\n.ktDocSide { display: flex; flex: 0 0 auto; align-items: center; padding-top: 1px; }\n\n/* ---- \u7269\u5316\u6CA1\u6709\u6587\u6863\u5217\u8868\uFF1B\u63D0\u70BC\u4E0E\u7D22\u5F15\u5404\u6709\u4E00\u5757\u8BF4\u660E\u3002 */\n.ktDerive, .ktIndex { display: grid; gap: 12px; padding: 15px 17px 17px; }\n.ktDerive h3 { margin: 0; color: var(--tita-ink); font-size: 13px; font-weight: 680; }\n.ktDerive p { margin: 3px 0 0; color: var(--tita-ink-muted); font-size: 11.5px; line-height: 1.65; }\n.ktDerive dl, .ktIndex dl { display: grid; gap: 8px; margin: 0; }\n.ktDerive dl > div, .ktIndex dl > div { display: grid; grid-template-columns: 76px minmax(0, 1fr); align-items: start; gap: 10px; }\n.ktDerive dt, .ktIndex dt { color: var(--tita-ink-faint); font-size: 10.5px; line-height: 1.6; }\n.ktDerive dd, .ktIndex dd { min-width: 0; margin: 0; color: var(--tita-ink); font-size: 11.5px; line-height: 1.6; overflow-wrap: anywhere; }\n.ktIndexState { display: flex; align-items: center; gap: 9px; }\n.ktIndexState p { margin: 0; color: var(--tita-ink-muted); font-size: 11.5px; line-height: 1.6; }\n\n/* ---- \u8FD0\u884C\u8F93\u51FA\uFF08\u9ED8\u8BA4\u6536\u8D77\uFF09 */\n.ktOutput { border-top: 1px solid var(--tita-line); padding: 4px 17px 15px; }\n.ktOutputToggle { gap: 5px; padding-inline: 2px 6px; color: var(--tita-ink-muted); font-size: 11px; font-weight: 650; }\n.ktOutputToggle:hover { color: var(--tita-ink); }\n.ktOutputToggle > span { color: var(--tita-ink-faint); font-size: 10.5px; font-weight: 500; }\n.ktOutputToggle svg { transition: transform 140ms ease-out; }\n.ktOutputToggle[aria-expanded=\"true\"] svg { transform: rotate(180deg); }\n.ktOutputBody { display: grid; gap: 8px; margin-top: 6px; }\n.ktOutputBody > p { margin: 0; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.55; }\n.ktPre { margin: 0; max-height: 320px; overflow: auto; border-radius: 8px; background: var(--tita-surface-muted); padding: 11px 13px; color: var(--tita-ink); font-family: var(--tita-mono); font-size: 11.5px; line-height: 1.6; white-space: pre-wrap; overflow-wrap: anywhere; tab-size: 2; }\n.ktReportsInline { display: flex; flex-wrap: wrap; gap: 14px; }\n.ktLink { display: inline-flex; height: auto; align-items: center; gap: 4px; padding-inline: 0; color: var(--tita-primary); font-size: 11px; font-weight: 500; text-decoration: underline; text-underline-offset: 2px; }\n.ktLink:hover { background: transparent; color: var(--tita-primary); }\n\n/* ---- \u4FA7\u680F\uFF1A\u8F68\u8FF9 / \u8FD0\u884C\u8BB0\u5F55 */\n.ktSide { min-width: 0; overflow: hidden; border: 1px solid var(--tita-line); border-radius: 10px; background: var(--tita-surface); }\n.ktSideTabs { min-width: 0; }\n.ktSideTabsList { display: flex; box-sizing: border-box; width: 100%; height: auto; align-items: center; justify-content: flex-start; gap: 2px; border-radius: 0; border-bottom: 1px solid var(--tita-line); background: transparent; padding: 7px 9px; }\n.ktSideTabsList button { border-radius: 6px; padding: 3px 9px; color: var(--tita-ink-muted); font-size: 11.5px; font-weight: 620; }\n.ktSideTabsList button[data-state=\"active\"] { background: var(--tita-surface-muted); color: var(--tita-ink); }\n.ktSideBadge { margin-left: 5px; color: var(--tita-ink-faint); font-size: 10px; font-variant-numeric: tabular-nums; }\n.ktSidePanel { min-width: 0; padding: 12px 15px 14px; }\n\n.ktTrailHead { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }\n.ktTrailHead h3 { margin: 0; color: var(--tita-ink); font-size: 12.5px; font-weight: 700; }\n.ktTrailHead p { margin: 2px 0 0; color: var(--tita-ink-faint); font-size: 10.5px; line-height: 1.5; }\n.ktTrailCount { flex: 0 0 auto; color: var(--tita-ink-muted); font-size: 10.5px; font-variant-numeric: tabular-nums; }\n.ktTrailFilter { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 9px; border: 1px solid var(--tita-line); border-radius: 7px; background: var(--tita-surface-muted); padding: 3px 4px 3px 9px; }\n.ktTrailFilter > span { overflow: hidden; color: var(--tita-ink-muted); font-size: 10.5px; text-overflow: ellipsis; white-space: nowrap; }\n.ktTrailList { display: grid; margin: 6px 0 0; padding: 0; list-style: none; }\n.ktTrailRow { display: grid; width: 100%; min-width: 0; gap: 3px; border: 0; border-bottom: 1px solid var(--tita-line); background: none; padding: 10px 2px; color: var(--tita-ink); font: inherit; text-align: left; cursor: pointer; }\n.ktTrailRow:last-child { border-bottom: 0; padding-bottom: 2px; }\n.ktTrailRow:hover .ktTrailRowTitle { color: var(--tita-primary); text-decoration: underline; text-underline-offset: 3px; }\n.ktTrailRow:focus-visible { outline: 2px solid var(--tita-focus-ring); outline-offset: 2px; border-radius: 6px; }\n.ktTrailRowTitle { display: flex; min-width: 0; align-items: center; flex-wrap: wrap; gap: 6px; font-size: 11.5px; font-weight: 620; line-height: 1.5; overflow-wrap: anywhere; }\n.ktTrailRowSummary { color: var(--tita-ink-muted); font-size: 10.5px; line-height: 1.55; overflow-wrap: anywhere; }\n.ktTrailRowMeta { display: inline-flex; align-items: center; gap: 5px; color: var(--tita-ink-faint); font-size: 10px; font-variant-numeric: tabular-nums; }\n.ktSideEmpty { display: grid; gap: 4px; padding: 4px 0 8px; }\n.ktSideEmpty strong { color: var(--tita-ink); font-size: 12px; font-weight: 680; }\n.ktSideEmpty p { margin: 0; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.65; }\n.ktSideEmptyText { margin: 14px 0 4px; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.6; }\n\n.ktRunsNote { margin: 0 0 4px; color: var(--tita-ink-faint); font-size: 10.5px; line-height: 1.5; }\n.ktRunRow { display: grid; gap: 5px; border-bottom: 1px solid var(--tita-line); padding: 11px 0; }\n.ktRunRow:last-of-type { border-bottom: 0; }\n.ktRunTitle { display: flex; min-width: 0; align-items: center; flex-wrap: wrap; gap: 7px; }\n.ktRunTitle strong { color: var(--tita-ink); font-size: 11.5px; font-weight: 680; }\n.ktRunSummary { margin: 0; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.55; overflow-wrap: anywhere; }\n.ktRunTime { margin: 0; color: var(--tita-ink-faint); font-size: 10px; line-height: 1.5; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }\n.ktRunControls { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin-top: 1px; }\n.ktRunToggle { gap: 4px; padding-inline: 6px; color: var(--tita-ink-muted); font-size: 10.5px; }\n.ktRunToggle[aria-expanded=\"true\"] svg { transform: rotate(180deg); }\n.ktRunToggle svg { transition: transform 120ms ease-out; }\n.ktRunSteps { min-width: 0; }\n\n/* ---- \u7F16\u8BD1\u8BBE\u7F6E\n *\n * \u5DE6\u4FA7\u662F\u300C\u8FD9\u4E2A\u5E93\u7528\u4EC0\u4E48\u6A21\u578B\u3001\u5E26\u4EC0\u4E48\u63D0\u793A\u300D\uFF0C\u53F3\u4FA7\u662F\u5750\u6807\u5B9E\u4F53\u6CE8\u518C\u8868\u3002\n * \u5DE6\u7A84\u53F3\u5BBD\uFF1A\u6A21\u578B\u662F\u4E24\u679A\u5B57\u6BB5\uFF0C\u5B9E\u4F53\u662F\u4E00\u5F20\u4F1A\u957F\u7684\u540D\u5355\u3002\n */\n.ktSettings { display: grid; grid-template-columns: minmax(320px, 400px) minmax(0, 1fr); align-items: start; gap: 22px; }\n.ktSettingsCol { display: grid; min-width: 0; gap: 14px; }\n.ktSettingsWide { min-width: 0; }\n.ktSettingCard { min-width: 0; border: 1px solid var(--tita-line); border-radius: 10px; background: var(--tita-surface); padding: 14px 15px 15px; }\n.ktSettingHead { display: grid; gap: 2px; margin-bottom: 11px; }\n.ktSettingHead h2 { margin: 0; color: var(--tita-ink); font-size: 13px; font-weight: 700; letter-spacing: -.01em; }\n.ktSettingActions { display: flex; justify-content: flex-end; gap: 6px; margin-top: 10px; }\n\n/* \u601D\u8003\u5F3A\u5EA6\uFF1A\u4E00\u6392\u5C0F\u6863\u4F4D\u3002\u5B83\u4E0D\u662F\u300C\u7B2C\u4E8C\u4E2A\u6A21\u578B\u5217\u8868\u300D\uFF0C\u6240\u4EE5\u7528\u5206\u6BB5\u6309\u94AE\uFF0C\u4E0D\u7528\u4E0B\u62C9\u3002 */\n.ktEffort { margin-top: 12px; border-top: 1px solid var(--tita-line); padding-top: 11px; }\n.ktEffortHead h3 { margin: 0; color: var(--tita-ink); font-size: 12px; font-weight: 680; }\n.ktEffortHead p { margin: 2px 0 8px; color: var(--tita-ink-muted); font-size: 10.5px; line-height: 1.5; }\n.ktEffortOptions { display: flex; flex-wrap: wrap; gap: 5px; }\n.ktEffortOption { border: 1px solid var(--tita-line-strong); border-radius: 7px; background: var(--tita-surface); padding: 4px 9px; color: var(--tita-ink-muted); font: inherit; font-size: 11px; line-height: 1.4; cursor: pointer; }\n.ktEffortOption:hover { border-color: var(--tita-primary); color: var(--tita-ink); }\n.ktEffortOption:focus-visible { outline: 2px solid var(--tita-focus-ring); outline-offset: 1px; }\n.ktEffortOptionOn { border-color: var(--tita-primary); background: var(--tita-primary-soft); color: var(--tita-primary); font-weight: 620; }\n\n/* \u5750\u6807\u5B9E\u4F53\u5728\u5BBD\u5217\u91CC\uFF1A\u628A\u52A8\u4F5C\u9489\u5728**\u7B2C\u4E00\u884C\u53F3\u4FA7**\u3002\n * \u9ED8\u8BA4\u7684 flex-wrap \u4F1A\u628A\u300C\u786E\u8BA4 / \u7F16\u8F91\u300D\u63A8\u5230\u6700\u540E\u4E00\u884C \u2014\u2014 \u90A3\u4E00\u884C\u53EF\u80FD\u5DF2\u7ECF\u662F\n * \u5B9A\u4E49\u6587\u5B57\u7684\u4E0B\u4E00\u884C\uFF0C\u6309\u94AE\u4E8E\u662F\u60AC\u5728\u4E24\u884C\u4E4B\u95F4\u3002\u7528 order \u628A\u540D\u5B57\u4E0E\u52A8\u4F5C\u653E\u56DE\u540C\u4E00\u884C\uFF0C\n * \u5B9A\u4E49\u3001\u522B\u540D\u8FD9\u4E9B\u5360\u6EE1\u4E00\u884C\u7684\u5185\u5BB9\u81EA\u7136\u6362\u5230\u4E0B\u9762\u3002DOM \u987A\u5E8F\u4E0D\u52A8\uFF0CTab \u987A\u5E8F\u4ECD\u662F\u300C\u5148\u8BFB\uFF0C\u540E\u64CD\u4F5C\u300D\u3002 */\n.ktSettingsWide .tita-axisName { order: 0; }\n.ktSettingsWide .tita-axisActions { order: 1; }\n.ktSettingsWide .tita-axisAliases { order: 2; }\n.ktSettingsWide .tita-axisScope { order: 3; }\n\n/* \u5BBD\u5C4F\u65F6\u4FA7\u680F\u5438\u9876\uFF1A\u4E3B\u680F\u53EF\u80FD\u5F88\u957F\uFF0859 \u4E2A\u5206\u7EC4\u7684\u7269\u5316\u9636\u6BB5\uFF09\uFF0C\u8F68\u8FF9\u8981\u4E00\u76F4\u5728\u624B\u8FB9\uFF0C\n \u800C\u4E0D\u662F\u6EDA\u5230\u4E3B\u680F\u5E95\u90E8\u624D\u770B\u89C1\u3002\u7A84\u5C4F\u4E0D\u5438\u9876 \u2014\u2014 \u90A3\u65F6\u5B83\u662F\u4E3B\u680F\u4E0B\u9762\u7684\u4E00\u6574\u5757\u3002 */\n@media (min-width: 1121px) {\n .ktSide { position: sticky; top: 56px; display: flex; max-height: calc(100vh - 74px); flex-direction: column; }\n .ktSideTabs { display: flex; min-height: 0; flex-direction: column; }\n .ktSideTabsList { flex: 0 0 auto; }\n .ktSidePanel { min-height: 0; flex: 1 1 auto; overflow-y: auto; scrollbar-color: var(--tita-line-strong) transparent; scrollbar-width: thin; }\n}\n\n/* ---- \u7A84\u5C4F */\n@media (max-width: 1120px) {\n /* \u4E24\u680F\u5E76\u6392\u9700\u8981\u7EA6 1000px \u624D\u7AD9\u5F97\u4F4F\uFF1B\u518D\u7A84\u5C31\u628A\u4FA7\u680F\u843D\u5230\u4E0B\u9762\u3002 */\n .ktBody { grid-template-columns: minmax(0, 1fr); }\n .ktSettings { grid-template-columns: minmax(0, 1fr); }\n}\n\n@media (max-width: 760px) {\n .page-main { padding: 18px 16px 70px; }\n .page-bar { padding-inline: 16px; }\n .ktTop { align-items: flex-start; }\n .ktPipelineSteps { gap: 5px; }\n .ktPipelineSteps > .tita-kbStepArrow { display: none; }\n .ktPipelineSteps > .tita-kbStepGroup { flex-basis: calc(50% - 5px); }\n .ktPipelineStep { min-height: 68px; }\n .ktStageHead { flex-direction: column; }\n .ktStageActions { align-self: stretch; }\n .knStagePanelHead .ktStageActions { justify-content: flex-start; }\n .ktStageMeta { padding-inline: 15px; }\n .ktDoc { padding-inline: 15px; }\n .ktDocSide { align-self: flex-start; }\n}\n\n@media (max-width: 430px) {\n .ktPipelineStep { padding: 7px; }\n .ktDocMeta { font-size: 10px; }\n .ktDocFacts { font-size: 10.5px; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .ktPipelineStep, .ktRunToggle svg, .ktOutputToggle svg { transition: none; }\n}\n\n/* ---------------------------------------------------------- attribution event guide\n *\n * \u8FD9\u662F\u8BF4\u660E\u9875\uFF0C\u4E0D\u662F\u53E6\u4E00\u4E2A\u4E1A\u52A1\u9762\u677F\u3002\u7528\u4E00\u6761\u4E3B\u6D41\u7A0B\u548C\u51E0\u6761\u7EC6\u8FB9\u754C\u627F\u8F7D\u5185\u5BB9\uFF0C\u907F\u514D\u628A\u56DB\u4E2A\n * \u5BF9\u8C61\u505A\u6210\u4E00\u7EC4\u4E92\u76F8\u5D4C\u5957\u7684\u5361\u7247\u3002Event \u7684\u91CD\u70B9\u662F\u300C\u4E00\u6B21\u7ECF\u8FC7\u300D\uFF0C\u6240\u4EE5\u65F6\u95F4\u7EBF\u7684\u987A\u5E8F\u6BD4\u88C5\u9970\u6027\u7684\n * \u8282\u70B9\u6570\u91CF\u66F4\u91CD\u8981\u3002\n */\n.attributionGuide { display: grid; gap: 34px; }\n.attributionGuideIntro { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: start; gap: 16px; border-bottom: 1px solid var(--tita-line); padding: 4px 0 24px; }\n.attributionGuideMark { display: inline-flex; width: 40px; height: 40px; align-items: center; justify-content: center; border: 1px solid var(--tita-tone-green-line); border-radius: 12px; background: var(--tita-tone-green-tint); color: var(--tita-tone-green); }\n.attributionGuideIntroCopy { min-width: 0; }\n.attributionGuideEyebrow, .attributionGuideKicker { margin: 0; color: var(--tita-primary); font-size: 10px; font-weight: 750; letter-spacing: .08em; text-transform: uppercase; }\n.attributionGuideIntroCopy h2 { margin: 3px 0 7px; color: var(--tita-ink); font-size: 22px; font-weight: 750; letter-spacing: -.03em; line-height: 1.25; }\n.attributionGuideIntroCopy p:not(.attributionGuideEyebrow) { max-width: 64ch; margin: 0; color: var(--tita-ink-muted); font-size: 12.5px; line-height: 1.75; }\n.attributionGuideFormula { display: grid; gap: 4px; justify-items: end; padding-top: 4px; text-align: right; }\n.attributionGuideFormula span { color: var(--tita-ink-faint); font-size: 10.5px; }\n.attributionGuideFormula code, .attributionGuideCaseIntro code { color: var(--tita-primary); font-family: var(--tita-mono); font-size: 11px; }\n.attributionGuideSection { display: grid; gap: 16px; }\n.attributionGuideSectionHead { display: grid; gap: 3px; }\n.attributionGuideSectionHead h3 { margin: 0; color: var(--tita-ink); font-size: 16px; font-weight: 730; letter-spacing: -.018em; line-height: 1.35; }\n.attributionGuideSectionHead p:last-child { max-width: 72ch; margin: 0; color: var(--tita-ink-muted); font-size: 12px; line-height: 1.7; }\n.attributionGuidePipeline { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1.25fr) auto minmax(0, 1fr); align-items: center; gap: 9px; border: 1px solid var(--tita-line); border-radius: 14px; background: var(--tita-surface); padding: 18px 16px; }\n.attributionGuideBranches { display: grid; gap: 10px; border: 1px dashed var(--tita-line-strong); border-radius: 12px; background: var(--tita-surface-muted); padding: 10px; }\n/* 1px \u53D1\u4E1D\u7EBF\uFF0C\u4E0D\u662F 3px \u8272\u6761\uFF1A\u8FD9\u4E00\u9875\u5176\u4F59\u7684\u5206\u9694\u5168\u662F\u53D1\u4E1D\u7EBF\uFF0C\u4E00\u6761 3px \u7684\u7AD6\u6761\u4F1A\u628A\u5B83\u8BFB\u6210\n \u53E6\u4E00\u4E2A\u4E1C\u897F\uFF08\u800C\u4E14\u90A3\u662F\u6A21\u677F\u7684\u8BB0\u53F7\uFF09\u3002\u6BB5\u4F4D\u8EAB\u4EFD\u8272\u4ECD\u7136\u5728\u4E0B\u9762\u90A3\u679A\u5C0F\u5FBD\u6807\u4E0A\uFF0C\u6CA1\u6709\u4E22\u3002 */\n.attributionGuideNode { display: grid; min-width: 0; gap: 3px; border-left: 1px solid var(--tita-line-strong); padding: 2px 0 2px 11px; }\n.attributionGuideNode-source { border-left-color: var(--tita-tone-blue); }\n.attributionGuideNode-event { border-left-color: var(--tita-tone-green); }\n.attributionGuideNode-knowledge { border-left-color: var(--tita-tone-violet); }\n.attributionGuideNode-card { border-left-color: var(--tita-tone-amber); }\n.attributionGuideNodeIcon { display: inline-flex; width: 26px; height: 26px; align-items: center; justify-content: center; border: 1px solid var(--tita-line); border-radius: 8px; color: var(--tita-ink-muted); }\n.attributionGuideNode-source .attributionGuideNodeIcon { background: var(--tita-tone-blue-tint); color: var(--tita-tone-blue); }\n.attributionGuideNode-event .attributionGuideNodeIcon { background: var(--tita-tone-green-tint); color: var(--tita-tone-green); }\n.attributionGuideNode-knowledge .attributionGuideNodeIcon { background: var(--tita-tone-violet-tint); color: var(--tita-tone-violet); }\n.attributionGuideNode-card .attributionGuideNodeIcon { background: var(--tita-tone-amber-tint); color: var(--tita-tone-amber); }\n.attributionGuideNode code { color: var(--tita-ink-faint); font-family: var(--tita-mono); font-size: 10px; }\n.attributionGuideNode strong { color: var(--tita-ink); font-size: 12px; font-weight: 720; }\n.attributionGuideNode span { color: var(--tita-ink-muted); font-size: 10.5px; line-height: 1.5; }\n.attributionGuideConnector { display: grid; justify-items: center; gap: 3px; color: var(--tita-primary); }\n.attributionGuideConnector span { width: 70px; color: var(--tita-ink-faint); font-size: 9px; line-height: 1.35; text-align: center; }\n.attributionGuideRelations { display: flex; flex-wrap: wrap; gap: 8px 18px; border-top: 1px solid var(--tita-line); padding-top: 11px; color: var(--tita-ink-muted); font-size: 10.5px; }\n.attributionGuideRelations span { display: inline-flex; align-items: center; gap: 5px; }\n.attributionGuideRelations svg { color: var(--tita-primary); }\n/* \u5E95\u8272\u7559\u7740\uFF08\u5B83\u8BF4\u7684\u662F\u300C\u8FD9\u4E00\u5757\u662F\u6848\u4F8B\u300D\uFF09\uFF0C\u7AD6\u6761\u6536\u6210 1px\u3002 */\n.attributionGuideCaseIntro { display: flex; align-items: center; justify-content: space-between; gap: 14px; border-left: 1px solid var(--tita-tone-green); background: var(--tita-tone-green-tint); padding: 10px 13px; }\n.attributionGuideCaseIntro > div { display: grid; gap: 3px; }\n.attributionGuideLabel { color: var(--tita-ink-faint); font-family: var(--tita-mono); font-size: 9.5px; }\n.attributionGuideCaseIntro p { margin: 0; color: var(--tita-ink-muted); font-size: 10.5px; }\n.attributionEventTrace { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }\n.attributionTraceStep { position: relative; display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 13px; min-height: 70px; }\n.attributionTraceStep:not(:last-child)::before { position: absolute; top: 25px; bottom: 0; left: 14px; width: 1px; background: var(--tita-line-strong); content: ''; }\n.attributionTraceMarker { position: relative; z-index: 1; display: flex; align-items: flex-start; justify-content: center; }\n.attributionTraceMarker span { display: inline-flex; width: 29px; height: 29px; align-items: center; justify-content: center; border: 1px solid var(--tita-line-strong); border-radius: 999px; background: var(--tita-surface); color: var(--tita-primary); font-family: var(--tita-mono); font-size: 9px; font-weight: 750; }\n.attributionTraceStep-symptom .attributionTraceMarker span { border-color: var(--tita-tone-blue-line); color: var(--tita-tone-blue); }\n.attributionTraceStep-check .attributionTraceMarker span { border-color: var(--tita-tone-green-line); color: var(--tita-tone-green); }\n.attributionTraceStep-root .attributionTraceMarker span { border-color: var(--tita-tone-amber-line); color: var(--tita-tone-amber); }\n.attributionTraceBody { display: grid; gap: 2px; padding: 1px 0 18px; }\n.attributionTraceBody code { color: var(--tita-ink-faint); font-family: var(--tita-mono); font-size: 10px; }\n.attributionTraceBody strong { color: var(--tita-ink); font-size: 12.5px; font-weight: 700; }\n.attributionTraceBody p { margin: 0; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.6; }\n.attributionGuideFields { display: grid; border-top: 1px solid var(--tita-line); }\n.attributionGuideField { display: grid; grid-template-columns: 100px minmax(190px, .9fr) minmax(0, 1.6fr); gap: 14px; align-items: baseline; border-bottom: 1px solid var(--tita-line); padding: 10px 0; }\n.attributionGuideField code { color: var(--tita-primary); font-family: var(--tita-mono); font-size: 10.5px; }\n.attributionGuideField strong { color: var(--tita-ink); font-family: var(--tita-mono); font-size: 10.5px; font-weight: 650; }\n.attributionGuideField span { color: var(--tita-ink-muted); font-size: 11px; line-height: 1.55; }\n.attributionGuideTable { width: 100%; border-collapse: collapse; background: var(--tita-surface); font-size: 11px; }\n.attributionGuideTable th, .attributionGuideTable td { border-bottom: 1px solid var(--tita-line); padding: 10px 11px; text-align: left; vertical-align: top; }\n.attributionGuideTable thead th { background: var(--tita-surface-muted); color: var(--tita-ink-faint); font-size: 10px; font-weight: 700; }\n.attributionGuideTable tbody th { color: var(--tita-ink); font-weight: 700; white-space: nowrap; }\n.attributionGuideTable tbody th svg { margin-right: 5px; vertical-align: -2px; color: var(--tita-primary); }\n.attributionGuideTable td { color: var(--tita-ink-muted); line-height: 1.55; }\n.attributionGuideClosing { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 13px; border-top: 1px solid var(--tita-line-strong); padding-top: 17px; }\n.attributionGuideClosingIcon { display: inline-flex; width: 32px; height: 32px; align-items: center; justify-content: center; border: 1px solid var(--tita-primary-line); border-radius: 9px; background: var(--tita-primary-soft); color: var(--tita-primary); }\n.attributionGuideClosing h3 { margin: 3px 0 6px; color: var(--tita-ink); font-size: 15px; font-weight: 720; }\n.attributionGuideClosing p { max-width: 72ch; margin: 0 0 8px; color: var(--tita-ink-muted); font-size: 11.5px; line-height: 1.7; }\n.attributionGuideClosingRule { color: var(--tita-ink) !important; }\n\n/* --------------------------------------------------------------- tab guide\n *\n * \u67B6\u6784\u8BF4\u660E\u9875\uFF08`/knowledge/pages/help/overview`\uFF09\u3002\n *\n * \u7248\u5F0F\uFF1A**\u4E00\u6761\u94FE\u8DEF = \u753B\u5E03\u4E0A\u7684\u4E00\u6761\u5DE5\u5E8F\u5E26**\uFF0C\u53F3\u8FB9\u4E00\u5217\u662F\u5F53\u524D\u73AF\u8282\u7684\u8BF4\u660E\u3002\n * \u753B\u5E03\u7684\u6784\u56FE\u7EAA\u5F8B\u5199\u5728 `GuideArchitectureCanvas.tsx` \u7684\u6587\u4EF6\u5934 \u2014\u2014 \u8FD9\u91CC\u53EA\u7BA1\u957F\u76F8\u3002\n *\n * \u5C3A\u5BF8\u4E0A\u7684\u4E24\u6761\u786C\u89C4\u77E9\uFF0C\u6539\u7248\u65F6\u6700\u5BB9\u6613\u8E29\uFF1A\n * 1. **\u89C6\u53E3\u9AD8\u5EA6\u4E0D\u662F CSS \u5B9A\u7684**\uFF0C\u5B83\u7531\u7EC4\u4EF6\u6309\u7F29\u653E\u6BD4\u4F8B\u5199\u5728\u884C\u5185 style \u4E0A\uFF1B\u8FDB\u5165\u5168\u5C4F\u540E\u7531 CSS \u63A5\u7BA1\uFF0C\n * \u8BA9\u753B\u5E03\u586B\u6EE1\u89C6\u53E3\u3002\n * 2. **\u5361\u7247\u3001\u724C\u5B50\u3001\u5E26\u7684\u4F4D\u7F6E\u5168\u90E8\u7531 `arch/model.ts` \u7B97\u597D\u5199\u5728\u884C\u5185 style \u4E0A**\uFF0C\n * \u8FD9\u91CC\u4E0D\u8BB8\u51FA\u73B0\u7B2C\u4E8C\u5957\u5750\u6807\u3002\n */\n\n.tabGuide { display: grid; gap: 20px; }\n.tabGuideWorkbench { display: block; }\n/* \u5DE6\u5217\u53EA\u6709\u753B\u5E03\uFF0C\u4E0D\u5438\u9876\uFF1A\u6574\u56FE\u6700\u9AD8 1120px\uFF0C\u6BD4\u89C6\u53E3\u9AD8 \u2014\u2014 \u5438\u9876\u4F1A\u628A\u4E0B\u534A\u5F20\u56FE\u9489\u5728\u5C4F\u5E55\u5916\u3002 */\n.tabGuideCanvasColumn { display: grid; min-width: 0; gap: 14px; }\n\n/* ---------------------------------------------------------------- \u753B\u5E03 */\n\n.tabGuideCanvas { position: relative; display: flex; min-width: 0; min-height: 0; flex-direction: column; overflow: hidden; border: 1px solid var(--tita-line); border-radius: 12px; background: var(--tita-canvas); box-shadow: 0 1px 2px rgb(16 24 40 / .04); container-type: inline-size; }\n\n/* \u6D6E\u5C42\uFF1A\u753B\u5E03\u4E0A\u53EA\u5269\u5DE6\u4E0A\u89D2\u8FD9\u4E00\u6392\u94FE\u8DEF Tab\u3002\u5B83\u4E0D\u5360\u753B\u5E03\u7684\u8BBE\u8BA1\u5C3A\u5BF8\u3002 */\n.tabGuideCanvasOverlay { position: absolute; z-index: 2; top: 10px; left: 10px; display: flex; align-items: flex-start; gap: 12px; pointer-events: none; }\n.tabGuideCanvasOverlay > * { pointer-events: auto; }\n\n.tabGuideChainTabs .tita-uiTabsList { display: inline-flex; max-width: 100%; overflow-x: auto; border: 1px solid var(--tita-line); border-radius: 9px; background: color-mix(in srgb, var(--tita-surface) 93%, transparent); padding: 2px; box-shadow: 0 1px 2px rgb(16 24 40 / .05); backdrop-filter: blur(6px); scrollbar-width: none; }\n.tabGuideChainTabs .tita-uiTabsList::-webkit-scrollbar { display: none; }\n.tabGuideChainTabs .tita-uiTabsTrigger { min-height: 30px; border: 0; border-radius: 7px; padding-inline: 13px; font-size: 12px; }\n.tabGuideChainTabs .tita-uiTabsTrigger[data-state='active'] { border-bottom-color: transparent; background: var(--tita-surface); box-shadow: 0 1px 2px rgb(15 23 42 / .12), inset 0 0 0 1px var(--tita-primary-shadow); }\n\n/* **\u56FA\u5B9A\u8FB9\u6846\u3002** \u9AD8\u5EA6\u7531\u8FD9\u91CC\u7ED9\uFF0C\u4E0D\u8DDF\u7F29\u653E\u8D70 \u2014\u2014 \u7F29\u653E\u53EA\u52A8\u6846\u91CC\u7684\u5185\u5BB9\u3002\n \u7B2C\u4E00\u7248\u628A\u9AD8\u5EA6\u5199\u6210\u300C\u677F\u9AD8 \xD7 \u6BD4\u4F8B\u300D\uFF0C\u4E8E\u662F\u634F\u5408\u65F6\u8FDE\u8FB9\u6846\u4E00\u8D77\u957F\u5927/\u7F29\u5C0F\uFF0C\u8BFB\u8D77\u6765\u50CF\u6574\u9875\u5728\u52A8\u3002\n\n \u9AD8\u5EA6\u53D6\u300C\u89C6\u53E3\u9AD8 - \u9876\u680F - \u5185\u8FB9\u8DDD - \u4E00\u884C\u8BFB\u6CD5\u300D\uFF0C\u4E0A\u4E0B\u9650\u515C\u4F4F\uFF1A\u592A\u77EE\u8BFB\u4E0D\u4E86\u56FE\uFF0C\u592A\u9AD8\u4F1A\u628A\n \u4E00\u884C\u8BFB\u6CD5\u6324\u51FA\u5C4F\u5E55\u3002\u6EDA\u52A8\u4EA4\u7ED9\u5BB9\u5668\u81EA\u5DF1\uFF08\u6EDA\u5230\u5934\u4F1A\u7EE7\u7EED\u6EDA\u9875\u9762\uFF09\uFF0C**\u4E0D\u8981 `overscroll-behavior: contain`**\n \u2014\u2014 \u90A3\u4F1A\u628A\u9875\u9762\u6EDA\u52A8\u9501\u5728\u753B\u5E03\u91CC\u3002 */\n.tabGuideCanvasViewport { position: relative; width: 100%; height: clamp(520px, calc(100vh - 124px), 1120px); overflow: auto; background: var(--tita-canvas); cursor: default; scrollbar-color: var(--tita-line-strong) transparent; touch-action: pan-x pan-y; }\n.tabGuideCanvasViewport[data-pannable='true'] { cursor: grab; }\n.tabGuideCanvasViewportPanning { cursor: grabbing !important; user-select: none; }\n\n/* \u677F\uFF1A\u8BBE\u8BA1\u5C3A\u5BF8 1172 \xD7 902\u3002\u7F29\u653E\u7531 `transform` \u627F\u62C5 \u2014\u2014 \u6BD4\u4F8B\u662F\u7EC4\u4EF6\u6309\u88C1\u526A\u533A\u7B97\u7684\uFF0C\n \u4E0D\u5199\u8FDB CSS\uFF0C\u907F\u514D\u4E24\u5904\u5404\u5199\u4E00\u4EFD\u3002 */\n.tabGuideCanvasFrame { position: absolute; overflow: hidden; }\n.tabGuideCanvasBoard { position: relative; transform-origin: top left; }\n\n/* \u8282\u70B9\u8BE6\u60C5\u662F\u753B\u5E03\u5185\u7684 Inspector\uFF1A\u53F3\u4FA7\u56FA\u5B9A\uFF0C\u5185\u5BB9\u72EC\u7ACB\u6EDA\u52A8\uFF0C\u4E0D\u6539\u53D8\u56FE\u7684\u8BBE\u8BA1\u5BBD\u5EA6\u3002 */\n.tabGuideInspector { position: absolute; z-index: 3; top: 58px; right: 12px; display: flex; width: min(380px, calc(100% - 24px)); max-height: calc(100% - 70px); flex-direction: column; overflow: hidden; border: 1px solid var(--tita-line); border-radius: 10px; background: color-mix(in srgb, var(--tita-surface) 97%, transparent); box-shadow: 0 12px 28px rgb(16 24 40 / .13); backdrop-filter: blur(5px); }\n.tabGuideInspectorHeader { display: flex; flex: 0 0 auto; align-items: center; justify-content: space-between; gap: 10px; border-bottom: 1px solid var(--tita-line); padding: 9px 10px 9px 13px; color: var(--tita-ink); }\n.tabGuideInspectorHeaderCopy { display: grid; gap: 2px; min-width: 0; }\n.tabGuideInspectorHeaderCopy span { color: var(--tita-ink-faint); font-family: var(--tita-mono); font-size: 9px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }\n.tabGuideInspectorHeaderCopy strong { color: var(--tita-ink); font-size: 12px; font-weight: 750; }\n.tabGuideInspectorBody { min-height: 0; overflow-y: auto; padding: 0 14px 18px; scrollbar-color: var(--tita-line-strong) transparent; }\n.tabGuideInspectorBody .tabGuideDetailColumn { gap: 0; }\n.tabGuideInspectorBody .tabGuideDetailColumn .tabGuideDetailGrid,\n.tabGuideInspectorBody .tabGuideDetailColumn .tabGuideSections { grid-template-columns: minmax(0, 1fr); }\n.tabGuideInspectorBody .tabGuideDetailColumn .tabGuideDefinitions > div { grid-template-columns: minmax(0, 1fr); gap: 3px; }\n.tabGuideInspectorBody .tabGuideDetail { border: 0; border-radius: 0; background: transparent; padding: 15px 0 18px; box-shadow: none; }\n.tabGuideInspectorBody .tabGuideConceptRelation { border-right: 0; border-left: 0; border-radius: 0; margin-inline: -14px; padding-inline: 14px; }\n\n/* ---------------------------------------------------------------- \u5E26\u4E0E\u8FDE\u7EBF */\n\n.tabGuideBoardEdges { position: absolute; top: 0; left: 0; }\n/* \u5E26\u53EA\u662F**\u5E95\u7EB9**\uFF0C\u4E0D\u662F\u5361\u7247\uFF1A\u5B83\u7684\u4F5C\u7528\u662F\u8BA9\u4EBA\u4E00\u773C\u770B\u51FA\u300C\u8FD9\u51E0\u5F20\u5361\u662F\u4E00\u6761\u94FE\u8DEF\u4E0A\u7684\u300D\u3002\n \u6240\u4EE5\u5B83\u6BD4\u753B\u5E03\u5E95\u8272\u53EA\u6DF1\u4E00\u6863\uFF0C\u4E14\u4E0D\u518D\u94FA\u6EE1\u6574\u5C4F\uFF08\u88C1\u526A\u533A\u6709\u591A\u9AD8\uFF0C\u5B83\u5C31\u6709\u591A\u9AD8\uFF09\u3002 */\n.tabGuideBoardBand { fill: color-mix(in srgb, var(--tita-surface-muted) 62%, var(--tita-surface)); stroke: var(--tita-line); stroke-width: 1; }\n.tabGuideBoardLaneBadge { fill: var(--tita-surface); stroke: var(--tita-line-strong); stroke-width: 1; }\n.tabGuideBoardLaneBadge-interaction { fill: var(--tita-tone-blue-tint); stroke: var(--tita-tone-blue-line); }\n.tabGuideBoardLaneBadge-knowledge { fill: var(--tita-tone-violet-tint); stroke: var(--tita-tone-violet-line); }\n.tabGuideBoardLaneBadge-evolution { fill: var(--tita-tone-amber-tint); stroke: var(--tita-tone-amber-line); }\n.tabGuideBoardLaneLabel { fill: var(--tita-ink); font-family: var(--tita-font); font-size: 11.5px; font-weight: 720; }\n.tabGuideBoardLaneNote { fill: var(--tita-ink-muted); font-family: var(--tita-mono); font-size: 9.5px; }\n.tabGuideBoardEdge { fill: none; stroke-linecap: round; stroke-linejoin: round; transition: opacity 180ms ease; }\n/* \u8FB9\u6807\u7B7E\u538B\u5728\u901A\u9053\u4E0A\uFF1A\u767D\u5E95\u9760 `paint-order: stroke` \u63CF\u4E00\u5708\u753B\u5E03\u8272\uFF0C\u800C\u4E0D\u662F\u52A0\u4E00\u5757\u77E9\u5F62\n \u2014\u2014 \u77E9\u5F62\u4F1A\u76D6\u4F4F\u5E95\u4E0B\u90A3\u6761\u7EBF\u672C\u8EAB\u3002 */\n.tabGuideBoardEdgeLabel { fill: var(--tita-primary); font-family: var(--tita-font); font-size: 10px; font-weight: 700; text-anchor: middle; paint-order: stroke; stroke: var(--tita-canvas); stroke-width: 5px; stroke-linejoin: round; transition: opacity 180ms ease; }\n\n/* ---------------------------------------------------------------- \u73AF\u8282\u5361\u7247 */\n\n.tabGuideCard { position: absolute; display: flex; box-sizing: border-box; flex-direction: column; gap: 5px; overflow: hidden; border: 1px solid var(--tita-line); border-radius: 8px; background: var(--tita-surface); padding: 10px 11px 9px; color: var(--tita-ink); font-family: var(--tita-font); text-align: left; cursor: pointer; box-shadow: 0 1px 2px rgb(16 24 40 / .04); transition: background 180ms ease, border-color 140ms ease, box-shadow 140ms ease; }\n.tabGuideCard:hover { border-color: var(--tita-primary-line); box-shadow: 0 2px 8px rgb(16 24 40 / .09); }\n.tabGuideCard:focus-visible { outline: 2px solid var(--tita-primary); outline-offset: 1px; }\n.tabGuideCardSelected { border-color: var(--tita-primary); box-shadow: 0 0 0 3px var(--tita-primary-soft), 0 2px 8px rgb(16 24 40 / .09); }\n/* \u6B21\u7EA7\u73AF\u8282**\u4E0D\u9760\u900F\u660E\u5EA6**\uFF1A0.14 \u7684\u4E0D\u900F\u660E\u6587\u5B57\u662F\u8BFB\u4E0D\u4E86\u7684\u7070\uFF0C\u800C\u5B83\u4EEC\u5C31\u5728\u65C1\u8FB9\uFF0C\n \u4ECD\u7136\u662F\u8FD9\u5F20\u56FE\u7684\u4E00\u90E8\u5206\u3002\u6539\u6210\u300C\u65E0\u5E95 + \u65E0\u63CF\u8FB9 + \u7070\u5B57\u300D\uFF0C\u767D\u5E95 4.97:1\u3001\u7070\u5E26 4.93:1\u3002 */\n/* \u6B21\u7EA7\u5361\u7247\uFF1A\u4E22\u5E95\u3001\u4E22\u63CF\u8FB9\uFF0C**\u6574\u4F53\u518D\u538B\u4E00\u6863\u900F\u660E\u5EA6**\u3002\n \u53EA\u628A\u5B57\u6362\u6210\u7070\u8272\u662F\u4E0D\u591F\u7684 \u2014\u2014 \u8FB9\u4E0A\u90A3\u4E9B\u7EBF\u5DF2\u7ECF\u6DE1\u5230 0.1\uFF0C\u5B57\u8FD8\u7AD9\u5728\u540C\u4E00\u4E2A\u6DF1\u5EA6\u4E0A\uFF0C\n \u770B\u4E0A\u53BB\u50CF\u300C\u6CA1\u4EAE\u7684\u90A3\u4E9B\u53CD\u800C\u66F4\u6E05\u695A\u300D\u3002\u60AC\u505C\u6062\u590D\uFF0C\u56E0\u4E3A\u70B9\u5B83\u5C31\u662F\u8981\u5207\u8FC7\u53BB\u3002 */\n.tabGuideCardDim { border-color: transparent; background: transparent; box-shadow: none; opacity: .42; transition: opacity 180ms ease; }\n.tabGuideCardDim:hover, .tabGuideCardDim:focus-visible { opacity: 1; }\n.tabGuideCardDim .tabGuideCardTitle,\n.tabGuideCardDim .tabGuideCardSub,\n.tabGuideCardDim .tabGuideCardStep { color: var(--tita-ink-faint); }\n.tabGuideCardDim .tabGuideCardStep i { color: var(--tita-line-strong); }\n.tabGuideCardDim .tabGuideCardDot { background: var(--tita-line-strong) !important; }\n.tabGuideCardDim:hover { border-color: var(--tita-primary-line); background: var(--tita-surface); }\n.tabGuideCardDim:hover .tabGuideCardTitle { color: var(--tita-ink); }\n.tabGuideCardDim:hover .tabGuideCardSub,\n.tabGuideCardDim:hover .tabGuideCardStep { color: var(--tita-ink-muted); }\n\n.tabGuideCardHead { display: flex; min-width: 0; align-items: center; gap: 6px; }\n.tabGuideCardDot { width: 6px; height: 6px; flex: 0 0 auto; border-radius: 999px; }\n.tabGuideCardTitle { overflow: hidden; min-width: 0; font-size: 12.5px; font-weight: 650; line-height: 1.25; text-overflow: ellipsis; white-space: nowrap; }\n/* \u72B6\u6001\u8BCD\u5E26\u8272\uFF0C\u4E14**\u56DB\u6863\u5404\u6709\u81EA\u5DF1\u7684\u8272**\uFF1A\u8FD9\u5F20\u56FE\u662F\u5951\u7EA6\uFF0C\u505A\u6CA1\u505A\u51FA\u6765\u662F\u7B2C\u4E00\u4FE1\u606F\u3002 */\n\n.tabGuideCardSub { display: -webkit-box; overflow: hidden; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.4; -webkit-box-orient: vertical; }\n/* \u6B65\u9AA4\u8868\uFF1A**\u7F16\u53F7 + \u4E00\u6761**\u3002\u7F16\u53F7\u8BF4\u660E\u987A\u5E8F\uFF0C\u800C\u987A\u5E8F\u6B63\u662F\u94FE\u8DEF\u7684\u610F\u601D\u3002 */\n.tabGuideCardSteps { display: flex; min-height: 0; flex-direction: column; overflow: hidden; }\n.tabGuideCardStep { display: flex; align-items: baseline; gap: 6px; overflow: hidden; color: var(--tita-ink-muted); font-size: 10.5px; line-height: 13.5px; white-space: nowrap; }\n.tabGuideCardStep > i { flex: 0 0 auto; width: 9px; color: var(--tita-primary); font-family: var(--tita-mono); font-size: 9px; font-style: normal; font-weight: 700; text-align: right; }\n.tabGuideCardStep[data-state='partial'] > i { color: var(--tita-tone-amber); }\n.tabGuideCardStep[data-state='todo'],\n.tabGuideCardStep[data-state='todo'] > i { color: var(--tita-ink-faint); }\n.tabGuideCardStepRest { color: var(--tita-ink-faint); font-style: italic; }\n\n/* ---------------------------------------------------------------- \u53F3\u5217 */\n\n.tabGuideDetailColumn { display: grid; min-width: 0; gap: 14px; }\n/* \u53F3\u5217\u53EA\u6709 340\u2013400px\uFF1A\u8BE6\u60C5\u91CC\u90A3\u4E24\u7EC4\u4E24\u680F\u7F51\u683C\u5728\u8FD9\u91CC\u4F1A\u88AB\u6324\u6210\u4E24\u6761\u7A84\u67F1\uFF0C\u4E00\u5F8B\u6539\u6210\u5355\u680F\u3002\n \u5BBD\u5EA6\u518D\u7A84\uFF08\u22641180px\uFF09\u65F6\u4E24\u680F\u5DE5\u4F5C\u53F0\u5DF2\u7ECF\u53E0\u8D77\u6765\uFF0C\u90A3\u65F6\u518D\u653E\u5F00\u6210\u4E24\u680F\u3002 */\n.tabGuideDetailColumn .tabGuideDetailGrid, .tabGuideDetailColumn .tabGuideSections { grid-template-columns: minmax(0, 1fr); }\n/* \u5BF9\u8C61\u5173\u7CFB\u56FE\u5728 400px \u7684\u53F3\u5217\u91CC\uFF1A\u4E09\u4E2A\u8282\u70B9 + \u4E24\u652F\u7BAD\u5934\u8981\u6324\u8FDB\u4E00\u884C\uFF0C\n \u5426\u5219\u300CDocument \u2192 Knowledge \u2192 WikiCard\u300D\u4F1A\u6298\u6210\u4E24\u884C\uFF0C\u94FE\u8DEF\u5C31\u8BFB\u65AD\u4E86\u3002 */\n.tabGuideDetailColumn .tabGuideDefinitions > div { grid-template-columns: minmax(0, 1fr); gap: 3px; }\n\n/* \u73AF\u8282\u8F68\uFF1A\u8FD9\u6761\u94FE\u8DEF\u6709\u54EA\u51E0\u73AF\uFF0C\u70B9\u4E00\u4E0B\u5C31\u8D70\u8FC7\u53BB\u3002\u5B83\u56DE\u7B54\u753B\u5E03\u56DE\u7B54\u4E0D\u4E86\u7684\u90A3\u4E2A\u95EE\u9898 \u2014\u2014\n \u753B\u5E03\u4E0A\u4E00\u6761\u94FE\u8DEF\u662F\u7A7A\u95F4\u5173\u7CFB\uFF0C\u300C\u6211\u73B0\u5728\u8BFB\u7684\u662F\u7B2C\u51E0\u73AF\u300D\u662F\u987A\u5E8F\u5173\u7CFB\u3002 */\n.tabGuideChainRail { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; border: 1px solid var(--tita-line); border-radius: 10px; background: var(--tita-surface); padding: 9px 12px; }\n.tabGuideChainRailHead { color: var(--tita-ink-faint); font-size: 10px; font-weight: 700; letter-spacing: .06em; }\n.tabGuideChainRail ol { display: flex; flex-wrap: wrap; align-items: center; gap: 3px; margin: 0; padding: 0; list-style: none; }\n.tabGuideChainRail li { display: flex; align-items: center; }\n.tabGuideChainRail li + li::before { content: '\u203A'; margin-right: 3px; color: var(--tita-ink-faint); font-size: 11px; }\n.tabGuideChainRailStep { display: inline-flex; align-items: center; gap: 5px; border: 1px solid transparent; border-radius: 7px; background: transparent; padding: 3px 7px; color: var(--tita-ink-muted); font: inherit; font-size: 11px; cursor: pointer; transition: background 140ms ease, color 140ms ease, border-color 140ms ease; }\n.tabGuideChainRailStep:hover { background: var(--tita-surface-muted); color: var(--tita-ink); }\n.tabGuideChainRailStep:focus-visible { outline: 2px solid var(--tita-focus-ring); outline-offset: 1px; }\n.tabGuideChainRailStep[aria-pressed='true'] { border-color: var(--tita-primary-line); background: var(--tita-primary-soft); color: var(--tita-primary); font-weight: 650; }\n.tabGuideChainRailIndex { color: var(--tita-ink-faint); font-family: var(--tita-mono); font-size: 9.5px; font-variant-numeric: tabular-nums; }\n.tabGuideChainRailStep[aria-pressed='true'] .tabGuideChainRailIndex { color: var(--tita-primary); }\n\n/* ---------------------------------------------------------------- \u8BE6\u60C5 */\n\n/* \u5BF9\u8C61\u5173\u7CFB\u56FE\u3002**\u5B83\u53EA\u51FA\u73B0\u5728 380px \u7684 Inspector \u91CC**\uFF0C\u6240\u4EE5\u7248\u9762\u6309\u7A84\u680F\u5B9A\uFF1A\n \u4E0A\u9762\u4E00\u6BB5\u8BDD\u3001\u4E0B\u9762\u4E24\u884C\u8282\u70B9\u3002\u4E09\u4E2A\u8282\u70B9\u6324\u4E00\u884C\u662F\u786C\u8981\u6C42 \u2014\u2014 \u6298\u6210\u4E24\u884C\u5C31\u628A\u94FE\u8DEF\u8BFB\u65AD\u4E86\u3002 */\n.tabGuideConceptRelation { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; border: 1px solid var(--tita-primary-line); border-radius: 12px; background: var(--tita-primary-soft); padding: 14px 15px; }\n.tabGuideConceptRelationIntro h3 { margin: 0; color: var(--tita-ink); font-size: 14px; font-weight: 760; line-height: 1.35; }\n.tabGuideConceptRelationIntro p:last-child { margin: 7px 0 0; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.65; }\n.tabGuideRelationFlow { min-width: 0; }\n.tabGuideRelationRow { display: flex; flex-wrap: nowrap; align-items: center; justify-content: flex-start; gap: 6px; }\n.tabGuideRelationNode { display: inline-flex; height: auto; min-width: 0; flex: 1 1 0; flex-direction: column; align-items: flex-start; gap: 1px; border-color: var(--tita-primary-line); padding: 6px 8px; }\n.tabGuideRelationNode span { color: currentColor; font-family: var(--tita-mono); font-size: 9.5px; font-weight: 760; }\n.tabGuideRelationNode small { color: var(--tita-ink-muted); font-size: 9px; font-weight: 500; line-height: 1.3; }\n.tabGuideRelationNode[aria-pressed=\"true\"] small { color: inherit; opacity: .78; }\n.tabGuideRelationArrow { width: 12px; flex: 0 0 auto; color: var(--tita-primary); }\n.tabGuideRelationBranch { display: flex; align-items: center; justify-content: flex-start; gap: 6px; margin: 5px 0; padding-left: 40px; color: var(--tita-primary); font-size: 9.5px; font-weight: 700; }\n.tabGuideRelationFootnote { margin: 9px 0 0; color: var(--tita-ink-faint); font-size: 10px; line-height: 1.5; text-align: left; }\n\n/* \u8BF4\u660E\u5361\uFF1A\u4E00\u5F20\u5361\u3001\u51E0\u6761\u53D1\u4E1D\u7EBF\uFF0C\u4E0D\u518D\u662F\u4E00\u645E\u5C0F\u65B9\u5757\u3002 */\n.tabGuideDetail { scroll-margin-top: 74px; border: 1px solid var(--tita-line); border-radius: 12px; background: var(--tita-surface); padding: 18px 20px 20px; box-shadow: 0 1px 2px rgb(16 24 40 / .04); }\n.tabGuideDetailHeader { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: start; gap: 12px; }\n.tabGuideDetailIcon { display: inline-flex; width: 36px; height: 36px; align-items: center; justify-content: center; border: 1px solid var(--tita-primary-line); border-radius: 10px; background: var(--tita-primary-soft); color: var(--tita-primary); }\n.tabGuideDetailIcon-knowledge { color: var(--tita-tone-violet); background: var(--tita-tone-violet-tint); border-color: var(--tita-tone-violet-line); }\n.tabGuideDetailIcon-attribution { color: var(--tita-tone-green); background: var(--tita-tone-green-tint); border-color: var(--tita-tone-green-line); }\n.tabGuideDetailIcon-memory { color: var(--tita-tone-amber); background: var(--tita-tone-amber-tint); border-color: var(--tita-tone-amber-line); }\n.tabGuideDetailIcon-eval { color: var(--tita-tone-blue); background: var(--tita-tone-blue-tint); border-color: var(--tita-tone-blue-line); }\n.tabGuideDetailHeader h2 { margin: 0; color: var(--tita-ink); font-size: 18px; font-weight: 740; letter-spacing: -.025em; line-height: 1.25; }\n.tabGuideDetailSubtitle { margin: 3px 0 0; color: var(--tita-ink-muted); font-size: 11.5px; line-height: 1.5; }\n/* \u94FE\u8DEF\u5F52\u5C5E\uFF1A\u4E00\u679A\u8EAB\u4EFD\u8272\u5706\u70B9 + \u94FE\u8DEF\u540D\u3002\u989C\u8272\u7531\u884C\u5185 style \u7ED9\uFF08\u94FE\u8DEF\u8EAB\u4EFD\u8272\u5728 model.ts \u91CC\uFF09\u3002 */\n.tabGuideDetailLane { display: inline-flex; align-items: center; gap: 5px; margin-top: 6px; color: var(--tita-ink-faint); font-size: 10px; }\n.tabGuideDetailLane > i { width: 6px; height: 6px; border-radius: 999px; }\n.tabGuideDetailLaneConcept { color: var(--tita-ink-faint); }\n.tabGuideDefinitionLabel { margin: 0; color: var(--tita-primary); font-family: var(--tita-mono); font-size: 10px; font-weight: 760; letter-spacing: .06em; }\n.tabGuideSummary { margin: 0; color: var(--tita-ink-muted); font-size: 12px; line-height: 1.75; }\n.tabGuideDefinitionBlock { display: grid; gap: 7px; border-bottom: 1px solid var(--tita-line); padding: 15px 0 15px; }\n/* \u8F93\u5165 \u2192 \u8F93\u51FA\uFF1A\u5E76\u6392\u4E24\u683C\uFF0C\u4E2D\u95F4\u4E00\u652F\u7BAD\u5934\u3002\u7AD6\u7740\u5806\u4F1A\u628A\u8FD9\u6BB5\u62C9\u6210\u4E24\u884C\u534A\u9AD8\uFF0C\n \u800C\u5B83\u53EA\u662F\u300C\u51ED\u4EC0\u4E48\u80FD\u5DE5\u4F5C\u300D\u7684\u4E00\u53E5\u8BDD\u3002 */\n.tabGuideFacts { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: 10px; border-bottom: 1px solid var(--tita-line); padding: 13px 0; }\n.tabGuideDetailColumn .tabGuideFacts { grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); }\n.tabGuideFacts > div { display: grid; min-width: 0; gap: 3px; }\n.tabGuideFacts > svg { flex: 0 0 auto; color: var(--tita-ink-faint); }\n.tabGuideDetailColumn .tabGuideFacts > svg { transform: none; }\n.tabGuideFacts span { color: var(--tita-ink-faint); font-size: 9.5px; font-weight: 700; letter-spacing: .06em; }\n.tabGuideFacts strong { color: var(--tita-ink); font-family: var(--tita-mono); font-size: 10.5px; font-weight: 650; line-height: 1.5; }\n.tabGuideDetailGrid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 28px; }\n.tabGuideLogicSection { min-width: 0; border-bottom: 1px solid var(--tita-line); padding: 15px 0 14px; }\n.tabGuideLogicSection h3 { margin: 0 0 10px; color: var(--tita-ink); font-size: 12.5px; font-weight: 720; }\n.tabGuideStatusNote { margin: 0; color: var(--tita-ink-muted); font-size: 11.5px; line-height: 1.7; }\n/* \u6B65\u9AA4\u662F\u4E00\u6761\u65F6\u95F4\u7EBF\uFF1A\u56FE\u6807\u5217\u4E0B\u9762\u62C9\u4E00\u6761\u53D1\u4E1D\u7EBF\uFF0C\u628A\u300C\u5148\u540E\u300D\u753B\u51FA\u6765\u3002 */\n.tabGuideStepList { display: grid; gap: 11px; margin: 0; padding: 0; list-style: none; }\n.tabGuideStep { position: relative; display: grid; grid-template-columns: 16px minmax(0, 1fr); gap: 8px; align-items: start; color: var(--tita-tone-green); }\n.tabGuideStep:not(:last-child)::after { content: ''; position: absolute; top: 18px; bottom: -11px; left: 7px; width: 1px; background: var(--tita-line); }\n.tabGuideStep-partial { color: var(--tita-tone-amber); }\n.tabGuideStep-todo { color: var(--tita-ink-faint); }\n.tabGuideStep > span { display: grid; gap: 2px; }\n.tabGuideStep strong { color: var(--tita-ink); font-size: 11px; font-weight: 700; line-height: 1.45; }\n.tabGuideStep small { color: var(--tita-ink-muted); font-size: 10.5px; line-height: 1.55; }\n.tabGuideSections { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 28px; }\n.tabGuideSection { border-bottom: 1px solid var(--tita-line); padding: 15px 0 14px; }\n.tabGuideSectionWide { grid-column: 1 / -1; }\n.tabGuideSections > .tabGuideSection:last-child { border-bottom: 0; padding-bottom: 0; }\n.tabGuideSection h3 { margin: 0 0 8px; color: var(--tita-ink); font-size: 12.5px; font-weight: 720; }\n.tabGuideDefinitions { display: grid; margin: 0; }\n.tabGuideDefinitions > div { display: grid; grid-template-columns: 112px minmax(0, 1fr); gap: 13px; align-items: baseline; border-bottom: 1px solid var(--tita-line); padding: 9px 0; }\n.tabGuideDefinitions > div:last-child { border-bottom: 0; padding-bottom: 0; }\n.tabGuideDefinitions dt { color: var(--tita-primary); font-family: var(--tita-mono); font-size: 10.5px; font-weight: 700; }\n.tabGuideDefinitions dd { margin: 0; color: var(--tita-ink-muted); font-size: 11.5px; line-height: 1.65; }\n/* \u957F\u63D0\u793A\u8BCD\u5148\u6298\u8D77\u6765\uFF1A380px \u7684\u680F\u91CC\u6574\u6BB5\u94FA\u5F00\u4F1A\u5360\u6389\u597D\u51E0\u5C4F\uFF0C\u800C\u5B83\u662F\u53C2\u8003\u6750\u6599\u4E0D\u662F\u6B63\u6587\u3002 */\n.tabGuidePromptDetails { border: 1px solid var(--tita-line); border-radius: 8px; background: var(--tita-surface-muted); }\n.tabGuidePromptDetails > summary { cursor: pointer; padding: 9px 13px; color: var(--tita-primary); font-size: 11px; font-weight: 650; list-style: none; }\n.tabGuidePromptDetails > summary::-webkit-details-marker { display: none; }\n.tabGuidePromptDetails > summary::before { content: '\u25B8'; display: inline-block; width: 14px; color: var(--tita-ink-faint); }\n.tabGuidePromptDetails[open] > summary { border-bottom: 1px solid var(--tita-line); }\n.tabGuidePromptDetails[open] > summary::before { content: '\u25BE'; }\n.tabGuidePromptDetails > summary:hover { color: var(--tita-primary-hover); }\n.tabGuidePromptDetails > summary:focus-visible { outline: 2px solid var(--tita-focus-ring); outline-offset: -2px; }\n.tabGuidePromptDetails .tabGuidePrompt { border: 0; border-radius: 0; background: transparent; }\n\n.tabGuidePrompt { overflow-x: auto; margin: 0; border: 1px solid var(--tita-line); border-radius: 8px; background: var(--tita-surface-muted); padding: 13px 14px; color: var(--tita-ink); font-family: var(--tita-mono); font-size: 10.5px; line-height: 1.7; white-space: pre-wrap; }\n.tabGuidePrompt + ul { margin-top: 9px; }\n.tabGuideSection ul { display: grid; gap: 6px; margin: 0; padding: 0 0 0 17px; color: var(--tita-ink-muted); font-size: 11.5px; line-height: 1.65; }\n.tabGuideSection li::marker { color: var(--tita-primary); }\n\n/* \u4E24\u680F\u653E\u4E0D\u4E0B\u65F6**\u53E0\u6210\u4E00\u680F**\uFF1A\u753B\u5E03\u62FF\u5230\u6574\u5E45\u5BBD\u5EA6\uFF0C\u8BF4\u660E\u843D\u5230\u5B83\u4E0B\u9762\u3002\n \u65AD\u70B9\u53D6 1520 \u800C\u4E0D\u662F 1180\uFF1A\u5DE6\u5217\u8981\u88C5\u4E0B 1172px \u5BBD\u7684\u6574\u56FE\uFF0C\u7A84\u4E8E 1520 \u65F6\u4E24\u680F\u4F1A\u8BA9\u56FE\u7F29\u5230\n \u300C\u4E00\u773C\u770B\u5168\u4F46\u8BFB\u4E0D\u51FA\u6B65\u9AA4\u300D\uFF0C\u90A3\u8FD8\u4E0D\u5982\u53E0\u8D77\u6765\u3002 */\n@media (max-width: 1520px) {\n .tabGuideDetailColumn .tabGuideDetailGrid, .tabGuideDetailColumn .tabGuideSections { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n .tabGuideDetailColumn .tabGuideDefinitions > div { grid-template-columns: 112px minmax(0, 1fr); gap: 13px; }\n}\n\n/* \u7A84\u5230\u653E\u4E0D\u4E0B\u300C\u56FE + \u53F3\u680F\u300D\u65F6\uFF0CInspector **\u843D\u5230\u753B\u5E03\u4E0B\u9762**\uFF0C\u4E0D\u518D\u6D6E\u5728\u56FE\u4E0A\u3002\n \u9608\u503C\u4E0E\u7EC4\u4EF6\u91CC\u7684 `BESIDE_MIN_WIDTH` \u662F\u540C\u4E00\u4E2A\u6570\uFF0C\u4E24\u5904\u5FC5\u987B\u4E00\u8D77\u6539\u3002 */\n@container (max-width: 1100px) {\n .tabGuideInspector { position: static; width: auto; max-height: none; margin: 0 14px 14px; box-shadow: none; }\n .tabGuideInspectorBody { overflow: visible; }\n}\n\n@media (max-width: 820px) {\n .tabGuideDetailColumn .tabGuideDetailGrid, .tabGuideDetailColumn .tabGuideSections { grid-template-columns: minmax(0, 1fr); }\n .tabGuideDetailColumn .tabGuideDefinitions > div { grid-template-columns: minmax(0, 1fr); gap: 3px; }\n}\n\n@media (max-width: 820px) {\n .attributionGuideIntro { grid-template-columns: auto minmax(0, 1fr); }\n .attributionGuideFormula { grid-column: 2; justify-items: start; text-align: left; }\n .attributionGuidePipeline { grid-template-columns: 1fr; gap: 12px; }\n .attributionGuidePipeline > .attributionGuideConnector svg { transform: rotate(90deg); }\n .attributionGuideField { grid-template-columns: 90px minmax(0, 1fr); gap: 5px 12px; }\n .attributionGuideField span { grid-column: 2; }\n}\n\n@media (max-width: 560px) {\n .attributionGuide { gap: 28px; }\n .attributionGuideIntro { grid-template-columns: 1fr; gap: 10px; }\n .attributionGuideFormula { grid-column: auto; }\n .attributionGuideIntroCopy h2 { font-size: 19px; }\n .attributionGuidePipeline { grid-template-columns: 1fr; gap: 12px; padding: 14px; }\n .attributionGuidePipeline > .attributionGuideConnector svg { transform: rotate(90deg); }\n .attributionGuideConnector span { width: auto; }\n .attributionGuideRelations { display: grid; }\n .attributionGuideCaseIntro { display: grid; gap: 7px; }\n .attributionGuideTable { display: block; overflow-x: auto; white-space: nowrap; }\n .attributionGuideTable tbody td { min-width: 160px; white-space: normal; }\n}\n\n/* ---------------------------------------------------------------- trial page\n *\n * \u8BD5\u8DD1\u9875\u7684\u9996\u5C4F\u6309\u300C\u8F93\u5165 \u2192 \u7F16\u8BD1\u94FE \u2192 \u62A5\u544A\u300D\u7EC4\u7EC7\u3002\u8F93\u5165\u662F\u552F\u4E00\u9700\u8981\u64CD\u4F5C\u7684\u533A\u57DF\uFF0C\u56DB\u6BB5\u94FE\u8DEF\n * \u53EA\u5728\u6CA1\u6709\u62A5\u544A\u65F6\u4F5C\u4E3A\u9884\u89C8\u51FA\u73B0\uFF1B\u8DD1\u5B8C\u540E\u8BA9\u77E9\u9635\u6210\u4E3A\u7B2C\u4E00\u773C\u7684\u4EA7\u7269\u3002\u6574\u9875\u53EA\u4FDD\u7559\u4E00\u4E2A\u771F\u6B63\u7684\n * \u5BB9\u5668\u8FB9\u754C\uFF0C\u907F\u514D\u5728\u8BF4\u660E\u3001\u9009\u62E9\u5668\u548C\u7A7A\u6001\u4E4B\u95F4\u53E0\u51FA\u4E00\u7EC4\u4E92\u76F8\u7ADE\u4E89\u7684\u5361\u7247\u3002\n */\n.page-trialContent {\n gap: 18px;\n}\n\n.trialPageIntro {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: start;\n gap: 14px;\n border-bottom: 1px solid var(--tita-line);\n padding: 2px 0 18px;\n}\n\n.trialPageIntroMark {\n display: inline-flex;\n width: 36px;\n height: 36px;\n align-items: center;\n justify-content: center;\n border: 1px solid var(--tita-primary-line);\n border-radius: 10px;\n background: var(--tita-primary-soft);\n color: var(--tita-primary);\n}\n\n.trialPageIntroCopy { min-width: 0; }\n.trialPageIntroCopy h2 { margin: 0; color: var(--tita-ink); font-size: 20px; font-weight: 740; letter-spacing: -.025em; line-height: 1.25; }\n.trialPageIntroCopy p { max-width: 62ch; margin: 6px 0 0; color: var(--tita-ink-muted); font-size: 12.5px; line-height: 1.7; }\n\n.trialPageBoundary {\n display: grid;\n justify-items: end;\n gap: 2px;\n padding-top: 2px;\n text-align: right;\n}\n\n.trialPageBoundary span { color: var(--tita-primary); font-size: 10.5px; font-weight: 700; }\n.trialPageBoundary strong { color: var(--tita-ink-muted); font-size: 10.5px; font-weight: 600; white-space: nowrap; }\n\n.trialSourcePanel {\n display: grid;\n gap: 16px;\n border: 1px solid var(--tita-line);\n border-radius: 12px;\n background: var(--tita-surface);\n padding: 18px 20px 15px;\n}\n\n.trialPanelHead { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }\n.trialPanelHead h3 { margin: 0; color: var(--tita-ink); font-size: 14px; font-weight: 720; letter-spacing: -.01em; }\n.trialPanelHead p { margin: 4px 0 0; color: var(--tita-ink-muted); font-size: 11.5px; line-height: 1.6; }\n.trialPanelMeta { flex: 0 0 auto; color: var(--tita-ink-faint); font-size: 10.5px; white-space: nowrap; }\n\n.trialSourceControls { display: flex; flex-wrap: wrap; align-items: end; gap: 10px; }\n.trialSourceSelect { display: grid; min-width: min(380px, 100%); flex: 1 1 320px; gap: 5px; }\n.trialControlLabel { color: var(--tita-ink-muted); font-size: 10.5px; font-weight: 650; }\n.trialDocumentSelect { width: 100%; max-width: 100%; }\n.trialSourceOr { align-self: center; color: var(--tita-ink-faint); font-size: 11px; }\n.trialUploadButton { min-height: 32px; }\n.trialSourceControls .tita-trialClear { margin-bottom: 2px; }\n.trialSourceNote { margin: 0; border-top: 1px solid var(--tita-line); padding-top: 11px; color: var(--tita-ink-muted); font-size: 10.5px; line-height: 1.6; }\n\n.trialEmptyState {\n display: grid;\n grid-template-columns: minmax(210px, .8fr) minmax(0, 1.5fr);\n align-items: center;\n gap: 22px;\n border: 1px dashed var(--tita-line-strong);\n border-radius: 12px;\n background: var(--tita-surface-muted);\n padding: 18px 20px;\n}\n\n.trialEmptyCopy { min-width: 0; }\n.trialEmptyTitle { display: inline-flex; align-items: center; gap: 6px; color: var(--tita-ink); font-size: 12.5px; font-weight: 720; }\n.trialEmptyTitle svg { color: var(--tita-primary); }\n.trialEmptyCopy p { margin: 6px 0 0; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.7; }\n\n.trialStageRail { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0; padding: 0; list-style: none; }\n.trialStageRail li { position: relative; display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: start; gap: 7px; min-width: 0; padding-right: 15px; }\n.trialStageRail li:not(:last-child)::after { content: ''; position: absolute; top: 9px; left: 20px; right: 5px; height: 1px; background: var(--tita-line-strong); }\n.trialStageDot { position: relative; z-index: 1; display: inline-flex; width: 19px; height: 19px; align-items: center; justify-content: center; border: 1px solid var(--tita-primary-line); border-radius: 999px; background: var(--tita-surface); color: var(--tita-primary); font-family: var(--tita-mono); font-size: 9.5px; font-weight: 700; }\n.trialStageRail li > span:last-child { display: grid; min-width: 0; gap: 2px; }\n.trialStageRail strong { color: var(--tita-ink); font-size: 10.5px; font-weight: 700; line-height: 1.4; }\n.trialStageRail small { color: var(--tita-ink-muted); font-size: 9.5px; line-height: 1.5; }\n\n.page-trialContent > .tita-trialLoading,\n.page-trialContent > .tita-trialError { margin-top: -4px; }\n.page-trialContent > .tita-trialSummary { margin-top: -2px; border-radius: 12px; padding: 13px 15px; }\n\n@media (max-width: 760px) {\n .page-main { padding-inline: 20px; }\n .page-bar { padding-inline: 20px; }\n .tabGuideDetail { padding-inline: 17px; }\n .trialPageIntro { grid-template-columns: auto minmax(0, 1fr); }\n .trialPageBoundary { grid-column: 2; justify-items: start; padding-top: 0; text-align: left; }\n .trialEmptyState { grid-template-columns: 1fr; gap: 16px; }\n}\n\n\n@media (max-width: 560px) {\n .page-main { padding: 20px 14px 90px; }\n .page-bar { padding: 11px 14px; }\n .tabGuideDetailHeader { grid-template-columns: auto minmax(0, 1fr); }\n .tabGuideDetailGrid { grid-template-columns: 1fr; }\n .tabGuideFacts { align-items: stretch; flex-direction: column; gap: 8px; }\n .tabGuideFacts > svg { display: none; }\n .tabGuideSections { grid-template-columns: 1fr; }\n .tabGuideSectionWide { grid-column: auto; }\n .tabGuideDefinitions > div { grid-template-columns: 82px minmax(0, 1fr); gap: 9px; }\n .trialPageIntroCopy h2 { font-size: 18px; }\n .trialSourcePanel { padding: 15px 14px 13px; }\n .trialPanelHead { align-items: start; }\n .trialPanelMeta { display: none; }\n .trialSourceControls { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; }\n .trialSourceSelect { min-width: 0; grid-column: 1 / -1; }\n .trialSourceOr { display: none; }\n .trialStageRail { grid-template-columns: 1fr 1fr; row-gap: 13px; }\n .trialStageRail li:nth-child(2)::after { display: none; }\n}\n\n/* The execution queue is internal. The public workspace navigates node versions. */\n.knVersionOverview { display: grid; gap: 8px; margin-top: 18px; border-top: 1px solid var(--tita-line); padding-block: 14px 12px; }\n.knVersionOverview > h2 { margin: 0; color: var(--tita-ink); font-size: 13px; font-weight: 680; }\n.knVersionOverviewList { overflow: hidden; border: 1px solid var(--tita-line); border-radius: 10px; background: var(--tita-surface); }\n.knVersionOverviewRow { display: grid; grid-template-columns: minmax(150px, .72fr) minmax(100px, .48fr) minmax(0, 1.6fr) auto; align-items: center; gap: 12px; border-bottom: 1px solid var(--tita-line); padding: 8px 12px; }\n.knVersionOverviewRow:last-child { border-bottom: 0; }\n.knVersionOverviewRow:hover, .knVersionOverviewRow[data-current] { background: var(--tita-surface-muted); }\n.knVersionOverviewNode { width: 100%; min-width: 0; height: auto; min-height: 36px; justify-content: flex-start; gap: 9px; padding-inline: 5px; text-align: left; }\n.knVersionOverviewNode > svg { flex: 0 0 auto; color: var(--tita-ink-muted); }\n.knVersionOverviewRow[data-current] .knVersionOverviewNode > svg { color: var(--tita-primary); }\n.knVersionOverviewNode > span { display: grid; min-width: 0; gap: 1px; }\n.knVersionOverviewNode strong { color: var(--tita-ink); font-size: 11.5px; font-weight: 650; }\n.knVersionOverviewNode small, .knVersionOverviewStatus small { color: var(--tita-ink-muted); font-size: 10px; font-variant-numeric: tabular-nums; }\n.knVersionOverviewStatus { display: flex; min-width: 0; align-items: center; gap: 7px; }\n.knVersionOverviewStatus .tita-uiBadge { flex: 0 0 auto; }\n.knVersionOverviewSummary { min-width: 0; margin: 0; overflow: hidden; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.45; text-overflow: ellipsis; white-space: nowrap; }\n.knVersionOverviewActions { display: flex; min-width: 0; justify-content: flex-end; }\n.knVersionOverviewActions > div { justify-content: flex-end; }\n.knScope { margin-top: 12px; border: 1px solid var(--tita-line); border-radius: 10px; background: var(--tita-surface); padding: 0 14px 12px; }\n.knStagePanelHead { align-items: center; padding: 12px 0 10px; }\n.knStagePanelHead .ktStageActions { flex-wrap: wrap; justify-content: flex-end; }\n.knScopeSection { margin-top: 10px; border-top: 1px solid var(--tita-line); padding-top: 10px; }\n.knScopeSectionHead { display: flex; min-width: 0; flex-wrap: wrap; align-items: center; gap: 6px 10px; color: var(--tita-ink-muted); font-size: 11px; }\n.knScopeSectionHead strong { color: var(--tita-ink); font-size: 11.5px; font-weight: 650; }\n.knScopeSectionHead > span { margin-right: auto; }\n.knScopeItems { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; max-height: 180px; overflow: auto; padding-top: 12px; font-size: 12px; }\n.knScopeItems.knScopeSources { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: stretch; gap: 5px 8px; max-height: 210px; padding-top: 8px; }\n.knScopeItem { display: inline-flex; align-items: center; gap: 7px; min-width: 0; max-width: 100%; }\n.knScopeItem span { min-width: 0; flex: 1; overflow-wrap: anywhere; text-align: left; }\n.knScopeItem small { white-space: nowrap; color: var(--tita-ink-muted); }\n.knVersionLayout { display: grid; grid-template-columns: minmax(230px, .65fr) minmax(0, 2fr); gap: 24px; margin-top: 22px; }\n.knVersionList { min-width: 0; border-right: 1px solid var(--tita-line); padding-right: 18px; }\n.knVersionList h3, .knVersionDetail h3 { margin: 0 0 12px; font-size: 13px; font-weight: 650; }\n.knVersion { padding: 8px 0; border-bottom: 1px solid var(--tita-line); }\n.knVersion[data-selected] { background: var(--tita-surface-muted); }\n.knVersionButton { width: 100%; justify-content: start; height: auto; min-height: 34px; flex-wrap: wrap; }\n.knVersionDocs { display: grid; gap: 4px; margin-top: 8px; }\n.knVersionDoc { width: 100%; height: auto; min-height: 34px; justify-content: start; flex-wrap: wrap; text-align: left; }\n.knVersionDoc > span { min-width: 0; flex: 1; white-space: normal; overflow-wrap: anywhere; }\n.knVersionDoc[aria-pressed=\"true\"], .knVersionButton[aria-pressed=\"true\"] { color: var(--tita-primary); }\n.knVersionDetail { min-width: 0; }\n.knLogSection { margin-top: 16px; border-top: 1px solid var(--tita-line); padding-top: 14px; }\n.knLogSection > h3 { margin: 0 0 10px; color: var(--tita-ink); font-size: 13px; font-weight: 650; }\n.knLogEvents { display: grid; gap: 8px; margin: 18px 0 26px; padding: 0; list-style: none; }\n.knLogEvents li { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 12px; font-size: 12px; line-height: 1.6; overflow-wrap: anywhere; }\n.knLogEvents time, .knModelCallHead time { color: var(--tita-ink-muted); font-size: 11px; font-variant-numeric: tabular-nums; }\n.knModelCall { min-width: 0; padding-block: 16px; border-top: 1px solid var(--tita-line); }\n.knModelCallHead { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 12px; font-size: 12px; }\n.knPager { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding-block: 12px; font-size: 12px; font-variant-numeric: tabular-nums; }\n.ktSettings { grid-template-columns: minmax(0, 1fr); }\n.ktSettingsCol { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; gap: 24px; }\n.ktFlatParameters { display: grid; gap: 16px; margin-top: 20px; }\n@media (max-width: 760px) {\n .knVersionLayout, .ktSettingsCol { grid-template-columns: minmax(0, 1fr); }\n .knVersionList { border-right: 0; padding-right: 0; }\n .knScopeItems { max-height: 150px; }\n}\n.ktSettingsCol .ktFlatParameters { margin-top: 0; }\n.ktSettingFull { grid-column: 1 / -1; }\n@media (max-width: 760px) {\n .knVersionOverviewRow { grid-template-columns: minmax(0, 1fr) auto; gap: 4px 10px; }\n .knVersionOverviewNode { grid-column: 1; }\n .knVersionOverviewStatus { grid-column: 2; justify-content: flex-end; }\n .knVersionOverviewSummary { grid-column: 1 / -1; padding-inline: 5px; white-space: normal; }\n .knVersionOverviewActions { grid-column: 1 / -1; justify-content: flex-start; padding-inline: 5px; }\n .knScopeItems.knScopeSources { grid-template-columns: minmax(0, 1fr); }\n .knStagePanelHead .ktStageActions { align-self: stretch; }\n}\n.knScopeItem[aria-pressed=\"true\"] { border-color: var(--tita-primary); color: var(--tita-primary); background: var(--tita-primary-soft); }\n.knScopeItem { white-space: normal; text-align: left; height: auto; min-height: 30px; }\n";
7315
+ var css3 = "/*\n * \u901A\u7528\u6574\u9875\uFF08\u62BD\u53D6\u8BD5\u8DD1 / \u7F16\u8BD1\u94FE\u8DEF\uFF09\u7684\u9875\u9762\u6837\u5F0F\u3002\n *\n * \u5B83\u548C `doc-page.css` \u662F\u540C\u4E00\u79CD\u4E1C\u897F\uFF1A\u4E00\u4EFD**\u5355\u72EC\u7684\u6D4F\u89C8\u5668\u6587\u6863**\uFF0C\u6CA1\u6709 DSH \u5916\u58F3\u3001\u6CA1\u6709\u4FA7\u680F\n * \u90A3 380px \u7684\u5BBD\u5EA6\u9650\u5236\u3002\u6240\u4EE5\u8FD9\u91CC\u7684\u51B3\u5B9A\u56F4\u7ED5\u4E24\u4EF6\u4E8B\uFF1A\n *\n * 1. **\u4E00\u6761\u5E38\u9A7B\u7684\u7A84\u6761**\u56DE\u7B54\u300C\u6211\u5728\u54EA\u4E00\u9875\u3001\u770B\u7684\u662F\u54EA\u4E2A\u5E93\u300D\u2014\u2014 \u6574\u9875\u53EF\u4EE5\u6EDA\u5F88\u4E45\uFF0C\u6807\u9898\u6EDA\u8D70\u4E86\n * \u5C31\u53EA\u5269\u5185\u5BB9\uFF0C\u800C\u8FD9\u4E09\u9875\u90FD\u9700\u8981\u77E5\u9053\u81EA\u5DF1\u5728\u54EA\u3002\n * 2. **\u4E24\u6761\u5185\u5BB9\u5BBD\u5EA6**\uFF1A\u8BF4\u660E\u7C7B\uFF08\u7F16\u8BD1\u94FE\u8DEF\uFF09\u662F\u8BFB\u6392\u7248\uFF0C\u7EA6 860px \u5C31\u591F\uFF1B\u8BD5\u8DD1\u62A5\u544A\n * \u91CC\u6709\u4E00\u5F20\u77E9\u9635\uFF0C\u7ED9\u5B83 1180px\u3002\u5BBD\u5EA6\u662F**\u5185\u5BB9**\u7684\u5C5E\u6027\uFF0C\u6240\u4EE5\u6309\u9875\u7ED9\uFF0C\u4E0D\u6309\u58F3\u7ED9\u3002\n *\n * \u989C\u8272\u5168\u90E8\u8D70\u5171\u4EAB\u4EE4\u724C\uFF08`@tita-agent/ui/styles.css` \u5E26\u8FDB\u6765\u7684\u90A3\u4E00\u5957\uFF09\u3002\u63D2\u4EF6\u81EA\u5DF1\u7684\n * `styles.css` \u4E5F\u4E00\u8D77\u8FDB\u6765\uFF1A\u8FD9\u4E09\u9875\u6E32\u67D3\u7684\u662F\u9762\u677F\u91CC\u7684\u7EC4\u4EF6\uFF08Card / Button / \u77E9\u9635\u8868\uFF09\uFF0C\n * \u90A3\u4E9B\u7C7B\u540D\u4F4F\u5728\u90A3\u513F\u3002\n */\n\n:root { color-scheme: light; }\n\nhtml { -webkit-text-size-adjust: 100%; }\n\nbody {\n margin: 0;\n background: var(--tita-canvas);\n color: var(--tita-ink);\n font-family: var(--tita-font);\n font-size: 13px;\n line-height: 1.65;\n}\n\n/* \u5E38\u9A7B\u7A84\u6761\u3002\u5B83**\u4E0D\u5438\u9876\u5230\u5E95**\uFF1A\u6EDA\u52A8\u6761\u4E00\u52A8\u5C31\u5728\u8FD9\u91CC\uFF0C\u56DE\u7B54\u300C\u8FD9\u662F\u54EA\u4E00\u9875\u300D\u3002 */\n.page-bar {\n position: sticky;\n top: 0;\n z-index: 2;\n display: flex;\n flex-wrap: wrap;\n align-items: baseline;\n gap: 4px 10px;\n border-bottom: 1px solid var(--tita-line);\n background: var(--tita-surface);\n padding: 13px 28px;\n}\n\n.page-bar h1 { margin: 0; font-size: 16px; font-weight: 720; letter-spacing: -0.02em; }\n.page-barMeta { color: var(--tita-ink-muted); font-size: 11.5px; }\n\n.page-main { padding: 28px 28px 120px; }\n\n/* \u5185\u5BB9\u5217\u3002\u5BBD\u5EA6\u6309\u9875\u7ED9\uFF1A\u8BF4\u660E 860\uFF0C\u8BD5\u8DD1\u62A5\u544A 1080\uFF0C\u67B6\u6784\u8BF4\u660E\u9875 1560\u3002 */\n.page-column { width: 100%; margin-inline: auto; }\n.page-column-help { max-width: 860px; }\n.page-column-trial { max-width: 1080px; }\n.page-column-tasks { max-width: 1220px; }\n/* \u67B6\u6784\u8BF4\u660E\u9875\u662F**\u4E00\u5757\u753B\u5E03**\uFF0C\u4E0D\u662F\u4E00\u680F\u6B63\u6587\uFF1A\u753B\u5E03\u8BBE\u8BA1\u5BBD 1172px\uFF0C\u518D\u52A0\u53F3\u5217 400px\uFF0C\n \u7A84\u4E8E 1560 \u5C31\u53EA\u80FD\u9760\u7F29\u5B57\u628A\u56FE\u585E\u8FDB\u6765\uFF08\u5B9E\u6D4B 0.55 \u500D\uFF0C\u5361\u7247\u4E0A\u7684\u5B57\u8BFB\u4E0D\u51FA\uFF09\u3002 */\n.page-column-guide { max-width: 1560px; }\n/* \u8FD9\u4E00\u9875\u7684\u8FB9\u6846\u8981\u8D34\u4F4F\u89C6\u53E3\u5E95\uFF0C\u6240\u4EE5\u628A\u7ED9\u300C\u8BFB\u6392\u7248\u300D\u90A3\u51E0\u9875\u7559\u7684 120px \u9875\u811A\u5185\u8FB9\u8DDD\u6536\u6210 40px \u2014\u2014\n \u7701\u4E0B\u7684 80px \u5168\u90E8\u6362\u6210\u753B\u5E03\u9AD8\u5EA6\u3002`:has` \u4E0D\u652F\u6301\u65F6\u8FD9\u6761\u88AB\u5FFD\u7565\uFF0C\u9000\u56DE 120px\uFF0C\u4E0D\u4F1A\u574F\u3002 */\n.page-main:has(> .page-column-guide) { padding-bottom: 40px; }\n\n/* \u5730\u5740\u4E0D\u5BF9\u3001\u6216\u8FD8\u6CA1\u8F7D\u5165\u65F6\u7684\u6574\u9875\u72B6\u6001\u3002\u4E0E `doc-page.css` \u7684 `.docPage-state` \u540C\u5F62\u3002 */\n.page-state {\n max-width: 720px;\n margin: 56px auto;\n border: 1px solid var(--tita-line);\n border-radius: 10px;\n background: var(--tita-surface);\n padding: 18px 20px;\n color: var(--tita-ink-muted);\n}\n.page-state h2 { margin: 0 0 6px; color: var(--tita-ink); font-size: 16px; font-weight: 680; }\n.page-state p { margin: 0 0 8px; line-height: 1.7; }\n.page-state code {\n border-radius: 4px;\n background: var(--tita-surface-muted);\n padding: 1px 5px;\n font-family: var(--tita-mono);\n font-size: 11.5px;\n}\n\n/* \u5185\u5BB9\u533A\u91CC\u7684\u4E00\u884C\u63D0\u793A\uFF1A\u8F7D\u5165\u4E2D\u3001\u6216\u300C\u5217\u8868\u6CA1\u53D6\u5230\u4F46\u7167\u6837\u80FD\u8DD1\u300D\u3002**\u4E0D\u662F** `.page-state` \u2014\u2014\n \u90A3\u4E00\u6761\u662F\u6574\u9875\u72B6\u6001\u7684\u5361\u7247\uFF08\u4E0A\u4E0B\u5404 56px \u5916\u8FB9\u8DDD\uFF09\uFF0C\u585E\u8FDB\u5185\u5BB9\u6D41\u91CC\u4F1A\u6491\u51FA\u4E00\u5927\u6BB5\u7A7A\u767D\u3002 */\n.page-notice {\n margin: 0 0 12px;\n border: 1px solid var(--tita-tone-amber-line);\n border-radius: 9px;\n background: var(--tita-tone-amber-tint);\n color: var(--tita-warning);\n padding: 8px 10px;\n font-size: 11.5px;\n}\n.page-loading { margin: 0; color: var(--tita-ink-muted); font-size: 12px; }\n\n/* ---------------------------------------------------------- \u77E5\u8BC6\u5904\u7406\n *\n * 2026-10-28 \u91CD\u6392\u3002\u4E0A\u4E00\u7248\u628A\u300C\u8F93\u5165\u8303\u56F4 / \u7ED3\u679C\u6458\u8981 / \u8F68\u8FF9 / \u539F\u59CB\u65E5\u5FD7\u300D\u5168\u5806\u5728\u4E3B\u680F\uFF0C\n * \u800C\u771F\u6B63\u8981\u5904\u7406\u7684\u5BF9\u8C61\uFF08\u6587\u6863\uFF09\u7F29\u5728\u53F3\u680F 260px \u7684\u5C0F\u5217\u8868\u91CC \u2014\u2014 \u4EBA\u627E\u4E0D\u5230\u300C\u54EA\u4E9B\u6587\u6863\u8FD8\u6CA1\u62BD\u300D\u3002\n *\n * \u8FD9\u4E00\u7248\u7684\u5C42\u7EA7\u6309\u95EE\u9898\u6392\uFF1A\n *\n * 1. **\u9875\u5934** \u2014\u2014 \u73B0\u5728\u4EC0\u4E48\u72B6\u6001 + \u89C6\u56FE\u5207\u6362 + \u4E09\u4E2A\u52A8\u4F5C\u3002\n * 2. **\u9636\u6BB5\u8F68** \u2014\u2014 \u4E94\u6BB5\u5404\u8D70\u5230\u54EA\u3002\u5B83\u662F\u8FD9\u4E00\u9875\u7684\u9AA8\u67B6\uFF0C\u6A2A\u8D2F\u6574\u9875\u3002\n * 3. **\u4E3B\u680F** \u2014\u2014 \u8FD9\u4E00\u6BB5\u7684\u5BF9\u8C61\uFF1A\u6587\u6863 / \u5206\u7EC4 / \u7D22\u5F15\u3002\u6BCF\u884C\u5148\u8BF4\u4ED6\u662F\u4EC0\u4E48\uFF0C\u518D\u8BF4\u62BD\u5230\u4E86\u591A\u5C11\u3002\n * 4. **\u4FA7\u680F** \u2014\u2014 \u8FC7\u7A0B\uFF1A\u9009\u4E2D\u90A3\u4E00\u4EFD\u7684\u8F68\u8FF9\uFF0C\u4EE5\u53CA\u8FD0\u884C\u8BB0\u5F55\u3002\u8F68\u8FF9\u662F\u65C1\u8BC1\uFF0C\u4E0D\u5360\u4E3B\u4F4D\u3002\n *\n * \u4E00\u6761\u7EAA\u5F8B\u6CA1\u53D8\uFF1A**\u4E00\u4E2A\u4E8B\u5B9E\u53EA\u51FA\u73B0\u4E00\u6B21**\u3002\u9636\u6BB5\u72B6\u6001\u53EA\u5728\u8F68\u4E0A\uFF0C\u5F85\u529E\u6570\u53EA\u5728\u540C\u4E00\u683C\u7B2C\u4E8C\u884C\uFF0C\n * \u6587\u6863\u72B6\u6001\u53EA\u5728\u884C\u5C3E\u90A3\u679A\u5FBD\u6807\u3002\n */\n.ktPage { display: grid; min-width: 0; gap: 14px; color: var(--tita-ink); }\n\n/* ---- \u9875\u5934 */\n.ktTop { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 10px 18px; }\n.ktTopLead { display: grid; min-width: 0; gap: 8px; }\n.ktTopActions { display: flex; flex: 0 0 auto; align-items: center; gap: 6px; }\n\n/* \u89C6\u56FE\u5207\u6362\uFF1A\u4E24\u4E2A\u8BCD\uFF0C\u4E00\u4E2A\u5E95\u3002\u5B83\u662F**\u540C\u4E00\u9875\u7684\u4E24\u79CD\u8BFB\u6CD5**\uFF0C\u4E0D\u662F\u7B2C\u4E8C\u6B65\u5BFC\u822A\uFF0C\n \u6240\u4EE5\u505A\u6210\u5C0F\u53F7\u5206\u6BB5\u63A7\u4EF6\uFF0C\u800C\u4E0D\u662F\u53C8\u4E00\u6761\u5E26\u4E0B\u5212\u7EBF\u7684\u9875\u7B7E\u3002 */\n.ktViews { display: inline-flex; width: fit-content; align-items: center; gap: 2px; border: 1px solid var(--tita-line); border-radius: 8px; background: var(--tita-surface-muted); padding: 2px; }\n.ktView { border: 0; border-radius: 6px; background: transparent; padding: 3px 11px; color: var(--tita-ink-muted); font: inherit; font-size: 11.5px; font-weight: 620; line-height: 1.5; cursor: pointer; }\n.ktView:hover { color: var(--tita-ink); }\n.ktView[aria-pressed=\"true\"] { background: var(--tita-surface); color: var(--tita-ink); box-shadow: 0 1px 2px rgb(16 24 40 / .08); }\n.ktView:focus-visible { outline: 2px solid var(--tita-focus-ring); outline-offset: 1px; }\n\n\n/* Execution owns the primary reading order. Library freshness stays in object metadata. */\n.ktCurrent { display: grid; min-width: 0; gap: 13px; border: 1px solid var(--tita-line); border-radius: 12px; background: var(--tita-surface); padding: 18px 20px; }\n.ktCurrentScope { margin: 6px 0 0; color: var(--tita-ink-muted); font-size: 11.5px; line-height: 1.6; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }\n.ktCurrentWork { display: flex; min-width: 0; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 7px 18px; }\n.ktCurrentWork strong { min-width: 0; color: var(--tita-ink); font-size: 14px; line-height: 1.6; overflow-wrap: anywhere; }\n.ktCurrentWork > span { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px; color: var(--tita-primary); font-size: 12px; }\n.ktCurrentCounts, .ktCurrentTiming { display: flex; flex-wrap: wrap; align-items: baseline; gap: 7px 20px; color: var(--tita-ink-muted); font-size: 12px; line-height: 1.6; font-variant-numeric: tabular-nums; }\n.ktCurrentCounts strong { color: var(--tita-ink); font-weight: 650; }\n.ktCurrentTiming { gap: 5px 18px; font-size: 11px; }\n.ktCurrentTiming > span { display: inline-flex; align-items: center; gap: 5px; }\n.ktCurrentHint { margin: 0; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.6; }\n.ktCompletion { border-top: 1px solid var(--tita-line); padding-top: 12px; color: var(--tita-ink-muted); font-size: 12px; line-height: 1.65; }\n.ktCompletion p { margin: 0; }\n.ktCompletion ul { display: grid; gap: 6px; margin: 10px 0; padding: 0; list-style: none; }\n.ktCompletion li { display: grid; grid-template-columns: 140px minmax(0, 1fr); gap: 12px; }\n.ktCompletion li strong { color: var(--tita-ink); font-weight: 600; }\n.ktCompletion li span { overflow-wrap: anywhere; }\n.ktRailHeading { display: flex; flex-wrap: wrap; align-items: baseline; gap: 5px 15px; }\n.ktRailHeading strong { color: var(--tita-ink); font-size: 12px; font-weight: 650; }\n.ktRailHeading > span { color: var(--tita-ink-muted); font-size: 11px; line-height: 1.6; }\n.ktActivity h3 { margin: 0; color: var(--tita-ink); font-size: 13px; font-weight: 650; }\n.ktActivityHint { margin: 5px 0 12px; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.6; }\n.ktActivityList { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }\n.ktActivityList li { display: grid; grid-template-columns: 58px minmax(0, 1fr); gap: 10px; border-bottom: 1px solid var(--tita-line); padding: 12px 0; }\n.ktActivityList li:last-child { border-bottom: 0; }\n.ktActivityList time { padding-top: 1px; color: var(--tita-ink-muted); font-size: 10.5px; font-variant-numeric: tabular-nums; }\n.ktActivityList p { margin: 0; color: var(--tita-ink); font-size: 11.5px; line-height: 1.65; overflow-wrap: anywhere; }\n.ktActivityList [data-warning] p { color: var(--tita-warning); }\n.ktWarnings { margin: 14px 0 6px; border: 1px solid color-mix(in srgb, var(--tita-warning) 30%, var(--tita-line)); border-radius: 8px; background: color-mix(in srgb, var(--tita-warning) 5%, var(--tita-surface)); padding: 10px; color: var(--tita-ink); font-size: 11px; line-height: 1.65; }\n.ktWarnings > strong { display: flex; align-items: center; gap: 6px; font-weight: 650; }\n.ktWarnings ul { margin: 8px 0 0; padding-left: 16px; overflow-wrap: anywhere; }\n.ktWarnings li + li { margin-top: 6px; }\n@media (max-width: 560px) {\n .ktCurrent { padding: 14px; }\n .ktCurrentCounts { gap: 5px 12px; }\n .ktCompletion li { grid-template-columns: minmax(0, 1fr); gap: 2px; }\n}\n\n.ktError, .ktNotice { display: flex; margin: 0; align-items: center; gap: 7px; border: 1px solid var(--tita-line); border-radius: 8px; padding: 8px 11px; font-size: 12px; line-height: 1.55; }\n.ktError { border-color: color-mix(in srgb, var(--tita-danger) 32%, var(--tita-surface)); background: color-mix(in srgb, var(--tita-danger) 8%, var(--tita-surface)); color: var(--tita-danger); }\n.ktNotice { border-color: var(--tita-tone-green-line); background: var(--tita-tone-green-tint); color: var(--tita-tone-green); }\n.ktError > span, .ktNotice > span { min-width: 0; flex: 1 1 auto; }\n.ktNoticeClose { margin-left: auto; color: inherit; }\n.ktEmpty { margin: 0; padding: 22px 0; color: var(--tita-ink-muted); font-size: 12px; line-height: 1.6; }\n.ktHint { margin: 9px 0 0; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.6; }\n.ktHintWarn { color: var(--tita-warning); }\n\n/* ---- \u9636\u6BB5\u8F68\uFF1A\u590D\u7528\u77E5\u8BC6\u5E93 SourceRaw \u2192 Knowledge \u7684\u4E24\u884C\u8282\u70B9\u6837\u5F0F */\n.ktWork { display: flex; min-width: 0; flex-direction: column; gap: 14px; }\n.ktPipelineSteps { width: 100%; }\n.ktPipelineStep { display: grid; width: 100%; min-width: 0; min-height: 70px; align-content: start; gap: 3px; padding: 7px 9px; }\n.ktPipelineStep[data-running] { border-color: var(--tita-primary); background: var(--tita-primary-soft); }\n.ktPipelineStep .tita-kbStepFacts { align-items: center; }\n.ktPipelineStep .tita-kbStepNote { display: inline-flex; flex: 0 0 auto; overflow: visible; }\n.ktPipelineStep .tita-uiBadge { font-size: 9px; }\n.ktPipelineProgress { width: 100%; height: 4px; }\n\n/* ---- \u4E24\u680F\uFF1A\u4E3B\u680F\u662F\u5BF9\u8C61\uFF0C\u4FA7\u680F\u662F\u8FC7\u7A0B */\n.ktBody { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(316px, 1fr); align-items: start; gap: 18px; }\n.ktMain { min-width: 0; }\n.ktStageTab { min-width: 0; }\n\n/* ---- \u9636\u6BB5\u5361\uFF1A\u5361\u5185**\u4E0D\u518D\u5957\u5361**\uFF0C\u5206\u8282\u7528\u53D1\u4E1D\u7EBF */\n.ktStage { min-width: 0; overflow: hidden; border: 1px solid var(--tita-line); border-radius: 10px; background: var(--tita-surface); }\n.ktStageHead { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; padding: 15px 17px 0; }\n.ktStageIntro { min-width: 0; }\n.ktStageIntro h2 { margin: 0; color: var(--tita-ink); font-size: 15px; font-weight: 700; line-height: 1.35; letter-spacing: -.015em; }\n.ktStageIntro p { margin: 3px 0 0; color: var(--tita-ink-muted); font-size: 11.5px; line-height: 1.55; }\n.ktStageActions { display: flex; flex: 0 0 auto; align-items: center; gap: 4px; }\n/* \u4E00\u884C\u5143\u4FE1\u606F\uFF1A\u8303\u56F4\u3001\u6A21\u578B\u3001\u4E0A\u6B21\u5904\u7406\u91CF\u3001\u6700\u8FD1\u65F6\u95F4\u3002\u5B83\u662F**\u8BFB\u6570**\uFF0C\u6240\u4EE5\u7B49\u5BBD\u6570\u5B57\u3001\u989C\u8272\u66F4\u8F7B\u3002 */\n.ktStageMeta { display: flex; flex-wrap: wrap; align-items: baseline; gap: 3px 0; margin: 9px 0 0; padding: 0 17px 12px; border-bottom: 1px solid var(--tita-line); color: var(--tita-ink-faint); font-size: 10.5px; line-height: 1.5; font-variant-numeric: tabular-nums; }\n.ktStageMeta i { margin: 0 7px; font-style: normal; }\n\n/* ---- \u6587\u6863\u5217\u8868\n *\n * \u4E00\u884C\u4E09\u884C\u6587\u5B57\uFF1A\u6807\u9898 / \u5B83\u662F\u4EC0\u4E48 / \u62BD\u51FA\u4E86\u591A\u5C11\u3002\u5DE6\u4FA7\u65B9\u6846\u662F**\u4E0B\u4E00\u6B21\u8FD0\u884C\u7684\u8303\u56F4**\uFF0C\n * \u884C\u672C\u8EAB\u662F**\u770B\u8FD9\u4E00\u4EFD\u7684\u8F68\u8FF9** \u2014\u2014 \u4E24\u4E2A\u547D\u4E2D\u533A\u5404\u505A\u5404\u7684\u4E8B\uFF0C\u4E0D\u4E92\u76F8\u5192\u5145\u3002\n */\n.ktDocs { display: grid; margin: 0; padding: 0; list-style: none; }\n.ktDoc { display: flex; min-width: 0; align-items: flex-start; gap: 10px; border-bottom: 1px solid var(--tita-line); padding: 10px 17px 11px; transition: background-color 120ms ease-out; }\n.ktDoc:last-child { border-bottom: 0; }\n.ktDoc:hover { background: var(--tita-surface-muted); }\n.ktDoc[data-selected] { background: color-mix(in srgb, var(--tita-primary) 7%, var(--tita-surface)); }\n.ktDoc[data-selected] .ktDocTitle { color: var(--tita-primary); }\n.ktDocPick { flex: 0 0 auto; border: 0; border-radius: 5px; background: none; padding: 2px 0 0; color: inherit; cursor: pointer; }\n.ktDocPick:focus-visible { outline: 2px solid var(--tita-focus-ring); outline-offset: 2px; }\n.ktDocPickBox { display: inline-flex; width: 15px; height: 15px; align-items: center; justify-content: center; border: 1px solid var(--tita-line-strong); border-radius: 4px; background: var(--tita-surface); color: var(--tita-primary); }\n.ktDocPick[aria-pressed=\"true\"] .ktDocPickBox { border-color: var(--tita-primary); background: var(--tita-primary-soft); }\n.ktDocMain { display: grid; min-width: 0; flex: 1 1 auto; gap: 2px; border: 0; border-radius: 6px; background: none; padding: 0; color: inherit; font: inherit; text-align: left; cursor: pointer; }\n.ktDocMain:focus-visible { outline: 2px solid var(--tita-focus-ring); outline-offset: 3px; }\n.ktDocMainStatic { cursor: default; }\n.ktDocTitle { min-width: 0; color: var(--tita-ink); font-size: 12.5px; font-weight: 650; line-height: 1.5; overflow-wrap: anywhere; }\n.ktDocMeta { display: flex; flex-wrap: wrap; align-items: baseline; color: var(--tita-ink-faint); font-size: 10.5px; line-height: 1.5; font-variant-numeric: tabular-nums; }\n.ktDocMeta i { margin: 0 5px; font-style: normal; }\n/* \u62BD\u5230\u4E86\u591A\u5C11\uFF1A\u8FD9\u4E00\u9875\u6700\u8981\u7D27\u7684\u4E00\u884C\u8BFB\u6570\u3002\u53EF\u4EE5\u6298\u4E24\u884C\uFF0C\u518D\u957F\u5C31\u622A\u65AD \u2014\u2014 \u5B8C\u6574\u6570\u5B57\u5728\u8F68\u8FF9\u5168\u6587\u91CC\u3002 */\n.ktDocFacts { display: -webkit-box; overflow: hidden; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.55; overflow-wrap: anywhere; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }\n.ktDocReason { color: var(--tita-warning); }\n.ktDocSide { display: flex; flex: 0 0 auto; align-items: center; padding-top: 1px; }\n\n/* ---- \u7269\u5316\u6CA1\u6709\u6587\u6863\u5217\u8868\uFF1B\u63D0\u70BC\u4E0E\u7D22\u5F15\u5404\u6709\u4E00\u5757\u8BF4\u660E\u3002 */\n.ktDerive, .ktIndex { display: grid; gap: 12px; padding: 15px 17px 17px; }\n.ktDerive h3 { margin: 0; color: var(--tita-ink); font-size: 13px; font-weight: 680; }\n.ktDerive p { margin: 3px 0 0; color: var(--tita-ink-muted); font-size: 11.5px; line-height: 1.65; }\n.ktDerive dl, .ktIndex dl { display: grid; gap: 8px; margin: 0; }\n.ktDerive dl > div, .ktIndex dl > div { display: grid; grid-template-columns: 76px minmax(0, 1fr); align-items: start; gap: 10px; }\n.ktDerive dt, .ktIndex dt { color: var(--tita-ink-faint); font-size: 10.5px; line-height: 1.6; }\n.ktDerive dd, .ktIndex dd { min-width: 0; margin: 0; color: var(--tita-ink); font-size: 11.5px; line-height: 1.6; overflow-wrap: anywhere; }\n.ktIndexState { display: flex; align-items: center; gap: 9px; }\n.ktIndexState p { margin: 0; color: var(--tita-ink-muted); font-size: 11.5px; line-height: 1.6; }\n\n/* ---- \u8FD0\u884C\u8F93\u51FA\uFF08\u9ED8\u8BA4\u6536\u8D77\uFF09 */\n.ktOutput { border-top: 1px solid var(--tita-line); padding: 4px 17px 15px; }\n.ktOutputToggle { gap: 5px; padding-inline: 2px 6px; color: var(--tita-ink-muted); font-size: 11px; font-weight: 650; }\n.ktOutputToggle:hover { color: var(--tita-ink); }\n.ktOutputToggle > span { color: var(--tita-ink-faint); font-size: 10.5px; font-weight: 500; }\n.ktOutputToggle svg { transition: transform 140ms ease-out; }\n.ktOutputToggle[aria-expanded=\"true\"] svg { transform: rotate(180deg); }\n.ktOutputBody { display: grid; gap: 8px; margin-top: 6px; }\n.ktOutputBody > p { margin: 0; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.55; }\n.ktPre { margin: 0; max-height: 320px; overflow: auto; border-radius: 8px; background: var(--tita-surface-muted); padding: 11px 13px; color: var(--tita-ink); font-family: var(--tita-mono); font-size: 11.5px; line-height: 1.6; white-space: pre-wrap; overflow-wrap: anywhere; tab-size: 2; }\n.ktReportsInline { display: flex; flex-wrap: wrap; gap: 14px; }\n.ktLink { display: inline-flex; height: auto; align-items: center; gap: 4px; padding-inline: 0; color: var(--tita-primary); font-size: 11px; font-weight: 500; text-decoration: underline; text-underline-offset: 2px; }\n.ktLink:hover { background: transparent; color: var(--tita-primary); }\n\n/* ---- \u4FA7\u680F\uFF1A\u8F68\u8FF9 / \u8FD0\u884C\u8BB0\u5F55 */\n.ktSide { min-width: 0; overflow: hidden; border: 1px solid var(--tita-line); border-radius: 10px; background: var(--tita-surface); }\n.ktSideTabs { min-width: 0; }\n.ktSideTabsList { display: flex; box-sizing: border-box; width: 100%; height: auto; align-items: center; justify-content: flex-start; gap: 2px; border-radius: 0; border-bottom: 1px solid var(--tita-line); background: transparent; padding: 7px 9px; }\n.ktSideTabsList button { border-radius: 6px; padding: 3px 9px; color: var(--tita-ink-muted); font-size: 11.5px; font-weight: 620; }\n.ktSideTabsList button[data-state=\"active\"] { background: var(--tita-surface-muted); color: var(--tita-ink); }\n.ktSideBadge { margin-left: 5px; color: var(--tita-ink-faint); font-size: 10px; font-variant-numeric: tabular-nums; }\n.ktSidePanel { min-width: 0; padding: 12px 15px 14px; }\n\n.ktTrailHead { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }\n.ktTrailHead h3 { margin: 0; color: var(--tita-ink); font-size: 12.5px; font-weight: 700; }\n.ktTrailHead p { margin: 2px 0 0; color: var(--tita-ink-faint); font-size: 10.5px; line-height: 1.5; }\n.ktTrailCount { flex: 0 0 auto; color: var(--tita-ink-muted); font-size: 10.5px; font-variant-numeric: tabular-nums; }\n.ktTrailFilter { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 9px; border: 1px solid var(--tita-line); border-radius: 7px; background: var(--tita-surface-muted); padding: 3px 4px 3px 9px; }\n.ktTrailFilter > span { overflow: hidden; color: var(--tita-ink-muted); font-size: 10.5px; text-overflow: ellipsis; white-space: nowrap; }\n.ktTrailList { display: grid; margin: 6px 0 0; padding: 0; list-style: none; }\n.ktTrailRow { display: grid; width: 100%; min-width: 0; gap: 3px; border: 0; border-bottom: 1px solid var(--tita-line); background: none; padding: 10px 2px; color: var(--tita-ink); font: inherit; text-align: left; cursor: pointer; }\n.ktTrailRow:last-child { border-bottom: 0; padding-bottom: 2px; }\n.ktTrailRow:hover .ktTrailRowTitle { color: var(--tita-primary); text-decoration: underline; text-underline-offset: 3px; }\n.ktTrailRow:focus-visible { outline: 2px solid var(--tita-focus-ring); outline-offset: 2px; border-radius: 6px; }\n.ktTrailRowTitle { display: flex; min-width: 0; align-items: center; flex-wrap: wrap; gap: 6px; font-size: 11.5px; font-weight: 620; line-height: 1.5; overflow-wrap: anywhere; }\n.ktTrailRowSummary { color: var(--tita-ink-muted); font-size: 10.5px; line-height: 1.55; overflow-wrap: anywhere; }\n.ktTrailRowMeta { display: inline-flex; align-items: center; gap: 5px; color: var(--tita-ink-faint); font-size: 10px; font-variant-numeric: tabular-nums; }\n.ktSideEmpty { display: grid; gap: 4px; padding: 4px 0 8px; }\n.ktSideEmpty strong { color: var(--tita-ink); font-size: 12px; font-weight: 680; }\n.ktSideEmpty p { margin: 0; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.65; }\n.ktSideEmptyText { margin: 14px 0 4px; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.6; }\n\n.ktRunsNote { margin: 0 0 4px; color: var(--tita-ink-faint); font-size: 10.5px; line-height: 1.5; }\n.ktRunRow { display: grid; gap: 5px; border-bottom: 1px solid var(--tita-line); padding: 11px 0; }\n.ktRunRow:last-of-type { border-bottom: 0; }\n.ktRunTitle { display: flex; min-width: 0; align-items: center; flex-wrap: wrap; gap: 7px; }\n.ktRunTitle strong { color: var(--tita-ink); font-size: 11.5px; font-weight: 680; }\n.ktRunSummary { margin: 0; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.55; overflow-wrap: anywhere; }\n.ktRunTime { margin: 0; color: var(--tita-ink-faint); font-size: 10px; line-height: 1.5; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }\n.ktRunControls { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin-top: 1px; }\n.ktRunToggle { gap: 4px; padding-inline: 6px; color: var(--tita-ink-muted); font-size: 10.5px; }\n.ktRunToggle[aria-expanded=\"true\"] svg { transform: rotate(180deg); }\n.ktRunToggle svg { transition: transform 120ms ease-out; }\n.ktRunSteps { min-width: 0; }\n\n/* ---- \u7F16\u8BD1\u8BBE\u7F6E\n *\n * \u5DE6\u4FA7\u662F\u300C\u8FD9\u4E2A\u5E93\u7528\u4EC0\u4E48\u6A21\u578B\u3001\u5E26\u4EC0\u4E48\u63D0\u793A\u300D\uFF0C\u53F3\u4FA7\u662F\u5750\u6807\u5B9E\u4F53\u6CE8\u518C\u8868\u3002\n * \u5DE6\u7A84\u53F3\u5BBD\uFF1A\u6A21\u578B\u662F\u4E24\u679A\u5B57\u6BB5\uFF0C\u5B9E\u4F53\u662F\u4E00\u5F20\u4F1A\u957F\u7684\u540D\u5355\u3002\n */\n.ktSettings { display: grid; grid-template-columns: minmax(320px, 400px) minmax(0, 1fr); align-items: start; gap: 22px; }\n.ktSettingsCol { display: grid; min-width: 0; gap: 14px; }\n.ktSettingsWide { min-width: 0; }\n.ktSettingCard { min-width: 0; border: 1px solid var(--tita-line); border-radius: 10px; background: var(--tita-surface); padding: 14px 15px 15px; }\n.ktSettingHead { display: grid; gap: 2px; margin-bottom: 11px; }\n.ktSettingHead h2 { margin: 0; color: var(--tita-ink); font-size: 13px; font-weight: 700; letter-spacing: -.01em; }\n.ktSettingActions { display: flex; justify-content: flex-end; gap: 6px; margin-top: 10px; }\n\n/* \u601D\u8003\u5F3A\u5EA6\uFF1A\u4E00\u6392\u5C0F\u6863\u4F4D\u3002\u5B83\u4E0D\u662F\u300C\u7B2C\u4E8C\u4E2A\u6A21\u578B\u5217\u8868\u300D\uFF0C\u6240\u4EE5\u7528\u5206\u6BB5\u6309\u94AE\uFF0C\u4E0D\u7528\u4E0B\u62C9\u3002 */\n.ktEffort { margin-top: 12px; border-top: 1px solid var(--tita-line); padding-top: 11px; }\n.ktEffortHead h3 { margin: 0; color: var(--tita-ink); font-size: 12px; font-weight: 680; }\n.ktEffortHead p { margin: 2px 0 8px; color: var(--tita-ink-muted); font-size: 10.5px; line-height: 1.5; }\n.ktEffortOptions { display: flex; flex-wrap: wrap; gap: 5px; }\n.ktEffortOption { border: 1px solid var(--tita-line-strong); border-radius: 7px; background: var(--tita-surface); padding: 4px 9px; color: var(--tita-ink-muted); font: inherit; font-size: 11px; line-height: 1.4; cursor: pointer; }\n.ktEffortOption:hover { border-color: var(--tita-primary); color: var(--tita-ink); }\n.ktEffortOption:focus-visible { outline: 2px solid var(--tita-focus-ring); outline-offset: 1px; }\n.ktEffortOptionOn { border-color: var(--tita-primary); background: var(--tita-primary-soft); color: var(--tita-primary); font-weight: 620; }\n\n/* \u5750\u6807\u5B9E\u4F53\u5728\u5BBD\u5217\u91CC\uFF1A\u628A\u52A8\u4F5C\u9489\u5728**\u7B2C\u4E00\u884C\u53F3\u4FA7**\u3002\n * \u9ED8\u8BA4\u7684 flex-wrap \u4F1A\u628A\u300C\u786E\u8BA4 / \u7F16\u8F91\u300D\u63A8\u5230\u6700\u540E\u4E00\u884C \u2014\u2014 \u90A3\u4E00\u884C\u53EF\u80FD\u5DF2\u7ECF\u662F\n * \u5B9A\u4E49\u6587\u5B57\u7684\u4E0B\u4E00\u884C\uFF0C\u6309\u94AE\u4E8E\u662F\u60AC\u5728\u4E24\u884C\u4E4B\u95F4\u3002\u7528 order \u628A\u540D\u5B57\u4E0E\u52A8\u4F5C\u653E\u56DE\u540C\u4E00\u884C\uFF0C\n * \u5B9A\u4E49\u3001\u522B\u540D\u8FD9\u4E9B\u5360\u6EE1\u4E00\u884C\u7684\u5185\u5BB9\u81EA\u7136\u6362\u5230\u4E0B\u9762\u3002DOM \u987A\u5E8F\u4E0D\u52A8\uFF0CTab \u987A\u5E8F\u4ECD\u662F\u300C\u5148\u8BFB\uFF0C\u540E\u64CD\u4F5C\u300D\u3002 */\n.ktSettingsWide .tita-axisName { order: 0; }\n.ktSettingsWide .tita-axisActions { order: 1; }\n.ktSettingsWide .tita-axisAliases { order: 2; }\n.ktSettingsWide .tita-axisScope { order: 3; }\n\n/* \u5BBD\u5C4F\u65F6\u4FA7\u680F\u5438\u9876\uFF1A\u4E3B\u680F\u53EF\u80FD\u5F88\u957F\uFF0859 \u4E2A\u5206\u7EC4\u7684\u7269\u5316\u9636\u6BB5\uFF09\uFF0C\u8F68\u8FF9\u8981\u4E00\u76F4\u5728\u624B\u8FB9\uFF0C\n \u800C\u4E0D\u662F\u6EDA\u5230\u4E3B\u680F\u5E95\u90E8\u624D\u770B\u89C1\u3002\u7A84\u5C4F\u4E0D\u5438\u9876 \u2014\u2014 \u90A3\u65F6\u5B83\u662F\u4E3B\u680F\u4E0B\u9762\u7684\u4E00\u6574\u5757\u3002 */\n@media (min-width: 1121px) {\n .ktSide { position: sticky; top: 56px; display: flex; max-height: calc(100vh - 74px); flex-direction: column; }\n .ktSideTabs { display: flex; min-height: 0; flex-direction: column; }\n .ktSideTabsList { flex: 0 0 auto; }\n .ktSidePanel { min-height: 0; flex: 1 1 auto; overflow-y: auto; scrollbar-color: var(--tita-line-strong) transparent; scrollbar-width: thin; }\n}\n\n/* ---- \u7A84\u5C4F */\n@media (max-width: 1120px) {\n /* \u4E24\u680F\u5E76\u6392\u9700\u8981\u7EA6 1000px \u624D\u7AD9\u5F97\u4F4F\uFF1B\u518D\u7A84\u5C31\u628A\u4FA7\u680F\u843D\u5230\u4E0B\u9762\u3002 */\n .ktBody { grid-template-columns: minmax(0, 1fr); }\n .ktSettings { grid-template-columns: minmax(0, 1fr); }\n}\n\n@media (max-width: 760px) {\n .page-main { padding: 18px 16px 70px; }\n .page-bar { padding-inline: 16px; }\n .ktTop { align-items: flex-start; }\n .ktPipelineSteps { gap: 5px; }\n .ktPipelineSteps > .tita-kbStepArrow { display: none; }\n .ktPipelineSteps > .tita-kbStepGroup { flex-basis: calc(50% - 5px); }\n .ktPipelineStep { min-height: 68px; }\n .ktStageHead { flex-direction: column; }\n .ktStageActions { align-self: stretch; }\n .knStagePanelHead .ktStageActions { justify-content: flex-start; }\n .ktStageMeta { padding-inline: 15px; }\n .ktDoc { padding-inline: 15px; }\n .ktDocSide { align-self: flex-start; }\n}\n\n@media (max-width: 430px) {\n .ktPipelineStep { padding: 7px; }\n .ktDocMeta { font-size: 10px; }\n .ktDocFacts { font-size: 10.5px; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .ktPipelineStep, .ktRunToggle svg, .ktOutputToggle svg { transition: none; }\n}\n\n/* ---------------------------------------------------------- attribution event guide\n *\n * \u8FD9\u662F\u8BF4\u660E\u9875\uFF0C\u4E0D\u662F\u53E6\u4E00\u4E2A\u4E1A\u52A1\u9762\u677F\u3002\u7528\u4E00\u6761\u4E3B\u6D41\u7A0B\u548C\u51E0\u6761\u7EC6\u8FB9\u754C\u627F\u8F7D\u5185\u5BB9\uFF0C\u907F\u514D\u628A\u56DB\u4E2A\n * \u5BF9\u8C61\u505A\u6210\u4E00\u7EC4\u4E92\u76F8\u5D4C\u5957\u7684\u5361\u7247\u3002Event \u7684\u91CD\u70B9\u662F\u300C\u4E00\u6B21\u7ECF\u8FC7\u300D\uFF0C\u6240\u4EE5\u65F6\u95F4\u7EBF\u7684\u987A\u5E8F\u6BD4\u88C5\u9970\u6027\u7684\n * \u8282\u70B9\u6570\u91CF\u66F4\u91CD\u8981\u3002\n */\n.attributionGuide { display: grid; gap: 34px; }\n.attributionGuideIntro { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: start; gap: 16px; border-bottom: 1px solid var(--tita-line); padding: 4px 0 24px; }\n.attributionGuideMark { display: inline-flex; width: 40px; height: 40px; align-items: center; justify-content: center; border: 1px solid var(--tita-tone-green-line); border-radius: 12px; background: var(--tita-tone-green-tint); color: var(--tita-tone-green); }\n.attributionGuideIntroCopy { min-width: 0; }\n.attributionGuideEyebrow, .attributionGuideKicker { margin: 0; color: var(--tita-primary); font-size: 10px; font-weight: 750; letter-spacing: .08em; text-transform: uppercase; }\n.attributionGuideIntroCopy h2 { margin: 3px 0 7px; color: var(--tita-ink); font-size: 22px; font-weight: 750; letter-spacing: -.03em; line-height: 1.25; }\n.attributionGuideIntroCopy p:not(.attributionGuideEyebrow) { max-width: 64ch; margin: 0; color: var(--tita-ink-muted); font-size: 12.5px; line-height: 1.75; }\n.attributionGuideFormula { display: grid; gap: 4px; justify-items: end; padding-top: 4px; text-align: right; }\n.attributionGuideFormula span { color: var(--tita-ink-faint); font-size: 10.5px; }\n.attributionGuideFormula code, .attributionGuideCaseIntro code { color: var(--tita-primary); font-family: var(--tita-mono); font-size: 11px; }\n.attributionGuideSection { display: grid; gap: 16px; }\n.attributionGuideSectionHead { display: grid; gap: 3px; }\n.attributionGuideSectionHead h3 { margin: 0; color: var(--tita-ink); font-size: 16px; font-weight: 730; letter-spacing: -.018em; line-height: 1.35; }\n.attributionGuideSectionHead p:last-child { max-width: 72ch; margin: 0; color: var(--tita-ink-muted); font-size: 12px; line-height: 1.7; }\n.attributionGuidePipeline { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1.25fr) auto minmax(0, 1fr); align-items: center; gap: 9px; border: 1px solid var(--tita-line); border-radius: 14px; background: var(--tita-surface); padding: 18px 16px; }\n.attributionGuideBranches { display: grid; gap: 10px; border: 1px dashed var(--tita-line-strong); border-radius: 12px; background: var(--tita-surface-muted); padding: 10px; }\n/* 1px \u53D1\u4E1D\u7EBF\uFF0C\u4E0D\u662F 3px \u8272\u6761\uFF1A\u8FD9\u4E00\u9875\u5176\u4F59\u7684\u5206\u9694\u5168\u662F\u53D1\u4E1D\u7EBF\uFF0C\u4E00\u6761 3px \u7684\u7AD6\u6761\u4F1A\u628A\u5B83\u8BFB\u6210\n \u53E6\u4E00\u4E2A\u4E1C\u897F\uFF08\u800C\u4E14\u90A3\u662F\u6A21\u677F\u7684\u8BB0\u53F7\uFF09\u3002\u6BB5\u4F4D\u8EAB\u4EFD\u8272\u4ECD\u7136\u5728\u4E0B\u9762\u90A3\u679A\u5C0F\u5FBD\u6807\u4E0A\uFF0C\u6CA1\u6709\u4E22\u3002 */\n.attributionGuideNode { display: grid; min-width: 0; gap: 3px; border-left: 1px solid var(--tita-line-strong); padding: 2px 0 2px 11px; }\n.attributionGuideNode-source { border-left-color: var(--tita-tone-blue); }\n.attributionGuideNode-event { border-left-color: var(--tita-tone-green); }\n.attributionGuideNode-knowledge { border-left-color: var(--tita-tone-violet); }\n.attributionGuideNode-card { border-left-color: var(--tita-tone-amber); }\n.attributionGuideNodeIcon { display: inline-flex; width: 26px; height: 26px; align-items: center; justify-content: center; border: 1px solid var(--tita-line); border-radius: 8px; color: var(--tita-ink-muted); }\n.attributionGuideNode-source .attributionGuideNodeIcon { background: var(--tita-tone-blue-tint); color: var(--tita-tone-blue); }\n.attributionGuideNode-event .attributionGuideNodeIcon { background: var(--tita-tone-green-tint); color: var(--tita-tone-green); }\n.attributionGuideNode-knowledge .attributionGuideNodeIcon { background: var(--tita-tone-violet-tint); color: var(--tita-tone-violet); }\n.attributionGuideNode-card .attributionGuideNodeIcon { background: var(--tita-tone-amber-tint); color: var(--tita-tone-amber); }\n.attributionGuideNode code { color: var(--tita-ink-faint); font-family: var(--tita-mono); font-size: 10px; }\n.attributionGuideNode strong { color: var(--tita-ink); font-size: 12px; font-weight: 720; }\n.attributionGuideNode span { color: var(--tita-ink-muted); font-size: 10.5px; line-height: 1.5; }\n.attributionGuideConnector { display: grid; justify-items: center; gap: 3px; color: var(--tita-primary); }\n.attributionGuideConnector span { width: 70px; color: var(--tita-ink-faint); font-size: 9px; line-height: 1.35; text-align: center; }\n.attributionGuideRelations { display: flex; flex-wrap: wrap; gap: 8px 18px; border-top: 1px solid var(--tita-line); padding-top: 11px; color: var(--tita-ink-muted); font-size: 10.5px; }\n.attributionGuideRelations span { display: inline-flex; align-items: center; gap: 5px; }\n.attributionGuideRelations svg { color: var(--tita-primary); }\n/* \u5E95\u8272\u7559\u7740\uFF08\u5B83\u8BF4\u7684\u662F\u300C\u8FD9\u4E00\u5757\u662F\u6848\u4F8B\u300D\uFF09\uFF0C\u7AD6\u6761\u6536\u6210 1px\u3002 */\n.attributionGuideCaseIntro { display: flex; align-items: center; justify-content: space-between; gap: 14px; border-left: 1px solid var(--tita-tone-green); background: var(--tita-tone-green-tint); padding: 10px 13px; }\n.attributionGuideCaseIntro > div { display: grid; gap: 3px; }\n.attributionGuideLabel { color: var(--tita-ink-faint); font-family: var(--tita-mono); font-size: 9.5px; }\n.attributionGuideCaseIntro p { margin: 0; color: var(--tita-ink-muted); font-size: 10.5px; }\n.attributionEventTrace { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }\n.attributionTraceStep { position: relative; display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 13px; min-height: 70px; }\n.attributionTraceStep:not(:last-child)::before { position: absolute; top: 25px; bottom: 0; left: 14px; width: 1px; background: var(--tita-line-strong); content: ''; }\n.attributionTraceMarker { position: relative; z-index: 1; display: flex; align-items: flex-start; justify-content: center; }\n.attributionTraceMarker span { display: inline-flex; width: 29px; height: 29px; align-items: center; justify-content: center; border: 1px solid var(--tita-line-strong); border-radius: 999px; background: var(--tita-surface); color: var(--tita-primary); font-family: var(--tita-mono); font-size: 9px; font-weight: 750; }\n.attributionTraceStep-symptom .attributionTraceMarker span { border-color: var(--tita-tone-blue-line); color: var(--tita-tone-blue); }\n.attributionTraceStep-check .attributionTraceMarker span { border-color: var(--tita-tone-green-line); color: var(--tita-tone-green); }\n.attributionTraceStep-root .attributionTraceMarker span { border-color: var(--tita-tone-amber-line); color: var(--tita-tone-amber); }\n.attributionTraceBody { display: grid; gap: 2px; padding: 1px 0 18px; }\n.attributionTraceBody code { color: var(--tita-ink-faint); font-family: var(--tita-mono); font-size: 10px; }\n.attributionTraceBody strong { color: var(--tita-ink); font-size: 12.5px; font-weight: 700; }\n.attributionTraceBody p { margin: 0; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.6; }\n.attributionGuideFields { display: grid; border-top: 1px solid var(--tita-line); }\n.attributionGuideField { display: grid; grid-template-columns: 100px minmax(190px, .9fr) minmax(0, 1.6fr); gap: 14px; align-items: baseline; border-bottom: 1px solid var(--tita-line); padding: 10px 0; }\n.attributionGuideField code { color: var(--tita-primary); font-family: var(--tita-mono); font-size: 10.5px; }\n.attributionGuideField strong { color: var(--tita-ink); font-family: var(--tita-mono); font-size: 10.5px; font-weight: 650; }\n.attributionGuideField span { color: var(--tita-ink-muted); font-size: 11px; line-height: 1.55; }\n.attributionGuideTable { width: 100%; border-collapse: collapse; background: var(--tita-surface); font-size: 11px; }\n.attributionGuideTable th, .attributionGuideTable td { border-bottom: 1px solid var(--tita-line); padding: 10px 11px; text-align: left; vertical-align: top; }\n.attributionGuideTable thead th { background: var(--tita-surface-muted); color: var(--tita-ink-faint); font-size: 10px; font-weight: 700; }\n.attributionGuideTable tbody th { color: var(--tita-ink); font-weight: 700; white-space: nowrap; }\n.attributionGuideTable tbody th svg { margin-right: 5px; vertical-align: -2px; color: var(--tita-primary); }\n.attributionGuideTable td { color: var(--tita-ink-muted); line-height: 1.55; }\n.attributionGuideClosing { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 13px; border-top: 1px solid var(--tita-line-strong); padding-top: 17px; }\n.attributionGuideClosingIcon { display: inline-flex; width: 32px; height: 32px; align-items: center; justify-content: center; border: 1px solid var(--tita-primary-line); border-radius: 9px; background: var(--tita-primary-soft); color: var(--tita-primary); }\n.attributionGuideClosing h3 { margin: 3px 0 6px; color: var(--tita-ink); font-size: 15px; font-weight: 720; }\n.attributionGuideClosing p { max-width: 72ch; margin: 0 0 8px; color: var(--tita-ink-muted); font-size: 11.5px; line-height: 1.7; }\n.attributionGuideClosingRule { color: var(--tita-ink) !important; }\n\n/* --------------------------------------------------------------- tab guide\n *\n * \u67B6\u6784\u8BF4\u660E\u9875\uFF08`/knowledge/pages/help/overview`\uFF09\u3002\n *\n * \u7248\u5F0F\uFF1A**\u4E00\u6761\u94FE\u8DEF = \u753B\u5E03\u4E0A\u7684\u4E00\u6761\u5DE5\u5E8F\u5E26**\uFF0C\u53F3\u8FB9\u4E00\u5217\u662F\u5F53\u524D\u73AF\u8282\u7684\u8BF4\u660E\u3002\n * \u753B\u5E03\u7684\u6784\u56FE\u7EAA\u5F8B\u5199\u5728 `GuideArchitectureCanvas.tsx` \u7684\u6587\u4EF6\u5934 \u2014\u2014 \u8FD9\u91CC\u53EA\u7BA1\u957F\u76F8\u3002\n *\n * \u5C3A\u5BF8\u4E0A\u7684\u4E24\u6761\u786C\u89C4\u77E9\uFF0C\u6539\u7248\u65F6\u6700\u5BB9\u6613\u8E29\uFF1A\n * 1. **\u89C6\u53E3\u9AD8\u5EA6\u4E0D\u662F CSS \u5B9A\u7684**\uFF0C\u5B83\u7531\u7EC4\u4EF6\u6309\u7F29\u653E\u6BD4\u4F8B\u5199\u5728\u884C\u5185 style \u4E0A\uFF1B\u8FDB\u5165\u5168\u5C4F\u540E\u7531 CSS \u63A5\u7BA1\uFF0C\n * \u8BA9\u753B\u5E03\u586B\u6EE1\u89C6\u53E3\u3002\n * 2. **\u5361\u7247\u3001\u724C\u5B50\u3001\u5E26\u7684\u4F4D\u7F6E\u5168\u90E8\u7531 `arch/model.ts` \u7B97\u597D\u5199\u5728\u884C\u5185 style \u4E0A**\uFF0C\n * \u8FD9\u91CC\u4E0D\u8BB8\u51FA\u73B0\u7B2C\u4E8C\u5957\u5750\u6807\u3002\n */\n\n.tabGuide { display: grid; gap: 20px; }\n.tabGuideWorkbench { display: block; }\n/* \u5DE6\u5217\u53EA\u6709\u753B\u5E03\uFF0C\u4E0D\u5438\u9876\uFF1A\u6574\u56FE\u6700\u9AD8 1120px\uFF0C\u6BD4\u89C6\u53E3\u9AD8 \u2014\u2014 \u5438\u9876\u4F1A\u628A\u4E0B\u534A\u5F20\u56FE\u9489\u5728\u5C4F\u5E55\u5916\u3002 */\n.tabGuideCanvasColumn { display: grid; min-width: 0; gap: 14px; }\n\n/* ---------------------------------------------------------------- \u753B\u5E03 */\n\n.tabGuideCanvas { position: relative; display: flex; min-width: 0; min-height: 0; flex-direction: column; overflow: hidden; border: 1px solid var(--tita-line); border-radius: 12px; background: var(--tita-canvas); box-shadow: 0 1px 2px rgb(16 24 40 / .04); container-type: inline-size; }\n\n/* \u6D6E\u5C42\uFF1A\u753B\u5E03\u4E0A\u53EA\u5269\u5DE6\u4E0A\u89D2\u8FD9\u4E00\u6392\u94FE\u8DEF Tab\u3002\u5B83\u4E0D\u5360\u753B\u5E03\u7684\u8BBE\u8BA1\u5C3A\u5BF8\u3002 */\n.tabGuideCanvasOverlay { position: absolute; z-index: 2; top: 10px; left: 10px; display: flex; align-items: flex-start; gap: 12px; pointer-events: none; }\n.tabGuideCanvasOverlay > * { pointer-events: auto; }\n\n.tabGuideChainTabs .tita-uiTabsList { display: inline-flex; max-width: 100%; overflow-x: auto; border: 1px solid var(--tita-line); border-radius: 9px; background: color-mix(in srgb, var(--tita-surface) 93%, transparent); padding: 2px; box-shadow: 0 1px 2px rgb(16 24 40 / .05); backdrop-filter: blur(6px); scrollbar-width: none; }\n.tabGuideChainTabs .tita-uiTabsList::-webkit-scrollbar { display: none; }\n.tabGuideChainTabs .tita-uiTabsTrigger { min-height: 30px; border: 0; border-radius: 7px; padding-inline: 13px; font-size: 12px; }\n.tabGuideChainTabs .tita-uiTabsTrigger[data-state='active'] { border-bottom-color: transparent; background: var(--tita-surface); box-shadow: 0 1px 2px rgb(15 23 42 / .12), inset 0 0 0 1px var(--tita-primary-shadow); }\n\n/* **\u56FA\u5B9A\u8FB9\u6846\u3002** \u9AD8\u5EA6\u7531\u8FD9\u91CC\u7ED9\uFF0C\u4E0D\u8DDF\u7F29\u653E\u8D70 \u2014\u2014 \u7F29\u653E\u53EA\u52A8\u6846\u91CC\u7684\u5185\u5BB9\u3002\n \u7B2C\u4E00\u7248\u628A\u9AD8\u5EA6\u5199\u6210\u300C\u677F\u9AD8 \xD7 \u6BD4\u4F8B\u300D\uFF0C\u4E8E\u662F\u634F\u5408\u65F6\u8FDE\u8FB9\u6846\u4E00\u8D77\u957F\u5927/\u7F29\u5C0F\uFF0C\u8BFB\u8D77\u6765\u50CF\u6574\u9875\u5728\u52A8\u3002\n\n \u9AD8\u5EA6\u53D6\u300C\u89C6\u53E3\u9AD8 - \u9876\u680F - \u5185\u8FB9\u8DDD - \u4E00\u884C\u8BFB\u6CD5\u300D\uFF0C\u4E0A\u4E0B\u9650\u515C\u4F4F\uFF1A\u592A\u77EE\u8BFB\u4E0D\u4E86\u56FE\uFF0C\u592A\u9AD8\u4F1A\u628A\n \u4E00\u884C\u8BFB\u6CD5\u6324\u51FA\u5C4F\u5E55\u3002\u6EDA\u52A8\u4EA4\u7ED9\u5BB9\u5668\u81EA\u5DF1\uFF08\u6EDA\u5230\u5934\u4F1A\u7EE7\u7EED\u6EDA\u9875\u9762\uFF09\uFF0C**\u4E0D\u8981 `overscroll-behavior: contain`**\n \u2014\u2014 \u90A3\u4F1A\u628A\u9875\u9762\u6EDA\u52A8\u9501\u5728\u753B\u5E03\u91CC\u3002 */\n.tabGuideCanvasViewport { position: relative; width: 100%; height: clamp(520px, calc(100vh - 124px), 1120px); overflow: auto; background: var(--tita-canvas); cursor: default; scrollbar-color: var(--tita-line-strong) transparent; touch-action: pan-x pan-y; }\n.tabGuideCanvasViewport[data-pannable='true'] { cursor: grab; }\n.tabGuideCanvasViewportPanning { cursor: grabbing !important; user-select: none; }\n\n/* \u677F\uFF1A\u8BBE\u8BA1\u5C3A\u5BF8 1172 \xD7 902\u3002\u7F29\u653E\u7531 `transform` \u627F\u62C5 \u2014\u2014 \u6BD4\u4F8B\u662F\u7EC4\u4EF6\u6309\u88C1\u526A\u533A\u7B97\u7684\uFF0C\n \u4E0D\u5199\u8FDB CSS\uFF0C\u907F\u514D\u4E24\u5904\u5404\u5199\u4E00\u4EFD\u3002 */\n.tabGuideCanvasFrame { position: absolute; overflow: hidden; }\n.tabGuideCanvasBoard { position: relative; transform-origin: top left; }\n\n/* \u8282\u70B9\u8BE6\u60C5\u662F\u753B\u5E03\u5185\u7684 Inspector\uFF1A\u53F3\u4FA7\u56FA\u5B9A\uFF0C\u5185\u5BB9\u72EC\u7ACB\u6EDA\u52A8\uFF0C\u4E0D\u6539\u53D8\u56FE\u7684\u8BBE\u8BA1\u5BBD\u5EA6\u3002 */\n.tabGuideInspector { position: absolute; z-index: 3; top: 58px; right: 12px; display: flex; width: min(380px, calc(100% - 24px)); max-height: calc(100% - 70px); flex-direction: column; overflow: hidden; border: 1px solid var(--tita-line); border-radius: 10px; background: color-mix(in srgb, var(--tita-surface) 97%, transparent); box-shadow: 0 12px 28px rgb(16 24 40 / .13); backdrop-filter: blur(5px); }\n.tabGuideInspectorHeader { display: flex; flex: 0 0 auto; align-items: center; justify-content: space-between; gap: 10px; border-bottom: 1px solid var(--tita-line); padding: 9px 10px 9px 13px; color: var(--tita-ink); }\n.tabGuideInspectorHeaderCopy { display: grid; gap: 2px; min-width: 0; }\n.tabGuideInspectorHeaderCopy span { color: var(--tita-ink-faint); font-family: var(--tita-mono); font-size: 9px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }\n.tabGuideInspectorHeaderCopy strong { color: var(--tita-ink); font-size: 12px; font-weight: 750; }\n.tabGuideInspectorBody { min-height: 0; overflow-y: auto; padding: 0 14px 18px; scrollbar-color: var(--tita-line-strong) transparent; }\n.tabGuideInspectorBody .tabGuideDetailColumn { gap: 0; }\n.tabGuideInspectorBody .tabGuideDetailColumn .tabGuideDetailGrid,\n.tabGuideInspectorBody .tabGuideDetailColumn .tabGuideSections { grid-template-columns: minmax(0, 1fr); }\n.tabGuideInspectorBody .tabGuideDetailColumn .tabGuideDefinitions > div { grid-template-columns: minmax(0, 1fr); gap: 3px; }\n.tabGuideInspectorBody .tabGuideDetail { border: 0; border-radius: 0; background: transparent; padding: 15px 0 18px; box-shadow: none; }\n.tabGuideInspectorBody .tabGuideConceptRelation { border-right: 0; border-left: 0; border-radius: 0; margin-inline: -14px; padding-inline: 14px; }\n\n/* ---------------------------------------------------------------- \u5E26\u4E0E\u8FDE\u7EBF */\n\n.tabGuideBoardEdges { position: absolute; top: 0; left: 0; }\n/* \u5E26\u53EA\u662F**\u5E95\u7EB9**\uFF0C\u4E0D\u662F\u5361\u7247\uFF1A\u5B83\u7684\u4F5C\u7528\u662F\u8BA9\u4EBA\u4E00\u773C\u770B\u51FA\u300C\u8FD9\u51E0\u5F20\u5361\u662F\u4E00\u6761\u94FE\u8DEF\u4E0A\u7684\u300D\u3002\n \u6240\u4EE5\u5B83\u6BD4\u753B\u5E03\u5E95\u8272\u53EA\u6DF1\u4E00\u6863\uFF0C\u4E14\u4E0D\u518D\u94FA\u6EE1\u6574\u5C4F\uFF08\u88C1\u526A\u533A\u6709\u591A\u9AD8\uFF0C\u5B83\u5C31\u6709\u591A\u9AD8\uFF09\u3002 */\n.tabGuideBoardBand { fill: color-mix(in srgb, var(--tita-surface-muted) 62%, var(--tita-surface)); stroke: var(--tita-line); stroke-width: 1; }\n.tabGuideBoardLaneBadge { fill: var(--tita-surface); stroke: var(--tita-line-strong); stroke-width: 1; }\n.tabGuideBoardLaneBadge-interaction { fill: var(--tita-tone-blue-tint); stroke: var(--tita-tone-blue-line); }\n.tabGuideBoardLaneBadge-knowledge { fill: var(--tita-tone-violet-tint); stroke: var(--tita-tone-violet-line); }\n.tabGuideBoardLaneBadge-evolution { fill: var(--tita-tone-amber-tint); stroke: var(--tita-tone-amber-line); }\n.tabGuideBoardLaneLabel { fill: var(--tita-ink); font-family: var(--tita-font); font-size: 11.5px; font-weight: 720; }\n.tabGuideBoardLaneNote { fill: var(--tita-ink-muted); font-family: var(--tita-mono); font-size: 9.5px; }\n.tabGuideBoardEdge { fill: none; stroke-linecap: round; stroke-linejoin: round; transition: opacity 180ms ease; }\n/* \u8FB9\u6807\u7B7E\u538B\u5728\u901A\u9053\u4E0A\uFF1A\u767D\u5E95\u9760 `paint-order: stroke` \u63CF\u4E00\u5708\u753B\u5E03\u8272\uFF0C\u800C\u4E0D\u662F\u52A0\u4E00\u5757\u77E9\u5F62\n \u2014\u2014 \u77E9\u5F62\u4F1A\u76D6\u4F4F\u5E95\u4E0B\u90A3\u6761\u7EBF\u672C\u8EAB\u3002 */\n.tabGuideBoardEdgeLabel { fill: var(--tita-primary); font-family: var(--tita-font); font-size: 10px; font-weight: 700; text-anchor: middle; paint-order: stroke; stroke: var(--tita-canvas); stroke-width: 5px; stroke-linejoin: round; transition: opacity 180ms ease; }\n\n/* ---------------------------------------------------------------- \u73AF\u8282\u5361\u7247 */\n\n.tabGuideCard { position: absolute; display: flex; box-sizing: border-box; flex-direction: column; gap: 5px; overflow: hidden; border: 1px solid var(--tita-line); border-radius: 8px; background: var(--tita-surface); padding: 10px 11px 9px; color: var(--tita-ink); font-family: var(--tita-font); text-align: left; cursor: pointer; box-shadow: 0 1px 2px rgb(16 24 40 / .04); transition: background 180ms ease, border-color 140ms ease, box-shadow 140ms ease; }\n.tabGuideCard:hover { border-color: var(--tita-primary-line); box-shadow: 0 2px 8px rgb(16 24 40 / .09); }\n.tabGuideCard:focus-visible { outline: 2px solid var(--tita-primary); outline-offset: 1px; }\n.tabGuideCardSelected { border-color: var(--tita-primary); box-shadow: 0 0 0 3px var(--tita-primary-soft), 0 2px 8px rgb(16 24 40 / .09); }\n/* \u6B21\u7EA7\u73AF\u8282**\u4E0D\u9760\u900F\u660E\u5EA6**\uFF1A0.14 \u7684\u4E0D\u900F\u660E\u6587\u5B57\u662F\u8BFB\u4E0D\u4E86\u7684\u7070\uFF0C\u800C\u5B83\u4EEC\u5C31\u5728\u65C1\u8FB9\uFF0C\n \u4ECD\u7136\u662F\u8FD9\u5F20\u56FE\u7684\u4E00\u90E8\u5206\u3002\u6539\u6210\u300C\u65E0\u5E95 + \u65E0\u63CF\u8FB9 + \u7070\u5B57\u300D\uFF0C\u767D\u5E95 4.97:1\u3001\u7070\u5E26 4.93:1\u3002 */\n/* \u6B21\u7EA7\u5361\u7247\uFF1A\u4E22\u5E95\u3001\u4E22\u63CF\u8FB9\uFF0C**\u6574\u4F53\u518D\u538B\u4E00\u6863\u900F\u660E\u5EA6**\u3002\n \u53EA\u628A\u5B57\u6362\u6210\u7070\u8272\u662F\u4E0D\u591F\u7684 \u2014\u2014 \u8FB9\u4E0A\u90A3\u4E9B\u7EBF\u5DF2\u7ECF\u6DE1\u5230 0.1\uFF0C\u5B57\u8FD8\u7AD9\u5728\u540C\u4E00\u4E2A\u6DF1\u5EA6\u4E0A\uFF0C\n \u770B\u4E0A\u53BB\u50CF\u300C\u6CA1\u4EAE\u7684\u90A3\u4E9B\u53CD\u800C\u66F4\u6E05\u695A\u300D\u3002\u60AC\u505C\u6062\u590D\uFF0C\u56E0\u4E3A\u70B9\u5B83\u5C31\u662F\u8981\u5207\u8FC7\u53BB\u3002 */\n.tabGuideCardDim { border-color: transparent; background: transparent; box-shadow: none; opacity: .42; transition: opacity 180ms ease; }\n.tabGuideCardDim:hover, .tabGuideCardDim:focus-visible { opacity: 1; }\n.tabGuideCardDim .tabGuideCardTitle,\n.tabGuideCardDim .tabGuideCardSub,\n.tabGuideCardDim .tabGuideCardStep { color: var(--tita-ink-faint); }\n.tabGuideCardDim .tabGuideCardStep i { color: var(--tita-line-strong); }\n.tabGuideCardDim .tabGuideCardDot { background: var(--tita-line-strong) !important; }\n.tabGuideCardDim:hover { border-color: var(--tita-primary-line); background: var(--tita-surface); }\n.tabGuideCardDim:hover .tabGuideCardTitle { color: var(--tita-ink); }\n.tabGuideCardDim:hover .tabGuideCardSub,\n.tabGuideCardDim:hover .tabGuideCardStep { color: var(--tita-ink-muted); }\n\n.tabGuideCardHead { display: flex; min-width: 0; align-items: center; gap: 6px; }\n.tabGuideCardDot { width: 6px; height: 6px; flex: 0 0 auto; border-radius: 999px; }\n.tabGuideCardTitle { overflow: hidden; min-width: 0; font-size: 12.5px; font-weight: 650; line-height: 1.25; text-overflow: ellipsis; white-space: nowrap; }\n/* \u72B6\u6001\u8BCD\u5E26\u8272\uFF0C\u4E14**\u56DB\u6863\u5404\u6709\u81EA\u5DF1\u7684\u8272**\uFF1A\u8FD9\u5F20\u56FE\u662F\u5951\u7EA6\uFF0C\u505A\u6CA1\u505A\u51FA\u6765\u662F\u7B2C\u4E00\u4FE1\u606F\u3002 */\n\n.tabGuideCardSub { display: -webkit-box; overflow: hidden; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.4; -webkit-box-orient: vertical; }\n/* \u6B65\u9AA4\u8868\uFF1A**\u7F16\u53F7 + \u4E00\u6761**\u3002\u7F16\u53F7\u8BF4\u660E\u987A\u5E8F\uFF0C\u800C\u987A\u5E8F\u6B63\u662F\u94FE\u8DEF\u7684\u610F\u601D\u3002 */\n.tabGuideCardSteps { display: flex; min-height: 0; flex-direction: column; overflow: hidden; }\n.tabGuideCardStep { display: flex; align-items: baseline; gap: 6px; overflow: hidden; color: var(--tita-ink-muted); font-size: 10.5px; line-height: 13.5px; white-space: nowrap; }\n.tabGuideCardStep > i { flex: 0 0 auto; width: 9px; color: var(--tita-primary); font-family: var(--tita-mono); font-size: 9px; font-style: normal; font-weight: 700; text-align: right; }\n.tabGuideCardStep[data-state='partial'] > i { color: var(--tita-tone-amber); }\n.tabGuideCardStep[data-state='todo'],\n.tabGuideCardStep[data-state='todo'] > i { color: var(--tita-ink-faint); }\n.tabGuideCardStepRest { color: var(--tita-ink-faint); font-style: italic; }\n\n/* ---------------------------------------------------------------- \u53F3\u5217 */\n\n.tabGuideDetailColumn { display: grid; min-width: 0; gap: 14px; }\n/* \u53F3\u5217\u53EA\u6709 340\u2013400px\uFF1A\u8BE6\u60C5\u91CC\u90A3\u4E24\u7EC4\u4E24\u680F\u7F51\u683C\u5728\u8FD9\u91CC\u4F1A\u88AB\u6324\u6210\u4E24\u6761\u7A84\u67F1\uFF0C\u4E00\u5F8B\u6539\u6210\u5355\u680F\u3002\n \u5BBD\u5EA6\u518D\u7A84\uFF08\u22641180px\uFF09\u65F6\u4E24\u680F\u5DE5\u4F5C\u53F0\u5DF2\u7ECF\u53E0\u8D77\u6765\uFF0C\u90A3\u65F6\u518D\u653E\u5F00\u6210\u4E24\u680F\u3002 */\n.tabGuideDetailColumn .tabGuideDetailGrid, .tabGuideDetailColumn .tabGuideSections { grid-template-columns: minmax(0, 1fr); }\n/* \u5BF9\u8C61\u5173\u7CFB\u56FE\u5728 400px \u7684\u53F3\u5217\u91CC\uFF1A\u4E09\u4E2A\u8282\u70B9 + \u4E24\u652F\u7BAD\u5934\u8981\u6324\u8FDB\u4E00\u884C\uFF0C\n \u5426\u5219\u300CDocument \u2192 Knowledge \u2192 WikiCard\u300D\u4F1A\u6298\u6210\u4E24\u884C\uFF0C\u94FE\u8DEF\u5C31\u8BFB\u65AD\u4E86\u3002 */\n.tabGuideDetailColumn .tabGuideDefinitions > div { grid-template-columns: minmax(0, 1fr); gap: 3px; }\n\n/* \u73AF\u8282\u8F68\uFF1A\u8FD9\u6761\u94FE\u8DEF\u6709\u54EA\u51E0\u73AF\uFF0C\u70B9\u4E00\u4E0B\u5C31\u8D70\u8FC7\u53BB\u3002\u5B83\u56DE\u7B54\u753B\u5E03\u56DE\u7B54\u4E0D\u4E86\u7684\u90A3\u4E2A\u95EE\u9898 \u2014\u2014\n \u753B\u5E03\u4E0A\u4E00\u6761\u94FE\u8DEF\u662F\u7A7A\u95F4\u5173\u7CFB\uFF0C\u300C\u6211\u73B0\u5728\u8BFB\u7684\u662F\u7B2C\u51E0\u73AF\u300D\u662F\u987A\u5E8F\u5173\u7CFB\u3002 */\n.tabGuideChainRail { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; border: 1px solid var(--tita-line); border-radius: 10px; background: var(--tita-surface); padding: 9px 12px; }\n.tabGuideChainRailHead { color: var(--tita-ink-faint); font-size: 10px; font-weight: 700; letter-spacing: .06em; }\n.tabGuideChainRail ol { display: flex; flex-wrap: wrap; align-items: center; gap: 3px; margin: 0; padding: 0; list-style: none; }\n.tabGuideChainRail li { display: flex; align-items: center; }\n.tabGuideChainRail li + li::before { content: '\u203A'; margin-right: 3px; color: var(--tita-ink-faint); font-size: 11px; }\n.tabGuideChainRailStep { display: inline-flex; align-items: center; gap: 5px; border: 1px solid transparent; border-radius: 7px; background: transparent; padding: 3px 7px; color: var(--tita-ink-muted); font: inherit; font-size: 11px; cursor: pointer; transition: background 140ms ease, color 140ms ease, border-color 140ms ease; }\n.tabGuideChainRailStep:hover { background: var(--tita-surface-muted); color: var(--tita-ink); }\n.tabGuideChainRailStep:focus-visible { outline: 2px solid var(--tita-focus-ring); outline-offset: 1px; }\n.tabGuideChainRailStep[aria-pressed='true'] { border-color: var(--tita-primary-line); background: var(--tita-primary-soft); color: var(--tita-primary); font-weight: 650; }\n.tabGuideChainRailIndex { color: var(--tita-ink-faint); font-family: var(--tita-mono); font-size: 9.5px; font-variant-numeric: tabular-nums; }\n.tabGuideChainRailStep[aria-pressed='true'] .tabGuideChainRailIndex { color: var(--tita-primary); }\n\n/* ---------------------------------------------------------------- \u8BE6\u60C5 */\n\n/* \u5BF9\u8C61\u5173\u7CFB\u56FE\u3002**\u5B83\u53EA\u51FA\u73B0\u5728 380px \u7684 Inspector \u91CC**\uFF0C\u6240\u4EE5\u7248\u9762\u6309\u7A84\u680F\u5B9A\uFF1A\n \u4E0A\u9762\u4E00\u6BB5\u8BDD\u3001\u4E0B\u9762\u4E24\u884C\u8282\u70B9\u3002\u4E09\u4E2A\u8282\u70B9\u6324\u4E00\u884C\u662F\u786C\u8981\u6C42 \u2014\u2014 \u6298\u6210\u4E24\u884C\u5C31\u628A\u94FE\u8DEF\u8BFB\u65AD\u4E86\u3002 */\n.tabGuideConceptRelation { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; border: 1px solid var(--tita-primary-line); border-radius: 12px; background: var(--tita-primary-soft); padding: 14px 15px; }\n.tabGuideConceptRelationIntro h3 { margin: 0; color: var(--tita-ink); font-size: 14px; font-weight: 760; line-height: 1.35; }\n.tabGuideConceptRelationIntro p:last-child { margin: 7px 0 0; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.65; }\n.tabGuideRelationFlow { min-width: 0; }\n.tabGuideRelationRow { display: flex; flex-wrap: nowrap; align-items: center; justify-content: flex-start; gap: 6px; }\n.tabGuideRelationNode { display: inline-flex; height: auto; min-width: 0; flex: 1 1 0; flex-direction: column; align-items: flex-start; gap: 1px; border-color: var(--tita-primary-line); padding: 6px 8px; }\n.tabGuideRelationNode span { color: currentColor; font-family: var(--tita-mono); font-size: 9.5px; font-weight: 760; }\n.tabGuideRelationNode small { color: var(--tita-ink-muted); font-size: 9px; font-weight: 500; line-height: 1.3; }\n.tabGuideRelationNode[aria-pressed=\"true\"] small { color: inherit; opacity: .78; }\n.tabGuideRelationArrow { width: 12px; flex: 0 0 auto; color: var(--tita-primary); }\n.tabGuideRelationBranch { display: flex; align-items: center; justify-content: flex-start; gap: 6px; margin: 5px 0; padding-left: 40px; color: var(--tita-primary); font-size: 9.5px; font-weight: 700; }\n.tabGuideRelationFootnote { margin: 9px 0 0; color: var(--tita-ink-faint); font-size: 10px; line-height: 1.5; text-align: left; }\n\n/* \u8BF4\u660E\u5361\uFF1A\u4E00\u5F20\u5361\u3001\u51E0\u6761\u53D1\u4E1D\u7EBF\uFF0C\u4E0D\u518D\u662F\u4E00\u645E\u5C0F\u65B9\u5757\u3002 */\n.tabGuideDetail { scroll-margin-top: 74px; border: 1px solid var(--tita-line); border-radius: 12px; background: var(--tita-surface); padding: 18px 20px 20px; box-shadow: 0 1px 2px rgb(16 24 40 / .04); }\n.tabGuideDetailHeader { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: start; gap: 12px; }\n.tabGuideDetailIcon { display: inline-flex; width: 36px; height: 36px; align-items: center; justify-content: center; border: 1px solid var(--tita-primary-line); border-radius: 10px; background: var(--tita-primary-soft); color: var(--tita-primary); }\n.tabGuideDetailIcon-knowledge { color: var(--tita-tone-violet); background: var(--tita-tone-violet-tint); border-color: var(--tita-tone-violet-line); }\n.tabGuideDetailIcon-attribution { color: var(--tita-tone-green); background: var(--tita-tone-green-tint); border-color: var(--tita-tone-green-line); }\n.tabGuideDetailIcon-memory { color: var(--tita-tone-amber); background: var(--tita-tone-amber-tint); border-color: var(--tita-tone-amber-line); }\n.tabGuideDetailIcon-eval { color: var(--tita-tone-blue); background: var(--tita-tone-blue-tint); border-color: var(--tita-tone-blue-line); }\n.tabGuideDetailHeader h2 { margin: 0; color: var(--tita-ink); font-size: 18px; font-weight: 740; letter-spacing: -.025em; line-height: 1.25; }\n.tabGuideDetailSubtitle { margin: 3px 0 0; color: var(--tita-ink-muted); font-size: 11.5px; line-height: 1.5; }\n/* \u94FE\u8DEF\u5F52\u5C5E\uFF1A\u4E00\u679A\u8EAB\u4EFD\u8272\u5706\u70B9 + \u94FE\u8DEF\u540D\u3002\u989C\u8272\u7531\u884C\u5185 style \u7ED9\uFF08\u94FE\u8DEF\u8EAB\u4EFD\u8272\u5728 model.ts \u91CC\uFF09\u3002 */\n.tabGuideDetailLane { display: inline-flex; align-items: center; gap: 5px; margin-top: 6px; color: var(--tita-ink-faint); font-size: 10px; }\n.tabGuideDetailLane > i { width: 6px; height: 6px; border-radius: 999px; }\n.tabGuideDetailLaneConcept { color: var(--tita-ink-faint); }\n.tabGuideDefinitionLabel { margin: 0; color: var(--tita-primary); font-family: var(--tita-mono); font-size: 10px; font-weight: 760; letter-spacing: .06em; }\n.tabGuideSummary { margin: 0; color: var(--tita-ink-muted); font-size: 12px; line-height: 1.75; }\n.tabGuideDefinitionBlock { display: grid; gap: 7px; border-bottom: 1px solid var(--tita-line); padding: 15px 0 15px; }\n/* \u8F93\u5165 \u2192 \u8F93\u51FA\uFF1A\u5E76\u6392\u4E24\u683C\uFF0C\u4E2D\u95F4\u4E00\u652F\u7BAD\u5934\u3002\u7AD6\u7740\u5806\u4F1A\u628A\u8FD9\u6BB5\u62C9\u6210\u4E24\u884C\u534A\u9AD8\uFF0C\n \u800C\u5B83\u53EA\u662F\u300C\u51ED\u4EC0\u4E48\u80FD\u5DE5\u4F5C\u300D\u7684\u4E00\u53E5\u8BDD\u3002 */\n.tabGuideFacts { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: 10px; border-bottom: 1px solid var(--tita-line); padding: 13px 0; }\n.tabGuideDetailColumn .tabGuideFacts { grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); }\n.tabGuideFacts > div { display: grid; min-width: 0; gap: 3px; }\n.tabGuideFacts > svg { flex: 0 0 auto; color: var(--tita-ink-faint); }\n.tabGuideDetailColumn .tabGuideFacts > svg { transform: none; }\n.tabGuideFacts span { color: var(--tita-ink-faint); font-size: 9.5px; font-weight: 700; letter-spacing: .06em; }\n.tabGuideFacts strong { color: var(--tita-ink); font-family: var(--tita-mono); font-size: 10.5px; font-weight: 650; line-height: 1.5; }\n.tabGuideDetailGrid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 28px; }\n.tabGuideLogicSection { min-width: 0; border-bottom: 1px solid var(--tita-line); padding: 15px 0 14px; }\n.tabGuideLogicSection h3 { margin: 0 0 10px; color: var(--tita-ink); font-size: 12.5px; font-weight: 720; }\n.tabGuideStatusNote { margin: 0; color: var(--tita-ink-muted); font-size: 11.5px; line-height: 1.7; }\n/* \u6B65\u9AA4\u662F\u4E00\u6761\u65F6\u95F4\u7EBF\uFF1A\u56FE\u6807\u5217\u4E0B\u9762\u62C9\u4E00\u6761\u53D1\u4E1D\u7EBF\uFF0C\u628A\u300C\u5148\u540E\u300D\u753B\u51FA\u6765\u3002 */\n.tabGuideStepList { display: grid; gap: 11px; margin: 0; padding: 0; list-style: none; }\n.tabGuideStep { position: relative; display: grid; grid-template-columns: 16px minmax(0, 1fr); gap: 8px; align-items: start; color: var(--tita-tone-green); }\n.tabGuideStep:not(:last-child)::after { content: ''; position: absolute; top: 18px; bottom: -11px; left: 7px; width: 1px; background: var(--tita-line); }\n.tabGuideStep-partial { color: var(--tita-tone-amber); }\n.tabGuideStep-todo { color: var(--tita-ink-faint); }\n.tabGuideStep > span { display: grid; gap: 2px; }\n.tabGuideStep strong { color: var(--tita-ink); font-size: 11px; font-weight: 700; line-height: 1.45; }\n.tabGuideStep small { color: var(--tita-ink-muted); font-size: 10.5px; line-height: 1.55; }\n.tabGuideSections { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 28px; }\n.tabGuideSection { border-bottom: 1px solid var(--tita-line); padding: 15px 0 14px; }\n.tabGuideSectionWide { grid-column: 1 / -1; }\n.tabGuideSections > .tabGuideSection:last-child { border-bottom: 0; padding-bottom: 0; }\n.tabGuideSection h3 { margin: 0 0 8px; color: var(--tita-ink); font-size: 12.5px; font-weight: 720; }\n.tabGuideDefinitions { display: grid; margin: 0; }\n.tabGuideDefinitions > div { display: grid; grid-template-columns: 112px minmax(0, 1fr); gap: 13px; align-items: baseline; border-bottom: 1px solid var(--tita-line); padding: 9px 0; }\n.tabGuideDefinitions > div:last-child { border-bottom: 0; padding-bottom: 0; }\n.tabGuideDefinitions dt { color: var(--tita-primary); font-family: var(--tita-mono); font-size: 10.5px; font-weight: 700; }\n.tabGuideDefinitions dd { margin: 0; color: var(--tita-ink-muted); font-size: 11.5px; line-height: 1.65; }\n/* \u957F\u63D0\u793A\u8BCD\u5148\u6298\u8D77\u6765\uFF1A380px \u7684\u680F\u91CC\u6574\u6BB5\u94FA\u5F00\u4F1A\u5360\u6389\u597D\u51E0\u5C4F\uFF0C\u800C\u5B83\u662F\u53C2\u8003\u6750\u6599\u4E0D\u662F\u6B63\u6587\u3002 */\n.tabGuidePromptDetails { border: 1px solid var(--tita-line); border-radius: 8px; background: var(--tita-surface-muted); }\n.tabGuidePromptDetails > summary { cursor: pointer; padding: 9px 13px; color: var(--tita-primary); font-size: 11px; font-weight: 650; list-style: none; }\n.tabGuidePromptDetails > summary::-webkit-details-marker { display: none; }\n.tabGuidePromptDetails > summary::before { content: '\u25B8'; display: inline-block; width: 14px; color: var(--tita-ink-faint); }\n.tabGuidePromptDetails[open] > summary { border-bottom: 1px solid var(--tita-line); }\n.tabGuidePromptDetails[open] > summary::before { content: '\u25BE'; }\n.tabGuidePromptDetails > summary:hover { color: var(--tita-primary-hover); }\n.tabGuidePromptDetails > summary:focus-visible { outline: 2px solid var(--tita-focus-ring); outline-offset: -2px; }\n.tabGuidePromptDetails .tabGuidePrompt { border: 0; border-radius: 0; background: transparent; }\n\n.tabGuidePrompt { overflow-x: auto; margin: 0; border: 1px solid var(--tita-line); border-radius: 8px; background: var(--tita-surface-muted); padding: 13px 14px; color: var(--tita-ink); font-family: var(--tita-mono); font-size: 10.5px; line-height: 1.7; white-space: pre-wrap; }\n.tabGuidePrompt + ul { margin-top: 9px; }\n.tabGuideSection ul { display: grid; gap: 6px; margin: 0; padding: 0 0 0 17px; color: var(--tita-ink-muted); font-size: 11.5px; line-height: 1.65; }\n.tabGuideSection li::marker { color: var(--tita-primary); }\n\n/* \u4E24\u680F\u653E\u4E0D\u4E0B\u65F6**\u53E0\u6210\u4E00\u680F**\uFF1A\u753B\u5E03\u62FF\u5230\u6574\u5E45\u5BBD\u5EA6\uFF0C\u8BF4\u660E\u843D\u5230\u5B83\u4E0B\u9762\u3002\n \u65AD\u70B9\u53D6 1520 \u800C\u4E0D\u662F 1180\uFF1A\u5DE6\u5217\u8981\u88C5\u4E0B 1172px \u5BBD\u7684\u6574\u56FE\uFF0C\u7A84\u4E8E 1520 \u65F6\u4E24\u680F\u4F1A\u8BA9\u56FE\u7F29\u5230\n \u300C\u4E00\u773C\u770B\u5168\u4F46\u8BFB\u4E0D\u51FA\u6B65\u9AA4\u300D\uFF0C\u90A3\u8FD8\u4E0D\u5982\u53E0\u8D77\u6765\u3002 */\n@media (max-width: 1520px) {\n .tabGuideDetailColumn .tabGuideDetailGrid, .tabGuideDetailColumn .tabGuideSections { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n .tabGuideDetailColumn .tabGuideDefinitions > div { grid-template-columns: 112px minmax(0, 1fr); gap: 13px; }\n}\n\n/* \u7A84\u5230\u653E\u4E0D\u4E0B\u300C\u56FE + \u53F3\u680F\u300D\u65F6\uFF0CInspector **\u843D\u5230\u753B\u5E03\u4E0B\u9762**\uFF0C\u4E0D\u518D\u6D6E\u5728\u56FE\u4E0A\u3002\n \u9608\u503C\u4E0E\u7EC4\u4EF6\u91CC\u7684 `BESIDE_MIN_WIDTH` \u662F\u540C\u4E00\u4E2A\u6570\uFF0C\u4E24\u5904\u5FC5\u987B\u4E00\u8D77\u6539\u3002 */\n@container (max-width: 1100px) {\n .tabGuideInspector { position: static; width: auto; max-height: none; margin: 0 14px 14px; box-shadow: none; }\n .tabGuideInspectorBody { overflow: visible; }\n}\n\n@media (max-width: 820px) {\n .tabGuideDetailColumn .tabGuideDetailGrid, .tabGuideDetailColumn .tabGuideSections { grid-template-columns: minmax(0, 1fr); }\n .tabGuideDetailColumn .tabGuideDefinitions > div { grid-template-columns: minmax(0, 1fr); gap: 3px; }\n}\n\n@media (max-width: 820px) {\n .attributionGuideIntro { grid-template-columns: auto minmax(0, 1fr); }\n .attributionGuideFormula { grid-column: 2; justify-items: start; text-align: left; }\n .attributionGuidePipeline { grid-template-columns: 1fr; gap: 12px; }\n .attributionGuidePipeline > .attributionGuideConnector svg { transform: rotate(90deg); }\n .attributionGuideField { grid-template-columns: 90px minmax(0, 1fr); gap: 5px 12px; }\n .attributionGuideField span { grid-column: 2; }\n}\n\n@media (max-width: 560px) {\n .attributionGuide { gap: 28px; }\n .attributionGuideIntro { grid-template-columns: 1fr; gap: 10px; }\n .attributionGuideFormula { grid-column: auto; }\n .attributionGuideIntroCopy h2 { font-size: 19px; }\n .attributionGuidePipeline { grid-template-columns: 1fr; gap: 12px; padding: 14px; }\n .attributionGuidePipeline > .attributionGuideConnector svg { transform: rotate(90deg); }\n .attributionGuideConnector span { width: auto; }\n .attributionGuideRelations { display: grid; }\n .attributionGuideCaseIntro { display: grid; gap: 7px; }\n .attributionGuideTable { display: block; overflow-x: auto; white-space: nowrap; }\n .attributionGuideTable tbody td { min-width: 160px; white-space: normal; }\n}\n\n/* ---------------------------------------------------------------- trial page\n *\n * \u8BD5\u8DD1\u9875\u7684\u9996\u5C4F\u6309\u300C\u8F93\u5165 \u2192 \u7F16\u8BD1\u94FE \u2192 \u62A5\u544A\u300D\u7EC4\u7EC7\u3002\u8F93\u5165\u662F\u552F\u4E00\u9700\u8981\u64CD\u4F5C\u7684\u533A\u57DF\uFF0C\u56DB\u6BB5\u94FE\u8DEF\n * \u53EA\u5728\u6CA1\u6709\u62A5\u544A\u65F6\u4F5C\u4E3A\u9884\u89C8\u51FA\u73B0\uFF1B\u8DD1\u5B8C\u540E\u8BA9\u77E9\u9635\u6210\u4E3A\u7B2C\u4E00\u773C\u7684\u4EA7\u7269\u3002\u6574\u9875\u53EA\u4FDD\u7559\u4E00\u4E2A\u771F\u6B63\u7684\n * \u5BB9\u5668\u8FB9\u754C\uFF0C\u907F\u514D\u5728\u8BF4\u660E\u3001\u9009\u62E9\u5668\u548C\u7A7A\u6001\u4E4B\u95F4\u53E0\u51FA\u4E00\u7EC4\u4E92\u76F8\u7ADE\u4E89\u7684\u5361\u7247\u3002\n */\n.page-trialContent {\n gap: 18px;\n}\n\n.trialPageIntro {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: start;\n gap: 14px;\n border-bottom: 1px solid var(--tita-line);\n padding: 2px 0 18px;\n}\n\n.trialPageIntroMark {\n display: inline-flex;\n width: 36px;\n height: 36px;\n align-items: center;\n justify-content: center;\n border: 1px solid var(--tita-primary-line);\n border-radius: 10px;\n background: var(--tita-primary-soft);\n color: var(--tita-primary);\n}\n\n.trialPageIntroCopy { min-width: 0; }\n.trialPageIntroCopy h2 { margin: 0; color: var(--tita-ink); font-size: 20px; font-weight: 740; letter-spacing: -.025em; line-height: 1.25; }\n.trialPageIntroCopy p { max-width: 62ch; margin: 6px 0 0; color: var(--tita-ink-muted); font-size: 12.5px; line-height: 1.7; }\n\n.trialPageBoundary {\n display: grid;\n justify-items: end;\n gap: 2px;\n padding-top: 2px;\n text-align: right;\n}\n\n.trialPageBoundary span { color: var(--tita-primary); font-size: 10.5px; font-weight: 700; }\n.trialPageBoundary strong { color: var(--tita-ink-muted); font-size: 10.5px; font-weight: 600; white-space: nowrap; }\n\n.trialSourcePanel {\n display: grid;\n gap: 16px;\n border: 1px solid var(--tita-line);\n border-radius: 12px;\n background: var(--tita-surface);\n padding: 18px 20px 15px;\n}\n\n.trialPanelHead { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }\n.trialPanelHead h3 { margin: 0; color: var(--tita-ink); font-size: 14px; font-weight: 720; letter-spacing: -.01em; }\n.trialPanelHead p { margin: 4px 0 0; color: var(--tita-ink-muted); font-size: 11.5px; line-height: 1.6; }\n.trialPanelMeta { flex: 0 0 auto; color: var(--tita-ink-faint); font-size: 10.5px; white-space: nowrap; }\n\n.trialSourceControls { display: flex; flex-wrap: wrap; align-items: end; gap: 10px; }\n.trialSourceSelect { display: grid; min-width: min(380px, 100%); flex: 1 1 320px; gap: 5px; }\n.trialControlLabel { color: var(--tita-ink-muted); font-size: 10.5px; font-weight: 650; }\n.trialDocumentSelect { width: 100%; max-width: 100%; }\n.trialSourceOr { align-self: center; color: var(--tita-ink-faint); font-size: 11px; }\n.trialUploadButton { min-height: 32px; }\n.trialSourceControls .tita-trialClear { margin-bottom: 2px; }\n.trialSourceNote { margin: 0; border-top: 1px solid var(--tita-line); padding-top: 11px; color: var(--tita-ink-muted); font-size: 10.5px; line-height: 1.6; }\n\n.trialEmptyState {\n display: grid;\n grid-template-columns: minmax(210px, .8fr) minmax(0, 1.5fr);\n align-items: center;\n gap: 22px;\n border: 1px dashed var(--tita-line-strong);\n border-radius: 12px;\n background: var(--tita-surface-muted);\n padding: 18px 20px;\n}\n\n.trialEmptyCopy { min-width: 0; }\n.trialEmptyTitle { display: inline-flex; align-items: center; gap: 6px; color: var(--tita-ink); font-size: 12.5px; font-weight: 720; }\n.trialEmptyTitle svg { color: var(--tita-primary); }\n.trialEmptyCopy p { margin: 6px 0 0; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.7; }\n\n.trialStageRail { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0; padding: 0; list-style: none; }\n.trialStageRail li { position: relative; display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: start; gap: 7px; min-width: 0; padding-right: 15px; }\n.trialStageRail li:not(:last-child)::after { content: ''; position: absolute; top: 9px; left: 20px; right: 5px; height: 1px; background: var(--tita-line-strong); }\n.trialStageDot { position: relative; z-index: 1; display: inline-flex; width: 19px; height: 19px; align-items: center; justify-content: center; border: 1px solid var(--tita-primary-line); border-radius: 999px; background: var(--tita-surface); color: var(--tita-primary); font-family: var(--tita-mono); font-size: 9.5px; font-weight: 700; }\n.trialStageRail li > span:last-child { display: grid; min-width: 0; gap: 2px; }\n.trialStageRail strong { color: var(--tita-ink); font-size: 10.5px; font-weight: 700; line-height: 1.4; }\n.trialStageRail small { color: var(--tita-ink-muted); font-size: 9.5px; line-height: 1.5; }\n\n.page-trialContent > .tita-trialLoading,\n.page-trialContent > .tita-trialError { margin-top: -4px; }\n.page-trialContent > .tita-trialSummary { margin-top: -2px; border-radius: 12px; padding: 13px 15px; }\n\n@media (max-width: 760px) {\n .page-main { padding-inline: 20px; }\n .page-bar { padding-inline: 20px; }\n .tabGuideDetail { padding-inline: 17px; }\n .trialPageIntro { grid-template-columns: auto minmax(0, 1fr); }\n .trialPageBoundary { grid-column: 2; justify-items: start; padding-top: 0; text-align: left; }\n .trialEmptyState { grid-template-columns: 1fr; gap: 16px; }\n}\n\n\n@media (max-width: 560px) {\n .page-main { padding: 20px 14px 90px; }\n .page-bar { padding: 11px 14px; }\n .tabGuideDetailHeader { grid-template-columns: auto minmax(0, 1fr); }\n .tabGuideDetailGrid { grid-template-columns: 1fr; }\n .tabGuideFacts { align-items: stretch; flex-direction: column; gap: 8px; }\n .tabGuideFacts > svg { display: none; }\n .tabGuideSections { grid-template-columns: 1fr; }\n .tabGuideSectionWide { grid-column: auto; }\n .tabGuideDefinitions > div { grid-template-columns: 82px minmax(0, 1fr); gap: 9px; }\n .trialPageIntroCopy h2 { font-size: 18px; }\n .trialSourcePanel { padding: 15px 14px 13px; }\n .trialPanelHead { align-items: start; }\n .trialPanelMeta { display: none; }\n .trialSourceControls { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; }\n .trialSourceSelect { min-width: 0; grid-column: 1 / -1; }\n .trialSourceOr { display: none; }\n .trialStageRail { grid-template-columns: 1fr 1fr; row-gap: 13px; }\n .trialStageRail li:nth-child(2)::after { display: none; }\n}\n\n/* The execution queue is internal. The public workspace navigates node versions. */\n.knVersionOverview { display: grid; gap: 8px; margin-top: 18px; border-top: 1px solid var(--tita-line); padding-block: 14px 12px; }\n.knVersionOverview > h2 { margin: 0; color: var(--tita-ink); font-size: 13px; font-weight: 680; }\n.knVersionOverviewList { overflow: hidden; border: 1px solid var(--tita-line); border-radius: 10px; background: var(--tita-surface); }\n.knVersionOverviewRow { display: grid; grid-template-columns: minmax(150px, .72fr) minmax(100px, .48fr) minmax(0, 1.6fr) auto; align-items: center; gap: 12px; border-bottom: 1px solid var(--tita-line); padding: 8px 12px; }\n.knVersionOverviewRow:last-child { border-bottom: 0; }\n.knVersionOverviewRow:hover, .knVersionOverviewRow[data-current] { background: var(--tita-surface-muted); }\n.knVersionOverviewNode { width: 100%; min-width: 0; height: auto; min-height: 36px; justify-content: flex-start; gap: 9px; padding-inline: 5px; text-align: left; }\n.knVersionOverviewNode > svg { flex: 0 0 auto; color: var(--tita-ink-muted); }\n.knVersionOverviewRow[data-current] .knVersionOverviewNode > svg { color: var(--tita-primary); }\n.knVersionOverviewNode > span { display: grid; min-width: 0; gap: 1px; }\n.knVersionOverviewNode strong { color: var(--tita-ink); font-size: 11.5px; font-weight: 650; }\n.knVersionOverviewNode small, .knVersionOverviewStatus small { color: var(--tita-ink-muted); font-size: 10px; font-variant-numeric: tabular-nums; }\n.knVersionOverviewStatus { display: flex; min-width: 0; align-items: center; gap: 7px; }\n.knVersionOverviewStatus .tita-uiBadge { flex: 0 0 auto; }\n.knVersionOverviewSummary { min-width: 0; margin: 0; overflow: hidden; color: var(--tita-ink-muted); font-size: 11px; line-height: 1.45; text-overflow: ellipsis; white-space: nowrap; }\n.knVersionOverviewActions { display: flex; min-width: 0; justify-content: flex-end; }\n.knVersionOverviewActions > div { justify-content: flex-end; }\n.knScope { margin-top: 12px; border: 1px solid var(--tita-line); border-radius: 10px; background: var(--tita-surface); padding: 0 14px 12px; }\n.knStagePanelHead { align-items: center; padding: 12px 0 10px; }\n.knStagePanelHead .ktStageActions { flex-wrap: wrap; justify-content: flex-end; }\n.knScopeSection { margin-top: 10px; border-top: 1px solid var(--tita-line); padding-top: 10px; }\n.knScopeSectionHead { display: flex; min-width: 0; flex-wrap: wrap; align-items: center; gap: 6px 10px; color: var(--tita-ink-muted); font-size: 11px; }\n.knScopeSectionHead strong { color: var(--tita-ink); font-size: 11.5px; font-weight: 650; }\n.knScopeSectionHead > span { margin-right: auto; }\n.knScopeItems { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; max-height: 180px; overflow: auto; padding-top: 12px; font-size: 12px; }\n.knScopeItems.knScopeSources { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: stretch; gap: 5px 8px; max-height: 210px; padding-top: 8px; }\n.knScopeItem { display: inline-flex; align-items: center; gap: 7px; min-width: 0; max-width: 100%; }\n.knScopeItem span { min-width: 0; flex: 1; overflow-wrap: anywhere; text-align: left; }\n.knScopeItem small { white-space: nowrap; color: var(--tita-ink-muted); }\n.knVersionLayout { display: grid; grid-template-columns: minmax(230px, .65fr) minmax(0, 2fr); gap: 24px; margin-top: 22px; }\n.knVersionList { min-width: 0; border-right: 1px solid var(--tita-line); padding-right: 18px; }\n.knVersionList h3, .knVersionDetail h3 { margin: 0 0 12px; font-size: 13px; font-weight: 650; }\n.knVersion { padding: 8px 0; border-bottom: 1px solid var(--tita-line); }\n.knVersion[data-selected] { background: var(--tita-surface-muted); }\n.knVersionButton { width: 100%; justify-content: start; height: auto; min-height: 34px; flex-wrap: wrap; }\n.knVersionDocs { display: grid; gap: 4px; margin-top: 8px; }\n.knVersionDoc { width: 100%; height: auto; min-height: 34px; justify-content: start; flex-wrap: wrap; text-align: left; }\n.knVersionDoc > span { min-width: 0; flex: 1; white-space: normal; overflow-wrap: anywhere; }\n.knVersionDoc[aria-pressed=\"true\"], .knVersionButton[aria-pressed=\"true\"] { color: var(--tita-primary); }\n.knVersionDetail { min-width: 0; }\n.knLogSection { margin-top: 16px; border-top: 1px solid var(--tita-line); padding-top: 14px; }\n.knLogSection > h3 { margin: 0 0 10px; color: var(--tita-ink); font-size: 13px; font-weight: 650; }\n.knLogEvents { display: grid; gap: 8px; margin: 18px 0 26px; padding: 0; list-style: none; }\n.knLogEvents li { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 12px; font-size: 12px; line-height: 1.6; overflow-wrap: anywhere; }\n.knLogEvents time, .knModelCallHead time { color: var(--tita-ink-muted); font-size: 11px; font-variant-numeric: tabular-nums; }\n.knModelCall { min-width: 0; padding-block: 16px; border-top: 1px solid var(--tita-line); }\n.knModelCallHead { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 12px; font-size: 12px; }\n.knPager { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding-block: 12px; font-size: 12px; font-variant-numeric: tabular-nums; }\n.ktSettings { grid-template-columns: minmax(0, 1fr); }\n.ktSettingsCol { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; gap: 24px; }\n.ktFlatParameters { display: grid; gap: 16px; margin-top: 20px; }\n@media (max-width: 760px) {\n .knVersionLayout, .ktSettingsCol { grid-template-columns: minmax(0, 1fr); }\n .knVersionList { border-right: 0; padding-right: 0; }\n .knScopeItems { max-height: 150px; }\n}\n.ktSettingsCol .ktFlatParameters { margin-top: 0; }\n.ktSettingFull { grid-column: 1 / -1; }\n@media (max-width: 760px) {\n .knVersionOverviewRow { grid-template-columns: minmax(0, 1fr) auto; gap: 4px 10px; }\n .knVersionOverviewNode { grid-column: 1; }\n .knVersionOverviewStatus { grid-column: 2; justify-content: flex-end; }\n .knVersionOverviewSummary { grid-column: 1 / -1; padding-inline: 5px; white-space: normal; }\n .knVersionOverviewActions { grid-column: 1 / -1; justify-content: flex-start; padding-inline: 5px; }\n .knScopeItems.knScopeSources { grid-template-columns: minmax(0, 1fr); }\n .knStagePanelHead .ktStageActions { align-self: stretch; }\n}\n.knScopeItem[aria-pressed=\"true\"] { border-color: var(--tita-primary); color: var(--tita-primary); background: var(--tita-primary-soft); }\n.knScopeItem { white-space: normal; text-align: left; height: auto; min-height: 30px; }\n\n\n/* ---------------------------------------------------------------- \u6587\u6863\u94FE\u8DEF\uFF08\u6EAF\u6E90\uFF09 */\n.knLineage { display: grid; gap: 14px; margin-top: 12px; }\n.knLineageBar { display: flex; justify-content: flex-start; align-items: center; }\n.knLineagePicker { display: inline-flex; align-items: center; gap: 8px; color: var(--tita-ink-muted); font-size: 11px; }\n.knLineagePicker select { max-width: 320px; padding: 4px 8px; border: 1px solid var(--tita-line); border-radius: 8px; background: var(--tita-surface); color: var(--tita-ink); font-size: 12px; }\n.knLineageLayers { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }\n.knLineageLayer { min-width: 0; padding: 12px; border: 1px solid var(--tita-line); border-radius: 10px; background: var(--tita-surface); }\n.knLineageLayer > header { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; font-size: 12px; }\n.knLineageLayer > header > svg { color: var(--tita-ink-muted); }\n.knLineageLayer > header > span { margin-left: auto; color: var(--tita-ink-muted); font-size: 11px; font-variant-numeric: tabular-nums; }\n.knLineageLayer ul { display: grid; gap: 8px; max-height: 460px; margin: 0; padding: 0; overflow: auto; list-style: none; }\n.knLineageLayer li { display: grid; gap: 3px; padding: 8px; border-radius: 8px; background: var(--tita-surface-muted); }\n.knLineageRow { display: flex; min-width: 0; align-items: baseline; gap: 8px; }\n.knLineageText { min-width: 0; flex: 1; font-size: 12px; line-height: 1.5; overflow-wrap: anywhere; }\n.knLineageLayer small { color: var(--tita-ink-muted); font-size: 10.5px; }\n.knLineageActions { display: flex; justify-content: flex-end; }\n@media (max-width: 980px) { .knLineageLayers { grid-template-columns: minmax(0, 1fr); } }\n";
7316
7316
  var tagId3 = "dsh-data-domain-knowledge//Users/fuzz/Documents/github/dsh-personal/plugins/dsh-data-domain-knowledge/src/client/pages.css";
7317
7317
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId3) + "]") === null) {
7318
7318
  const tag = document.createElement("style");
@@ -7686,6 +7686,24 @@
7686
7686
  ["circle", { cx: "11", cy: "11", r: "2", key: "xmgehs" }]
7687
7687
  ]);
7688
7688
 
7689
+ // ../../node_modules/.pnpm/lucide-react@0.468.0_react@18.2.0/node_modules/lucide-react/dist/esm/icons/quote.js
7690
+ var Quote = createLucideIcon("Quote", [
7691
+ [
7692
+ "path",
7693
+ {
7694
+ d: "M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z",
7695
+ key: "rib7q0"
7696
+ }
7697
+ ],
7698
+ [
7699
+ "path",
7700
+ {
7701
+ d: "M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z",
7702
+ key: "1ymkrd"
7703
+ }
7704
+ ]
7705
+ ]);
7706
+
7689
7707
  // ../../node_modules/.pnpm/lucide-react@0.468.0_react@18.2.0/node_modules/lucide-react/dist/esm/icons/refresh-cw.js
7690
7708
  var RefreshCw = createLucideIcon("RefreshCw", [
7691
7709
  ["path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8", key: "v9h5vc" }],
@@ -22919,7 +22937,7 @@ ${report.prompt.user}`;
22919
22937
  }
22920
22938
 
22921
22939
  // src/client/ExtractionTasksPage.tsx
22922
- var import_react17 = __toESM(require_react(), 1);
22940
+ var import_react18 = __toESM(require_react(), 1);
22923
22941
 
22924
22942
  // ../../packages/ui/lib/file-picker.js
22925
22943
  var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1);
@@ -25595,6 +25613,9 @@ ${report.prompt.user}`;
25595
25613
  ] });
25596
25614
  }
25597
25615
 
25616
+ // src/client/DocumentLineageView.tsx
25617
+ var import_react17 = __toESM(require_react(), 1);
25618
+
25598
25619
  // src/client/format.ts
25599
25620
  var pad2 = (value) => String(value).padStart(2, "0");
25600
25621
  function formatDateTime(value) {
@@ -25604,8 +25625,160 @@ ${report.prompt.user}`;
25604
25625
  return `${date.getFullYear()}-${pad2(date.getMonth() + 1)}-${pad2(date.getDate())} ${pad2(date.getHours())}:${pad2(date.getMinutes())}`;
25605
25626
  }
25606
25627
 
25607
- // src/client/ExtractionTasksPage.tsx
25628
+ // src/client/DocumentLineageView.tsx
25608
25629
  var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1);
25630
+ var KIND_LABEL2 = { fact: "Fact", procedure: "Procedure", case: "Case" };
25631
+ var AXIS_LABEL = { object: "\u5BF9\u8C61", action: "\u52A8\u4F5C", scene: "\u573A\u666F" };
25632
+ var STATUS_TONE = {
25633
+ active: "success",
25634
+ candidate: "blue",
25635
+ unreviewed: "neutral",
25636
+ disputed: "warning",
25637
+ deprecated: "warning"
25638
+ };
25639
+ function DocumentLineageView({ kb }) {
25640
+ const [documents, setDocuments] = (0, import_react17.useState)([]);
25641
+ const [docId, setDocId] = (0, import_react17.useState)("");
25642
+ const [lineage, setLineage] = (0, import_react17.useState)();
25643
+ const [loading, setLoading] = (0, import_react17.useState)(true);
25644
+ const [failure, setFailure] = (0, import_react17.useState)("");
25645
+ (0, import_react17.useEffect)(() => {
25646
+ let cancelled = false;
25647
+ setLoading(true);
25648
+ void requestJson(`/knowledge/documents?${new URLSearchParams({ kb, limit: "200", offset: "0" })}`).then((result) => {
25649
+ if (cancelled) return;
25650
+ const list = result.data?.documents ?? [];
25651
+ setDocuments(list);
25652
+ setDocId((current) => current || list[0]?.docId || "");
25653
+ }).catch((cause) => {
25654
+ if (!cancelled) setFailure(cause instanceof Error ? cause.message : String(cause));
25655
+ }).finally(() => {
25656
+ if (!cancelled) setLoading(false);
25657
+ });
25658
+ return () => {
25659
+ cancelled = true;
25660
+ };
25661
+ }, [kb]);
25662
+ (0, import_react17.useEffect)(() => {
25663
+ if (!docId) {
25664
+ setLineage(void 0);
25665
+ return;
25666
+ }
25667
+ let cancelled = false;
25668
+ setFailure("");
25669
+ void requestJson(`/knowledge/document-lineage?${new URLSearchParams({ kb, docId })}`).then((result) => {
25670
+ if (!cancelled) setLineage(result.data);
25671
+ }).catch((cause) => {
25672
+ if (!cancelled) setFailure(cause instanceof Error ? cause.message : String(cause));
25673
+ });
25674
+ return () => {
25675
+ cancelled = true;
25676
+ };
25677
+ }, [kb, docId]);
25678
+ const coordinate = (item) => {
25679
+ const parts = [item.coordinate.object, item.coordinate.action, item.coordinate.scene].filter(Boolean);
25680
+ return parts.length === 0 ? "\u672A\u5F52\u4E00" : parts.join(" \xB7 ");
25681
+ };
25682
+ const cardsOf = (0, import_react17.useMemo)(() => new Map((lineage?.cards ?? []).map((card) => [card.entityId, card])), [lineage]);
25683
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "knLineage", children: [
25684
+ documents.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "knLineageBar", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("label", { className: "knLineagePicker", children: [
25685
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { children: "\u6587\u6863" }),
25686
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("select", { value: docId, onChange: (event) => setDocId(event.target.value), "aria-label": "\u9009\u62E9\u6587\u6863", children: documents.map((item) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("option", { value: item.docId, children: item.title }, item.docId)) })
25687
+ ] }) }),
25688
+ failure && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("p", { className: "ktError", role: "alert", children: [
25689
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(CircleAlert, { size: 13 }),
25690
+ failure
25691
+ ] }),
25692
+ loading && documents.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { className: "ktHint", role: "status", children: "\u6B63\u5728\u8BFB\u53D6\u6587\u6863\u5217\u8868\u2026" }),
25693
+ !loading && documents.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { className: "ktEmpty", children: "\u8FD8\u6CA1\u6709\u6765\u6E90\u6587\u6863\u3002\u5148\u5728 SourceRaw \u91CC\u5F55\u5165\u3002" }),
25694
+ lineage && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "knLineageLayers", children: [
25695
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("section", { className: "knLineageLayer", "aria-label": "\u62BD\u53D6\u51FA\u7684 Knowledge", children: [
25696
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("header", { children: [
25697
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Quote, { size: 14 }),
25698
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("strong", { children: "Knowledge" }),
25699
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("span", { children: [
25700
+ lineage.knowledge.length,
25701
+ " \u6761"
25702
+ ] })
25703
+ ] }),
25704
+ lineage.knowledge.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { className: "ktHint", children: "\u8FD9\u4EFD\u6587\u6863\u6CA1\u6709\u62BD\u51FA\u4EFB\u4F55 Knowledge \u2014\u2014 \u62BD\u53D6\u8FD9\u4E00\u5173\u6CA1\u8FC7\u3002\u53BB\u300C\u5904\u7406 \u2192 \u62BD\u53D6\u300D\u770B\u90A3\u6B21\u8FD0\u884C\u7684\u539F\u56E0\u3002" }) : /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("ul", { children: lineage.knowledge.map((item) => /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("li", { children: [
25705
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "knLineageRow", children: [
25706
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Badge, { tone: "neutral", children: KIND_LABEL2[item.kind] ?? item.kind }),
25707
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "knLineageText", children: item.text }),
25708
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Badge, { tone: STATUS_TONE[item.status] ?? "neutral", children: item.status })
25709
+ ] }),
25710
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("small", { className: item.coordinate.object || item.coordinate.action || item.coordinate.scene ? "" : "ktHintWarn", children: coordinate(item) })
25711
+ ] }, item.id)) })
25712
+ ] }),
25713
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("section", { className: "knLineageLayer", "aria-label": "\u5F52\u4E00\u540E\u7684\u5750\u6807", children: [
25714
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("header", { children: [
25715
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Share2, { size: 14 }),
25716
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("strong", { children: "\u5F52\u4E00\u540E\u7684\u5750\u6807" }),
25717
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("span", { children: [
25718
+ lineage.axes.length,
25719
+ " \u4E2A\u8F74\u5B9E\u4F53"
25720
+ ] })
25721
+ ] }),
25722
+ lineage.axes.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { className: "ktHint", children: "\u8FD8\u6CA1\u6709\u8F74\u5B9E\u4F53\uFF1AKnowledge \u7684\u5750\u6807\u662F\u7A7A\u7684\uFF0C\u5148\u8DD1\u300C\u5F52\u4E00\u5750\u6807\u300D\u3002" }) : /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("ul", { children: lineage.axes.map((axis) => /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("li", { children: [
25723
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "knLineageRow", children: [
25724
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Badge, { tone: "neutral", children: AXIS_LABEL[axis.kind] ?? axis.kind }),
25725
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "knLineageText", children: axis.name })
25726
+ ] }),
25727
+ axis.aliases.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("small", { children: [
25728
+ "\u522B\u540D\uFF1A",
25729
+ axis.aliases.join("\u3001")
25730
+ ] })
25731
+ ] }, axis.id)) })
25732
+ ] }),
25733
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("section", { className: "knLineageLayer", "aria-label": "\u4EA7\u51FA\u7684 WikiCard", children: [
25734
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("header", { children: [
25735
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Layers, { size: 14 }),
25736
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("strong", { children: "WikiCard" }),
25737
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("span", { children: [
25738
+ lineage.cards.length,
25739
+ " \u5F20"
25740
+ ] })
25741
+ ] }),
25742
+ lineage.cards.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { className: "ktHint", children: "\u8FD8\u6CA1\u6709\u5361\u7247\uFF1A\u7269\u5316\u8FD9\u4E00\u5173\u6CA1\u8FC7\uFF08\u5750\u6807\u6CA1\u5F52\u4E00\u3001\u6216\u5206\u7EC4\u88AB\u963B\u65AD\uFF09\u3002\u53BB\u300C\u5904\u7406 \u2192 \u7269\u5316\u300D\u770B\u5206\u7EC4\u72B6\u6001\u3002" }) : /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("ul", { children: lineage.cards.map((card) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "knLineageRow", children: [
25743
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Badge, { tone: "neutral", children: card.wikiKind === "way" ? "Wiki Way" : card.wikiKind === "fact" ? "Wiki Fact" : card.entityType }),
25744
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "knLineageText", children: card.title }),
25745
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("small", { children: [
25746
+ card.knowledgeIds.length,
25747
+ " \u6761\u77E5\u8BC6"
25748
+ ] })
25749
+ ] }) }, card.entityId)) })
25750
+ ] })
25751
+ ] }),
25752
+ lineage && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("p", { className: "ktHint", children: [
25753
+ "\u6765\u6E90 v",
25754
+ lineage.source.version,
25755
+ " \xB7 \u66F4\u65B0\u4E8E ",
25756
+ formatDateTime(documents.find((item) => item.docId === docId)?.updatedAt ?? ""),
25757
+ cardsOf.size > 0 ? ` \xB7 \u6709 ${cardsOf.size} \u5F20\u5361\u7247\u5F15\u7528\u4E86\u8FD9\u4EFD\u6587\u6863\u7684\u77E5\u8BC6` : ""
25758
+ ] }),
25759
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "knLineageActions", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Button, { size: "sm", variant: "ghost", onClick: () => {
25760
+ setLineage(void 0);
25761
+ setDocId((current) => current);
25762
+ }, children: "\u91CD\u65B0\u8BFB\u53D6" }) })
25763
+ ] });
25764
+ }
25765
+
25766
+ // src/client/ExtractionTasksPage.tsx
25767
+ var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1);
25768
+ var INPUT_TITLE = {
25769
+ extract: "\u672C\u6B65\u8F93\u5165\uFF1ASource Raw",
25770
+ normalize: "\u4E0A\u4E00\u6B65\u4EA7\u7269\uFF1A\u62BD\u53D6\u7ED3\u679C",
25771
+ derive: "\u4E0A\u4E00\u6B65\u4EA7\u7269\uFF1A\u5DF2\u5F52\u4E00\u7684\u6765\u6E90",
25772
+ materialize: "\u4E0A\u4E00\u6B65\u4EA7\u7269\uFF1A\u5F85\u7269\u5316\u5206\u7EC4",
25773
+ build: "\u4E0A\u4E00\u6B65\u4EA7\u7269\uFF1AWikiCard"
25774
+ };
25775
+ var INPUT_EMPTY = {
25776
+ extract: "\u8FD8\u6CA1\u6709\u6765\u6E90\u3002\u5148\u5728\u300C\u6765\u6E90\u300D\u91CC\u5F55\u5165\u6587\u6863\u3002",
25777
+ normalize: "\u8FD8\u6CA1\u6709\u9700\u8981\u5F52\u4E00\u7684\u62BD\u53D6\u7ED3\u679C\u3002",
25778
+ derive: "\u8FD8\u6CA1\u6709\u53EF\u63D0\u70BC\u7684\u6765\u6E90\u3002",
25779
+ materialize: "\u6CA1\u6709\u9700\u8981\u7269\u5316\u7684\u5206\u7EC4\u3002",
25780
+ build: "\u8FD8\u6CA1\u6709\u53EF\u5EFA\u7D22\u5F15\u7684\u5361\u7247\u3002"
25781
+ };
25609
25782
  var LOG_LABEL = { extract: "\u62BD\u53D6\u65E5\u5FD7", normalize: "\u5F52\u4E00\u65E5\u5FD7", derive: "\u63D0\u70BC\u65E5\u5FD7", materialize: "\u7269\u5316\u65E5\u5FD7", build: "\u7D22\u5F15\u65E5\u5FD7" };
25610
25783
  var STAGE_META = {
25611
25784
  extract: { icon: FileText, verb: "\u62BD\u53D6" },
@@ -25619,36 +25792,51 @@ ${report.prompt.user}`;
25619
25792
  var label = (value) => value.stale && !active(value) ? "\u5F85\u91CD\u8DD1" : PIPELINE_STATE_LABEL[value.state];
25620
25793
  function ExtractionTasksPage({ kb }) {
25621
25794
  const params = new URLSearchParams(typeof window === "undefined" ? "" : window.location.search);
25622
- const [view, setView] = (0, import_react17.useState)(params.get("view") === "settings" ? "settings" : "run");
25623
- const [stage, setStage] = (0, import_react17.useState)("extract");
25624
- const [status, setStatus] = (0, import_react17.useState)();
25625
- const [heads, setHeads] = (0, import_react17.useState)([]);
25626
- const [versions, setVersions] = (0, import_react17.useState)([]);
25627
- const [selectedId, setSelectedId] = (0, import_react17.useState)("");
25628
- const [selectedDoc, setSelectedDoc] = (0, import_react17.useState)("");
25629
- const [sourceIds, setSourceIds] = (0, import_react17.useState)(params.get("source") ? [params.get("source")] : []);
25630
- const [groupKeys, setGroupKeys] = (0, import_react17.useState)([]);
25631
- const [tasks, setTasks] = (0, import_react17.useState)([]);
25632
- const [calls, setCalls] = (0, import_react17.useState)([]);
25633
- const [events2, setEvents] = (0, import_react17.useState)([]);
25634
- const [logAfter, setLogAfter] = (0, import_react17.useState)(0);
25635
- const [logNext, setLogNext] = (0, import_react17.useState)(0);
25636
- const [logMore, setLogMore] = (0, import_react17.useState)(false);
25637
- const [callTotal, setCallTotal] = (0, import_react17.useState)(0);
25638
- const [callPage, setCallPage] = (0, import_react17.useState)(0);
25639
- const [versionPage, setVersionPage] = (0, import_react17.useState)(0);
25640
- const [busy, setBusy] = (0, import_react17.useState)(false);
25641
- const [notice, setNotice] = (0, import_react17.useState)(null);
25642
- const [settingsKey, setSettingsKey] = (0, import_react17.useState)(0);
25643
- const [loading, setLoading] = (0, import_react17.useState)(true);
25644
- const [callsLoading, setCallsLoading] = (0, import_react17.useState)(false);
25645
- const [callsError, setCallsError] = (0, import_react17.useState)("");
25646
- const [selectedDetail, setSelectedDetail] = (0, import_react17.useState)();
25647
- const sequence = (0, import_react17.useRef)(0);
25795
+ const [view, setView] = (0, import_react18.useState)(() => {
25796
+ const wanted = params.get("view");
25797
+ return wanted === "settings" ? "settings" : wanted === "lineage" ? "lineage" : "run";
25798
+ });
25799
+ const [stage, setStage] = (0, import_react18.useState)("extract");
25800
+ const [status, setStatus] = (0, import_react18.useState)();
25801
+ const [heads, setHeads] = (0, import_react18.useState)([]);
25802
+ const [versions, setVersions] = (0, import_react18.useState)([]);
25803
+ const [selectedId, setSelectedId] = (0, import_react18.useState)("");
25804
+ const [selectedDoc, setSelectedDoc] = (0, import_react18.useState)("");
25805
+ const [sourceIds, setSourceIds] = (0, import_react18.useState)(params.get("source") ? [params.get("source")] : []);
25806
+ const [tasks, setTasks] = (0, import_react18.useState)([]);
25807
+ const [calls, setCalls] = (0, import_react18.useState)([]);
25808
+ const [events2, setEvents] = (0, import_react18.useState)([]);
25809
+ const [logAfter, setLogAfter] = (0, import_react18.useState)(0);
25810
+ const [logNext, setLogNext] = (0, import_react18.useState)(0);
25811
+ const [logMore, setLogMore] = (0, import_react18.useState)(false);
25812
+ const [callTotal, setCallTotal] = (0, import_react18.useState)(0);
25813
+ const [callPage, setCallPage] = (0, import_react18.useState)(0);
25814
+ const [versionPage, setVersionPage] = (0, import_react18.useState)(0);
25815
+ const [busy, setBusy] = (0, import_react18.useState)(false);
25816
+ const [notice, setNotice] = (0, import_react18.useState)(null);
25817
+ const [settingsKey, setSettingsKey] = (0, import_react18.useState)(0);
25818
+ const [loading, setLoading] = (0, import_react18.useState)(true);
25819
+ const [callsLoading, setCallsLoading] = (0, import_react18.useState)(false);
25820
+ const [callsError, setCallsError] = (0, import_react18.useState)("");
25821
+ const [selectedDetail, setSelectedDetail] = (0, import_react18.useState)();
25822
+ const sequence = (0, import_react18.useRef)(0);
25648
25823
  const selected = versions.find((row) => row.id === selectedId) ?? (selectedDetail?.id === selectedId ? selectedDetail : void 0) ?? versions[0];
25824
+ const inputRows = stage === "materialize" ? (status?.groups ?? []).map((group) => ({
25825
+ id: group.key,
25826
+ title: group.title,
25827
+ meta: group.state === "blocked" ? "\u5750\u6807\u6216\u6765\u6E90\u5F85\u5F52\u4E00" : `${group.knowledgeCount} \u6761\u77E5\u8BC6`,
25828
+ needs: group.state === "new" || group.state === "changed",
25829
+ ...group.state === "blocked" ? { blocked: true } : {}
25830
+ })) : (status?.sources ?? []).map((source) => ({
25831
+ id: source.id,
25832
+ title: source.title,
25833
+ meta: `v${source.version}`,
25834
+ needs: stage === "extract" ? source.state === "pending" || source.state === "outdated" : stage === "normalize" ? Boolean(source.extractionId) && source.state !== "normalized" : source.state === "normalized",
25835
+ ...stage === "derive" ? { blocked: true } : {}
25836
+ }));
25649
25837
  const head = heads.find((row) => row.stage === stage);
25650
25838
  const HeadIcon = head ? STAGE_META[head.stage].icon : null;
25651
- const refresh = (0, import_react17.useCallback)(async () => {
25839
+ const refresh = (0, import_react18.useCallback)(async () => {
25652
25840
  const seq = ++sequence.current;
25653
25841
  try {
25654
25842
  const [nextStatus, nextVersions, nextTasks] = await Promise.all([
@@ -25670,7 +25858,7 @@ ${report.prompt.user}`;
25670
25858
  }
25671
25859
  }
25672
25860
  }, [kb, stage, versionPage]);
25673
- (0, import_react17.useEffect)(() => {
25861
+ (0, import_react18.useEffect)(() => {
25674
25862
  void refresh();
25675
25863
  const timer = window.setInterval(() => {
25676
25864
  void refresh();
@@ -25682,17 +25870,17 @@ ${report.prompt.user}`;
25682
25870
  window.removeEventListener("focus", refresh);
25683
25871
  };
25684
25872
  }, [refresh]);
25685
- (0, import_react17.useEffect)(() => {
25873
+ (0, import_react18.useEffect)(() => {
25686
25874
  setCallPage(0);
25687
25875
  setSelectedDoc("");
25688
25876
  setCalls([]);
25689
25877
  setEvents([]);
25690
25878
  setLogAfter(0);
25691
25879
  }, [selected?.id]);
25692
- (0, import_react17.useEffect)(() => {
25880
+ (0, import_react18.useEffect)(() => {
25693
25881
  setCalls([]);
25694
25882
  }, [selectedDoc, callPage]);
25695
- (0, import_react17.useEffect)(() => {
25883
+ (0, import_react18.useEffect)(() => {
25696
25884
  if (!selected) return;
25697
25885
  let cancelled = false;
25698
25886
  const read = async () => {
@@ -25739,7 +25927,7 @@ ${report.prompt.user}`;
25739
25927
  setBusy(true);
25740
25928
  setNotice(null);
25741
25929
  try {
25742
- const result = await requestJson("/knowledge/pipeline", { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify({ kb, stage: next, force, ...sourceIds.length ? { sourceIds } : {}, ...(next === "all" || next === "materialize") && groupKeys.length ? { groupKeys } : {} }) });
25930
+ const result = await requestJson("/knowledge/pipeline", { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify({ kb, stage: next, force, ...sourceIds.length ? { sourceIds } : {} }) });
25743
25931
  if (result.data?.task) {
25744
25932
  const nextStage = next === "all" ? "extract" : next;
25745
25933
  setStage(nextStage);
@@ -25770,265 +25958,187 @@ ${report.prompt.user}`;
25770
25958
  if (!active(value)) return null;
25771
25959
  const task = tasks.find((task2) => task2.id === value.taskId);
25772
25960
  if (!task || task.currentStage && task.currentStage !== value.stage) return null;
25773
- return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex flex-wrap gap-2", children: [
25774
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Button, { size: "sm", variant: "outline", disabled: busy || task.state === "pausing" || task.state === "cancelling", onClick: () => {
25961
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "flex flex-wrap gap-2", children: [
25962
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(Button, { size: "sm", variant: "outline", disabled: busy || task.state === "pausing" || task.state === "cancelling", onClick: () => {
25775
25963
  void control(task.id, task.state === "paused" ? "resume" : "pause");
25776
25964
  }, children: [
25777
- task.state === "paused" ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Play, { size: 12 }) : /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Pause, { size: 12 }),
25965
+ task.state === "paused" ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Play, { size: 12 }) : /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Pause, { size: 12 }),
25778
25966
  task.state === "paused" ? "\u7EE7\u7EED" : "\u6682\u505C"
25779
25967
  ] }),
25780
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Button, { size: "sm", variant: "ghost", disabled: busy || task.state === "cancelling", onClick: () => {
25968
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(Button, { size: "sm", variant: "ghost", disabled: busy || task.state === "cancelling", onClick: () => {
25781
25969
  void control(task.id, "cancel");
25782
25970
  }, children: [
25783
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(X, { size: 12 }),
25971
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(X, { size: 12 }),
25784
25972
  "\u505C\u6B62"
25785
25973
  ] })
25786
25974
  ] });
25787
25975
  };
25788
- if (!kb) return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { role: "alert", children: "\u7F3A\u5C11\u77E5\u8BC6\u5E93\uFF0C\u8BF7\u4ECE\u77E5\u8BC6\u5E93\u6253\u5F00\u77E5\u8BC6\u5904\u7406\u3002" });
25789
- const toggleSource = (id) => setSourceIds((ids) => ids.includes(id) ? ids.filter((value) => value !== id) : [...ids, id]);
25976
+ if (!kb) return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { role: "alert", children: "\u7F3A\u5C11\u77E5\u8BC6\u5E93\uFF0C\u8BF7\u4ECE\u77E5\u8BC6\u5E93\u6253\u5F00\u77E5\u8BC6\u5904\u7406\u3002" });
25790
25977
  const ownCalls = calls.filter((call) => !selectedDoc || call.objectId === selectedDoc || call.sourceIds?.includes(selectedDoc));
25791
25978
  const ownEvents = events2.filter((event) => event.stage === stage && event.kind !== "output" && (!selectedDoc || event.sourceId === selectedDoc || selected?.items[event.sourceId ?? ""]?.sourceIds?.includes(selectedDoc) || !event.sourceId));
25792
- return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "ktPage", children: [
25793
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("header", { className: "ktTop", children: [
25794
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "ktTopLead", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "ktViews", role: "group", "aria-label": "\u77E5\u8BC6\u5904\u7406\u89C6\u56FE", children: [
25795
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Button, { variant: "ghost", "aria-pressed": view === "run", className: "ktView", onClick: () => setView("run"), children: "\u5904\u7406" }),
25796
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Button, { variant: "ghost", "aria-pressed": view === "settings", className: "ktView", onClick: () => setView("settings"), children: "\u7F16\u8BD1\u8BBE\u7F6E" })
25979
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "ktPage", children: [
25980
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("header", { className: "ktTop", children: [
25981
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "ktTopLead", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "ktViews", role: "group", "aria-label": "\u77E5\u8BC6\u5904\u7406\u89C6\u56FE", children: [
25982
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Button, { variant: "ghost", "aria-pressed": view === "run", className: "ktView", onClick: () => setView("run"), children: "\u5904\u7406" }),
25983
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Button, { variant: "ghost", "aria-pressed": view === "lineage", className: "ktView", onClick: () => setView("lineage"), children: "\u6587\u6863\u94FE\u8DEF" }),
25984
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Button, { variant: "ghost", "aria-pressed": view === "settings", className: "ktView", onClick: () => setView("settings"), children: "\u7F16\u8BD1\u8BBE\u7F6E" })
25797
25985
  ] }) }),
25798
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "ktTopActions", children: [
25799
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Button, { size: "sm", variant: "ghost", onClick: () => {
25986
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "ktTopActions", children: [
25987
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(Button, { size: "sm", variant: "ghost", onClick: () => {
25800
25988
  void refresh();
25801
25989
  setSettingsKey((key) => key + 1);
25802
25990
  }, children: [
25803
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(RefreshCw, { size: 13 }),
25991
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(RefreshCw, { size: 13 }),
25804
25992
  "\u5237\u65B0"
25805
25993
  ] }),
25806
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Button, { size: "sm", variant: "outline", onClick: () => {
25994
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(Button, { size: "sm", variant: "outline", onClick: () => {
25807
25995
  void openAppPath("/convert/").then((ok) => {
25808
25996
  if (!ok) setNotice({ tone: "error", text: "\u65E0\u6CD5\u6253\u5F00\u89E3\u6790\u5185\u6838\u3002" });
25809
25997
  });
25810
25998
  }, children: [
25811
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(FileUp, { size: 13 }),
25999
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(FileUp, { size: 13 }),
25812
26000
  "\u89E3\u6790\u5185\u6838"
25813
26001
  ] })
25814
26002
  ] })
25815
26003
  ] }),
25816
- notice && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: notice.tone === "error" ? "ktError" : "ktNotice", role: notice.tone === "error" ? "alert" : "status", children: [
25817
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { children: notice.text }),
25818
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Button, { size: "icon", variant: "ghost", "aria-label": "\u5173\u95ED\u63D0\u793A", onClick: () => setNotice(null), children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(X, { size: 13 }) })
26004
+ notice && /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: notice.tone === "error" ? "ktError" : "ktNotice", role: notice.tone === "error" ? "alert" : "status", children: [
26005
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { children: notice.text }),
26006
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Button, { size: "icon", variant: "ghost", "aria-label": "\u5173\u95ED\u63D0\u793A", onClick: () => setNotice(null), children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(X, { size: 13 }) })
25819
26007
  ] }),
25820
- view === "settings" ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(CompileSettingsView, { kb, onNotice: (tone2, text) => setNotice({ tone: tone2, text }) }, settingsKey) : /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_jsx_runtime49.Fragment, { children: [
25821
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "ktRailHeading", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("strong", { children: "\u5904\u7406\u9636\u6BB5" }) }),
25822
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("nav", { "aria-label": "\u77E5\u8BC6\u5904\u7406\u9636\u6BB5", className: cn(styles.kbSteps, "ktPipelineSteps"), children: PIPELINE_STAGE_ORDER.map((id, index2) => {
26008
+ view === "lineage" ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(DocumentLineageView, { kb }) : view === "settings" ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(CompileSettingsView, { kb, onNotice: (tone2, text) => setNotice({ tone: tone2, text }) }, settingsKey) : /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_jsx_runtime50.Fragment, { children: [
26009
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "ktRailHeading", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("strong", { children: "\u5904\u7406\u9636\u6BB5" }) }),
26010
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("nav", { "aria-label": "\u77E5\u8BC6\u5904\u7406\u9636\u6BB5", className: cn(styles.kbSteps, "ktPipelineSteps"), children: PIPELINE_STAGE_ORDER.map((id, index2) => {
25823
26011
  const value = heads.find((row) => row.stage === id);
25824
26012
  const Icon2 = STAGE_META[id].icon;
25825
26013
  const percentage = value?.total ? value.done / value.total * 100 : value?.state === "succeeded" ? 100 : 0;
25826
- return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_react17.Fragment, { children: [
25827
- index2 > 0 && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: styles.kbStepArrow, "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(ArrowRight, { size: 16 }) }),
25828
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: styles.kbStepGroup, children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("button", { type: "button", className: cn(styles.kbStep, "ktPipelineStep", stage === id && styles.kbStepOn), "data-running": value && active(value) || void 0, "aria-current": stage === id ? "step" : void 0, onClick: () => chooseStage(id), children: [
25829
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("span", { className: styles.kbStepTop, children: [
25830
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Icon2, { size: 13, "aria-hidden": "true" }),
25831
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("b", { children: PIPELINE_STAGE_LABEL[id] })
26014
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_react18.Fragment, { children: [
26015
+ index2 > 0 && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: styles.kbStepArrow, "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ArrowRight, { size: 16 }) }),
26016
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: styles.kbStepGroup, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("button", { type: "button", className: cn(styles.kbStep, "ktPipelineStep", stage === id && styles.kbStepOn), "data-running": value && active(value) || void 0, "aria-current": stage === id ? "step" : void 0, onClick: () => chooseStage(id), children: [
26017
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("span", { className: styles.kbStepTop, children: [
26018
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Icon2, { size: 13, "aria-hidden": "true" }),
26019
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("b", { children: PIPELINE_STAGE_LABEL[id] })
25832
26020
  ] }),
25833
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("span", { className: styles.kbStepFacts, children: [
25834
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("em", { className: styles.kbStepVerb, children: STAGE_META[id].verb }),
25835
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: styles.kbStepValue, children: value ? `v${value.version} \xB7 ${value.done}/${value.total}` : "\u5C1A\u672A\u8FD0\u884C" }),
25836
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: styles.kbStepNote, children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Badge, { tone: value ? tone(value) : "neutral", children: value ? label(value) : "\u5F85\u5F00\u59CB" }) })
26021
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("span", { className: styles.kbStepFacts, children: [
26022
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("em", { className: styles.kbStepVerb, children: STAGE_META[id].verb }),
26023
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: styles.kbStepValue, children: value ? `v${value.version} \xB7 ${value.done}/${value.total}` : "\u5C1A\u672A\u8FD0\u884C" }),
26024
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: styles.kbStepNote, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Badge, { tone: value ? tone(value) : "neutral", children: value ? label(value) : "\u5F85\u5F00\u59CB" }) })
25837
26025
  ] }),
25838
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Progress3, { className: "ktPipelineProgress", value: percentage, "aria-label": `${PIPELINE_STAGE_LABEL[id]}\u8FDB\u5EA6` })
26026
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Progress3, { className: "ktPipelineProgress", value: percentage, "aria-label": `${PIPELINE_STAGE_LABEL[id]}\u8FDB\u5EA6` })
25839
26027
  ] }) })
25840
26028
  ] }, id);
25841
26029
  }) }),
25842
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("section", { className: "knScope knStagePanel", "aria-label": `${PIPELINE_STAGE_LABEL[stage]}\u8FD0\u884C\u8BBE\u7F6E`, children: [
25843
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("header", { className: "ktStageHead knStagePanelHead", children: [
25844
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "ktStageIntro", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("h2", { children: PIPELINE_STAGE_LABEL[stage] }) }),
25845
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "ktStageActions", children: [
25846
- head && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Badge, { tone: tone(head), children: [
26030
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("section", { className: "knScope knStagePanel", "aria-label": `${PIPELINE_STAGE_LABEL[stage]}\u8FD0\u884C\u8BBE\u7F6E`, children: [
26031
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("header", { className: "ktStageHead knStagePanelHead", children: [
26032
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "ktStageIntro", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("h2", { children: PIPELINE_STAGE_LABEL[stage] }) }),
26033
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "ktStageActions", children: [
26034
+ head && /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(Badge, { tone: tone(head), children: [
25847
26035
  label(head),
25848
26036
  " \xB7 v",
25849
26037
  head.version
25850
26038
  ] }),
25851
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Button, { size: "sm", disabled: busy || !status || !status.sources.length, onClick: () => {
26039
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Button, { size: "sm", disabled: busy || !status || !status.sources.length, onClick: () => {
25852
26040
  void start(stage, true);
25853
26041
  }, children: "\u8FD0\u884C\u65B0\u7248\u672C" })
25854
26042
  ] })
25855
26043
  ] }),
25856
- head?.stale && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { className: "ktHint ktHintWarn", role: "status", children: "\u4E0A\u6E38\u5DF2\u66F4\u65B0\u3002\u6B64\u8282\u70B9\u53CA\u540E\u7EED\u8282\u70B9\u9700\u8981\u91CD\u8DD1\uFF0C\u5386\u53F2\u7248\u672C\u7EE7\u7EED\u4FDD\u7559\u3002" }),
25857
- stage !== "build" && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "knScopeSection", children: [
25858
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "knScopeSectionHead", children: [
25859
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("strong", { children: "\u5904\u7406\u6587\u6863" }),
25860
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { children: sourceIds.length ? `\u5DF2\u9009 ${sourceIds.length} \u4EFD` : "\u5168\u90E8\u6765\u6E90" }),
25861
- sourceIds.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Button, { variant: "ghost", size: "sm", onClick: () => setSourceIds([]), children: "\u6E05\u9664\u9009\u62E9" })
26044
+ head?.stale && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { className: "ktHint ktHintWarn", role: "status", children: "\u4E0A\u6E38\u5DF2\u66F4\u65B0\u3002\u6B64\u8282\u70B9\u53CA\u540E\u7EED\u8282\u70B9\u9700\u8981\u91CD\u8DD1\uFF0C\u5386\u53F2\u7248\u672C\u7EE7\u7EED\u4FDD\u7559\u3002" }),
26045
+ stage !== "build" && /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "knScopeSection", children: [
26046
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "knScopeSectionHead", children: [
26047
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("strong", { children: INPUT_TITLE[stage] }),
26048
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { children: inputRows.filter((row) => row.needs).length > 0 ? `${inputRows.filter((row) => row.needs).length} \u9879\u9700\u8981\u5904\u7406` : "\u65E0\u9700\u5904\u7406" }),
26049
+ sourceIds.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Button, { variant: "ghost", size: "sm", onClick: () => setSourceIds([]), children: "\u53D6\u6D88\u5B9A\u4F4D\u8303\u56F4" })
25862
26050
  ] }),
25863
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "knScopeItems knScopeSources", role: "group", "aria-label": "\u8FD0\u884C\u6587\u6863\u8303\u56F4", children: status?.sources.map((source) => /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Button, { variant: "outline", size: "sm", className: "knScopeItem", "aria-pressed": sourceIds.includes(source.id), onClick: () => toggleSource(source.id), children: [
25864
- sourceIds.includes(source.id) && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Check, { size: 12 }),
25865
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { children: source.title }),
25866
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("small", { children: [
25867
- "v",
25868
- source.version
25869
- ] })
25870
- ] }, source.id)) })
25871
- ] }),
25872
- stage === "materialize" && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "knScopeSection", children: [
25873
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "knScopeSectionHead", children: [
25874
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("strong", { children: "WikiCard \u5206\u7EC4" }),
25875
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { children: groupKeys.length ? `\u5DF2\u9009 ${groupKeys.length} \u4E2A` : "\u5168\u90E8\u7B26\u5408\u6587\u6863\u8303\u56F4\u7684\u5206\u7EC4" }),
25876
- groupKeys.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Button, { variant: "ghost", size: "sm", onClick: () => setGroupKeys([]), children: "\u6E05\u9664\u9009\u62E9" })
25877
- ] }),
25878
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "knScopeItems knScopeSources", role: "group", "aria-label": "\u7269\u5316\u5206\u7EC4\u8303\u56F4", children: status?.groups.map((group) => /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Button, { variant: "outline", size: "sm", className: "knScopeItem", "aria-pressed": groupKeys.includes(group.key), disabled: group.state === "blocked", onClick: () => setGroupKeys((keys) => keys.includes(group.key) ? keys.filter((key) => key !== group.key) : [...keys, group.key]), children: [
25879
- groupKeys.includes(group.key) && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Check, { size: 12 }),
25880
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { children: group.title }),
25881
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("small", { children: group.state === "blocked" ? "\u5F85\u5F52\u4E00" : `${group.knowledgeCount} \u6761\u77E5\u8BC6` })
25882
- ] }, group.key)) })
26051
+ inputRows.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { className: "ktHint", children: INPUT_EMPTY[stage] }) : /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("ul", { className: "knScopeItems knScopeSources", "aria-label": INPUT_TITLE[stage], children: inputRows.map((row) => /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("li", { className: "knScopeItem", children: [
26052
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { children: row.title }),
26053
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("small", { children: row.meta }),
26054
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Badge, { tone: row.needs ? "warning" : row.blocked ? "neutral" : "success", children: row.needs ? "\u9700\u8981\u5904\u7406" : row.blocked ? "\u5F85\u5F52\u4E00" : "\u5DF2\u5B8C\u6210" })
26055
+ ] }, row.id)) })
25883
26056
  ] })
25884
26057
  ] }),
25885
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("section", { className: "knVersionOverview", "aria-label": `${PIPELINE_STAGE_LABEL[stage]}\u8282\u70B9\u7248\u672C`, children: [
25886
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("h2", { children: [
25887
- PIPELINE_STAGE_LABEL[stage],
25888
- "\u8282\u70B9\u7248\u672C"
25889
- ] }),
25890
- loading && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { className: "ktEmpty", role: "status", children: "\u6B63\u5728\u8BFB\u53D6\u8282\u70B9\u7248\u672C\u2026" }),
25891
- !loading && !head && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { className: "ktHint", children: "\u6682\u65E0\u8282\u70B9\u7248\u672C\u3002" }),
25892
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "knVersionOverviewList", children: head && HeadIcon && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("article", { className: "knVersionOverviewRow", "data-current": true, children: [
25893
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Button, { variant: "ghost", size: "sm", className: "knVersionOverviewNode", "aria-current": "true", onClick: () => {
25894
- chooseStage(head.stage);
25895
- setSelectedId(head.id);
25896
- }, children: [
25897
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(HeadIcon, { size: 14, "aria-hidden": "true" }),
25898
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("span", { children: [
25899
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("strong", { children: PIPELINE_STAGE_LABEL[head.stage] }),
25900
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("small", { children: [
25901
- "v",
25902
- head.version,
25903
- " \xB7 ",
25904
- head.sources.length,
25905
- " \u4EFD\u6587\u6863"
25906
- ] })
25907
- ] })
25908
- ] }),
25909
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "knVersionOverviewStatus", children: [
25910
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Badge, { tone: tone(head), children: label(head) }),
25911
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("small", { children: [
25912
- head.done,
25913
- "/",
25914
- head.total
25915
- ] })
25916
- ] }),
25917
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { className: "knVersionOverviewSummary", children: head.summary || "\u2014" }),
25918
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "knVersionOverviewActions", children: controls(head) })
25919
- ] }, head.id) })
25920
- ] }),
25921
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "knVersionLayout", children: [
25922
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("aside", { className: "knVersionList", "aria-label": "\u8282\u70B9\u7248\u672C\u4E0E\u6587\u6863", children: [
25923
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("h3", { children: [
25924
- PIPELINE_STAGE_LABEL[stage],
25925
- " \xB7 \u7248\u672C"
25926
- ] }),
25927
- versions.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { className: "ktEmpty", children: "\u6682\u65E0\u7248\u672C\u3002" }),
25928
- versions.map((value) => /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("section", { className: "knVersion", "data-selected": selected?.id === value.id || void 0, children: [
25929
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Button, { className: "knVersionButton", variant: "ghost", onClick: () => {
25930
- setSelectedId(value.id);
26058
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "knVersionLayout", children: [
26059
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("aside", { className: "knVersionList", children: [
26060
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("h3", { children: "\u7248\u672C" }),
26061
+ versions.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { className: "ktHint", children: "\u8FD8\u6CA1\u6709\u8FD0\u884C\u8BB0\u5F55\u3002" }) : versions.map((item) => /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "knVersion", "data-selected": selected?.id === item.id || void 0, children: [
26062
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(Button, { variant: "ghost", size: "sm", className: "knVersionButton", onClick: () => {
26063
+ setSelectedId(item.id);
25931
26064
  setSelectedDoc("");
25932
- }, "aria-pressed": selected?.id === value.id, children: [
25933
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("strong", { children: [
26065
+ }, children: [
26066
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("span", { children: [
25934
26067
  "v",
25935
- value.version
26068
+ item.version,
26069
+ " \xB7 ",
26070
+ label(item)
25936
26071
  ] }),
25937
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Badge, { tone: tone(value), children: label(value) }),
25938
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("small", { children: [
25939
- value.sources.length,
25940
- " \u4EFD\u6587\u6863"
25941
- ] })
26072
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("small", { children: formatDateTime(item.createdAt) })
25942
26073
  ] }),
25943
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { className: "ktHint", children: formatDateTime(value.createdAt) }),
25944
- selected?.id === value.id && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "knVersionDocs", children: [
25945
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Button, { variant: "ghost", size: "sm", "aria-pressed": !selectedDoc, onClick: () => {
25946
- setSelectedDoc("");
25947
- setLogAfter(0);
25948
- setEvents([]);
25949
- }, children: "\u6B64\u7248\u672C\u5168\u90E8\u65E5\u5FD7" }),
25950
- value.sources.map((source) => /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Button, { variant: "ghost", size: "sm", className: "knVersionDoc", "aria-pressed": selectedDoc === source.id, onClick: () => {
25951
- setSelectedDoc(source.id);
25952
- setCallPage(0);
25953
- setLogAfter(0);
25954
- setEvents([]);
25955
- }, children: [
25956
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(FileText, { size: 12 }),
25957
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { children: source.title }),
25958
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("small", { children: [
25959
- source.version ? `\u539F\u6587 v${source.version}` : "\u539F\u6587\u7248\u672C\u672A\u8BB0\u5F55",
25960
- value.items[source.id]?.state === "reused" ? " \xB7 \u590D\u7528" : value.items[source.id]?.state === "failed" ? " \xB7 \u5931\u8D25" : ""
25961
- ] })
25962
- ] }, source.id)),
25963
- !value.sources.length && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { className: "ktHint", children: value.startedAt ? "\u65E0\u6765\u6E90\u6587\u6863\u3002" : "\u5F00\u59CB\u6267\u884C\u65F6\u8BB0\u5F55\u6587\u6863\u5FEB\u7167\u3002" })
25964
- ] })
25965
- ] }, value.id)),
25966
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "knPager", children: [
25967
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Button, { variant: "ghost", size: "sm", disabled: versionPage === 0, onClick: () => {
26074
+ (item.sources ?? []).length > 0 && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "knVersionDocs", children: item.sources.map((source) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Button, { variant: "ghost", size: "sm", className: "knVersionDoc", "aria-pressed": selectedDoc === source.id, onClick: () => setSelectedDoc((current) => current === source.id ? "" : source.id), children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { children: source.title }) }, source.id)) })
26075
+ ] }, item.id)),
26076
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "knPager", children: [
26077
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Button, { variant: "ghost", size: "sm", disabled: versionPage === 0, onClick: () => {
25968
26078
  setVersionPage((page) => page - 1);
25969
26079
  setSelectedId("");
25970
26080
  }, children: "\u4E0A\u4E00\u9875" }),
25971
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { children: versionPage + 1 }),
25972
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Button, { variant: "ghost", size: "sm", disabled: versions.length < 20, onClick: () => {
26081
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { children: versionPage + 1 }),
26082
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Button, { variant: "ghost", size: "sm", disabled: versions.length < 20, onClick: () => {
25973
26083
  setVersionPage((page) => page + 1);
25974
26084
  setSelectedId("");
25975
26085
  }, children: "\u4E0B\u4E00\u9875" })
25976
26086
  ] })
25977
26087
  ] }),
25978
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("section", { className: "knVersionDetail", "aria-label": "\u7248\u672C\u6587\u6863\u65E5\u5FD7", children: !selected ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { className: "ktEmpty", children: "\u9009\u62E9\u7248\u672C\u67E5\u770B\u8BE6\u60C5\u3002" }) : /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_jsx_runtime49.Fragment, { children: [
25979
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("header", { className: "ktStageHead", children: [
25980
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "ktStageIntro", children: [
25981
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("h2", { children: selectedDoc ? selected.sources.find((source) => source.id === selectedDoc)?.title : `${PIPELINE_STAGE_LABEL[stage]} \xB7 v${selected.version}` }),
25982
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { children: selected.summary }),
25983
- selected.legacy && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { children: "\u5386\u53F2\u8BB0\u5F55\uFF1A\u539F\u59CB\u6587\u6863\u7248\u672C\u53CA\u8F93\u5165\u4F9D\u8D56\u672A\u5B8C\u6574\u8BB0\u5F55\u3002\u5DF2\u6709\u8F68\u8FF9\u7EE7\u7EED\u4FDD\u7559\uFF1B\u91CD\u8DD1\u540E\u8BB0\u5F55\u5B8C\u6574\u4FE1\u606F\u3002" })
26088
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("section", { className: "knVersionDetail", "aria-label": "\u7248\u672C\u6587\u6863\u65E5\u5FD7", children: !selected ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { className: "ktEmpty", children: "\u9009\u62E9\u7248\u672C\u67E5\u770B\u8BE6\u60C5\u3002" }) : /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_jsx_runtime50.Fragment, { children: [
26089
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("header", { className: "ktStageHead", children: [
26090
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "ktStageIntro", children: [
26091
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("h2", { children: selectedDoc ? selected.sources.find((source) => source.id === selectedDoc)?.title : `${PIPELINE_STAGE_LABEL[stage]} \xB7 v${selected.version}` }),
26092
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { children: selected.summary }),
26093
+ selected.legacy && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { children: "\u5386\u53F2\u8BB0\u5F55\uFF1A\u539F\u59CB\u6587\u6863\u7248\u672C\u53CA\u8F93\u5165\u4F9D\u8D56\u672A\u5B8C\u6574\u8BB0\u5F55\u3002\u5DF2\u6709\u8F68\u8FF9\u7EE7\u7EED\u4FDD\u7559\uFF1B\u91CD\u8DD1\u540E\u8BB0\u5F55\u5B8C\u6574\u4FE1\u606F\u3002" })
25984
26094
  ] }),
25985
26095
  controls(selected)
25986
26096
  ] }),
25987
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("p", { className: "ktHint", children: [
26097
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("p", { className: "ktHint", children: [
25988
26098
  formatDateTime(selected.startedAt ?? selected.createdAt),
25989
26099
  selected.finishedAt ? ` \u81F3 ${formatDateTime(selected.finishedAt)}` : ""
25990
26100
  ] }),
25991
- Object.entries(selected.dependencies).length > 0 && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("p", { className: "ktHint", children: [
26101
+ Object.entries(selected.dependencies).length > 0 && /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("p", { className: "ktHint", children: [
25992
26102
  "\u8F93\u5165\u7248\u672C\uFF1A",
25993
26103
  Object.entries(selected.dependencies).map(([key, id]) => {
25994
26104
  const version = selected.inputVersions?.[key];
25995
26105
  return `${PIPELINE_STAGE_LABEL[key]} ${version ? `v${version}` : "\u5386\u53F2\u7248\u672C"}`;
25996
26106
  }).join(" \xB7 ")
25997
26107
  ] }),
25998
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("section", { className: "knLogSection", "aria-label": LOG_LABEL[stage], children: [
25999
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("h3", { children: LOG_LABEL[stage] }),
26000
- callsError && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("p", { className: "ktError", role: "alert", children: [
26108
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("section", { className: "knLogSection", "aria-label": LOG_LABEL[stage], children: [
26109
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("h3", { children: LOG_LABEL[stage] }),
26110
+ callsError && /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("p", { className: "ktError", role: "alert", children: [
26001
26111
  "\u6A21\u578B\u8BB0\u5F55\u8BFB\u53D6\u5931\u8D25\uFF1A",
26002
26112
  callsError
26003
26113
  ] }),
26004
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("ol", { className: "knLogEvents", children: ownEvents.map((event) => /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("li", { children: [
26005
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("time", { children: formatDateTime(event.at) }),
26006
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { children: event.text })
26114
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("ol", { className: "knLogEvents", children: ownEvents.map((event) => /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("li", { children: [
26115
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("time", { children: formatDateTime(event.at) }),
26116
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { children: event.text })
26007
26117
  ] }, event.seq)) }),
26008
- logMore && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Button, { variant: "outline", size: "sm", onClick: () => setLogAfter(logNext), children: "\u52A0\u8F7D\u66F4\u591A\u9636\u6BB5\u65E5\u5FD7" }),
26009
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("h3", { children: "\u539F\u59CB\u6A21\u578B\u8F93\u5165\u4E0E\u8F93\u51FA" }),
26010
- callsLoading && !calls.length && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { className: "ktHint", role: "status", children: "\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u8BF7\u6C42\u8BB0\u5F55\u2026" }),
26011
- !callsLoading && !callsError && ownCalls.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { className: "ktHint", children: stage === "build" ? "\u7D22\u5F15\u6784\u5EFA\u4E0D\u8C03\u7528\u6A21\u578B\u3002" : selected.reused ? "\u590D\u7528\u7ED3\u679C\uFF0C\u65E0\u65B0\u6A21\u578B\u8BF7\u6C42\u3002" : active(selected) ? "\u7B49\u5F85\u6A21\u578B\u8BF7\u6C42\u3002" : selected.legacy ? "\u5386\u53F2\u7248\u672C\u672A\u8BB0\u5F55\u6A21\u578B\u8BF7\u6C42\u3002" : "\u65E0\u6A21\u578B\u8BF7\u6C42\u3002" }),
26012
- ownCalls.map((call, index2) => /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("article", { className: "knModelCall", children: [
26013
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "knModelCallHead", children: [
26014
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("strong", { children: [
26118
+ logMore && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Button, { variant: "outline", size: "sm", onClick: () => setLogAfter(logNext), children: "\u52A0\u8F7D\u66F4\u591A\u9636\u6BB5\u65E5\u5FD7" }),
26119
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("h3", { children: "\u539F\u59CB\u6A21\u578B\u8F93\u5165\u4E0E\u8F93\u51FA" }),
26120
+ callsLoading && !calls.length && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { className: "ktHint", role: "status", children: "\u6B63\u5728\u8BFB\u53D6\u6A21\u578B\u8BF7\u6C42\u8BB0\u5F55\u2026" }),
26121
+ !callsLoading && !callsError && ownCalls.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { className: "ktHint", children: stage === "build" ? "\u7D22\u5F15\u6784\u5EFA\u4E0D\u8C03\u7528\u6A21\u578B\u3002" : selected.reused ? "\u590D\u7528\u7ED3\u679C\uFF0C\u65E0\u65B0\u6A21\u578B\u8BF7\u6C42\u3002" : active(selected) ? "\u7B49\u5F85\u6A21\u578B\u8BF7\u6C42\u3002" : selected.legacy ? "\u5386\u53F2\u7248\u672C\u672A\u8BB0\u5F55\u6A21\u578B\u8BF7\u6C42\u3002" : "\u65E0\u6A21\u578B\u8BF7\u6C42\u3002" }),
26122
+ ownCalls.map((call, index2) => /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("article", { className: "knModelCall", children: [
26123
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "knModelCallHead", children: [
26124
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("strong", { children: [
26015
26125
  "\u8BF7\u6C42 ",
26016
26126
  callPage * 10 + index2 + 1,
26017
26127
  call.objectTitle ? ` \xB7 ${call.objectTitle}` : ""
26018
26128
  ] }),
26019
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Badge, { tone: call.state === "failed" ? "warning" : call.state === "running" ? "blue" : "success", children: call.state === "running" ? "\u8BF7\u6C42\u4E2D" : call.state === "failed" ? "\u5931\u8D25" : "\u5DF2\u8FD4\u56DE" }),
26020
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("time", { children: formatDateTime(call.at) })
26129
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Badge, { tone: call.state === "failed" ? "warning" : call.state === "running" ? "blue" : "success", children: call.state === "running" ? "\u8BF7\u6C42\u4E2D" : call.state === "failed" ? "\u5931\u8D25" : "\u5DF2\u8FD4\u56DE" }),
26130
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("time", { children: formatDateTime(call.at) })
26021
26131
  ] }),
26022
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(RequestResponse, { request: call.request, response: call.response, error: call.error, pending: call.state === "running" })
26132
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(RequestResponse, { request: call.request, response: call.response, error: call.error, pending: call.state === "running" })
26023
26133
  ] }, call.id)),
26024
- callTotal > 10 && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "knPager", children: [
26025
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Button, { size: "sm", variant: "outline", disabled: callPage === 0, onClick: () => setCallPage((page) => page - 1), children: "\u4E0A\u4E00\u9875\u8BF7\u6C42" }),
26026
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("span", { children: [
26134
+ callTotal > 10 && /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "knPager", children: [
26135
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Button, { size: "sm", variant: "outline", disabled: callPage === 0, onClick: () => setCallPage((page) => page - 1), children: "\u4E0A\u4E00\u9875\u8BF7\u6C42" }),
26136
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("span", { children: [
26027
26137
  callPage + 1,
26028
26138
  " / ",
26029
26139
  Math.ceil(callTotal / 10)
26030
26140
  ] }),
26031
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Button, { size: "sm", variant: "outline", disabled: (callPage + 1) * 10 >= callTotal, onClick: () => setCallPage((page) => page + 1), children: "\u4E0B\u4E00\u9875\u8BF7\u6C42" })
26141
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Button, { size: "sm", variant: "outline", disabled: (callPage + 1) * 10 >= callTotal, onClick: () => setCallPage((page) => page + 1), children: "\u4E0B\u4E00\u9875\u8BF7\u6C42" })
26032
26142
  ] })
26033
26143
  ] })
26034
26144
  ] }) })
@@ -26045,7 +26155,7 @@ ${report.prompt.user}`;
26045
26155
  };
26046
26156
 
26047
26157
  // src/client/pages.tsx
26048
- var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1);
26158
+ var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1);
26049
26159
  var PREFIX = "/knowledge/pages/";
26050
26160
  function routeOf(location) {
26051
26161
  const path = location.pathname.startsWith(PREFIX) ? location.pathname.slice(PREFIX.length) : "";
@@ -26077,22 +26187,22 @@ ${report.prompt.user}`;
26077
26187
  return payload.data;
26078
26188
  }
26079
26189
  function PageShell({ title, meta, column, children }) {
26080
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_jsx_runtime50.Fragment, { children: [
26081
- /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("header", { className: "page-bar", children: [
26082
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("h1", { children: title }),
26083
- meta !== void 0 && meta !== "" && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "page-barMeta", children: meta })
26190
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_jsx_runtime51.Fragment, { children: [
26191
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("header", { className: "page-bar", children: [
26192
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("h1", { children: title }),
26193
+ meta !== void 0 && meta !== "" && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "page-barMeta", children: meta })
26084
26194
  ] }),
26085
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("main", { className: "page-main", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: `page-column page-column-${column}`, children }) })
26195
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("main", { className: "page-main", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: `page-column page-column-${column}`, children }) })
26086
26196
  ] });
26087
26197
  }
26088
26198
  function StatePage({ title, children }) {
26089
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(PageShell, { title, column: "help", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "page-state", children }) });
26199
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(PageShell, { title, column: "help", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "page-state", children }) });
26090
26200
  }
26091
26201
  function TrialPage({ kb }) {
26092
- const [documents, setDocuments] = (0, import_react18.useState)(null);
26093
- const [kbName, setKbName] = (0, import_react18.useState)("");
26094
- const [failure, setFailure] = (0, import_react18.useState)("");
26095
- (0, import_react18.useEffect)(() => {
26202
+ const [documents, setDocuments] = (0, import_react19.useState)(null);
26203
+ const [kbName, setKbName] = (0, import_react19.useState)("");
26204
+ const [failure, setFailure] = (0, import_react19.useState)("");
26205
+ (0, import_react19.useEffect)(() => {
26096
26206
  let cancelled = false;
26097
26207
  void (async () => {
26098
26208
  try {
@@ -26114,29 +26224,29 @@ ${report.prompt.user}`;
26114
26224
  };
26115
26225
  }, [kb]);
26116
26226
  if (kb === "") {
26117
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(StatePage, { title: "\u62BD\u53D6\u8BD5\u8DD1", children: [
26118
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("h2", { children: "\u8FD9\u4E2A\u5730\u5740\u6CA1\u5E26\u77E5\u8BC6\u5E93" }),
26119
- /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("p", { children: [
26227
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(StatePage, { title: "\u62BD\u53D6\u8BD5\u8DD1", children: [
26228
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("h2", { children: "\u8FD9\u4E2A\u5730\u5740\u6CA1\u5E26\u77E5\u8BC6\u5E93" }),
26229
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("p", { children: [
26120
26230
  "\u8BD5\u8DD1\u7684\u8F68\u8FF9\u8981\u843D\u5728\u8FD9\u4E2A\u5E93\u7684\u8BB0\u5FC6\u6BB5\u91CC\uFF0C\u6240\u4EE5\u5730\u5740\u5FC5\u987B\u5E26\u5E93 id\uFF1A",
26121
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("code", { children: "/knowledge/pages/trial?kb=<\u77E5\u8BC6\u5E93 id>" }),
26231
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("code", { children: "/knowledge/pages/trial?kb=<\u77E5\u8BC6\u5E93 id>" }),
26122
26232
  "\u3002"
26123
26233
  ] }),
26124
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { children: "\u5F53\u524D\u62BD\u53D6\u7531\u5BFC\u5165\u6216\u91CD\u65B0\u7F16\u8BD1\u81EA\u52A8\u89E6\u53D1\uFF0C\u8FDB\u5EA6\u8BF7\u5728 SourceRaw \u8BE6\u60C5\u7684\u300C\u62BD\u53D6\u8F68\u8FF9\u300D\u91CC\u67E5\u770B\u3002" })
26234
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("p", { children: "\u5F53\u524D\u62BD\u53D6\u7531\u5BFC\u5165\u6216\u91CD\u65B0\u7F16\u8BD1\u81EA\u52A8\u89E6\u53D1\uFF0C\u8FDB\u5EA6\u8BF7\u5728 SourceRaw \u8BE6\u60C5\u7684\u300C\u62BD\u53D6\u8F68\u8FF9\u300D\u91CC\u67E5\u770B\u3002" })
26125
26235
  ] });
26126
26236
  }
26127
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(PageShell, { title: "\u62BD\u53D6\u8BD5\u8DD1", meta: `${kbName !== "" ? kbName : kb} \xB7 \u4E0D\u8FDB\u53EC\u56DE\uFF0C\u8F68\u8FF9\u4E0E\u5019\u9009\u843D\u5E93`, column: "trial", children: [
26128
- failure !== "" && /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("p", { className: "page-notice", role: "alert", children: [
26237
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(PageShell, { title: "\u62BD\u53D6\u8BD5\u8DD1", meta: `${kbName !== "" ? kbName : kb} \xB7 \u4E0D\u8FDB\u53EC\u56DE\uFF0C\u8F68\u8FF9\u4E0E\u5019\u9009\u843D\u5E93`, column: "trial", children: [
26238
+ failure !== "" && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("p", { className: "page-notice", role: "alert", children: [
26129
26239
  "\u8BFB\u4E0D\u5230\u8FD9\u4E2A\u5E93\u7684\u6587\u6863\u5217\u8868\uFF08",
26130
26240
  failure,
26131
26241
  "\uFF09\u2014\u2014 \u8FD8\u53EF\u4EE5\u5F53\u573A\u8BFB\u4E00\u4EFD\u672C\u5730 .md \u6765\u8DD1\u3002"
26132
26242
  ] }),
26133
- documents === null ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { className: "page-loading", role: "status", children: "\u6B63\u5728\u8BFB\u53D6\u8FD9\u4E2A\u5E93\u7684\u6587\u6863\u2026" }) : /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(WikiTrialRun, { kb, documents })
26243
+ documents === null ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("p", { className: "page-loading", role: "status", children: "\u6B63\u5728\u8BFB\u53D6\u8FD9\u4E2A\u5E93\u7684\u6587\u6863\u2026" }) : /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(WikiTrialRun, { kb, documents })
26134
26244
  ] });
26135
26245
  }
26136
26246
  function RunPage({ kb, runId }) {
26137
- const [run, setRun] = (0, import_react18.useState)(null);
26138
- const [failure, setFailure] = (0, import_react18.useState)("");
26139
- (0, import_react18.useEffect)(() => {
26247
+ const [run, setRun] = (0, import_react19.useState)(null);
26248
+ const [failure, setFailure] = (0, import_react19.useState)("");
26249
+ (0, import_react19.useEffect)(() => {
26140
26250
  if (kb === "" || runId === "") return void 0;
26141
26251
  let cancelled = false;
26142
26252
  void requestExtractionRun({ kb, id: runId }).then((record) => {
@@ -26149,31 +26259,31 @@ ${report.prompt.user}`;
26149
26259
  };
26150
26260
  }, [kb, runId]);
26151
26261
  if (kb === "" || runId === "") {
26152
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(StatePage, { title: "\u62BD\u53D6\u8F68\u8FF9", children: [
26153
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("h2", { children: "\u8FD9\u4E2A\u5730\u5740\u6CA1\u5E26\u9F50\u53C2\u6570" }),
26154
- /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("p", { children: [
26262
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(StatePage, { title: "\u62BD\u53D6\u8F68\u8FF9", children: [
26263
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("h2", { children: "\u8FD9\u4E2A\u5730\u5740\u6CA1\u5E26\u9F50\u53C2\u6570" }),
26264
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("p", { children: [
26155
26265
  "\u8F68\u8FF9\u6309\u300C\u54EA\u4E2A\u5E93\u7684\u54EA\u4E00\u6B21\u300D\u53D6\uFF0C\u6240\u4EE5\u5730\u5740\u8981\u5E26\u5E93 id \u4E0E\u8F68\u8FF9 id\uFF1A",
26156
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("code", { children: "/knowledge/pages/run?kb=<\u77E5\u8BC6\u5E93 id>&run=<\u8F68\u8FF9 id>" }),
26266
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("code", { children: "/knowledge/pages/run?kb=<\u77E5\u8BC6\u5E93 id>&run=<\u8F68\u8FF9 id>" }),
26157
26267
  "\u3002"
26158
26268
  ] }),
26159
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { children: "\u5B83\u7531 SourceRaw \u8BE6\u60C5\u91CC\u7684\u300C\u62BD\u53D6\u8F68\u8FF9\u300D\u70B9\u51FA\u6765\uFF0C\u4E0D\u9700\u8981\u624B\u5199\u3002" })
26269
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("p", { children: "\u5B83\u7531 SourceRaw \u8BE6\u60C5\u91CC\u7684\u300C\u62BD\u53D6\u8F68\u8FF9\u300D\u70B9\u51FA\u6765\uFF0C\u4E0D\u9700\u8981\u624B\u5199\u3002" })
26160
26270
  ] });
26161
26271
  }
26162
26272
  if (failure !== "") {
26163
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(StatePage, { title: "\u62BD\u53D6\u8F68\u8FF9", children: [
26164
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("h2", { children: "\u8BFB\u4E0D\u5230\u8FD9\u6B21\u8F68\u8FF9" }),
26165
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { children: failure }),
26166
- /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("p", { children: [
26273
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(StatePage, { title: "\u62BD\u53D6\u8F68\u8FF9", children: [
26274
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("h2", { children: "\u8BFB\u4E0D\u5230\u8FD9\u6B21\u8F68\u8FF9" }),
26275
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("p", { children: failure }),
26276
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("p", { children: [
26167
26277
  "\u8F68\u8FF9\u5E93\u53EF\u80FD\u6CA1\u542F\u7528\uFF08\u5B83\u9700\u8981 Node 22.5+ \u7684 ",
26168
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("code", { children: "node:sqlite" }),
26278
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("code", { children: "node:sqlite" }),
26169
26279
  "\uFF09\uFF0C\u6216\u8005\u8FD9\u6761\u7F16\u53F7\u5DF2\u7ECF\u4E0D\u5728\u4E86\u3002"
26170
26280
  ] })
26171
26281
  ] });
26172
26282
  }
26173
26283
  if (run === null) {
26174
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(PageShell, { title: "\u8F68\u8FF9", meta: "\u6B63\u5728\u8BFB\u53D6\u2026", column: "trial", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { className: "page-loading", role: "status", children: "\u6B63\u5728\u8BFB\u53D6\u8FD9\u6B21\u8FD0\u884C\u7684\u8F68\u8FF9\u2026" }) });
26284
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(PageShell, { title: "\u8F68\u8FF9", meta: "\u6B63\u5728\u8BFB\u53D6\u2026", column: "trial", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("p", { className: "page-loading", role: "status", children: "\u6B63\u5728\u8BFB\u53D6\u8FD9\u6B21\u8FD0\u884C\u7684\u8F68\u8FF9\u2026" }) });
26175
26285
  }
26176
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
26286
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
26177
26287
  PageShell,
26178
26288
  {
26179
26289
  title: TRAJECTORY_STAGE_LABEL[run.stage],
@@ -26184,53 +26294,53 @@ ${report.prompt.user}`;
26184
26294
  );
26185
26295
  }
26186
26296
  function trajectoryBody(stage, report) {
26187
- if (stage === "normalize") return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(NormalizeTrajectory, { report });
26188
- if (stage === "materialize") return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(MaterializeTrajectory, { report });
26189
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(TrialReport, { report });
26297
+ if (stage === "normalize") return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(NormalizeTrajectory, { report });
26298
+ if (stage === "materialize") return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(MaterializeTrajectory, { report });
26299
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(TrialReport, { report });
26190
26300
  }
26191
26301
  function App() {
26192
26302
  const route = routeOf(window.location);
26193
- if (route.kind === "trial") return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(TrialPage, { kb: route.kb });
26194
- if (route.kind === "run") return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(RunPage, { kb: route.kb, runId: route.run });
26303
+ if (route.kind === "trial") return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(TrialPage, { kb: route.kb });
26304
+ if (route.kind === "run") return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(RunPage, { kb: route.kb, runId: route.run });
26195
26305
  if (route.kind === "tasks") {
26196
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(PageShell, { title: "\u77E5\u8BC6\u5904\u7406", meta: "\u4ECE\u6765\u6E90\u5230\u68C0\u7D22\u7D22\u5F15\uFF0C\u4E00\u6761\u53EF\u6838\u5BF9\u7684\u6D41\u6C34\u7EBF", column: "tasks", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ExtractionTasksPage, { kb: route.kb }) });
26306
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(PageShell, { title: "\u77E5\u8BC6\u5904\u7406", meta: "\u4ECE\u6765\u6E90\u5230\u68C0\u7D22\u7D22\u5F15\uFF0C\u4E00\u6761\u53EF\u6838\u5BF9\u7684\u6D41\u6C34\u7EBF", column: "tasks", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ExtractionTasksPage, { kb: route.kb }) });
26197
26307
  }
26198
26308
  if (route.kind === "help") {
26199
26309
  if (route.topic === "overview") {
26200
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(PageShell, { title: "TitaAgent \u5B8C\u6574\u67B6\u6784", meta: "\u4ECE\u7406\u89E3\u8BF7\u6C42\u5230\u6301\u7EED\u6539\u8FDB\u7684\u4E09\u5C42\u95ED\u73AF", column: "guide", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(TabGuidePage, { initialNode: route.node }) });
26310
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(PageShell, { title: "TitaAgent \u5B8C\u6574\u67B6\u6784", meta: "\u4ECE\u7406\u89E3\u8BF7\u6C42\u5230\u6301\u7EED\u6539\u8FDB\u7684\u4E09\u5C42\u95ED\u73AF", column: "guide", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(TabGuidePage, { initialNode: route.node }) });
26201
26311
  }
26202
26312
  if (route.topic === "compile") {
26203
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(PageShell, { title: "\u7F16\u8BD1\u548C\u53EC\u56DE\u94FE\u8DEF", meta: "\u4FE1\u606F\u7F16\u8BD1\u4E3A\u77E5\u8BC6\uFF0C\u7136\u540E\u624D\u503C\u5F97\u88AB\u53EC\u56DE\u4F7F\u7528", column: "help", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(WikiFlowPanel, {}) });
26313
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(PageShell, { title: "\u7F16\u8BD1\u548C\u53EC\u56DE\u94FE\u8DEF", meta: "\u4FE1\u606F\u7F16\u8BD1\u4E3A\u77E5\u8BC6\uFF0C\u7136\u540E\u624D\u503C\u5F97\u88AB\u53EC\u56DE\u4F7F\u7528", column: "help", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(WikiFlowPanel, {}) });
26204
26314
  }
26205
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(PageShell, { title: "\u667A\u80FD\u5F52\u56E0\u7684 Event", meta: "\u628A\u4E00\u6B21\u6392\u67E5\u8BB0\u5F55\u6210\u53EF\u56DE\u653E\u3001\u53EF\u8FFD\u6EAF\u7684\u4E8B\u4EF6\u6D41", column: "help", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(AttributionEventGuide, {}) });
26315
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(PageShell, { title: "\u667A\u80FD\u5F52\u56E0\u7684 Event", meta: "\u628A\u4E00\u6B21\u6392\u67E5\u8BB0\u5F55\u6210\u53EF\u56DE\u653E\u3001\u53EF\u8FFD\u6EAF\u7684\u4E8B\u4EF6\u6D41", column: "help", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(AttributionEventGuide, {}) });
26206
26316
  }
26207
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(StatePage, { title: "\u8FD9\u4E2A\u5730\u5740\u4E0D\u662F\u4E00\u4E2A\u6574\u9875", children: [
26208
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("h2", { children: "\u8BA4\u4E0D\u51FA\u8FD9\u4E00\u9875" }),
26209
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { children: "\u6574\u9875\u7684\u5730\u5740\u53EA\u6709\u8FD9\u51E0\u79CD\uFF1A" }),
26210
- /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("p", { children: [
26211
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("code", { children: "/knowledge/pages/trial?kb=<\u77E5\u8BC6\u5E93 id>" }),
26317
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(StatePage, { title: "\u8FD9\u4E2A\u5730\u5740\u4E0D\u662F\u4E00\u4E2A\u6574\u9875", children: [
26318
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("h2", { children: "\u8BA4\u4E0D\u51FA\u8FD9\u4E00\u9875" }),
26319
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("p", { children: "\u6574\u9875\u7684\u5730\u5740\u53EA\u6709\u8FD9\u51E0\u79CD\uFF1A" }),
26320
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("p", { children: [
26321
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("code", { children: "/knowledge/pages/trial?kb=<\u77E5\u8BC6\u5E93 id>" }),
26212
26322
  " \xB7 \u62BD\u53D6\u8BD5\u8DD1",
26213
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("br", {}),
26214
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("code", { children: "/knowledge/pages/run?kb=<\u77E5\u8BC6\u5E93 id>&run=<\u8F68\u8FF9 id>" }),
26323
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("br", {}),
26324
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("code", { children: "/knowledge/pages/run?kb=<\u77E5\u8BC6\u5E93 id>&run=<\u8F68\u8FF9 id>" }),
26215
26325
  " \xB7 \u4E00\u6B21\u62BD\u53D6\u7684\u62A5\u544A",
26216
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("br", {}),
26217
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("code", { children: "/knowledge/pages/tasks?kb=<\u77E5\u8BC6\u5E93 id>" }),
26326
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("br", {}),
26327
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("code", { children: "/knowledge/pages/tasks?kb=<\u77E5\u8BC6\u5E93 id>" }),
26218
26328
  " \xB7 \u77E5\u8BC6\u5904\u7406\u4E0E\u8FD0\u884C\u8BB0\u5F55",
26219
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("br", {}),
26220
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("code", { children: "/knowledge/pages/help/compile" }),
26329
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("br", {}),
26330
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("code", { children: "/knowledge/pages/help/compile" }),
26221
26331
  " \xB7 \u7F16\u8BD1\u548C\u53EC\u56DE\u94FE\u8DEF",
26222
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("br", {}),
26223
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("code", { children: "/knowledge/pages/help/attribution" }),
26332
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("br", {}),
26333
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("code", { children: "/knowledge/pages/help/attribution" }),
26224
26334
  " \xB7 \u667A\u80FD\u5F52\u56E0\u4E8B\u4EF6",
26225
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("br", {}),
26226
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("code", { children: "/knowledge/pages/help/overview?node=knowledge" }),
26335
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("br", {}),
26336
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("code", { children: "/knowledge/pages/help/overview?node=knowledge" }),
26227
26337
  " \xB7 \u4E94\u4E2A Tab \u7684\u65B9\u6848\u8BF4\u660E"
26228
26338
  ] }),
26229
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { children: "\u5B83\u4EEC\u90FD\u7531\u9762\u677F\u4E0A\u7684\u5165\u53E3\u6253\u5F00\uFF0C\u4E0D\u9700\u8981\u624B\u5199\u3002" })
26339
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("p", { children: "\u5B83\u4EEC\u90FD\u7531\u9762\u677F\u4E0A\u7684\u5165\u53E3\u6253\u5F00\uFF0C\u4E0D\u9700\u8981\u624B\u5199\u3002" })
26230
26340
  ] });
26231
26341
  }
26232
26342
  var container = document.getElementById("tita-page-root");
26233
- if (container !== null) (0, import_client.createRoot)(container).render(/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react18.StrictMode, { children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(App, {}) }));
26343
+ if (container !== null) (0, import_client.createRoot)(container).render(/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_react19.StrictMode, { children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(App, {}) }));
26234
26344
  })();
26235
26345
  /*! Bundled license information:
26236
26346
 
@@ -26582,6 +26692,14 @@ lucide-react/dist/esm/icons/pen-tool.js:
26582
26692
  * See the LICENSE file in the root directory of this source tree.
26583
26693
  *)
26584
26694
 
26695
+ lucide-react/dist/esm/icons/quote.js:
26696
+ (**
26697
+ * @license lucide-react v0.468.0 - ISC
26698
+ *
26699
+ * This source code is licensed under the ISC license.
26700
+ * See the LICENSE file in the root directory of this source tree.
26701
+ *)
26702
+
26585
26703
  lucide-react/dist/esm/icons/refresh-cw.js:
26586
26704
  (**
26587
26705
  * @license lucide-react v0.468.0 - ISC