@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.
Files changed (96) hide show
  1. package/README.md +5 -0
  2. package/dist/cjs/agentWork/action/index.cjs +1 -0
  3. package/dist/cjs/agentWork/agent/aiMessage/index.cjs +1 -0
  4. package/dist/cjs/agentWork/agent/index.cjs +1 -0
  5. package/dist/cjs/agentWork/agent/toolRender/confirm.cjs +1 -0
  6. package/dist/cjs/agentWork/agent/toolRender/index.cjs +1 -0
  7. package/dist/cjs/agentWork/agent/userMessage/index.cjs +1 -0
  8. package/dist/cjs/agentWork/render.cjs +1 -0
  9. package/dist/cjs/context/agent/base.cjs +1 -0
  10. package/dist/cjs/context/agent/provider.cjs +1 -0
  11. package/dist/cjs/context/agent/useAgent.cjs +1 -0
  12. package/dist/cjs/context/agentWork/base.cjs +1 -0
  13. package/dist/cjs/context/agentWork/provider.cjs +1 -0
  14. package/dist/cjs/context/agentWork/useWork.cjs +1 -0
  15. package/dist/cjs/context/agentWork/useWorkContext.cjs +1 -0
  16. package/dist/cjs/context/tool/base.cjs +1 -0
  17. package/dist/cjs/context/tool/provider.cjs +1 -0
  18. package/dist/cjs/context/tool/useTool.cjs +1 -0
  19. package/dist/cjs/hooks/useAgentMessages.cjs +1 -0
  20. package/dist/cjs/hooks/useAgentStatus.cjs +1 -0
  21. package/dist/cjs/hooks/useAiMessage.cjs +1 -0
  22. package/dist/cjs/hooks/useRootAgent.cjs +1 -0
  23. package/dist/cjs/hooks/useToolMessage.cjs +1 -0
  24. package/dist/cjs/hooks/useWorkAutoRunScope.cjs +1 -0
  25. package/dist/cjs/hooks/useWorkStatus.cjs +1 -0
  26. package/dist/cjs/index.cjs +1 -0
  27. package/dist/cjs/index.css +1 -0
  28. package/dist/cjs/markdownRender/index.cjs +1 -0
  29. package/dist/cjs/tools/writeTodos/index.cjs +1 -0
  30. package/dist/cjs/tools/writeTodos/render.cjs +1 -0
  31. package/dist/es/agentWork/action/index.mjs +80 -0
  32. package/dist/es/agentWork/agent/aiMessage/index.mjs +25 -0
  33. package/dist/es/agentWork/agent/index.mjs +45 -0
  34. package/dist/es/agentWork/agent/toolRender/confirm.mjs +96 -0
  35. package/dist/es/agentWork/agent/toolRender/index.mjs +49 -0
  36. package/dist/es/agentWork/agent/userMessage/index.mjs +24 -0
  37. package/dist/es/agentWork/render.mjs +38 -0
  38. package/dist/es/context/agent/base.mjs +7 -0
  39. package/dist/es/context/agent/provider.mjs +10 -0
  40. package/dist/es/context/agent/useAgent.mjs +8 -0
  41. package/dist/es/context/agentWork/base.mjs +8 -0
  42. package/dist/es/context/agentWork/provider.mjs +21 -0
  43. package/dist/es/context/agentWork/useWork.mjs +8 -0
  44. package/dist/es/context/agentWork/useWorkContext.mjs +8 -0
  45. package/dist/es/context/tool/base.mjs +9 -0
  46. package/dist/es/context/tool/provider.mjs +33 -0
  47. package/dist/es/context/tool/useTool.mjs +8 -0
  48. package/dist/es/hooks/useAgentMessages.mjs +10 -0
  49. package/dist/es/hooks/useAgentStatus.mjs +10 -0
  50. package/dist/es/hooks/useAiMessage.mjs +13 -0
  51. package/dist/es/hooks/useRootAgent.mjs +10 -0
  52. package/dist/es/hooks/useToolMessage.mjs +13 -0
  53. package/dist/es/hooks/useWorkAutoRunScope.mjs +10 -0
  54. package/dist/es/hooks/useWorkStatus.mjs +10 -0
  55. package/dist/es/index.css +1 -0
  56. package/dist/es/index.mjs +50 -0
  57. package/dist/es/markdownRender/index.mjs +13 -0
  58. package/dist/es/tools/writeTodos/index.mjs +16 -0
  59. package/dist/es/tools/writeTodos/render.mjs +37 -0
  60. package/dist/types/agentWork/action/index.d.ts +1 -0
  61. package/dist/types/agentWork/agent/aiMessage/index.d.ts +5 -0
  62. package/dist/types/agentWork/agent/index.d.ts +7 -0
  63. package/dist/types/agentWork/agent/toolRender/confirm.d.ts +12 -0
  64. package/dist/types/agentWork/agent/toolRender/index.d.ts +6 -0
  65. package/dist/types/agentWork/agent/userMessage/index.d.ts +8 -0
  66. package/dist/types/agentWork/index.d.ts +7 -0
  67. package/dist/types/agentWork/render.d.ts +7 -0
  68. package/dist/types/context/agent/base.d.ts +4 -0
  69. package/dist/types/context/agent/index.d.ts +2 -0
  70. package/dist/types/context/agent/provider.d.ts +7 -0
  71. package/dist/types/context/agent/useAgent.d.ts +1 -0
  72. package/dist/types/context/agentWork/base.d.ts +6 -0
  73. package/dist/types/context/agentWork/index.d.ts +3 -0
  74. package/dist/types/context/agentWork/provider.d.ts +14 -0
  75. package/dist/types/context/agentWork/useWork.d.ts +1 -0
  76. package/dist/types/context/agentWork/useWorkContext.d.ts +1 -0
  77. package/dist/types/context/index.d.ts +3 -0
  78. package/dist/types/context/tool/base.d.ts +11 -0
  79. package/dist/types/context/tool/index.d.ts +2 -0
  80. package/dist/types/context/tool/provider.d.ts +12 -0
  81. package/dist/types/context/tool/useTool.d.ts +2 -0
  82. package/dist/types/hooks/index.d.ts +7 -0
  83. package/dist/types/hooks/useAgentMessages.d.ts +2 -0
  84. package/dist/types/hooks/useAgentStatus.d.ts +2 -0
  85. package/dist/types/hooks/useAiMessage.d.ts +3 -0
  86. package/dist/types/hooks/useRootAgent.d.ts +2 -0
  87. package/dist/types/hooks/useToolMessage.d.ts +3 -0
  88. package/dist/types/hooks/useWorkAutoRunScope.d.ts +2 -0
  89. package/dist/types/hooks/useWorkStatus.d.ts +2 -0
  90. package/dist/types/index.d.ts +5 -0
  91. package/dist/types/markdownRender/index.d.ts +5 -0
  92. package/dist/types/tools/index.d.ts +1 -0
  93. package/dist/types/tools/writeTodos/index.d.ts +3 -0
  94. package/dist/types/tools/writeTodos/render.d.ts +5 -0
  95. package/dist/types/type.d.ts +19 -0
  96. package/package.json +54 -0
package/README.md ADDED
@@ -0,0 +1,5 @@
1
+ ## `@shuttle-ai/render-react`
2
+
3
+ #### 说明
4
+
5
+ 该部分是shuttle-ai的智能体react渲染库
@@ -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,7 @@
1
+ import { createContext as t } from "react";
2
+ const n = t({
3
+ agent: null
4
+ });
5
+ export {
6
+ n as agentContext
7
+ };
@@ -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,8 @@
1
+ import { useContext as t } from "react";
2
+ import { agentContext as e } from "./base.mjs";
3
+ function r() {
4
+ return t(e).agent;
5
+ }
6
+ export {
7
+ r as useAgent
8
+ };
@@ -0,0 +1,8 @@
1
+ import { createContext as t } from "react";
2
+ const e = t({
3
+ work: null,
4
+ context: {}
5
+ });
6
+ export {
7
+ e as agentWorkContext
8
+ };
@@ -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,8 @@
1
+ import { useContext as o } from "react";
2
+ import { agentWorkContext as r } from "./base.mjs";
3
+ function n() {
4
+ return o(r).work;
5
+ }
6
+ export {
7
+ n as useWork
8
+ };
@@ -0,0 +1,8 @@
1
+ import { useContext as t } from "react";
2
+ import { agentWorkContext as o } from "./base.mjs";
3
+ function n() {
4
+ return t(o).context;
5
+ }
6
+ export {
7
+ n as useWorkContext
8
+ };
@@ -0,0 +1,9 @@
1
+ import { createContext as t } from "react";
2
+ const e = t({
3
+ args: {},
4
+ agent: {},
5
+ toolId: ""
6
+ });
7
+ export {
8
+ e as toolContext
9
+ };
@@ -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
+ };