@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 +1 @@
1
- import"../../chunks/chunk-JFPQMFKF.js";import{AgentAvatar,Avatar,ErrorNote,InfoNote,MemoryNote,MessageAttachments,Mount,PaneHeader,STATUS_CHIP,THREAD_EVENTS,VersionReference,agentLabel,anchorLabel,memberName,memberOrder,queueSlot,reactMount,readComments,receiptFileNames,roleLabel,shortTime,statusText,threadConfirmation,useCtxData,useHandToAgent,useMembers,useSelectedArtifact,useSelectedEntity,useSlotEntries,useVersionReferences,versionReferenceLabel,wasStopped}from"@kanyun-ai-infra/band-plugin-react";import{definePlugin}from"@kanyun-ai-infra/band-plugin-sdk";import{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Fragment,jsx,jsxs}from"react/jsx-runtime";if(typeof document!=="undefined"&&document.head){const css="/* src/threads.css */\n.band-threads {\n display: flex;\n flex-direction: column;\n min-height: 0;\n flex: 1;\n}\n.band-threads-list {\n min-width: 0;\n overflow: auto;\n padding: 0 12px 12px;\n display: grid;\n gap: 8px;\n align-content: start;\n flex: 1;\n min-height: 0;\n}\n.band-threads-empty {\n padding: 10px;\n font-size: var(--fs-dense);\n color: var(--muted);\n}\n.band-threads-item.thread {\n min-width: 0;\n background: var(--sunk);\n box-shadow: none;\n transition: box-shadow var(--sixteenth) var(--ease);\n}\n.band-threads-item.thread:where([data-current]) {\n background: var(--accent-soft);\n box-shadow: inset 3px 0 0 var(--accent);\n}\n.band-threads-anchor.anchor-chip {\n background: var(--fill-2);\n}\n.band-threads-filter {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 0 14px 8px 12px;\n}\n.band-threads-open {\n display: grid;\n gap: 6px;\n width: 100%;\n padding: 0;\n border: 0;\n border-radius: 6px;\n background: none;\n color: inherit;\n text-align: left;\n font: inherit;\n cursor: pointer;\n}\n.band-threads-open:where(:focus-visible) {\n outline: none;\n box-shadow: 0 0 0 2px var(--accent);\n}\n.band-threads-text {\n font-size: var(--fs-row);\n overflow-wrap: anywhere;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 4;\n overflow: hidden;\n}\n:where(.band-threads-open:hover) .band-threads-text {\n text-decoration: underline;\n text-decoration-color: var(--rule-strong);\n}\n.band-threads-who {\n display: flex;\n align-items: center;\n gap: 6px;\n min-width: 0;\n font-size: var(--fs-meta);\n}\n.band-threads-author {\n flex: 0 0.2 auto;\n min-width: 2em;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.band-threads-meta {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--muted);\n}\n.band-threads-receipt.receipt {\n min-width: 0;\n background: var(--panel);\n}\n.band-threads-reply {\n display: grid;\n gap: 2px;\n padding: 6px 10px;\n border-radius: 8px;\n background: var(--panel);\n font-size: var(--fs-ui);\n}\n.band-threads-clamp {\n overflow-wrap: anywhere;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 3;\n overflow: hidden;\n}\n.band-threads-acts {\n display: flex;\n align-items: center;\n gap: 6px;\n flex-wrap: wrap;\n}\n.band-threads-slot {\n display: inline-flex;\n align-items: center;\n min-width: 0;\n}\n.band-threads-body {\n display: grid;\n gap: 6px;\n min-width: 0;\n}\n.band-threads-body:where(:not(:has(> :not(:empty)))) {\n display: none;\n}\n.band-threads-body-item {\n min-width: 0;\n}\n.band-threads-body-item:where(:empty) {\n display: none;\n}\n.band-threads-filters {\n margin: 0;\n padding: 0;\n border: 0;\n display: flex;\n align-items: center;\n gap: 6px;\n flex-wrap: wrap;\n min-width: 0;\n}\n.band-threads-bulk {\n padding: 10px 14px 12px 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n flex-wrap: wrap;\n}\n.band-threads-scope {\n align-self: flex-start;\n margin: -4px 14px 8px 16px;\n padding: 0;\n border: 0;\n background: none;\n font: inherit;\n font-size: var(--fs-dense);\n color: var(--muted);\n cursor: pointer;\n}\n.band-threads-scope:hover {\n text-decoration: underline;\n}\n.band-threads-hint {\n font-size: var(--fs-dense);\n color: var(--muted);\n}\n.band-threads-rh {\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.band-threads-act {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0 2px;\n}\n";let el=document.head.querySelector('style[data-band-style="@kanyun-ai-infra/band-threads"]');if(!el){el=document.createElement("style");el.setAttribute("data-band-style","@kanyun-ai-infra/band-threads");document.head.prepend(el)}el.textContent=css}var THREADS="@kanyun-ai-infra/band-threads";var SLOTS={itemActions:`${THREADS}/item.actions`,itemBody:`${THREADS}/item.body`,filters:`${THREADS}/filters`};function applyFilters(list,preds){const failed=[];let out=[...list];for(const p of preds){try{out=out.filter(t=>p(t))}catch(error){failed.push({pred:p,error})}}return{list:out,failed}}var src_default=definePlugin({surfaces:{threads:reactMount((ctx,props)=>jsx(Threads,{ctx,openOnly:props.config.openOnly===true,byEntity:props.config.filterBy==="entity",highlightCurrent:props.config.highlightCurrent===true,tab:props.owner?.tab}))}});function sortThreads(list){return[...list].sort((a,b)=>Number(a.status==="resolved")-Number(b.status==="resolved")||b.mark-a.mark)}function momentOf(v){return v?.kind==="timecode"?{seconds:v.seconds,...v.artifactId?{artifactId:v.artifactId}:{},...v.path?{path:v.path}:{}}:null}function useCurrentMoment(ctx,on){const[moment,setMoment]=useState(()=>on?momentOf(ctx.selection.get()):null);useEffect(()=>{if(!on){setMoment(null);return}return ctx.selection.subscribe(({value})=>setMoment(old=>{const next=momentOf(value);return next?.seconds===old?.seconds&&next?.artifactId===old?.artifactId&&next?.path===old?.path?old:next}))},[ctx,on]);return moment}var POINT_TOLERANCE_S=.5;var SHOT_KIND=/^(shot|plugin:.+\/shot)$/;function isCurrent(t,moment,entity){const a=t.anchor;if(!a)return false;if(entity&&onEntity(t,entity))return true;const p=a.payload;if(entity?.entityType==="shot"&&SHOT_KIND.test(a.kind)&&p.shotId===entity.id)return true;if(moment&&a.kind==="timecode"&&typeof p.seconds==="number"){if(moment.artifactId&&t.artifactId&&moment.artifactId!==t.artifactId)return false;if(moment.path&&typeof p.path==="string"&&moment.path!==p.path)return false;const end=typeof p.end==="number"&&p.end>p.seconds?p.end:null;return end===null?Math.abs(moment.seconds-p.seconds)<=POINT_TOLERANCE_S:moment.seconds>=p.seconds&&moment.seconds<end}return false}function sameEntity(a,b){return!!b&&a.entityType===b.entityType&&a.id===b.id&&a.artifactId===b.artifactId}function entityLabel(list,entity){const label=list.find(t=>onEntity(t,entity))?.anchor?.payload.label;return typeof label==="string"&&label?label:entity.id}function onEntity(t,entity){const p=t.anchor?.payload;return t.anchor?.kind==="entity"&&p?.entityType===entity.entityType&&p?.id===entity.id}function Threads({ctx,openOnly,byEntity,highlightCurrent,tab}){const selectedArtifact=useSelectedArtifact(ctx);const selectedEntity=useSelectedEntity(ctx);const[dismissed,setDismissed]=useState(null);const entity=byEntity&&selectedEntity&&!sameEntity(selectedEntity,dismissed)?selectedEntity:null;const artifactId=entity?.artifactId??selectedArtifact;const artifacts=useCtxData(ctx,()=>ctx.artifacts.list(),[],"version.*").data;const stageOf=artifacts?.find(a=>a.id===artifactId)?.stage;const stageIds=stageOf?artifacts?.filter(a=>a.stage===stageOf).map(a=>a.id)??[]:[];const multi=!entity&&stageIds.length>1;const[wideFor,setWideFor]=useState(null);useEffect(()=>{if(artifactId!==wideFor)setWideFor(null)},[artifactId,wideFor]);const wide=multi&&artifactId!==null&&wideFor===artifactId;const threads=useCtxData(ctx,()=>ctx.threads.list(artifactId?{artifactId}:{}),[artifactId],THREAD_EVENTS);const projectThreads=useCtxData(ctx,async()=>tab||!multi?void 0:await ctx.threads.list(),[tab,multi],THREAD_EVENTS);const stageSet=new Set(stageIds);const stageThreads={...projectThreads,data:projectThreads.data?.filter(t=>t.artifactId&&stageSet.has(t.artifactId))};const stageOpen=stageThreads.data?.filter(t=>t.status!=="resolved").length;const versionRefs=useVersionReferences(ctx);const labels=versionRefs.data;const turn=useCtxData(ctx,()=>ctx.turns.state(),[],THREAD_EVENTS).data;const members=useMembers(ctx);const order=useMemo(()=>memberOrder(members??[]),[members]);const filterEntries=useSlotEntries(ctx,SLOTS.filters);const[preds,setPreds]=useState(new Map);const setFilter=useCallback((key,fn)=>{setPreds(m=>{if(!fn&&!m.has(key))return m;const next=new Map(m);if(fn)next.set(key,fn);else next.delete(key);return next})},[]);const live=filterEntries.flatMap(e=>{const p=preds.get(e.key);return p?[p]:[]});const source=wide?stageThreads:threads;const filtered=applyFilters(sortThreads(source.data??[]).filter(t=>(!openOnly||t.status!=="resolved")&&(!entity||onEntity(t,entity))),live);const list=filtered.list;const moment=useCurrentMoment(ctx,highlightCurrent);const currentIds=highlightCurrent?list.filter(t=>isCurrent(t,moment,selectedEntity)).map(t=>t.id):[];const listEl=useRef(null);const currentKey=currentIds.join(",");const orderKey=list.map(t=>t.id).join(",");useEffect(()=>{const box=listEl.current;const first=currentKey?box?.querySelector("[data-current]"):null;if(!box||!first)return;const b=box.getBoundingClientRect();const f=first.getBoundingClientRect();if(f.top<b.top)box.scrollTop+=f.top-b.top;else if(f.bottom>b.bottom)box.scrollTop+=Math.min(f.bottom-b.bottom,f.top-b.top)},[currentKey,orderKey]);const comments=useCtxData(ctx,()=>loadCardComments(ctx,list),[list.map(t=>`${t.id}:${t.status}`).join(",")],"comment.*",{keepPrevious:true}).data;const reported=useRef(new WeakSet);useEffect(()=>{for(const{pred,error:error2}of filtered.failed){if(reported.current.has(pred))continue;reported.current.add(pred);ctx.report(error2)}});const actions=useSlotEntries(ctx,SLOTS.itemActions);const bodies=useSlotEntries(ctx,SLOTS.itemBody);const agentName=agentLabel(members,ctx.project.agent);const{selected:sel,picked,anchor,toggle,send,sendOne,busy,error,notice,canSend}=useHandToAgent(ctx,list,agentName);const openCount=list.filter(t=>t.status!=="resolved").length;const loaded=source.data!==void 0;useEffect(()=>{tab?.setCount(loaded?openCount:null)},[tab,loaded,openCount]);useEffect(()=>()=>tab?.setCount(null),[tab]);const entityChip=entity&&jsxs("button",{type:"button",className:"chip",onClick:()=>setDismissed(entity),"aria-label":"\u53D6\u6D88\u6309\u5B9E\u4F53\u7B5B\u9009",children:[entityLabel(threads.data??[],entity)," \xB7 \u5168\u90E8"]});const filter=(entityChip||filterEntries.length>0)&&jsxs("fieldset",{className:"band-threads-filters","aria-label":"\u7B5B\u9009",children:[entityChip,filterEntries.map(e=>jsx(Mount,{className:"band-threads-slot","data-band-slot":SLOTS.filters,"data-band-item":e.key,mount:el=>{let alive=true;const dispose=ctx.slots.mount(el,SLOTS.filters,{key:e.key,owner:{projectId:ctx.project.id,artifactId:artifactId??null,setFilter:fn=>{if(alive)setFilter(e.key,fn)}}});return()=>{alive=false;dispose?.();setFilter(e.key,null)}},deps:[ctx,e.key,artifactId,setFilter]},e.key))]});return jsxs("section",{className:"band-threads","aria-label":"\u610F\u89C1",children:[tab?(filter||openOnly)&&jsxs("div",{className:"band-threads-filter",children:[openOnly&&jsx("span",{className:"band-threads-hint",children:"\u53EA\u5217\u672A\u5173\u95ED\u7684\u610F\u89C1"}),filter]}):jsx(PaneHeader,{title:jsxs(Fragment,{children:[wide?"\u5168\u9636\u6BB5\u7684\u610F\u89C1":artifactId?"\u6B64\u4EA7\u7269\u7684\u610F\u89C1":openOnly?"\u672A\u5173\u95ED\u7684\u610F\u89C1":"\u610F\u89C1"," ",openCount]}),children:filter}),!tab&&multi&&(wide||stageOpen!==void 0)&&jsx("button",{type:"button",className:"band-threads-scope",onClick:()=>setWideFor(wide?null:artifactId),children:wide?"\u53EA\u770B\u6B64\u4EA7\u7269":`\u5168\u9636\u6BB5 ${stageOpen}`}),jsxs("div",{className:"band-threads-list",ref:listEl,children:[jsx(ErrorNote,{retry:source.reload,children:source.error}),loaded&&list.length===0&&!source.error&&jsx("div",{className:"band-threads-empty",children:entity?"\u8FD9\u4E2A\u5B9E\u4F53\u4E0A\u8FD8\u6CA1\u6709\u610F\u89C1\u3002":wide?openOnly?"\u8FD9\u4E2A\u9636\u6BB5\u7684\u4EA7\u7269\u4E0A\u6CA1\u6709\u672A\u5173\u95ED\u7684\u610F\u89C1\u3002":"\u8FD9\u4E2A\u9636\u6BB5\u7684\u4EA7\u7269\u4E0A\u8FD8\u6CA1\u6709\u610F\u89C1\u3002":openOnly?"\u6CA1\u6709\u672A\u5173\u95ED\u7684\u610F\u89C1\u3002":"\u8FD9\u4E2A\u4EA7\u7269\u4E0A\u8FD8\u6CA1\u6709\u610F\u89C1\u3002\u5728\u4EA7\u7269\u4E0A\u9009\u4E2D\u4E00\u5904\uFF0C\u5C31\u80FD\u63D0\u7B2C\u4E00\u6761\u3002"}),list.map(t=>jsx(ThreadCard,{ctx,thread:t,comments:comments?.[t.id],actions,bodies,members,order,labels,current:currentIds.includes(t.id),selectable:canSend&&t.status==="open",selected:sel.has(t.id),onToggle:()=>toggle(t.id),onHand:()=>void sendOne(t.id),handLabel:agentName,handBusy:busy,action:t.id===anchor?jsxs("div",{className:"band-threads-act",children:[jsx(ErrorNote,{children:error}),jsx(InfoNote,{children:notice}),jsxs("button",{type:"button",className:"btn primary sm",disabled:busy,onClick:send,children:[turn?.current?"\u6392\u5230\u4E0B\u4E00\u56DE\u5408":`\u4EA4\u7ED9 ${agentName}`,"\uFF08",picked.length," \u6761\uFF09"]})]}):void 0,status:statusText(t.status,{...t.status==="queued"?queueSlot(turn,t.id):{},...t.agent?{agent:memberName(members,t.agent)}:{},...t.status==="open"&&wasStopped(comments?.[t.id])?{stopped:true}:{}})},t.id))]}),jsxs("div",{className:"band-threads-bulk",children:[!anchor&&jsx(ErrorNote,{children:error}),!anchor&&jsx(InfoNote,{children:notice}),!canSend?jsxs("span",{className:"band-threads-hint",children:["\u4EA4\u7ED9 ",agentName," \u9700\u8981\u63D0\u4EA4\u4FEE\u6539\u7684\u6743\u9650"]}):picked.length>0?null:jsxs("span",{className:"band-threads-hint",children:["\u52FE\u9009\u51E0\u6761\u610F\u89C1\uFF0C\u53EF\u4EE5\u4E00\u8D77\u4EA4\u7ED9 ",agentName]})]})]})}async function loadCardComments(ctx,list){const ids=list.filter(t=>t.status!=="resolved").map(t=>t.id);return readComments(ctx,ids)}function cardComments(comments){const[first,...rest]=comments.filter(c=>c.kind==="comment");return{body:first?.body,attachments:first?.attachments??[],receipt:comments.filter(c=>c.kind==="receipt").at(-1),reply:rest.at(-1),replies:rest.length}}function ThreadCard({ctx,thread:t,comments,actions,bodies,members,order,labels,current,selectable,selected,onToggle,onHand,handLabel,handBusy,action,status}){const resolved=t.status==="resolved";const{body,attachments,receipt,reply,replies}=cardComments(comments??[]);const author=t.createdBy.id;const authorName=memberName(members,author);const role=roleLabel(members,author);const ver=t.anchor.versionId===void 0?void 0:versionReferenceLabel(labels,t.anchor.versionId,t.artifactId??null);const open=()=>ctx.threads.open(t.id);const confirmation=threadConfirmation(t,ctx.member,members);const awaiting=t.status==="awaiting_confirm";const tail=[receipt,reply].filter(c=>c!==void 0).sort((a,b)=>a.createdAt.localeCompare(b.createdAt));return jsxs("article",{className:`thread band-threads-item${resolved?" resolved":""}`,"data-band-guide-keep":"hard","aria-label":`\u610F\u89C1 #${t.mark}`,"data-current":current?"":void 0,children:[jsxs("div",{className:"th",children:[selectable&&jsx("input",{className:"checkbox",type:"checkbox",checked:selected,onChange:onToggle,"aria-label":`\u9009\u4E2D #${t.mark}`}),jsxs("span",{className:"num",children:["#",t.mark]}),jsx("span",{className:`chip ${STATUS_CHIP[t.status]}`,children:status}),jsxs("span",{className:"anchor-chip band-threads-anchor",children:[t.anchor?anchorLabel(t.anchor):"",ver?` \xB7 ${ver}`:""]})]}),action,jsxs("button",{type:"button",className:"band-threads-open",onClick:open,children:[jsxs("span",{className:"band-threads-who",children:[jsx(Avatar,{id:author,name:authorName,size:"xs",order,decorative:true}),jsx("span",{className:"band-threads-author",children:authorName}),jsxs("span",{className:"band-threads-meta",children:[role?`${role} \xB7 `:"",shortTime(t.createdAt)]})]}),jsx("span",{className:"band-threads-text",children:body??t.excerpt})]}),attachments.length>0&&jsx(MessageAttachments,{ctx,ids:attachments,compact:true}),bodies.length>0&&jsx("div",{className:"band-threads-body",children:bodies.map(e=>jsx(Mount,{className:"band-threads-body-item","data-band-slot":SLOTS.itemBody,"data-band-item":e.key,mount:el=>ctx.slots.mount(el,SLOTS.itemBody,{key:e.key,owner:{projectId:ctx.project.id,thread:t}}),deps:[ctx,e.key,t.id,t.status,t.updatedAt]},e.key))}),tail.map(c=>c.kind==="receipt"?jsxs("div",{className:"receipt band-threads-receipt",children:[jsxs("div",{className:"rh band-threads-rh",children:[jsx(AgentAvatar,{id:c.author.id,members,decorative:true}),memberName(members,c.author.id),c.receipt?.versionId&&jsxs(Fragment,{children:[" ","\xB7 \u6539\u5728"," ",jsx(VersionReference,{label:versionReferenceLabel(labels,c.receipt.versionId,t.artifactId??null)})]})]}),jsx("div",{className:"band-threads-clamp",children:c.body}),c.receipt&&c.receipt.files.length>0&&jsx("div",{className:"files",children:receiptFileNames(c.receipt.files).join(" ")}),c.receipt&&jsx(MemoryNote,{ctx,turnId:c.receipt.turnId})]},c.id):jsxs("div",{className:"band-threads-reply",children:[jsxs("span",{className:"band-threads-who",children:[jsx("span",{className:"band-threads-author",children:memberName(members,c.author.id)}),jsx("span",{className:"band-threads-meta",children:shortTime(c.createdAt)})]}),jsx("div",{className:"band-threads-clamp",children:c.body})]},c.id)),(!resolved||actions.length>0)&&jsxs("div",{className:"band-threads-acts",children:[selectable&&jsxs("button",{type:"button",className:"btn sm","data-band-guide":"hand-to-agent",disabled:handBusy,onClick:onHand,children:["\u4EA4\u7ED9 ",handLabel]}),!resolved&&awaiting&&(confirmation.allowed?jsx("button",{type:"button",className:"btn primary sm",onClick:open,children:"\u786E\u8BA4\u662F\u5426\u89E3\u51B3"}):jsx("span",{className:"band-threads-hint",children:confirmation.hint})),!resolved&&jsx("button",{type:"button",className:"btn ghost sm",onClick:open,children:replies>1?`\u56DE\u590D \xB7 \u5171 ${replies} \u6761`:"\u56DE\u590D"}),actions.map(e=>jsx(Mount,{className:"band-threads-slot","data-band-slot":SLOTS.itemActions,"data-band-item":e.key,mount:el=>ctx.slots.mount(el,SLOTS.itemActions,{key:e.key,owner:{projectId:ctx.project.id,thread:t}}),deps:[ctx,e.key,t.id,t.status,t.updatedAt]},e.key))]})]})}export{SLOTS,applyFilters,cardComments,src_default as default,isCurrent,loadCardComments,onEntity,sortThreads};
1
+ import"../../chunks/chunk-JFPQMFKF.js";import{AgentAvatar,Avatar,ErrorNote,InfoNote,MemoryNote,MessageAttachments,Mount,PaneHeader,STATUS_CHIP,THREAD_EVENTS,VersionReference,agentLabel,anchorLabel,memberName,memberOrder,queueSlot,reactMount,readComments,receiptFileNames,roleLabel,shortTime,statusText,threadConfirmation,useCtxData,useHandToAgent,useMembers,useSelectedArtifact,useSelectedEntity,useSlotEntries,useVersionReferences,versionReferenceLabel,wasStopped}from"@kanyun-ai-infra/band-plugin-react";import{definePlugin}from"@kanyun-ai-infra/band-plugin-sdk";import{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Fragment,jsx,jsxs}from"react/jsx-runtime";if(typeof document!=="undefined"&&document.head){const css="/* src/threads.css */\n.band-threads {\n display: flex;\n flex-direction: column;\n min-height: 0;\n flex: 1;\n}\n.band-threads-list {\n min-width: 0;\n overflow: auto;\n padding: 0 12px 12px;\n display: grid;\n gap: 8px;\n align-content: start;\n flex: 1;\n min-height: 0;\n}\n.band-threads-empty {\n padding: 10px;\n font-size: var(--fs-dense);\n color: var(--muted);\n}\n.band-threads-item.thread {\n min-width: 0;\n background: var(--sunk);\n box-shadow: none;\n transition: box-shadow var(--sixteenth) var(--ease);\n}\n.band-threads-item.thread:where([data-current]) {\n background: var(--accent-soft);\n box-shadow: inset 3px 0 0 var(--accent);\n}\n.band-threads-anchor.anchor-chip {\n background: var(--fill-2);\n}\n.band-threads-filter {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 0 14px 8px 12px;\n}\n.band-threads-open {\n display: grid;\n gap: 6px;\n width: 100%;\n padding: 0;\n border: 0;\n border-radius: 6px;\n background: none;\n color: inherit;\n text-align: left;\n font: inherit;\n cursor: pointer;\n}\n.band-threads-open:where(:focus-visible) {\n outline: none;\n box-shadow: 0 0 0 2px var(--accent);\n}\n.band-threads-text {\n font-size: var(--fs-row);\n overflow-wrap: anywhere;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 4;\n overflow: hidden;\n}\n:where(.band-threads-open:hover) .band-threads-text {\n text-decoration: underline;\n text-decoration-color: var(--rule-strong);\n}\n.band-threads-who {\n display: flex;\n align-items: center;\n gap: 6px;\n min-width: 0;\n font-size: var(--fs-meta);\n}\n.band-threads-author {\n flex: 0 0.2 auto;\n min-width: 2em;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.band-threads-meta {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--muted);\n}\n.band-threads-receipt.receipt {\n min-width: 0;\n background: var(--panel);\n}\n.band-threads-reply {\n display: grid;\n gap: 2px;\n padding: 6px 10px;\n border-radius: 8px;\n background: var(--panel);\n font-size: var(--fs-ui);\n}\n.band-threads-clamp {\n overflow-wrap: anywhere;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 3;\n overflow: hidden;\n}\n.band-threads-acts {\n display: flex;\n align-items: center;\n gap: 6px;\n flex-wrap: wrap;\n}\n.band-threads-slot {\n display: inline-flex;\n align-items: center;\n min-width: 0;\n}\n.band-threads-body {\n display: grid;\n gap: 6px;\n min-width: 0;\n}\n.band-threads-body:where(:not(:has(> :not(:empty)))) {\n display: none;\n}\n.band-threads-body-item {\n min-width: 0;\n}\n.band-threads-body-item:where(:empty) {\n display: none;\n}\n.band-threads-filters {\n margin: 0;\n padding: 0;\n border: 0;\n display: flex;\n align-items: center;\n gap: 6px;\n flex-wrap: wrap;\n min-width: 0;\n}\n.band-threads-bulk {\n padding: 10px 14px 12px 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n flex-wrap: wrap;\n}\n.band-threads-scope {\n align-self: flex-start;\n margin: -4px 14px 8px 16px;\n padding: 0;\n border: 0;\n background: none;\n font: inherit;\n font-size: var(--fs-dense);\n color: var(--muted);\n cursor: pointer;\n}\n.band-threads-scope:hover {\n text-decoration: underline;\n}\n.band-threads-hint {\n font-size: var(--fs-dense);\n color: var(--muted);\n}\n.band-threads-rh {\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.band-threads-act {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0 2px;\n}\n";let el=document.head.querySelector('style[data-band-style="@kanyun-ai-infra/band-threads"]');if(!el){el=document.createElement("style");el.setAttribute("data-band-style","@kanyun-ai-infra/band-threads");document.head.prepend(el)}el.textContent=css}var THREADS="@kanyun-ai-infra/band-threads";var SLOTS={itemActions:`${THREADS}/item.actions`,itemBody:`${THREADS}/item.body`,filters:`${THREADS}/filters`};function applyFilters(list,preds){const failed=[];let out=[...list];for(const p of preds){try{out=out.filter(t=>p(t))}catch(error){failed.push({pred:p,error})}}return{list:out,failed}}var src_default=definePlugin({surfaces:{threads:reactMount((ctx,props)=>jsx(Threads,{ctx,openOnly:props.config.openOnly===true,byEntity:props.config.filterBy==="entity",highlightCurrent:props.config.highlightCurrent===true,tab:props.owner?.tab}))}});function sortThreads(list){return[...list].sort((a,b)=>Number(a.status==="resolved")-Number(b.status==="resolved")||b.mark-a.mark)}function momentOf(v){return v?.kind==="timecode"?{seconds:v.seconds,...v.artifactId?{artifactId:v.artifactId}:{},...v.path?{path:v.path}:{}}:null}function useCurrentMoment(ctx,on){const[moment,setMoment]=useState(()=>on?momentOf(ctx.selection.get()):null);useEffect(()=>{if(!on){setMoment(null);return}return ctx.selection.subscribe(({value})=>setMoment(old=>{const next=momentOf(value);return next?.seconds===old?.seconds&&next?.artifactId===old?.artifactId&&next?.path===old?.path?old:next}))},[ctx,on]);return moment}var POINT_TOLERANCE_S=.5;var SHOT_KIND=/^(shot|plugin:.+\/shot)$/;function isCurrent(t,moment,entity){const a=t.anchor;if(!a)return false;if(entity&&onEntity(t,entity))return true;const p=a.payload;if(entity?.entityType==="shot"&&SHOT_KIND.test(a.kind)&&p.shotId===entity.id)return true;if(moment&&a.kind==="timecode"&&typeof p.seconds==="number"){if(moment.artifactId&&t.artifactId&&moment.artifactId!==t.artifactId)return false;if(moment.path&&typeof p.path==="string"&&moment.path!==p.path)return false;const end=typeof p.end==="number"&&p.end>p.seconds?p.end:null;return end===null?Math.abs(moment.seconds-p.seconds)<=POINT_TOLERANCE_S:moment.seconds>=p.seconds&&moment.seconds<end}return false}function sameEntity(a,b){return!!b&&a.entityType===b.entityType&&a.id===b.id&&a.artifactId===b.artifactId}function entityLabel(list,entity){const label=list.find(t=>onEntity(t,entity))?.anchor?.payload.label;return typeof label==="string"&&label?label:entity.id}function onEntity(t,entity){const p=t.anchor?.payload;return t.anchor?.kind==="entity"&&p?.entityType===entity.entityType&&p?.id===entity.id}function Threads({ctx,openOnly,byEntity,highlightCurrent,tab}){const selectedArtifact=useSelectedArtifact(ctx);const selectedEntity=useSelectedEntity(ctx);const[dismissed,setDismissed]=useState(null);const entity=byEntity&&selectedEntity&&!sameEntity(selectedEntity,dismissed)?selectedEntity:null;const artifactId=entity?.artifactId??selectedArtifact;const artifacts=useCtxData(ctx,()=>ctx.artifacts.list(),[],"version.*").data;const stageOf=artifacts?.find(a=>a.id===artifactId)?.stage;const stageIds=stageOf?artifacts?.filter(a=>a.stage===stageOf).map(a=>a.id)??[]:[];const multi=!entity&&stageIds.length>1;const[wideFor,setWideFor]=useState(null);useEffect(()=>{if(artifactId!==wideFor)setWideFor(null)},[artifactId,wideFor]);const wide=multi&&artifactId!==null&&wideFor===artifactId;const threads=useCtxData(ctx,()=>ctx.threads.list(artifactId?{artifactId}:{}),[artifactId],THREAD_EVENTS);const projectThreads=useCtxData(ctx,async()=>tab||!multi?void 0:await ctx.threads.list(),[tab,multi],THREAD_EVENTS);const stageSet=new Set(stageIds);const stageThreads={...projectThreads,data:projectThreads.data?.filter(t=>t.artifactId&&stageSet.has(t.artifactId))};const stageOpen=stageThreads.data?.filter(t=>t.status!=="resolved").length;const versionRefs=useVersionReferences(ctx);const labels=versionRefs.data;const turn=useCtxData(ctx,()=>ctx.turns.state(),[],THREAD_EVENTS).data;const members=useMembers(ctx);const order=useMemo(()=>memberOrder(members??[]),[members]);const filterEntries=useSlotEntries(ctx,SLOTS.filters);const[preds,setPreds]=useState(new Map);const setFilter=useCallback((key,fn)=>{setPreds(m=>{if(!fn&&!m.has(key))return m;const next=new Map(m);if(fn)next.set(key,fn);else next.delete(key);return next})},[]);const live=filterEntries.flatMap(e=>{const p=preds.get(e.key);return p?[p]:[]});const source=wide?stageThreads:threads;const filtered=applyFilters(sortThreads(source.data??[]).filter(t=>(!openOnly||t.status!=="resolved")&&(!entity||onEntity(t,entity))),live);const list=filtered.list;const moment=useCurrentMoment(ctx,highlightCurrent);const currentIds=highlightCurrent?list.filter(t=>isCurrent(t,moment,selectedEntity)).map(t=>t.id):[];const listEl=useRef(null);const currentKey=currentIds.join(",");const orderKey=list.map(t=>t.id).join(",");useEffect(()=>{const box=listEl.current;const first=currentKey?box?.querySelector("[data-current]"):null;if(!box||!first)return;const b=box.getBoundingClientRect();const f=first.getBoundingClientRect();if(f.top<b.top)box.scrollTop+=f.top-b.top;else if(f.bottom>b.bottom)box.scrollTop+=Math.min(f.bottom-b.bottom,f.top-b.top)},[currentKey,orderKey]);const comments=useCtxData(ctx,()=>loadCardComments(ctx,list),[list.map(t=>`${t.id}:${t.status}`).join(",")],"comment.*",{keepPrevious:true}).data;const reported=useRef(new WeakSet);useEffect(()=>{for(const{pred,error:error2}of filtered.failed){if(reported.current.has(pred))continue;reported.current.add(pred);ctx.report(error2)}});const actions=useSlotEntries(ctx,SLOTS.itemActions);const bodies=useSlotEntries(ctx,SLOTS.itemBody);const agentName=agentLabel(members,ctx.project.agent);const{selected:sel,picked,anchor,toggle,send,sendOne,busy,error,notice,canSend}=useHandToAgent(ctx,list,agentName);const openCount=list.filter(t=>t.status!=="resolved").length;const loaded=source.data!==void 0;useEffect(()=>{tab?.setCount(loaded?openCount:null)},[tab,loaded,openCount]);useEffect(()=>()=>tab?.setCount(null),[tab]);const entityChip=entity&&jsxs("button",{type:"button",className:"chip",onClick:()=>setDismissed(entity),"aria-label":"\u53D6\u6D88\u6309\u5B9E\u4F53\u7B5B\u9009",children:[entityLabel(threads.data??[],entity)," \xB7 \u5168\u90E8"]});const filter=(entityChip||filterEntries.length>0)&&jsxs("fieldset",{className:"band-threads-filters","aria-label":"\u7B5B\u9009",children:[entityChip,filterEntries.map(e=>jsx(Mount,{className:"band-threads-slot","data-band-slot":SLOTS.filters,"data-band-item":e.key,mount:el=>{let alive=true;const dispose=ctx.slots.mount(el,SLOTS.filters,{key:e.key,owner:{projectId:ctx.project.id,artifactId:artifactId??null,setFilter:fn=>{if(alive)setFilter(e.key,fn)}}});return()=>{alive=false;dispose?.();setFilter(e.key,null)}},deps:[ctx,e.key,artifactId,setFilter]},e.key))]});return jsxs("section",{className:"band-threads","aria-label":"\u610F\u89C1",children:[tab?(filter||openOnly)&&jsxs("div",{className:"band-threads-filter",children:[openOnly&&jsx("span",{className:"band-threads-hint",children:"\u53EA\u5217\u672A\u5173\u95ED\u7684\u610F\u89C1"}),filter]}):jsx(PaneHeader,{title:jsxs(Fragment,{children:[wide?"\u5168\u9636\u6BB5\u7684\u610F\u89C1":artifactId?"\u6B64\u4EA7\u7269\u7684\u610F\u89C1":openOnly?"\u672A\u5173\u95ED\u7684\u610F\u89C1":"\u610F\u89C1"," ",openCount]}),children:filter}),!tab&&multi&&(wide||stageOpen!==void 0)&&jsx("button",{type:"button",className:"band-threads-scope",onClick:()=>setWideFor(wide?null:artifactId),children:wide?"\u53EA\u770B\u6B64\u4EA7\u7269":`\u5168\u9636\u6BB5 ${stageOpen}`}),jsxs("div",{className:"band-threads-list",ref:listEl,children:[jsx(ErrorNote,{retry:source.reload,children:source.error}),loaded&&list.length===0&&!source.error&&jsx("div",{className:"band-threads-empty",children:entity?"\u8FD9\u4E2A\u5B9E\u4F53\u4E0A\u8FD8\u6CA1\u6709\u610F\u89C1\u3002":wide?openOnly?"\u8FD9\u4E2A\u9636\u6BB5\u7684\u4EA7\u7269\u4E0A\u6CA1\u6709\u672A\u5173\u95ED\u7684\u610F\u89C1\u3002":"\u8FD9\u4E2A\u9636\u6BB5\u7684\u4EA7\u7269\u4E0A\u8FD8\u6CA1\u6709\u610F\u89C1\u3002":openOnly?"\u6CA1\u6709\u672A\u5173\u95ED\u7684\u610F\u89C1\u3002":"\u8FD9\u4E2A\u4EA7\u7269\u4E0A\u8FD8\u6CA1\u6709\u610F\u89C1\u3002\u5728\u4EA7\u7269\u4E0A\u9009\u4E2D\u4E00\u5904\uFF0C\u5C31\u80FD\u63D0\u7B2C\u4E00\u6761\u3002"}),list.map(t=>jsx(ThreadCard,{ctx,thread:t,comments:comments?.[t.id],actions,bodies,members,order,labels,current:currentIds.includes(t.id),selectable:canSend&&t.status==="open",selected:sel.has(t.id),onToggle:()=>toggle(t.id),onHand:()=>void sendOne(t.id),handLabel:agentName,handBusy:busy,action:t.id===anchor?jsxs("div",{className:"band-threads-act",children:[jsx(ErrorNote,{children:error}),jsx(InfoNote,{children:notice}),jsxs("button",{type:"button",className:"btn primary sm",disabled:busy,onClick:send,children:[turn?.current?"\u6392\u5230\u4E0B\u4E00\u56DE\u5408":`\u4EA4\u7ED9 ${agentName}`,"\uFF08",picked.length," \u6761\uFF09"]})]}):void 0,status:statusText(t.status,{...t.status==="queued"?queueSlot(turn,t.id):{},...t.agent?{agent:memberName(members,t.agent)}:{},...t.status==="open"&&wasStopped(comments?.[t.id])?{stopped:true}:{}})},t.id))]}),jsxs("div",{className:"band-threads-bulk",children:[!anchor&&jsx(ErrorNote,{children:error}),!anchor&&jsx(InfoNote,{children:notice}),!canSend?jsxs("span",{className:"band-threads-hint",children:["\u4EA4\u7ED9 ",agentName," \u9700\u8981\u63D0\u4EA4\u4FEE\u6539\u7684\u6743\u9650"]}):picked.length>0?null:jsxs("span",{className:"band-threads-hint",children:["\u52FE\u9009\u51E0\u6761\u610F\u89C1\uFF0C\u53EF\u4EE5\u4E00\u8D77\u4EA4\u7ED9 ",agentName]})]})]})}async function loadCardComments(ctx,list){const ids=list.filter(t=>t.status!=="resolved").map(t=>t.id);return readComments(ctx,ids)}function cardComments(comments){const[first,...rest]=comments.filter(c=>c.kind==="comment");return{body:first?.body,attachments:first?.attachments??[],receipt:comments.filter(c=>c.kind==="receipt").at(-1),reply:rest.at(-1),replies:rest.length}}function ThreadCard({ctx,thread:t,comments,actions,bodies,members,order,labels,current,selectable,selected,onToggle,onHand,handLabel,handBusy,action,status}){const resolved=t.status==="resolved";const{body,attachments,receipt,reply,replies}=cardComments(comments??[]);const author=t.createdBy.id;const authorName=memberName(members,author);const role=roleLabel(members,author);const ver=t.anchor.versionId===void 0?void 0:versionReferenceLabel(labels,t.anchor.versionId,t.artifactId??null);const open=()=>ctx.threads.open(t.id);const confirmation=threadConfirmation(t,ctx.member,members);const awaiting=t.status==="awaiting_confirm";const tail=[receipt,reply].filter(c=>c!==void 0).sort((a,b)=>a.createdAt.localeCompare(b.createdAt));return jsxs("article",{className:`thread band-threads-item${resolved?" resolved":""}`,"data-band-guide-keep":"hard","aria-label":`\u610F\u89C1 #${t.mark}`,"data-current":current?"":void 0,children:[jsxs("div",{className:"th",children:[selectable&&jsx("input",{className:"checkbox",type:"checkbox",checked:selected,onChange:onToggle,"aria-label":`\u9009\u4E2D #${t.mark}`}),jsxs("span",{className:"num",children:["#",t.mark]}),jsx("span",{className:`chip ${STATUS_CHIP[t.status]}`,children:status}),jsxs("span",{className:"anchor-chip band-threads-anchor",children:[t.anchor?anchorLabel(t.anchor):"",ver?` \xB7 ${ver}`:""]})]}),action,jsxs("button",{type:"button",className:"band-threads-open",onClick:open,children:[jsxs("span",{className:"band-threads-who",children:[jsx(Avatar,{id:author,name:authorName,size:"xs",order,decorative:true}),jsx("span",{className:"band-threads-author",children:authorName}),jsxs("span",{className:"band-threads-meta",children:[role?`${role} \xB7 `:"",shortTime(t.createdAt)]})]}),jsx("span",{className:"band-threads-text",children:body??t.excerpt})]}),attachments.length>0&&jsx(MessageAttachments,{ctx,ids:attachments,compact:true}),bodies.length>0&&jsx("div",{className:"band-threads-body",children:bodies.map(e=>jsx(Mount,{className:"band-threads-body-item","data-band-slot":SLOTS.itemBody,"data-band-item":e.key,mount:el=>ctx.slots.mount(el,SLOTS.itemBody,{key:e.key,owner:{projectId:ctx.project.id,thread:t}}),deps:[ctx,e.key,t.id,t.status,t.updatedAt]},e.key))}),tail.map(c=>c.kind==="receipt"?jsxs("div",{className:"receipt band-threads-receipt",children:[jsxs("div",{className:"rh band-threads-rh",children:[jsx(AgentAvatar,{id:c.author.id,members,decorative:true}),memberName(members,c.author.id),c.receipt?.versionId&&jsxs(Fragment,{children:[" ","\xB7 \u6539\u5728"," ",jsx(VersionReference,{label:versionReferenceLabel(labels,c.receipt.versionId,t.artifactId??null)})]})]}),jsx("div",{className:"band-threads-clamp",children:c.body}),c.receipt&&c.receipt.files.length>0&&jsx("div",{className:"files",children:receiptFileNames(c.receipt.files).join(" ")}),c.receipt&&jsx(MemoryNote,{ctx,turnId:c.receipt.turnId})]},c.id):jsxs("div",{className:"band-threads-reply",children:[jsxs("span",{className:"band-threads-who",children:[jsx("span",{className:"band-threads-author",children:memberName(members,c.author.id)}),jsx("span",{className:"band-threads-meta",children:shortTime(c.createdAt)})]}),jsx("div",{className:"band-threads-clamp",children:c.body})]},c.id)),(!resolved||actions.length>0)&&jsxs("div",{className:"band-threads-acts",children:[selectable&&jsxs("button",{type:"button",className:"btn sm","data-band-guide":"hand-to-agent",disabled:handBusy,onClick:onHand,children:["\u4EA4\u7ED9 ",handLabel]}),!resolved&&awaiting&&(confirmation.allowed?jsx("button",{type:"button",className:"btn primary sm",onClick:open,children:"\u6807\u4E3A\u5DF2\u89E3\u51B3\uFF0C\u6216\u6253\u56DE"}):jsx("span",{className:"band-threads-hint",children:confirmation.hint})),!resolved&&jsx("button",{type:"button",className:"btn ghost sm",onClick:open,children:replies>1?`\u56DE\u590D \xB7 \u5171 ${replies} \u6761`:"\u56DE\u590D"}),actions.map(e=>jsx(Mount,{className:"band-threads-slot","data-band-slot":SLOTS.itemActions,"data-band-item":e.key,mount:el=>ctx.slots.mount(el,SLOTS.itemActions,{key:e.key,owner:{projectId:ctx.project.id,thread:t}}),deps:[ctx,e.key,t.id,t.status,t.updatedAt]},e.key))]})]})}export{SLOTS,applyFilters,cardComments,src_default as default,isCurrent,loadCardComments,onEntity,sortThreads};
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@kanyun-ai-infra/band-threads",
3
- "version": "0.1.3",
3
+ "version": "0.2.1",
4
4
  "description": "意见栏:按状态列出意见线程,点开定位到内容上,勾选几条交给 Agent",
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
  }
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@kanyun-ai-infra/band-turn-bar",
3
- "version": "0.0.6",
3
+ "version": "0.1.0",
4
4
  "description": "回合栏与过程记录:看 Agent 这一回合在做什么",
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",
10
+ "@kanyun-ai-infra/band-plugin-sdk": "^2.1.0",
11
11
  "@kanyun-ai-infra/band-project": "*",
12
- "react": "^18.3.1",
13
- "react-dom": "^18.3.1"
12
+ "react": "^19.0.0",
13
+ "react-dom": "^19.0.0"
14
14
  }
15
15
  }
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@kanyun-ai-infra/band-turn-trace",
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
  }
@@ -1 +1 @@
1
- import{activePair}from"../../chunks/chunk-SB74RUTN.js";import"../../chunks/chunk-N6N56MWF.js";import"../../chunks/chunk-TWQQ2CCT.js";import"../../chunks/chunk-JFPQMFKF.js";import{ErrorNote,ExternalImportPanel,Mount,importConnector,importFrom,reactMount,shortTime,useCtxData,useSlotEntries,versionLabel}from"@kanyun-ai-infra/band-plugin-react";import{definePlugin}from"@kanyun-ai-infra/band-plugin-sdk";import{useEffect,useMemo,useState,useSyncExternalStore}from"react";import{jsx,jsxs}from"react/jsx-runtime";if(typeof document!=="undefined"&&document.head){const css="/* src/version-switch.css */\n.band-version-switch {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n padding: 10px 14px 4px;\n}\n:where([data-band-page=review]) .band-version-switch {\n padding: 0;\n}\n.band-version-switch:where(.compact) {\n padding: 0;\n flex-wrap: nowrap;\n}\n@media (max-width: 860px) {\n .band-version-switch:where(.compact) {\n flex-wrap: wrap;\n min-width: 0;\n max-width: 100%;\n }\n .band-version-switch:where(.compact) .band-version-switch-picker {\n max-width: 100%;\n }\n .band-version-switch:where(.compact) .band-version-switch-select.select {\n max-width: 100%;\n }\n}\n.band-version-switch-name {\n font-weight: 600;\n}\n.band-version-switch-select.select {\n max-width: min(100%, 420px);\n min-height: 32px;\n border-radius: 8px;\n}\n.band-version-switch-old {\n font-size: var(--fs-dense);\n color: var(--warn);\n background: var(--warn-soft);\n padding: 5px 8px;\n border-radius: 7px;\n}\n.band-version-switch-spacer {\n flex: 1;\n}\n.band-version-switch-actions {\n display: flex;\n align-items: center;\n}\n.band-version-switch-picker {\n position: relative;\n min-width: 0;\n}\n.band-version-switch-import {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 20;\n width: min(340px, calc(100vw - 32px));\n padding: 14px;\n background: var(--panel);\n border-radius: var(--r-xl);\n box-shadow: var(--shadow-pop);\n}\n.band-version-switch:where(:has(.band-version-switch-notice)) {\n flex-wrap: wrap;\n}\n.band-version-switch-notice {\n flex-basis: 100%;\n max-width: 340px;\n color: var(--muted);\n font-size: var(--fs-ui);\n}\n.band-version-switch > :where(.btn) {\n min-height: 32px;\n border-radius: 8px;\n}\n";let el=document.head.querySelector('style[data-band-style="@kanyun-ai-infra/band-version-switch"]');if(!el){el=document.createElement("style");el.setAttribute("data-band-style","@kanyun-ai-infra/band-version-switch");document.head.prepend(el)}el.textContent=css}var noSubscribe=()=>()=>{};var ACTIONS_SLOT="@kanyun-ai-infra/band-version-switch/actions";var src_default=definePlugin({surfaces:{"version-switch":reactMount((ctx,props)=>jsx(VersionBar,{ctx,artifactId:props.owner.artifactId,artifactName:props.owner.artifactName,compare:props.owner.compare,onVersionChange:props.owner.onVersionChange,compact:props.config.compact===true},props.owner.artifactId))}});function ActionsSlot({ctx,artifactId}){const entries=useSlotEntries(ctx,ACTIONS_SLOT);if(entries.length===0)return null;return jsx("span",{className:"band-version-switch-actions","data-band-slot":ACTIONS_SLOT,children:entries.map(e=>jsx(Mount,{mount:el=>ctx.slots.mount(el,ACTIONS_SLOT,{key:e.key,owner:{projectId:ctx.project.id,artifactId}}),deps:[ctx,artifactId,e.key]},e.key))})}function VersionBar({ctx,artifactId,artifactName,compare,compact=false,onVersionChange}){const versions=useCtxData(ctx,()=>ctx.version.list(artifactId),[artifactId],"version.*");const[current,setCurrent]=useState(ctx.version.current());useEffect(()=>ctx.version.subscribe(setCurrent),[ctx]);const[imported,setImported]=useState(null);const[notice,setNotice]=useState("");const persisted=versions.data??[];const list=imported&&!persisted.some(v=>v.id===imported.id)?[...persisted,imported]:persisted;const latest=list.at(-1);const shown=current?list.find(v=>v.id===current.id)??current:latest??null;const old=!!shown&&!!latest&&shown.id!==latest.id;const artifacts=useCtxData(ctx,()=>ctx.artifacts.list(),[],"version.*");const artifact=artifacts.data?.find(a=>a.id===artifactId);const[importOpen,setImportOpen]=useState(false);const[importBusy,setImportBusy]=useState(false);const read=ctx.attachments.importExternal;const connections=ctx.app.data.write?.personalConnections;const canImport=artifact?.storage==="external"&&(artifact.key??"main")==="main"&&ctx.project.access==="member"&&ctx.member.can("submit-change");const via=importConnector(artifact?.source);const source=useMemo(()=>{if(!canImport||!read||!connections&&!via.exchange||!artifact?.runId||!artifact.stage)return void 0;const target={runId:artifact.runId,stage:artifact.stage,type:artifact.artifactType};return{label:via.label,connected:async()=>via.exchange||connections!==void 0&&(await connections.list()).some(c=>c.connector===via.connector&&c.status==="active"),manage:()=>ctx.app.navigate({page:"@kanyun-ai-infra/band-settings/connections"}),read:async ref=>{const result=await read({connector:via.connector,ref,target});if(result.kind==="versions"&&result.versions.length===0)return null;const version=result.kind==="versions"?result.versions.find(v=>v.artifactId===artifactId):void 0;if(!version)throw new Error("\u5BFC\u5165\u6CA1\u6709\u8FD4\u56DE\u5F53\u524D\u4EA7\u7269\u7684\u7248\u672C\uFF0C\u8BF7\u68C0\u67E5\u94FE\u63A5\u540E\u91CD\u65B0\u5BFC\u5165");return version}}},[ctx,canImport,read,connections,artifact?.runId,artifact?.stage,artifact?.artifactType,artifactId,via.connector,via.label,via.exchange]);const prev=shown?list[list.findIndex(v=>v.id===shown.id)-1]:void 0;const pair=useSyncExternalStore(compare?.subscribe??noSubscribe,()=>compare?.get()??null,()=>null);const comparing=!!compare&&activePair(pair,shown)!==null;return jsxs("div",{className:compact?"band-version-switch compact":"band-version-switch",children:[artifactName&&jsx("b",{className:"band-version-switch-name",children:artifactName}),(list.length>0||source)&&jsxs("span",{className:"band-version-switch-picker",children:[jsxs("select",{"aria-label":"\u7248\u672C",className:"select band-version-switch-select","data-band-guide":"versions",disabled:importBusy,value:shown?.id??"",onChange:e=>{if(e.target.value==="import-external"){setNotice("");setImportOpen(true);return}const v=list.find(x=>x.id===e.target.value)??null;ctx.collab.showVersion(v&&v.id===latest?.id?null:v);if(v)onVersionChange?.(v.id)},children:[!shown&&jsx("option",{value:"",children:"\u8FD8\u6CA1\u6709\u7248\u672C"}),[...list].reverse().map(v=>jsxs("option",{value:v.id,children:[versionLabel(v),typeof v.meta?.note==="string"?` \xB7 ${v.meta.note}`:""," \xB7"," ",shortTime(v.createdAt),v.id===latest?.id?" \xB7 \u6700\u65B0":""]},v.id)),source&&jsx("option",{value:"import-external",children:importFrom(via.label,"\u5BFC\u5165\u65B0\u7248\u672C")})]}),importOpen&&source&&jsx("div",{className:"band-version-switch-import",children:jsx(ExternalImportPanel,{source,onAdd:version=>{if(version===null){setNotice("\u5FEB\u7167\u4E0E\u5DF2\u6709\u7248\u672C\u5185\u5BB9\u76F8\u540C\uFF0C\u6CA1\u6709\u4EA7\u751F\u65B0\u7248\u672C");return}setImported({...version,meta:{...version.meta,label:version.meta?.label??"\u65B0\u7248\u672C"}});ctx.collab.showVersion(version);onVersionChange?.(version.id);versions.reload()},onClose:()=>setImportOpen(false),onBusy:setImportBusy})})]}),old&&shown&&jsx("span",{className:"band-version-switch-old",title:compact?`\u53EA\u8BFB\u67E5\u770B ${versionLabel(shown)}\uFF1B\u53EF\u5728\u8FD9\u4E00\u7248\u8BC4\u8BBA\uFF1B\u56DE\u5230\u6700\u65B0\u7248\u624D\u80FD\u7F16\u8F91`:void 0,children:compact?"\u53EA\u8BFB":`\u53EA\u8BFB\u67E5\u770B ${versionLabel(shown)}\uFF1B\u53EF\u5728\u8FD9\u4E00\u7248\u8BC4\u8BBA\uFF1B\u56DE\u5230\u6700\u65B0\u7248\u624D\u80FD\u7F16\u8F91`}),!compact&&jsx("span",{className:"band-version-switch-spacer"}),old&&jsx("button",{type:"button",className:"btn sm",onClick:()=>{ctx.collab.showVersion(null);if(latest)onVersionChange?.(latest.id)},children:"\u56DE\u5230\u6700\u65B0"}),compare&&(prev||comparing)&&jsx("button",{type:"button",className:comparing?"btn primary sm":"btn sm",title:comparing?"\u4E5F\u53EF\u4EE5\u6309 Esc":`\u548C\u4E0A\u4E00\u7248 ${prev?versionLabel(prev):""} \u5E76\u6392\u770B`,onClick:()=>compare.set(comparing||!prev||!shown?null:{against:prev,with:shown.id}),children:comparing?"\u9000\u51FA\u5BF9\u6BD4":`\u5BF9\u6BD4 ${prev?versionLabel(prev):""}`}),!comparing&&jsx(ActionsSlot,{ctx,artifactId}),notice&&jsx("output",{className:"band-version-switch-notice",children:notice}),jsx(ErrorNote,{retry:artifacts.reload,children:artifacts.error}),jsx(ErrorNote,{retry:versions.reload,children:versions.error})]})}export{ACTIONS_SLOT,VersionBar,src_default as default,versionLabel};
1
+ import{activePair}from"../../chunks/chunk-7XYETT7C.js";import"../../chunks/chunk-N6N56MWF.js";import"../../chunks/chunk-TWQQ2CCT.js";import"../../chunks/chunk-JFPQMFKF.js";import{ErrorNote,ExternalImportPanel,Mount,importConnector,importFrom,reactMount,shortTime,useCtxData,useSlotEntries,versionLabel}from"@kanyun-ai-infra/band-plugin-react";import{definePlugin}from"@kanyun-ai-infra/band-plugin-sdk";import{useEffect,useMemo,useState,useSyncExternalStore}from"react";import{jsx,jsxs}from"react/jsx-runtime";if(typeof document!=="undefined"&&document.head){const css="/* src/version-switch.css */\n.band-version-switch {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n padding: 10px 14px 4px;\n}\n:where([data-band-page=review]) .band-version-switch {\n padding: 0;\n}\n.band-version-switch:where(.compact) {\n padding: 0;\n flex-wrap: nowrap;\n}\n@media (max-width: 860px) {\n .band-version-switch:where(.compact) {\n flex-wrap: wrap;\n min-width: 0;\n max-width: 100%;\n }\n .band-version-switch:where(.compact) .band-version-switch-picker {\n max-width: 100%;\n }\n .band-version-switch:where(.compact) .band-version-switch-select.select {\n max-width: 100%;\n }\n}\n.band-version-switch-name {\n font-weight: 600;\n}\n.band-version-switch-select.select {\n max-width: min(100%, 420px);\n min-height: 32px;\n border-radius: 8px;\n}\n.band-version-switch-old {\n font-size: var(--fs-dense);\n color: var(--warn);\n background: var(--warn-soft);\n padding: 5px 8px;\n border-radius: 7px;\n}\n.band-version-switch-spacer {\n flex: 1;\n}\n.band-version-switch-actions {\n display: flex;\n align-items: center;\n}\n.band-version-switch-picker {\n position: relative;\n min-width: 0;\n}\n.band-version-switch-import {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 20;\n width: min(340px, calc(100vw - 32px));\n padding: 14px;\n background: var(--panel);\n border-radius: var(--r-xl);\n box-shadow: var(--shadow-pop);\n}\n.band-version-switch:where(:has(.band-version-switch-notice)) {\n flex-wrap: wrap;\n}\n.band-version-switch-notice {\n flex-basis: 100%;\n max-width: 340px;\n color: var(--muted);\n font-size: var(--fs-ui);\n}\n.band-version-switch > :where(.btn) {\n min-height: 32px;\n border-radius: 8px;\n}\n";let el=document.head.querySelector('style[data-band-style="@kanyun-ai-infra/band-version-switch"]');if(!el){el=document.createElement("style");el.setAttribute("data-band-style","@kanyun-ai-infra/band-version-switch");document.head.prepend(el)}el.textContent=css}var noSubscribe=()=>()=>{};var ACTIONS_SLOT="@kanyun-ai-infra/band-version-switch/actions";var src_default=definePlugin({surfaces:{"version-switch":reactMount((ctx,props)=>jsx(VersionBar,{ctx,artifactId:props.owner.artifactId,artifactName:props.owner.artifactName,compare:props.owner.compare,onVersionChange:props.owner.onVersionChange,compact:props.config.compact===true},props.owner.artifactId))}});function ActionsSlot({ctx,artifactId}){const entries=useSlotEntries(ctx,ACTIONS_SLOT);if(entries.length===0)return null;return jsx("span",{className:"band-version-switch-actions","data-band-slot":ACTIONS_SLOT,children:entries.map(e=>jsx(Mount,{mount:el=>ctx.slots.mount(el,ACTIONS_SLOT,{key:e.key,owner:{projectId:ctx.project.id,artifactId}}),deps:[ctx,artifactId,e.key]},e.key))})}function VersionBar({ctx,artifactId,artifactName,compare,compact=false,onVersionChange}){const versions=useCtxData(ctx,()=>ctx.version.list(artifactId),[artifactId],"version.*");const[current,setCurrent]=useState(ctx.version.current());useEffect(()=>ctx.version.subscribe(setCurrent),[ctx]);const[imported,setImported]=useState(null);const[notice,setNotice]=useState("");const persisted=versions.data??[];const list=imported&&!persisted.some(v=>v.id===imported.id)?[...persisted,imported]:persisted;const latest=list.at(-1);const shown=current?list.find(v=>v.id===current.id)??current:latest??null;const old=!!shown&&!!latest&&shown.id!==latest.id;const artifacts=useCtxData(ctx,()=>ctx.artifacts.list(),[],"version.*");const artifact=artifacts.data?.find(a=>a.id===artifactId);const[importOpen,setImportOpen]=useState(false);const[importBusy,setImportBusy]=useState(false);const read=ctx.attachments.importExternal;const connections=ctx.app.data.write?.personalConnections;const canImport=artifact?.storage==="external"&&(artifact.key??"main")==="main"&&ctx.project.access==="member"&&ctx.member.can("submit-change");const via=importConnector(artifact?.source);const source=useMemo(()=>{if(!canImport||!read||!connections&&!via.exchange||!artifact?.runId||!artifact.stage)return void 0;const target={runId:artifact.runId,stage:artifact.stage,type:artifact.artifactType};return{label:via.label,connected:async()=>via.exchange||connections!==void 0&&(await connections.list()).some(c=>c.connector===via.connector&&c.status==="active"),manage:()=>ctx.app.navigate({page:"@kanyun-ai-infra/band-settings/connections"}),read:async ref=>{const result=await read({connector:via.connector,ref,target});if(result.kind==="versions"&&result.versions.length===0)return null;const version=result.kind==="versions"?result.versions.find(v=>v.artifactId===artifactId):void 0;if(!version)throw new Error("\u5BFC\u5165\u6CA1\u6709\u8FD4\u56DE\u5F53\u524D\u4EA7\u7269\u7684\u7248\u672C\uFF0C\u8BF7\u68C0\u67E5\u94FE\u63A5\u540E\u91CD\u65B0\u5BFC\u5165");return version}}},[ctx,canImport,read,connections,artifact?.runId,artifact?.stage,artifact?.artifactType,artifactId,via.connector,via.label,via.exchange]);const prev=shown?list[list.findIndex(v=>v.id===shown.id)-1]:void 0;const pair=useSyncExternalStore(compare?.subscribe??noSubscribe,()=>compare?.get()??null,()=>null);const comparing=!!compare&&activePair(pair,shown)!==null;return jsxs("div",{className:compact?"band-version-switch compact":"band-version-switch",children:[artifactName&&jsx("b",{className:"band-version-switch-name",children:artifactName}),(list.length>0||source)&&jsxs("span",{className:"band-version-switch-picker",children:[jsxs("select",{"aria-label":"\u7248\u672C",className:"select band-version-switch-select","data-band-guide":"versions",disabled:importBusy,value:shown?.id??"",onChange:e=>{if(e.target.value==="import-external"){setNotice("");setImportOpen(true);return}const v=list.find(x=>x.id===e.target.value)??null;ctx.collab.showVersion(v&&v.id===latest?.id?null:v);if(v)onVersionChange?.(v.id)},children:[!shown&&jsx("option",{value:"",children:"\u8FD8\u6CA1\u6709\u7248\u672C"}),[...list].reverse().map(v=>jsxs("option",{value:v.id,children:[versionLabel(v),typeof v.meta?.note==="string"?` \xB7 ${v.meta.note}`:""," \xB7"," ",shortTime(v.createdAt),v.id===latest?.id?" \xB7 \u6700\u65B0":""]},v.id)),source&&jsx("option",{value:"import-external",children:importFrom(via.label,"\u5BFC\u5165\u65B0\u7248\u672C")})]}),importOpen&&source&&jsx("div",{className:"band-version-switch-import",children:jsx(ExternalImportPanel,{source,onAdd:version=>{if(version===null){setNotice("\u5FEB\u7167\u4E0E\u5DF2\u6709\u7248\u672C\u5185\u5BB9\u76F8\u540C\uFF0C\u6CA1\u6709\u4EA7\u751F\u65B0\u7248\u672C");return}setImported({...version,meta:{...version.meta,label:version.meta?.label??"\u65B0\u7248\u672C"}});ctx.collab.showVersion(version);onVersionChange?.(version.id);versions.reload()},onClose:()=>setImportOpen(false),onBusy:setImportBusy})})]}),old&&shown&&jsx("span",{className:"band-version-switch-old",title:compact?`\u53EA\u8BFB\u67E5\u770B ${versionLabel(shown)}\uFF1B\u53EF\u5728\u8FD9\u4E00\u7248\u8BC4\u8BBA\uFF1B\u56DE\u5230\u6700\u65B0\u7248\u624D\u80FD\u7F16\u8F91`:void 0,children:compact?"\u53EA\u8BFB":`\u53EA\u8BFB\u67E5\u770B ${versionLabel(shown)}\uFF1B\u53EF\u5728\u8FD9\u4E00\u7248\u8BC4\u8BBA\uFF1B\u56DE\u5230\u6700\u65B0\u7248\u624D\u80FD\u7F16\u8F91`}),!compact&&jsx("span",{className:"band-version-switch-spacer"}),old&&jsx("button",{type:"button",className:"btn sm",onClick:()=>{ctx.collab.showVersion(null);if(latest)onVersionChange?.(latest.id)},children:"\u56DE\u5230\u6700\u65B0"}),compare&&(prev||comparing)&&jsx("button",{type:"button",className:comparing?"btn primary sm":"btn sm",title:comparing?"\u4E5F\u53EF\u4EE5\u6309 Esc":`\u548C\u4E0A\u4E00\u7248 ${prev?versionLabel(prev):""} \u5E76\u6392\u770B`,onClick:()=>compare.set(comparing||!prev||!shown?null:{against:prev,with:shown.id}),children:comparing?"\u9000\u51FA\u5BF9\u6BD4":`\u5BF9\u6BD4 ${prev?versionLabel(prev):""}`}),!comparing&&jsx(ActionsSlot,{ctx,artifactId}),notice&&jsx("output",{className:"band-version-switch-notice",children:notice}),jsx(ErrorNote,{retry:artifacts.reload,children:artifacts.error}),jsx(ErrorNote,{retry:versions.reload,children:versions.error})]})}export{ACTIONS_SLOT,VersionBar,src_default as default,versionLabel};
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@kanyun-ai-infra/band-version-switch",
3
- "version": "0.1.2",
3
+ "version": "0.2.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",
10
+ "@kanyun-ai-infra/band-plugin-sdk": "^2.1.0",
11
11
  "@kanyun-ai-infra/band-project": "*",
12
- "react": "^18.3.1",
13
- "react-dom": "^18.3.1"
12
+ "react": "^19.0.0",
13
+ "react-dom": "^19.0.0"
14
14
  }
15
15
  }
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@kanyun-ai-infra/band-viewer-entity",
3
- "version": "0.1.4",
3
+ "version": "0.2.0",
4
4
  "description": "实体集合(角色表这类结构化条目),按条目提意见,新版本里同一条目接住意见",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": "./index.js"
8
8
  },
9
9
  "peerDependencies": {
10
- "@kanyun-ai-infra/band-plugin-sdk": "^1.222.0",
10
+ "@kanyun-ai-infra/band-plugin-sdk": "^2.1.0",
11
11
  "@kanyun-ai-infra/band-project": "*"
12
12
  }
13
13
  }
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@kanyun-ai-infra/band-viewer-external",
3
- "version": "0.0.2",
3
+ "version": "0.1.0",
4
4
  "description": "外部文档的快照,按文档块提意见,原文改了会标出来",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": "./index.js"
8
8
  },
9
9
  "peerDependencies": {
10
- "@kanyun-ai-infra/band-plugin-sdk": "^1.222.0",
10
+ "@kanyun-ai-infra/band-plugin-sdk": "^2.1.0",
11
11
  "@kanyun-ai-infra/band-project": "*"
12
12
  }
13
13
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kanyun-ai-infra/band-viewer-image",
3
- "version": "0.1.3",
3
+ "version": "0.2.0",
4
4
  "description": "图片与候选网格,框选区域提意见,版本并排对比",
5
5
  "type": "module",
6
6
  "exports": {
@@ -8,7 +8,7 @@
8
8
  },
9
9
  "peerDependencies": {
10
10
  "@kanyun-ai-infra/band-native": "*",
11
- "@kanyun-ai-infra/band-plugin-sdk": "^1.222.0",
11
+ "@kanyun-ai-infra/band-plugin-sdk": "^2.1.0",
12
12
  "@kanyun-ai-infra/band-project": "*"
13
13
  },
14
14
  "peerDependenciesMeta": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kanyun-ai-infra/band-viewer-media",
3
- "version": "0.3.8",
3
+ "version": "0.4.0",
4
4
  "description": "音频与视频,按时间点提意见,逐帧对齐",
5
5
  "type": "module",
6
6
  "exports": {
@@ -8,7 +8,7 @@
8
8
  },
9
9
  "peerDependencies": {
10
10
  "@kanyun-ai-infra/band-native": "*",
11
- "@kanyun-ai-infra/band-plugin-sdk": "^1.222.0",
11
+ "@kanyun-ai-infra/band-plugin-sdk": "^2.1.0",
12
12
  "@kanyun-ai-infra/band-project": "*"
13
13
  },
14
14
  "peerDependenciesMeta": {
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@kanyun-ai-infra/band-viewer-storyboard",
3
- "version": "0.3.6",
3
+ "version": "0.4.0",
4
4
  "description": "分镜镜头表:一行一个镜头(静帧、区间与时长、画面、旁白),按镜头 id 和上一版对比",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": "./index.js"
8
8
  },
9
9
  "peerDependencies": {
10
- "@kanyun-ai-infra/band-plugin-sdk": "^1.222.0",
10
+ "@kanyun-ai-infra/band-plugin-sdk": "^2.1.0",
11
11
  "@kanyun-ai-infra/band-project": "*",
12
12
  "@kanyun-ai-infra/band-threads": "*",
13
13
  "@kanyun-ai-infra/band-viewer-entity": "*",
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@kanyun-ai-infra/band-viewer-text",
3
- "version": "0.3.3",
3
+ "version": "0.4.0",
4
4
  "description": "Markdown 与纯文本,按段落、选中文字提意见",
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",
10
+ "@kanyun-ai-infra/band-plugin-sdk": "^2.1.0",
11
11
  "@kanyun-ai-infra/band-project": "*",
12
- "react": "^18.3.1",
13
- "react-dom": "^18.3.1"
12
+ "react": "^19.0.0",
13
+ "react-dom": "^19.0.0"
14
14
  }
15
15
  }
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@kanyun-ai-infra/band-viewer-tool",
3
- "version": "0.1.5",
3
+ "version": "0.2.0",
4
4
  "description": "教具包查看器:直接体验(投屏、平板、手机三种尺寸)与指令调试,意见挂在画面元素或某条指令上",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": "./index.js"
8
8
  },
9
9
  "peerDependencies": {
10
- "@kanyun-ai-infra/band-plugin-sdk": "^1.222.0",
10
+ "@kanyun-ai-infra/band-plugin-sdk": "^2.1.0",
11
11
  "@kanyun-ai-infra/band-project": "*"
12
12
  }
13
13
  }
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@kanyun-ai-infra/band-viewer-web",
3
- "version": "0.0.6",
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",
10
+ "@kanyun-ai-infra/band-plugin-sdk": "^2.1.0",
11
11
  "@kanyun-ai-infra/band-project": "*"
12
12
  }
13
13
  }
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@kanyun-ai-infra/band-viewer-web-app",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "Web 应用走查:在项目里内嵌打开加了走查 SDK 的真实页面,按设备尺寸看、点元素提意见",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": "./index.js"
8
8
  },
9
9
  "peerDependencies": {
10
- "@kanyun-ai-infra/band-plugin-sdk": "^1.222.0",
10
+ "@kanyun-ai-infra/band-plugin-sdk": "^2.1.0",
11
11
  "@kanyun-ai-infra/band-project": "*"
12
12
  }
13
13
  }