@kanyun-ai-infra/band-cli 0.1.1 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/bundled/examples/aitutor-tool/band/views/release/package.json +1 -1
  2. package/bundled/examples/aitutor-tool/band/views/tool-preview/package.json +1 -1
  3. package/bundled/examples/analysis/band/views/intake/package.json +1 -1
  4. package/bundled/examples/compliance/band/views/compliance/package.json +1 -1
  5. package/bundled/examples/content-review/band/views/checklist/package.json +1 -1
  6. package/bundled/examples/rush-site/band/views/rush-db/package.json +1 -1
  7. package/bundled/examples/rush-site/band/views/rush-deploy/package.json +1 -1
  8. package/bundled/examples/video/band/views/timeline/package.json +1 -1
  9. package/bundled/kernel/fixture.js +1 -1
  10. package/bundled/kernel/index.js +1 -1
  11. package/bundled/official/activity/package.json +4 -4
  12. package/bundled/official/approval/package.json +4 -4
  13. package/bundled/official/artifacts/package.json +4 -4
  14. package/bundled/official/chat/dist/index.js +1 -1
  15. package/bundled/official/chat/package.json +4 -4
  16. package/bundled/official/chunks/chunk-7XYETT7C.js +1 -0
  17. package/bundled/official/comment/dist/index.js +1 -1
  18. package/bundled/official/comment/package.json +4 -4
  19. package/bundled/official/header/package.json +4 -4
  20. package/bundled/official/home/dist/index.js +1 -1
  21. package/bundled/official/home/package.json +4 -4
  22. package/bundled/official/layouts/package.json +4 -4
  23. package/bundled/official/library/dist/index.js +1 -1
  24. package/bundled/official/library/package.json +4 -4
  25. package/bundled/official/members/dist/index.js +1 -1
  26. package/bundled/official/members/package.json +4 -4
  27. package/bundled/official/memory/package.json +4 -4
  28. package/bundled/official/native/package.json +2 -2
  29. package/bundled/official/params-form/package.json +4 -4
  30. package/bundled/official/plugins/package.json +4 -4
  31. package/bundled/official/project/dist/index.js +1 -1
  32. package/bundled/official/project/package.json +4 -4
  33. package/bundled/official/queue/package.json +4 -4
  34. package/bundled/official/settings/dist/index.js +1 -1
  35. package/bundled/official/settings/package.json +4 -4
  36. package/bundled/official/shell/dist/index.js +1 -1
  37. package/bundled/official/shell/package.json +4 -4
  38. package/bundled/official/stages/package.json +4 -4
  39. package/bundled/official/threads/dist/index.js +1 -1
  40. package/bundled/official/threads/package.json +4 -4
  41. package/bundled/official/turn-bar/package.json +4 -4
  42. package/bundled/official/turn-trace/package.json +4 -4
  43. package/bundled/official/version-switch/dist/index.js +1 -1
  44. package/bundled/official/version-switch/package.json +4 -4
  45. package/bundled/official/viewer-entity/package.json +2 -2
  46. package/bundled/official/viewer-external/package.json +2 -2
  47. package/bundled/official/viewer-image/package.json +2 -2
  48. package/bundled/official/viewer-media/package.json +2 -2
  49. package/bundled/official/viewer-storyboard/package.json +2 -2
  50. package/bundled/official/viewer-text/package.json +4 -4
  51. package/bundled/official/viewer-tool/package.json +2 -2
  52. package/bundled/official/viewer-web/package.json +2 -2
  53. package/bundled/official/viewer-web-app/package.json +2 -2
  54. package/bundled/official/workshops/dist/index.js +2 -2
  55. package/bundled/official/workshops/package.json +4 -4
  56. package/bundled/official/workshops/plugin.yaml +2 -2
  57. package/bundled/skills/band-plugin/references/code.md +2 -2
  58. package/bundled/skills/band-plugin/references/manifest.md +2 -2
  59. package/bundled/skills/band-plugin/references/rules.md +1 -0
  60. package/bundled/skills/band-plugin/references/testing-publish.md +1 -1
  61. package/bundled/skills/band-plugin/templates/panel/package.json +1 -1
  62. package/bundled/tokens/components.css +1 -1
  63. package/dev-host/app.tsx +32 -12
  64. package/dev-host/host.css +7 -0
  65. package/dist/bin.js +3 -3
  66. package/dist/build-plugin.d.ts +1 -1
  67. package/dist/build-plugin.js +1 -1
  68. package/dist/{chunk-VTAJX7NN.js → chunk-FGPWXAOA.js} +165 -26
  69. package/dist/{chunk-TQHHHXXU.js → chunk-LGYGWMSY.js} +18 -16
  70. package/dist/{chunk-JWZU3NOD.js → chunk-XPLYTHNX.js} +1 -1
  71. package/dist/{dev-server-SB5FMSVP.js → dev-server-IBR3PKDE.js} +33 -5
  72. package/dist/fixture.d.ts +11 -0
  73. package/dist/index.d.ts +4 -2
  74. package/dist/index.js +3 -3
  75. package/dist/vite.d.ts +1 -1
  76. package/dist/vite.js +2 -2
  77. package/dist/{workshop-repo-Uq6blxyt.d.ts → workshop-repo-DqoVdcGu.d.ts} +9 -9
  78. package/package.json +10 -7
  79. package/src/dev-managers.ts +16 -0
  80. package/src/inspector-default.ts +9 -0
  81. package/bundled/official/chunks/chunk-SB74RUTN.js +0 -1
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@kanyun-ai-infra/band-settings",
3
- "version": "0.11.21",
3
+ "version": "0.12.1",
4
4
  "description": "个人设置、项目设置和工坊设置的页面:模型配置、网络凭据、连接、成员与通知都在这里改",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": "./dist/index.js"
8
8
  },
9
9
  "peerDependencies": {
10
- "@kanyun-ai-infra/band-plugin-sdk": "^1.222.0",
11
- "react": "^18.3.1",
12
- "react-dom": "^18.3.1",
10
+ "@kanyun-ai-infra/band-plugin-sdk": "^2.1.0",
11
+ "react": "^19.0.0",
12
+ "react-dom": "^19.0.0",
13
13
  "@kanyun-ai-infra/band-shell": "*",
14
14
  "@kanyun-ai-infra/band-project": "*"
15
15
  }
@@ -1 +1 @@
1
- import"../../chunks/chunk-JFPQMFKF.js";import{Mount as Mount3,ToastHost,reactMount,useRoute,useSlotEntries as useSlotEntries4,withImeGuard as withImeGuard6}from"@kanyun-ai-infra/band-plugin-react";import{definePlugin}from"@kanyun-ai-infra/band-plugin-sdk";import{useEffect as useEffect6,useMemo as useMemo2,useRef as useRef5,useState as useState6}from"react";import{FEEDBACK_BODY_MAX,feedbackTextLength}from"@kanyun-ai-infra/band-contracts/api";import{ErrorNote,failedBecause,withImeGuard}from"@kanyun-ai-infra/band-plugin-react";import{createContext,useCallback,useContext,useEffect,useId,useRef,useState}from"react";import{Fragment,jsx,jsxs}from"react/jsx-runtime";import{DIALOG_SELECTOR,NARROW_QUERY,blockingDialog,withImeGuard as withImeGuard2}from"@kanyun-ai-infra/band-plugin-sdk";import{createContext as createContext2,useCallback as useCallback2,useContext as useContext2,useEffect as useEffect2,useId as useId2,useLayoutEffect,useMemo,useRef as useRef2,useState as useState2}from"react";import{GUIDE_ANCHORS,artifactTypeDisplayName,roleDisplayName,stageDisplayName}from"@kanyun-ai-infra/band-contracts";import{GUIDE_STEPS}from"@kanyun-ai-infra/band-contracts/api";import{isWorkshopPagePattern}from"@kanyun-ai-infra/band-plugin-sdk";import{Fragment as Fragment2,jsx as jsx2,jsxs as jsxs2}from"react/jsx-runtime";import{isAlerting}from"@kanyun-ai-infra/band-contracts/needs-me";import{shortWhen}from"@kanyun-ai-infra/band-plugin-react";import{isWorkshopPagePattern as isWorkshopPagePattern2}from"@kanyun-ai-infra/band-plugin-sdk";import{SettingsLayout,SettingsLoading}from"@kanyun-ai-infra/band-plugin-react";import{createElement}from"react";import{renderToStaticMarkup}from"react-dom/server";import{BandMark,ErrorNote as ErrorNote2,Glyph,LogoLockup,WorkshopIcon as WorkshopIcon2,useAppData,useSlotEntries as useSlotEntries3,withImeGuard as withImeGuard5}from"@kanyun-ai-infra/band-plugin-react";import{useEffect as useEffect5,useState as useState5}from"react";import{ThreadStatusSchema}from"@kanyun-ai-infra/band-contracts";import{Mount,WorkshopIcon,scrollIntoPanel,statusText,useSettledText,useSlotEntries,withImeGuard as withImeGuard3}from"@kanyun-ai-infra/band-plugin-react";import{useEffect as useEffect3,useId as useId3,useRef as useRef3,useState as useState3}from"react";import{jsx as jsx3,jsxs as jsxs3}from"react/jsx-runtime";import{Avatar,Mount as Mount2,useSlotEntries as useSlotEntries2,withImeGuard as withImeGuard4}from"@kanyun-ai-infra/band-plugin-react";import{useEffect as useEffect4,useId as useId4,useRef as useRef4,useState as useState4}from"react";import{jsx as jsx4,jsxs as jsxs4}from"react/jsx-runtime";import{Fragment as Fragment3,jsx as jsx5,jsxs as jsxs5}from"react/jsx-runtime";import{Fragment as Fragment4,jsx as jsx6,jsxs as jsxs6}from"react/jsx-runtime";if(typeof document!=="undefined"&&document.head){const css='/* src/shell.css */\nhtml:has(.band-shell),\nbody:has(.band-shell) {\n overflow: hidden;\n overscroll-behavior: none;\n}\n.band-shell {\n --band-shell-side-w: 248px;\n display: grid;\n grid-template-columns: var(--band-shell-side-w) minmax(0, 1fr);\n height: 100vh;\n height: calc(100dvh - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px));\n}\n.band-shell > .band-shell-side {\n min-height: 0;\n padding-left: env(safe-area-inset-left, 0px);\n}\n.band-shell > .band-shell-side,\n.band-shell > .band-shell-side .side-bottom {\n grid-template-columns: minmax(0, 1fr);\n}\n.band-shell-main {\n background: var(--panel);\n border-radius: 14px;\n box-shadow: var(--shadow-card);\n min-width: 0;\n min-height: 0;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n margin: 10px 12px 10px 0;\n margin-right: max(12px, env(safe-area-inset-right, 0px));\n}\n.band-shell.is-collapsed {\n grid-template-columns: 0 minmax(0, 1fr);\n}\n.band-shell.is-collapsed > .band-shell-side {\n visibility: hidden;\n overflow: hidden;\n}\n.band-shell.is-collapsed > .band-shell-main {\n margin-left: max(12px, env(safe-area-inset-left, 0px));\n}\n.band-shell-body {\n flex: 1;\n min-height: 0;\n overflow: auto;\n overscroll-behavior: contain;\n display: flex;\n flex-direction: column;\n}\n.band-shell-body:where(:focus) {\n outline: none;\n}\n.band-shell-skip.sr-only:where(:focus) {\n position: fixed;\n top: 8px;\n left: 8px;\n z-index: var(--layer-pop);\n width: auto;\n height: auto;\n margin: 0;\n padding: 8px 12px;\n overflow: visible;\n clip-path: none;\n border-radius: var(--r);\n background: var(--panel);\n box-shadow: var(--shadow-pop);\n color: var(--ink);\n font-size: var(--fs-ui);\n}\n.band-shell-page,\n.band-shell-page > .band-react-surface,\n.band-shell-page-content,\n.band-shell-page-content > .band-react-surface {\n display: contents;\n}\n.band-shell-mhead {\n display: flex;\n flex: none;\n align-items: center;\n gap: 8px;\n padding: 10px 14px 0;\n min-height: 44px;\n}\n.band-shell-mtitle {\n font-weight: 600;\n font-size: var(--fs-body);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.band-shell-scrim {\n display: none;\n}\n.band-shell-side .side-top {\n padding-top: 16px;\n}\n.band-shell-side .side-top .brand {\n margin-right: auto;\n min-width: 0;\n}\n.band-shell-side .side-scroll {\n padding-top: 6px;\n gap: 18px;\n}\n.band-shell-side .side-nav .srow {\n grid-template-columns: minmax(0, 1fr) auto;\n}\n.band-shell-brand-scope {\n font-weight: 600;\n}\n.band-shell-scope-name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.band-shell-group-name {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n min-width: 0;\n}\n.band-shell-side-note {\n padding: 2px 10px;\n font-size: var(--fs-dense);\n color: var(--muted);\n display: grid;\n gap: 6px;\n justify-items: start;\n}\n.band-shell-side-note .linkish {\n border: 0;\n background: none;\n padding: 0;\n color: var(--accent-text);\n font: inherit;\n cursor: pointer;\n}\n.band-shell-skeleton {\n display: grid;\n gap: 10px;\n padding: 6px 10px;\n}\n.band-shell-skeleton i {\n display: block;\n height: 12px;\n border-radius: 6px;\n background: var(--fill-2);\n animation: band-shell-breathe 1.6s var(--ease) infinite alternate;\n}\n.band-shell-skeleton i:nth-child(2) {\n width: 72%;\n}\n.band-shell-skeleton i:nth-child(3) {\n width: 54%;\n}\n@keyframes band-shell-breathe {\n to {\n opacity: 0.45;\n }\n}\n@media (prefers-reduced-motion: reduce) {\n .band-shell-skeleton i {\n animation: none;\n }\n}\n.band-shell-search {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n border: 0;\n border-radius: 9px;\n background: var(--side-hover);\n color: var(--muted);\n font: inherit;\n font-size: var(--fs-row);\n padding: 6px 10px;\n text-align: left;\n cursor: pointer;\n transition: color var(--sixteenth) var(--ease);\n}\n.band-shell-search:hover {\n color: var(--ink);\n}\n.band-shell-search span:nth-child(2) {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.band-shell-search kbd,\n.band-shell-search-field kbd {\n font-family: var(--mono);\n font-size: var(--fs-badge);\n color: var(--muted);\n border-radius: 5px;\n padding: 1px 6px;\n background: var(--fill-2);\n}\n.band-shell-search-ic {\n position: relative;\n flex: none;\n width: 14px;\n height: 14px;\n}\n.band-shell-search-ic::before {\n content: "";\n position: absolute;\n left: 1px;\n top: 1px;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n border: 1.5px solid currentColor;\n}\n.band-shell-search-ic::after {\n content: "";\n position: absolute;\n left: 9.5px;\n top: 9px;\n width: 1.5px;\n height: 5px;\n background: currentColor;\n transform: rotate(-45deg);\n}\n.band-shell-side .side-bottom {\n display: grid;\n gap: 2px;\n padding-bottom: 8px;\n}\n.band-shell-links {\n padding: 0 14px 4px 18px;\n font-size: var(--fs-meta);\n}\n.band-shell-links button {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n border: 0;\n background: none;\n padding: 0;\n font: inherit;\n color: var(--muted);\n cursor: pointer;\n}\n.band-shell-links button:hover {\n color: var(--ink);\n}\n.band-shell-side .side-foot {\n padding-top: 6px;\n padding-bottom: 6px;\n}\n.band-shell-me {\n position: relative;\n padding: 0 10px;\n}\n.band-shell-me-btn {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n border: 0;\n border-radius: 10px;\n background: none;\n padding: 7px 8px;\n text-align: left;\n font: inherit;\n color: var(--ink);\n cursor: pointer;\n transition: background var(--sixteenth) var(--ease);\n}\n.band-shell-me-btn:hover,\n.band-shell-me-btn[aria-expanded=true] {\n background: var(--side-hover);\n}\n.band-shell-me-name {\n flex: 1;\n min-width: 0;\n display: grid;\n font-size: var(--fs-row);\n line-height: 1.35;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.band-shell-me-name small {\n font-size: var(--fs-meta);\n color: var(--muted);\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.band-shell-me-caret {\n color: var(--muted);\n font-size: var(--fs-meta);\n}\n.band-shell-menu {\n position: absolute;\n left: 10px;\n right: 10px;\n bottom: calc(100% + 6px);\n z-index: 20;\n background: var(--panel);\n border-radius: var(--r-lg);\n box-shadow: var(--shadow-pop);\n padding: 8px;\n display: grid;\n gap: 4px;\n}\n.band-shell-menu-row {\n display: grid;\n gap: 6px;\n padding: 4px 6px;\n}\n.band-shell-menu-label {\n font-size: var(--fs-meta);\n color: var(--muted);\n}\n.band-shell-menu-row .seg {\n justify-self: stretch;\n}\n.band-shell-menu-row .seg button {\n flex: 1;\n}\n.band-shell-menu-item:empty {\n display: none;\n}\n.band-shell-menu-item :where(.btn) {\n box-sizing: border-box;\n width: 100%;\n}\n.band-shell-menu-link {\n box-sizing: border-box;\n width: 100%;\n text-decoration: none;\n}\n.band-shell-overlay {\n position: fixed;\n inset: 0;\n z-index: 60;\n display: grid;\n justify-items: center;\n align-items: start;\n padding: max(12vh, 24px) 16px 16px;\n}\n.band-shell-overlay-scrim {\n position: absolute;\n inset: 0;\n background: var(--scrim);\n}\n.band-shell-search-dialog {\n position: relative;\n width: min(620px, 100%);\n max-height: min(70vh, 560px);\n display: grid;\n grid-template-rows: auto minmax(0, 1fr);\n background: var(--panel);\n border-radius: var(--r-lg);\n box-shadow: var(--shadow-pop);\n overflow: hidden;\n}\n.band-shell-search-field {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 16px;\n color: var(--muted);\n box-shadow: inset 0 -1px 0 var(--rule);\n}\n.band-shell-search-field input {\n flex: 1;\n min-width: 0;\n border: 0;\n outline: none;\n background: none;\n font: inherit;\n font-size: var(--fs-lead);\n color: var(--ink);\n}\n.band-shell-search-field input::placeholder {\n color: var(--muted);\n}\n.band-shell-search-field input::-webkit-search-cancel-button {\n display: none;\n}\n.band-shell-search-body {\n overflow: auto;\n overscroll-behavior: contain;\n padding: 6px;\n display: grid;\n gap: 6px;\n align-content: start;\n}\n.band-shell-search-hint {\n margin: 0;\n padding: 14px 12px;\n font-size: var(--fs-ui);\n color: var(--muted);\n}\n.band-shell-search-list {\n display: grid;\n gap: 1px;\n}\n.band-shell-search-list:empty {\n display: none;\n}\n.band-shell-search-hit {\n display: grid;\n grid-template-columns: 16px minmax(0, auto) minmax(0, 1fr) auto;\n align-items: center;\n gap: 10px;\n padding: 8px 10px;\n border-radius: 9px;\n cursor: pointer;\n font-size: var(--fs-body);\n}\n.band-shell-search-hit[aria-selected=true] {\n background: var(--fill);\n}\n.band-shell-search-t {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.band-shell-search-d {\n font-size: var(--fs-dense);\n color: var(--muted);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.band-shell-search-hash {\n width: 16px;\n text-align: center;\n font-family: var(--mono);\n font-size: var(--fs-ui);\n color: var(--muted);\n}\n.band-shell-search-k {\n font-size: var(--fs-caption);\n color: var(--muted);\n}\n.band-shell-search-source h3 {\n margin: 6px 10px 4px;\n font-size: var(--fs-meta);\n font-weight: 500;\n color: var(--muted);\n}\n.band-shell-missing {\n max-width: 560px;\n margin: 0 auto;\n padding: 72px 32px;\n display: grid;\n gap: 14px;\n justify-items: start;\n}\n.band-shell-missing-actions {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n.band-shell-missing-path {\n font-size: var(--fs-meta);\n color: var(--muted);\n overflow-wrap: anywhere;\n}\n.band-shell-missing h1 {\n font-family: var(--font-display);\n font-weight: 600;\n}\n@media (max-width: 860px) {\n .band-shell,\n .band-shell.is-collapsed {\n grid-template-columns: minmax(0, 1fr);\n }\n .band-shell > .band-shell-side {\n position: fixed;\n z-index: 40;\n top: 0;\n bottom: 0;\n left: 0;\n width: min(300px, 86vw);\n background: var(--side-solid);\n box-shadow: var(--shadow-pop);\n transform: translateX(-105%);\n transition: transform var(--eighth) var(--ease);\n visibility: hidden;\n padding-top: env(safe-area-inset-top, 0px);\n }\n .band-shell.is-drawer > .band-shell-side {\n transform: none;\n visibility: visible;\n }\n .band-shell.is-drawer > .band-shell-scrim {\n display: block;\n position: fixed;\n inset: 0;\n z-index: 35;\n background: var(--scrim);\n }\n .band-shell > .band-shell-main,\n .band-shell.is-collapsed > .band-shell-main {\n margin: 0;\n border-radius: 0;\n box-shadow: none;\n }\n .band-shell-mhead {\n padding: 8px 10px 0;\n }\n .band-shell-search kbd {\n display: none;\n }\n .band-shell-overlay {\n padding-top: 12px;\n }\n .band-shell-search-hit {\n grid-template-columns: 16px minmax(0, 1fr) auto;\n }\n .band-shell-search-d {\n grid-column: 2 / -1;\n grid-row: 2;\n }\n}\n.band-shell-i16 {\n width: 16px;\n height: 16px;\n fill: none;\n stroke: currentColor;\n stroke-width: 1.5;\n stroke-linecap: round;\n stroke-linejoin: round;\n flex: none;\n}\n.band-shell-done {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n white-space: nowrap;\n}\n.band-feedback {\n position: fixed;\n right: 14px;\n bottom: 14px;\n z-index: var(--layer-pop);\n display: grid;\n justify-items: end;\n gap: 8px;\n}\n.band-feedback-btn {\n position: relative;\n background: var(--panel);\n box-shadow: var(--shadow-card);\n border-radius: 50%;\n width: 32px;\n height: 32px;\n}\n.band-feedback-i {\n width: 16px;\n height: 16px;\n fill: none;\n stroke: currentColor;\n stroke-width: 1.4;\n stroke-linejoin: round;\n}\n.band-feedback-dot {\n position: absolute;\n top: 0;\n right: 0;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--accent);\n}\n.band-feedback-dot.is-inline {\n position: static;\n display: inline-block;\n margin-left: 6px;\n}\n.band-feedback-panel {\n box-sizing: border-box;\n width: min(320px, calc(100vw - 28px));\n background: var(--panel);\n border-radius: var(--r-xl);\n box-shadow: var(--shadow-pop);\n padding: 12px;\n display: grid;\n gap: 8px;\n}\n.band-feedback-text {\n resize: none;\n width: 100%;\n box-sizing: border-box;\n}\n.band-feedback-title {\n margin: 0;\n font-size: var(--fs-row);\n font-weight: 600;\n color: var(--ink);\n}\n.band-feedback-lead {\n margin: -4px 0 0;\n font-size: var(--fs-meta);\n color: var(--muted);\n}\n.band-feedback-foot {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n.band-feedback-hint {\n font-size: var(--fs-meta);\n color: var(--muted);\n}\n.band-feedback-over {\n margin: 0;\n font-size: var(--fs-meta);\n color: var(--bad);\n}\n.band-feedback-thanks {\n display: block;\n margin: 0;\n padding: 8px 0;\n text-align: center;\n color: var(--ink);\n}\n.band-feedback-replies {\n margin: 0;\n padding: 0;\n list-style: none;\n display: grid;\n gap: 8px;\n max-height: 40vh;\n overflow: auto;\n overscroll-behavior: contain;\n}\n.band-feedback-replies li {\n display: grid;\n gap: 2px;\n}\n.band-feedback-quote {\n font-size: var(--fs-meta);\n color: var(--muted);\n}\n.band-feedback-reply {\n font-size: var(--fs-body);\n color: var(--ink);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n}\n.band-feedback-menu {\n display: none;\n box-sizing: border-box;\n width: 100%;\n}\n@media (max-width: 860px) {\n .band-feedback-menu {\n display: inline-flex;\n }\n .band-feedback {\n right: 14px;\n left: 14px;\n bottom: calc(14px + env(safe-area-inset-bottom, 0px));\n justify-items: stretch;\n }\n .band-feedback-panel {\n width: auto;\n }\n}\n@media (prefers-reduced-motion: no-preference) {\n .band-feedback-panel {\n animation: band-feedback-in var(--eighth) var(--ease);\n }\n}\n@keyframes band-feedback-in {\n from {\n opacity: 0;\n transform: translateY(6px);\n }\n}\n.band-feedback-actions {\n display: inline-flex;\n gap: 6px;\n}\n.band-feedback-older {\n margin: 0;\n font-size: var(--fs-meta);\n color: var(--muted);\n}\n.band-guide-card {\n position: fixed;\n inset: auto;\n z-index: 31;\n margin: 0;\n border: 0;\n width: 360px;\n max-width: calc(100vw - 24px);\n padding: 12px 16px 12px 22px;\n background: var(--panel);\n color: var(--ink);\n border-radius: var(--r-xl);\n box-shadow: var(--shadow-pop);\n font-size: var(--fs-ui);\n line-height: 1.6;\n overflow: hidden;\n animation: band-guide-in var(--eighth, 180ms) ease-out;\n}\n.band-guide-card::before {\n content: "";\n position: absolute;\n inset: 0 auto 0 0;\n width: 5px;\n background: color-mix(in srgb, var(--accent) var(--band-guide-stripe, 20%), var(--accent-soft));\n}\n.band-guide-card.is-docked {\n right: 56px;\n bottom: 18px;\n}\n.band-guide-card h3 {\n margin: 0 0 4px;\n font-size: var(--fs-title);\n font-weight: 600;\n}\n.band-guide-card p {\n margin: 0 0 10px;\n}\n.band-guide-where,\n.band-guide-count {\n color: var(--muted);\n}\n.band-guide-count {\n margin-bottom: 2px;\n font-size: var(--fs-meta);\n}\n.band-guide-foot {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n.band-guide-foot a {\n margin-right: auto;\n color: var(--accent-text);\n text-decoration: none;\n}\n.band-guide-staff {\n display: block;\n width: 100%;\n height: auto;\n margin: 2px 0 4px;\n overflow: visible;\n}\n.band-guide-staff line {\n stroke: var(--muted);\n stroke-opacity: 0.45;\n stroke-width: 1;\n}\n.band-guide-staff .is-done {\n fill: var(--ink);\n}\n.band-guide-staff .is-current {\n fill: var(--accent);\n}\n.band-guide-staff .is-todo {\n fill: none;\n stroke: var(--rule-strong);\n stroke-width: 1.4;\n}\n.band-guide-ring {\n position: fixed;\n z-index: 31;\n pointer-events: none;\n border: 2px solid var(--accent);\n border-radius: 10px;\n box-shadow: 0 0 0 5px var(--accent-soft);\n}\n.band-guide-pill {\n display: flex;\n max-width: calc(100% - 16px);\n flex: none;\n margin: 0 8px 8px;\n align-items: center;\n gap: 8px;\n padding: 6px 12px 6px 10px;\n border: 0;\n border-radius: 999px;\n border: 1px solid var(--rule);\n background: var(--panel);\n color: var(--ink);\n font: inherit;\n font-size: var(--fs-ui);\n cursor: pointer;\n}\n.band-guide-pill .band-guide-staff {\n width: 70px;\n margin: 0;\n}\n.band-guide-card.is-compact {\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.band-guide-card.is-compact p {\n margin-bottom: 6px;\n}\n.band-guide-pill > span:not(.band-guide-pill-title) {\n flex: none;\n white-space: nowrap;\n}\n.band-guide-pill-title {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--muted);\n}\n.band-guide-card.is-finale {\n left: 50%;\n top: 50%;\n width: 460px;\n padding: 18px 24px 16px;\n transform: translate(-50%, -50%);\n text-align: center;\n}\n.band-guide-card.is-finale::before {\n display: none;\n}\n.band-guide-finale {\n --fin-ease: var(--ease);\n}\n.band-guide-finale-line {\n transform-box: view-box;\n transform-origin: 0 0;\n transform: translateX(62.8px) scaleX(0.2124);\n vector-effect: non-scaling-stroke;\n}\n.band-guide-finale .band-guide-note {\n transform-box: view-box;\n transform-origin: 0 0;\n fill: var(--ink);\n}\n.band-guide-finale .band-guide-note.is-mid {\n fill: var(--accent);\n}\n.band-guide-finale .band-guide-note.is-kept {\n transform: translate(var(--dx), var(--dy));\n}\n.band-guide-finale .band-guide-note:not(.is-kept) {\n opacity: 0;\n}\n.band-guide-hop {\n transform-box: view-box;\n transform-origin: 0 0;\n}\n.band-guide-stem {\n fill: none;\n stroke: var(--ink);\n stroke-width: 1.65;\n}\n.band-guide-beam {\n fill: var(--ink);\n}\n.band-guide-wordmark {\n fill: var(--ink);\n font-family: var(--font-wordmark);\n font-weight: 600;\n font-size: 25.7px;\n letter-spacing: -0.2px;\n}\n.band-guide-halo {\n fill: none;\n stroke: var(--accent);\n stroke-width: 1.5;\n opacity: 0;\n}\n.band-guide-finale:not([data-still]) {\n .band-guide-finale-line {\n animation: band-fin-line 1000ms var(--fin-ease) var(--fin-t0) backwards;\n }\n .band-guide-note.is-kept {\n animation: band-fin-gather 1000ms var(--fin-ease) var(--fin-t0) backwards;\n }\n .band-guide-note:not(.is-kept) {\n animation: band-fin-fade 400ms ease var(--fin-t0) backwards;\n }\n .band-guide-hop {\n animation: band-fin-hop var(--eighth) var(--fin-ease) var(--hop) backwards;\n }\n .band-guide-hop ellipse {\n animation: band-fin-beat var(--eighth) ease var(--hop) backwards;\n }\n .band-guide-note.is-mid .band-guide-hop {\n animation: band-fin-hop var(--eighth) var(--fin-ease) var(--hop) backwards, band-fin-blue 300ms ease calc(var(--fin-t0) + 700ms) backwards;\n }\n .band-guide-stem {\n transform-box: fill-box;\n transform-origin: bottom;\n animation: band-fin-grow-y 300ms var(--fin-ease) calc(var(--fin-t0) + 850ms) backwards;\n }\n .band-guide-beam {\n transform-box: fill-box;\n transform-origin: left center;\n animation: band-fin-grow-x 300ms var(--fin-ease) calc(var(--fin-t0) + 1000ms) backwards;\n }\n .band-guide-wordmark {\n animation: band-fin-in 400ms ease calc(var(--fin-t0) + 1050ms) backwards;\n }\n .band-guide-halo {\n animation: band-fin-halo 1000ms ease-out calc(var(--fin-t0) + 1150ms) backwards;\n }\n}\n@keyframes band-fin-line {\n from {\n transform: none;\n }\n}\n@keyframes band-fin-gather {\n from {\n transform: none;\n }\n}\n@keyframes band-fin-fade {\n from {\n opacity: 1;\n }\n}\n@keyframes band-fin-hop {\n 50% {\n transform: translateY(-7px);\n }\n}\n@keyframes band-fin-beat {\n 50% {\n fill: var(--accent);\n }\n}\n@keyframes band-fin-blue {\n from {\n fill: var(--ink);\n }\n}\n@keyframes band-fin-grow-y {\n from {\n transform: scaleY(0);\n }\n}\n@keyframes band-fin-grow-x {\n from {\n transform: scaleX(0);\n }\n}\n@keyframes band-fin-in {\n from {\n opacity: 0;\n }\n}\n@keyframes band-fin-halo {\n from {\n opacity: 0;\n r: 6px;\n }\n 10% {\n opacity: 0.16;\n }\n to {\n opacity: 0;\n r: 40px;\n }\n}\n@media (prefers-reduced-motion: reduce) {\n .band-guide-finale * {\n animation: none !important;\n }\n}\n@keyframes band-guide-in {\n from {\n opacity: 0;\n }\n}\n@media (max-width: 860px) {\n .band-guide-card.is-docked {\n left: 12px;\n right: 12px;\n bottom: 12px;\n width: auto;\n }\n}\n@media (prefers-reduced-motion: reduce) {\n .band-guide-card {\n animation: none;\n }\n}\n.band-shell-mhead .band-guide-pill {\n margin: 0 0 0 auto;\n}\n.band-guide-card.is-measuring {\n visibility: hidden;\n pointer-events: none;\n left: -10000px;\n top: 0;\n}\n.band-shell-transition {\n padding: 16px;\n display: grid;\n gap: 12px;\n align-content: start;\n}\n.band-shell-transition h1 {\n margin: 0;\n font-size: var(--fs-h2);\n}\n.band-shell-skeleton {\n height: 48px;\n border-radius: var(--r);\n background: var(--fill-2);\n}\n.band-shell-transition-settings {\n flex: 1;\n min-height: 0;\n height: 100%;\n padding: 0;\n gap: 0;\n}\n.band-shell-transition-body {\n display: grid;\n gap: 12px;\n align-content: start;\n}\n.band-shell-transition-settings > .band-shell-transition-frame {\n flex: 1;\n min-height: 0;\n height: auto;\n}\n.band-shell-embed {\n height: 100%;\n min-height: 0;\n display: flex;\n flex-direction: column;\n background: var(--panel);\n}\n';let el=document.head.querySelector('style[data-band-style="@kanyun-ai-infra/band-shell"]');if(!el){el=document.createElement("style");el.setAttribute("data-band-style","@kanyun-ai-infra/band-shell");document.head.prepend(el)}el.textContent=css}var THANKS_MS=2e3;var PAGE_URL_MAX=500;var CREDENTIAL_PARAMS=["s","preview"];function currentPageUrl(loc=window.location){const query=new URLSearchParams(loc.search);for(const name of CREDENTIAL_PARAMS)query.delete(name);const search=query.size>0?`?${query}`:"";const full=`${loc.pathname}${search}`;if(full.length<=PAGE_URL_MAX)return full;return loc.pathname.length<=PAGE_URL_MAX?loc.pathname:"/"}var Feedback=createContext(null);function useFeedbackState(){return useContext(Feedback)}function FeedbackProvider({ctx,children}){const api=ctx.app.member.betaMember===false?void 0:ctx.app.data.write?.feedback;const[enabled,setEnabled]=useState(false);const[items,setItems]=useState([]);const[unreadReplies,setUnreadReplies]=useState(0);const[replies,setReplies]=useState([]);const[older,setOlder]=useState(0);const[open,setOpenState]=useState(false);const live=useRef(true);useEffect(()=>{live.current=true;return()=>{live.current=false}},[]);const refresh=useCallback(()=>{api?.mine().then(r=>{if(!live.current)return;setEnabled(r.enabled);setItems(r.items);setUnreadReplies(r.unreadReplies)},()=>void 0)},[api]);useEffect(()=>{refresh()},[refresh]);const unreadItems=items.filter(i=>i.replyUnread);const setOpen=next=>{if(next&&api){const fresh=unreadItems;setReplies(fresh);setOlder(Math.max(0,unreadReplies-fresh.length));if(fresh.length>0){Promise.allSettled(fresh.map(i=>api.markReplySeen(i.id))).then(refresh)}}setOpenState(next)};if(!api)return jsx(Feedback.Provider,{value:null,children});return jsx(Feedback.Provider,{value:{enabled,unread:unreadReplies>0,replies,older,open,setOpen,api,refresh},children})}function FeedbackCorner({phone}){const fb=useFeedbackState();const button=useRef(null);if(!fb?.enabled)return null;return jsxs("div",{className:"band-feedback",children:[fb.open&&jsx(FeedbackPanel,{fb,returnFocus:()=>button.current?.focus()}),!phone&&jsxs("button",{ref:button,type:"button",className:"iconbtn band-feedback-btn","aria-label":fb.unread?"\u53CD\u9988\uFF0C\u6709\u65B0\u56DE\u590D":"\u53CD\u9988",title:"\u53CD\u9988","aria-expanded":fb.open,onClick:()=>fb.setOpen(!fb.open),children:[jsx("svg",{className:"band-feedback-i",viewBox:"0 0 16 16","aria-hidden":"true",children:jsx("path",{d:"M3 3.5h10a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1H8l-3 2.5v-2.5H3a1 1 0 0 1-1-1v-5a1 1 0 0 1 1-1z"})}),fb.unread&&jsx("span",{className:"band-feedback-dot","aria-hidden":"true"})]})]})}function reasonOf(e){const status=typeof e==="object"&&e!==null?e.status:void 0;if(status===429)return"\u53D1\u5F97\u6709\u70B9\u5FEB\uFF0C\u7A0D\u540E\u518D\u8BD5";return failedBecause(e,"\u70B9\u91CD\u8BD5")}function FeedbackPanel({fb,returnFocus}){const[text,setText]=useState("");const[phase,setPhase]=useState({kind:"typing"});const area=useRef(null);const hint=useId();const length=feedbackTextLength(text.trim());const tooLong=length>FEEDBACK_BODY_MAX;const canSend=length>0&&!tooLong&&phase.kind!=="sending"&&phase.kind!=="sent";const close=()=>{fb.setOpen(false);returnFocus()};useEffect(()=>area.current?.focus(),[]);useEffect(()=>{if(phase.kind!=="sent")return;const t=setTimeout(()=>fb.setOpen(false),THANKS_MS);return()=>clearTimeout(t)},[phase.kind,fb.setOpen]);const send=()=>{if(!canSend)return;setPhase({kind:"sending"});fb.api.submit({body:text.trim(),pageUrl:currentPageUrl()}).then(()=>{setText("");setPhase({kind:"sent"});fb.refresh()},e=>setPhase({kind:"failed",reason:reasonOf(e)}))};return jsx("div",{className:"band-feedback-panel field-host",role:"group","aria-label":"\u53CD\u9988\u7ED9 Band \u56E2\u961F",onKeyDown:withImeGuard(e=>{if(e.key==="Escape"){e.preventDefault();close()}}),children:phase.kind==="sent"?jsx("output",{className:"band-feedback-thanks",children:"\u5DF2\u6536\u5230\uFF0C\u8C22\u8C22"}):jsxs(Fragment,{children:[jsx("p",{className:"band-feedback-title",children:"\u53CD\u9988\u7ED9 Band \u56E2\u961F"}),jsx("p",{className:"band-feedback-lead",children:"\u7BA1\u7406\u5458\u4F1A\u5728\u8FD9\u91CC\u56DE\u590D\u4F60"}),fb.replies.length>0&&jsx("ul",{className:"band-feedback-replies","aria-label":"\u6536\u5230\u7684\u56DE\u590D",children:fb.replies.map(r=>jsxs("li",{children:[jsxs("span",{className:"band-feedback-quote",children:["\u4F60\u53CD\u9988\uFF1A",r.body]}),jsx("span",{className:"band-feedback-reply",children:r.reply})]},r.id))}),fb.older>0&&jsxs("p",{className:"band-feedback-older",children:["\u53E6\u6709 ",fb.older," \u6761\u66F4\u65E9\u7684\u56DE\u590D\uFF0C\u8FD9\u91CC\u6682\u65F6\u5217\u4E0D\u51FA\u6765"]}),jsx("textarea",{ref:area,className:"field bare band-feedback-text",rows:3,value:text,"aria-label":"\u53CD\u9988\u5185\u5BB9","aria-describedby":hint,"aria-invalid":tooLong||void 0,placeholder:"\u60F3\u8BF4\u4EC0\u4E48\u90FD\u884C\uFF0C\u6BD4\u5982\u54EA\u91CC\u4E0D\u5BF9\u3001\u60F3\u8981\u4EC0\u4E48",onChange:e=>{setText(e.target.value);if(phase.kind==="failed")setPhase({kind:"typing"})},onKeyDown:withImeGuard(e=>{if(e.key==="Enter"&&!e.shiftKey){e.preventDefault();send()}})}),tooLong&&jsxs("p",{className:"band-feedback-over",role:"alert",children:["\u6700\u591A ",FEEDBACK_BODY_MAX," \u5B57\uFF0C\u73B0\u5728 ",length," \u5B57\uFF0C\u8BF7\u5220\u77ED\u4E00\u4E9B\u518D\u53D1"]}),phase.kind==="failed"&&jsxs(ErrorNote,{retry:send,children:["\u6CA1\u53D1\u51FA\u53BB\uFF1A",phase.reason]}),jsxs("div",{className:"band-feedback-foot",children:[jsx("span",{id:hint,className:"band-feedback-hint",children:"\u4F1A\u4E00\u5E76\u53D1\u9001\u5F53\u524D\u9875\u9762\u7684\u5730\u5740"}),jsxs("span",{className:"band-feedback-actions",children:[jsx("button",{type:"button",className:"btn ghost sm",onClick:close,children:"\u5173\u95ED"}),jsx("button",{type:"button",className:"btn primary sm",disabled:!canSend,onClick:send,children:"\u53D1\u9001"})]})]})]})})}function FeedbackMenuItem({onOpen}){const fb=useFeedbackState();if(!fb?.enabled)return null;return jsxs("button",{type:"button",className:"btn ghost band-feedback-menu","aria-label":fb.unread?"\u53CD\u9988\uFF0C\u6709\u65B0\u56DE\u590D":"\u53CD\u9988",onClick:()=>{onOpen();fb.setOpen(true)},children:["\u53CD\u9988",fb.unread&&jsx("span",{className:"band-feedback-dot is-inline","aria-hidden":"true"})]})}var FREEFORM="freeform";var FIRST_PICK="teaching-tool";var GUIDE_DOCS="/docs/use/first-project";function guideDocsFor(w){return w?.docs??GUIDE_DOCS}var FIRST_VERSION_TIME={"teaching-tool":"\u4E09\u5230\u516B\u5206\u949F",video:"\u4E00\u5230\u56DB\u5206\u949F",freeform:"\u4E00\u5230\u4E94\u5206\u949F"};var DEFAULT_TIME="\u51E0\u5206\u949F\u5230\u5341\u51E0\u5206\u949F";function labelsOf(w){const stage=w?.workflows[0]?.stages[0];const typeName=stage?.produces[0];const types=w?.artifactTypes??[];const typeIndex=types.findIndex(t=>t.name===typeName);const roleName=stage?.gate?.approveBy[0];const roles=w?.roles??[];const roleIndex=roles.findIndex(r=>r.name===roleName);return{stage:stage?stageDisplayName(stage.id,stage.label,0):"\u8FD9\u4E00\u9636\u6BB5",artifact:typeName?artifactTypeDisplayName(typeName,types[typeIndex]?.label,typeIndex):"\u7B2C\u4E00\u7248",...roleName?{role:roleDisplayName(roleName,roles[roleIndex]?.label,roleIndex)}:{},agent:stage?.agentLabel??"Rondo",time:(w&&FIRST_VERSION_TIME[w.id])??DEFAULT_TIME}}function uiStep(guide,picked){if(guide.step>1)return guide.step;return picked&&picked!==FREEFORM?2:1}function totalOf(guide,picked){if(guide.project)return guide.total;return picked&&picked.role===void 0?GUIDE_STEPS-1:GUIDE_STEPS}function stepView(step,l,facts,total=GUIDE_STEPS){const a=l.agent;switch(step){case 1:return{step,page:"home",title:"\u5148\u6311\u4E00\u4E2A\u5DE5\u574A",body:facts.hasProjects?"\u5DE5\u574A\u5B9A\u597D\u4E86\u505A\u4EC0\u4E48\u3001\u5206\u51E0\u6B65\u3001\u8C01\u6765\u6279\u51C6\u3002\u518D\u505A\u4E00\u4E2A\u65B0\u7684\uFF0C\u5C31\u5728\u8F93\u5165\u6846\u4E0B\u9762\u9009\u4E00\u4E2A\u5DE5\u574A\uFF1A\u505A\u8BFE\u5802\u6559\u5177\u9009\u300C\u6559\u5177\u300D\uFF0C\u51E0\u5206\u949F\u51FA\u7B2C\u4E00\u7248\uFF1B\u505A\u89C6\u9891\u9009\u300C\u89C6\u9891\u300D\uFF0C\u7B2C\u4E00\u7248\u662F\u5267\u672C\uFF0C\u4E5F\u53EA\u8981\u51E0\u5206\u949F\uFF0C\u6210\u7247\u8981\u7B49\u5F97\u4E45\u4E00\u4E9B\u3002":"\u5DE5\u574A\u5B9A\u597D\u4E86\u505A\u4EC0\u4E48\u3001\u5206\u51E0\u6B65\u3001\u8C01\u6765\u6279\u51C6\u3002\u7B2C\u4E00\u6B21\u5EFA\u8BAE\u7528\u300C\u6559\u5177\u300D\uFF1A\u4E00\u53E5\u8BDD\u505A\u4E00\u4E2A\u8BFE\u5802\u6559\u5177\uFF0C\u51E0\u5206\u949F\u51FA\u7B2C\u4E00\u7248\u3002\u505A\u89C6\u9891\u9009\u300C\u89C6\u9891\u300D\uFF1A\u7B2C\u4E00\u7248\u662F\u5267\u672C\uFF0C\u4E5F\u53EA\u8981\u51E0\u5206\u949F\uFF0C\u6210\u7247\u8981\u7B49\u5F97\u4E45\u4E00\u4E9B\u3002",where:facts.narrow?"\u56DE\u5230\u9996\u9875\uFF0C\u70B9\u8F93\u5165\u6846\u4E0B\u9762\u7684\u300C\u81EA\u7531\u521B\u4F5C\u300D\uFF0C\u5728\u5217\u8868\u91CC\u9009\u300C\u6559\u5177\u300D\u3002":"\u56DE\u5230\u9996\u9875\uFF0C\u5728\u8F93\u5165\u6846\u4E0B\u9762\u90A3\u4E00\u6392\u91CC\u70B9\u300C\u6559\u5177\u300D\u3002",targets:[{anchor:"workshop-pick",workshop:FIRST_PICK},{anchor:"workshop-pick"}],next:[{anchor:"request"}]};case 2:return{step,page:"home",title:"\u5199\u4E00\u53E5\u8981\u505A\u4EC0\u4E48",body:facts.hasProjects?"\u5199\u6E05\u695A\u8981\u505A\u4EC0\u4E48\u3001\u7ED9\u8C01\u7528\uFF0C\u8D8A\u5177\u4F53\u7B2C\u4E00\u7248\u8D8A\u63A5\u8FD1\u4F60\u8981\u7684\u3002\u6309\u56DE\u8F66\u65B0\u5EFA\u9879\u76EE\u3002":"\u5199\u6E05\u695A\u8981\u505A\u4EC0\u4E48\u3001\u7ED9\u8C01\u7528\uFF0C\u8D8A\u5177\u4F53\u7B2C\u4E00\u7248\u8D8A\u63A5\u8FD1\u4F60\u8981\u7684\u3002\u4E0D\u77E5\u9053\u5199\u4EC0\u4E48\uFF0C\u70B9\u4E0B\u9762\u4E00\u4E2A\u4F8B\u5B50\u3002\u6309\u56DE\u8F66\u65B0\u5EFA\u9879\u76EE\u3002",where:"\u56DE\u5230\u9996\u9875\uFF0C\u5728\u8F93\u5165\u6846\u91CC\u5199\u4E00\u53E5\u9700\u6C42\u3002",targets:[{anchor:"request"}],next:[]};case 3:return{step,page:"project",title:`${a} \u5728\u505A\u7B2C\u4E00\u7248`,body:`\u7B2C\u4E00\u7248\u662F\u300C${l.artifact}\u300D\uFF0C\u4E00\u822C\u8981${l.time}\uFF0C\u4E0D\u7528\u5B88\u7740\u8FD9\u4E00\u9875\u3002\u505A\u597D\u540E\u9996\u9875\u300C\u9700\u8981\u4F60\u300D\u4F1A\u5217\u51FA\u8FD9\u4E2A\u9879\u76EE\uFF0C\u4FA7\u680F\u300C\u5F85\u6211\u5904\u7406\u300D\u65C1\u6709\u6570\u5B57\uFF1B\u8FD9\u4E00\u9875\u5F00\u7740\u7684\u8BDD\uFF0C\u7B2C\u4E00\u7248\u4F1A\u76F4\u63A5\u51FA\u73B0\u5728\u8FD9\u91CC\u3002`,where:"\u56DE\u5230\u8FD9\u4E2A\u9879\u76EE\uFF0C\u770B\u9875\u9762\u5E95\u90E8\u7684\u56DE\u5408\u680F\u3002",targets:[{anchor:"turn"}],next:[{anchor:"annotate"},{anchor:"artifact"}]};case 4:return{step,page:"project",title:"\u5728\u7B2C\u4E00\u7248\u4E0A\u63D0\u610F\u89C1",body:facts.annotate?facts.phone?`\u8FD9\u662F ${a} \u4EA4\u7684\u7B2C\u4E00\u7248\uFF0C\u5148\u770B\u4E00\u904D\u3002\u624B\u673A\u4E0A\u5148\u4E0D\u80FD\u5728\u753B\u9762\u4E0A\u70B9\uFF1B\u54EA\u91CC\u8981\u6539\uFF0C\u5728${facts.narrow?"\u300C\u5BF9\u8BDD\u300D\u9875\u7B7E":"\u53F3\u680F\u300C\u5BF9\u8BDD\u300D"}\u91CC\u8BF4\u3002`:`\u8FD9\u662F ${a} \u4EA4\u7684\u7B2C\u4E00\u7248\uFF0C\u5148\u770B\u4E00\u904D\u3002\u54EA\u91CC\u8981\u6539\uFF0C\u70B9\u300C\u8BC4\u8BBA\u300D\uFF0C\u518D\u70B9\u90A3\u4E00\u5904\uFF0C\u5199\u54EA\u91CC\u4E0D\u5BF9\u3001\u60F3\u600E\u4E48\u6539\u3002`:`\u8FD9\u662F ${a} \u4EA4\u7684\u7B2C\u4E00\u7248\uFF0C\u5148\u8BFB\u4E00\u904D\u3002\u54EA\u91CC\u8981\u6539\uFF0C\u9009\u4E2D\u90A3\u51E0\u4E2A\u5B57\uFF0C\u5199\u54EA\u91CC\u4E0D\u5BF9\u3001\u60F3\u600E\u4E48\u6539\u3002`,brief:facts.annotate?facts.phone?`\u5728${facts.narrow?"\u300C\u5BF9\u8BDD\u300D\u9875\u7B7E":"\u53F3\u680F\u300C\u5BF9\u8BDD\u300D"}\u91CC\u8BF4\u54EA\u91CC\u8981\u6539\u3002`:"\u70B9\u300C\u8BC4\u8BBA\u300D\uFF0C\u518D\u70B9\u8981\u6539\u7684\u90A3\u4E00\u5904\u3002":"\u9009\u4E2D\u8981\u6539\u7684\u51E0\u4E2A\u5B57\uFF0C\u5199\u610F\u89C1\u3002",where:facts.narrow?`\u5728\u300C\u6D41\u7A0B\u300D\u9875\u7B7E\u6700\u4E0B\u9762\u7684\u300C\u4EA7\u7269\u300D\u91CC\u70B9\u300C${l.artifact}\u300D\uFF0C\u518D\u5207\u5230\u300C\u4EA7\u7269\u300D\u9875\u7B7E\u770B\u5B83\u3002`:`\u5728\u5DE6\u680F\u300C\u4EA7\u7269\u300D\u91CC\u70B9\u300C${l.artifact}\u300D\u6253\u5F00\u5B83\u3002`,targets:facts.annotate?[{anchor:"annotate"}]:[{anchor:"artifact"}],next:[{anchor:"hand-to-agent"}]};case 5:return{step,page:"project",title:`\u4EA4\u7ED9 ${a}`,body:`\u5199\u610F\u89C1\u65F6\u52FE\u4E0A\u300C\u4EA4\u7ED9 ${a}\u300D\u518D\u53D1\u5E03\uFF0C${a} \u5C31\u7167\u8FD9\u6761\u610F\u89C1\u6539\u3002\u4E0D\u52FE\u7684\u610F\u89C1\u53EA\u7ED9\u9879\u76EE\u91CC\u7684\u4EBA\u770B\uFF1B\u5DF2\u7ECF\u53D1\u4E86\u7684\u610F\u89C1\uFF0C\u5728${facts.narrow?"\u300C\u5BF9\u8BDD\u300D\u9875\u7B7E":"\u53F3\u680F"}\u7684\u610F\u89C1\u4E0A\u70B9\u300C\u4EA4\u7ED9 ${a}\u300D\u3002`,where:`\u5199\u610F\u89C1\u7684\u6846\u4E0B\u9762\u6709\u300C\u4EA4\u7ED9 ${a}\u300D\u3002`,targets:[{anchor:"hand-to-agent"}],next:[{anchor:"turn"}]};case 6:return facts.busy?{step,page:"project",title:`${a} \u5728\u6309\u610F\u89C1\u6539`,body:"\u6539\u597D\u4F1A\u51FA\u65B0\u7684\u4E00\u7248\uFF0C\u540C\u6837\u4E0D\u7528\u5B88\u7740\u8FD9\u4E00\u9875\u3002\u6539\u597D\u540E\u9996\u9875\u300C\u9700\u8981\u4F60\u300D\u4F1A\u5217\u51FA\u8FD9\u4E2A\u9879\u76EE\u3002",where:"\u56DE\u5230\u8FD9\u4E2A\u9879\u76EE\uFF0C\u770B\u9875\u9762\u5E95\u90E8\u7684\u56DE\u5408\u680F\u3002",targets:[{anchor:"turn"}],next:[{anchor:"versions"}]}:{step,page:"project",title:"\u770B\u65B0\u7248\u672C",body:"\u8FD9\u662F\u65B0\u7684\u4E00\u7248\u3002\u5BF9\u7740\u4F60\u7684\u610F\u89C1\u770B\u4E00\u904D\uFF1A\u6539\u597D\u4E86\u70B9\u300C\u786E\u8BA4\u89E3\u51B3\u300D\uFF0C\u6CA1\u6539\u597D\u70B9\u300C\u8FD8\u6CA1\u597D\u300D\uFF0C\u5199\u54EA\u91CC\u8FD8\u4E0D\u5BF9\u3002",where:facts.narrow?"\u56DE\u5230\u8FD9\u4E2A\u9879\u76EE\uFF0C\u5728\u300C\u5BF9\u8BDD\u300D\u9875\u7B7E\u91CC\u70B9\u300C\u786E\u8BA4\u662F\u5426\u89E3\u51B3\u300D\uFF0C\u518D\u9009\u300C\u786E\u8BA4\u89E3\u51B3\u300D\u6216\u300C\u8FD8\u6CA1\u597D\u300D\u3002":"\u56DE\u5230\u8FD9\u4E2A\u9879\u76EE\uFF0C\u5728\u610F\u89C1\u4E0A\u70B9\u300C\u786E\u8BA4\u89E3\u51B3\u300D\u6216\u300C\u8FD8\u6CA1\u597D\u300D\u3002",targets:[{anchor:"versions"}],next:total>6?[{anchor:"approve"}]:[]};default:return{step:GUIDE_STEPS,page:"project",title:"\u6279\u51C6",body:l.role?`\u8FD9\u4E00\u7248\u80FD\u7528\u4E86\uFF0C\u5C31\u70B9\u300C\u4EE5${l.role}\u8EAB\u4EFD\u6279\u51C6\u300D\u3002\u6279\u51C6\u540E\u300C${l.stage}\u300D\u901A\u8FC7\uFF0C\u6D41\u7A0B\u5F80\u4E0B\u4E00\u6B65\u8D70\u3002`:`\u8FD9\u4E00\u7248\u80FD\u7528\u4E86\uFF0C\u5C31\u70B9\u300C\u6279\u51C6\u300D\u3002\u6279\u51C6\u540E\u300C${l.stage}\u300D\u901A\u8FC7\uFF0C\u6D41\u7A0B\u5F80\u4E0B\u4E00\u6B65\u8D70\u3002`,where:facts.narrow?`\u5728\u300C\u6D41\u7A0B\u300D\u9875\u7B7E\u91CC\uFF0C\u6D41\u7A0B\u4E0B\u9762\u7684\u300C${l.stage} \xB7 \u6279\u51C6\u300D\u5361\u7247\u4E0A\u70B9\u6279\u51C6\u3002`:`\u5728\u5DE6\u680F\u6D41\u7A0B\u4E0B\u9762\u7684\u300C${l.stage} \xB7 \u6279\u51C6\u300D\u5361\u7247\u4E0A\u70B9\u6279\u51C6\u3002`,targets:[{anchor:"approve"}],next:[]}}}var DONE_TITLE="\u8D70\u5B8C\u4E86";var doneBody=(agent,total=GUIDE_STEPS)=>`\u8FD9\u5C31\u662F\u4E00\u4E2A\u9879\u76EE\u7684\u6765\u56DE\uFF1A\u6311\u5DE5\u574A\u3001\u5199\u9700\u6C42\u3001\u770B\u7248\u672C\u3001\u63D0\u610F\u89C1\u3001\u4EA4\u7ED9 ${agent}${total>6?"\u3001\u6279\u51C6":""}\u3002${total>6?`\u6279\u51C6\u540E ${agent} \u4F1A\u63A5\u7740\u505A\u4E0B\u4E00\u6B65\uFF08\u4F1A\u7528\u6389\u4E00\u4E2A\u56DE\u5408\uFF09\u3002`:""}\u8981\u62C9\u540C\u4E8B\u4E00\u8D77\u63D0\u610F\u89C1\uFF0C\u5728\u9879\u76EE\u91CC\u9080\u8BF7\u6210\u5458\u3002`;var stripePercent=step=>20+13*(Math.min(Math.max(step,1),7)-1);function selectorOf(q){const base=`[data-band-guide="${q.anchor}"]`;return q.workshop?`${base}[data-band-guide-workshop="${q.workshop}"]`:base}var overlap=(a,b)=>Math.max(0,Math.min(a.right,b.right)-Math.max(a.left,b.left))*Math.max(0,Math.min(a.bottom,b.bottom)-Math.max(a.top,b.top));function place(card,target,avoid,view,margin=12,gap=12){const{w,h}=card;const tw=target.right-target.left;const th=target.bottom-target.top;const xs=[];for(let x=target.left-w;x<=target.right+w;x+=40)xs.push(x);xs.push(target.left,target.right-w,target.left+tw/2-w/2);const cands=[];for(const x of xs)cands.push({x,y:target.bottom+gap},{x,y:target.top-gap-h});for(let y=target.top-h+20;y<=target.bottom-20;y+=40){cands.push({x:target.right+gap,y},{x:target.left-gap-w,y})}if(th<=0)cands.push({x:target.left,y:target.bottom+gap});for(const x of xs){let y=target.bottom+gap;for(let k=0;k<6;k++){const box={left:x,top:y,right:x+w,bottom:y+h};const hit=avoid.find(a=>overlap(box,a)>0);if(!hit)break;y=hit.bottom+gap}cands.push({x,y})}const minX=view.left+margin;const maxX=view.width-w-margin;let best=null;for(const c of cands){const x=Math.min(Math.max(c.x,minX),maxX);const y=c.y;if(x<minX||y<margin||y+h>view.height-margin)continue;const box={left:x,top:y,right:x+w,bottom:y+h};if(overlap(box,target)>0||avoid.some(a=>overlap(box,a)>0))continue;const dx=x>target.right?x-target.right:target.left>x+w?target.left-x-w:0;const dy=y>target.bottom?y-target.bottom:target.top>y+h?target.top-y-h:0;const d=Math.hypot(dx,dy);if(!best||d<best.d)best={x,y,d}}return best?{x:best.x,y:best.y}:null}function containsBox(outer,inner){return inner.left>=outer.left&&inner.right<=outer.right&&inner.top>=outer.top&&inner.bottom<=outer.bottom}function annotateTargetOf(annotates,work,artifact){const inside=work?annotates.find(b=>containsBox(work,b))??null:null;if(inside)return{target:inside,entry:inside};const outside=annotates[0]??null;return{target:artifact,entry:outside}}function columnOf(target,keep){let best=null;for(const b of keep){if(b.left>target.left||b.right<target.right||b.top>target.top||b.bottom<target.bottom)continue;if(!best||(b.right-b.left)*(b.bottom-b.top)<(best.right-best.left)*(best.bottom-best.top))best=b}return best}function placeUnderColumn(card,column,avoid,view,margin=12,gap=12){const x=column.left;const y=column.bottom+gap;const box={left:x,top:y,right:x+card.w,bottom:y+card.h};if(box.right>view.width-margin||box.bottom>view.height-margin)return null;if(avoid.some(a=>overlap(box,a)>0))return null;return{x,y}}function dockPlace(card,spots,hard,soft){let best=0;let bestScore=null;spots.forEach((s,i)=>{const box={left:s.x,top:s.y,right:s.x+card.w,bottom:s.y+card.h};const score=[hard.reduce((n,b)=>n+overlap(box,b),0),soft.reduce((n,b)=>n+overlap(box,b),0)];if(!bestScore||score[0]<bestScore[0]||score[0]===bestScore[0]&&score[1]<bestScore[1]){best=i;bestScore=score}});return best}function dockSpots(card,view,narrow,headBottom){const lowest=view.height-(narrow?12:18)-card.h;const highest=narrow?headBottom+8:18;const first=narrow?12:view.width-56-card.w;const xs=[first];if(!narrow)for(let x=first-48;x>=view.left+12;x-=48)xs.push(x);const spots=[];for(const x of xs){for(let y=lowest;y>highest;y-=16)spots.push({x,y});spots.push({x,y:highest})}return spots}function avoidAround(target,boxes2){return boxes2.filter(b=>!(b.left<=target.left&&b.top<=target.top&&b.right>=target.right&&b.bottom>=target.bottom)&&!(target.left<=b.left&&target.top<=b.top&&target.right>=b.right&&target.bottom>=b.bottom))}var SHELL="@kanyun-ai-infra/band-shell";var PAGES=`${SHELL}/pages`;var NAV=`${SHELL}/nav`;var SEARCH=`${SHELL}/search`;var USER_MENU=`${SHELL}/user-menu`;function pageFor(pages,entry){return pages.find(p=>p.meta.entry===entry&&!(p.route!==void 0&&isWorkshopPagePattern(p.route)))}var GUIDE_REFRESH_MS=1e3;var NARROW=860;var PHONE=NARROW_QUERY;function useMedia(query){const[on,setOn]=useState2(()=>typeof window!=="undefined"&&typeof window.matchMedia==="function"?window.matchMedia(query).matches:false);useEffect2(()=>{if(typeof window.matchMedia!=="function")return;const mq=window.matchMedia(query);const update=()=>setOn(mq.matches);update();mq.addEventListener("change",update);return()=>mq.removeEventListener("change",update)},[query]);return on}var useNarrow=()=>useMedia(`(max-width: ${NARROW}px)`);var usePhone=()=>useMedia(PHONE);function editable(t){if(!(t instanceof HTMLElement))return false;return t.isContentEditable||/^(INPUT|TEXTAREA|SELECT)$/.test(t.tagName)}var GuideContext=createContext2(null);function useGuide(){return useContext2(GuideContext)}function GuideProvider({ctx,children}){const api=ctx.app.member.betaMember===false?void 0:ctx.app.data.write?.guide;const[guide,setGuide]=useState2(null);const[finale,setFinale]=useState2(false);const[cardPill,setPill]=useState2(null);const last=useRef2(null);const openReq=useRef2(false);const requestOpen=useCallback2(()=>{openReq.current=true},[]);const takeOpen=useCallback2(()=>{const v=openReq.current;openReq.current=false;return v},[]);const apply=useCallback2(g=>{if(g.status==="done"&&last.current&&last.current.status!=="done")setFinale(true);last.current=g;setGuide(g)},[]);const watching=guide===null||guide.status==="active"||guide.status==="collapsed";useEffect2(()=>{if(!api)return;let live=true;api.get().then(g=>live&&apply(g),e=>live&&ctx.report(e));return()=>{live=false}},[api,ctx,apply]);useEffect2(()=>{if(!api||!watching)return;let live=true;let timer;const load=()=>{api.get().then(g=>live&&apply(g),e=>live&&ctx.report(e))};const off=ctx.app.data.subscribe(()=>{clearTimeout(timer);timer=setTimeout(load,GUIDE_REFRESH_MS)});const offRoute=ctx.app.subscribeRoute(()=>load());return()=>{live=false;clearTimeout(timer);off();offRoute()}},[api,ctx,apply,watching]);const act=useCallback2(async action=>{if(!api)return;try{const g=await api.set(action);last.current=g;setGuide(g)}catch(e){ctx.report(e)}},[api,ctx]);const step=guide?.step??1;const total=guide?.total??7;const collapsed=guide?.status==="collapsed"&&!finale;const pill=useMemo(()=>collapsed?{step,total,onOpen:()=>{requestOpen();void act("resume")}}:guide?.status==="active"&&!finale?cardPill:null,[collapsed,step,total,requestOpen,act,guide?.status,finale,cardPill]);const value=api?{guide,finale,closeFinale:()=>setFinale(false),act,pill,setPill,requestOpen,takeOpen}:null;return jsx2(GuideContext.Provider,{value,children})}function GuideMenuItem({onOpen}){const g=useGuide();if(!g)return null;return jsx2("button",{type:"button",className:"btn ghost band-shell-menu-link",onClick:()=>{onOpen();g.requestOpen();void g.act(g.guide?.status==="done"?"restart":"resume")},children:"\u4F7F\u7528\u6307\u5F15"})}function usePickedWorkshop(ctx,picked){const[state,setState]=useState2(null);useEffect2(()=>{if(!picked)return;let live=true;ctx.app.data.workshop(picked).then(w=>live&&w&&setState({id:picked,w}),()=>{});return()=>{live=false}},[ctx,picked]);return state&&state.id===picked?state.w:void 0}var MIN_COLUMN_CARD=240;var MIN_COMPACT_CARD=200;var CARD_WIDTH=360;var WORK_SLACK=4;var HAS_PROJECTS_WAIT_MS=1500;function useHasProjects(ctx,ask){const[has,setHas]=useState2(void 0);useEffect2(()=>{if(!ask)return;let live=true;ctx.app.data.projects().then(list=>live&&setHas(list.length>0),()=>live&&setHas(false));const timer=setTimeout(()=>live&&setHas(old=>old??false),HAS_PROJECTS_WAIT_MS);return()=>{live=false;clearTimeout(timer)}},[ctx,ask]);return ask?has:false}var boxOf=el=>{const r=el.getBoundingClientRect();if(r.width<=0||r.height<=0)return null;if(r.bottom<=0||r.top>=window.innerHeight||r.right<=0||r.left>=window.innerWidth)return null;return{left:r.left,top:r.top,right:r.right,bottom:r.bottom}};function firstBox(queries){for(const q of queries){for(const el of document.querySelectorAll(selectorOf(q))){const b=boxOf(el);if(b)return b}}return null}var shown=el=>!el.closest("[hidden], [inert]")&&(typeof el.checkVisibility!=="function"||el.checkVisibility({visibilityProperty:true}));var boxes=els=>[...els].filter(shown).map(boxOf).filter(b=>b!==null);function measure(view){const request=document.querySelector('[data-band-guide="request"]');const keepEls=[...document.querySelectorAll("[data-band-guide-keep]")];const keep=boxes(keepEls);const next=view.next.map(q=>firstBox([q])).filter(b=>b!==null);const entry=firstBox(view.targets);const main=document.querySelector(".band-shell-main")?.getBoundingClientRect();const work=view.step===4?boxes(document.querySelectorAll("[data-band-guide-work]"))[0]??null:null;const artifact=view.step===4?firstBox([{anchor:"artifact"}]):null;const annotates=view.step===4?boxes(document.querySelectorAll('[data-band-guide="annotate"]')):[];const picked=view.step===4?annotateTargetOf(annotates,work,artifact):null;const target=picked?picked.target:entry;const annotateBox=picked?.entry??null;const anchorBox=artifact??target;const column=view.step===4&&anchorBox?columnOf(anchorBox,keep):null;const hard=[...boxes(keepEls.filter(el=>el.querySelector("textarea, [contenteditable='true']"))),...boxes(document.querySelectorAll(".btn.primary")),...boxes(document.querySelectorAll('[data-band-guide-keep="hard"]')),...boxes(document.querySelectorAll("[role='tablist'], [role='group'][aria-label]")),...boxes([...document.querySelectorAll(DIALOG_SELECTOR)].filter(el=>!el.closest(".band-guide-card"))),...target?[target]:[],...annotateBox&&!sameBox(annotateBox,target)?[annotateBox]:[],...work?[work]:[]];return{target,next,keep,hard,facts:{annotate:annotates.length>0,busy:document.querySelector('[data-band-guide="turn"][data-band-guide-busy]')!==null},picked:request?.getAttribute("data-band-guide-workshop")||void 0,left:main?.left??0,work,vw:window.innerWidth,vh:window.innerHeight,column}}var sameBox=(a,b)=>a===b||a!==null&&b!==null&&a.left===b.left&&a.top===b.top&&a.right===b.right&&a.bottom===b.bottom;function usePageWatch(onChange,active){useEffect2(()=>{if(!active)return;let frame=0;let ro=null;const schedule=()=>{if(frame)return;frame=requestAnimationFrame(()=>{frame=0;onChange();for(const el of document.querySelectorAll("[data-band-guide-keep], [data-band-guide-work]"))ro?.observe(el)})};const mo=new MutationObserver(schedule);mo.observe(document.body,{subtree:true,childList:true,attributes:true,attributeFilter:["data-band-guide","data-band-guide-keep","data-band-guide-busy","class","hidden","open"]});ro=typeof ResizeObserver==="undefined"?null:new ResizeObserver(schedule);ro?.observe(document.body);schedule();window.addEventListener("resize",schedule);window.addEventListener("scroll",schedule,true);return()=>{cancelAnimationFrame(frame);mo.disconnect();ro?.disconnect();window.removeEventListener("resize",schedule);window.removeEventListener("scroll",schedule,true)}},[active,onChange])}function GuideStaff({step,total,small}){const W=small?70:322;const H=small?22:46;const k=H/46;const ys=[34,30,26,30,22,18,14].slice(0,total).map(y=>y*k);const gap=(W-40*k)/(total-1);return jsxs2("svg",{className:"band-guide-staff",viewBox:`0 0 ${W} ${H}`,width:W,height:H,"aria-hidden":"true",children:[[0,1,2,3,4].map(i=>jsx2("line",{x1:0,x2:W,y1:(8+i*8)*k,y2:(8+i*8)*k},i)),ys.map((y,i)=>{const x=20*k+i*gap;const n=i+1;const cls=n<step?"is-done":n===step?"is-current":"is-todo";const[rx,ry]=n===step?[5.4*k,3.7*k]:[4.6*k,3.1*k];return jsx2("ellipse",{className:cls,cx:x,cy:y,rx,ry,transform:`rotate(-20 ${x} ${y})`},i)})]})}function GuideLayer({ctx,route,pages}){const g=useGuide();const guide=g?.guide??null;const[workshop,setWorkshop]=useState2(null);const workshopId=guide?.project?.workshop;useEffect2(()=>{if(!workshopId){setWorkshop(null);return}let live=true;ctx.app.data.workshop(workshopId).then(w=>live&&setWorkshop(w),()=>live&&setWorkshop(null));return()=>{live=false}},[ctx,workshopId]);if(!g||!guide)return null;if(g.finale)return jsx2(GuideFinale,{agent:labelsOf(workshop).agent,total:guide.total,docs:guideDocsFor(workshop),onClose:g.closeFinale});if(guide.status!=="active")return null;return jsx2(GuideCard,{ctx,guide,workshop,route,pages,act:g.act,setPill:g.setPill,takeOpen:g.takeOpen})}function GuideDockPill(){const g=useGuide();const p=g?.pill;if(!p)return null;return jsxs2("button",{type:"button",className:"band-guide-pill","aria-expanded":false,onClick:()=>{const own=document.querySelector(".band-guide-card");const open=blockingDialog(own);if(!open)return p.onOpen();const close=open.matches?.('[data-band-dialog="new-comment"]')?open.querySelector(".pop-h .x"):null;if(!close)return;close.click();setTimeout(()=>{if(!blockingDialog(document.querySelector(".band-guide-card")))p.onOpen()},0)},"aria-label":`\u5C55\u5F00\u4F7F\u7528\u6307\u5F15\uFF0C\u7B2C ${p.step} \u6B65\uFF0C\u5171 ${p.total} \u6B65${p.title?`\uFF1A${p.title}`:""}`,title:p.title,children:[jsx2(GuideStaff,{step:p.step,total:p.total,small:true}),jsxs2("span",{children:["\u6307\u5F15 ",p.step,"/",p.total]}),p.title&&jsx2("span",{className:"band-guide-pill-title",children:p.title})]})}function GuideCard({ctx,guide,workshop,route,pages,act,setPill,takeOpen}){const labels=labelsOf(workshop);const[m,setM]=useState2(null);const[pos,setPos]=useState2(null);const card=useRef2(null);const[cardEl,setCardEl]=useState2(null);const attachCard=useCallback2(node=>{card.current=node;setCardEl(node)},[]);const titleId=useId2();const closeRef=useRef2(()=>{});useEffect2(()=>{const onCardEsc=withImeGuard2(e=>{if(e.key!=="Escape"||e.defaultPrevented)return;if(editable(e.target)||blockingDialog(card.current))return;if(!card.current||card.current.dataset.parked==="true")return;e.preventDefault();closeRef.current()});document.addEventListener("keydown",onCardEsc);return()=>document.removeEventListener("keydown",onCardEsc)},[]);const home=pageFor(pages,"home");const projectPage=pageFor(pages,"project");const project=guide.project;const narrow=useNarrow();const phone=usePhone();const hasProjects=useHasProjects(ctx,!project&&guide.step<=1);const facts={...m?.facts??{annotate:false,busy:false},narrow,phone,hasProjects:hasProjects===true};const pickedWorkshop=usePickedWorkshop(ctx,project||uiStep(guide,m?.picked)<2?void 0:m?.picked);const total=totalOf(guide,pickedWorkshop&&labelsOf(pickedWorkshop));const docs=guideDocsFor(workshop??pickedWorkshop);const view=stepView(uiStep(guide,m?.picked),labels,facts,total);const onPage=view.page==="home"?home!==void 0&&route.page===home.key:project!==void 0&&(route.params.project===project.id||route.params.project===project.slug);const viewNow=useRef2(view);viewNow.current=view;const remeasure=useCallback2(()=>{const next=measure(viewNow.current);setM(old=>old&&sameBox(old.target,next.target)&&old.picked===next.picked&&old.facts.annotate===next.facts.annotate&&old.facts.busy===next.facts.busy&&old.keep.length===next.keep.length&&old.next.length===next.next.length&&old.keep.every((b,i)=>sameBox(b,next.keep[i]??null))&&old.hard.length===next.hard.length&&old.hard.every((b,i)=>sameBox(b,next.hard[i]??null))&&old.next.every((b,i)=>sameBox(b,next.next[i]??null))&&old.left===next.left&&sameBox(old.work,next.work)&&old.vw===next.vw&&old.vh===next.vh&&sameBox(old.column,next.column)?old:next)},[view.step,view.title]);usePageWatch(remeasure,true);const target=onPage&&!narrow?m?.target??null:null;const[fit,setFit]=useState2("full");const[colW,setColW]=useState2(null);const measuredFor=useRef2(null);useLayoutEffect(()=>{const el=cardEl;if(!el||!target||!m){setColW(null);setPos(null);return}const avoid=avoidAround(target,[...m.next,...m.keep]);const view2={left:m.left,width:window.innerWidth,height:window.innerHeight};if(viewNow.current.step!==4){setColW(null);setPos(place({w:el.offsetWidth,h:el.offsetHeight},target,avoid,view2));return}let tier=fit;if(measuredFor.current!==m){measuredFor.current=m;tier="full";if(fit!=="full")setFit("full")}if(tier==="pill"){setColW(null);setPos(null);return}const base=m.column?[...avoid,m.column]:avoid;const guarded=m.work?[...base,{left:m.work.left-WORK_SLACK,top:m.work.top-WORK_SLACK,right:m.work.right+WORK_SLACK,bottom:m.work.bottom+WORK_SLACK}]:base;const column=m.column;const colWidth=column?column.right-column.left:0;const useColumn=column!==null&&colWidth>=(tier==="full"?MIN_COLUMN_CARD:MIN_COMPACT_CARD);const want=useColumn?Math.min(colWidth,CARD_WIDTH):null;if(colW!==want){setColW(want);return}const size={w:el.offsetWidth,h:el.offsetHeight};const at2=(useColumn&&column?placeUnderColumn(size,column,guarded,view2):null)??place(size,target,guarded,view2);if(at2){setPos(at2);return}setFit(tier==="full"?"compact":"pill")},[cardEl,target,m,colW,fit]);const docked=!target||!pos;const compact=fit==="compact"&&viewNow.current.step===4&&target!==null;const[dockAt,setDockAt]=useState2(null);const[opened,setOpened]=useState2(takeOpen);const placeKey=`${view.step}|${route.page}|${route.params.project}`;const lastPlace=useRef2(placeKey);useEffect2(()=>{if(lastPlace.current===placeKey)return;lastPlace.current=placeKey;setOpened(false)},[placeKey]);const parked=m!==null&&docked&&!opened;useLayoutEffect(()=>{const el=cardEl;if(!el||!m||!docked||parked){setDockAt(null);return}const size={w:el.offsetWidth,h:el.offsetHeight};const vw=window.innerWidth;const vh=window.innerHeight;const head=document.querySelector(".band-shell-mhead")?.getBoundingClientRect();const spots=dockSpots(size,{width:vw,height:vh,left:m.left},narrow,head&&head.height>0?head.bottom:0);const at2=spots[dockPlace(size,spots,[...m.hard,...m.next],m.keep)]??null;setDockAt(old=>old&&at2&&old.x===at2.x&&old.y===at2.y?old:at2)},[cardEl,m,docked,parked,narrow]);const closeCard=docked?()=>setOpened(false):()=>void act("collapse");closeRef.current=closeCard;useEffect2(()=>{setPill(parked&&hasProjects!==void 0?{step:view.step,total,title:view.title,onOpen:()=>setOpened(true)}:null)},[setPill,parked,hasProjects,view.step,view.title,total]);useEffect2(()=>()=>setPill(null),[setPill]);const goBack=!onPage&&(view.page==="home"?home&&(()=>ctx.app.navigate({page:home.key})):project&&projectPage&&(()=>ctx.app.navigate({page:projectPage.key,params:{workshop:project.workshop,project:project.id}})));const at=docked?dockAt:pos;const style={"--band-guide-stripe":`${stripePercent(view.step)}%`,...at?docked&&narrow?{left:"12px",right:"12px",top:`${at.y}px`,bottom:"auto"}:{left:`${at.x}px`,top:`${at.y}px`,right:"auto",bottom:"auto"}:{},...colW!==null?{width:`${colW}px`}:{}};if(hasProjects===void 0)return null;if(m===null&&!opened)return null;if(parked&&!target)return null;return jsxs2(Fragment2,{children:[target&&!docked&&jsx2("div",{className:"band-guide-ring","aria-hidden":"true",style:{left:target.left-4,top:target.top-4,width:target.right-target.left+8,height:target.bottom-target.top+8}}),jsxs2("dialog",{open:true,ref:attachCard,className:["band-guide-card",parked?"is-measuring":docked?"is-docked":"",compact?"is-compact":""].filter(Boolean).join(" "),"data-parked":parked?"true":"false","aria-hidden":parked?true:void 0,"aria-modal":"false","aria-labelledby":titleId,"data-band-guide-step":view.step,style,children:[!compact&&jsx2(GuideStaff,{step:view.step,total}),!compact&&jsxs2("div",{className:"band-guide-count",children:["\u7B2C ",view.step," \u6B65\uFF0C\u5171 ",total," \u6B65"]}),jsx2("h3",{id:titleId,children:view.title}),jsx2("p",{children:compact?view.brief??view.where:view.body}),!compact&&docked&&jsx2("p",{className:"band-guide-where",children:view.where}),jsxs2("div",{className:"band-guide-foot",children:[!compact&&jsx2("a",{href:docs,target:"_blank",rel:"noreferrer",children:"\u4E86\u89E3\u66F4\u591A"}),goBack&&jsx2("button",{type:"button",className:"btn sm",onClick:goBack,children:view.page==="home"?"\u56DE\u9996\u9875":"\u6253\u5F00\u9879\u76EE"}),jsx2("button",{type:"button",className:"btn ghost sm",onClick:closeCard,children:"\u6536\u8D77"}),!compact&&jsx2("button",{type:"button",className:"btn ghost sm",onClick:()=>void act("skip"),children:"\u8DF3\u8FC7\u6307\u5F15"})]})]}),jsx2("output",{className:"sr-only",children:view.title})]})}var FIN_W=322;var FIN_K=1.8;var FIN_TX=(FIN_W-111*FIN_K)/2;var FIN_TY=-1;var LOCKUP_HEADS=[[10,20.75],[19.5,16.25],[29,11.75]];function prefersStill(){return typeof window!=="undefined"&&typeof window.matchMedia==="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function GuideFinaleMark({total,still=prefersStill()}){const H=46;const ys=[34,30,26,30,22,18,14].slice(0,total);const gap=(FIN_W-40)/Math.max(total-1,1);const mid=Math.floor((total-1)/2);const headAt=j=>{const[x,y]=LOCKUP_HEADS[j]??[0,0];return[FIN_TX+x*FIN_K,FIN_TY+y*FIN_K]};const[haloX,haloY]=headAt(1);return jsxs2("svg",{className:"band-guide-staff band-guide-finale",viewBox:`0 0 ${FIN_W} ${H+2}`,width:FIN_W,height:H+2,"aria-hidden":"true","data-still":still||void 0,style:{"--fin-t0":`${400+total*250}ms`},children:[[0,1,2,3,4].map(i=>jsx2("line",{className:"band-guide-finale-line",x1:0,x2:FIN_W,y1:8+i*8,y2:8+i*8},i)),ys.map((y,i)=>{const x=20+i*gap;const j=i-(mid-1);const kept=j>=0&&j<=2;const[fx,fy]=kept?headAt(j):[x,y];return jsx2("g",{className:`band-guide-note${kept?" is-kept":""}${i===mid?" is-mid":""}`,style:{"--dx":`${fx-x}px`,"--dy":`${fy-y}px`,"--hop":`${400+i*250}ms`},children:jsx2("g",{className:"band-guide-hop",children:jsx2("ellipse",{cx:x,cy:y,rx:kept?3.3*FIN_K:4.6,ry:kept?2.15*FIN_K:3.1,transform:`rotate(-20 ${x} ${y})`})})},i)}),jsx2("circle",{className:"band-guide-halo",cx:haloX,cy:haloY,r:6}),jsxs2("g",{transform:`translate(${FIN_TX} ${FIN_TY}) scale(${FIN_K})`,children:[jsxs2("g",{className:"band-guide-stems",children:[jsx2("path",{className:"band-guide-stem",d:"M12.36 20.12V7.65"}),jsx2("path",{className:"band-guide-stem",d:"M21.86 15.62V5.35"}),jsx2("path",{className:"band-guide-stem",d:"M31.36 11.12V3.05"})]}),jsx2("path",{className:"band-guide-beam",d:"M11.54 6.4L32.19 1.4V4.3L11.54 9.3Z"}),jsx2("text",{className:"band-guide-wordmark",x:46,y:23,children:"Band"})]})]})}function GuideFinale({agent,total,docs,onClose}){const card=useRef2(null);const before=useRef2(null);const titleId=useId2();const close=useCallback2((later=false)=>{onClose();const restore=()=>{const el=before.current;if(el instanceof HTMLElement&&el.isConnected&&!blockingDialog(card.current))el.focus()};if(later)setTimeout(restore,0);else restore()},[onClose]);useEffect2(()=>{before.current=document.activeElement;const onDown=e=>{if(!card.current?.contains(e.target))close(true)};const onFinaleEsc=withImeGuard2(e=>{if(e.key==="Escape"&&!blockingDialog(card.current))close()});document.addEventListener("mousedown",onDown);document.addEventListener("keydown",onFinaleEsc);return()=>{document.removeEventListener("mousedown",onDown);document.removeEventListener("keydown",onFinaleEsc)}},[close]);return jsxs2("dialog",{open:true,ref:card,className:"band-guide-card is-finale","aria-modal":"false","aria-labelledby":titleId,children:[jsx2(GuideFinaleMark,{total}),jsx2("h3",{id:titleId,children:DONE_TITLE}),jsx2("p",{children:doneBody(agent,total)}),jsxs2("div",{className:"band-guide-foot",children:[jsx2("a",{href:docs,target:"_blank",rel:"noreferrer",children:"\u4E86\u89E3\u66F4\u591A"}),jsx2("button",{type:"button",className:"btn primary sm",onClick:()=>close(),children:"\u5B8C\u6210"})]})]})}function nextScope(prev,route,enters){if(route.workshop===void 0)return void 0;if(enters)return route.workshop;return route.workshop===prev?prev:void 0}function isWorkshopPage(page){return page.route!==void 0&&isWorkshopPagePattern2(page.route)}function workshopNav(pages){const order=p=>typeof p.meta["nav-order"]==="number"?p.meta["nav-order"]:Number.POSITIVE_INFINITY;return pages.filter(p=>isWorkshopPage(p)&&p.meta.nav!==false&&!p.route.split("/").some(s=>s.startsWith(":")&&s!==":workshop")).map((p,i)=>({p,i})).sort((a,b)=>order(a.p)-order(b.p)||a.i-b.i).map(({p})=>p)}var RELEASE_MARK={created:{text:"MR \u5F85\u5408\u5165",tone:"neutral",title:"\u5DF2\u5B8C\u6210 \xB7 MR \u5F85\u5408\u5165"},pending:{text:"\u6B63\u5728\u5F00 MR",tone:"neutral",title:"\u5DF2\u5B8C\u6210 \xB7 \u6B63\u5728\u5F00 MR"},failed:{text:"MR \u6CA1\u5F00\u6210",tone:"failed",title:"\u5DF2\u5B8C\u6210 \xB7 MR \u6CA1\u5F00\u6210"}};var DONE_MARK={text:"\u5DF2\u5B8C\u6210",tone:"done",title:"\u5DF2\u5B8C\u6210"};function sideGroups(projects,inbox,workshops,now){const running=new Set(inbox.inProgress.filter(i=>i.status==="running").map(i=>i.projectId));const queued=new Set(inbox.inProgress.filter(i=>i.status==="queued").map(i=>i.projectId));const order=new Map(workshops.map((w,i)=>[w.id,i]));const groups=new Map;const sorted=[...projects].sort((a,b)=>b.lastActivityAt.localeCompare(a.lastActivityAt));for(const p of sorted){const g=groups.get(p.workshop.id)??{workshop:p.workshop,needs:0,rows:[]};groups.set(p.workshop.id,g);const id=p.project.id;const glyph=running.has(id)?"working":p.needsMe>0?"needs":queued.has(id)?"queued":"";g.needs+=p.needsMe;g.rows.push({id,name:p.project.name,time:shortWhen(p.lastActivityAt,now),glyph,bg:running.has(id)&&queued.has(id),needs:p.needsMe,...p.status==="completed"?{done:p.release?RELEASE_MARK[p.release]:DONE_MARK}:{}})}const rank=id=>order.get(id)??Number.MAX_SAFE_INTEGER;return[...groups.values()].sort((a,b)=>rank(a.workshop.id)-rank(b.workshop.id))}function turnCounts(projects,inbox,route){const active=projects.filter(p=>!p.project.archivedAt&&p.status!=="archived"&&p.status!=="completed");const current=route.params.project?active.find(p=>(p.project.id===route.params.project||route.workshop!==void 0&&p.project.slug===route.params.project)&&(route.workshop===void 0||p.workshop.id===route.workshop)):void 0;const counted=route.params.project?current?[current]:[]:active;const projectIds=new Set(counted.map(p=>p.project.id));const turns=inbox.inProgress.filter(item=>projectIds.has(item.projectId));return{running:turns.filter(item=>item.status==="running").length,queued:turns.filter(item=>item.status==="queued").length}}function needsYouCount(inbox,workshops){const models=workshops.filter(w=>w.canAdmin&&w.model&&w.model.state!=="not_provisioned"&&w.userModelKey!=="require"&&w.model.state!=="configured");return inbox.needsYou.filter(isAlerting).length+(inbox.workshops?.filter(isAlerting).length??0)+(inbox.workshopCopyBlocked?.filter(isAlerting).length??0)+models.length}var LIBRARY_WORDS=/^(library|artifacts?)$/i;var SETTINGS_WORDS=/^settings?$/i;var WORKSHOP_SEGMENTS=new Set(["x","about","new"]);function guessMissing(path){const seg=path.split("/").filter(Boolean);const[a,b,c,d]=seg;if(a==="settings"||a!==void 0&&SETTINGS_WORDS.test(a)&&seg.length===1){return{target:{id:"connections"},params:{},label:"\u6253\u5F00\u6211\u7684\u8FDE\u63A5"}}let params;let word;if(a==="w"&&b&&c){if(WORKSHOP_SEGMENTS.has(c))return void 0;params={workshop:b,project:c};word=d}else if(a==="p"&&b){params={project:b};word=c}if(!params)return void 0;if(word!==void 0&&LIBRARY_WORDS.test(word))return{target:{id:"library"},params,label:"\u6253\u5F00\u4EA7\u7269\u5E93"};if(word!==void 0&&SETTINGS_WORDS.test(word))return{target:{id:"settings"},params:{...params,tab:"members"},label:"\u6253\u5F00\u9879\u76EE\u8BBE\u7F6E"};return{target:{entry:"project"},params,label:"\u56DE\u5230\u8FD9\u4E2A\u9879\u76EE"}}function settingsFrame(doc,title,view){const box=doc.createElement("div");box.innerHTML=renderToStaticMarkup(createElement(SettingsLayout,{navLabel:`${title}\u5206\u533A`,title,groups:[],view,children:createElement(SettingsLoading,{text:`\u6B63\u5728\u8BFB\u53D6${title}\u2026`})}));return box.firstElementChild}function mountPage(host,title,chrome,mount,skeleton){const doc=host.ownerDocument;const content=doc.createElement("div");content.className="band-shell-page-content";const loading=doc.createElement("div");loading.className="band-shell-transition";loading.setAttribute("role","status");loading.setAttribute("aria-label",`\u6B63\u5728\u6253\u5F00${title}`);const head=chrome?.cloneNode(true);let body=loading;if(head){head.classList.add("band-shell-transition-chrome");head.setAttribute("inert","");head.setAttribute("aria-hidden","true");for(const node of[head,...head.querySelectorAll("*")]){for(const attr of["id","autofocus","aria-controls","aria-labelledby","aria-describedby"])node.removeAttribute(attr)}loading.append(head);const frame=head.classList.contains("band-sf")?head:head.querySelector(".band-sf");if(frame){loading.classList.add("band-shell-transition-settings");const fresh=settingsFrame(doc,title,frame.dataset.view==="index"?"index":"page");const scroll=fresh.querySelector(".band-sf-scroll");body=fresh.querySelector("main")??loading;body.classList.add("band-shell-transition-body");if(scroll)frame.append(scroll)}}else{const heading=doc.createElement("h1");heading.textContent=title;loading.append(heading)}const label=doc.createElement("p");label.className="sub";label.textContent="\u6B63\u5728\u6253\u5F00\u9875\u9762\u2026";if(skeleton==="settings"){if(!head?.classList.contains("band-sf")&&!head?.querySelector(".band-sf")){loading.classList.add("band-shell-transition-settings");const frame=settingsFrame(doc,title,"page");frame.classList.add("band-shell-transition-frame");body=frame.querySelector("main")??loading;loading.append(frame)}}else{if(body!==loading)body.replaceChildren();body.append(label);for(let i=0;i<4;i++){const row=doc.createElement("div");row.className="band-shell-skeleton";row.setAttribute("aria-hidden","true");body.append(row)}}host.replaceChildren(loading,content);const ready=()=>{const pendingHead=content.querySelector(".band-project-head, .band-library-projecthead");const heading=content.querySelector(".proj-head h1, .band-library-head, .band-sf-title");if(pendingHead&&!heading&&!content.querySelector('[role="alert"], .band-surface-error'))return;if([...content.querySelectorAll("*")].some(el=>!el.closest("style,script")&&[...el.childNodes].some(n=>n.nodeType===3&&n.textContent?.trim()))){loading.remove();observer.disconnect()}};const observer=new MutationObserver(ready);observer.observe(content,{childList:true,subtree:true,characterData:true});const dispose=mount(content);ready();return()=>{observer.disconnect();dispose?.();host.replaceChildren()}}function pageChrome(host){const settings=host.querySelector(".band-sf");const nav=settings?.querySelector(".band-sf-nav");if(settings&&nav){const frame=settings.cloneNode(false);frame.append(nav.cloneNode(true));const page=settings.closest(".band-settings-page");const projectHead=page?.querySelector(".band-settings-projecthead");if(page&&projectHead){const wrap=page.cloneNode(false);wrap.append(projectHead.cloneNode(true),frame);return wrap}return frame}return host.querySelector(".band-sf-nav, .band-project-head, .proj-head, header, .band-library-head")}var EMPTY={projects:[],workshops:[],threads:[]};function useDebounced(value,ms){const[v,setV]=useState3(value);useEffect3(()=>{const t=setTimeout(()=>setV(value),ms);return()=>clearTimeout(t)},[value,ms]);return v}var isStatus=s=>ThreadStatusSchema.safeParse(s).success;function SearchDialog({ctx,pages,scope,onClose,onNavigate}){const sources=useSlotEntries(ctx,SEARCH);const[text,setText]=useState3("");const{settled,imeProps}=useSettledText(text);const query=useDebounced(settled.trim(),150);const[result,setResult]=useState3(null);const[error,setError]=useState3(null);const[active,setActive]=useState3(0);const input=useRef3(null);const dialog=useRef3(null);const listId=useId3();useEffect3(()=>{const before=document.activeElement;input.current?.focus();return()=>before?.focus?.()},[]);useEffect3(()=>{if(query===""){setResult(null);setError(null);return}let live=true;ctx.app.data.search(query,scope===void 0?void 0:{workshop:scope}).then(data2=>{if(!live)return;setResult({query,data:data2});setError(null);setActive(0)},e=>live&&setError(e instanceof Error?e.message:String(e)));return()=>{live=false}},[ctx,query,scope]);const about=pageFor(pages,"about");const projectPage=pageFor(pages,"project")?.key;const openProject=params=>projectPage&&ctx.app.navigate({page:projectPage,params});const finish=()=>{onClose();onNavigate()};const done=fn=>()=>{finish();fn()};const data=result?.data??EMPTY;const hits=[...data.projects.map(p=>({key:`p:${p.project.id}`,kind:"\u9879\u76EE",title:p.project.name,sub:p.workshop.name,icon:p.workshop.icon,open:done(()=>openProject({workshop:p.workshop.id,project:p.project.id}))})),...data.workshops.map(w=>({key:`w:${w.id}`,kind:"\u5DE5\u574A",title:w.name,sub:w.description,icon:w.icon,open:done(()=>about&&ctx.app.navigate({page:about.key,params:{workshop:w.id}}))})),...data.threads.map(t=>({key:`t:${t.projectId}:${t.threadId}`,kind:"\u610F\u89C1",title:t.excerpt,sub:`${t.projectName} #${t.mark} \xB7 ${isStatus(t.status)?statusText(t.status):t.status}`,open:done(()=>{const go=workshop=>openProject({project:t.projectId,thread:t.threadId,...workshop?{workshop}:{}});const known=data.projects.find(p=>p.project.id===t.projectId)?.workshop.id;if(known)return go(known);ctx.app.data.projects().then(ps=>go(ps.find(p=>p.project.id===t.projectId)?.workshop.id),()=>go())})}))];const current=hits[Math.min(active,hits.length-1)];const currentId=current?`${listId}-${current.key}`:void 0;const byKey=useRef3(false);const body=useRef3(null);useEffect3(()=>{if(result&&body.current)body.current.scrollTop=0},[result]);useEffect3(()=>{if(!currentId||!byKey.current)return;byKey.current=false;const el=document.getElementById(currentId);if(el)scrollIntoPanel(el)},[currentId]);const onKey=withImeGuard3(e=>{if(e.key==="Tab"){const all=[...dialog.current?.querySelectorAll("input, button, a[href], select, textarea, [tabindex='0']")??[]];const first=all[0];const last=all[all.length-1];if(e.shiftKey&&document.activeElement===first){e.preventDefault();last?.focus()}else if(!e.shiftKey&&document.activeElement===last){e.preventDefault();first?.focus()}}else if(e.key==="Escape"){e.preventDefault();onClose()}else if(e.key==="ArrowDown"&&hits.length>0){e.preventDefault();byKey.current=true;setActive(i=>(i+1)%hits.length)}else if(e.key==="ArrowUp"&&hits.length>0){e.preventDefault();byKey.current=true;setActive(i=>(i-1+hits.length)%hits.length)}else if(e.key==="Enter"&&current&&result?.query===settled.trim()){e.preventDefault();current.open()}});const searching=query!==""&&result?.query!==query&&!error;return jsxs3("div",{className:"band-shell-overlay",children:[jsx3("div",{className:"band-shell-overlay-scrim",onClick:onClose}),jsxs3("div",{ref:dialog,className:"band-shell-search-dialog",role:"dialog","aria-modal":"true","aria-label":"\u641C\u7D22",onKeyDown:onKey,children:[jsxs3("div",{className:"band-shell-search-field",children:[jsx3("span",{className:"band-shell-search-ic","aria-hidden":"true"}),jsx3("input",{ref:input,type:"search",value:text,onChange:e=>setText(e.target.value),...imeProps,placeholder:scope?"\u641C\u8FD9\u4E2A\u5DE5\u574A\u7684\u9879\u76EE\u3001\u610F\u89C1":"\u641C\u9879\u76EE\u3001\u5DE5\u574A\u3001\u610F\u89C1","aria-label":"\u641C\u7D22",role:"combobox","aria-expanded":hits.length>0,"aria-controls":listId,"aria-activedescendant":currentId,autoComplete:"off"}),jsx3("kbd",{children:"Esc"})]}),jsxs3("div",{ref:body,className:"band-shell-search-body",children:[query===""&&jsx3("p",{className:"band-shell-search-hint",children:"\u8F93\u5165\u9879\u76EE\u540D\u3001\u5DE5\u574A\u540D\uFF0C\u6216\u610F\u89C1\u91CC\u7684\u51E0\u4E2A\u5B57\u3002"}),error&&jsxs3("p",{className:"band-shell-search-hint",role:"alert",children:["\u641C\u7D22\u51FA\u9519\u4E86\uFF1A",error]}),searching&&jsx3("p",{className:"band-shell-search-hint",children:"\u6B63\u5728\u641C\u2026"}),result&&result.query===query&&hits.length===0&&jsxs3("p",{className:"band-shell-search-hint",children:["\u6CA1\u6709\u627E\u5230\u300C",query,"\u300D\u3002"]}),jsx3("div",{id:listId,role:"listbox",tabIndex:-1,"aria-label":"\u641C\u7D22\u7ED3\u679C",className:"band-shell-search-list",children:hits.map((h,i)=>jsxs3("div",{id:`${listId}-${h.key}`,role:"option","aria-selected":current?.key===h.key,tabIndex:-1,className:"band-shell-search-hit",onMouseMove:()=>setActive(i),onClick:h.open,onKeyDown:withImeGuard3(e=>e.key==="Enter"&&h.open()),children:[h.kind==="\u610F\u89C1"?jsx3("span",{className:"band-shell-search-hash","aria-hidden":"true",children:"#"}):jsx3(WorkshopIcon,{icon:h.icon,size:16}),jsx3("span",{className:"band-shell-search-t",children:h.title}),jsx3("span",{className:"band-shell-search-d",children:h.sub}),jsx3("span",{className:"band-shell-search-k",children:h.kind})]},h.key))}),query!==""&&sources.map(s=>jsxs3("section",{className:"band-shell-search-source","aria-label":String(s.meta.title),children:[jsx3("h3",{children:String(s.meta.title)}),jsx3(Mount,{mount:el=>ctx.slots.mount(el,SEARCH,{key:s.key,owner:{query,...scope?{workshop:scope}:{},close:finish}}),deps:[ctx,s.key,query,scope]})]},s.key))]})]})]})}var THEMES=[["system","\u8DDF\u968F\u7CFB\u7EDF"],["light","\u6D45\u8272"],["dark","\u6DF1\u8272"]];function UserMenu({ctx,theme,setTheme,onNavigate}){const items=useSlotEntries2(ctx,USER_MENU);const me=ctx.app.member;const[open,setOpen]=useState4(false);const button=useRef4(null);const panel=useRef4(null);const id=useId4();const close=()=>{setOpen(false);button.current?.focus()};const finish=()=>{close();onNavigate()};useEffect4(()=>{if(!open)return;panel.current?.querySelector("button, select, a, input")?.focus();const onDown=e=>{const t=e.target;if(!panel.current?.contains(t)&&!button.current?.contains(t))setOpen(false)};document.addEventListener("mousedown",onDown);return()=>document.removeEventListener("mousedown",onDown)},[open]);return jsxs4("div",{className:"band-shell-me",children:[open&&jsxs4("div",{ref:panel,id,className:"band-shell-menu",role:"group","aria-label":"\u6211\u7684\u83DC\u5355",onKeyDown:withImeGuard4(e=>{if(e.key==="Escape"){e.preventDefault();close()}}),children:[jsxs4("div",{className:"band-shell-menu-row",role:"group","aria-label":"\u4E3B\u9898",children:[jsx4("span",{className:"band-shell-menu-label",children:"\u4E3B\u9898"}),jsx4("div",{className:"seg",children:THEMES.map(([k,label])=>jsx4("button",{type:"button","aria-pressed":theme===k,onClick:()=>setTheme(k),children:label},k))})]}),items.map(it=>jsx4(Mount2,{className:"band-shell-menu-item",mount:el=>ctx.slots.mount(el,USER_MENU,{key:it.key,owner:{close:finish}}),deps:[ctx,it.key]},it.key)),jsx4(FeedbackMenuItem,{onOpen:finish}),jsx4(GuideMenuItem,{onOpen:close}),jsx4("a",{className:"btn ghost band-shell-menu-link",href:"/docs",onClick:finish,children:"\u4F7F\u7528\u6587\u6863"})]}),jsxs4("button",{ref:button,type:"button",className:"band-shell-me-btn","aria-expanded":open,"aria-controls":open?id:void 0,onClick:()=>setOpen(o=>!o),children:[jsx4(Avatar,{id:me.id,name:me.displayName,decorative:true}),jsxs4("span",{className:"band-shell-me-name",children:[me.displayName,me.title&&jsx4("small",{children:me.title})]}),jsx4("span",{className:"band-shell-me-caret","aria-hidden":"true",children:"\u2303"})]})]})}var DONE_TONE={done:" s-done",neutral:"",failed:" s-failed"};function Sidebar({ctx,route,pages,scope,phone,onToggle,onNavigate,theme,setTheme}){const navExtra=useSlotEntries3(ctx,NAV);const[searching,setSearching]=useState5(false);const filter=scope===void 0?void 0:{workshop:scope};const outsider=ctx.app.member.betaMember===false;const{data,error,reload}=useAppData(ctx,async d=>{if(outsider)return void 0;const[projects,inbox,workshops]=await Promise.all([d.projects(filter),d.inbox(filter),d.workshops(filter)]);return{projects,inbox,workshops}},[scope,outsider]);useEffect5(()=>{const on=withImeGuard5(e=>{const t=e.target;if(e.defaultPrevented||t?.isContentEditable)return;if(document.querySelector("[data-band-layer]"))return;if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="k"){e.preventDefault();setSearching(true)}});window.addEventListener("keydown",on);return()=>window.removeEventListener("keydown",on)},[]);const home=pageFor(pages,"home");const catalog=pageFor(pages,"catalog");const about=pageFor(pages,"about");const create=pageFor(pages,"new");const inScope=scope!==void 0;const scoped=(p={})=>inScope?{...p,workshop:scope}:p;const go=(page,params={})=>{onNavigate();ctx.app.navigate({page,params})};const nav=[];if(home){nav.push({key:home.key,label:"\u5F85\u6211\u5904\u7406",page:home.key,params:scoped(),count:data&&needsYouCount(data.inbox,data.workshops)})}if(!inScope&&catalog)nav.push({key:catalog.key,label:"\u5DE5\u574A",page:catalog.key,params:{}});if(inScope&&about)nav.push({key:about.key,label:"\u5173\u4E8E\u5DE5\u574A",page:about.key,params:scoped()});for(const n of navExtra){const where=n.meta.where??"all";if(where==="global"&&inScope)continue;if(where==="workshop"&&!inScope)continue;nav.push({key:n.key,label:String(n.meta.label),page:String(n.meta.page),params:scoped()})}if(inScope)for(const p of workshopNav(pages))nav.push({key:p.key,label:String(p.meta.title),page:p.key,params:scoped()});const isCurrent=page=>{const r=route.page??"";if(r===page||r.endsWith(`/${page}`))return true;return!inScope&&page===catalog?.key&&(r===about?.key||r===create?.key)};const card=inScope?data?.workshops.find(w=>w.id===scope):void 0;const groups=data?sideGroups(data.projects,data.inbox,data.workshops,new Date):[];const{running,queued}=data?turnCounts(data.projects,data.inbox,route):{running:0,queued:0};const newTarget=inScope?create:catalog;const lost=inScope&&data!==void 0&&card===void 0;const project=pageFor(pages,"project");return jsxs5("aside",{className:"side band-shell-side","aria-label":"\u4FA7\u680F",children:[jsxs5("div",{className:"side-top",children:[jsx5("button",{type:"button",className:inScope?"brand band-shell-brand-scope":"brand",onClick:()=>home&&go(home.key,scoped()),"aria-label":`${inScope?card?.name??scope:"Band"} \xB7 \u5F85\u6211\u5904\u7406`,children:inScope&&!lost?jsxs5(Fragment3,{children:[jsx5(WorkshopIcon2,{icon:card?.icon,size:20}),jsx5("span",{className:"band-shell-scope-name",children:card?.name??scope})]}):jsx5(LogoLockup,{})}),jsx5("button",{type:"button",className:"iconbtn",onClick:onToggle,"aria-label":phone?"\u5173\u95ED\u4FA7\u680F":"\u6536\u8D77\u4FA7\u680F",children:phone?jsx5("svg",{viewBox:"0 0 16 16",className:"band-shell-i16","aria-hidden":"true",children:jsx5("path",{d:"M4 4l8 8M12 4l-8 8"})}):jsxs5("svg",{viewBox:"0 0 16 16",className:"band-shell-i16","aria-hidden":"true",children:[jsx5("rect",{x:"2",y:"3",width:"12",height:"10",rx:"2"}),jsx5("path",{d:"M6.5 3v10"})]})}),newTarget&&jsx5("button",{type:"button",className:"iconbtn",onClick:()=>go(newTarget.key,scoped()),"aria-label":inScope?"\u65B0\u5EFA\u9879\u76EE":"\u65B0\u5EFA\u9879\u76EE\uFF1A\u5148\u9009\u5DE5\u574A",title:inScope?"\u65B0\u5EFA\u9879\u76EE":"\u65B0\u5EFA\u9879\u76EE\uFF1A\u5148\u9009\u5DE5\u574A",children:jsx5("svg",{viewBox:"0 0 16 16",className:"band-shell-i16","aria-hidden":"true",children:jsx5("path",{d:"M8 3.5v9M3.5 8h9"})})})]}),jsxs5("div",{className:"side-scroll",children:[jsxs5("button",{type:"button",className:"band-shell-search",onClick:()=>setSearching(true),children:[jsx5("span",{className:"band-shell-search-ic","aria-hidden":"true"}),jsx5("span",{children:inScope?`\u5728${card?.name??scope}\u91CC\u641C\u7D22`:"\u641C\u7D22"}),jsx5("kbd",{children:isMac()?"\u2318K":"Ctrl K"})]}),jsx5("nav",{className:"side-nav","aria-label":"\u4E3B\u5BFC\u822A",children:nav.map(n=>jsxs5("button",{type:"button",className:"srow",onClick:()=>go(n.page,n.params),"aria-current":isCurrent(n.page)?"page":void 0,children:[jsx5("span",{className:"nm",children:n.label}),n.count?jsx5("span",{className:"count","aria-label":`${n.count} \u4EF6`,children:n.count}):jsx5("span",{})]},n.key))}),outsider&&jsxs5("div",{className:"band-shell-side-note",children:[jsx5("span",{children:"\u5185\u6D4B\u4E2D"}),jsx5("a",{className:"linkish",href:"/beta",children:"\u7533\u8BF7\u5185\u6D4B"})]}),!outsider&&error&&!data&&jsx5("div",{className:"band-shell-side-note",children:jsxs5(ErrorNote2,{retry:reload,children:["\u9879\u76EE\u5217\u8868\u6CA1\u8BFB\u51FA\u6765\uFF1A",error]})}),!outsider&&!data&&!error&&jsxs5("div",{className:"band-shell-skeleton","aria-hidden":"true",children:[jsx5("i",{}),jsx5("i",{}),jsx5("i",{})]}),lost&&jsxs5("div",{className:"band-shell-side-note",children:["\u6CA1\u6709\u300C",scope,"\u300D\u8FD9\u4E2A\u5DE5\u574A\u3002",home&&jsx5("button",{type:"button",className:"linkish",onClick:()=>go(home.key,{}),children:"\u56DE\u5230\u5F85\u6211\u5904\u7406"})]}),data&&!lost&&groups.length===0&&jsxs5("div",{className:"band-shell-side-note",children:[inScope?"\u8FD9\u4E2A\u5DE5\u574A\u91CC\u8FD8\u6CA1\u6709\u4F60\u7684\u9879\u76EE\u3002":"\u8FD8\u6CA1\u6709\u9879\u76EE\u3002",newTarget&&jsx5("button",{type:"button",className:"linkish",onClick:()=>go(newTarget.key,scoped()),children:inScope?"\u65B0\u5EFA\u4E00\u4E2A":"\u53BB\u5DE5\u574A\u6311\u4E00\u4E2A\u5F00\u59CB"})]}),groups.map(g=>jsxs5("div",{className:"sgroup",children:[jsxs5("div",{className:"sgroup-h",children:[jsxs5("span",{className:"band-shell-group-name",children:[jsx5(WorkshopIcon2,{icon:g.workshop.icon,size:16,tile:true}),g.workshop.name]}),g.needs>0&&jsxs5("span",{className:"needs",children:[g.needs," \u9700\u8981\u4F60"]})]}),g.rows.map(r=>jsxs5("button",{type:"button",className:`srow${r.needs?" unread":""}`,onClick:()=>project&&go(project.key,{workshop:g.workshop.id,project:r.id}),"aria-current":route.params.project===r.id?"page":void 0,children:[jsx5("span",{className:"nm",children:r.name}),r.done?jsx5("span",{className:"tm band-shell-done",title:r.done.title,children:jsx5("span",{className:`chip plain${DONE_TONE[r.done.tone]}`,children:r.done.text})}):jsx5("span",{className:"tm",children:r.time}),jsx5(Glyph,{kind:r.glyph,bg:r.bg})]},r.id))]},g.workshop.id))]}),jsxs5("div",{className:"side-bottom",children:[inScope&&home&&jsx5("div",{className:"band-shell-links",children:jsxs5("button",{type:"button",onClick:()=>go(home.key,{}),children:[jsx5(BandMark,{size:14}),"\u5728 Band \u4E2D\u6253\u5F00\u5168\u90E8"]})}),(running>0||queued>0&&!route.params.project)&&jsxs5("div",{className:"side-foot",children:[route.params.project&&jsx5("span",{children:"\u672C\u9879\u76EE"}),running>0&&jsxs5("span",{className:"k",children:[jsx5(Glyph,{kind:"working"}),running," \u4E2A\u56DE\u5408\u5728\u8DD1"]}),queued>0&&!route.params.project&&jsxs5("span",{children:["\u6392\u961F ",queued]})]}),!phone&&jsx5(GuideDockPill,{}),jsx5(UserMenu,{ctx,theme,setTheme,onNavigate})]}),searching&&jsx5(SearchDialog,{ctx,pages,scope,onClose:()=>setSearching(false),onNavigate})]})}function isMac(){return typeof navigator!=="undefined"&&/Mac|iPhone|iPad/.test(navigator.platform)}var src_default=definePlugin({surfaces:{root:reactMount(ctx=>jsx6(Shell,{ctx}))}});var THEME_KEY="band-theme";var MAIN_ID="band-main";function readTheme(){try{const v=localStorage.getItem(THEME_KEY);return v==="light"||v==="dark"?v:"system"}catch{return"system"}}function useTheme(){const[theme,setTheme]=useState6(readTheme);useEffect6(()=>{const root=document.documentElement;if(theme==="system")root.removeAttribute("data-theme");else root.setAttribute("data-theme",theme)},[theme]);return[theme,t=>{setTheme(t);try{if(t==="system")localStorage.removeItem(THEME_KEY);else localStorage.setItem(THEME_KEY,t)}catch{}}]}function useWidth(){const[w,setW]=useState6(()=>window.innerWidth);useEffect6(()=>{const onResize=()=>setW(window.innerWidth);window.addEventListener("resize",onResize);return()=>window.removeEventListener("resize",onResize)},[]);return w}function embedded(win=window){try{if(win.self===win.top||win.parent.location.origin!==win.location.origin)return false}catch{return false}const nav=win.performance.getEntriesByType("navigation")[0];const first=nav?.name??win.location.href;return new URL(first,win.location.href).searchParams.has("preview")}function Shell({ctx}){const route=useRoute(ctx);const pages=useSlotEntries4(ctx,PAGES);const page=pages.find(p=>p.key===route.page);const home=pageFor(pages,"home");const loading=page===void 0&&route.page===null&&route.workshop!==void 0;const workshopPage=page!==void 0&&isWorkshopPage(page);const scopeRef=useRef5(void 0);const scope=useMemo2(()=>{scopeRef.current=nextScope(scopeRef.current,route,home!==void 0&&route.page===home.key||workshopPage||loading);return scopeRef.current},[route,home,workshopPage,loading]);const[theme,setTheme]=useTheme();const width=useWidth();const phone=width<=860;const[side,setSide]=useState6("auto");const[drawer,setDrawer]=useState6(false);const onProject=route.params.project!==void 0;const collapsed=!phone&&(side==="closed"||side==="auto"&&onProject&&width<1280);const lastPath=useRef5(route.path);useEffect6(()=>{if(lastPath.current===route.path)return;lastPath.current=route.path;setDrawer(false)},[route.path]);useEffect6(()=>{if(!drawer)return;const on=withImeGuard6(e=>e.key==="Escape"&&setDrawer(false));window.addEventListener("keydown",on);return()=>window.removeEventListener("keydown",on)},[drawer]);const title=page?String(page.meta.title):loading?"\u6B63\u5728\u6253\u5F00":"\u627E\u4E0D\u5230\u8FD9\u4E2A\u9875\u9762";useEffect6(()=>{document.title=title==="Band"?"Band":`${title} \xB7 Band`},[title]);const embed=useMemo2(()=>embedded(),[]);useEffect6(()=>{if(embed)document.documentElement.dataset.bandEmbed=""},[embed]);if(embed&&page)return jsxs6("div",{className:"band-shell-embed","data-band-frame":"embed",id:MAIN_ID,children:[jsx6(PageMount,{ctx,page,pages}),jsx6(ToastHost,{})]});if(page?.meta.frame==="bare")return jsxs6(Fragment4,{children:[jsx6(PageMount,{ctx,page,pages}),jsx6(ToastHost,{})]});const toggle=()=>phone?setDrawer(d=>!d):setSide(collapsed?"open":"closed");const cls=["band-shell",collapsed&&"is-collapsed",phone&&drawer&&"is-drawer"].filter(Boolean).join(" ");return jsxs6(Fragment4,{children:[jsx6(FeedbackProvider,{ctx,children:jsx6(GuideProvider,{ctx,children:jsxs6("div",{className:cls,"data-band-frame":"shell",children:[jsx6("a",{className:"sr-only band-shell-skip",href:`#${MAIN_ID}`,onClick:e=>{e.preventDefault();document.getElementById(MAIN_ID)?.focus()},children:"\u8DF3\u5230\u4E3B\u5185\u5BB9"}),jsx6(Sidebar,{ctx,route,pages,scope,phone,onToggle:toggle,onNavigate:()=>setDrawer(false),theme,setTheme}),jsx6("div",{className:"band-shell-scrim",onClick:()=>setDrawer(false)}),jsx6("section",{className:"band-shell-main",children:jsxs6("div",{className:"band-shell-body",id:MAIN_ID,tabIndex:-1,children:[(phone||collapsed)&&jsxs6("div",{className:"band-shell-mhead",children:[jsx6("button",{type:"button",className:"iconbtn",onClick:toggle,"aria-label":phone?"\u6253\u5F00\u4FA7\u680F":"\u5C55\u5F00\u4FA7\u680F","aria-expanded":phone?drawer:false,children:phone?"\u2630":"\u25E7"}),page?.meta.entry!=="project"&&jsx6("span",{className:"band-shell-mtitle",children:title}),jsx6(GuideDockPill,{})]}),page?jsx6(PageMount,{ctx,page,pages}):loading?jsx6("main",{className:"band-shell-missing","data-band-page":"loading","aria-busy":"true",children:jsx6("p",{className:"sub",children:"\u6B63\u5728\u6253\u5F00\u9875\u9762\u2026"})}):jsx6(Missing,{ctx,path:route.path,pages,home})]})}),jsx6(FeedbackCorner,{phone}),jsx6(GuideLayer,{ctx,route,pages})]})})}),jsx6(ToastHost,{})]})}function PageMount({ctx,page,pages}){const route=useRoute(ctx);const latest=useRef5(pages);latest.current=pages;const chrome=useRef5();const params=route.params;const{workshop:_w,thread:_t,...rest}=params;const identity=params.project!==void 0?rest:params;return jsx6(Mount3,{className:"band-shell-page","data-band-page":page.key,mount:el=>{const saved=chrome.current;const previous=saved&&saved.project===params.project?saved.node:null;const dispose=mountPage(el,String(page.meta.title??"\u9875\u9762"),previous??null,content=>ctx.slots.mount(content,PAGES,{key:page.key,owner:{params,page:entry=>pageFor(latest.current,entry)?.key}}),page.meta.skeleton==="settings"?"settings":void 0);return()=>{chrome.current={project:params.project,node:pageChrome(el)?.cloneNode(true)};dispose()}},deps:[ctx,page.key,JSON.stringify(identity)]})}function Missing({ctx,path,pages,home}){const guess=guessMissing(path);const target=guess?"entry"in guess.target?pageFor(pages,guess.target.entry):pages.find(p=>p.key.endsWith(`/${guess.target.id}`)):void 0;return jsxs6("main",{className:"band-shell-missing","data-band-page":"missing",children:[jsx6("h1",{children:"\u627E\u4E0D\u5230\u8FD9\u4E2A\u9875\u9762"}),jsxs6("p",{className:"sub",children:["\u53EF\u80FD\u662F\u5730\u5740\u8F93\u9519\u4E86\uFF0C\u6216\u8005\u8FD9\u4E2A\u9875\u9762\u5DF2\u7ECF\u4E0D\u5728\u4E86\u3002",target?"\u4F60\u53EF\u80FD\u60F3\u53BB\u4E0B\u9762\u8FD9\u91CC\u3002":"\u53EF\u4EE5\u4ECE\u5F85\u6211\u5904\u7406\u6216\u4FA7\u680F\u91CD\u65B0\u8FDB\u5165\u3002"]}),jsxs6("div",{className:"band-shell-missing-actions",children:[guess&&target&&jsx6("button",{type:"button",className:"btn primary",onClick:()=>ctx.app.navigate({page:target.key,params:guess.params}),children:guess.label}),home&&jsx6("button",{type:"button",className:guess&&target?"btn":"btn primary",onClick:()=>ctx.app.navigate({page:home.key}),children:"\u56DE\u5230\u5F85\u6211\u5904\u7406"})]}),jsx6("p",{className:"band-shell-missing-path",children:jsx6("code",{children:path})})]})}export{NAV,PAGES,SEARCH,SHELL,Shell,USER_MENU,src_default as default,embedded,pageFor};
1
+ import"../../chunks/chunk-JFPQMFKF.js";import{Mount as Mount3,ToastHost,reactMount,useRoute,useSlotEntries as useSlotEntries4,withImeGuard as withImeGuard6}from"@kanyun-ai-infra/band-plugin-react";import{definePlugin}from"@kanyun-ai-infra/band-plugin-sdk";import{useEffect as useEffect6,useMemo as useMemo2,useRef as useRef5,useState as useState6}from"react";import{FEEDBACK_BODY_MAX,feedbackTextLength}from"@kanyun-ai-infra/band-contracts/api";import{ErrorNote,failedBecause,withImeGuard}from"@kanyun-ai-infra/band-plugin-react";import{createContext,useCallback,useContext,useEffect,useId,useRef,useState}from"react";import{Fragment,jsx,jsxs}from"react/jsx-runtime";import{DIALOG_SELECTOR,NARROW_QUERY,blockingDialog,withImeGuard as withImeGuard2}from"@kanyun-ai-infra/band-plugin-sdk";import{createContext as createContext2,useCallback as useCallback2,useContext as useContext2,useEffect as useEffect2,useId as useId2,useLayoutEffect,useMemo,useRef as useRef2,useState as useState2}from"react";import{GUIDE_ANCHORS,artifactTypeDisplayName,roleDisplayName,stageDisplayName}from"@kanyun-ai-infra/band-contracts";import{GUIDE_STEPS}from"@kanyun-ai-infra/band-contracts/api";import{isWorkshopPagePattern}from"@kanyun-ai-infra/band-plugin-sdk";import{Fragment as Fragment2,jsx as jsx2,jsxs as jsxs2}from"react/jsx-runtime";import{isAlerting}from"@kanyun-ai-infra/band-contracts/needs-me";import{shortWhen}from"@kanyun-ai-infra/band-plugin-react";import{isWorkshopPagePattern as isWorkshopPagePattern2}from"@kanyun-ai-infra/band-plugin-sdk";import{SettingsLayout,SettingsLoading}from"@kanyun-ai-infra/band-plugin-react";import{createElement}from"react";import{renderToStaticMarkup}from"react-dom/server";import{BandMark,ErrorNote as ErrorNote2,Glyph,LogoLockup,WorkshopIcon as WorkshopIcon2,useAppData,useSlotEntries as useSlotEntries3,withImeGuard as withImeGuard5}from"@kanyun-ai-infra/band-plugin-react";import{useEffect as useEffect5,useState as useState5}from"react";import{ThreadStatusSchema}from"@kanyun-ai-infra/band-contracts";import{Mount,WorkshopIcon,scrollIntoPanel,statusText,useSettledText,useSlotEntries,withImeGuard as withImeGuard3}from"@kanyun-ai-infra/band-plugin-react";import{useEffect as useEffect3,useId as useId3,useRef as useRef3,useState as useState3}from"react";import{jsx as jsx3,jsxs as jsxs3}from"react/jsx-runtime";import{Avatar,Mount as Mount2,useSlotEntries as useSlotEntries2,withImeGuard as withImeGuard4}from"@kanyun-ai-infra/band-plugin-react";import{useEffect as useEffect4,useId as useId4,useRef as useRef4,useState as useState4}from"react";import{jsx as jsx4,jsxs as jsxs4}from"react/jsx-runtime";import{Fragment as Fragment3,jsx as jsx5,jsxs as jsxs5}from"react/jsx-runtime";import{Fragment as Fragment4,jsx as jsx6,jsxs as jsxs6}from"react/jsx-runtime";if(typeof document!=="undefined"&&document.head){const css='/* src/shell.css */\nhtml:has(.band-shell),\nbody:has(.band-shell) {\n overflow: hidden;\n overscroll-behavior: none;\n}\n.band-shell {\n --band-shell-side-w: 248px;\n display: grid;\n grid-template-columns: var(--band-shell-side-w) minmax(0, 1fr);\n height: 100vh;\n height: calc(100dvh - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px));\n}\n.band-shell > .band-shell-side {\n min-height: 0;\n padding-left: env(safe-area-inset-left, 0px);\n}\n.band-shell > .band-shell-side,\n.band-shell > .band-shell-side .side-bottom {\n grid-template-columns: minmax(0, 1fr);\n}\n.band-shell-main {\n background: var(--panel);\n border-radius: 14px;\n box-shadow: var(--shadow-card);\n min-width: 0;\n min-height: 0;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n margin: 10px 12px 10px 0;\n margin-right: max(12px, env(safe-area-inset-right, 0px));\n}\n.band-shell.is-collapsed {\n grid-template-columns: 0 minmax(0, 1fr);\n}\n.band-shell.is-collapsed > .band-shell-side {\n visibility: hidden;\n overflow: hidden;\n}\n.band-shell.is-collapsed > .band-shell-main {\n margin-left: max(12px, env(safe-area-inset-left, 0px));\n}\n.band-shell-body {\n flex: 1;\n min-height: 0;\n overflow: auto;\n overscroll-behavior: contain;\n display: flex;\n flex-direction: column;\n}\n.band-shell-body:where(:focus) {\n outline: none;\n}\n.band-shell-skip.sr-only:where(:focus) {\n position: fixed;\n top: 8px;\n left: 8px;\n z-index: var(--layer-pop);\n width: auto;\n height: auto;\n margin: 0;\n padding: 8px 12px;\n overflow: visible;\n clip-path: none;\n border-radius: var(--r);\n background: var(--panel);\n box-shadow: var(--shadow-pop);\n color: var(--ink);\n font-size: var(--fs-ui);\n}\n.band-shell-page,\n.band-shell-page > .band-react-surface,\n.band-shell-page-content,\n.band-shell-page-content > .band-react-surface {\n display: contents;\n}\n.band-shell-mhead {\n display: flex;\n flex: none;\n align-items: center;\n gap: 8px;\n padding: 10px 14px 0;\n min-height: 44px;\n}\n.band-shell-mtitle {\n font-weight: 600;\n font-size: var(--fs-body);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.band-shell-scrim {\n display: none;\n}\n.band-shell-side .side-top {\n padding-top: 16px;\n}\n.band-shell-side .side-top .brand {\n margin-right: auto;\n min-width: 0;\n}\n.band-shell-side .side-scroll {\n padding-top: 6px;\n gap: 18px;\n}\n.band-shell-side .side-nav .srow {\n grid-template-columns: minmax(0, 1fr) auto;\n}\n.band-shell-brand-scope {\n font-weight: 600;\n}\n.band-shell-scope-name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.band-shell-group-name {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n min-width: 0;\n}\n.band-shell-side-note {\n padding: 2px 10px;\n font-size: var(--fs-dense);\n color: var(--muted);\n display: grid;\n gap: 6px;\n justify-items: start;\n}\n.band-shell-side-note .linkish {\n border: 0;\n background: none;\n padding: 0;\n color: var(--accent-text);\n font: inherit;\n cursor: pointer;\n}\n.band-shell-skeleton {\n display: grid;\n gap: 10px;\n padding: 6px 10px;\n}\n.band-shell-skeleton i {\n display: block;\n height: 12px;\n border-radius: 6px;\n background: var(--fill-2);\n animation: band-shell-breathe 1.6s var(--ease) infinite alternate;\n}\n.band-shell-skeleton i:nth-child(2) {\n width: 72%;\n}\n.band-shell-skeleton i:nth-child(3) {\n width: 54%;\n}\n@keyframes band-shell-breathe {\n to {\n opacity: 0.45;\n }\n}\n@media (prefers-reduced-motion: reduce) {\n .band-shell-skeleton i {\n animation: none;\n }\n}\n.band-shell-search {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n border: 0;\n border-radius: 9px;\n background: var(--side-hover);\n color: var(--muted);\n font: inherit;\n font-size: var(--fs-row);\n padding: 6px 10px;\n text-align: left;\n cursor: pointer;\n transition: color var(--sixteenth) var(--ease);\n}\n.band-shell-search:hover {\n color: var(--ink);\n}\n.band-shell-search span:nth-child(2) {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.band-shell-search kbd,\n.band-shell-search-field kbd {\n font-family: var(--mono);\n font-size: var(--fs-badge);\n color: var(--muted);\n border-radius: 5px;\n padding: 1px 6px;\n background: var(--fill-2);\n}\n.band-shell-search-ic {\n position: relative;\n flex: none;\n width: 14px;\n height: 14px;\n}\n.band-shell-search-ic::before {\n content: "";\n position: absolute;\n left: 1px;\n top: 1px;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n border: 1.5px solid currentColor;\n}\n.band-shell-search-ic::after {\n content: "";\n position: absolute;\n left: 9.5px;\n top: 9px;\n width: 1.5px;\n height: 5px;\n background: currentColor;\n transform: rotate(-45deg);\n}\n.band-shell-side .side-bottom {\n display: grid;\n gap: 2px;\n padding-bottom: 8px;\n}\n.band-shell-links {\n padding: 0 14px 4px 18px;\n font-size: var(--fs-meta);\n}\n.band-shell-links button {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n border: 0;\n background: none;\n padding: 0;\n font: inherit;\n color: var(--muted);\n cursor: pointer;\n}\n.band-shell-links button:hover {\n color: var(--ink);\n}\n.band-shell-side .side-foot {\n padding-top: 6px;\n padding-bottom: 6px;\n}\n.band-shell-me {\n position: relative;\n padding: 0 10px;\n}\n.band-shell-me-btn {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n border: 0;\n border-radius: 10px;\n background: none;\n padding: 7px 8px;\n text-align: left;\n font: inherit;\n color: var(--ink);\n cursor: pointer;\n transition: background var(--sixteenth) var(--ease);\n}\n.band-shell-me-btn:hover,\n.band-shell-me-btn[aria-expanded=true] {\n background: var(--side-hover);\n}\n.band-shell-me-name {\n flex: 1;\n min-width: 0;\n display: grid;\n font-size: var(--fs-row);\n line-height: 1.35;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.band-shell-me-name small {\n font-size: var(--fs-meta);\n color: var(--muted);\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.band-shell-me-caret {\n color: var(--muted);\n font-size: var(--fs-meta);\n}\n.band-shell-menu {\n position: absolute;\n left: 10px;\n right: 10px;\n bottom: calc(100% + 6px);\n z-index: 20;\n background: var(--panel);\n border-radius: var(--r-lg);\n box-shadow: var(--shadow-pop);\n padding: 8px;\n display: grid;\n gap: 4px;\n}\n.band-shell-menu-row {\n display: grid;\n gap: 6px;\n padding: 4px 6px;\n}\n.band-shell-menu-label {\n font-size: var(--fs-meta);\n color: var(--muted);\n}\n.band-shell-menu-row .seg {\n justify-self: stretch;\n}\n.band-shell-menu-row .seg button {\n flex: 1;\n}\n.band-shell-menu-item:empty {\n display: none;\n}\n.band-shell-menu-item :where(.btn) {\n box-sizing: border-box;\n width: 100%;\n}\n.band-shell-menu-link {\n box-sizing: border-box;\n width: 100%;\n text-decoration: none;\n}\n.band-shell-overlay {\n position: fixed;\n inset: 0;\n z-index: 60;\n display: grid;\n justify-items: center;\n align-items: start;\n padding: max(12vh, 24px) 16px 16px;\n}\n.band-shell-overlay-scrim {\n position: absolute;\n inset: 0;\n background: var(--scrim);\n}\n.band-shell-search-dialog {\n position: relative;\n width: min(620px, 100%);\n max-height: min(70vh, 560px);\n display: grid;\n grid-template-rows: auto minmax(0, 1fr);\n background: var(--panel);\n border-radius: var(--r-lg);\n box-shadow: var(--shadow-pop);\n overflow: hidden;\n}\n.band-shell-search-field {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 16px;\n color: var(--muted);\n box-shadow: inset 0 -1px 0 var(--rule);\n}\n.band-shell-search-field input {\n flex: 1;\n min-width: 0;\n border: 0;\n outline: none;\n background: none;\n font: inherit;\n font-size: var(--fs-lead);\n color: var(--ink);\n}\n.band-shell-search-field input::placeholder {\n color: var(--muted);\n}\n.band-shell-search-field input::-webkit-search-cancel-button {\n display: none;\n}\n.band-shell-search-body {\n overflow: auto;\n overscroll-behavior: contain;\n padding: 6px;\n display: grid;\n gap: 6px;\n align-content: start;\n}\n.band-shell-search-hint {\n margin: 0;\n padding: 14px 12px;\n font-size: var(--fs-ui);\n color: var(--muted);\n}\n.band-shell-search-list {\n display: grid;\n gap: 1px;\n}\n.band-shell-search-list:empty {\n display: none;\n}\n.band-shell-search-hit {\n display: grid;\n grid-template-columns: 16px minmax(0, auto) minmax(0, 1fr) auto;\n align-items: center;\n gap: 10px;\n padding: 8px 10px;\n border-radius: 9px;\n cursor: pointer;\n font-size: var(--fs-body);\n}\n.band-shell-search-hit[aria-selected=true] {\n background: var(--fill);\n}\n.band-shell-search-t {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.band-shell-search-d {\n font-size: var(--fs-dense);\n color: var(--muted);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.band-shell-search-hash {\n width: 16px;\n text-align: center;\n font-family: var(--mono);\n font-size: var(--fs-ui);\n color: var(--muted);\n}\n.band-shell-search-k {\n font-size: var(--fs-caption);\n color: var(--muted);\n}\n.band-shell-search-source h3 {\n margin: 6px 10px 4px;\n font-size: var(--fs-meta);\n font-weight: 500;\n color: var(--muted);\n}\n.band-shell-missing {\n max-width: 560px;\n margin: 0 auto;\n padding: 72px 32px;\n display: grid;\n gap: 14px;\n justify-items: start;\n}\n.band-shell-missing-actions {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n.band-shell-missing-path {\n font-size: var(--fs-meta);\n color: var(--muted);\n overflow-wrap: anywhere;\n}\n.band-shell-missing h1 {\n font-family: var(--font-display);\n font-weight: 600;\n}\n@media (max-width: 860px) {\n .band-shell,\n .band-shell.is-collapsed {\n grid-template-columns: minmax(0, 1fr);\n }\n .band-shell > .band-shell-side {\n position: fixed;\n z-index: 40;\n top: 0;\n bottom: 0;\n left: 0;\n width: min(300px, 86vw);\n background: var(--side-solid);\n box-shadow: var(--shadow-pop);\n transform: translateX(-105%);\n transition: transform var(--eighth) var(--ease);\n visibility: hidden;\n padding-top: env(safe-area-inset-top, 0px);\n }\n .band-shell.is-drawer > .band-shell-side {\n transform: none;\n visibility: visible;\n }\n .band-shell.is-drawer > .band-shell-scrim {\n display: block;\n position: fixed;\n inset: 0;\n z-index: 35;\n background: var(--scrim);\n }\n .band-shell > .band-shell-main,\n .band-shell.is-collapsed > .band-shell-main {\n margin: 0;\n border-radius: 0;\n box-shadow: none;\n }\n .band-shell-mhead {\n padding: 8px 10px 0;\n }\n .band-shell-search kbd {\n display: none;\n }\n .band-shell-overlay {\n padding-top: 12px;\n }\n .band-shell-search-hit {\n grid-template-columns: 16px minmax(0, 1fr) auto;\n }\n .band-shell-search-d {\n grid-column: 2 / -1;\n grid-row: 2;\n }\n}\n.band-shell-i16 {\n width: 16px;\n height: 16px;\n fill: none;\n stroke: currentColor;\n stroke-width: 1.5;\n stroke-linecap: round;\n stroke-linejoin: round;\n flex: none;\n}\n.band-shell-done {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n white-space: nowrap;\n}\n.band-feedback {\n position: fixed;\n right: 14px;\n bottom: 14px;\n z-index: var(--layer-pop);\n display: grid;\n justify-items: end;\n gap: 8px;\n}\n.band-feedback-btn {\n position: relative;\n background: var(--panel);\n box-shadow: var(--shadow-card);\n border-radius: 50%;\n width: 32px;\n height: 32px;\n}\n.band-feedback-i {\n width: 16px;\n height: 16px;\n fill: none;\n stroke: currentColor;\n stroke-width: 1.4;\n stroke-linejoin: round;\n}\n.band-feedback-dot {\n position: absolute;\n top: 0;\n right: 0;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--accent);\n}\n.band-feedback-dot.is-inline {\n position: static;\n display: inline-block;\n margin-left: 6px;\n}\n.band-feedback-panel {\n box-sizing: border-box;\n width: min(320px, calc(100vw - 28px));\n background: var(--panel);\n border-radius: var(--r-xl);\n box-shadow: var(--shadow-pop);\n padding: 12px;\n display: grid;\n gap: 8px;\n}\n.band-feedback-text {\n resize: none;\n width: 100%;\n box-sizing: border-box;\n}\n.band-feedback-title {\n margin: 0;\n font-size: var(--fs-row);\n font-weight: 600;\n color: var(--ink);\n}\n.band-feedback-lead {\n margin: -4px 0 0;\n font-size: var(--fs-meta);\n color: var(--muted);\n}\n.band-feedback-foot {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n.band-feedback-hint {\n font-size: var(--fs-meta);\n color: var(--muted);\n}\n.band-feedback-over {\n margin: 0;\n font-size: var(--fs-meta);\n color: var(--bad);\n}\n.band-feedback-thanks {\n display: block;\n margin: 0;\n padding: 8px 0;\n text-align: center;\n color: var(--ink);\n}\n.band-feedback-replies {\n margin: 0;\n padding: 0;\n list-style: none;\n display: grid;\n gap: 8px;\n max-height: 40vh;\n overflow: auto;\n overscroll-behavior: contain;\n}\n.band-feedback-replies li {\n display: grid;\n gap: 2px;\n}\n.band-feedback-quote {\n font-size: var(--fs-meta);\n color: var(--muted);\n}\n.band-feedback-reply {\n font-size: var(--fs-body);\n color: var(--ink);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n}\n.band-feedback-menu {\n display: none;\n box-sizing: border-box;\n width: 100%;\n}\n@media (max-width: 860px) {\n .band-feedback-menu {\n display: inline-flex;\n }\n .band-feedback {\n right: 14px;\n left: 14px;\n bottom: calc(14px + env(safe-area-inset-bottom, 0px));\n justify-items: stretch;\n }\n .band-feedback-panel {\n width: auto;\n }\n}\n@media (prefers-reduced-motion: no-preference) {\n .band-feedback-panel {\n animation: band-feedback-in var(--eighth) var(--ease);\n }\n}\n@keyframes band-feedback-in {\n from {\n opacity: 0;\n transform: translateY(6px);\n }\n}\n.band-feedback-actions {\n display: inline-flex;\n gap: 6px;\n}\n.band-feedback-older {\n margin: 0;\n font-size: var(--fs-meta);\n color: var(--muted);\n}\n.band-guide-card {\n position: fixed;\n inset: auto;\n z-index: 31;\n margin: 0;\n border: 0;\n width: 360px;\n max-width: calc(100vw - 24px);\n padding: 12px 16px 12px 22px;\n background: var(--panel);\n color: var(--ink);\n border-radius: var(--r-xl);\n box-shadow: var(--shadow-pop);\n font-size: var(--fs-ui);\n line-height: 1.6;\n overflow: hidden;\n animation: band-guide-in var(--eighth, 180ms) ease-out;\n}\n.band-guide-card::before {\n content: "";\n position: absolute;\n inset: 0 auto 0 0;\n width: 5px;\n background: color-mix(in srgb, var(--accent) var(--band-guide-stripe, 20%), var(--accent-soft));\n}\n.band-guide-card.is-docked {\n right: 56px;\n bottom: 18px;\n}\n.band-guide-card h3 {\n margin: 0 0 4px;\n font-size: var(--fs-title);\n font-weight: 600;\n}\n.band-guide-card p {\n margin: 0 0 10px;\n}\n.band-guide-where,\n.band-guide-count {\n color: var(--muted);\n}\n.band-guide-count {\n margin-bottom: 2px;\n font-size: var(--fs-meta);\n}\n.band-guide-foot {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n.band-guide-foot a {\n margin-right: auto;\n color: var(--accent-text);\n text-decoration: none;\n}\n.band-guide-staff {\n display: block;\n width: 100%;\n height: auto;\n margin: 2px 0 4px;\n overflow: visible;\n}\n.band-guide-staff line {\n stroke: var(--muted);\n stroke-opacity: 0.45;\n stroke-width: 1;\n}\n.band-guide-staff .is-done {\n fill: var(--ink);\n}\n.band-guide-staff .is-current {\n fill: var(--accent);\n}\n.band-guide-staff .is-todo {\n fill: none;\n stroke: var(--rule-strong);\n stroke-width: 1.4;\n}\n.band-guide-ring {\n position: fixed;\n z-index: 31;\n pointer-events: none;\n border: 2px solid var(--accent);\n border-radius: 10px;\n box-shadow: 0 0 0 5px var(--accent-soft);\n}\n.band-guide-pill {\n display: flex;\n max-width: calc(100% - 16px);\n flex: none;\n margin: 0 8px 8px;\n align-items: center;\n gap: 8px;\n padding: 6px 12px 6px 10px;\n border: 0;\n border-radius: 999px;\n border: 1px solid var(--rule);\n background: var(--panel);\n color: var(--ink);\n font: inherit;\n font-size: var(--fs-ui);\n cursor: pointer;\n}\n.band-guide-pill .band-guide-staff {\n width: 70px;\n margin: 0;\n}\n.band-guide-card.is-compact {\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.band-guide-card.is-compact p {\n margin-bottom: 6px;\n}\n.band-guide-pill > span:not(.band-guide-pill-title) {\n flex: none;\n white-space: nowrap;\n}\n.band-guide-pill-title {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--muted);\n}\n.band-guide-card.is-finale {\n left: 50%;\n top: 50%;\n width: 460px;\n padding: 18px 24px 16px;\n transform: translate(-50%, -50%);\n text-align: center;\n}\n.band-guide-card.is-finale::before {\n display: none;\n}\n.band-guide-finale {\n --fin-ease: var(--ease);\n}\n.band-guide-finale-line {\n transform-box: view-box;\n transform-origin: 0 0;\n transform: translateX(62.8px) scaleX(0.2124);\n vector-effect: non-scaling-stroke;\n}\n.band-guide-finale .band-guide-note {\n transform-box: view-box;\n transform-origin: 0 0;\n fill: var(--ink);\n}\n.band-guide-finale .band-guide-note.is-mid {\n fill: var(--accent);\n}\n.band-guide-finale .band-guide-note.is-kept {\n transform: translate(var(--dx), var(--dy));\n}\n.band-guide-finale .band-guide-note:not(.is-kept) {\n opacity: 0;\n}\n.band-guide-hop {\n transform-box: view-box;\n transform-origin: 0 0;\n}\n.band-guide-stem {\n fill: none;\n stroke: var(--ink);\n stroke-width: 1.65;\n}\n.band-guide-beam {\n fill: var(--ink);\n}\n.band-guide-wordmark {\n fill: var(--ink);\n font-family: var(--font-wordmark);\n font-weight: 600;\n font-size: 25.7px;\n letter-spacing: -0.2px;\n}\n.band-guide-halo {\n fill: none;\n stroke: var(--accent);\n stroke-width: 1.5;\n opacity: 0;\n}\n.band-guide-finale:not([data-still]) {\n .band-guide-finale-line {\n animation: band-fin-line 1000ms var(--fin-ease) var(--fin-t0) backwards;\n }\n .band-guide-note.is-kept {\n animation: band-fin-gather 1000ms var(--fin-ease) var(--fin-t0) backwards;\n }\n .band-guide-note:not(.is-kept) {\n animation: band-fin-fade 400ms ease var(--fin-t0) backwards;\n }\n .band-guide-hop {\n animation: band-fin-hop var(--eighth) var(--fin-ease) var(--hop) backwards;\n }\n .band-guide-hop ellipse {\n animation: band-fin-beat var(--eighth) ease var(--hop) backwards;\n }\n .band-guide-note.is-mid .band-guide-hop {\n animation: band-fin-hop var(--eighth) var(--fin-ease) var(--hop) backwards, band-fin-blue 300ms ease calc(var(--fin-t0) + 700ms) backwards;\n }\n .band-guide-stem {\n transform-box: fill-box;\n transform-origin: bottom;\n animation: band-fin-grow-y 300ms var(--fin-ease) calc(var(--fin-t0) + 850ms) backwards;\n }\n .band-guide-beam {\n transform-box: fill-box;\n transform-origin: left center;\n animation: band-fin-grow-x 300ms var(--fin-ease) calc(var(--fin-t0) + 1000ms) backwards;\n }\n .band-guide-wordmark {\n animation: band-fin-in 400ms ease calc(var(--fin-t0) + 1050ms) backwards;\n }\n .band-guide-halo {\n animation: band-fin-halo 1000ms ease-out calc(var(--fin-t0) + 1150ms) backwards;\n }\n}\n@keyframes band-fin-line {\n from {\n transform: none;\n }\n}\n@keyframes band-fin-gather {\n from {\n transform: none;\n }\n}\n@keyframes band-fin-fade {\n from {\n opacity: 1;\n }\n}\n@keyframes band-fin-hop {\n 50% {\n transform: translateY(-7px);\n }\n}\n@keyframes band-fin-beat {\n 50% {\n fill: var(--accent);\n }\n}\n@keyframes band-fin-blue {\n from {\n fill: var(--ink);\n }\n}\n@keyframes band-fin-grow-y {\n from {\n transform: scaleY(0);\n }\n}\n@keyframes band-fin-grow-x {\n from {\n transform: scaleX(0);\n }\n}\n@keyframes band-fin-in {\n from {\n opacity: 0;\n }\n}\n@keyframes band-fin-halo {\n from {\n opacity: 0;\n r: 6px;\n }\n 10% {\n opacity: 0.16;\n }\n to {\n opacity: 0;\n r: 40px;\n }\n}\n@media (prefers-reduced-motion: reduce) {\n .band-guide-finale * {\n animation: none !important;\n }\n}\n@keyframes band-guide-in {\n from {\n opacity: 0;\n }\n}\n@media (max-width: 860px) {\n .band-guide-card.is-docked {\n left: 12px;\n right: 12px;\n bottom: 12px;\n width: auto;\n }\n}\n@media (prefers-reduced-motion: reduce) {\n .band-guide-card {\n animation: none;\n }\n}\n.band-shell-mhead .band-guide-pill {\n margin: 0 0 0 auto;\n}\n.band-guide-card.is-measuring {\n visibility: hidden;\n pointer-events: none;\n left: -10000px;\n top: 0;\n}\n.band-shell-transition {\n padding: 16px;\n display: grid;\n gap: 12px;\n align-content: start;\n}\n.band-shell-transition h1 {\n margin: 0;\n font-size: var(--fs-h2);\n}\n.band-shell-skeleton {\n height: 48px;\n border-radius: var(--r);\n background: var(--fill-2);\n}\n.band-shell-transition-settings {\n flex: 1;\n min-height: 0;\n height: 100%;\n padding: 0;\n gap: 0;\n}\n.band-shell-transition-body {\n display: grid;\n gap: 12px;\n align-content: start;\n}\n.band-shell-transition-settings > .band-shell-transition-frame {\n flex: 1;\n min-height: 0;\n height: auto;\n}\n.band-shell-embed {\n height: 100%;\n min-height: 0;\n display: flex;\n flex-direction: column;\n background: var(--panel);\n}\n';let el=document.head.querySelector('style[data-band-style="@kanyun-ai-infra/band-shell"]');if(!el){el=document.createElement("style");el.setAttribute("data-band-style","@kanyun-ai-infra/band-shell");document.head.prepend(el)}el.textContent=css}var THANKS_MS=2e3;var PAGE_URL_MAX=500;var CREDENTIAL_PARAMS=["s","preview"];function currentPageUrl(loc=window.location){const query=new URLSearchParams(loc.search);for(const name of CREDENTIAL_PARAMS)query.delete(name);const search=query.size>0?`?${query}`:"";const full=`${loc.pathname}${search}`;if(full.length<=PAGE_URL_MAX)return full;return loc.pathname.length<=PAGE_URL_MAX?loc.pathname:"/"}var Feedback=createContext(null);function useFeedbackState(){return useContext(Feedback)}function FeedbackProvider({ctx,children}){const api=ctx.app.member.betaMember===false?void 0:ctx.app.data.write?.feedback;const[enabled,setEnabled]=useState(false);const[items,setItems]=useState([]);const[unreadReplies,setUnreadReplies]=useState(0);const[replies,setReplies]=useState([]);const[older,setOlder]=useState(0);const[open,setOpenState]=useState(false);const live=useRef(true);useEffect(()=>{live.current=true;return()=>{live.current=false}},[]);const refresh=useCallback(()=>{api?.mine().then(r=>{if(!live.current)return;setEnabled(r.enabled);setItems(r.items);setUnreadReplies(r.unreadReplies)},()=>void 0)},[api]);useEffect(()=>{refresh()},[refresh]);const unreadItems=items.filter(i=>i.replyUnread);const setOpen=next=>{if(next&&api){const fresh=unreadItems;setReplies(fresh);setOlder(Math.max(0,unreadReplies-fresh.length));if(fresh.length>0){Promise.allSettled(fresh.map(i=>api.markReplySeen(i.id))).then(refresh)}}setOpenState(next)};if(!api)return jsx(Feedback.Provider,{value:null,children});return jsx(Feedback.Provider,{value:{enabled,unread:unreadReplies>0,replies,older,open,setOpen,api,refresh},children})}function FeedbackCorner({phone}){const fb=useFeedbackState();const button=useRef(null);if(!fb?.enabled)return null;return jsxs("div",{className:"band-feedback",children:[fb.open&&jsx(FeedbackPanel,{fb,returnFocus:()=>button.current?.focus()}),!phone&&jsxs("button",{ref:button,type:"button",className:"iconbtn band-feedback-btn","aria-label":fb.unread?"\u53CD\u9988\uFF0C\u6709\u65B0\u56DE\u590D":"\u53CD\u9988",title:"\u53CD\u9988","aria-expanded":fb.open,onClick:()=>fb.setOpen(!fb.open),children:[jsx("svg",{className:"band-feedback-i",viewBox:"0 0 16 16","aria-hidden":"true",children:jsx("path",{d:"M3 3.5h10a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1H8l-3 2.5v-2.5H3a1 1 0 0 1-1-1v-5a1 1 0 0 1 1-1z"})}),fb.unread&&jsx("span",{className:"band-feedback-dot","aria-hidden":"true"})]})]})}function reasonOf(e){const status=typeof e==="object"&&e!==null?e.status:void 0;if(status===429)return"\u53D1\u5F97\u6709\u70B9\u5FEB\uFF0C\u7A0D\u540E\u518D\u8BD5";return failedBecause(e,"\u70B9\u91CD\u8BD5")}function FeedbackPanel({fb,returnFocus}){const[text,setText]=useState("");const[phase,setPhase]=useState({kind:"typing"});const area=useRef(null);const hint=useId();const length=feedbackTextLength(text.trim());const tooLong=length>FEEDBACK_BODY_MAX;const canSend=length>0&&!tooLong&&phase.kind!=="sending"&&phase.kind!=="sent";const close=()=>{fb.setOpen(false);returnFocus()};useEffect(()=>area.current?.focus(),[]);useEffect(()=>{if(phase.kind!=="sent")return;const t=setTimeout(()=>fb.setOpen(false),THANKS_MS);return()=>clearTimeout(t)},[phase.kind,fb.setOpen]);const send=()=>{if(!canSend)return;setPhase({kind:"sending"});fb.api.submit({body:text.trim(),pageUrl:currentPageUrl()}).then(()=>{setText("");setPhase({kind:"sent"});fb.refresh()},e=>setPhase({kind:"failed",reason:reasonOf(e)}))};return jsx("div",{className:"band-feedback-panel field-host",role:"group","aria-label":"\u53CD\u9988\u7ED9 Band \u56E2\u961F",onKeyDown:withImeGuard(e=>{if(e.key==="Escape"){e.preventDefault();close()}}),children:phase.kind==="sent"?jsx("output",{className:"band-feedback-thanks",children:"\u5DF2\u6536\u5230\uFF0C\u8C22\u8C22"}):jsxs(Fragment,{children:[jsx("p",{className:"band-feedback-title",children:"\u53CD\u9988\u7ED9 Band \u56E2\u961F"}),jsx("p",{className:"band-feedback-lead",children:"\u7BA1\u7406\u5458\u4F1A\u5728\u8FD9\u91CC\u56DE\u590D\u4F60"}),fb.replies.length>0&&jsx("ul",{className:"band-feedback-replies","aria-label":"\u6536\u5230\u7684\u56DE\u590D",children:fb.replies.map(r=>jsxs("li",{children:[jsxs("span",{className:"band-feedback-quote",children:["\u4F60\u53CD\u9988\uFF1A",r.body]}),jsx("span",{className:"band-feedback-reply",children:r.reply})]},r.id))}),fb.older>0&&jsxs("p",{className:"band-feedback-older",children:["\u53E6\u6709 ",fb.older," \u6761\u66F4\u65E9\u7684\u56DE\u590D\uFF0C\u8FD9\u91CC\u6682\u65F6\u5217\u4E0D\u51FA\u6765"]}),jsx("textarea",{ref:area,className:"field bare band-feedback-text",rows:3,value:text,"aria-label":"\u53CD\u9988\u5185\u5BB9","aria-describedby":hint,"aria-invalid":tooLong||void 0,placeholder:"\u60F3\u8BF4\u4EC0\u4E48\u90FD\u884C\uFF0C\u6BD4\u5982\u54EA\u91CC\u4E0D\u5BF9\u3001\u60F3\u8981\u4EC0\u4E48",onChange:e=>{setText(e.target.value);if(phase.kind==="failed")setPhase({kind:"typing"})},onKeyDown:withImeGuard(e=>{if(e.key==="Enter"&&!e.shiftKey){e.preventDefault();send()}})}),tooLong&&jsxs("p",{className:"band-feedback-over",role:"alert",children:["\u6700\u591A ",FEEDBACK_BODY_MAX," \u5B57\uFF0C\u73B0\u5728 ",length," \u5B57\uFF0C\u8BF7\u5220\u77ED\u4E00\u4E9B\u518D\u53D1"]}),phase.kind==="failed"&&jsxs(ErrorNote,{retry:send,children:["\u6CA1\u53D1\u51FA\u53BB\uFF1A",phase.reason]}),jsxs("div",{className:"band-feedback-foot",children:[jsx("span",{id:hint,className:"band-feedback-hint",children:"\u4F1A\u4E00\u5E76\u53D1\u9001\u5F53\u524D\u9875\u9762\u7684\u5730\u5740"}),jsxs("span",{className:"band-feedback-actions",children:[jsx("button",{type:"button",className:"btn ghost sm",onClick:close,children:"\u5173\u95ED"}),jsx("button",{type:"button",className:"btn primary sm",disabled:!canSend,onClick:send,children:"\u53D1\u9001"})]})]})]})})}function FeedbackMenuItem({onOpen}){const fb=useFeedbackState();if(!fb?.enabled)return null;return jsxs("button",{type:"button",className:"btn ghost band-feedback-menu","aria-label":fb.unread?"\u53CD\u9988\uFF0C\u6709\u65B0\u56DE\u590D":"\u53CD\u9988",onClick:()=>{onOpen();fb.setOpen(true)},children:["\u53CD\u9988",fb.unread&&jsx("span",{className:"band-feedback-dot is-inline","aria-hidden":"true"})]})}var FREEFORM="freeform";var FIRST_PICK="teaching-tool";var GUIDE_DOCS="/docs/use/first-project";function guideDocsFor(w){return w?.docs??GUIDE_DOCS}var FIRST_VERSION_TIME={"teaching-tool":"\u4E09\u5230\u516B\u5206\u949F",video:"\u4E00\u5230\u56DB\u5206\u949F",freeform:"\u4E00\u5230\u4E94\u5206\u949F"};var DEFAULT_TIME="\u51E0\u5206\u949F\u5230\u5341\u51E0\u5206\u949F";function labelsOf(w){const stage=w?.workflows[0]?.stages[0];const typeName=stage?.produces[0];const types=w?.artifactTypes??[];const typeIndex=types.findIndex(t=>t.name===typeName);const roleName=stage?.gate?.approveBy[0];const roles=w?.roles??[];const roleIndex=roles.findIndex(r=>r.name===roleName);return{stage:stage?stageDisplayName(stage.id,stage.label,0):"\u8FD9\u4E00\u9636\u6BB5",artifact:typeName?artifactTypeDisplayName(typeName,types[typeIndex]?.label,typeIndex):"\u7B2C\u4E00\u7248",...roleName?{role:roleDisplayName(roleName,roles[roleIndex]?.label,roleIndex)}:{},agent:stage?.agentLabel??"Rondo",time:(w&&FIRST_VERSION_TIME[w.id])??DEFAULT_TIME}}function uiStep(guide,picked){if(guide.step>1)return guide.step;return picked&&picked!==FREEFORM?2:1}function totalOf(guide,picked){if(guide.project)return guide.total;return picked&&picked.role===void 0?GUIDE_STEPS-1:GUIDE_STEPS}function stepView(step,l,facts,total=GUIDE_STEPS){const a=l.agent;switch(step){case 1:return{step,page:"home",title:"\u5148\u6311\u4E00\u4E2A\u5DE5\u574A",body:facts.hasProjects?"\u5DE5\u574A\u5B9A\u597D\u4E86\u505A\u4EC0\u4E48\u3001\u5206\u51E0\u6B65\u3001\u8C01\u6765\u6279\u51C6\u3002\u518D\u505A\u4E00\u4E2A\u65B0\u7684\uFF0C\u5C31\u5728\u8F93\u5165\u6846\u4E0B\u9762\u9009\u4E00\u4E2A\u5DE5\u574A\uFF1A\u505A\u8BFE\u5802\u6559\u5177\u9009\u300C\u6559\u5177\u300D\uFF0C\u51E0\u5206\u949F\u51FA\u7B2C\u4E00\u7248\uFF1B\u505A\u89C6\u9891\u9009\u300C\u89C6\u9891\u300D\uFF0C\u7B2C\u4E00\u7248\u662F\u5267\u672C\uFF0C\u4E5F\u53EA\u8981\u51E0\u5206\u949F\uFF0C\u6210\u7247\u8981\u7B49\u5F97\u4E45\u4E00\u4E9B\u3002":"\u5DE5\u574A\u5B9A\u597D\u4E86\u505A\u4EC0\u4E48\u3001\u5206\u51E0\u6B65\u3001\u8C01\u6765\u6279\u51C6\u3002\u7B2C\u4E00\u6B21\u5EFA\u8BAE\u7528\u300C\u6559\u5177\u300D\uFF1A\u4E00\u53E5\u8BDD\u505A\u4E00\u4E2A\u8BFE\u5802\u6559\u5177\uFF0C\u51E0\u5206\u949F\u51FA\u7B2C\u4E00\u7248\u3002\u505A\u89C6\u9891\u9009\u300C\u89C6\u9891\u300D\uFF1A\u7B2C\u4E00\u7248\u662F\u5267\u672C\uFF0C\u4E5F\u53EA\u8981\u51E0\u5206\u949F\uFF0C\u6210\u7247\u8981\u7B49\u5F97\u4E45\u4E00\u4E9B\u3002",where:facts.narrow?"\u56DE\u5230\u9996\u9875\uFF0C\u70B9\u8F93\u5165\u6846\u4E0B\u9762\u7684\u300C\u81EA\u7531\u521B\u4F5C\u300D\uFF0C\u5728\u5217\u8868\u91CC\u9009\u300C\u6559\u5177\u300D\u3002":"\u56DE\u5230\u9996\u9875\uFF0C\u5728\u8F93\u5165\u6846\u4E0B\u9762\u90A3\u4E00\u6392\u91CC\u70B9\u300C\u6559\u5177\u300D\u3002",targets:[{anchor:"workshop-pick",workshop:FIRST_PICK},{anchor:"workshop-pick"}],next:[{anchor:"request"}]};case 2:return{step,page:"home",title:"\u5199\u4E00\u53E5\u8981\u505A\u4EC0\u4E48",body:facts.hasProjects?"\u5199\u6E05\u695A\u8981\u505A\u4EC0\u4E48\u3001\u7ED9\u8C01\u7528\uFF0C\u8D8A\u5177\u4F53\u7B2C\u4E00\u7248\u8D8A\u63A5\u8FD1\u4F60\u8981\u7684\u3002\u6309\u56DE\u8F66\u65B0\u5EFA\u9879\u76EE\u3002":"\u5199\u6E05\u695A\u8981\u505A\u4EC0\u4E48\u3001\u7ED9\u8C01\u7528\uFF0C\u8D8A\u5177\u4F53\u7B2C\u4E00\u7248\u8D8A\u63A5\u8FD1\u4F60\u8981\u7684\u3002\u4E0D\u77E5\u9053\u5199\u4EC0\u4E48\uFF0C\u70B9\u4E0B\u9762\u4E00\u4E2A\u4F8B\u5B50\u3002\u6309\u56DE\u8F66\u65B0\u5EFA\u9879\u76EE\u3002",where:"\u56DE\u5230\u9996\u9875\uFF0C\u5728\u8F93\u5165\u6846\u91CC\u5199\u4E00\u53E5\u9700\u6C42\u3002",targets:[{anchor:"request"}],next:[]};case 3:return{step,page:"project",title:`${a} \u5728\u505A\u7B2C\u4E00\u7248`,body:`\u7B2C\u4E00\u7248\u662F\u300C${l.artifact}\u300D\uFF0C\u4E00\u822C\u8981${l.time}\uFF0C\u4E0D\u7528\u5B88\u7740\u8FD9\u4E00\u9875\u3002\u505A\u597D\u540E\u9996\u9875\u300C\u9700\u8981\u4F60\u300D\u4F1A\u5217\u51FA\u8FD9\u4E2A\u9879\u76EE\uFF0C\u4FA7\u680F\u300C\u5F85\u6211\u5904\u7406\u300D\u65C1\u6709\u6570\u5B57\uFF1B\u8FD9\u4E00\u9875\u5F00\u7740\u7684\u8BDD\uFF0C\u7B2C\u4E00\u7248\u4F1A\u76F4\u63A5\u51FA\u73B0\u5728\u8FD9\u91CC\u3002`,where:"\u56DE\u5230\u8FD9\u4E2A\u9879\u76EE\uFF0C\u770B\u9875\u9762\u5E95\u90E8\u7684\u56DE\u5408\u680F\u3002",targets:[{anchor:"turn"}],next:[{anchor:"annotate"},{anchor:"artifact"}]};case 4:return{step,page:"project",title:"\u5728\u7B2C\u4E00\u7248\u4E0A\u63D0\u610F\u89C1",body:facts.annotate?facts.phone?`\u8FD9\u662F ${a} \u4EA4\u7684\u7B2C\u4E00\u7248\uFF0C\u5148\u770B\u4E00\u904D\u3002\u624B\u673A\u4E0A\u5148\u4E0D\u80FD\u5728\u753B\u9762\u4E0A\u70B9\uFF1B\u54EA\u91CC\u8981\u6539\uFF0C\u5728${facts.narrow?"\u300C\u5BF9\u8BDD\u300D\u9875\u7B7E":"\u53F3\u680F\u300C\u5BF9\u8BDD\u300D"}\u91CC\u8BF4\u3002`:`\u8FD9\u662F ${a} \u4EA4\u7684\u7B2C\u4E00\u7248\uFF0C\u5148\u770B\u4E00\u904D\u3002\u54EA\u91CC\u8981\u6539\uFF0C\u70B9\u300C\u8BC4\u8BBA\u300D\uFF0C\u518D\u70B9\u90A3\u4E00\u5904\uFF0C\u5199\u54EA\u91CC\u4E0D\u5BF9\u3001\u60F3\u600E\u4E48\u6539\u3002`:`\u8FD9\u662F ${a} \u4EA4\u7684\u7B2C\u4E00\u7248\uFF0C\u5148\u8BFB\u4E00\u904D\u3002\u54EA\u91CC\u8981\u6539\uFF0C\u9009\u4E2D\u90A3\u51E0\u4E2A\u5B57\uFF0C\u5199\u54EA\u91CC\u4E0D\u5BF9\u3001\u60F3\u600E\u4E48\u6539\u3002`,brief:facts.annotate?facts.phone?`\u5728${facts.narrow?"\u300C\u5BF9\u8BDD\u300D\u9875\u7B7E":"\u53F3\u680F\u300C\u5BF9\u8BDD\u300D"}\u91CC\u8BF4\u54EA\u91CC\u8981\u6539\u3002`:"\u70B9\u300C\u8BC4\u8BBA\u300D\uFF0C\u518D\u70B9\u8981\u6539\u7684\u90A3\u4E00\u5904\u3002":"\u9009\u4E2D\u8981\u6539\u7684\u51E0\u4E2A\u5B57\uFF0C\u5199\u610F\u89C1\u3002",where:facts.narrow?`\u5728\u300C\u6D41\u7A0B\u300D\u9875\u7B7E\u6700\u4E0B\u9762\u7684\u300C\u4EA7\u7269\u300D\u91CC\u70B9\u300C${l.artifact}\u300D\uFF0C\u518D\u5207\u5230\u300C\u4EA7\u7269\u300D\u9875\u7B7E\u770B\u5B83\u3002`:`\u5728\u5DE6\u680F\u300C\u4EA7\u7269\u300D\u91CC\u70B9\u300C${l.artifact}\u300D\u6253\u5F00\u5B83\u3002`,targets:facts.annotate?[{anchor:"annotate"}]:[{anchor:"artifact"}],next:[{anchor:"hand-to-agent"}]};case 5:return{step,page:"project",title:`\u4EA4\u7ED9 ${a}`,body:`\u5199\u610F\u89C1\u65F6\u52FE\u4E0A\u300C\u4EA4\u7ED9 ${a}\u300D\u518D\u53D1\u5E03\uFF0C${a} \u5C31\u7167\u8FD9\u6761\u610F\u89C1\u6539\u3002\u4E0D\u52FE\u7684\u610F\u89C1\u53EA\u7ED9\u9879\u76EE\u91CC\u7684\u4EBA\u770B\uFF1B\u5DF2\u7ECF\u53D1\u4E86\u7684\u610F\u89C1\uFF0C\u5728${facts.narrow?"\u300C\u5BF9\u8BDD\u300D\u9875\u7B7E":"\u53F3\u680F"}\u7684\u610F\u89C1\u4E0A\u70B9\u300C\u4EA4\u7ED9 ${a}\u300D\u3002`,where:`\u5199\u610F\u89C1\u7684\u6846\u4E0B\u9762\u6709\u300C\u4EA4\u7ED9 ${a}\u300D\u3002`,targets:[{anchor:"hand-to-agent"}],next:[{anchor:"turn"}]};case 6:return facts.busy?{step,page:"project",title:`${a} \u5728\u6309\u610F\u89C1\u6539`,body:"\u6539\u597D\u4F1A\u51FA\u65B0\u7684\u4E00\u7248\uFF0C\u540C\u6837\u4E0D\u7528\u5B88\u7740\u8FD9\u4E00\u9875\u3002\u6539\u597D\u540E\u9996\u9875\u300C\u9700\u8981\u4F60\u300D\u4F1A\u5217\u51FA\u8FD9\u4E2A\u9879\u76EE\u3002",where:"\u56DE\u5230\u8FD9\u4E2A\u9879\u76EE\uFF0C\u770B\u9875\u9762\u5E95\u90E8\u7684\u56DE\u5408\u680F\u3002",targets:[{anchor:"turn"}],next:[{anchor:"versions"}]}:{step,page:"project",title:"\u770B\u65B0\u7248\u672C",body:"\u8FD9\u662F\u65B0\u7684\u4E00\u7248\u3002\u5BF9\u7740\u4F60\u7684\u610F\u89C1\u770B\u4E00\u904D\uFF1A\u6539\u597D\u4E86\u70B9\u300C\u786E\u8BA4\u89E3\u51B3\u300D\uFF0C\u6CA1\u6539\u597D\u70B9\u300C\u8FD8\u6CA1\u597D\u300D\uFF0C\u5199\u54EA\u91CC\u8FD8\u4E0D\u5BF9\u3002",where:facts.narrow?"\u56DE\u5230\u8FD9\u4E2A\u9879\u76EE\uFF0C\u5728\u300C\u5BF9\u8BDD\u300D\u9875\u7B7E\u91CC\u70B9\u300C\u6807\u4E3A\u5DF2\u89E3\u51B3\uFF0C\u6216\u6253\u56DE\u300D\uFF0C\u518D\u9009\u300C\u786E\u8BA4\u89E3\u51B3\u300D\u6216\u300C\u8FD8\u6CA1\u597D\u300D\u3002":"\u56DE\u5230\u8FD9\u4E2A\u9879\u76EE\uFF0C\u5728\u610F\u89C1\u4E0A\u70B9\u300C\u6807\u4E3A\u5DF2\u89E3\u51B3\uFF0C\u6216\u6253\u56DE\u300D\uFF0C\u518D\u9009\u300C\u786E\u8BA4\u89E3\u51B3\u300D\u6216\u300C\u8FD8\u6CA1\u597D\u300D\u3002",targets:[{anchor:"versions"}],next:total>6?[{anchor:"approve"}]:[]};default:return{step:GUIDE_STEPS,page:"project",title:"\u6279\u51C6",body:l.role?`\u8FD9\u4E00\u7248\u80FD\u7528\u4E86\uFF0C\u5C31\u70B9\u300C\u4EE5${l.role}\u8EAB\u4EFD\u6279\u51C6\u300D\u3002\u6279\u51C6\u540E\u300C${l.stage}\u300D\u901A\u8FC7\uFF0C\u6D41\u7A0B\u5F80\u4E0B\u4E00\u6B65\u8D70\u3002`:`\u8FD9\u4E00\u7248\u80FD\u7528\u4E86\uFF0C\u5C31\u70B9\u300C\u6279\u51C6\u300D\u3002\u6279\u51C6\u540E\u300C${l.stage}\u300D\u901A\u8FC7\uFF0C\u6D41\u7A0B\u5F80\u4E0B\u4E00\u6B65\u8D70\u3002`,where:facts.narrow?`\u5728\u300C\u6D41\u7A0B\u300D\u9875\u7B7E\u91CC\uFF0C\u6D41\u7A0B\u4E0B\u9762\u7684\u300C${l.stage} \xB7 \u6279\u51C6\u300D\u5361\u7247\u4E0A\u70B9\u6279\u51C6\u3002`:`\u5728\u5DE6\u680F\u6D41\u7A0B\u4E0B\u9762\u7684\u300C${l.stage} \xB7 \u6279\u51C6\u300D\u5361\u7247\u4E0A\u70B9\u6279\u51C6\u3002`,targets:[{anchor:"approve"}],next:[]}}}var DONE_TITLE="\u8D70\u5B8C\u4E86";var doneBody=(agent,total=GUIDE_STEPS)=>`\u8FD9\u5C31\u662F\u4E00\u4E2A\u9879\u76EE\u7684\u6765\u56DE\uFF1A\u6311\u5DE5\u574A\u3001\u5199\u9700\u6C42\u3001\u770B\u7248\u672C\u3001\u63D0\u610F\u89C1\u3001\u4EA4\u7ED9 ${agent}${total>6?"\u3001\u6279\u51C6":""}\u3002${total>6?`\u6279\u51C6\u540E ${agent} \u4F1A\u63A5\u7740\u505A\u4E0B\u4E00\u6B65\uFF08\u4F1A\u7528\u6389\u4E00\u4E2A\u56DE\u5408\uFF09\u3002`:""}\u8981\u62C9\u540C\u4E8B\u4E00\u8D77\u63D0\u610F\u89C1\uFF0C\u5728\u9879\u76EE\u91CC\u9080\u8BF7\u6210\u5458\u3002`;var stripePercent=step=>20+13*(Math.min(Math.max(step,1),7)-1);function selectorOf(q){const base=`[data-band-guide="${q.anchor}"]`;return q.workshop?`${base}[data-band-guide-workshop="${q.workshop}"]`:base}var overlap=(a,b)=>Math.max(0,Math.min(a.right,b.right)-Math.max(a.left,b.left))*Math.max(0,Math.min(a.bottom,b.bottom)-Math.max(a.top,b.top));function place(card,target,avoid,view,margin=12,gap=12){const{w,h}=card;const tw=target.right-target.left;const th=target.bottom-target.top;const xs=[];for(let x=target.left-w;x<=target.right+w;x+=40)xs.push(x);xs.push(target.left,target.right-w,target.left+tw/2-w/2);const cands=[];for(const x of xs)cands.push({x,y:target.bottom+gap},{x,y:target.top-gap-h});for(let y=target.top-h+20;y<=target.bottom-20;y+=40){cands.push({x:target.right+gap,y},{x:target.left-gap-w,y})}if(th<=0)cands.push({x:target.left,y:target.bottom+gap});for(const x of xs){let y=target.bottom+gap;for(let k=0;k<6;k++){const box={left:x,top:y,right:x+w,bottom:y+h};const hit=avoid.find(a=>overlap(box,a)>0);if(!hit)break;y=hit.bottom+gap}cands.push({x,y})}const minX=view.left+margin;const maxX=view.width-w-margin;let best=null;for(const c of cands){const x=Math.min(Math.max(c.x,minX),maxX);const y=c.y;if(x<minX||y<margin||y+h>view.height-margin)continue;const box={left:x,top:y,right:x+w,bottom:y+h};if(overlap(box,target)>0||avoid.some(a=>overlap(box,a)>0))continue;const dx=x>target.right?x-target.right:target.left>x+w?target.left-x-w:0;const dy=y>target.bottom?y-target.bottom:target.top>y+h?target.top-y-h:0;const d=Math.hypot(dx,dy);if(!best||d<best.d)best={x,y,d}}return best?{x:best.x,y:best.y}:null}function containsBox(outer,inner){return inner.left>=outer.left&&inner.right<=outer.right&&inner.top>=outer.top&&inner.bottom<=outer.bottom}function annotateTargetOf(annotates,work,artifact){const inside=work?annotates.find(b=>containsBox(work,b))??null:null;if(inside)return{target:inside,entry:inside};const outside=annotates[0]??null;return{target:artifact,entry:outside}}function columnOf(target,keep){let best=null;for(const b of keep){if(b.left>target.left||b.right<target.right||b.top>target.top||b.bottom<target.bottom)continue;if(!best||(b.right-b.left)*(b.bottom-b.top)<(best.right-best.left)*(best.bottom-best.top))best=b}return best}function placeUnderColumn(card,column,avoid,view,margin=12,gap=12){const x=column.left;const y=column.bottom+gap;const box={left:x,top:y,right:x+card.w,bottom:y+card.h};if(box.right>view.width-margin||box.bottom>view.height-margin)return null;if(avoid.some(a=>overlap(box,a)>0))return null;return{x,y}}function dockPlace(card,spots,hard,soft){let best=0;let bestScore=null;spots.forEach((s,i)=>{const box={left:s.x,top:s.y,right:s.x+card.w,bottom:s.y+card.h};const score=[hard.reduce((n,b)=>n+overlap(box,b),0),soft.reduce((n,b)=>n+overlap(box,b),0)];if(!bestScore||score[0]<bestScore[0]||score[0]===bestScore[0]&&score[1]<bestScore[1]){best=i;bestScore=score}});return best}function dockSpots(card,view,narrow,headBottom){const lowest=view.height-(narrow?12:18)-card.h;const highest=narrow?headBottom+8:18;const first=narrow?12:view.width-56-card.w;const xs=[first];if(!narrow)for(let x=first-48;x>=view.left+12;x-=48)xs.push(x);const spots=[];for(const x of xs){for(let y=lowest;y>highest;y-=16)spots.push({x,y});spots.push({x,y:highest})}return spots}function avoidAround(target,boxes2){return boxes2.filter(b=>!(b.left<=target.left&&b.top<=target.top&&b.right>=target.right&&b.bottom>=target.bottom)&&!(target.left<=b.left&&target.top<=b.top&&target.right>=b.right&&target.bottom>=b.bottom))}var SHELL="@kanyun-ai-infra/band-shell";var PAGES=`${SHELL}/pages`;var NAV=`${SHELL}/nav`;var SEARCH=`${SHELL}/search`;var USER_MENU=`${SHELL}/user-menu`;function pageFor(pages,entry){return pages.find(p=>p.meta.entry===entry&&!(p.route!==void 0&&isWorkshopPagePattern(p.route)))}var GUIDE_REFRESH_MS=1e3;var NARROW=860;var PHONE=NARROW_QUERY;function useMedia(query){const[on,setOn]=useState2(()=>typeof window!=="undefined"&&typeof window.matchMedia==="function"?window.matchMedia(query).matches:false);useEffect2(()=>{if(typeof window.matchMedia!=="function")return;const mq=window.matchMedia(query);const update=()=>setOn(mq.matches);update();mq.addEventListener("change",update);return()=>mq.removeEventListener("change",update)},[query]);return on}var useNarrow=()=>useMedia(`(max-width: ${NARROW}px)`);var usePhone=()=>useMedia(PHONE);function editable(t){if(!(t instanceof HTMLElement))return false;return t.isContentEditable||/^(INPUT|TEXTAREA|SELECT)$/.test(t.tagName)}var GuideContext=createContext2(null);function useGuide(){return useContext2(GuideContext)}function GuideProvider({ctx,children}){const api=ctx.app.member.betaMember===false?void 0:ctx.app.data.write?.guide;const[guide,setGuide]=useState2(null);const[finale,setFinale]=useState2(false);const[cardPill,setPill]=useState2(null);const last=useRef2(null);const openReq=useRef2(false);const requestOpen=useCallback2(()=>{openReq.current=true},[]);const takeOpen=useCallback2(()=>{const v=openReq.current;openReq.current=false;return v},[]);const apply=useCallback2(g=>{if(g.status==="done"&&last.current&&last.current.status!=="done")setFinale(true);last.current=g;setGuide(g)},[]);const watching=guide===null||guide.status==="active"||guide.status==="collapsed";useEffect2(()=>{if(!api)return;let live=true;api.get().then(g=>live&&apply(g),e=>live&&ctx.report(e));return()=>{live=false}},[api,ctx,apply]);useEffect2(()=>{if(!api||!watching)return;let live=true;let timer;const load=()=>{api.get().then(g=>live&&apply(g),e=>live&&ctx.report(e))};const off=ctx.app.data.subscribe(()=>{clearTimeout(timer);timer=setTimeout(load,GUIDE_REFRESH_MS)});const offRoute=ctx.app.subscribeRoute(()=>load());return()=>{live=false;clearTimeout(timer);off();offRoute()}},[api,ctx,apply,watching]);const act=useCallback2(async action=>{if(!api)return;try{const g=await api.set(action);last.current=g;setGuide(g)}catch(e){ctx.report(e)}},[api,ctx]);const step=guide?.step??1;const total=guide?.total??7;const collapsed=guide?.status==="collapsed"&&!finale;const pill=useMemo(()=>collapsed?{step,total,onOpen:()=>{requestOpen();void act("resume")}}:guide?.status==="active"&&!finale?cardPill:null,[collapsed,step,total,requestOpen,act,guide?.status,finale,cardPill]);const value=api?{guide,finale,closeFinale:()=>setFinale(false),act,pill,setPill,requestOpen,takeOpen}:null;return jsx2(GuideContext.Provider,{value,children})}function GuideMenuItem({onOpen}){const g=useGuide();if(!g)return null;return jsx2("button",{type:"button",className:"btn ghost band-shell-menu-link",onClick:()=>{onOpen();g.requestOpen();void g.act(g.guide?.status==="done"?"restart":"resume")},children:"\u4F7F\u7528\u6307\u5F15"})}function usePickedWorkshop(ctx,picked){const[state,setState]=useState2(null);useEffect2(()=>{if(!picked)return;let live=true;ctx.app.data.workshop(picked).then(w=>live&&w&&setState({id:picked,w}),()=>{});return()=>{live=false}},[ctx,picked]);return state&&state.id===picked?state.w:void 0}var MIN_COLUMN_CARD=240;var MIN_COMPACT_CARD=200;var CARD_WIDTH=360;var WORK_SLACK=4;var HAS_PROJECTS_WAIT_MS=1500;function useHasProjects(ctx,ask){const[has,setHas]=useState2(void 0);useEffect2(()=>{if(!ask)return;let live=true;ctx.app.data.projects().then(list=>live&&setHas(list.length>0),()=>live&&setHas(false));const timer=setTimeout(()=>live&&setHas(old=>old??false),HAS_PROJECTS_WAIT_MS);return()=>{live=false;clearTimeout(timer)}},[ctx,ask]);return ask?has:false}var boxOf=el=>{const r=el.getBoundingClientRect();if(r.width<=0||r.height<=0)return null;if(r.bottom<=0||r.top>=window.innerHeight||r.right<=0||r.left>=window.innerWidth)return null;return{left:r.left,top:r.top,right:r.right,bottom:r.bottom}};function firstBox(queries){for(const q of queries){for(const el of document.querySelectorAll(selectorOf(q))){const b=boxOf(el);if(b)return b}}return null}var shown=el=>!el.closest("[hidden], [inert]")&&(typeof el.checkVisibility!=="function"||el.checkVisibility({visibilityProperty:true}));var boxes=els=>[...els].filter(shown).map(boxOf).filter(b=>b!==null);function measure(view){const request=document.querySelector('[data-band-guide="request"]');const keepEls=[...document.querySelectorAll("[data-band-guide-keep]")];const keep=boxes(keepEls);const next=view.next.map(q=>firstBox([q])).filter(b=>b!==null);const entry=firstBox(view.targets);const main=document.querySelector(".band-shell-main")?.getBoundingClientRect();const work=view.step===4?boxes(document.querySelectorAll("[data-band-guide-work]"))[0]??null:null;const artifact=view.step===4?firstBox([{anchor:"artifact"}]):null;const annotates=view.step===4?boxes(document.querySelectorAll('[data-band-guide="annotate"]')):[];const picked=view.step===4?annotateTargetOf(annotates,work,artifact):null;const target=picked?picked.target:entry;const annotateBox=picked?.entry??null;const anchorBox=artifact??target;const column=view.step===4&&anchorBox?columnOf(anchorBox,keep):null;const hard=[...boxes(keepEls.filter(el=>el.querySelector("textarea, [contenteditable='true']"))),...boxes(document.querySelectorAll(".btn.primary")),...boxes(document.querySelectorAll('[data-band-guide-keep="hard"]')),...boxes(document.querySelectorAll("[role='tablist'], [role='group'][aria-label]")),...boxes([...document.querySelectorAll(DIALOG_SELECTOR)].filter(el=>!el.closest(".band-guide-card"))),...target?[target]:[],...annotateBox&&!sameBox(annotateBox,target)?[annotateBox]:[],...work?[work]:[]];return{target,next,keep,hard,facts:{annotate:annotates.length>0,busy:document.querySelector('[data-band-guide="turn"][data-band-guide-busy]')!==null},picked:request?.getAttribute("data-band-guide-workshop")||void 0,left:main?.left??0,work,vw:window.innerWidth,vh:window.innerHeight,column}}var sameBox=(a,b)=>a===b||a!==null&&b!==null&&a.left===b.left&&a.top===b.top&&a.right===b.right&&a.bottom===b.bottom;function usePageWatch(onChange,active){useEffect2(()=>{if(!active)return;let frame=0;let ro=null;const schedule=()=>{if(frame)return;frame=requestAnimationFrame(()=>{frame=0;onChange();for(const el of document.querySelectorAll("[data-band-guide-keep], [data-band-guide-work]"))ro?.observe(el)})};const mo=new MutationObserver(schedule);mo.observe(document.body,{subtree:true,childList:true,attributes:true,attributeFilter:["data-band-guide","data-band-guide-keep","data-band-guide-busy","class","hidden","open"]});ro=typeof ResizeObserver==="undefined"?null:new ResizeObserver(schedule);ro?.observe(document.body);schedule();window.addEventListener("resize",schedule);window.addEventListener("scroll",schedule,true);return()=>{cancelAnimationFrame(frame);mo.disconnect();ro?.disconnect();window.removeEventListener("resize",schedule);window.removeEventListener("scroll",schedule,true)}},[active,onChange])}function GuideStaff({step,total,small}){const W=small?70:322;const H=small?22:46;const k=H/46;const ys=[34,30,26,30,22,18,14].slice(0,total).map(y=>y*k);const gap=(W-40*k)/(total-1);return jsxs2("svg",{className:"band-guide-staff",viewBox:`0 0 ${W} ${H}`,width:W,height:H,"aria-hidden":"true",children:[[0,1,2,3,4].map(i=>jsx2("line",{x1:0,x2:W,y1:(8+i*8)*k,y2:(8+i*8)*k},i)),ys.map((y,i)=>{const x=20*k+i*gap;const n=i+1;const cls=n<step?"is-done":n===step?"is-current":"is-todo";const[rx,ry]=n===step?[5.4*k,3.7*k]:[4.6*k,3.1*k];return jsx2("ellipse",{className:cls,cx:x,cy:y,rx,ry,transform:`rotate(-20 ${x} ${y})`},i)})]})}function GuideLayer({ctx,route,pages}){const g=useGuide();const guide=g?.guide??null;const[workshop,setWorkshop]=useState2(null);const workshopId=guide?.project?.workshop;useEffect2(()=>{if(!workshopId){setWorkshop(null);return}let live=true;ctx.app.data.workshop(workshopId).then(w=>live&&setWorkshop(w),()=>live&&setWorkshop(null));return()=>{live=false}},[ctx,workshopId]);if(!g||!guide)return null;if(g.finale)return jsx2(GuideFinale,{agent:labelsOf(workshop).agent,total:guide.total,docs:guideDocsFor(workshop),onClose:g.closeFinale});if(guide.status!=="active")return null;return jsx2(GuideCard,{ctx,guide,workshop,route,pages,act:g.act,setPill:g.setPill,takeOpen:g.takeOpen})}function GuideDockPill(){const g=useGuide();const p=g?.pill;if(!p)return null;return jsxs2("button",{type:"button",className:"band-guide-pill","aria-expanded":false,onClick:()=>{const own=document.querySelector(".band-guide-card");const open=blockingDialog(own);if(!open)return p.onOpen();const close=open.matches?.('[data-band-dialog="new-comment"]')?open.querySelector(".pop-h .x"):null;if(!close)return;close.click();setTimeout(()=>{if(!blockingDialog(document.querySelector(".band-guide-card")))p.onOpen()},0)},"aria-label":`\u5C55\u5F00\u4F7F\u7528\u6307\u5F15\uFF0C\u7B2C ${p.step} \u6B65\uFF0C\u5171 ${p.total} \u6B65${p.title?`\uFF1A${p.title}`:""}`,title:p.title,children:[jsx2(GuideStaff,{step:p.step,total:p.total,small:true}),jsxs2("span",{children:["\u6307\u5F15 ",p.step,"/",p.total]}),p.title&&jsx2("span",{className:"band-guide-pill-title",children:p.title})]})}function GuideCard({ctx,guide,workshop,route,pages,act,setPill,takeOpen}){const labels=labelsOf(workshop);const[m,setM]=useState2(null);const[pos,setPos]=useState2(null);const card=useRef2(null);const[cardEl,setCardEl]=useState2(null);const attachCard=useCallback2(node=>{card.current=node;setCardEl(node)},[]);const titleId=useId2();const closeRef=useRef2(()=>{});useEffect2(()=>{const onCardEsc=withImeGuard2(e=>{if(e.key!=="Escape"||e.defaultPrevented)return;if(editable(e.target)||blockingDialog(card.current))return;if(!card.current||card.current.dataset.parked==="true")return;e.preventDefault();closeRef.current()});document.addEventListener("keydown",onCardEsc);return()=>document.removeEventListener("keydown",onCardEsc)},[]);const home=pageFor(pages,"home");const projectPage=pageFor(pages,"project");const project=guide.project;const narrow=useNarrow();const phone=usePhone();const hasProjects=useHasProjects(ctx,!project&&guide.step<=1);const facts={...m?.facts??{annotate:false,busy:false},narrow,phone,hasProjects:hasProjects===true};const pickedWorkshop=usePickedWorkshop(ctx,project||uiStep(guide,m?.picked)<2?void 0:m?.picked);const total=totalOf(guide,pickedWorkshop&&labelsOf(pickedWorkshop));const docs=guideDocsFor(workshop??pickedWorkshop);const view=stepView(uiStep(guide,m?.picked),labels,facts,total);const onPage=view.page==="home"?home!==void 0&&route.page===home.key:project!==void 0&&(route.params.project===project.id||route.params.project===project.slug);const viewNow=useRef2(view);viewNow.current=view;const remeasure=useCallback2(()=>{const next=measure(viewNow.current);setM(old=>old&&sameBox(old.target,next.target)&&old.picked===next.picked&&old.facts.annotate===next.facts.annotate&&old.facts.busy===next.facts.busy&&old.keep.length===next.keep.length&&old.next.length===next.next.length&&old.keep.every((b,i)=>sameBox(b,next.keep[i]??null))&&old.hard.length===next.hard.length&&old.hard.every((b,i)=>sameBox(b,next.hard[i]??null))&&old.next.every((b,i)=>sameBox(b,next.next[i]??null))&&old.left===next.left&&sameBox(old.work,next.work)&&old.vw===next.vw&&old.vh===next.vh&&sameBox(old.column,next.column)?old:next)},[view.step,view.title]);usePageWatch(remeasure,true);const target=onPage&&!narrow?m?.target??null:null;const[fit,setFit]=useState2("full");const[colW,setColW]=useState2(null);const measuredFor=useRef2(null);useLayoutEffect(()=>{const el=cardEl;if(!el||!target||!m){setColW(null);setPos(null);return}const avoid=avoidAround(target,[...m.next,...m.keep]);const view2={left:m.left,width:window.innerWidth,height:window.innerHeight};if(viewNow.current.step!==4){setColW(null);setPos(place({w:el.offsetWidth,h:el.offsetHeight},target,avoid,view2));return}let tier=fit;if(measuredFor.current!==m){measuredFor.current=m;tier="full";if(fit!=="full")setFit("full")}if(tier==="pill"){setColW(null);setPos(null);return}const base=m.column?[...avoid,m.column]:avoid;const guarded=m.work?[...base,{left:m.work.left-WORK_SLACK,top:m.work.top-WORK_SLACK,right:m.work.right+WORK_SLACK,bottom:m.work.bottom+WORK_SLACK}]:base;const column=m.column;const colWidth=column?column.right-column.left:0;const useColumn=column!==null&&colWidth>=(tier==="full"?MIN_COLUMN_CARD:MIN_COMPACT_CARD);const want=useColumn?Math.min(colWidth,CARD_WIDTH):null;if(colW!==want){setColW(want);return}const size={w:el.offsetWidth,h:el.offsetHeight};const at2=(useColumn&&column?placeUnderColumn(size,column,guarded,view2):null)??place(size,target,guarded,view2);if(at2){setPos(at2);return}setFit(tier==="full"?"compact":"pill")},[cardEl,target,m,colW,fit]);const docked=!target||!pos;const compact=fit==="compact"&&viewNow.current.step===4&&target!==null;const[dockAt,setDockAt]=useState2(null);const[opened,setOpened]=useState2(takeOpen);const placeKey=`${view.step}|${route.page}|${route.params.project}`;const lastPlace=useRef2(placeKey);useEffect2(()=>{if(lastPlace.current===placeKey)return;lastPlace.current=placeKey;setOpened(false)},[placeKey]);const parked=m!==null&&docked&&!opened;useLayoutEffect(()=>{const el=cardEl;if(!el||!m||!docked||parked){setDockAt(null);return}const size={w:el.offsetWidth,h:el.offsetHeight};const vw=window.innerWidth;const vh=window.innerHeight;const head=document.querySelector(".band-shell-mhead")?.getBoundingClientRect();const spots=dockSpots(size,{width:vw,height:vh,left:m.left},narrow,head&&head.height>0?head.bottom:0);const at2=spots[dockPlace(size,spots,[...m.hard,...m.next],m.keep)]??null;setDockAt(old=>old&&at2&&old.x===at2.x&&old.y===at2.y?old:at2)},[cardEl,m,docked,parked,narrow]);const closeCard=docked?()=>setOpened(false):()=>void act("collapse");closeRef.current=closeCard;useEffect2(()=>{setPill(parked&&hasProjects!==void 0?{step:view.step,total,title:view.title,onOpen:()=>setOpened(true)}:null)},[setPill,parked,hasProjects,view.step,view.title,total]);useEffect2(()=>()=>setPill(null),[setPill]);const goBack=!onPage&&(view.page==="home"?home&&(()=>ctx.app.navigate({page:home.key})):project&&projectPage&&(()=>ctx.app.navigate({page:projectPage.key,params:{workshop:project.workshop,project:project.id}})));const at=docked?dockAt:pos;const style={"--band-guide-stripe":`${stripePercent(view.step)}%`,...at?docked&&narrow?{left:"12px",right:"12px",top:`${at.y}px`,bottom:"auto"}:{left:`${at.x}px`,top:`${at.y}px`,right:"auto",bottom:"auto"}:{},...colW!==null?{width:`${colW}px`}:{}};if(hasProjects===void 0)return null;if(m===null&&!opened)return null;if(parked&&!target)return null;return jsxs2(Fragment2,{children:[target&&!docked&&jsx2("div",{className:"band-guide-ring","aria-hidden":"true",style:{left:target.left-4,top:target.top-4,width:target.right-target.left+8,height:target.bottom-target.top+8}}),jsxs2("dialog",{open:true,ref:attachCard,className:["band-guide-card",parked?"is-measuring":docked?"is-docked":"",compact?"is-compact":""].filter(Boolean).join(" "),"data-parked":parked?"true":"false","aria-hidden":parked?true:void 0,"aria-modal":"false","aria-labelledby":titleId,"data-band-guide-step":view.step,style,children:[!compact&&jsx2(GuideStaff,{step:view.step,total}),!compact&&jsxs2("div",{className:"band-guide-count",children:["\u7B2C ",view.step," \u6B65\uFF0C\u5171 ",total," \u6B65"]}),jsx2("h3",{id:titleId,children:view.title}),jsx2("p",{children:compact?view.brief??view.where:view.body}),!compact&&docked&&jsx2("p",{className:"band-guide-where",children:view.where}),jsxs2("div",{className:"band-guide-foot",children:[!compact&&jsx2("a",{href:docs,target:"_blank",rel:"noreferrer",children:"\u4E86\u89E3\u66F4\u591A"}),goBack&&jsx2("button",{type:"button",className:"btn sm",onClick:goBack,children:view.page==="home"?"\u56DE\u9996\u9875":"\u6253\u5F00\u9879\u76EE"}),jsx2("button",{type:"button",className:"btn ghost sm",onClick:closeCard,children:"\u6536\u8D77"}),!compact&&jsx2("button",{type:"button",className:"btn ghost sm",onClick:()=>void act("skip"),children:"\u8DF3\u8FC7\u6307\u5F15"})]})]}),jsx2("output",{className:"sr-only",children:view.title})]})}var FIN_W=322;var FIN_K=1.8;var FIN_TX=(FIN_W-111*FIN_K)/2;var FIN_TY=-1;var LOCKUP_HEADS=[[10,20.75],[19.5,16.25],[29,11.75]];function prefersStill(){return typeof window!=="undefined"&&typeof window.matchMedia==="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function GuideFinaleMark({total,still=prefersStill()}){const H=46;const ys=[34,30,26,30,22,18,14].slice(0,total);const gap=(FIN_W-40)/Math.max(total-1,1);const mid=Math.floor((total-1)/2);const headAt=j=>{const[x,y]=LOCKUP_HEADS[j]??[0,0];return[FIN_TX+x*FIN_K,FIN_TY+y*FIN_K]};const[haloX,haloY]=headAt(1);return jsxs2("svg",{className:"band-guide-staff band-guide-finale",viewBox:`0 0 ${FIN_W} ${H+2}`,width:FIN_W,height:H+2,"aria-hidden":"true","data-still":still||void 0,style:{"--fin-t0":`${400+total*250}ms`},children:[[0,1,2,3,4].map(i=>jsx2("line",{className:"band-guide-finale-line",x1:0,x2:FIN_W,y1:8+i*8,y2:8+i*8},i)),ys.map((y,i)=>{const x=20+i*gap;const j=i-(mid-1);const kept=j>=0&&j<=2;const[fx,fy]=kept?headAt(j):[x,y];return jsx2("g",{className:`band-guide-note${kept?" is-kept":""}${i===mid?" is-mid":""}`,style:{"--dx":`${fx-x}px`,"--dy":`${fy-y}px`,"--hop":`${400+i*250}ms`},children:jsx2("g",{className:"band-guide-hop",children:jsx2("ellipse",{cx:x,cy:y,rx:kept?3.3*FIN_K:4.6,ry:kept?2.15*FIN_K:3.1,transform:`rotate(-20 ${x} ${y})`})})},i)}),jsx2("circle",{className:"band-guide-halo",cx:haloX,cy:haloY,r:6}),jsxs2("g",{transform:`translate(${FIN_TX} ${FIN_TY}) scale(${FIN_K})`,children:[jsxs2("g",{className:"band-guide-stems",children:[jsx2("path",{className:"band-guide-stem",d:"M12.36 20.12V7.65"}),jsx2("path",{className:"band-guide-stem",d:"M21.86 15.62V5.35"}),jsx2("path",{className:"band-guide-stem",d:"M31.36 11.12V3.05"})]}),jsx2("path",{className:"band-guide-beam",d:"M11.54 6.4L32.19 1.4V4.3L11.54 9.3Z"}),jsx2("text",{className:"band-guide-wordmark",x:46,y:23,children:"Band"})]})]})}function GuideFinale({agent,total,docs,onClose}){const card=useRef2(null);const before=useRef2(null);const titleId=useId2();const close=useCallback2((later=false)=>{onClose();const restore=()=>{const el=before.current;if(el instanceof HTMLElement&&el.isConnected&&!blockingDialog(card.current))el.focus()};if(later)setTimeout(restore,0);else restore()},[onClose]);useEffect2(()=>{before.current=document.activeElement;const onDown=e=>{if(!card.current?.contains(e.target))close(true)};const onFinaleEsc=withImeGuard2(e=>{if(e.key==="Escape"&&!blockingDialog(card.current))close()});document.addEventListener("mousedown",onDown);document.addEventListener("keydown",onFinaleEsc);return()=>{document.removeEventListener("mousedown",onDown);document.removeEventListener("keydown",onFinaleEsc)}},[close]);return jsxs2("dialog",{open:true,ref:card,className:"band-guide-card is-finale","aria-modal":"false","aria-labelledby":titleId,children:[jsx2(GuideFinaleMark,{total}),jsx2("h3",{id:titleId,children:DONE_TITLE}),jsx2("p",{children:doneBody(agent,total)}),jsxs2("div",{className:"band-guide-foot",children:[jsx2("a",{href:docs,target:"_blank",rel:"noreferrer",children:"\u4E86\u89E3\u66F4\u591A"}),jsx2("button",{type:"button",className:"btn primary sm",onClick:()=>close(),children:"\u5B8C\u6210"})]})]})}function nextScope(prev,route,enters){if(route.workshop===void 0)return void 0;if(enters)return route.workshop;return route.workshop===prev?prev:void 0}function isWorkshopPage(page){return page.route!==void 0&&isWorkshopPagePattern2(page.route)}function workshopNav(pages){const order=p=>typeof p.meta["nav-order"]==="number"?p.meta["nav-order"]:Number.POSITIVE_INFINITY;return pages.filter(p=>isWorkshopPage(p)&&p.meta.nav!==false&&!p.route.split("/").some(s=>s.startsWith(":")&&s!==":workshop")).map((p,i)=>({p,i})).sort((a,b)=>order(a.p)-order(b.p)||a.i-b.i).map(({p})=>p)}var RELEASE_MARK={created:{text:"MR \u5F85\u5408\u5165",tone:"neutral",title:"\u5DF2\u5B8C\u6210 \xB7 MR \u5F85\u5408\u5165"},pending:{text:"\u6B63\u5728\u5F00 MR",tone:"neutral",title:"\u5DF2\u5B8C\u6210 \xB7 \u6B63\u5728\u5F00 MR"},failed:{text:"MR \u6CA1\u5F00\u6210",tone:"failed",title:"\u5DF2\u5B8C\u6210 \xB7 MR \u6CA1\u5F00\u6210"}};var DONE_MARK={text:"\u5DF2\u5B8C\u6210",tone:"done",title:"\u5DF2\u5B8C\u6210"};function sideGroups(projects,inbox,workshops,now){const running=new Set(inbox.inProgress.filter(i=>i.status==="running").map(i=>i.projectId));const queued=new Set(inbox.inProgress.filter(i=>i.status==="queued").map(i=>i.projectId));const order=new Map(workshops.map((w,i)=>[w.id,i]));const groups=new Map;const sorted=[...projects].sort((a,b)=>b.lastActivityAt.localeCompare(a.lastActivityAt));for(const p of sorted){const g=groups.get(p.workshop.id)??{workshop:p.workshop,needs:0,rows:[]};groups.set(p.workshop.id,g);const id=p.project.id;const glyph=running.has(id)?"working":p.needsMe>0?"needs":queued.has(id)?"queued":"";g.needs+=p.needsMe;g.rows.push({id,name:p.project.name,time:shortWhen(p.lastActivityAt,now),glyph,bg:running.has(id)&&queued.has(id),needs:p.needsMe,...p.status==="completed"?{done:p.release?RELEASE_MARK[p.release]:DONE_MARK}:{}})}const rank=id=>order.get(id)??Number.MAX_SAFE_INTEGER;return[...groups.values()].sort((a,b)=>rank(a.workshop.id)-rank(b.workshop.id))}function turnCounts(projects,inbox,route){const active=projects.filter(p=>!p.project.archivedAt&&p.status!=="archived"&&p.status!=="completed");const current=route.params.project?active.find(p=>(p.project.id===route.params.project||route.workshop!==void 0&&p.project.slug===route.params.project)&&(route.workshop===void 0||p.workshop.id===route.workshop)):void 0;const counted=route.params.project?current?[current]:[]:active;const projectIds=new Set(counted.map(p=>p.project.id));const turns=inbox.inProgress.filter(item=>projectIds.has(item.projectId));return{running:turns.filter(item=>item.status==="running").length,queued:turns.filter(item=>item.status==="queued").length}}function needsYouCount(inbox,workshops){const models=workshops.filter(w=>w.canAdmin&&w.model&&w.model.state!=="not_provisioned"&&w.userModelKey!=="require"&&(w.model.state!=="configured"||w.model.agent==="failed"));return inbox.needsYou.filter(isAlerting).length+(inbox.workshops?.filter(isAlerting).length??0)+(inbox.workshopCopyBlocked?.filter(isAlerting).length??0)+models.length}var LIBRARY_WORDS=/^(library|artifacts?)$/i;var SETTINGS_WORDS=/^settings?$/i;var WORKSHOP_SEGMENTS=new Set(["x","about","new"]);function guessMissing(path){const seg=path.split("/").filter(Boolean);const[a,b,c,d]=seg;if(a==="settings"||a!==void 0&&SETTINGS_WORDS.test(a)&&seg.length===1){return{target:{id:"connections"},params:{},label:"\u6253\u5F00\u6211\u7684\u8FDE\u63A5"}}let params;let word;if(a==="w"&&b&&c){if(WORKSHOP_SEGMENTS.has(c))return void 0;params={workshop:b,project:c};word=d}else if(a==="p"&&b){params={project:b};word=c}if(!params)return void 0;if(word!==void 0&&LIBRARY_WORDS.test(word))return{target:{id:"library"},params,label:"\u6253\u5F00\u4EA7\u7269\u5E93"};if(word!==void 0&&SETTINGS_WORDS.test(word))return{target:{id:"settings"},params:{...params,tab:"members"},label:"\u6253\u5F00\u9879\u76EE\u8BBE\u7F6E"};return{target:{entry:"project"},params,label:"\u56DE\u5230\u8FD9\u4E2A\u9879\u76EE"}}function settingsFrame(doc,title,view){const box=doc.createElement("div");box.innerHTML=renderToStaticMarkup(createElement(SettingsLayout,{navLabel:`${title}\u5206\u533A`,title,groups:[],view,children:createElement(SettingsLoading,{text:`\u6B63\u5728\u8BFB\u53D6${title}\u2026`})}));return box.firstElementChild}function mountPage(host,title,chrome,mount,skeleton){const doc=host.ownerDocument;const content=doc.createElement("div");content.className="band-shell-page-content";const loading=doc.createElement("div");loading.className="band-shell-transition";loading.setAttribute("role","status");loading.setAttribute("aria-label",`\u6B63\u5728\u6253\u5F00${title}`);const head=chrome?.cloneNode(true);let body=loading;if(head){head.classList.add("band-shell-transition-chrome");head.setAttribute("inert","");head.setAttribute("aria-hidden","true");for(const node of[head,...head.querySelectorAll("*")]){for(const attr of["id","autofocus","aria-controls","aria-labelledby","aria-describedby"])node.removeAttribute(attr)}loading.append(head);const frame=head.classList.contains("band-sf")?head:head.querySelector(".band-sf");if(frame){loading.classList.add("band-shell-transition-settings");const fresh=settingsFrame(doc,title,frame.dataset.view==="index"?"index":"page");const scroll=fresh.querySelector(".band-sf-scroll");body=fresh.querySelector("main")??loading;body.classList.add("band-shell-transition-body");if(scroll)frame.append(scroll)}}else{const heading=doc.createElement("h1");heading.textContent=title;loading.append(heading)}const label=doc.createElement("p");label.className="sub";label.textContent="\u6B63\u5728\u6253\u5F00\u9875\u9762\u2026";if(skeleton==="settings"){if(!head?.classList.contains("band-sf")&&!head?.querySelector(".band-sf")){loading.classList.add("band-shell-transition-settings");const frame=settingsFrame(doc,title,"page");frame.classList.add("band-shell-transition-frame");body=frame.querySelector("main")??loading;loading.append(frame)}}else{if(body!==loading)body.replaceChildren();body.append(label);for(let i=0;i<4;i++){const row=doc.createElement("div");row.className="band-shell-skeleton";row.setAttribute("aria-hidden","true");body.append(row)}}host.replaceChildren(loading,content);const ready=()=>{const pendingHead=content.querySelector(".band-project-head, .band-library-projecthead");const heading=content.querySelector(".proj-head h1, .band-library-head, .band-sf-title");if(pendingHead&&!heading&&!content.querySelector('[role="alert"], .band-surface-error'))return;if([...content.querySelectorAll("*")].some(el=>!el.closest("style,script")&&[...el.childNodes].some(n=>n.nodeType===3&&n.textContent?.trim()))){loading.remove();observer.disconnect()}};const observer=new MutationObserver(ready);observer.observe(content,{childList:true,subtree:true,characterData:true});const dispose=mount(content);ready();return()=>{observer.disconnect();dispose?.();host.replaceChildren()}}function pageChrome(host){const settings=host.querySelector(".band-sf");const nav=settings?.querySelector(".band-sf-nav");if(settings&&nav){const frame=settings.cloneNode(false);frame.append(nav.cloneNode(true));const page=settings.closest(".band-settings-page");const projectHead=page?.querySelector(".band-settings-projecthead");if(page&&projectHead){const wrap=page.cloneNode(false);wrap.append(projectHead.cloneNode(true),frame);return wrap}return frame}return host.querySelector(".band-sf-nav, .band-project-head, .proj-head, header, .band-library-head")}var EMPTY={projects:[],workshops:[],threads:[]};function useDebounced(value,ms){const[v,setV]=useState3(value);useEffect3(()=>{const t=setTimeout(()=>setV(value),ms);return()=>clearTimeout(t)},[value,ms]);return v}var isStatus=s=>ThreadStatusSchema.safeParse(s).success;function SearchDialog({ctx,pages,scope,onClose,onNavigate}){const sources=useSlotEntries(ctx,SEARCH);const[text,setText]=useState3("");const{settled,imeProps}=useSettledText(text);const query=useDebounced(settled.trim(),150);const[result,setResult]=useState3(null);const[error,setError]=useState3(null);const[active,setActive]=useState3(0);const input=useRef3(null);const dialog=useRef3(null);const listId=useId3();useEffect3(()=>{const before=document.activeElement;input.current?.focus();return()=>before?.focus?.()},[]);useEffect3(()=>{if(query===""){setResult(null);setError(null);return}let live=true;ctx.app.data.search(query,scope===void 0?void 0:{workshop:scope}).then(data2=>{if(!live)return;setResult({query,data:data2});setError(null);setActive(0)},e=>live&&setError(e instanceof Error?e.message:String(e)));return()=>{live=false}},[ctx,query,scope]);const about=pageFor(pages,"about");const projectPage=pageFor(pages,"project")?.key;const openProject=params=>projectPage&&ctx.app.navigate({page:projectPage,params});const finish=()=>{onClose();onNavigate()};const done=fn=>()=>{finish();fn()};const data=result?.data??EMPTY;const hits=[...data.projects.map(p=>({key:`p:${p.project.id}`,kind:"\u9879\u76EE",title:p.project.name,sub:p.workshop.name,icon:p.workshop.icon,open:done(()=>openProject({workshop:p.workshop.id,project:p.project.id}))})),...data.workshops.map(w=>({key:`w:${w.id}`,kind:"\u5DE5\u574A",title:w.name,sub:w.description,icon:w.icon,open:done(()=>about&&ctx.app.navigate({page:about.key,params:{workshop:w.id}}))})),...data.threads.map(t=>({key:`t:${t.projectId}:${t.threadId}`,kind:"\u610F\u89C1",title:t.excerpt,sub:`${t.projectName} #${t.mark} \xB7 ${isStatus(t.status)?statusText(t.status):t.status}`,open:done(()=>{const go=workshop=>openProject({project:t.projectId,thread:t.threadId,...workshop?{workshop}:{}});const known=data.projects.find(p=>p.project.id===t.projectId)?.workshop.id;if(known)return go(known);ctx.app.data.projects().then(ps=>go(ps.find(p=>p.project.id===t.projectId)?.workshop.id),()=>go())})}))];const current=hits[Math.min(active,hits.length-1)];const currentId=current?`${listId}-${current.key}`:void 0;const byKey=useRef3(false);const body=useRef3(null);useEffect3(()=>{if(result&&body.current)body.current.scrollTop=0},[result]);useEffect3(()=>{if(!currentId||!byKey.current)return;byKey.current=false;const el=document.getElementById(currentId);if(el)scrollIntoPanel(el)},[currentId]);const onKey=withImeGuard3(e=>{if(e.key==="Tab"){const all=[...dialog.current?.querySelectorAll("input, button, a[href], select, textarea, [tabindex='0']")??[]];const first=all[0];const last=all[all.length-1];if(e.shiftKey&&document.activeElement===first){e.preventDefault();last?.focus()}else if(!e.shiftKey&&document.activeElement===last){e.preventDefault();first?.focus()}}else if(e.key==="Escape"){e.preventDefault();onClose()}else if(e.key==="ArrowDown"&&hits.length>0){e.preventDefault();byKey.current=true;setActive(i=>(i+1)%hits.length)}else if(e.key==="ArrowUp"&&hits.length>0){e.preventDefault();byKey.current=true;setActive(i=>(i-1+hits.length)%hits.length)}else if(e.key==="Enter"&&current&&result?.query===settled.trim()){e.preventDefault();current.open()}});const searching=query!==""&&result?.query!==query&&!error;return jsxs3("div",{className:"band-shell-overlay",children:[jsx3("div",{className:"band-shell-overlay-scrim",onClick:onClose}),jsxs3("div",{ref:dialog,className:"band-shell-search-dialog",role:"dialog","aria-modal":"true","aria-label":"\u641C\u7D22",onKeyDown:onKey,children:[jsxs3("div",{className:"band-shell-search-field",children:[jsx3("span",{className:"band-shell-search-ic","aria-hidden":"true"}),jsx3("input",{ref:input,type:"search",value:text,onChange:e=>setText(e.target.value),...imeProps,placeholder:scope?"\u641C\u8FD9\u4E2A\u5DE5\u574A\u7684\u9879\u76EE\u3001\u610F\u89C1":"\u641C\u9879\u76EE\u3001\u5DE5\u574A\u3001\u610F\u89C1","aria-label":"\u641C\u7D22",role:"combobox","aria-expanded":hits.length>0,"aria-controls":listId,"aria-activedescendant":currentId,autoComplete:"off"}),jsx3("kbd",{children:"Esc"})]}),jsxs3("div",{ref:body,className:"band-shell-search-body",children:[query===""&&jsx3("p",{className:"band-shell-search-hint",children:"\u8F93\u5165\u9879\u76EE\u540D\u3001\u5DE5\u574A\u540D\uFF0C\u6216\u610F\u89C1\u91CC\u7684\u51E0\u4E2A\u5B57\u3002"}),error&&jsxs3("p",{className:"band-shell-search-hint",role:"alert",children:["\u641C\u7D22\u51FA\u9519\u4E86\uFF1A",error]}),searching&&jsx3("p",{className:"band-shell-search-hint",children:"\u6B63\u5728\u641C\u2026"}),result&&result.query===query&&hits.length===0&&jsxs3("p",{className:"band-shell-search-hint",children:["\u6CA1\u6709\u627E\u5230\u300C",query,"\u300D\u3002"]}),jsx3("div",{id:listId,role:"listbox",tabIndex:-1,"aria-label":"\u641C\u7D22\u7ED3\u679C",className:"band-shell-search-list",children:hits.map((h,i)=>jsxs3("div",{id:`${listId}-${h.key}`,role:"option","aria-selected":current?.key===h.key,tabIndex:-1,className:"band-shell-search-hit",onMouseMove:()=>setActive(i),onClick:h.open,onKeyDown:withImeGuard3(e=>e.key==="Enter"&&h.open()),children:[h.kind==="\u610F\u89C1"?jsx3("span",{className:"band-shell-search-hash","aria-hidden":"true",children:"#"}):jsx3(WorkshopIcon,{icon:h.icon,size:16}),jsx3("span",{className:"band-shell-search-t",children:h.title}),jsx3("span",{className:"band-shell-search-d",children:h.sub}),jsx3("span",{className:"band-shell-search-k",children:h.kind})]},h.key))}),query!==""&&sources.map(s=>jsxs3("section",{className:"band-shell-search-source","aria-label":String(s.meta.title),children:[jsx3("h3",{children:String(s.meta.title)}),jsx3(Mount,{mount:el=>ctx.slots.mount(el,SEARCH,{key:s.key,owner:{query,...scope?{workshop:scope}:{},close:finish}}),deps:[ctx,s.key,query,scope]})]},s.key))]})]})]})}var THEMES=[["system","\u8DDF\u968F\u7CFB\u7EDF"],["light","\u6D45\u8272"],["dark","\u6DF1\u8272"]];function UserMenu({ctx,theme,setTheme,onNavigate}){const items=useSlotEntries2(ctx,USER_MENU);const me=ctx.app.member;const[open,setOpen]=useState4(false);const button=useRef4(null);const panel=useRef4(null);const id=useId4();const close=()=>{setOpen(false);button.current?.focus()};const finish=()=>{close();onNavigate()};useEffect4(()=>{if(!open)return;panel.current?.querySelector("button, select, a, input")?.focus();const onDown=e=>{const t=e.target;if(!panel.current?.contains(t)&&!button.current?.contains(t))setOpen(false)};document.addEventListener("mousedown",onDown);return()=>document.removeEventListener("mousedown",onDown)},[open]);return jsxs4("div",{className:"band-shell-me",children:[open&&jsxs4("div",{ref:panel,id,className:"band-shell-menu",role:"group","aria-label":"\u6211\u7684\u83DC\u5355",onKeyDown:withImeGuard4(e=>{if(e.key==="Escape"){e.preventDefault();close()}}),children:[jsxs4("div",{className:"band-shell-menu-row",role:"group","aria-label":"\u4E3B\u9898",children:[jsx4("span",{className:"band-shell-menu-label",children:"\u4E3B\u9898"}),jsx4("div",{className:"seg",children:THEMES.map(([k,label])=>jsx4("button",{type:"button","aria-pressed":theme===k,onClick:()=>setTheme(k),children:label},k))})]}),items.map(it=>jsx4(Mount2,{className:"band-shell-menu-item",mount:el=>ctx.slots.mount(el,USER_MENU,{key:it.key,owner:{close:finish}}),deps:[ctx,it.key]},it.key)),jsx4(FeedbackMenuItem,{onOpen:finish}),jsx4(GuideMenuItem,{onOpen:close}),jsx4("a",{className:"btn ghost band-shell-menu-link",href:"/docs",onClick:finish,children:"\u4F7F\u7528\u6587\u6863"})]}),jsxs4("button",{ref:button,type:"button",className:"band-shell-me-btn","aria-expanded":open,"aria-controls":open?id:void 0,onClick:()=>setOpen(o=>!o),children:[jsx4(Avatar,{id:me.id,name:me.displayName,decorative:true}),jsxs4("span",{className:"band-shell-me-name",children:[me.displayName,me.title&&jsx4("small",{children:me.title})]}),jsx4("span",{className:"band-shell-me-caret","aria-hidden":"true",children:"\u2303"})]})]})}var DONE_TONE={done:" s-done",neutral:"",failed:" s-failed"};function Sidebar({ctx,route,pages,scope,phone,onToggle,onNavigate,theme,setTheme}){const navExtra=useSlotEntries3(ctx,NAV);const[searching,setSearching]=useState5(false);const filter=scope===void 0?void 0:{workshop:scope};const outsider=ctx.app.member.betaMember===false;const{data,error,reload}=useAppData(ctx,async d=>{if(outsider)return void 0;const[projects,inbox,workshops]=await Promise.all([d.projects(filter),d.inbox(filter),d.workshops(filter)]);return{projects,inbox,workshops}},[scope,outsider]);useEffect5(()=>{const on=withImeGuard5(e=>{const t=e.target;if(e.defaultPrevented||t?.isContentEditable)return;if(document.querySelector("[data-band-layer]"))return;if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="k"){e.preventDefault();setSearching(true)}});window.addEventListener("keydown",on);return()=>window.removeEventListener("keydown",on)},[]);const home=pageFor(pages,"home");const catalog=pageFor(pages,"catalog");const about=pageFor(pages,"about");const create=pageFor(pages,"new");const inScope=scope!==void 0;const scoped=(p={})=>inScope?{...p,workshop:scope}:p;const go=(page,params={})=>{onNavigate();ctx.app.navigate({page,params})};const nav=[];if(home){nav.push({key:home.key,label:"\u5F85\u6211\u5904\u7406",page:home.key,params:scoped(),count:data&&needsYouCount(data.inbox,data.workshops)})}if(!inScope&&catalog)nav.push({key:catalog.key,label:"\u5DE5\u574A",page:catalog.key,params:{}});if(inScope&&about)nav.push({key:about.key,label:"\u5173\u4E8E\u5DE5\u574A",page:about.key,params:scoped()});for(const n of navExtra){const where=n.meta.where??"all";if(where==="global"&&inScope)continue;if(where==="workshop"&&!inScope)continue;nav.push({key:n.key,label:String(n.meta.label),page:String(n.meta.page),params:scoped()})}if(inScope)for(const p of workshopNav(pages))nav.push({key:p.key,label:String(p.meta.title),page:p.key,params:scoped()});const isCurrent=page=>{const r=route.page??"";if(r===page||r.endsWith(`/${page}`))return true;return!inScope&&page===catalog?.key&&(r===about?.key||r===create?.key)};const card=inScope?data?.workshops.find(w=>w.id===scope):void 0;const groups=data?sideGroups(data.projects,data.inbox,data.workshops,new Date):[];const{running,queued}=data?turnCounts(data.projects,data.inbox,route):{running:0,queued:0};const newTarget=inScope?create:catalog;const lost=inScope&&data!==void 0&&card===void 0;const project=pageFor(pages,"project");return jsxs5("aside",{className:"side band-shell-side","aria-label":"\u4FA7\u680F",children:[jsxs5("div",{className:"side-top",children:[jsx5("button",{type:"button",className:inScope?"brand band-shell-brand-scope":"brand",onClick:()=>home&&go(home.key,scoped()),"aria-label":`${inScope?card?.name??scope:"Band"} \xB7 \u5F85\u6211\u5904\u7406`,children:inScope&&!lost?jsxs5(Fragment3,{children:[jsx5(WorkshopIcon2,{icon:card?.icon,size:20}),jsx5("span",{className:"band-shell-scope-name",children:card?.name??scope})]}):jsx5(LogoLockup,{})}),jsx5("button",{type:"button",className:"iconbtn",onClick:onToggle,"aria-label":phone?"\u5173\u95ED\u4FA7\u680F":"\u6536\u8D77\u4FA7\u680F",children:phone?jsx5("svg",{viewBox:"0 0 16 16",className:"band-shell-i16","aria-hidden":"true",children:jsx5("path",{d:"M4 4l8 8M12 4l-8 8"})}):jsxs5("svg",{viewBox:"0 0 16 16",className:"band-shell-i16","aria-hidden":"true",children:[jsx5("rect",{x:"2",y:"3",width:"12",height:"10",rx:"2"}),jsx5("path",{d:"M6.5 3v10"})]})}),newTarget&&jsx5("button",{type:"button",className:"iconbtn",onClick:()=>go(newTarget.key,scoped()),"aria-label":inScope?"\u65B0\u5EFA\u9879\u76EE":"\u65B0\u5EFA\u9879\u76EE\uFF1A\u5148\u9009\u5DE5\u574A",title:inScope?"\u65B0\u5EFA\u9879\u76EE":"\u65B0\u5EFA\u9879\u76EE\uFF1A\u5148\u9009\u5DE5\u574A",children:jsx5("svg",{viewBox:"0 0 16 16",className:"band-shell-i16","aria-hidden":"true",children:jsx5("path",{d:"M8 3.5v9M3.5 8h9"})})})]}),jsxs5("div",{className:"side-scroll",children:[jsxs5("button",{type:"button",className:"band-shell-search",onClick:()=>setSearching(true),children:[jsx5("span",{className:"band-shell-search-ic","aria-hidden":"true"}),jsx5("span",{children:inScope?`\u5728${card?.name??scope}\u91CC\u641C\u7D22`:"\u641C\u7D22"}),jsx5("kbd",{children:isMac()?"\u2318K":"Ctrl K"})]}),jsx5("nav",{className:"side-nav","aria-label":"\u4E3B\u5BFC\u822A",children:nav.map(n=>jsxs5("button",{type:"button",className:"srow",onClick:()=>go(n.page,n.params),"aria-current":isCurrent(n.page)?"page":void 0,children:[jsx5("span",{className:"nm",children:n.label}),n.count?jsx5("span",{className:"count","aria-label":`${n.count} \u4EF6`,children:n.count}):jsx5("span",{})]},n.key))}),outsider&&jsxs5("div",{className:"band-shell-side-note",children:[jsx5("span",{children:"\u5185\u6D4B\u4E2D"}),jsx5("a",{className:"linkish",href:"/beta",children:"\u7533\u8BF7\u5185\u6D4B"})]}),!outsider&&error&&!data&&jsx5("div",{className:"band-shell-side-note",children:jsxs5(ErrorNote2,{retry:reload,children:["\u9879\u76EE\u5217\u8868\u6CA1\u8BFB\u51FA\u6765\uFF1A",error]})}),!outsider&&!data&&!error&&jsxs5("div",{className:"band-shell-skeleton","aria-hidden":"true",children:[jsx5("i",{}),jsx5("i",{}),jsx5("i",{})]}),lost&&jsxs5("div",{className:"band-shell-side-note",children:["\u6CA1\u6709\u300C",scope,"\u300D\u8FD9\u4E2A\u5DE5\u574A\u3002",home&&jsx5("button",{type:"button",className:"linkish",onClick:()=>go(home.key,{}),children:"\u56DE\u5230\u5F85\u6211\u5904\u7406"})]}),data&&!lost&&groups.length===0&&jsxs5("div",{className:"band-shell-side-note",children:[inScope?"\u8FD9\u4E2A\u5DE5\u574A\u91CC\u8FD8\u6CA1\u6709\u4F60\u7684\u9879\u76EE\u3002":"\u8FD8\u6CA1\u6709\u9879\u76EE\u3002",newTarget&&jsx5("button",{type:"button",className:"linkish",onClick:()=>go(newTarget.key,scoped()),children:inScope?"\u65B0\u5EFA\u4E00\u4E2A":"\u53BB\u5DE5\u574A\u6311\u4E00\u4E2A\u5F00\u59CB"})]}),groups.map(g=>jsxs5("div",{className:"sgroup",children:[jsxs5("div",{className:"sgroup-h",children:[jsxs5("span",{className:"band-shell-group-name",children:[jsx5(WorkshopIcon2,{icon:g.workshop.icon,size:16,tile:true}),g.workshop.name]}),g.needs>0&&jsxs5("span",{className:"needs",children:[g.needs," \u9700\u8981\u4F60"]})]}),g.rows.map(r=>jsxs5("button",{type:"button",className:`srow${r.needs?" unread":""}`,onClick:()=>project&&go(project.key,{workshop:g.workshop.id,project:r.id}),"aria-current":route.params.project===r.id?"page":void 0,children:[jsx5("span",{className:"nm",children:r.name}),r.done?jsx5("span",{className:"tm band-shell-done",title:r.done.title,children:jsx5("span",{className:`chip plain${DONE_TONE[r.done.tone]}`,children:r.done.text})}):jsx5("span",{className:"tm",children:r.time}),jsx5(Glyph,{kind:r.glyph,bg:r.bg})]},r.id))]},g.workshop.id))]}),jsxs5("div",{className:"side-bottom",children:[inScope&&home&&jsx5("div",{className:"band-shell-links",children:jsxs5("button",{type:"button",onClick:()=>go(home.key,{}),children:[jsx5(BandMark,{size:14}),"\u5728 Band \u4E2D\u6253\u5F00\u5168\u90E8"]})}),(running>0||queued>0&&!route.params.project)&&jsxs5("div",{className:"side-foot",children:[route.params.project&&jsx5("span",{children:"\u672C\u9879\u76EE"}),running>0&&jsxs5("span",{className:"k",children:[jsx5(Glyph,{kind:"working"}),running," \u4E2A\u56DE\u5408\u5728\u8DD1"]}),queued>0&&!route.params.project&&jsxs5("span",{children:["\u6392\u961F ",queued]})]}),!phone&&jsx5(GuideDockPill,{}),jsx5(UserMenu,{ctx,theme,setTheme,onNavigate})]}),searching&&jsx5(SearchDialog,{ctx,pages,scope,onClose:()=>setSearching(false),onNavigate})]})}function isMac(){return typeof navigator!=="undefined"&&/Mac|iPhone|iPad/.test(navigator.platform)}var src_default=definePlugin({surfaces:{root:reactMount(ctx=>jsx6(Shell,{ctx}))}});var THEME_KEY="band-theme";var MAIN_ID="band-main";function readTheme(){try{const v=localStorage.getItem(THEME_KEY);return v==="light"||v==="dark"?v:"system"}catch{return"system"}}function useTheme(){const[theme,setTheme]=useState6(readTheme);useEffect6(()=>{const root=document.documentElement;if(theme==="system")root.removeAttribute("data-theme");else root.setAttribute("data-theme",theme)},[theme]);return[theme,t=>{setTheme(t);try{if(t==="system")localStorage.removeItem(THEME_KEY);else localStorage.setItem(THEME_KEY,t)}catch{}}]}function useWidth(){const[w,setW]=useState6(()=>window.innerWidth);useEffect6(()=>{const onResize=()=>setW(window.innerWidth);window.addEventListener("resize",onResize);return()=>window.removeEventListener("resize",onResize)},[]);return w}function embedded(win=window){try{if(win.self===win.top||win.parent.location.origin!==win.location.origin)return false}catch{return false}const nav=win.performance.getEntriesByType("navigation")[0];const first=nav?.name??win.location.href;return new URL(first,win.location.href).searchParams.has("preview")}function Shell({ctx}){const route=useRoute(ctx);const pages=useSlotEntries4(ctx,PAGES);const page=pages.find(p=>p.key===route.page);const home=pageFor(pages,"home");const loading=page===void 0&&route.page===null&&route.workshop!==void 0;const workshopPage=page!==void 0&&isWorkshopPage(page);const scopeRef=useRef5(void 0);const scope=useMemo2(()=>{scopeRef.current=nextScope(scopeRef.current,route,home!==void 0&&route.page===home.key||workshopPage||loading);return scopeRef.current},[route,home,workshopPage,loading]);const[theme,setTheme]=useTheme();const width=useWidth();const phone=width<=860;const[side,setSide]=useState6("auto");const[drawer,setDrawer]=useState6(false);const onProject=route.params.project!==void 0;const collapsed=!phone&&(side==="closed"||side==="auto"&&onProject&&width<1280);const lastPath=useRef5(route.path);useEffect6(()=>{if(lastPath.current===route.path)return;lastPath.current=route.path;setDrawer(false)},[route.path]);useEffect6(()=>{if(!drawer)return;const on=withImeGuard6(e=>e.key==="Escape"&&setDrawer(false));window.addEventListener("keydown",on);return()=>window.removeEventListener("keydown",on)},[drawer]);const title=page?String(page.meta.title):loading?"\u6B63\u5728\u6253\u5F00":"\u627E\u4E0D\u5230\u8FD9\u4E2A\u9875\u9762";useEffect6(()=>{document.title=title==="Band"?"Band":`${title} \xB7 Band`},[title]);const embed=useMemo2(()=>embedded(),[]);useEffect6(()=>{if(embed)document.documentElement.dataset.bandEmbed=""},[embed]);if(embed)return jsxs6("div",{className:"band-shell-embed","data-band-frame":"embed",id:MAIN_ID,children:[page?jsx6(PageMount,{ctx,page,pages}):jsx6("main",{className:"band-shell-missing","data-band-page":"loading","aria-busy":"true",children:jsx6("p",{className:"sub",children:"\u6B63\u5728\u6253\u5F00\u9875\u9762\u2026"})}),jsx6(ToastHost,{})]});if(page?.meta.frame==="bare")return jsxs6(Fragment4,{children:[jsx6(PageMount,{ctx,page,pages}),jsx6(ToastHost,{})]});const toggle=()=>phone?setDrawer(d=>!d):setSide(collapsed?"open":"closed");const cls=["band-shell",collapsed&&"is-collapsed",phone&&drawer&&"is-drawer"].filter(Boolean).join(" ");return jsxs6(Fragment4,{children:[jsx6(FeedbackProvider,{ctx,children:jsx6(GuideProvider,{ctx,children:jsxs6("div",{className:cls,"data-band-frame":"shell",children:[jsx6("a",{className:"sr-only band-shell-skip",href:`#${MAIN_ID}`,onClick:e=>{e.preventDefault();document.getElementById(MAIN_ID)?.focus()},children:"\u8DF3\u5230\u4E3B\u5185\u5BB9"}),jsx6(Sidebar,{ctx,route,pages,scope,phone,onToggle:toggle,onNavigate:()=>setDrawer(false),theme,setTheme}),jsx6("div",{className:"band-shell-scrim",onClick:()=>setDrawer(false)}),jsx6("section",{className:"band-shell-main",children:jsxs6("div",{className:"band-shell-body",id:MAIN_ID,tabIndex:-1,children:[(phone||collapsed)&&jsxs6("div",{className:"band-shell-mhead",children:[jsx6("button",{type:"button",className:"iconbtn",onClick:toggle,"aria-label":phone?"\u6253\u5F00\u4FA7\u680F":"\u5C55\u5F00\u4FA7\u680F","aria-expanded":phone?drawer:false,children:phone?"\u2630":"\u25E7"}),page?.meta.entry!=="project"&&jsx6("span",{className:"band-shell-mtitle",children:title}),jsx6(GuideDockPill,{})]}),page?jsx6(PageMount,{ctx,page,pages}):loading?jsx6("main",{className:"band-shell-missing","data-band-page":"loading","aria-busy":"true",children:jsx6("p",{className:"sub",children:"\u6B63\u5728\u6253\u5F00\u9875\u9762\u2026"})}):jsx6(Missing,{ctx,path:route.path,pages,home})]})}),jsx6(FeedbackCorner,{phone}),jsx6(GuideLayer,{ctx,route,pages})]})})}),jsx6(ToastHost,{})]})}function PageMount({ctx,page,pages}){const route=useRoute(ctx);const latest=useRef5(pages);latest.current=pages;const chrome=useRef5(void 0);const params=route.params;const{workshop:_w,thread:_t,...rest}=params;const identity=params.project!==void 0?rest:params;return jsx6(Mount3,{className:"band-shell-page","data-band-page":page.key,mount:el=>{const saved=chrome.current;const previous=saved&&saved.project===params.project?saved.node:null;const dispose=mountPage(el,String(page.meta.title??"\u9875\u9762"),previous??null,content=>ctx.slots.mount(content,PAGES,{key:page.key,owner:{params,page:entry=>pageFor(latest.current,entry)?.key}}),page.meta.skeleton==="settings"?"settings":void 0);return()=>{chrome.current={project:params.project,node:pageChrome(el)?.cloneNode(true)};dispose()}},deps:[ctx,page.key,JSON.stringify(identity)]})}function Missing({ctx,path,pages,home}){const guess=guessMissing(path);const target=guess?"entry"in guess.target?pageFor(pages,guess.target.entry):pages.find(p=>p.key.endsWith(`/${guess.target.id}`)):void 0;return jsxs6("main",{className:"band-shell-missing","data-band-page":"missing",children:[jsx6("h1",{children:"\u627E\u4E0D\u5230\u8FD9\u4E2A\u9875\u9762"}),jsxs6("p",{className:"sub",children:["\u53EF\u80FD\u662F\u5730\u5740\u8F93\u9519\u4E86\uFF0C\u6216\u8005\u8FD9\u4E2A\u9875\u9762\u5DF2\u7ECF\u4E0D\u5728\u4E86\u3002",target?"\u4F60\u53EF\u80FD\u60F3\u53BB\u4E0B\u9762\u8FD9\u91CC\u3002":"\u53EF\u4EE5\u4ECE\u5F85\u6211\u5904\u7406\u6216\u4FA7\u680F\u91CD\u65B0\u8FDB\u5165\u3002"]}),jsxs6("div",{className:"band-shell-missing-actions",children:[guess&&target&&jsx6("button",{type:"button",className:"btn primary",onClick:()=>ctx.app.navigate({page:target.key,params:guess.params}),children:guess.label}),home&&jsx6("button",{type:"button",className:guess&&target?"btn":"btn primary",onClick:()=>ctx.app.navigate({page:home.key}),children:"\u56DE\u5230\u5F85\u6211\u5904\u7406"})]}),jsx6("p",{className:"band-shell-missing-path",children:jsx6("code",{children:path})})]})}export{NAV,PAGES,SEARCH,SHELL,Shell,USER_MENU,src_default as default,embedded,pageFor};
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@kanyun-ai-infra/band-shell",
3
- "version": "0.2.12",
3
+ "version": "0.3.1",
4
4
  "description": "所有页面共用的外框:导航、搜索、用户菜单",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": "./dist/index.js"
8
8
  },
9
9
  "peerDependencies": {
10
- "@kanyun-ai-infra/band-plugin-sdk": "^1.222.0",
11
- "react": "^18.3.1",
12
- "react-dom": "^18.3.1"
10
+ "@kanyun-ai-infra/band-plugin-sdk": "^2.1.0",
11
+ "react": "^19.0.0",
12
+ "react-dom": "^19.0.0"
13
13
  }
14
14
  }
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@kanyun-ai-infra/band-stages",
3
- "version": "0.0.2",
3
+ "version": "0.1.0",
4
4
  "description": "阶段列表与进度,点阶段看当时交出的版本、打开批准或参数",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": "./dist/index.js"
8
8
  },
9
9
  "peerDependencies": {
10
- "@kanyun-ai-infra/band-plugin-sdk": "^1.222.0",
11
- "react": "^18.3.1",
12
- "react-dom": "^18.3.1",
10
+ "@kanyun-ai-infra/band-plugin-sdk": "^2.1.0",
11
+ "react": "^19.0.0",
12
+ "react-dom": "^19.0.0",
13
13
  "@kanyun-ai-infra/band-project": "*"
14
14
  }
15
15
  }