@shuttle-ai/render-react 0.0.4 → 0.0.6

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.
@@ -1 +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;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("react/jsx-runtime"),a=require("react"),s=require("antd"),v=require("@ant-design/icons");function x({toolId:u,result:t,agent:d,getConfirmResult:i,getNewArgs:h,onAfterConfirm:f}){const[r,p]=a.useState(t?.type==="reject"?"reject":"accept"),[c,j]=a.useState(t?.reason||""),[m,y]=a.useState(!1);a.useEffect(()=>{t?.type&&p(t.type==="reject"?"reject":"accept")},[t?.type]),a.useEffect(()=>{t?.reason&&j(t.reason)},[t?.reason]);const o=a.useCallback(async()=>{if(r==="reject"&&!c){s.message.warning("请输入拒绝原因");return}y(!0);try{const e=r==="accept"?{type:"confirm",newArgs:await h?.()}:{type:"reject",reason:c};if(e.type==="confirm"&&i){const l=await i();l&&(e.result=l.result,e.newArgs=l.newArgs,e.type="confirmWithResult")}await d.confirmTool(u,e),f?.()}catch(e){throw e}finally{y(!1)}},[r,c,u,d,i,f]),g=a.useCallback(e=>{e.shiftKey||(e.preventDefault(),o())},[o]);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:r,disabled:!!t,onChange:e=>p(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:r==="reject",loading:m,onClick:o,icon:n.jsx(v.SendOutlined,{}),children:"提交"})]}),r==="reject"&&n.jsx(s.Input.TextArea,{disabled:!!t,placeholder:"请输入拒绝原因",value:c,onChange:e=>j(e.target.value),rows:3,onPressEnter:g})]})}exports.default=x;
@@ -1 +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;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("react/jsx-runtime"),u=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 l=require("../../../context/tool/provider.cjs"),d=require("./confirm.cjs");;/* empty css */function f({toolCall:e}){const n=a.useAgent(),s=c.default(n,e.id),t=u.useMemo(()=>n.options.tools?.find(o=>o.name===e.name),[n,e.name]);return s?r.jsx("div",{className:"agent-work-agent-tool",children:t?.run.type!=="render"?r.jsxs("div",{className:"agent-work-agent-fn-tool",children:[r.jsx("p",{className:"fn-tool-name",children:t?.label||e.name}),r.jsx("pre",{className:"fn-tool-args",children:i(e.args)}),r.jsx("pre",{className:"fn-tool-result",children:i(s.content||s.confirm?.result)}),r.jsx(d.default,{result:s.confirm,toolId:e.id,agent:n})]}):r.jsxs("div",{className:"agent-work-agent-render-tool",children:[r.jsx("p",{className:"render-tool-name",children:t?.label||e.name}),r.jsx(l.default,{toolId:e.id,agent:n,args:e.args,content:s.content,confirmResult:s.confirm,run:t.run})]})}):null}function i(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=f;
@@ -1 +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}}
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 .agent-work-agent-render-tool{display:flex;flex-direction:column;gap:8px}.agent-work-agent-tool .agent-work-agent-render-tool .render-tool-name{margin:0;font-weight:700}.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}}
@@ -1,32 +1,33 @@
1
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({
2
+ import { useState as l, useEffect as j, useCallback as g } from "react";
3
+ import { message as x, Radio as p, Button as T, Input as A } from "antd";
4
+ import { SendOutlined as E } from "@ant-design/icons";
5
+ function z({
6
6
  toolId: f,
7
7
  result: t,
8
8
  agent: d,
9
9
  getConfirmResult: o,
10
- getNewArgs: g
10
+ getNewArgs: v,
11
+ onAfterConfirm: m
11
12
  }) {
12
- const [n, m] = l(
13
+ const [n, u] = l(
13
14
  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);
15
+ ), [a, y] = l(t?.reason || ""), [w, h] = l(!1);
16
+ j(() => {
17
+ t?.type && u(t.type === "reject" ? "reject" : "accept");
18
+ }, [t?.type]), j(() => {
19
+ t?.reason && y(t.reason);
19
20
  }, [t?.reason]);
20
- const c = j(async () => {
21
+ const c = g(async () => {
21
22
  if (n === "reject" && !a) {
22
- b.warning("请输入拒绝原因");
23
+ x.warning("请输入拒绝原因");
23
24
  return;
24
25
  }
25
- y(!0);
26
+ h(!0);
26
27
  try {
27
28
  const e = n === "accept" ? {
28
29
  type: "confirm",
29
- newArgs: await g?.()
30
+ newArgs: await v?.()
30
31
  } : {
31
32
  type: "reject",
32
33
  reason: a
@@ -35,13 +36,13 @@ function S({
35
36
  const i = await o();
36
37
  i && (e.result = i.result, e.newArgs = i.newArgs, e.type = "confirmWithResult");
37
38
  }
38
- await d.confirmTool(f, e);
39
+ await d.confirmTool(f, e), m?.();
39
40
  } catch (e) {
40
41
  throw e;
41
42
  } finally {
42
- y(!1);
43
+ h(!1);
43
44
  }
44
- }, [n, a, f, d, o]), w = j(
45
+ }, [n, a, f, d, o, m]), b = g(
45
46
  (e) => {
46
47
  e.shiftKey || (e.preventDefault(), c());
47
48
  },
@@ -57,7 +58,7 @@ function S({
57
58
  optionType: "button",
58
59
  value: n,
59
60
  disabled: !!t,
60
- onChange: (e) => m(e.target.value),
61
+ onChange: (e) => u(e.target.value),
61
62
  children: [
62
63
  /* @__PURE__ */ r(p, { value: "accept", children: "接受" }),
63
64
  /* @__PURE__ */ r(p, { value: "reject", children: "拒绝" })
@@ -65,15 +66,15 @@ function S({
65
66
  }
66
67
  ),
67
68
  /* @__PURE__ */ r(
68
- x,
69
+ T,
69
70
  {
70
71
  disabled: !!t,
71
72
  size: "small",
72
73
  type: "primary",
73
74
  danger: n === "reject",
74
- loading: v,
75
+ loading: w,
75
76
  onClick: c,
76
- icon: /* @__PURE__ */ r(T, {}),
77
+ icon: /* @__PURE__ */ r(E, {}),
77
78
  children: "提交"
78
79
  }
79
80
  )
@@ -84,13 +85,13 @@ function S({
84
85
  disabled: !!t,
85
86
  placeholder: "请输入拒绝原因",
86
87
  value: a,
87
- onChange: (e) => u(e.target.value),
88
+ onChange: (e) => y(e.target.value),
88
89
  rows: 3,
89
- onPressEnter: w
90
+ onPressEnter: b
90
91
  }
91
92
  )
92
93
  ] });
93
94
  }
94
95
  export {
95
- S as default
96
+ z as default
96
97
  };
@@ -1,39 +1,42 @@
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";
1
+ import { jsx as e, jsxs as s } from "react/jsx-runtime";
2
+ import { useMemo as c } from "react";
3
+ import a from "../../../hooks/useToolMessage.mjs";
4
4
  import "../../../context/agentWork/base.mjs";
5
5
  import "@shuttle-ai/client";
6
- import { useAgent as u } from "../../../context/agent/useAgent.mjs";
6
+ import { useAgent as f } from "../../../context/agent/useAgent.mjs";
7
7
  import "../../../context/agent/base.mjs";
8
8
  import "../../../context/tool/base.mjs";
9
- import p from "../../../context/tool/provider.mjs";
10
- import a from "./confirm.mjs";
9
+ import u from "../../../context/tool/provider.mjs";
10
+ import d from "./confirm.mjs";
11
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,
12
+ function w({ toolCall: r }) {
13
+ const n = f(), o = a(n, r.id), t = c(() => n.options.tools?.find((m) => m.name === r.name), [n, r.name]);
14
+ return o ? /* @__PURE__ */ e("div", { className: "agent-work-agent-tool", children: t?.run.type !== "render" ? /* @__PURE__ */ s("div", { className: "agent-work-agent-fn-tool", children: [
15
+ /* @__PURE__ */ e("p", { className: "fn-tool-name", children: t?.label || r.name }),
16
+ /* @__PURE__ */ e("pre", { className: "fn-tool-args", children: i(r.args) }),
17
+ /* @__PURE__ */ e("pre", { className: "fn-tool-result", children: i(o.content || o.confirm?.result) }),
18
+ /* @__PURE__ */ e(
19
+ d,
20
20
  {
21
- result: n.confirm,
21
+ result: o.confirm,
22
22
  toolId: r.id,
23
- agent: e
23
+ agent: n
24
24
  }
25
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;
26
+ ] }) : /* @__PURE__ */ s("div", { className: "agent-work-agent-render-tool", children: [
27
+ /* @__PURE__ */ e("p", { className: "render-tool-name", children: t?.label || r.name }),
28
+ /* @__PURE__ */ e(
29
+ u,
30
+ {
31
+ toolId: r.id,
32
+ agent: n,
33
+ args: r.args,
34
+ content: o.content,
35
+ confirmResult: o.confirm,
36
+ run: t.run
37
+ }
38
+ )
39
+ ] }) }) : null;
37
40
  }
38
41
  function i(r) {
39
42
  if (typeof r == "object")
@@ -45,5 +48,5 @@ function i(r) {
45
48
  }
46
49
  }
47
50
  export {
48
- R as default
51
+ w as default
49
52
  };
package/dist/es/index.css CHANGED
@@ -1 +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}}
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 .agent-work-agent-render-tool{display:flex;flex-direction:column;gap:8px}.agent-work-agent-tool .agent-work-agent-render-tool .render-tool-name{margin:0;font-weight:700}.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}}
@@ -7,6 +7,7 @@ interface Props {
7
7
  agent: Agent;
8
8
  getConfirmResult?: () => WithPromise<Pick<ShuttleAi.Tool.ConfirmResult, 'result' | 'newArgs'>>;
9
9
  getNewArgs?: () => WithPromise<ShuttleAi.Tool.ConfirmResult['newArgs']>;
10
+ onAfterConfirm?: () => void;
10
11
  }
11
- export default function ConfirmRender({ toolId, result, agent, getConfirmResult, getNewArgs, }: Props): import("react/jsx-runtime").JSX.Element;
12
+ export default function ConfirmRender({ toolId, result, agent, getConfirmResult, getNewArgs, onAfterConfirm, }: Props): import("react/jsx-runtime").JSX.Element;
12
13
  export {};
@@ -5,7 +5,7 @@ export interface ToolContext<T extends Record<string, any> = Record<string, any>
5
5
  agent: Agent;
6
6
  toolId: string;
7
7
  content?: string;
8
- confirmResult?: ShuttleAi.Tool.ConfirmResult;
9
- confirm?: (result: ShuttleAi.Tool.ConfirmResult) => Promise<void>;
8
+ confirmResult?: ShuttleAi.Tool.ConfirmResult<T>;
9
+ confirm?: (result: ShuttleAi.Tool.ConfirmResult<T>) => Promise<void>;
10
10
  }
11
11
  export declare const toolContext: import('react').Context<ToolContext<Record<string, any>>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shuttle-ai/render-react",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "author": "Mingbing-get <1508850533@qq.com>",
5
5
  "license": "MIT",
6
6
  "description": "Shuttle AI web端智能体react渲染库",
@@ -35,8 +35,8 @@
35
35
  "remark-breaks": "^4.0.0",
36
36
  "remark-frontmatter": "^5.0.0",
37
37
  "remark-gfm": "^4.0.1",
38
- "@shuttle-ai/client": "0.0.4",
39
- "@shuttle-ai/type": "0.0.4"
38
+ "@shuttle-ai/client": "0.0.6",
39
+ "@shuttle-ai/type": "0.0.6"
40
40
  },
41
41
  "devDependencies": {
42
42
  "typescript": "^5.3.3",