@shuttle-ai/render-react 0.0.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.
- package/README.md +5 -0
- package/dist/cjs/agentWork/action/index.cjs +1 -0
- package/dist/cjs/agentWork/agent/aiMessage/index.cjs +1 -0
- package/dist/cjs/agentWork/agent/index.cjs +1 -0
- package/dist/cjs/agentWork/agent/toolRender/confirm.cjs +1 -0
- package/dist/cjs/agentWork/agent/toolRender/index.cjs +1 -0
- package/dist/cjs/agentWork/agent/userMessage/index.cjs +1 -0
- package/dist/cjs/agentWork/render.cjs +1 -0
- package/dist/cjs/context/agent/base.cjs +1 -0
- package/dist/cjs/context/agent/provider.cjs +1 -0
- package/dist/cjs/context/agent/useAgent.cjs +1 -0
- package/dist/cjs/context/agentWork/base.cjs +1 -0
- package/dist/cjs/context/agentWork/provider.cjs +1 -0
- package/dist/cjs/context/agentWork/useWork.cjs +1 -0
- package/dist/cjs/context/agentWork/useWorkContext.cjs +1 -0
- package/dist/cjs/context/tool/base.cjs +1 -0
- package/dist/cjs/context/tool/provider.cjs +1 -0
- package/dist/cjs/context/tool/useTool.cjs +1 -0
- package/dist/cjs/hooks/useAgentMessages.cjs +1 -0
- package/dist/cjs/hooks/useAgentStatus.cjs +1 -0
- package/dist/cjs/hooks/useAiMessage.cjs +1 -0
- package/dist/cjs/hooks/useRootAgent.cjs +1 -0
- package/dist/cjs/hooks/useToolMessage.cjs +1 -0
- package/dist/cjs/hooks/useWorkAutoRunScope.cjs +1 -0
- package/dist/cjs/hooks/useWorkStatus.cjs +1 -0
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/index.css +1 -0
- package/dist/cjs/markdownRender/index.cjs +1 -0
- package/dist/cjs/tools/writeTodos/index.cjs +1 -0
- package/dist/cjs/tools/writeTodos/render.cjs +1 -0
- package/dist/es/agentWork/action/index.mjs +80 -0
- package/dist/es/agentWork/agent/aiMessage/index.mjs +25 -0
- package/dist/es/agentWork/agent/index.mjs +45 -0
- package/dist/es/agentWork/agent/toolRender/confirm.mjs +96 -0
- package/dist/es/agentWork/agent/toolRender/index.mjs +49 -0
- package/dist/es/agentWork/agent/userMessage/index.mjs +24 -0
- package/dist/es/agentWork/render.mjs +38 -0
- package/dist/es/context/agent/base.mjs +7 -0
- package/dist/es/context/agent/provider.mjs +10 -0
- package/dist/es/context/agent/useAgent.mjs +8 -0
- package/dist/es/context/agentWork/base.mjs +8 -0
- package/dist/es/context/agentWork/provider.mjs +21 -0
- package/dist/es/context/agentWork/useWork.mjs +8 -0
- package/dist/es/context/agentWork/useWorkContext.mjs +8 -0
- package/dist/es/context/tool/base.mjs +9 -0
- package/dist/es/context/tool/provider.mjs +33 -0
- package/dist/es/context/tool/useTool.mjs +8 -0
- package/dist/es/hooks/useAgentMessages.mjs +10 -0
- package/dist/es/hooks/useAgentStatus.mjs +10 -0
- package/dist/es/hooks/useAiMessage.mjs +13 -0
- package/dist/es/hooks/useRootAgent.mjs +10 -0
- package/dist/es/hooks/useToolMessage.mjs +13 -0
- package/dist/es/hooks/useWorkAutoRunScope.mjs +10 -0
- package/dist/es/hooks/useWorkStatus.mjs +10 -0
- package/dist/es/index.css +1 -0
- package/dist/es/index.mjs +50 -0
- package/dist/es/markdownRender/index.mjs +13 -0
- package/dist/es/tools/writeTodos/index.mjs +16 -0
- package/dist/es/tools/writeTodos/render.mjs +37 -0
- package/dist/types/agentWork/action/index.d.ts +1 -0
- package/dist/types/agentWork/agent/aiMessage/index.d.ts +5 -0
- package/dist/types/agentWork/agent/index.d.ts +7 -0
- package/dist/types/agentWork/agent/toolRender/confirm.d.ts +12 -0
- package/dist/types/agentWork/agent/toolRender/index.d.ts +6 -0
- package/dist/types/agentWork/agent/userMessage/index.d.ts +8 -0
- package/dist/types/agentWork/index.d.ts +7 -0
- package/dist/types/agentWork/render.d.ts +7 -0
- package/dist/types/context/agent/base.d.ts +4 -0
- package/dist/types/context/agent/index.d.ts +2 -0
- package/dist/types/context/agent/provider.d.ts +7 -0
- package/dist/types/context/agent/useAgent.d.ts +1 -0
- package/dist/types/context/agentWork/base.d.ts +6 -0
- package/dist/types/context/agentWork/index.d.ts +3 -0
- package/dist/types/context/agentWork/provider.d.ts +14 -0
- package/dist/types/context/agentWork/useWork.d.ts +1 -0
- package/dist/types/context/agentWork/useWorkContext.d.ts +1 -0
- package/dist/types/context/index.d.ts +3 -0
- package/dist/types/context/tool/base.d.ts +11 -0
- package/dist/types/context/tool/index.d.ts +2 -0
- package/dist/types/context/tool/provider.d.ts +12 -0
- package/dist/types/context/tool/useTool.d.ts +2 -0
- package/dist/types/hooks/index.d.ts +7 -0
- package/dist/types/hooks/useAgentMessages.d.ts +2 -0
- package/dist/types/hooks/useAgentStatus.d.ts +2 -0
- package/dist/types/hooks/useAiMessage.d.ts +3 -0
- package/dist/types/hooks/useRootAgent.d.ts +2 -0
- package/dist/types/hooks/useToolMessage.d.ts +3 -0
- package/dist/types/hooks/useWorkAutoRunScope.d.ts +2 -0
- package/dist/types/hooks/useWorkStatus.d.ts +2 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/markdownRender/index.d.ts +5 -0
- package/dist/types/tools/index.d.ts +1 -0
- package/dist/types/tools/writeTodos/index.d.ts +3 -0
- package/dist/types/tools/writeTodos/render.d.ts +5 -0
- package/dist/types/type.d.ts +19 -0
- package/package.json +54 -0
package/README.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("react/jsx-runtime"),u=require("react"),o=require("antd"),p=require("@ant-design/icons"),f=require("../../context/agentWork/useWork.cjs");require("../../context/agentWork/base.cjs");require("@shuttle-ai/client");require("../../context/agent/base.cjs");require("../../context/tool/base.cjs");const g=require("../../hooks/useWorkStatus.cjs"),k=require("../../hooks/useWorkAutoRunScope.cjs");;/* empty css */function q(){const[s,i]=u.useState(""),r=f.useWork(),e=g.default(r),l=k.default(r);u.useEffect(()=>{e==="running"&&i("")},[e]);const a=u.useCallback(()=>{s&&r.invoke(s)},[s]),c=u.useCallback(t=>{t.shiftKey||(t.preventDefault(),a())},[a]),d=u.useMemo(()=>[{label:"自动执行所有",value:"always"},{label:"自动执行只读",value:"read"},{label:"手动执行",value:"none"}],[]);return n.jsxs("div",{className:"agent-work-action",children:[n.jsx(o.Input.TextArea,{disabled:e!=="idle",onPressEnter:c,value:s,onChange:t=>i(t.target.value),className:"agent-work-action-input",autoSize:!1}),n.jsxs("div",{className:"agent-work-action-btns",children:[n.jsx(o.Select,{style:{minWidth:130},disabled:e!=="idle",value:l,options:d,onChange:t=>r.setAutoRunScope(t)}),n.jsx(o.Button,{disabled:e!=="idle"||!s,loading:e==="pending"||e==="running",onClick:a,type:"primary",icon:n.jsx(p.SendOutlined,{})})]})]})}exports.default=q;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("react/jsx-runtime"),a=require("react"),l=require("../../../hooks/useAiMessage.cjs");require("../../../context/agentWork/base.cjs");require("@shuttle-ai/client");const o=require("../../../context/agent/useAgent.cjs");require("../../../context/agent/base.cjs");require("../../../context/tool/base.cjs");const c=require("../../../markdownRender/index.cjs"),d=require("../toolRender/index.cjs"),g=require("../index.cjs");;/* empty css */function m({messageId:i}){const n=o.useAgent(),t=l.default(n,i),r=a.useMemo(()=>n.children.filter(e=>t?.subAgents?.map(u=>u.id)?.includes(e.options.id)),[n,t?.subAgents]);return t?s.jsxs("div",{className:"agent-work-agent-message ai-message",children:[s.jsx("div",{className:"ai-message-content",children:s.jsx(c.default,{children:t.content})}),!!t.toolCalls?.length&&s.jsx("div",{className:"agent-work-agent-tools",children:t.toolCalls.map(e=>s.jsx(d.default,{toolCall:e},e.id))}),r.length>0&&s.jsx("div",{className:"agent-work-agent-children",children:r.map(e=>s.jsx(g.default,{agent:e},e.options.id))})]}):null}exports.default=m;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const u=require("react/jsx-runtime"),o=require("react"),q=require("classnames"),g=require("../../hooks/useAgentMessages.cjs"),M=require("../../hooks/useAgentStatus.cjs");require("../../context/agentWork/base.cjs");require("@shuttle-ai/client");require("../../context/agent/base.cjs");const v=require("../../context/agent/provider.cjs");require("../../context/tool/base.cjs");const x=require("./userMessage/index.cjs"),h=require("./aiMessage/index.cjs");function j({agent:t,isRoot:l}){const[i,a]=o.useState([]),n=g.default(t),c=M.default(t),d=o.useMemo(()=>{const e=[];let r=!1;for(const s of n)s.role==="user"?(r=i.includes(s.id),e.push(s)):s.role==="assistant"&&!r&&e.push(s);return e},[n,i]),f=o.useCallback(async e=>{if(t.status==="waitRevoke"){await t.revoke();return}a(r=>r.includes(e)?r.filter(s=>s!==e):[...r,e])},[]);return u.jsx(v.default,{agent:t,children:u.jsx("div",{className:q("agent-work-agent",l&&"is-root-agent"),children:d.map(e=>e.role==="user"?u.jsx(x.default,{message:e,closed:c==="waitRevoke"||i.includes(e.id),onToggleClose:f},e.id):u.jsx(h.default,{messageId:e.id},e.id))})})}exports.default=j;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("react/jsx-runtime"),r=require("react"),s=require("antd"),g=require("@ant-design/icons");function v({toolId:u,result:t,agent:d,getConfirmResult:o,getNewArgs:y}){const[a,f]=r.useState(t?.type==="reject"?"reject":"accept"),[c,p]=r.useState(t?.reason||""),[m,j]=r.useState(!1);r.useEffect(()=>{t?.type&&f(t.type==="reject"?"reject":"accept")},[t?.type]),r.useEffect(()=>{t?.reason&&p(t.reason)},[t?.reason]);const i=r.useCallback(async()=>{if(a==="reject"&&!c){s.message.warning("请输入拒绝原因");return}j(!0);try{const e=a==="accept"?{type:"confirm",newArgs:await y?.()}:{type:"reject",reason:c};if(e.type==="confirm"&&o){const l=await o();l&&(e.result=l.result,e.newArgs=l.newArgs,e.type="confirmWithResult")}await d.confirmTool(u,e)}catch(e){throw e}finally{j(!1)}},[a,c,u,d,o]),h=r.useCallback(e=>{e.shiftKey||(e.preventDefault(),i())},[i]);return n.jsxs("div",{className:"fn-tool-confirm",children:[n.jsx("span",{className:"fn-tool-confirm-tip",children:"是否允许执行?"}),n.jsxs("div",{className:"fn-tool-confirm-button-group",children:[n.jsxs(s.Radio.Group,{size:"small",optionType:"button",value:a,disabled:!!t,onChange:e=>f(e.target.value),children:[n.jsx(s.Radio,{value:"accept",children:"接受"}),n.jsx(s.Radio,{value:"reject",children:"拒绝"})]}),n.jsx(s.Button,{disabled:!!t,size:"small",type:"primary",danger:a==="reject",loading:m,onClick:i,icon:n.jsx(g.SendOutlined,{}),children:"提交"})]}),a==="reject"&&n.jsx(s.Input.TextArea,{disabled:!!t,placeholder:"请输入拒绝原因",value:c,onChange:e=>p(e.target.value),rows:3,onPressEnter:h})]})}exports.default=v;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("react/jsx-runtime"),o=require("react"),c=require("../../../hooks/useToolMessage.cjs");require("../../../context/agentWork/base.cjs");require("@shuttle-ai/client");const a=require("../../../context/agent/useAgent.cjs");require("../../../context/agent/base.cjs");require("../../../context/tool/base.cjs");const f=require("../../../context/tool/provider.cjs"),d=require("./confirm.cjs");;/* empty css */function m({toolCall:e}){const n=a.useAgent(),t=c.default(n,e.id),s=o.useMemo(()=>n.options.tools?.find(i=>i.name===e.name),[n,e.name]);return t?r.jsx("div",{className:"agent-work-agent-tool",children:s?.run.type!=="render"?r.jsxs("div",{className:"agent-work-agent-fn-tool",children:[r.jsx("p",{className:"fn-tool-name",children:e.name}),r.jsx("pre",{className:"fn-tool-args",children:u(e.args)}),r.jsx("pre",{className:"fn-tool-result",children:u(t.content||t.confirm?.result)}),r.jsx(d.default,{result:t.confirm,toolId:e.id,agent:n})]}):r.jsx(f.default,{toolId:e.id,agent:n,args:e.args,content:t.content,confirmResult:t.confirm,run:s.run})}):null}function u(e){if(typeof e=="object")return JSON.stringify(e,null,2);try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}exports.default=m;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),r=require("react"),t=require("@ant-design/icons"),l=require("antd");;/* empty css */function o({message:s,closed:u,onToggleClose:a}){const[n,i]=r.useState(!1),c=r.useCallback(async()=>{n||(i(!0),await a?.(s.id),i(!1))},[a,s.id,n]);return e.jsxs("div",{className:"agent-work-agent-message user-message",children:[e.jsx("span",{className:"agent-work-agent-message-expand-icon",onClick:c,children:n?e.jsx(l.Spin,{indicator:e.jsx(t.LoadingOutlined,{spin:!0}),size:"small"}):u?e.jsx(t.PlusOutlined,{}):e.jsx(t.LineOutlined,{})}),e.jsx("pre",{className:"agent-work-agent-message-content",children:s.content})]})}exports.default=o;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("react/jsx-runtime"),n=require("react"),d=require("classnames"),f=require("antd"),q=require("../context/agentWork/useWork.cjs");require("../context/agentWork/base.cjs");require("@shuttle-ai/client");require("../context/agent/base.cjs");require("../context/tool/base.cjs");const g=require("../hooks/useRootAgent.cjs"),h=require("./agent/index.cjs"),b=require("./action/index.cjs");function x({className:c,style:o,empty:i}){const l=q.useWork(),u=g.default(l),s=n.useRef(!0),e=n.useRef(null);n.useEffect(()=>{if(!e.current)return;const t=new MutationObserver(()=>{!s.current||!e.current||e.current.scrollTo({top:e.current.scrollHeight})});return t.observe(e.current,{childList:!0,subtree:!0,characterData:!0}),()=>t.disconnect()},[]);const a=n.useCallback(t=>{!e.current||!t.isTrusted||(s.current=Math.abs(e.current.scrollHeight-e.current.scrollTop-e.current.clientHeight)<8)},[]);return r.jsxs("div",{className:d("agent-work",c),style:o,children:[r.jsx("div",{className:"agent-work-main",ref:e,onScroll:a,children:u?r.jsx(h.default,{agent:u}):i||r.jsx(f.Empty,{description:"暂无聊天"})}),r.jsx(b.default,{})]})}exports.default=x;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),e=t.createContext({agent:null});exports.agentContext=e;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const u=require("react/jsx-runtime"),o=require("react"),i=require("./base.cjs");function n({children:r,agent:e}){const t=o.useMemo(()=>({agent:e}),[e]);return u.jsx(i.agentContext.Provider,{value:t,children:r})}exports.default=n;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react"),t=require("./base.cjs");function n(){return e.useContext(t.agentContext).agent}exports.useAgent=n;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),e=t.createContext({work:null,context:{}});exports.agentWorkContext=e;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("react/jsx-runtime"),t=require("react"),c=require("@shuttle-ai/client"),s=require("./base.cjs");function a({children:e,context:r,...n}){const o=t.useRef(l(n)),u=t.useMemo(()=>({work:o.current,context:r}),[r]);return i.jsx(s.agentWorkContext.Provider,{value:u,children:e})}function l(e){return"work"in e?e.work:new c.AgentWork(e)}exports.default=a;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react"),t=require("./base.cjs");function r(){return e.useContext(t.agentWorkContext).work}exports.useWork=r;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react"),t=require("./base.cjs");function o(){return e.useContext(t.agentWorkContext).context}exports.useWorkContext=o;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),e=t.createContext({args:{},agent:{},toolId:""});exports.toolContext=e;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const f=require("react/jsx-runtime"),t=require("react"),n=require("./base.cjs");function p({args:r,content:o,toolId:u,confirmResult:i,agent:s,run:e}){const l=t.useCallback(c=>s.confirmTool(u,c),[s,u]),d=t.useMemo(()=>({args:r,agent:s,toolId:u,content:o,confirmResult:i,confirm:l}),[r,s,u,o,i,l]),a=t.useMemo(()=>e.defaultProps?typeof e.defaultProps=="function"?e.defaultProps({args:r,content:o}):e.defaultProps:{},[e.defaultProps,r,o]);return f.jsx(n.toolContext.Provider,{value:d,children:f.jsx(e.Render,{...a})})}exports.default=p;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react"),t=require("./base.cjs");function o(){return e.useContext(t.toolContext)}exports.useTool=o;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("react");function r(e){const[t,u]=s.useState(e.messages);return s.useEffect(()=>e.on("messages",o=>{u([...o])}),[e]),t}exports.default=r;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react");function r(t){const[s,u]=e.useState(t.status);return e.useEffect(()=>t.on("status",o=>{u(o)}),[t]),s}exports.default=r;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("react");function f(t,s){const[n,r]=i.useState();return i.useEffect(()=>{const o=t.on("aiMessage",e=>{e.id===s&&r({...e})}),u=t.messages.find(e=>e.role==="assistant"&&e.id===s);return u&&r(u),o},[t,s]),n}exports.default=f;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react");function r(e){const[o,n]=t.useState();return t.useEffect(()=>e.on("agent",()=>{n(e.getRootAgent())}),[]),o}exports.default=r;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const u=require("react");function f(t,o){const[n,r]=u.useState();return u.useEffect(()=>{const i=t.on("toolMessage",e=>{e.id===o&&r({...e})}),s=t.messages.find(e=>e.role==="tool"&&e.id===o);return s&&r(s),i},[t,o]),n}exports.default=f;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react");function n(e){const[u,o]=t.useState(e.autoRunScope);return t.useEffect(()=>e.on("autoRunScope",()=>{o(e.autoRunScope)}),[]),u}exports.default=n;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react");function r(t){const[s,u]=e.useState(t.status);return e.useEffect(()=>t.on("status",()=>{u(t.status)}),[]),s}exports.default=r;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("@shuttle-ai/type");;/* empty css */const e=require("./agentWork/render.cjs"),r=require("./agentWork/agent/index.cjs"),t=require("./agentWork/action/index.cjs"),o=require("./agentWork/agent/aiMessage/index.cjs"),u=require("./agentWork/agent/userMessage/index.cjs"),s=require("./agentWork/agent/toolRender/index.cjs"),n=require("./agentWork/agent/toolRender/confirm.cjs"),i=require("./context/agentWork/useWork.cjs"),d=require("./context/agentWork/useWorkContext.cjs"),a=require("./context/agentWork/provider.cjs"),l=require("./context/agent/useAgent.cjs"),c=require("./context/agent/provider.cjs"),g=require("./context/tool/useTool.cjs"),q=require("./context/tool/provider.cjs"),f=require("./hooks/useWorkStatus.cjs"),A=require("./hooks/useWorkAutoRunScope.cjs"),k=require("./hooks/useRootAgent.cjs"),W=require("./hooks/useAgentMessages.cjs"),T=require("./hooks/useAgentStatus.cjs"),x=require("./hooks/useToolMessage.cjs"),M=require("./hooks/useAiMessage.cjs"),R=require("./tools/writeTodos/index.cjs"),S=require("./markdownRender/index.cjs");exports.AgentWorkRender=e.default;exports.AgentWorkAgent=r.default;exports.AgentWorkAction=t.default;exports.AiMessageRender=o.default;exports.UserMessageRender=u.default;exports.ToolRender=s.default;exports.ToolConfirmRender=n.default;exports.useWork=i.useWork;exports.useWorkContext=d.useWorkContext;exports.AgentWorkProvider=a.default;exports.useAgent=l.useAgent;exports.AgentProvider=c.default;exports.useTool=g.useTool;exports.ToolProvider=q.default;exports.useWorkStatus=f.default;exports.useWorkAutoRunScope=A.default;exports.useRootAgent=k.default;exports.useAgentMessages=W.default;exports.useAgentStatus=T.default;exports.useToolMessage=x.default;exports.useAiMessage=M.default;exports.writeTodosTool=R.default;exports.MarkdownRender=S.default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.agent-work{display:flex;flex-direction:column}.agent-work .agent-work-main{flex:1;overflow-y:auto;padding:12px}.agent-work .agent-work-main .agent-work-agent{display:flex;flex-direction:column;gap:1rem;position:relative}.agent-work .agent-work-main .agent-work-agent:before{content:" ";display:inline-block;position:absolute;top:8px;left:0;width:1px;z-index:-1;height:calc(100% - 8px);background-color:#0000001a}.agent-work .agent-work-main .agent-work-agent-message{padding:0 12px;display:flex;flex-direction:column;gap:1rem}.agent-work-agent-message.user-message{position:relative}.agent-work-agent-message.user-message .agent-work-agent-message-expand-icon{position:absolute;top:8px;left:0;transform:translate(-50%);width:1rem;height:1rem;display:flex;align-items:center;justify-content:center;border-radius:50%;background-color:#fff;box-shadow:0 0 4px #0000001a;font-size:12px;cursor:pointer}.agent-work-agent-message.user-message .agent-work-agent-message-content{background-color:#fff;box-shadow:0 0 8px #0000001a;padding:8px 12px;border-radius:8px;margin:0;font-size:1rem}.agent-work-agent-tool{display:flex;flex-direction:column;padding:8px;border-radius:8px;background-color:#1677ff33;box-shadow:0 0 8px #0000001a}.agent-work-agent-tool .agent-work-agent-fn-tool{display:flex;flex-direction:column;gap:8px}.agent-work-agent-tool .agent-work-agent-fn-tool .fn-tool-name{margin:0;font-weight:700}.agent-work-agent-tool .agent-work-agent-fn-tool .fn-tool-args,.agent-work-agent-tool .agent-work-agent-fn-tool .fn-tool-result{margin:0;padding-top:8px;border-top:1px solid #d9d9d9}.agent-work-agent-tool .agent-work-agent-fn-tool .fn-tool-result:empty{display:none}.agent-work-agent-tool .fn-tool-confirm{display:flex;flex-direction:column;gap:4px;padding-top:8px;border-top:1px solid #d9d9d9}.agent-work-agent-tool .fn-tool-confirm .fn-tool-confirm-tip{font-size:14px}.agent-work-agent-tool .fn-tool-confirm .fn-tool-confirm-button-group{display:flex;align-items:center;gap:2rem}.agent-work-agent-message.ai-message .ai-message-content{padding:8px;border-radius:8px;background-color:#aff0b566;box-shadow:0 0 8px #0000001a}.agent-work-agent-message.ai-message .ai-message-content>.markdown-body{background-color:transparent}.agent-work-agent-message.ai-message .agent-work-agent-children,.agent-work-agent-message.ai-message .agent-work-agent-tools{display:flex;flex-direction:column;gap:1rem}.agent-work-action{display:flex;flex-direction:column;border-radius:8px;border:1px solid #d9d9d9}.agent-work-action:has(.agent-work-action-input:focus){border-color:#1677ff;box-shadow:0 0 4px #4096ffaa}.agent-work-action:has(.agent-work-action-input.ant-input-disabled){background-color:#0000000a}.agent-work-action .agent-work-action-input.ant-input-disabled{background-color:transparent}.agent-work-action .agent-work-action-input{border:none;outline:none;box-shadow:none;resize:none}.agent-work-action .agent-work-action-btns{display:flex;align-items:center;justify-content:flex-end;padding:4px 11px;gap:8px}.shuttle-ai-tool-todo{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.shuttle-ai-tool-todo .shuttle-ai-tool-todo-header{font-size:14px;font-weight:500;color:#333}.shuttle-ai-tool-todo .shuttle-ai-tool-todo-item{display:inline-block;width:fit-content;font-size:14px}.shuttle-ai-tool-todo .shuttle-ai-tool-todo-item.status-in_progress{color:transparent;-webkit-background-clip:text;background-clip:text;background-image:linear-gradient(90deg,#000 0% 45%,#f5222d 45%,#52c41a,#1677ff 55%,#000 55% 100%);background-size:200% auto;animation:bg-scan 1s linear infinite}.shuttle-ai-tool-todo .shuttle-ai-tool-todo-item.status-completed{text-decoration:line-through;color:#888}@keyframes bg-scan{0%{background-position:100% center}to{background-position:0% center}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),t=require("react-markdown"),n=require("remark-gfm"),u=require("remark-breaks"),s=require("remark-frontmatter"),a=require("rehype-raw");require("github-markdown-css/github-markdown.css");function i({children:r}){return e.jsx("div",{className:"markdown-body",children:e.jsx(t,{remarkPlugins:[n,u,s],rehypePlugins:[a],children:r})})}exports.default=i;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./render.cjs"),t={name:"write_todos",description:"Write todos",run:{type:"render",Render:e.default},extras:{onlyShow:!0,disableExport:!0}};exports.default=t;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),o=require("classnames"),i=require("@ant-design/icons");require("react");require("../../context/agentWork/base.cjs");require("@shuttle-ai/client");require("../../context/agent/base.cjs");const u=require("../../context/tool/useTool.cjs");require("../../context/tool/base.cjs");;/* empty css */function l(){const{args:t}=u.useTool();return e.jsxs("ul",{className:"shuttle-ai-tool-todo",children:[e.jsxs("li",{className:"shuttle-ai-tool-todo-header",children:[e.jsx(i.UnorderedListOutlined,{})," 待办"]}),t.todos.map((s,r)=>e.jsxs("li",{className:o("shuttle-ai-tool-todo-item",`status-${s.status}`),children:[r+1,". ",s.content]},s.content))]})}exports.default=l;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { jsxs as s, jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import { useState as m, useEffect as d, useCallback as l, useMemo as f } from "react";
|
|
3
|
+
import { Input as g, Select as k, Button as v } from "antd";
|
|
4
|
+
import { SendOutlined as b } from "@ant-design/icons";
|
|
5
|
+
import { useWork as h } from "../../context/agentWork/useWork.mjs";
|
|
6
|
+
import "../../context/agentWork/base.mjs";
|
|
7
|
+
import "@shuttle-ai/client";
|
|
8
|
+
import "../../context/agent/base.mjs";
|
|
9
|
+
import "../../context/tool/base.mjs";
|
|
10
|
+
import S from "../../hooks/useWorkStatus.mjs";
|
|
11
|
+
import w from "../../hooks/useWorkAutoRunScope.mjs";
|
|
12
|
+
/* empty css */
|
|
13
|
+
function V() {
|
|
14
|
+
const [n, i] = m(""), o = h(), e = S(o), u = w(o);
|
|
15
|
+
d(() => {
|
|
16
|
+
e === "running" && i("");
|
|
17
|
+
}, [e]);
|
|
18
|
+
const r = l(() => {
|
|
19
|
+
n && o.invoke(n);
|
|
20
|
+
}, [n]), p = l(
|
|
21
|
+
(t) => {
|
|
22
|
+
t.shiftKey || (t.preventDefault(), r());
|
|
23
|
+
},
|
|
24
|
+
[r]
|
|
25
|
+
), c = f(
|
|
26
|
+
() => [
|
|
27
|
+
{
|
|
28
|
+
label: "自动执行所有",
|
|
29
|
+
value: "always"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
label: "自动执行只读",
|
|
33
|
+
value: "read"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
label: "手动执行",
|
|
37
|
+
value: "none"
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
[]
|
|
41
|
+
);
|
|
42
|
+
return /* @__PURE__ */ s("div", { className: "agent-work-action", children: [
|
|
43
|
+
/* @__PURE__ */ a(
|
|
44
|
+
g.TextArea,
|
|
45
|
+
{
|
|
46
|
+
disabled: e !== "idle",
|
|
47
|
+
onPressEnter: p,
|
|
48
|
+
value: n,
|
|
49
|
+
onChange: (t) => i(t.target.value),
|
|
50
|
+
className: "agent-work-action-input",
|
|
51
|
+
autoSize: !1
|
|
52
|
+
}
|
|
53
|
+
),
|
|
54
|
+
/* @__PURE__ */ s("div", { className: "agent-work-action-btns", children: [
|
|
55
|
+
/* @__PURE__ */ a(
|
|
56
|
+
k,
|
|
57
|
+
{
|
|
58
|
+
style: { minWidth: 130 },
|
|
59
|
+
disabled: e !== "idle",
|
|
60
|
+
value: u,
|
|
61
|
+
options: c,
|
|
62
|
+
onChange: (t) => o.setAutoRunScope(t)
|
|
63
|
+
}
|
|
64
|
+
),
|
|
65
|
+
/* @__PURE__ */ a(
|
|
66
|
+
v,
|
|
67
|
+
{
|
|
68
|
+
disabled: e !== "idle" || !n,
|
|
69
|
+
loading: e === "pending" || e === "running",
|
|
70
|
+
onClick: r,
|
|
71
|
+
type: "primary",
|
|
72
|
+
icon: /* @__PURE__ */ a(b, {})
|
|
73
|
+
}
|
|
74
|
+
)
|
|
75
|
+
] })
|
|
76
|
+
] });
|
|
77
|
+
}
|
|
78
|
+
export {
|
|
79
|
+
V as default
|
|
80
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsxs as a, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo as m } from "react";
|
|
3
|
+
import l from "../../../hooks/useAiMessage.mjs";
|
|
4
|
+
import "../../../context/agentWork/base.mjs";
|
|
5
|
+
import "@shuttle-ai/client";
|
|
6
|
+
import { useAgent as g } from "../../../context/agent/useAgent.mjs";
|
|
7
|
+
import "../../../context/agent/base.mjs";
|
|
8
|
+
import "../../../context/tool/base.mjs";
|
|
9
|
+
import d from "../../../markdownRender/index.mjs";
|
|
10
|
+
import c from "../toolRender/index.mjs";
|
|
11
|
+
import p from "../index.mjs";
|
|
12
|
+
/* empty css */
|
|
13
|
+
function R({ messageId: s }) {
|
|
14
|
+
const n = g(), t = l(n, s), o = m(() => n.children.filter(
|
|
15
|
+
(e) => t?.subAgents?.map((i) => i.id)?.includes(e.options.id)
|
|
16
|
+
), [n, t?.subAgents]);
|
|
17
|
+
return t ? /* @__PURE__ */ a("div", { className: "agent-work-agent-message ai-message", children: [
|
|
18
|
+
/* @__PURE__ */ r("div", { className: "ai-message-content", children: /* @__PURE__ */ r(d, { children: t.content }) }),
|
|
19
|
+
!!t.toolCalls?.length && /* @__PURE__ */ r("div", { className: "agent-work-agent-tools", children: t.toolCalls.map((e) => /* @__PURE__ */ r(c, { toolCall: e }, e.id)) }),
|
|
20
|
+
o.length > 0 && /* @__PURE__ */ r("div", { className: "agent-work-agent-children", children: o.map((e) => /* @__PURE__ */ r(p, { agent: e }, e.options.id)) })
|
|
21
|
+
] }) : null;
|
|
22
|
+
}
|
|
23
|
+
export {
|
|
24
|
+
R as default
|
|
25
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { useState as f, useMemo as p, useCallback as d } from "react";
|
|
3
|
+
import g from "classnames";
|
|
4
|
+
import M from "../../hooks/useAgentMessages.mjs";
|
|
5
|
+
import h from "../../hooks/useAgentStatus.mjs";
|
|
6
|
+
import "../../context/agentWork/base.mjs";
|
|
7
|
+
import "@shuttle-ai/client";
|
|
8
|
+
import "../../context/agent/base.mjs";
|
|
9
|
+
import k from "../../context/agent/provider.mjs";
|
|
10
|
+
import "../../context/tool/base.mjs";
|
|
11
|
+
import w from "./userMessage/index.mjs";
|
|
12
|
+
import A from "./aiMessage/index.mjs";
|
|
13
|
+
function U({ agent: r, isRoot: a }) {
|
|
14
|
+
const [i, l] = f([]), n = M(r), u = h(r), m = p(() => {
|
|
15
|
+
const e = [];
|
|
16
|
+
let o = !1;
|
|
17
|
+
for (const s of n)
|
|
18
|
+
s.role === "user" ? (o = i.includes(s.id), e.push(s)) : s.role === "assistant" && !o && e.push(s);
|
|
19
|
+
return e;
|
|
20
|
+
}, [n, i]), c = d(async (e) => {
|
|
21
|
+
if (r.status === "waitRevoke") {
|
|
22
|
+
await r.revoke();
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
l((o) => o.includes(e) ? o.filter((s) => s !== e) : [...o, e]);
|
|
26
|
+
}, []);
|
|
27
|
+
return /* @__PURE__ */ t(k, { agent: r, children: /* @__PURE__ */ t(
|
|
28
|
+
"div",
|
|
29
|
+
{
|
|
30
|
+
className: g("agent-work-agent", a && "is-root-agent"),
|
|
31
|
+
children: m.map((e) => e.role === "user" ? /* @__PURE__ */ t(
|
|
32
|
+
w,
|
|
33
|
+
{
|
|
34
|
+
message: e,
|
|
35
|
+
closed: u === "waitRevoke" || i.includes(e.id),
|
|
36
|
+
onToggleClose: c
|
|
37
|
+
},
|
|
38
|
+
e.id
|
|
39
|
+
) : /* @__PURE__ */ t(A, { messageId: e.id }, e.id))
|
|
40
|
+
}
|
|
41
|
+
) });
|
|
42
|
+
}
|
|
43
|
+
export {
|
|
44
|
+
U as default
|
|
45
|
+
};
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { jsxs as s, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { useState as l, useEffect as h, useCallback as j } from "react";
|
|
3
|
+
import { message as b, Radio as p, Button as x, Input as A } from "antd";
|
|
4
|
+
import { SendOutlined as T } from "@ant-design/icons";
|
|
5
|
+
function S({
|
|
6
|
+
toolId: f,
|
|
7
|
+
result: t,
|
|
8
|
+
agent: d,
|
|
9
|
+
getConfirmResult: o,
|
|
10
|
+
getNewArgs: g
|
|
11
|
+
}) {
|
|
12
|
+
const [n, m] = l(
|
|
13
|
+
t?.type === "reject" ? "reject" : "accept"
|
|
14
|
+
), [a, u] = l(t?.reason || ""), [v, y] = l(!1);
|
|
15
|
+
h(() => {
|
|
16
|
+
t?.type && m(t.type === "reject" ? "reject" : "accept");
|
|
17
|
+
}, [t?.type]), h(() => {
|
|
18
|
+
t?.reason && u(t.reason);
|
|
19
|
+
}, [t?.reason]);
|
|
20
|
+
const c = j(async () => {
|
|
21
|
+
if (n === "reject" && !a) {
|
|
22
|
+
b.warning("请输入拒绝原因");
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
y(!0);
|
|
26
|
+
try {
|
|
27
|
+
const e = n === "accept" ? {
|
|
28
|
+
type: "confirm",
|
|
29
|
+
newArgs: await g?.()
|
|
30
|
+
} : {
|
|
31
|
+
type: "reject",
|
|
32
|
+
reason: a
|
|
33
|
+
};
|
|
34
|
+
if (e.type === "confirm" && o) {
|
|
35
|
+
const i = await o();
|
|
36
|
+
i && (e.result = i.result, e.newArgs = i.newArgs, e.type = "confirmWithResult");
|
|
37
|
+
}
|
|
38
|
+
await d.confirmTool(f, e);
|
|
39
|
+
} catch (e) {
|
|
40
|
+
throw e;
|
|
41
|
+
} finally {
|
|
42
|
+
y(!1);
|
|
43
|
+
}
|
|
44
|
+
}, [n, a, f, d, o]), w = j(
|
|
45
|
+
(e) => {
|
|
46
|
+
e.shiftKey || (e.preventDefault(), c());
|
|
47
|
+
},
|
|
48
|
+
[c]
|
|
49
|
+
);
|
|
50
|
+
return /* @__PURE__ */ s("div", { className: "fn-tool-confirm", children: [
|
|
51
|
+
/* @__PURE__ */ r("span", { className: "fn-tool-confirm-tip", children: "是否允许执行?" }),
|
|
52
|
+
/* @__PURE__ */ s("div", { className: "fn-tool-confirm-button-group", children: [
|
|
53
|
+
/* @__PURE__ */ s(
|
|
54
|
+
p.Group,
|
|
55
|
+
{
|
|
56
|
+
size: "small",
|
|
57
|
+
optionType: "button",
|
|
58
|
+
value: n,
|
|
59
|
+
disabled: !!t,
|
|
60
|
+
onChange: (e) => m(e.target.value),
|
|
61
|
+
children: [
|
|
62
|
+
/* @__PURE__ */ r(p, { value: "accept", children: "接受" }),
|
|
63
|
+
/* @__PURE__ */ r(p, { value: "reject", children: "拒绝" })
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
),
|
|
67
|
+
/* @__PURE__ */ r(
|
|
68
|
+
x,
|
|
69
|
+
{
|
|
70
|
+
disabled: !!t,
|
|
71
|
+
size: "small",
|
|
72
|
+
type: "primary",
|
|
73
|
+
danger: n === "reject",
|
|
74
|
+
loading: v,
|
|
75
|
+
onClick: c,
|
|
76
|
+
icon: /* @__PURE__ */ r(T, {}),
|
|
77
|
+
children: "提交"
|
|
78
|
+
}
|
|
79
|
+
)
|
|
80
|
+
] }),
|
|
81
|
+
n === "reject" && /* @__PURE__ */ r(
|
|
82
|
+
A.TextArea,
|
|
83
|
+
{
|
|
84
|
+
disabled: !!t,
|
|
85
|
+
placeholder: "请输入拒绝原因",
|
|
86
|
+
value: a,
|
|
87
|
+
onChange: (e) => u(e.target.value),
|
|
88
|
+
rows: 3,
|
|
89
|
+
onPressEnter: w
|
|
90
|
+
}
|
|
91
|
+
)
|
|
92
|
+
] });
|
|
93
|
+
}
|
|
94
|
+
export {
|
|
95
|
+
S as default
|
|
96
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { jsx as o, jsxs as m } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo as f } from "react";
|
|
3
|
+
import c from "../../../hooks/useToolMessage.mjs";
|
|
4
|
+
import "../../../context/agentWork/base.mjs";
|
|
5
|
+
import "@shuttle-ai/client";
|
|
6
|
+
import { useAgent as u } from "../../../context/agent/useAgent.mjs";
|
|
7
|
+
import "../../../context/agent/base.mjs";
|
|
8
|
+
import "../../../context/tool/base.mjs";
|
|
9
|
+
import p from "../../../context/tool/provider.mjs";
|
|
10
|
+
import a from "./confirm.mjs";
|
|
11
|
+
/* empty css */
|
|
12
|
+
function R({ toolCall: r }) {
|
|
13
|
+
const e = u(), n = c(e, r.id), t = f(() => e.options.tools?.find((s) => s.name === r.name), [e, r.name]);
|
|
14
|
+
return n ? /* @__PURE__ */ o("div", { className: "agent-work-agent-tool", children: t?.run.type !== "render" ? /* @__PURE__ */ m("div", { className: "agent-work-agent-fn-tool", children: [
|
|
15
|
+
/* @__PURE__ */ o("p", { className: "fn-tool-name", children: r.name }),
|
|
16
|
+
/* @__PURE__ */ o("pre", { className: "fn-tool-args", children: i(r.args) }),
|
|
17
|
+
/* @__PURE__ */ o("pre", { className: "fn-tool-result", children: i(n.content || n.confirm?.result) }),
|
|
18
|
+
/* @__PURE__ */ o(
|
|
19
|
+
a,
|
|
20
|
+
{
|
|
21
|
+
result: n.confirm,
|
|
22
|
+
toolId: r.id,
|
|
23
|
+
agent: e
|
|
24
|
+
}
|
|
25
|
+
)
|
|
26
|
+
] }) : /* @__PURE__ */ o(
|
|
27
|
+
p,
|
|
28
|
+
{
|
|
29
|
+
toolId: r.id,
|
|
30
|
+
agent: e,
|
|
31
|
+
args: r.args,
|
|
32
|
+
content: n.content,
|
|
33
|
+
confirmResult: n.confirm,
|
|
34
|
+
run: t.run
|
|
35
|
+
}
|
|
36
|
+
) }) : null;
|
|
37
|
+
}
|
|
38
|
+
function i(r) {
|
|
39
|
+
if (typeof r == "object")
|
|
40
|
+
return JSON.stringify(r, null, 2);
|
|
41
|
+
try {
|
|
42
|
+
return JSON.stringify(JSON.parse(r), null, 2);
|
|
43
|
+
} catch {
|
|
44
|
+
return r;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export {
|
|
48
|
+
R as default
|
|
49
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsxs as o, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { useState as l, useCallback as c } from "react";
|
|
3
|
+
import { LoadingOutlined as d, PlusOutlined as m, LineOutlined as u } from "@ant-design/icons";
|
|
4
|
+
import { Spin as g } from "antd";
|
|
5
|
+
/* empty css */
|
|
6
|
+
function x({ message: n, closed: i, onToggleClose: s }) {
|
|
7
|
+
const [a, t] = l(!1), r = c(async () => {
|
|
8
|
+
a || (t(!0), await s?.(n.id), t(!1));
|
|
9
|
+
}, [s, n.id, a]);
|
|
10
|
+
return /* @__PURE__ */ o("div", { className: "agent-work-agent-message user-message", children: [
|
|
11
|
+
/* @__PURE__ */ e(
|
|
12
|
+
"span",
|
|
13
|
+
{
|
|
14
|
+
className: "agent-work-agent-message-expand-icon",
|
|
15
|
+
onClick: r,
|
|
16
|
+
children: a ? /* @__PURE__ */ e(g, { indicator: /* @__PURE__ */ e(d, { spin: !0 }), size: "small" }) : i ? /* @__PURE__ */ e(m, {}) : /* @__PURE__ */ e(u, {})
|
|
17
|
+
}
|
|
18
|
+
),
|
|
19
|
+
/* @__PURE__ */ e("pre", { className: "agent-work-agent-message-content", children: n.content })
|
|
20
|
+
] });
|
|
21
|
+
}
|
|
22
|
+
export {
|
|
23
|
+
x as default
|
|
24
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsxs as a, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { useRef as c, useEffect as p, useCallback as f } from "react";
|
|
3
|
+
import g from "classnames";
|
|
4
|
+
import { Empty as d } from "antd";
|
|
5
|
+
import { useWork as h } from "../context/agentWork/useWork.mjs";
|
|
6
|
+
import "../context/agentWork/base.mjs";
|
|
7
|
+
import "@shuttle-ai/client";
|
|
8
|
+
import "../context/agent/base.mjs";
|
|
9
|
+
import "../context/tool/base.mjs";
|
|
10
|
+
import k from "../hooks/useRootAgent.mjs";
|
|
11
|
+
import A from "./agent/index.mjs";
|
|
12
|
+
import b from "./action/index.mjs";
|
|
13
|
+
function y({ className: s, style: i, empty: u }) {
|
|
14
|
+
const l = h(), o = k(l), n = c(!0), r = c(null);
|
|
15
|
+
p(() => {
|
|
16
|
+
if (!r.current) return;
|
|
17
|
+
const t = new MutationObserver(() => {
|
|
18
|
+
!n.current || !r.current || r.current.scrollTo({ top: r.current.scrollHeight });
|
|
19
|
+
});
|
|
20
|
+
return t.observe(r.current, {
|
|
21
|
+
childList: !0,
|
|
22
|
+
subtree: !0,
|
|
23
|
+
characterData: !0
|
|
24
|
+
}), () => t.disconnect();
|
|
25
|
+
}, []);
|
|
26
|
+
const m = f((t) => {
|
|
27
|
+
!r.current || !t.isTrusted || (n.current = Math.abs(
|
|
28
|
+
r.current.scrollHeight - r.current.scrollTop - r.current.clientHeight
|
|
29
|
+
) < 8);
|
|
30
|
+
}, []);
|
|
31
|
+
return /* @__PURE__ */ a("div", { className: g("agent-work", s), style: i, children: [
|
|
32
|
+
/* @__PURE__ */ e("div", { className: "agent-work-main", ref: r, onScroll: m, children: o ? /* @__PURE__ */ e(A, { agent: o }) : u || /* @__PURE__ */ e(d, { description: "暂无聊天" }) }),
|
|
33
|
+
/* @__PURE__ */ e(b, {})
|
|
34
|
+
] });
|
|
35
|
+
}
|
|
36
|
+
export {
|
|
37
|
+
y as default
|
|
38
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo as i } from "react";
|
|
3
|
+
import { agentContext as m } from "./base.mjs";
|
|
4
|
+
function p({ children: o, agent: r }) {
|
|
5
|
+
const e = i(() => ({ agent: r }), [r]);
|
|
6
|
+
return /* @__PURE__ */ t(m.Provider, { value: e, children: o });
|
|
7
|
+
}
|
|
8
|
+
export {
|
|
9
|
+
p as default
|
|
10
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
2
|
+
import { useRef as u, useMemo as f } from "react";
|
|
3
|
+
import { AgentWork as m } from "@shuttle-ai/client";
|
|
4
|
+
import { agentWorkContext as k } from "./base.mjs";
|
|
5
|
+
function v({
|
|
6
|
+
children: r,
|
|
7
|
+
context: o,
|
|
8
|
+
...e
|
|
9
|
+
}) {
|
|
10
|
+
const t = u(a(e)), n = f(
|
|
11
|
+
() => ({ work: t.current, context: o }),
|
|
12
|
+
[o]
|
|
13
|
+
);
|
|
14
|
+
return /* @__PURE__ */ i(k.Provider, { value: n, children: r });
|
|
15
|
+
}
|
|
16
|
+
function a(r) {
|
|
17
|
+
return "work" in r ? r.work : new m(r);
|
|
18
|
+
}
|
|
19
|
+
export {
|
|
20
|
+
v as default
|
|
21
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback as P, useMemo as u } from "react";
|
|
3
|
+
import { toolContext as a } from "./base.mjs";
|
|
4
|
+
function x({
|
|
5
|
+
args: r,
|
|
6
|
+
content: e,
|
|
7
|
+
toolId: f,
|
|
8
|
+
confirmResult: l,
|
|
9
|
+
agent: i,
|
|
10
|
+
run: o
|
|
11
|
+
}) {
|
|
12
|
+
const p = P(
|
|
13
|
+
(s) => i.confirmTool(f, s),
|
|
14
|
+
[i, f]
|
|
15
|
+
), d = u(
|
|
16
|
+
() => ({
|
|
17
|
+
args: r,
|
|
18
|
+
agent: i,
|
|
19
|
+
toolId: f,
|
|
20
|
+
content: e,
|
|
21
|
+
confirmResult: l,
|
|
22
|
+
confirm: p
|
|
23
|
+
}),
|
|
24
|
+
[r, i, f, e, l, p]
|
|
25
|
+
), m = u(() => o.defaultProps ? typeof o.defaultProps == "function" ? o.defaultProps({
|
|
26
|
+
args: r,
|
|
27
|
+
content: e
|
|
28
|
+
}) : o.defaultProps : {}, [o.defaultProps, r, e]);
|
|
29
|
+
return /* @__PURE__ */ t(a.Provider, { value: d, children: /* @__PURE__ */ t(o.Render, { ...m }) });
|
|
30
|
+
}
|
|
31
|
+
export {
|
|
32
|
+
x as default
|
|
33
|
+
};
|