@blade-hq/agent-react 2612.0.0-beta.6 → 2612.0.0-beta.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -1
- package/dist/chat/AgentLoopBlock.d.ts +0 -2
- package/dist/chat/AskUserQuestionBlock.d.ts +3 -20
- package/dist/chat/AssistantTurnBlock.d.ts +1 -9
- package/dist/chat/AttachmentPreviewDialog.d.ts +0 -1
- package/dist/chat/ChatLoadingIndicator.d.ts +7 -0
- package/dist/chat/ContextAttachmentPills.d.ts +4 -0
- package/dist/chat/CurrentPlanPanel.d.ts +0 -3
- package/dist/chat/FileDeliveryCards.d.ts +0 -4
- package/dist/chat/FinalArtifactCards.d.ts +0 -1
- package/dist/chat/ImageLightbox.d.ts +1 -1
- package/dist/chat/LiteMessageList.d.ts +1 -3
- package/dist/chat/MessageFileAttachmentList.d.ts +0 -5
- package/dist/chat/QuestionnaireQuestionBlock.d.ts +11 -0
- package/dist/chat/SessionReplayBar.d.ts +0 -1
- package/dist/chat/TextAttachmentPills.d.ts +0 -3
- package/dist/chat/TurnNavRail.d.ts +0 -3
- package/dist/chat/WorkflowRunBlock.d.ts +21 -4
- package/dist/chat/ai-elements/shimmer.d.ts +0 -4
- package/dist/chat/customization.d.ts +1 -1
- package/dist/chat/index.d.ts +1 -4
- package/dist/chat/lib/citations.d.ts +2 -23
- package/dist/chat/markdown/ExternalAnchor.d.ts +2 -2
- package/dist/chat/markdown/MarkdownContent.d.ts +3 -0
- package/dist/chat/message-list-blocks.d.ts +0 -1
- package/dist/chat/runtime/actions.d.ts +2 -3
- package/dist/chat/runtime/background-task-dismissals.d.ts +0 -1
- package/dist/chat/runtime/composer-channels.d.ts +0 -3
- package/dist/chat/runtime/input-cache-reset.d.ts +0 -5
- package/dist/chat/runtime/input-services.d.ts +10 -6
- package/dist/chat/runtime/session-source.d.ts +0 -5
- package/dist/chat/runtime/use-chat-actions.d.ts +0 -4
- package/dist/{chat-OCLOVB3H.css → chat-IHPRU35X.css} +5 -18
- package/dist/chat.css +5 -18
- package/dist/chunk-2E6DQCXM.js +602 -0
- package/dist/chunk-2E6DQCXM.js.map +1 -0
- package/dist/chunk-ARX4JV5T.js +1988 -0
- package/dist/chunk-ARX4JV5T.js.map +1 -0
- package/dist/chunk-HBMFIJG2.js +13622 -0
- package/dist/chunk-HBMFIJG2.js.map +1 -0
- package/dist/chunk-HS5G33FO.js +6894 -0
- package/dist/chunk-HS5G33FO.js.map +1 -0
- package/dist/{chunk-UKQFSXGC.js → chunk-MAFNMG2O.js} +2419 -13726
- package/dist/chunk-MAFNMG2O.js.map +1 -0
- package/dist/{chunk-XJLFFRQP.js → chunk-UC7SY3G5.js} +3744 -25994
- package/dist/chunk-UC7SY3G5.js.map +1 -0
- package/dist/chunk-VSIUEXGV.js +4981 -0
- package/dist/chunk-VSIUEXGV.js.map +1 -0
- package/dist/chunk-XV6AO37F.js +9480 -0
- package/dist/chunk-XV6AO37F.js.map +1 -0
- package/dist/components/AccountConnectors.d.ts +13 -0
- package/dist/components/BrowserConnectionDialog.d.ts +7 -0
- package/dist/components/ChatInput.d.ts +1 -15
- package/dist/components/ConnectorAuthorizationProgress.d.ts +6 -0
- package/dist/components/ConnectorPanel.d.ts +3 -1
- package/dist/components/ConnectorRuntimeDiagnostics.d.ts +5 -0
- package/dist/components/DeviceConnection.d.ts +15 -0
- package/dist/components/FeishuCapabilitySelection.d.ts +14 -0
- package/dist/components/FeishuPermissionStatus.d.ts +5 -0
- package/dist/components/LlmAdvancedSettings.d.ts +0 -1
- package/dist/components/PlanUpdateBlock.d.ts +0 -1
- package/dist/components/SessionPluginConfigForm.d.ts +3 -1
- package/dist/components/plugin-connector.d.ts +1 -0
- package/dist/connectors.d.ts +1 -0
- package/dist/connectors.js +9 -0
- package/dist/connectors.js.map +1 -0
- package/dist/embed/blade-chat-element.d.ts +0 -8
- package/dist/embed/entry.d.ts +8 -19
- package/dist/hooks/use-message-pin.d.ts +1 -1
- package/dist/host.d.ts +0 -4
- package/dist/index.d.ts +1 -0
- package/dist/index.js +12 -3
- package/dist/internal.d.ts +4 -2
- package/dist/internal.js +45 -70
- package/dist/internal.js.map +1 -1
- package/dist/lib/message-shortcuts.d.ts +5 -0
- package/dist/questions.d.ts +7 -0
- package/dist/questions.js +909 -0
- package/dist/questions.js.map +1 -0
- package/dist/rich-input/ConnectButton.d.ts +7 -5
- package/dist/rich-input/FileCompletionMenu.d.ts +5 -11
- package/dist/rich-input/InputActionSubmenu.d.ts +10 -0
- package/dist/rich-input/SkillActionMenu.d.ts +10 -0
- package/dist/rich-input/SkillStatusBar.d.ts +0 -6
- package/dist/rich-input/extensions/skill-mention.d.ts +3 -20
- package/dist/rich-input/index.d.ts +3 -4
- package/dist/rich-input/lib/composer-content.d.ts +7 -22
- package/dist/rich-input/lib/plugin-suggestions.d.ts +5 -5
- package/dist/rich-input/lib/reference-candidates.d.ts +0 -4
- package/dist/rich-input/lib/skill-suggestions.d.ts +1 -1
- package/dist/rich-input/lib/user-home.d.ts +0 -17
- package/dist/rich-input/services.d.ts +2 -3
- package/dist/rich-input/voice/VoiceWaveform.d.ts +0 -3
- package/dist/rich-input.js +786 -1300
- package/dist/rich-input.js.map +1 -1
- package/dist/style.css +16 -55
- package/dist/style.full.css +23 -77
- package/dist/tool-details.d.ts +8 -0
- package/dist/tool-details.js +24 -0
- package/dist/tool-details.js.map +1 -0
- package/package.json +15 -3
- package/public-api.md +10 -5
- package/dist/chat/tool-renderers/KbSearchRenderer.d.ts +0 -2
- package/dist/chat/tool-renderers/kb-search-result.d.ts +0 -19
- package/dist/chunk-IRBOKMF5.js +0 -258
- package/dist/chunk-IRBOKMF5.js.map +0 -1
- package/dist/chunk-UKQFSXGC.js.map +0 -1
- package/dist/chunk-XJLFFRQP.js.map +0 -1
- package/dist/lib/agent-computer-command.d.ts +0 -32
- package/dist/rich-input/extensions/kb-mention.d.ts +0 -18
- package/dist/rich-input/extensions/workflow-mention.d.ts +0 -10
- package/dist/rich-input/lib/kb-suggestions.d.ts +0 -37
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/chat/QuestionnaireQuestionBlock.tsx","../../../node_modules/.pnpm/@shadcn+react@0.3.1_@types+react@19.2.14_react@19.2.4/node_modules/@shadcn/react/dist/chunk-HBS6WEDP.js","../../../node_modules/.pnpm/@shadcn+react@0.3.1_@types+react@19.2.14_react@19.2.4/node_modules/@shadcn/react/dist/questionnaire/index.js","../../ui/src/components/questionnaire.tsx"],"sourcesContent":["import { formatAskUserAnswer } from \"@blade-hq/agent-client\"\nimport type { AskUserAnswerData, AskUserQuestionData } from \"@blade-hq/agent-client\"\nimport { Loader2, MessageSquareMore } from \"lucide-react\"\nimport { useEffect, useMemo, useState, type FormEvent } from \"react\"\nimport {\n Questionnaire, QuestionnaireActions, QuestionnaireChoice, QuestionnaireChoiceDescription,\n QuestionnaireChoices, QuestionnaireError, QuestionnaireInput, QuestionnaireItem,\n QuestionnaireNext, QuestionnairePrevious, QuestionnaireProgress, QuestionnaireSubmit, QuestionnaireTitle,\n} from \"@blade-hq/ui/components/questionnaire\"\nimport { MarkdownContent } from \"./markdown/MarkdownContent\"\n\nexport type { AskUserAnswerData, AskUserQuestionData }\n\ninterface Props {\n data: AskUserQuestionData\n answered: boolean\n toolCallId: string\n sessionStatus: string\n answerData?: AskUserAnswerData | undefined\n onAnswer?: (answer: string, toolCallId: string, answerData: AskUserAnswerData) => void\n}\n\nexport function QuestionnaireQuestionBlock({ data, answered, toolCallId, sessionStatus, answerData, onAnswer }: Props) {\n const [submitted, setSubmitted] = useState(false)\n const [draftAnswer, setDraftAnswer] = useState<AskUserAnswerData>()\n const [note, setNote] = useState(\"\")\n const [item, setItem] = useState(\"0\")\n const items = useMemo(() => data.questions.map((question, index) => ({\n name: String(index), required: true,\n choices: question.options.map((_, optionIndex) => ({ value: String(optionIndex) })),\n })), [data.questions])\n\n useEffect(() => {\n if (sessionStatus === \"failed\" || sessionStatus === \"interrupted\") setSubmitted(false)\n }, [sessionStatus])\n\n function handleSubmit(event: FormEvent<HTMLFormElement>) {\n event.preventDefault()\n if (answered || submitted || !onAnswer) return\n const form = event.currentTarget\n const next: AskUserAnswerData = { selections: {}, custom: {}, ...(note.trim() ? { note: note.trim() } : {}) }\n for (const [index] of data.questions.entries()) {\n const fieldset = form.querySelector<HTMLFieldSetElement>(`[data-question-index=\"${index}\"]`)\n const custom = fieldset?.querySelector<HTMLInputElement | HTMLTextAreaElement>('[data-slot=\"questionnaire-input\"]')\n if (custom?.name && custom.value.trim()) next.custom[index] = custom.value.trim()\n else {\n const selected = [...(fieldset?.querySelectorAll<HTMLInputElement>('input[data-slot=\"questionnaire-choice-input\"]:checked') ?? [])]\n .map(input => Number(input.value)).sort((a, b) => a - b)\n if (selected.length) next.selections[index] = selected\n }\n }\n setDraftAnswer(next)\n setSubmitted(true)\n onAnswer(formatAskUserAnswer(data, next), toolCallId, next)\n }\n\n if (answered) {\n const saved = answerData ?? draftAnswer\n return <div part=\"ask-card\" className=\"ask-user-question blade-chat-ask-card ask-user-question-summary ml-4 max-w-2xl rounded-xl border border-[hsl(var(--border))] bg-[hsl(var(--card))] p-4 text-sm\">\n <dl className=\"space-y-3\">\n {data.questions.map((question, index) => {\n const selected = saved?.custom[index] ?? saved?.selections[index]?.map(option => question.options[option]?.label).filter(Boolean).join(\"、\")\n return <div key={`${toolCallId}:${index}`} className=\"space-y-1\">\n <dt className=\"text-xs text-[hsl(var(--muted-foreground))]\">{question.question}</dt>\n <dd className=\"m-0 whitespace-pre-wrap font-medium text-[hsl(var(--foreground))]\">{selected || \"未作答\"}</dd>\n </div>\n })}\n </dl>\n {saved?.note && <p aria-label=\"补充说明\" className=\"mt-3 whitespace-pre-wrap border-t border-[hsl(var(--border))] pt-3 text-xs text-[hsl(var(--muted-foreground))]\">{saved.note}</p>}\n </div>\n }\n\n return <div part=\"ask-card\" className=\"ask-user-question blade-chat-ask-card ml-4 max-w-lg rounded-2xl border border-[hsl(var(--border))] bg-[hsl(var(--card))] p-4 text-sm\">\n {data.source_loop?.description && <p className=\"mb-4 text-xs text-[hsl(var(--muted-foreground))]\">{data.source_loop.description} 想和你确认一件事</p>}\n <fieldset disabled={submitted || !onAnswer} className=\"m-0 min-w-0 border-0 p-0\">\n <Questionnaire items={items} item={item} onItemChange={setItem} onSubmit={handleSubmit}>\n <QuestionnaireProgress aria-label=\"问题进度\" render={(props, state) => <div {...props} aria-valuetext={`第 ${state.current} 题,共 ${state.total} 题`}>第 {state.current} / {state.total} 题</div>} />\n {data.questions.map((question, index) => <QuestionnaireItem key={`${toolCallId}:${index}`} data-question-index={index} name={String(index)} multiple={question.multiSelect} required>\n <QuestionnaireTitle className=\"mb-0 flex items-start gap-2 text-[hsl(var(--foreground))]\">\n <MessageSquareMore size={16} className=\"mt-0.5 shrink-0 text-[hsl(var(--primary))]\" aria-hidden=\"true\" />\n <MarkdownContent className=\"min-w-0 flex-1 [&_p]:my-0\" controls={{ code: true }}>{question.question}</MarkdownContent>\n </QuestionnaireTitle>\n <QuestionnaireChoices>\n {question.options.map((option, optionIndex) => <QuestionnaireChoice key={optionIndex} value={String(optionIndex)} className=\"blade-chat-ask-option\">\n <span className=\"font-medium\">{option.label}</span>\n {option.description && <QuestionnaireChoiceDescription>{option.description}</QuestionnaireChoiceDescription>}\n </QuestionnaireChoice>)}\n <QuestionnaireInput aria-label=\"自定义回答\" placeholder=\"其他想法?在这里补充\" render={<textarea rows={2} />} className=\"h-auto min-h-16 resize-y py-2.5 leading-6\" />\n </QuestionnaireChoices>\n <QuestionnaireError>请选择一个选项,或填写自己的回答。</QuestionnaireError>\n </QuestionnaireItem>)}\n <label hidden={item !== String(data.questions.length - 1)} className=\"block space-y-2 text-xs text-[hsl(var(--muted-foreground))]\">\n <span>补充说明(可选)</span>\n <textarea aria-label=\"补充说明\" rows={2} value={note} onChange={event => setNote(event.target.value)} placeholder=\"还有需要助手注意的吗?\" className=\"w-full resize-y rounded-lg border border-[hsl(var(--border))] bg-transparent px-3 py-2 text-sm text-[hsl(var(--foreground))] outline-none focus-visible:ring-2 focus-visible:ring-[hsl(var(--ring)/0.35)]\" />\n </label>\n <QuestionnaireActions>\n <QuestionnairePrevious>上一题</QuestionnairePrevious>\n <QuestionnaireNext render={(props, state) => <button {...props} disabled={state.status !== \"answered\"}>下一题</button>} />\n <QuestionnaireSubmit render={(props, state) => <button {...props} disabled={submitted || state.status !== \"answered\"}>{submitted ? <><Loader2 size={14} className=\"animate-spin\" aria-hidden=\"true\" />正在提交…</> : \"确认提交\"}</button>} />\n </QuestionnaireActions>\n </Questionnaire>\n </fieldset>\n </div>\n}\n","import*as i from'react';function S({defaultTagName:a,props:r,render:t,state:n={},stateAttributesMapping:e}){let o=d(R(n,e),r);if(!t)return i.createElement(a,o);if(typeof t==\"function\")return t(o,n);if(!i.isValidElement(t))return null;let s=t.props,u={...d(o,s),ref:f(o.ref,s.ref)};return i.cloneElement(t,u)}function d(...a){let r={};for(let t of a){if(!t)continue;let n=t;for(let e of Object.keys(n)){let o=n[e];if(o===void 0)continue;let s=r[e];e===\"className\"?r[e]=[s,o].filter(Boolean).join(\" \"):e===\"style\"?r[e]={...s,...o}:e===\"ref\"?r[e]=f(s,o):l(e)&&typeof s==\"function\"&&typeof o==\"function\"?r[e]=p(o,s):r[e]=o;}}return r}function R(a,r){let t={};for(let n of Object.keys(a)){let e=a[n],o=r?.[n]?.(e);if(o){Object.assign(t,o);continue}if(n===\"slot\"){t[\"data-slot\"]=e;continue}let s=`data-${String(n).replace(/[A-Z]/g,c=>`-${c.toLowerCase()}`)}`;typeof e==\"boolean\"?t[s]=e?\"\":void 0:e!=null&&(t[s]=String(e));}return t}function p(a,r){return function(n){a(n),n.defaultPrevented||r(n);}}function l(a){return /^on[A-Z]/.test(a)}function f(...a){let r=a.filter(Boolean);if(r.length!==0)return t=>{for(let n of r)typeof n==\"function\"?n(t):n&&(n.current=t);}}export{S as a,d as b,f as c};","\"use client\";\nimport {a,b,c}from'../chunk-HBS6WEDP.js';import*as p from'react';import {jsx}from'react/jsx-runtime';var Pe=p.createContext(null),ve=p.createContext(null),Ee=p.createContext(null);function ne(e){let t=p.useContext(ve);if(!t)throw new Error(`${e} must be used within a Questionnaire.Root component.`);return t}function be(e){let t=p.useContext(Pe);if(!t)throw new Error(`${e} must be used within a Questionnaire.Choice component.`);return t}function Z(e){let t=p.useContext(Ee);if(!t)throw new Error(`${e} must be used within a Questionnaire.Item component.`);return t}function ce(e){return Array.isArray(e)?e.some(t=>String(t).trim().length>0):e!=null&&String(e).trim().length>0}function me(e){return e===\"letters\"?Array.from({length:26},(t,i)=>String.fromCharCode(65+i)):e===\"numbers\"?Array.from({length:9},(t,i)=>String(i+1)):[]}function He(e,t){let i=t===\"letters\"?e.toUpperCase():e;return me(t).includes(i)?i:null}function Ie(e,t){return [e,t?\"Enter\":null].filter(Boolean).join(\" \")||void 0}function pe(e){return e.type===\"choice\"?e.element.checked:e.element.hasAttribute(\"name\")&&ce(e.element.value)}function $e(e){return e?.type===\"input\"&&[\"email\",\"password\",\"search\",\"tel\",\"text\",\"url\"].includes(e.element.type)&&!ce(e.element.value)}function he(e){return e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement?true:e instanceof HTMLInputElement?![\"button\",\"checkbox\",\"radio\",\"reset\",\"submit\"].includes(e.type):e instanceof HTMLElement&&e.isContentEditable}function le(e){return e instanceof HTMLInputElement&&e.type===\"radio\"}function Ke(e,t){if(e.element===t.element)return 0;let i=e.element.compareDocumentPosition(t.element);return i&Node.DOCUMENT_POSITION_FOLLOWING?-1:i&Node.DOCUMENT_POSITION_PRECEDING?1:0}function Ue(e,t){if(e.element===t.element)return 0;let i=e.element.compareDocumentPosition(t.element);return i&Node.DOCUMENT_POSITION_FOLLOWING?-1:i&Node.DOCUMENT_POSITION_PRECEDING?1:0}function qe({checked:e,defaultChecked:t=false,disabled:i=false,onChange:a,value:s}){let{disabled:o,hasInputAnswer:u,invalid:f,multiple:g,name:d,registerAnswerControl:c,registerAnswerSelection:S,required:B,resetVersion:Q,selectedAnswerIds:x,setAnswerDefault:U,setAnswerSelectionFromInteraction:P,shortcutByAnswerId:A,shortcutByChoiceValue:G,status:v,syncControlledAnswerSelection:C}=Z(\"Questionnaire.Choice\"),E=p.useId(),[O,V]=p.useState(null),L=p.useRef(t),N=e!==void 0,D=o||i,M=x.includes(E),y=N?v===\"skipped\"?false:e:M,R=g?\"checkbox\":\"radio\",w=G?.get(s)??A.get(E)??null;p.useLayoutEffect(()=>S(E,L.current),[E,S]),p.useLayoutEffect(()=>U(E,t),[E,t,U]),p.useLayoutEffect(()=>{if(O)return c({disabled:D,element:O,id:E,ownDisabled:i,type:\"choice\",value:s})},[E,i,D,O,c,s]),p.useLayoutEffect(()=>{N&&C(E,e);},[E,N,e,Q,C]),p.useLayoutEffect(()=>{O&&(O.defaultChecked=N?e:t,Q>0&&(O.checked=y));},[y,N,e,t,O,Q]);function X(T){if(a?.(T),!T.defaultPrevented){if(!N){P(E,T.target.checked);return}v===\"skipped\"&&e===T.target.checked&&P(E,e);}}let ie={checked:y,disabled:D,invalid:f,shortcut:w,type:R};return {inputProps:{ref:V,\"aria-invalid\":f||void 0,\"aria-keyshortcuts\":Ie(w,!D&&y),checked:y,disabled:D,id:E,name:v===\"skipped\"?void 0:d,onChange:X,required:B&&!g&&!u,type:R,value:s},state:ie}}function _e({defaultValue:e,disabled:t=false,onChange:i,ref:a,type:s=\"text\",value:o}){let{disabled:u,invalid:f,name:g,registerAnswerControl:d,registerAnswerSelection:c$1,resetVersion:S,selectedAnswerIds:B,setAnswerDefault:Q,setAnswerSelectionFromInteraction:x,syncControlledAnswerSelection:U}=Z(\"Questionnaire.Input\"),P=p.useId(),A=p.useRef(null),G=p.useRef(ce(e)),v=o!==void 0,C=ce(e),E=ce(o),[O,V]=p.useState(C),L=u||t,N=v?E:O,D=B.includes(P);p.useLayoutEffect(()=>c$1(P,G.current),[P,c$1]),p.useLayoutEffect(()=>Q(P,C),[C,P,Q]),p.useLayoutEffect(()=>{let w=A.current;if(w)return d({disabled:L,element:w,id:P,type:\"input\"})},[L,P,d]),p.useLayoutEffect(()=>{if(v){U(P,E);return}S>0&&V(C);},[v,E,o,C,P,S,U]),p.useLayoutEffect(()=>{let w=A.current;!w||!v||(w.defaultValue=String(o));},[v,o]);function M(w){if(i?.(w),w.defaultPrevented)return;let X=w.target.value.trim().length>0;v||(V(X),x(P,X));}let y={disabled:L,filled:N,invalid:f},R=p.useCallback(w=>{A.current=w,c(a)?.(w);},[a]);return {inputProps:{\"aria-invalid\":f||void 0,\"aria-keyshortcuts\":Ie(null,!L&&N&&D),defaultValue:v?void 0:e,disabled:L,form:D?void 0:\"\",id:P,name:D?g:void 0,onChange:M,ref:R,type:s,value:v?o:void 0},state:y}}function We(e){return e===void 0?null:{enabledItems:e.filter(t=>!t.disabled),itemByName:new Map(e.map(t=>[t.name,t])),items:e}}function we(e,t){if(!e)return t??null;let i=t?e.itemByName.get(t):void 0;return i&&!i.disabled?i.name:e.enabledItems[0]?.name??null}function Ge(e,t){let i=new Map;if(!e||!t)return i;let a=me(t),s=0;for(let o of e.choices??[]){if(o.disabled)continue;let u=a[s];if(!u)break;i.set(o.value,u),s+=1;}return i}function je(e,t){let i=[],a=new Set;for(let s of e.items){a.has(s.name)&&i.push(`Item name \"${s.name}\" is defined more than once.`),a.add(s.name);let o=new Set;for(let u of s.choices??[])o.has(u.value)&&i.push(`Choice value \"${u.value}\" is defined more than once in item \"${s.name}\".`),o.add(u.value);}if(t){let s=e.itemByName.get(t);(!s||s.disabled)&&i.push(`defaultItem \"${t}\" does not identify an enabled item. The first enabled item will be used instead.`);}return i}function ze(e,t,i){let a=[],s=new Map(t.map(o=>[o.name,o]));for(let o of e.items){let u=s.get(o.name);if(!u){o.disabled||a.push(`Item \"${o.name}\" is defined but has no rendered Questionnaire.Item.`);continue}u.disabled!==!!o.disabled&&a.push(`Item \"${o.name}\" has different disabled values in Root.items and Questionnaire.Item.`),u.required!==!!o.required&&a.push(`Item \"${o.name}\" has different required values in Root.items and Questionnaire.Item.`);let f=o.choices??[],g=new Map(f.map(c=>[c.value,c])),d=new Map(u.choices.map(c=>[c.value,c]));for(let c of f){let S=d.get(c.value);if(!S){a.push(`Choice \"${c.value}\" is defined for item \"${o.name}\" but has no rendered Questionnaire.Choice.`);continue}S.disabled!==!!c.disabled&&a.push(`Choice \"${c.value}\" in item \"${o.name}\" has different disabled values in Root.items and Questionnaire.Choice.`);}if(i){for(let Q of u.choices)g.has(Q.value)||a.push(`Rendered choice \"${Q.value}\" in item \"${o.name}\" is missing from Root.items and will not receive a shortcut.`);let c=f.filter(Q=>!Q.disabled).map(Q=>Q.value),S=u.choices.filter(Q=>!Q.disabled).map(Q=>Q.value);c.length>0&&c.length===S.length&&c.every(Q=>S.includes(Q))&&c.some((Q,x)=>Q!==S[x])&&a.push(`Choice order for item \"${o.name}\" differs between Root.items and the rendered Questionnaire.Choice elements.`);}}for(let o of t)!o.disabled&&!e.itemByName.has(o.name)&&a.push(`Rendered item \"${o.name}\" is missing from Root.items and is excluded from the questionnaire collection.`);return a}function Je({\"aria-describedby\":e,\"aria-keyshortcuts\":t,disabled:i=false,invalid:a=false,multiple:s=false,name:o,onStatusChange:u,ref:f,required:g=false}){let{activeItemName:d,domVersion:c$1,first:S,itemDefinitionByName:B,last:Q,nativeValidation:x,registerItem:U,shortcuts:P}=ne(\"Questionnaire.Item\"),[A,G]=p.useState(null),[v,C]=p.useState([]),[E,O]=p.useState(false),[V,L]=p.useState([]),[N,D]=p.useState(false),[M,y]=p.useState(0),[R,w]=p.useState([]),[X,ie]=p.useState([]),T=p.useRef([]),q=p.useRef(s),de=p.useRef(s);q.current=s;let _=!i&&d===o,j=p.useMemo(()=>[...v].sort(Ue),[v,c$1]),h=p.useMemo(()=>j.filter(r=>!r.disabled),[j]),ge=h.some(r=>V.includes(r.id)),F=N?\"skipped\":ge?\"answered\":\"unanswered\",re=F===\"skipped\"&&!g,se=i||re||!a&&F===\"answered\",ee=!i&&!re&&(a||E&&!se),Re=h.some(r=>r.type===\"input\"),Qe=p.useRef(F),Ce=B?.get(o),J=p.useMemo(()=>B?Ge(Ce,P):null,[Ce,B,P]),ae=p.useMemo(()=>{if(J)return new Map;let r=me(P),m=h.filter(l=>l.type===\"choice\");return new Map(m.slice(0,r.length).map((l,$)=>[l.id,r[$]]))},[h,J,P]),ye=p.useCallback(r=>(C(m=>[...m.filter(l=>l.element!==r.element&&l.id!==r.id),r]),()=>{C(m=>m.filter(l=>l!==r));}),[]);p.useLayoutEffect(()=>{Qe.current!==F&&(Qe.current=F,u?.(F));},[u,F]);let n=p.useCallback((r,m)=>{L(l=>m?s?l.includes(r)?l:[...l,r]:[r]:l.filter($=>$!==r));},[s]),b=p.useCallback((r,m)=>{D(false),n(r,m);},[n]),k=p.useCallback((r,m)=>{m&&D(false),n(r,m);},[n]),Y=p.useCallback((r,m)=>(m&&(T.current=[...T.current.filter(l=>l!==r),r],L(l=>q.current?l.includes(r)?l:[...l,r]:l.length?l:[r])),()=>{T.current=T.current.filter(l=>l!==r),L(l=>l.filter($=>$!==r));}),[]),xe=p.useCallback((r,m)=>{if(m){T.current=T.current.includes(r)?T.current:[...T.current,r];return}T.current=T.current.filter(l=>l!==r);},[]),Me=p.useCallback(r=>(w(m=>m.includes(r)?m:[...m,r]),()=>{w(m=>m.filter(l=>l!==r));}),[]),Ae=p.useCallback(r=>(ie(m=>m.includes(r)?m:[...m,r]),()=>{ie(m=>m.filter(l=>l!==r));}),[]),Ne=p.useCallback(()=>{if(O(true),!se)return false;if(!x)return true;let r=h.find(m=>pe(m)&&m.element.willValidate&&!m.element.validity.valid);return r?(r.element.focus(),r.element.reportValidity(),false):true},[h,x,se]),Te=p.useCallback(()=>{A?.focus();},[A]),Le=p.useCallback(()=>{let r=A?.querySelector(\"input[data-filled][name]:not(:disabled)\"),m=A?.querySelector(\"input:not([type=hidden]):not(:disabled), textarea:not(:disabled)\");(r??m??A)?.focus();},[A]),De=p.useCallback(()=>{O(false),D(false),L(s?[...T.current]:T.current.slice(0,1)),y(r=>r+1);},[s]),Be=p.useCallback(()=>{g||(L([]),D(true));},[g]);p.useLayoutEffect(()=>{let r=de.current;de.current=s,!(!r||s)&&L(m=>{let l=h.find($=>m.includes($.id));return l?[l.id]:[]});},[h,s]);let Fe=p.useCallback(r=>h.find(m=>m.element===r)??null,[h]),Ve=p.useCallback(r=>{if(J){let l=Array.from(J.entries()).find(([,$])=>$===r)?.[0];return h.find($=>$.type===\"choice\"&&$.value===l)??null}let m=Array.from(ae.entries()).find(([,l])=>l===r)?.[0];return h.find(l=>l.id===m)??null},[h,ae,J]),Oe=p.useCallback((r,m)=>{let l=h.findIndex(Qt=>Qt.element===r),$=l<0?null:h[l]??null;if(!h.length||he(r)&&!$e($)||l<0&&r!==A)return false;let oe=l<0?h.find(pe)??(m===\"next\"?h[0]:h[h.length-1]):h[(l+(m===\"next\"?1:-1)+h.length)%h.length];return !oe||oe.element===r||l>=0&&le(r)&&le(oe.element)?false:(oe.element.focus(),oe.type===\"choice\"&&le(oe.element)&&oe.element.click(),true)},[h,A]);p.useLayoutEffect(()=>{if(A)return U({choices:j.flatMap(r=>r.type===\"choice\"?[{disabled:r.ownDisabled,value:r.value}]:[]),disabled:i,element:A,focus:Te,focusInvalid:Le,getAnswerByElement:Fe,getAnswerByShortcut:Ve,moveAnswerFocus:Oe,name:o,required:g,reset:De,skip:Be,status:F,validate:Ne})},[j,i,A,Te,Le,Fe,Ve,Oe,o,U,g,De,Be,F,Ne]);let pt=p.useMemo(()=>({active:_,disabled:i,hasInputAnswer:Re,invalid:ee,multiple:s,name:o,registerAnswerControl:ye,registerAnswerSelection:Y,registerDescription:Me,registerError:Ae,required:g,resetVersion:M,selectedAnswerIds:V,setAnswerDefault:xe,setAnswerSelectionFromInteraction:b,shortcutByAnswerId:ae,shortcutByChoiceValue:J,shortcuts:P,status:F,syncControlledAnswerSelection:k}),[_,i,Re,ee,s,o,ye,Y,Me,Ae,g,M,V,xe,b,ae,J,P,F,k]),ht=p.useCallback(r=>{G(r),c(f)?.(r);},[f]),gt=[...R,...ee?X:[],e].filter(Boolean).join(\" \")||void 0,Rt=[t,_?\"Meta+Enter Control+Enter\":void 0,_&&h.length?\"ArrowUp ArrowDown\":void 0,_&&!S?\"ArrowLeft\":void 0,_&&!Q&&F!==\"unanswered\"?\"ArrowRight\":void 0].filter(Boolean).join(\" \")||void 0;return {context:pt,itemProps:{\"aria-describedby\":gt,\"aria-invalid\":ee||void 0,\"aria-keyshortcuts\":Rt,disabled:i,hidden:!_,inert:!_,ref:ht,tabIndex:-1},state:{active:_,disabled:i,invalid:ee,multiple:s,required:g,status:F}}}function Xe({defaultItem:e,item:t,items:i,noValidate:a,onItemChange:s,onReset:o,onSubmit:u,ref:f,shortcuts:g}){let d=p.useMemo(()=>We(i),[i]),[c$1,S]=p.useState([]),[B,Q]=p.useState(()=>we(d,e)),[x,U]=p.useState(null),[P,A]=p.useState(0),G=p.useRef(null),v=t!==void 0,C=v?t:B,E=p.useRef(C),O=a===false,V=g??null,L=p.useRef(new Set);p.useLayoutEffect(()=>{if(process.env.NODE_ENV===\"production\")return;if(!d||!x){L.current.clear();return}let n=false;return queueMicrotask(()=>{if(n)return;let b=[...je(d,e),...ze(d,c$1,V)],k=new Set(b);k.forEach(Y=>{L.current.has(Y)||console.warn(`[Questionnaire] ${Y}`);}),L.current=k;}),()=>{n=true;}},[d,e,c$1,x,V]),p.useLayoutEffect(()=>{if(!x||typeof MutationObserver>\"u\")return;let n=new MutationObserver(()=>{A(b=>b+1);});return n.observe(x,{childList:true,subtree:true}),()=>n.disconnect()},[x]);let N=p.useMemo(()=>c$1.filter(n=>!n.disabled).sort(Ke),[P,c$1]),D=p.useMemo(()=>new Map(N.map(n=>[n.name,n])),[N]),M=d?.enabledItems??N,y=M.findIndex(n=>n.name===C),R=y<0||!C?null:D.get(C)??null,w=C?d?.itemByName.get(C):void 0,X=y<0?null:w?!!w.required:R?.required??false,ie=y<0?null:R?.status??(C?\"unanswered\":null),T=p.useMemo(()=>d?d.enabledItems.flatMap(n=>{let b=D.get(n.name);return b?[b]:[]}):N,[d,D,N]),q=M.length,de=y<0?0:y+1,_=q>0&&y===0,j=q>0&&y===q-1,h=p.useCallback((n,b=\"item\")=>{n!==C&&(G.current={name:n,target:b},v||Q(n),s?.(n));},[C,v,s]);p.useLayoutEffect(()=>{if(q===0)return;if(y<0){if(!v&&C===null){Q(M[0].name);return}h(M[0].name);return}let n=G.current,b=E.current!==C;if(E.current=C,!n||n.name!==C){v&&b&&(G.current=null,R?.focus());return}n.target===\"invalid\"?R?.focusInvalid():R?.focus(),G.current=null;},[R,C,v,y,M,h,q]);let ge=p.useCallback(n=>(S(b=>[...b.filter(k=>k.element!==n.element&&k.name!==n.name),n]),()=>{S(b=>b.filter(k=>k!==n));}),[]),F=p.useCallback(()=>{y<=0||h(M[y-1].name);},[y,M,h]),re=p.useCallback(()=>{if(!(!R||y>=q-1)){if(!R.validate()){R.focusInvalid();return}h(M[y+1].name);}},[R,y,M,h,q]),se=p.useCallback(()=>{if(R){if(!R.validate()){R.focusInvalid();return}if(j){x?.requestSubmit();return}h(M[y+1].name);}},[R,y,j,M,x,h]),ee=p.useCallback(()=>{if(!(!R||R.required)){if(R.skip(),!j){h(M[y+1].name);return}queueMicrotask(()=>{x?.requestSubmit();});}},[R,y,j,M,x,h]);function Re(n){if(o?.(n),n.defaultPrevented)return;for(let k of c$1)k.reset();let b=d?we(d,e):N.find(k=>k.name===e)?.name??N[0]?.name;b&&h(b);}function Qe(n){let b=T.find(k=>!k.validate());if(b){n.preventDefault(),h(b.name,\"invalid\"),b.name===C&&(b.focusInvalid(),G.current=null);return}u?.(n);}function Ce(n){if(n.defaultPrevented||n.nativeEvent.isComposing||n.keyCode===229||!R||!(n.target instanceof Element))return;if(n.key===\"Enter\"&&(n.metaKey||n.ctrlKey)&&!n.altKey&&!n.shiftKey){n.preventDefault(),n.repeat||se();return}if(n.metaKey||n.ctrlKey||n.altKey)return;if((n.key===\"ArrowUp\"||n.key===\"ArrowDown\")&&R.moveAnswerFocus(n.target,n.key===\"ArrowDown\"?\"next\":\"previous\")){n.preventDefault();return}if((n.key===\"ArrowLeft\"||n.key===\"ArrowRight\")&&!he(n.target)&&!le(n.target)){if(n.preventDefault(),n.repeat)return;n.key===\"ArrowLeft\"?F():R.status!==\"unanswered\"&&re();return}if(n.key===\"Enter\"){let Y=R.getAnswerByElement(n.target);if(!Y)return;n.preventDefault(),!n.repeat&&pe(Y)&&se();return}if(!V||he(n.target))return;let b=He(n.key,V),k=b?R.getAnswerByShortcut(b):null;k&&(n.preventDefault(),!n.repeat&&(k.element.focus(),k.type===\"choice\"&&k.element.click()));}let J={current:de,first:_,last:j,total:q},ae=p.useMemo(()=>({...J,activeItem:R,activeItemName:C,activeItemRequired:X,activeItemStatus:ie,domVersion:P,goNext:re,goPrevious:F,itemDefinitionByName:d?.itemByName??null,nativeValidation:O,registerItem:ge,shortcuts:V,skipCurrent:ee}),[R,C,X,ie,d,de,P,_,re,F,j,O,ge,V,ee,q]),ye=p.useCallback(n=>{U(n),c(f)?.(n);},[f]);return {context:ae,rootProps:{\"data-shortcuts\":V??void 0,onKeyDown:Ce,onReset:Re,onSubmit:Qe,ref:ye},state:J}}function Ye({defaultItem:e,item:t,items:i,noValidate:a$1=true,onItemChange:s,onReset:o,onSubmit:u,ref:f,shortcuts:g,...d}){let{context:c,rootProps:S,state:B}=Xe({defaultItem:e,item:t,items:i,noValidate:a$1,onItemChange:s,onReset:o,onSubmit:u,ref:f,shortcuts:g}),Q=a({defaultTagName:\"form\",props:b({...S,noValidate:a$1},d),state:B});return jsx(ve.Provider,{value:c,children:Q})}function Ze({children:e,render:t,...i}){let{current:a$1,first:s,last:o,total:u}=ne(\"Questionnaire.Progress\"),f=u?`Question ${a$1} of ${u}`:void 0;return a({defaultTagName:\"div\",props:b({\"aria-label\":\"Questionnaire progress\",\"aria-live\":\"polite\",\"aria-valuemax\":u||void 0,\"aria-valuemin\":u?1:void 0,\"aria-valuenow\":u?a$1:void 0,\"aria-valuetext\":f,children:e??f,role:\"progressbar\"},i),render:t,state:{current:a$1,first:s,last:o,total:u}})}function et({\"aria-describedby\":e,\"aria-keyshortcuts\":t,children:i,disabled:a$1=false,invalid:s=false,multiple:o=false,name:u,onStatusChange:f,ref:g,required:d=false,...c}){let{context:S,itemProps:B,state:Q}=Je({\"aria-describedby\":e,\"aria-keyshortcuts\":t,disabled:a$1,invalid:s,multiple:o,name:u,onStatusChange:f,ref:g,required:d}),x=a({defaultTagName:\"fieldset\",props:b({...B,children:i},c),state:Q,stateAttributesMapping:{active:U=>({\"data-active\":U?\"\":void 0})}});return jsx(Ee.Provider,{value:S,children:x})}function tt({render:e,...t}){return Z(\"Questionnaire.Title\"),a({defaultTagName:\"legend\",props:t,render:e})}function nt({id:e,render:t,...i}){let{registerDescription:a$1}=Z(\"Questionnaire.Description\"),s=p.useId(),o=e??s;return p.useLayoutEffect(()=>a$1(o),[o,a$1]),a({defaultTagName:\"p\",props:b({id:o},i),render:t})}function it({render:e,...t}){let{shortcuts:i}=Z(\"Questionnaire.Choices\");return a({defaultTagName:\"div\",props:t,render:e,state:{shortcuts:i}})}function ot({checked:e,children:t,defaultChecked:i=false,disabled:a$1=false,onChange:s,render:o,value:u,...f}){let{inputProps:g,state:d}=qe({checked:e,defaultChecked:i,disabled:a$1,onChange:s,value:u}),c=a({defaultTagName:\"label\",props:b({children:t},f),render:o,state:d,stateAttributesMapping:{checked:S=>({\"data-checked\":S?\"\":void 0,\"data-unchecked\":S?void 0:\"\"})}});return jsx(Pe.Provider,{value:{inputProps:g,state:d},children:c})}function rt({render:e,...t}){let{inputProps:i,state:a$1}=be(\"Questionnaire.ChoiceInput\");return a({defaultTagName:\"input\",props:b(i,t),render:e,state:a$1,stateAttributesMapping:{checked:s=>({\"data-checked\":s?\"\":void 0,\"data-unchecked\":s?void 0:\"\"})}})}function st({render:e,...t}){return be(\"Questionnaire.ChoiceLabel\"),a({defaultTagName:\"span\",props:t,render:e})}function at({children:e,render:t,...i}){let{state:a$1}=be(\"Questionnaire.ChoiceShortcut\"),s={shortcut:a$1.shortcut};return a({defaultTagName:\"span\",props:b({\"aria-hidden\":true,children:e??a$1.shortcut,hidden:a$1.shortcut===null},i),render:t,state:s})}function ut({defaultValue:e,disabled:t=false,onChange:i,ref:a$1,render:s,type:o=\"text\",value:u,...f}){let{inputProps:g,state:d}=_e({defaultValue:e,disabled:t,onChange:i,ref:a$1,type:o,value:u});return a({defaultTagName:\"input\",props:b(g,f),render:s,state:d,stateAttributesMapping:{filled:c=>({\"data-empty\":c?void 0:\"\",\"data-filled\":c?\"\":void 0})}})}function ct({children:e,id:t,render:i,...a$1}){let{invalid:s,registerError:o,required:u}=Z(\"Questionnaire.Error\"),f=p.useId(),g=t??f;return p.useLayoutEffect(()=>o(g),[g,o]),a({defaultTagName:\"p\",props:b({children:e??(u?\"Choose an answer to continue.\":\"Choose an answer or skip this question.\"),hidden:!s,id:g,role:s?\"alert\":void 0},a$1),render:i,state:{invalid:s}})}function lt({children:e,disabled:t=false,onClick:i,render:a,tabIndex:s,type:o=\"button\",...u}){let f=ne(\"Questionnaire.Previous\"),g=f.total>1&&!f.first;function d(c){i?.(c),c.defaultPrevented||f.goPrevious();}return Se({children:e??\"Previous\",disabled:t,onClick:d,props:u,render:a,status:f.activeItemStatus,tabIndex:s,type:o,visible:g})}function ft({children:e,disabled:t=false,onClick:i,render:a,tabIndex:s,type:o=\"button\",...u}){let f=ne(\"Questionnaire.Skip\"),g=f.activeItemRequired===false;function d(c){i?.(c),c.defaultPrevented||f.skipCurrent();}return Se({children:e??\"Skip\",disabled:t,onClick:d,props:u,render:a,status:f.activeItemStatus,tabIndex:s,type:o,visible:g})}function dt({children:e,disabled:t=false,onClick:i,render:a,tabIndex:s,type:o=\"button\",...u}){let f=ne(\"Questionnaire.Next\"),g=f.total>1&&!f.last;function d(c){i?.(c),c.defaultPrevented||f.goNext();}return Se({children:e??\"Next\",disabled:t,onClick:d,props:u,render:a,shortcut:\"Enter\",status:f.activeItemStatus,tabIndex:s,type:o,visible:g})}function mt({children:e,disabled:t=false,render:i,tabIndex:a,type:s=\"submit\",...o}){let u=ne(\"Questionnaire.Submit\"),f=u.total>0&&u.last;return Se({children:e??\"Submit\",disabled:t,props:o,render:i,shortcut:\"Enter\",status:u.activeItemStatus,tabIndex:a,type:s,visible:f})}function Se({children:e,disabled:t,onClick:i,props:a$1,render:s,shortcut:o,status:u,tabIndex:f,type:g,visible:d}){let c=d&&!t?o??null:null,S={disabled:t,shortcut:c,status:u,visible:d};return a({defaultTagName:\"button\",props:b({\"aria-hidden\":!d||void 0,\"aria-keyshortcuts\":c??void 0,children:e,disabled:t,hidden:!d,inert:!d,onClick:i,tabIndex:d?f:-1,type:g},a$1),render:s,state:S,stateAttributesMapping:{visible:B=>({\"data-hidden\":B?void 0:\"\",\"data-visible\":B?\"\":void 0})}})}var zt={Root:Ye,Progress:Ze,Item:et,Title:tt,Description:nt,Choices:it,Choice:ot,ChoiceInput:rt,ChoiceLabel:st,ChoiceShortcut:at,Input:ut,Error:ct,Previous:lt,Skip:ft,Next:dt,Submit:mt};export{zt as Questionnaire};","/*!\n * Adapted from shadcn/ui Questionnaire (radix-nova).\n * Source: https://ui.shadcn.com/r/styles/radix-nova/questionnaire.json\n *\n * MIT License\n *\n * Copyright (c) 2023 shadcn\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\"use client\"\n\nimport * as React from \"react\"\nimport { Questionnaire as QuestionnairePrimitive } from \"@shadcn/react/questionnaire\"\nimport { cn } from \"cn\"\n\nimport { buttonVariants, type Button } from \"#components/button\"\nimport { Check } from \"lucide-react\"\n\nfunction Questionnaire({\n className,\n ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Root>) {\n return (\n <QuestionnairePrimitive.Root\n data-slot=\"questionnaire\"\n className={cn(\"flex w-full min-w-0 flex-col gap-4\", className)}\n {...props}\n />\n )\n}\n\nfunction QuestionnaireProgress({\n className,\n ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Progress>) {\n return (\n <QuestionnairePrimitive.Progress\n data-slot=\"questionnaire-progress\"\n className={cn(\n \"min-h-[1lh] w-fit min-w-[14ch] text-xs font-medium text-muted-foreground tabular-nums\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction QuestionnaireItem({\n className,\n ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Item>) {\n return (\n <QuestionnairePrimitive.Item\n data-slot=\"questionnaire-item\"\n className={cn(\n \"flex min-w-0 flex-col gap-4 border-0 p-0 outline-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction QuestionnaireTitle({\n className,\n ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Title>) {\n return (\n <QuestionnairePrimitive.Title\n data-slot=\"questionnaire-title\"\n className={cn(\n \"cn-font-heading text-base leading-snug font-medium text-pretty [&:not(:has(~[data-slot=questionnaire-description]))]:mb-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction QuestionnaireDescription({\n className,\n ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Description>) {\n return (\n <QuestionnairePrimitive.Description\n data-slot=\"questionnaire-description\"\n className={cn(\"text-sm text-pretty text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction QuestionnaireChoices({\n className,\n ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Choices>) {\n return (\n <QuestionnairePrimitive.Choices\n data-slot=\"questionnaire-choices\"\n className={cn(\n \"group/questionnaire-choices grid min-w-0 gap-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction QuestionnaireChoice({\n children,\n className,\n ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Choice>) {\n return (\n <QuestionnairePrimitive.Choice\n data-slot=\"questionnaire-choice\"\n className={cn(\n \"group/questionnaire-choice relative flex min-h-11 cursor-pointer items-start gap-2.5 rounded-lg border border-input bg-transparent px-3 py-2.5 text-start text-sm transition-colors outline-none select-none hover:bg-muted/50 has-[>input:focus-visible]:border-ring has-[>input:focus-visible]:ring-3 has-[>input:focus-visible]:ring-ring/50 data-invalid:border-destructive dark:bg-input/20 data-checked:border-primary/40 data-checked:bg-muted dark:data-checked:bg-muted\",\n \"data-disabled:pointer-events-none data-disabled:cursor-not-allowed data-disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <QuestionnairePrimitive.ChoiceInput\n data-slot=\"questionnaire-choice-input\"\n className=\"absolute inset-0 z-10 size-full cursor-pointer opacity-0\"\n />\n <span\n aria-hidden=\"true\"\n data-slot=\"questionnaire-choice-indicator\"\n className=\"pointer-events-none relative flex size-4 shrink-0 translate-y-[--spacing(0.45)] items-center justify-center rounded-[4px] border border-input group-has-data-[slot=questionnaire-choice-description]/questionnaire-choice:translate-y-0.5 group-data-[type=radio]/questionnaire-choice:rounded-full group-data-checked/questionnaire-choice:border-primary group-data-checked/questionnaire-choice:bg-primary group-data-checked/questionnaire-choice:text-primary-foreground dark:bg-input/30 dark:group-data-checked/questionnaire-choice:bg-primary\"\n >\n <span\n data-slot=\"questionnaire-choice-indicator-dot\"\n className=\"hidden size-2 rounded-full bg-primary-foreground group-data-[type=checkbox]/questionnaire-choice:hidden group-data-checked/questionnaire-choice:block\"\n />\n <Check data-slot=\"questionnaire-choice-indicator-check\" className=\"hidden size-3.5 group-data-[type=radio]/questionnaire-choice:hidden group-data-checked/questionnaire-choice:block\" />\n </span>\n <QuestionnairePrimitive.ChoiceLabel\n data-slot=\"questionnaire-choice-label\"\n className=\"flex min-w-0 flex-1 flex-col gap-0.5 leading-snug\"\n >\n {children}\n </QuestionnairePrimitive.ChoiceLabel>\n <QuestionnairePrimitive.ChoiceShortcut\n data-slot=\"questionnaire-choice-shortcut\"\n className=\"pointer-events-none ms-auto hidden size-5 shrink-0 translate-y-[--spacing(0.45)] items-center justify-center rounded-md border border-input bg-background font-mono text-[0.625rem] leading-none font-medium text-muted-foreground group-has-data-[slot=questionnaire-choice-description]/questionnaire-choice:translate-y-0.5 group-data-[shortcut]/questionnaire-choice:inline-flex\"\n />\n </QuestionnairePrimitive.Choice>\n )\n}\n\nfunction QuestionnaireChoiceDescription({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"questionnaire-choice-description\"\n className={cn(\"text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction QuestionnaireInput({\n className,\n ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Input>) {\n return (\n <div\n data-slot=\"questionnaire-input-wrapper\"\n className=\"group/questionnaire-input relative w-full min-w-0\"\n >\n <QuestionnairePrimitive.Input\n data-slot=\"questionnaire-input\"\n className={cn(\n \"h-8 min-h-11 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-[color,box-shadow,background-color] outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 sm:min-h-0 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n \"selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction QuestionnaireError({\n className,\n ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Error>) {\n return (\n <QuestionnairePrimitive.Error\n data-slot=\"questionnaire-error\"\n className={cn(\"mt-2 text-sm text-destructive\", className)}\n {...props}\n />\n )\n}\n\nfunction QuestionnaireActions({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"questionnaire-actions\"\n className={cn(\n \"grid min-h-11 w-full grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-2 sm:min-h-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction QuestionnairePrevious({\n children,\n className,\n size = \"default\",\n variant = \"outline\",\n ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Previous> &\n Pick<React.ComponentProps<typeof Button>, \"size\" | \"variant\">) {\n return (\n <QuestionnairePrimitive.Previous\n data-slot=\"questionnaire-previous\"\n data-size={size}\n data-variant={variant}\n className={cn(\n buttonVariants({ size, variant }),\n \"col-start-1 row-start-1 min-h-11 justify-self-start sm:min-h-0\",\n className\n )}\n {...props}\n >\n {children ?? \"Previous\"}\n </QuestionnairePrimitive.Previous>\n )\n}\n\nfunction QuestionnaireSkip({\n children,\n className,\n size = \"default\",\n variant = \"outline\",\n ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Skip> &\n Pick<React.ComponentProps<typeof Button>, \"size\" | \"variant\">) {\n return (\n <QuestionnairePrimitive.Skip\n data-slot=\"questionnaire-skip\"\n data-size={size}\n data-variant={variant}\n className={cn(\n buttonVariants({ size, variant }),\n \"col-start-2 row-start-1 min-h-11 justify-self-end sm:min-h-0\",\n className\n )}\n {...props}\n >\n {children ?? \"Skip\"}\n </QuestionnairePrimitive.Skip>\n )\n}\n\nfunction QuestionnaireNext({\n children,\n className,\n size = \"default\",\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Next> &\n Pick<React.ComponentProps<typeof Button>, \"size\" | \"variant\">) {\n return (\n <QuestionnairePrimitive.Next\n data-slot=\"questionnaire-next\"\n data-size={size}\n data-variant={variant}\n className={cn(\n buttonVariants({ size, variant }),\n \"col-start-3 row-start-1 min-h-11 justify-self-end sm:min-h-0\",\n className\n )}\n {...props}\n >\n {children ?? \"Next\"}\n </QuestionnairePrimitive.Next>\n )\n}\n\nfunction QuestionnaireSubmit({\n children,\n className,\n size = \"default\",\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Submit> &\n Pick<React.ComponentProps<typeof Button>, \"size\" | \"variant\">) {\n return (\n <QuestionnairePrimitive.Submit\n data-slot=\"questionnaire-submit\"\n data-size={size}\n data-variant={variant}\n className={cn(\n buttonVariants({ size, variant }),\n \"col-start-3 row-start-1 min-h-11 justify-self-end sm:min-h-0\",\n className\n )}\n {...props}\n >\n {children ?? \"Submit\"}\n </QuestionnairePrimitive.Submit>\n )\n}\n\nexport {\n Questionnaire,\n QuestionnaireActions,\n QuestionnaireChoice,\n QuestionnaireChoiceDescription,\n QuestionnaireChoices,\n QuestionnaireDescription,\n QuestionnaireError,\n QuestionnaireInput,\n QuestionnaireItem,\n QuestionnaireNext,\n QuestionnairePrevious,\n QuestionnaireProgress,\n QuestionnaireSkip,\n QuestionnaireSubmit,\n QuestionnaireTitle,\n}\n"],"mappings":"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","names":["useMemo","useState","p","i","f","d","S","R","l","jsx","jsx","jsx","jsx","jsxs","useState","useMemo"]}
|
|
@@ -9,16 +9,18 @@ import { type PluginConnectorSelection } from "../components/connector-panel-typ
|
|
|
9
9
|
*
|
|
10
10
|
* 手机端不再隐藏:窄屏下面板宽度受视口约束,入口本身照常可用。
|
|
11
11
|
*/
|
|
12
|
-
export declare function ConnectButton({ sessionId, open, onOpenChange, pendingPlugins, onPendingPluginsChange, pendingPluginsDisabledReason,
|
|
12
|
+
export declare function ConnectButton({ sessionId, open, onOpenChange, pendingPlugins, onPendingPluginsChange, pendingPluginsDisabledReason, excludedComputers, onExcludedComputersChange, pendingPhones, onPendingPhonesChange, onPluginsChanged, variant, }: {
|
|
13
13
|
sessionId: string | null;
|
|
14
|
+
/** Menu row for a parent composer action menu; default toolbar icon is unchanged. */
|
|
15
|
+
variant?: "icon" | "submenu";
|
|
14
16
|
open?: boolean;
|
|
15
17
|
onOpenChange?: (open: boolean) => void;
|
|
16
|
-
/** 首页待选插件:只记下本次输入的待选,不激活任何东西。 */
|
|
17
18
|
pendingPlugins?: PluginConnectorSelection[];
|
|
18
19
|
onPendingPluginsChange?: (next: PluginConnectorSelection[]) => void;
|
|
19
20
|
pendingPluginsDisabledReason?: string | null;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
excludedComputers?: string[];
|
|
22
|
+
onExcludedComputersChange?: (ids: string[]) => void;
|
|
23
|
+
pendingPhones?: string[];
|
|
24
|
+
onPendingPhonesChange?: (ids: string[]) => void;
|
|
23
25
|
onPluginsChanged?: () => void;
|
|
24
26
|
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -2,24 +2,18 @@ import { type PluginSuggestionItem, type PluginSuggestionError } from "./extensi
|
|
|
2
2
|
import { type TopicAssetSuggestionItem, type TopicAssetSuggestionError } from "./extensions/topic-asset-mention";
|
|
3
3
|
import type { SuggestionProps } from "@tiptap/suggestion";
|
|
4
4
|
import type { BladeClient, FileEntry } from "@blade-hq/agent-client";
|
|
5
|
-
import { type UserHomeRuntime } from "./lib/user-home";
|
|
6
5
|
import type { FileSuggestionItem } from "./extensions/file-mention";
|
|
7
|
-
import { type KbSuggestionItem } from "./extensions/kb-mention";
|
|
8
6
|
/**
|
|
9
7
|
* `session` 浏览当前会话的工作空间(相对路径,需要会话);`userHome` 浏览用户
|
|
10
8
|
* 云电脑的 HOME(`/root/...` 绝对路径),首页还没有会话时用这一种。两种模式
|
|
11
9
|
* 的条目由调用方拉好后传进来,这里只负责过滤和渲染。
|
|
12
10
|
*/
|
|
13
11
|
export type FileBrowseScope = "session" | "userHome";
|
|
14
|
-
/**
|
|
15
|
-
export type MentionSuggestionItem = FileSuggestionItem | PluginSuggestionItem |
|
|
16
|
-
/**
|
|
17
|
-
* `items` 里可以混着知识库候选(`kind: "kb"`)和文件条目:知识库来自 blade_hub
|
|
18
|
-
* `/api/kb`,文件来自会话工作区或云电脑 HOME。菜单把两者拆成「知识库 / 文件」
|
|
19
|
-
* 两组渲染,键盘上下键跨组连续移动。
|
|
20
|
-
*/
|
|
12
|
+
/** Selected file, plugin entry or topic asset. */
|
|
13
|
+
export type MentionSuggestionItem = FileSuggestionItem | PluginSuggestionItem | TopicAssetSuggestionItem;
|
|
14
|
+
/** Candidates from the shared reference sources. */
|
|
21
15
|
export interface FileCompletionMenuProps extends Omit<SuggestionProps<FileSuggestionItem, FileSuggestionItem>, "command" | "items"> {
|
|
22
|
-
items: Array<FileEntry | PluginSuggestionError | PluginSuggestionItem |
|
|
16
|
+
items: Array<FileEntry | PluginSuggestionError | PluginSuggestionItem | TopicAssetSuggestionItem | TopicAssetSuggestionError>;
|
|
23
17
|
command: (props: MentionSuggestionItem) => void;
|
|
24
18
|
onExit?: () => void;
|
|
25
19
|
sessionId?: string | null;
|
|
@@ -40,7 +34,7 @@ export declare function getFileSuggestionItems(client: BladeClient, sessionId: s
|
|
|
40
34
|
* 路径:选中目录后编辑器插入的是 `@/root/文档/`,下一次补全就从这个绝对
|
|
41
35
|
* 路径继续往下走。不在 HOME 之下的输入一律当成在 HOME 根目录里按名字过滤。
|
|
42
36
|
*/
|
|
43
|
-
export declare function parseUserHomeQuery(query: string
|
|
37
|
+
export declare function parseUserHomeQuery(query: string): ParsedQuery;
|
|
44
38
|
export declare function getUserHomeSuggestionItems(client: BladeClient, query: string): Promise<FileEntry[]>;
|
|
45
39
|
export declare const FileCompletionMenu: import("react").ForwardRefExoticComponent<FileCompletionMenuProps & import("react").RefAttributes<FileCompletionMenuRef>>;
|
|
46
40
|
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
/** Composer submenus keep forms/search usable and flip into the viewport on narrow screens. */
|
|
3
|
+
export declare function InputActionSubmenu({ label, icon, open, onOpenChange, children, disabled }: {
|
|
4
|
+
label: string;
|
|
5
|
+
icon: ReactNode;
|
|
6
|
+
open: boolean;
|
|
7
|
+
onOpenChange: (open: boolean) => void;
|
|
8
|
+
children: ReactNode;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ChatRenderMode } from "../chat/runtime/environment";
|
|
2
|
+
import type { SkillSuggestionItem } from "./extensions/skill-mention";
|
|
3
|
+
export declare function SkillActionMenu({ open, onOpenChange, renderMode, onSelect, onManage, disabled }: {
|
|
4
|
+
open: boolean;
|
|
5
|
+
onOpenChange: (open: boolean) => void;
|
|
6
|
+
renderMode: ChatRenderMode;
|
|
7
|
+
onSelect: (skill: SkillSuggestionItem) => void;
|
|
8
|
+
onManage: () => void;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -3,11 +3,5 @@ export declare function SkillStatusBar({ sessionId, vertical, className, innerCl
|
|
|
3
3
|
vertical?: boolean;
|
|
4
4
|
className?: string;
|
|
5
5
|
innerClassName?: string;
|
|
6
|
-
/**
|
|
7
|
-
* 打开技能页。「已安装 N 个技能」是一条可点的导航,不是状态。
|
|
8
|
-
*
|
|
9
|
-
* 只有「已安装」可点:「已加载 N 个技能」是本次会话实际生效的技能,它的
|
|
10
|
-
* 详情是另一件事,两者不能因为长得像就合成同一个动作。
|
|
11
|
-
*/
|
|
12
6
|
onOpenSkills?: () => void;
|
|
13
7
|
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -13,6 +13,8 @@ export interface SkillOnlySuggestionItem {
|
|
|
13
13
|
description: string;
|
|
14
14
|
local?: boolean;
|
|
15
15
|
installed?: boolean;
|
|
16
|
+
/** 主体是固定流程(flows/main.yaml):运行时不即兴、不中途问人,菜单里打 ⚡ 标。 */
|
|
17
|
+
hasFlow?: boolean;
|
|
16
18
|
}
|
|
17
19
|
export interface SkillCommandSuggestionItem {
|
|
18
20
|
type: "command";
|
|
@@ -23,25 +25,6 @@ export interface SkillCommandSuggestionItem {
|
|
|
23
25
|
export interface SkillSuggestionSkillItem extends SkillOnlySuggestionItem {
|
|
24
26
|
type: "skill";
|
|
25
27
|
}
|
|
26
|
-
export
|
|
27
|
-
name: string;
|
|
28
|
-
description?: string | null;
|
|
29
|
-
required?: boolean;
|
|
30
|
-
/** flow.json 里原样的 JSON 默认值:0 / false / "" 都是合法默认值,不止字符串 */
|
|
31
|
-
default?: unknown;
|
|
32
|
-
}
|
|
33
|
-
/** 已安装的工作流:选中后往输入框填「运行工作流 X」,由主智能体调 workflow:run 前台执行。 */
|
|
34
|
-
export interface SkillWorkflowSuggestionItem {
|
|
35
|
-
type: "workflow";
|
|
36
|
-
name: string;
|
|
37
|
-
displayName: string;
|
|
38
|
-
description: string;
|
|
39
|
-
/** 声明的输入参数:插入文本带上「参数名=」模板,用户补值、模型照传 inputs。 */
|
|
40
|
-
inputs?: WorkflowInputSummary[];
|
|
41
|
-
}
|
|
42
|
-
export type SkillSuggestionItem = SkillSuggestionSkillItem | SkillCommandSuggestionItem | SkillWorkflowSuggestionItem;
|
|
43
|
-
/** 工作流胶囊后跟的参数模板文本:用户把「=」后补上值,模型按 key=value 填 inputs。 */
|
|
44
|
-
export declare function workflowParamsTail(item: SkillWorkflowSuggestionItem): string;
|
|
45
|
-
export declare function workflowRunText(item: SkillWorkflowSuggestionItem): string;
|
|
28
|
+
export type SkillSuggestionItem = SkillSuggestionSkillItem | SkillCommandSuggestionItem;
|
|
46
29
|
export declare const skillMentionSuggestionKey: PluginKey<any>;
|
|
47
30
|
export declare const SkillMention: import("@tiptap/core").Node<import("@tiptap/extension-mention").MentionOptions<any, import("@tiptap/extension-mention").MentionNodeAttrs>, any>;
|
|
@@ -19,16 +19,13 @@ export * from "./PlanningToggle";
|
|
|
19
19
|
export * from "./ReasoningModeSelect";
|
|
20
20
|
export * from "./SkillCompletionMenu";
|
|
21
21
|
export * from "./extensions/file-mention";
|
|
22
|
-
export * from "./extensions/kb-mention";
|
|
23
22
|
export * from "./extensions/skill-mention";
|
|
24
|
-
export * from "./extensions/workflow-mention";
|
|
25
23
|
export * from "./input-keyboard";
|
|
26
24
|
export * from "./lib/attachment-upload";
|
|
27
25
|
export * from "./lib/background-tasks-view";
|
|
28
26
|
export * from "./lib/client-query";
|
|
29
27
|
export * from "./lib/composer-content";
|
|
30
28
|
export * from "./lib/image-input-availability";
|
|
31
|
-
export * from "./lib/kb-suggestions";
|
|
32
29
|
export * from "./lib/reasoning-levels";
|
|
33
30
|
export * from "./lib/session-data";
|
|
34
31
|
export * from "./lib/skill-suggestions";
|
|
@@ -51,4 +48,6 @@ export * from "./lib/topic-asset-suggestions";
|
|
|
51
48
|
export * from "./use-reference-candidates";
|
|
52
49
|
export { PluginMention, isPluginSuggestionItem } from "./extensions/plugin-mention";
|
|
53
50
|
export { getPluginSuggestionItems } from "./lib/plugin-suggestions";
|
|
54
|
-
export { collectPluginMentions } from "./lib/composer-content";
|
|
51
|
+
export { collectPluginMentions, collectMessageMentions } from "./lib/composer-content";
|
|
52
|
+
export * from "./InputActionSubmenu";
|
|
53
|
+
export * from "./SkillActionMenu";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type PluginRef, type TopicAssetRef, type SkillMentionAvailability } from "@blade-hq/agent-client";
|
|
1
|
+
import { type PluginRef, type MessageRef, type TopicAssetRef, type SkillMentionAvailability } from "@blade-hq/agent-client";
|
|
2
2
|
/**
|
|
3
3
|
* 输入框(tiptap)文档的最小结构,以及把它翻译成待发送文本的规则。
|
|
4
4
|
*
|
|
@@ -23,29 +23,14 @@ export interface LeadingSkillMention extends SkillMentionAvailability {
|
|
|
23
23
|
* 时,药丸只是被提到,不改写整条消息的意图。
|
|
24
24
|
*/
|
|
25
25
|
export declare function findLeadingSkillMention(node: EditorJSON | null | undefined): LeadingSkillMention | null;
|
|
26
|
-
export interface KbMentionRef {
|
|
27
|
-
kbId: number;
|
|
28
|
-
name: string;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* 收集正文里所有知识库药丸(按出现顺序去重)。位置不限——不像技能只认开头,
|
|
32
|
-
* 用户在句中 @ 一个库同样是在圈定这条消息的检索范围。
|
|
33
|
-
*/
|
|
34
|
-
export declare function collectKbMentions(node: EditorJSON | null | undefined): KbMentionRef[];
|
|
35
|
-
/**
|
|
36
|
-
* 输入历史(ArrowUp/ArrowDown 召回)只存了序列化后的纯文本——知识库药丸序列化
|
|
37
|
-
* 成 `@库名` 就是普通文字,`kbId` 早就丢了。召回时如果只是把文字塞回编辑器,
|
|
38
|
-
* 画面上看着还是 `@库名`,但已经是纯文本、不是真的 kbMention 节点,
|
|
39
|
-
* `collectKbMentions` 找不到,后端就不会收到这次显式的知识库 Context 声明。
|
|
40
|
-
*
|
|
41
|
-
* 这里按文字里 `@库名` 出现的位置,把召回时一并存下来的 `kbMentions` 换回真的
|
|
42
|
-
* kbMention 节点,其余部分照旧当纯文本——只在能找到对应文字的地方才替换,
|
|
43
|
-
* 找不到就原样留成文字,不强行拼接、不假装恢复成功。
|
|
44
|
-
*/
|
|
45
|
-
export declare function buildEditorDocumentWithKbMentions(text: string, kbMentions: readonly KbMentionRef[]): EditorJSON;
|
|
46
26
|
/** Asset identity travels separately; no metadata or retrieval instruction enters the user's text. */
|
|
47
27
|
export declare function collectTopicAssetMentions(node: EditorJSON | null | undefined): TopicAssetRef[];
|
|
48
|
-
export declare function buildEditorDocumentWithMentions(text: string,
|
|
28
|
+
export declare function buildEditorDocumentWithMentions(text: string, topicAssetRefs?: readonly TopicAssetRef[]): EditorJSON;
|
|
49
29
|
/** Switching the explicitly selected topic must not leave pills from the previous one. */
|
|
50
30
|
export declare function retainTopicAssetMentions(node: EditorJSON, topicId: string | null): EditorJSON;
|
|
51
31
|
export declare function collectPluginMentions(node: EditorJSON | null | undefined): PluginRef[];
|
|
32
|
+
export declare function buildEditorDocument(text: string): EditorJSON;
|
|
33
|
+
/** Mention identity is separate from user intent; position never implies execution. */
|
|
34
|
+
export declare function collectMessageMentions(node: EditorJSON | null | undefined): MessageRef[];
|
|
35
|
+
/** Only plugin selections persist into the next message. */
|
|
36
|
+
export declare function buildPluginSelectionDocument(refs: readonly MessageRef[]): EditorJSON;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { BladeClient,
|
|
1
|
+
import type { BladeClient, MessageRef } from "@blade-hq/agent-client";
|
|
2
2
|
import type { PluginSuggestionItem, PluginSuggestionError } from "../extensions/plugin-mention";
|
|
3
|
-
export declare function pluginRefsForSend(refs:
|
|
3
|
+
export declare function pluginRefsForSend(refs: MessageRef[], turns?: readonly {
|
|
4
4
|
role: string;
|
|
5
|
-
refs?:
|
|
6
|
-
}[]):
|
|
7
|
-
export declare function getPluginSuggestionItems(client: BladeClient, session: string | null | undefined, query: string): Promise<Array<PluginSuggestionItem | PluginSuggestionError>>;
|
|
5
|
+
refs?: MessageRef[] | null;
|
|
6
|
+
}[]): MessageRef[] | undefined;
|
|
7
|
+
export declare function getPluginSuggestionItems(client: BladeClient, session: string | null | undefined, query: string, pendingPlugins?: readonly string[]): Promise<Array<PluginSuggestionItem | PluginSuggestionError>>;
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import type { PluginSuggestionItem, PluginSuggestionError } from "../extensions/plugin-mention";
|
|
2
2
|
import type { FileEntry } from "@blade-hq/agent-client";
|
|
3
|
-
import type { KbSuggestionItem } from "../extensions/kb-mention";
|
|
4
3
|
import type { TopicAssetSuggestionError, TopicAssetSuggestionItem } from "../extensions/topic-asset-mention";
|
|
5
4
|
export interface ReferenceCandidateGroups {
|
|
6
5
|
plugins: Array<PluginSuggestionItem | PluginSuggestionError>;
|
|
7
|
-
kbs: KbSuggestionItem[];
|
|
8
6
|
topics: Array<TopicAssetSuggestionItem | TopicAssetSuggestionError>;
|
|
9
7
|
files: FileEntry[];
|
|
10
8
|
}
|
|
@@ -17,7 +15,6 @@ export interface ReferenceCandidateSnapshot {
|
|
|
17
15
|
}
|
|
18
16
|
export interface ReferenceCandidateSources {
|
|
19
17
|
plugins?: (query: string) => Promise<Array<PluginSuggestionItem | PluginSuggestionError>>;
|
|
20
|
-
kbs: (query: string) => Promise<ReferenceCandidateGroups["kbs"]>;
|
|
21
18
|
topics: (query: string) => Promise<ReferenceCandidateGroups["topics"]>;
|
|
22
19
|
files: (query: string) => Promise<ReferenceCandidateGroups["files"]>;
|
|
23
20
|
}
|
|
@@ -25,6 +22,5 @@ export interface ReferenceCandidateSources {
|
|
|
25
22
|
export declare function createReferenceCandidateController(getScope: () => readonly unknown[], sources: ReferenceCandidateSources, timeoutMs?: number): {
|
|
26
23
|
cancel: () => void;
|
|
27
24
|
query(query: string): Promise<ReferenceCandidateItem[]>;
|
|
28
|
-
/** Bind by result identity, never by label/query: closing and reopening @ is a new request. */
|
|
29
25
|
observe(items: ReferenceCandidateItem[], listener: (snapshot: ReferenceCandidateSnapshot) => void): void;
|
|
30
26
|
};
|
|
@@ -14,6 +14,6 @@ export interface SkillSuggestionOptions {
|
|
|
14
14
|
}
|
|
15
15
|
/** 会话的技能变了(连接器开关插件等):下一次 `/` 菜单重新取。 */
|
|
16
16
|
export declare function invalidateSlashSuggestions(client: BladeClient, sessionId: string | null): void;
|
|
17
|
-
/**
|
|
17
|
+
/** `/` 菜单的全部候选:只有技能——固定流程也是技能(带 hasFlow),没有单独的一组。 */
|
|
18
18
|
export declare function getSlashSuggestions(query: string, options: SkillSuggestionOptions): Promise<SkillSuggestionItem[]>;
|
|
19
19
|
export declare function getSkillSuggestions(query: string, options: SkillSuggestionOptions): Promise<SkillSuggestionSkillItem[]>;
|
|
@@ -4,23 +4,6 @@ export interface UserHomeEntry {
|
|
|
4
4
|
path: string;
|
|
5
5
|
is_dir: boolean;
|
|
6
6
|
}
|
|
7
|
-
export interface UserHomeRuntime {
|
|
8
|
-
/** 云电脑 HOME 的绝对路径。沙盒是 `/root`,daemon 是它自报的用户目录。 */
|
|
9
|
-
homePath: string;
|
|
10
|
-
/** Windows daemon 的路径用反斜杠,拼子目录时不能写死 `/`。 */
|
|
11
|
-
separator: "/" | "\\";
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* 用户云电脑的 HOME 位置。不能假定是 `/root`:用户把某台 daemon 设成默认运行
|
|
15
|
-
* 环境时,HOME 是它自报的路径(`/home/alice`、`C:\Users\alice`),拿 `/root`
|
|
16
|
-
* 去问会被判为越界,补全菜单就会静默空掉。
|
|
17
|
-
*/
|
|
18
|
-
export declare function getUserHomeRuntime(client: BladeClient): Promise<UserHomeRuntime>;
|
|
19
|
-
/**
|
|
20
|
-
* 最近一次解析出的运行环境。补全菜单渲染时条目已经拉好了,此时运行环境必然
|
|
21
|
-
* 已解析——同步读一份,省得把 Promise 传进渲染路径。
|
|
22
|
-
*/
|
|
23
|
-
export declare function getLastUserHomeRuntime(): UserHomeRuntime;
|
|
24
7
|
/**
|
|
25
8
|
* 列出用户云电脑 HOME 下某个目录的内容。不需要会话——首页在还没建会话时
|
|
26
9
|
* 就要能引用这些文件。后端已按统一规则跳过隐藏项、依赖目录和编译产物。
|
|
@@ -3,11 +3,10 @@
|
|
|
3
3
|
* 否则用基于 BladeClient 的默认实现。覆盖点见 `RichInputServices`(internal 入口)。
|
|
4
4
|
*/
|
|
5
5
|
import type { BackgroundTask, ConnectionStatus, SessionContextStats } from "@blade-hq/agent-client/internal";
|
|
6
|
-
import { type InputConnection, type InputDataState, type
|
|
7
|
-
export { type ConnectorComputerSectionProps, type
|
|
6
|
+
import { type InputConnection, type InputDataState, type InputModelCatalog, type InputModelPreferences, type InputSessionSkill, type InputSkillStats } from "../chat/runtime/input-services";
|
|
7
|
+
export { type ConnectorComputerSectionProps, type ConnectorPhoneSectionProps, type InputConnection, type InputDataState, type InputModelCatalog, type InputModelOption, type InputModelPreferences, type InputSessionSkill, type InputSkillStats, type RichInputServices, RichInputServicesProvider, useRichInputServices, } from "../chat/runtime/input-services";
|
|
8
8
|
export declare function useModelCatalog(): InputModelCatalog;
|
|
9
9
|
export declare function useModelPreferences(): InputModelPreferences;
|
|
10
|
-
export declare function useKnowledgeBaseLoader(): () => Promise<InputKnowledgeBase[]>;
|
|
11
10
|
/** 连接情况:宿主给了就用宿主的(内置 Web 看全局连接),否则看当前会话。 */
|
|
12
11
|
export declare function useComposerConnectionInfo(sessionId: string | null): InputConnection;
|
|
13
12
|
export declare function useComposerConnection(sessionId: string | null): ConnectionStatus;
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
interface VoiceWaveformProps {
|
|
2
|
-
/** RMS 幅度 0..1 */
|
|
3
2
|
level: number;
|
|
4
|
-
/** 线条颜色;默认跟随 currentColor */
|
|
5
3
|
color?: string;
|
|
6
|
-
/** 按钮直径参考值,决定波形尺寸 */
|
|
7
4
|
size?: number;
|
|
8
5
|
}
|
|
9
6
|
export declare function VoiceWaveform({ level, color, size }: VoiceWaveformProps): import("react/jsx-runtime").JSX.Element;
|