@next-bricks/ai-portal 0.65.2 → 0.65.4

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 (67) hide show
  1. package/dist/bricks.json +48 -49
  2. package/dist/chunks/1999.f9846bc3.js +2 -0
  3. package/dist/chunks/1999.f9846bc3.js.map +1 -0
  4. package/dist/chunks/{2742.f24782f8.js → 2742.64fa013f.js} +2 -2
  5. package/dist/chunks/{2742.f24782f8.js.map → 2742.64fa013f.js.map} +1 -1
  6. package/dist/chunks/3186.f231329a.js +2 -0
  7. package/dist/chunks/3186.f231329a.js.map +1 -0
  8. package/dist/chunks/4208.a1a0dfdd.js +2 -0
  9. package/dist/chunks/4208.a1a0dfdd.js.map +1 -0
  10. package/dist/chunks/4864.a9badd21.js +2 -0
  11. package/dist/chunks/4864.a9badd21.js.map +1 -0
  12. package/dist/chunks/5452.bb5140b0.js +2 -0
  13. package/dist/chunks/5452.bb5140b0.js.map +1 -0
  14. package/dist/chunks/{6450.ade6ef3e.js → 6450.9e9165f9.js} +2 -2
  15. package/dist/chunks/{6450.ade6ef3e.js.map → 6450.9e9165f9.js.map} +1 -1
  16. package/dist/chunks/{9515.468a8527.js → 9515.b58eb80e.js} +2 -2
  17. package/dist/chunks/9515.b58eb80e.js.map +1 -0
  18. package/dist/chunks/{9525.9e5140be.js → 9525.a53ee2a7.js} +3 -3
  19. package/dist/chunks/{9525.9e5140be.js.map → 9525.a53ee2a7.js.map} +1 -1
  20. package/dist/chunks/chat-panel.3b7afbd5.js +2 -0
  21. package/dist/chunks/chat-panel.3b7afbd5.js.map +1 -0
  22. package/dist/chunks/{chat-stream.90aa7647.js → chat-stream.393c8241.js} +2 -2
  23. package/dist/chunks/{chat-stream.90aa7647.js.map → chat-stream.393c8241.js.map} +1 -1
  24. package/dist/chunks/{main.51248f49.js → main.ccf4635e.js} +2 -2
  25. package/dist/chunks/{main.51248f49.js.map → main.ccf4635e.js.map} +1 -1
  26. package/dist/chunks/running-flow.37a428cf.js +3 -0
  27. package/dist/chunks/running-flow.37a428cf.js.map +1 -0
  28. package/dist/examples.json +18 -18
  29. package/dist/{index.16143768.js → index.b10ed910.js} +2 -2
  30. package/dist/{index.16143768.js.map → index.b10ed910.js.map} +1 -1
  31. package/dist/manifest.json +239 -243
  32. package/dist/types.json +1406 -1431
  33. package/dist-types/chat-stream/Aside/TaskApp/TaskApp.d.ts +6 -0
  34. package/dist-types/chat-stream/StreamContext.d.ts +1 -0
  35. package/dist-types/chat-stream/interfaces.d.ts +6 -1
  36. package/dist-types/chat-stream/useConversationStream.d.ts +10 -2
  37. package/dist-types/running-flow/index.d.ts +2 -4
  38. package/dist-types/shared/ActivityPlan/PlanStateIcon.d.ts +7 -0
  39. package/dist-types/shared/ActivityPlan/i18n.d.ts +2 -1
  40. package/dist-types/shared/AskUser/AskUser.d.ts +8 -0
  41. package/dist-types/shared/AskUser/i18n.d.ts +15 -0
  42. package/dist-types/shared/AskUserTag/AskUserTag.d.ts +7 -0
  43. package/dist-types/shared/ChatBox/ChatBox.d.ts +3 -1
  44. package/dist-types/shared/TaskContext.d.ts +2 -0
  45. package/dist-types/shared/bricks.d.ts +0 -2
  46. package/dist-types/shared/getFlatChunks.d.ts +19 -2
  47. package/dist-types/shared/interfaces.d.ts +7 -2
  48. package/dist-types/shared/useFulfilledActiveDetail.d.ts +2 -2
  49. package/package.json +2 -2
  50. package/dist/chunks/3186.5c0ff6ad.js +0 -2
  51. package/dist/chunks/3186.5c0ff6ad.js.map +0 -1
  52. package/dist/chunks/4208.7ad3b395.js +0 -2
  53. package/dist/chunks/4208.7ad3b395.js.map +0 -1
  54. package/dist/chunks/5452.a5594a29.js +0 -2
  55. package/dist/chunks/5452.a5594a29.js.map +0 -1
  56. package/dist/chunks/7139.b585e5ea.js +0 -2
  57. package/dist/chunks/7139.b585e5ea.js.map +0 -1
  58. package/dist/chunks/7159.bd59ed3e.js +0 -2
  59. package/dist/chunks/7159.bd59ed3e.js.map +0 -1
  60. package/dist/chunks/9515.468a8527.js.map +0 -1
  61. package/dist/chunks/chat-panel.bbb24c5a.js +0 -2
  62. package/dist/chunks/chat-panel.bbb24c5a.js.map +0 -1
  63. package/dist/chunks/running-flow.4b117f11.js +0 -3
  64. package/dist/chunks/running-flow.4b117f11.js.map +0 -1
  65. package/dist-types/shared/ActivityPlan/getStateIcon.d.ts +0 -6
  66. /package/dist/chunks/{9525.9e5140be.js.LICENSE.txt → 9525.a53ee2a7.js.LICENSE.txt} +0 -0
  67. /package/dist/chunks/{running-flow.4b117f11.js.LICENSE.txt → running-flow.37a428cf.js.LICENSE.txt} +0 -0
package/dist/bricks.json CHANGED
@@ -2,36 +2,36 @@
2
2
  "id": "bricks/ai-portal",
3
3
  "bricks": [
4
4
  "ai-portal.chat-box",
5
+ "ai-portal.cruise-canvas",
5
6
  "ai-portal.stat-with-mini-chart",
6
7
  "ai-portal.home-container",
8
+ "ai-portal.elevo-sidebar",
7
9
  "ai-portal.icon-button",
8
- "ai-portal.cruise-canvas",
9
10
  "ai-portal.show-cases",
10
- "ai-portal.elevo-sidebar",
11
11
  "ai-portal.mcp-tools",
12
- "ai-portal.ai-employees",
13
- "ai-portal.ai-agents",
14
12
  "ai-portal.chat-stream",
15
- "ai-portal.call-tool",
13
+ "ai-portal.ai-agents",
14
+ "ai-portal.ai-employees",
15
+ "ai-portal.page-container",
16
+ "ai-portal.tab-list",
16
17
  "ai-portal.save-request-store",
17
18
  "ai-portal.load-request-store",
18
19
  "ai-portal.clear-request-store",
20
+ "ai-portal.call-tool",
19
21
  "ai-portal.set-chat-command",
20
- "ai-portal.page-container",
21
- "ai-portal.tab-list",
22
22
  "ai-portal.dropdown-select",
23
- "ai-portal.goal-card-list",
24
23
  "ai-portal.preview-container",
24
+ "ai-portal.action-buttons",
25
+ "ai-portal.goal-card-list",
25
26
  "ai-portal.project-conversations",
26
- "ai-portal.activity-timeline",
27
27
  "ai-portal.project-knowledges",
28
- "ai-portal.action-buttons",
28
+ "ai-portal.activity-timeline",
29
29
  "ai-portal.chat-input",
30
30
  "ai-portal.elevo-logo",
31
31
  "ai-portal.show-case",
32
32
  "ai-portal.blank-state",
33
- "ai-portal.elevo-card",
34
33
  "ai-portal.sticky-container",
34
+ "ai-portal.elevo-card",
35
35
  "ai-portal.flow-tabs",
36
36
  "ai-portal.stage-flow",
37
37
  "ai-portal.running-flow",
@@ -48,13 +48,6 @@
48
48
  "eo-actions",
49
49
  "ai-portal.icon-button"
50
50
  ],
51
- "ai-portal.stat-with-mini-chart": [
52
- "eo-mini-line-chart"
53
- ],
54
- "ai-portal.icon-button": [
55
- "eo-icon",
56
- "eo-tooltip"
57
- ],
58
51
  "ai-portal.cruise-canvas": [
59
52
  "eo-icon",
60
53
  "eo-button",
@@ -65,17 +58,16 @@
65
58
  "ai-portal.chat-input",
66
59
  "ai-portal.show-case",
67
60
  "eo-code-block",
68
- "ai-portal.blank-state",
69
61
  "ai-portal.running-flow",
70
62
  "basic.show-dialog",
71
63
  "basic.copy-to-clipboard",
72
64
  "eo-easyops-avatar",
73
65
  "presentational.code-wrapper",
74
- "eo-avatar"
66
+ "eo-avatar",
67
+ "eo-actions"
75
68
  ],
76
- "ai-portal.show-cases": [
77
- "ai-portal.show-case",
78
- "ai-portal.tab-list"
69
+ "ai-portal.stat-with-mini-chart": [
70
+ "eo-mini-line-chart"
79
71
  ],
80
72
  "ai-portal.elevo-sidebar": [
81
73
  "ai-portal.elevo-logo",
@@ -86,21 +78,19 @@
86
78
  "eo-mini-actions",
87
79
  "ai-portal.icon-button"
88
80
  ],
89
- "ai-portal.mcp-tools": [
81
+ "ai-portal.icon-button": [
90
82
  "eo-icon",
91
- "ai-portal.tab-list",
92
- "ai-portal.sticky-container"
83
+ "eo-tooltip"
93
84
  ],
94
- "ai-portal.ai-employees": [
95
- "eo-link",
85
+ "ai-portal.show-cases": [
86
+ "ai-portal.show-case",
87
+ "ai-portal.tab-list"
88
+ ],
89
+ "ai-portal.mcp-tools": [
96
90
  "eo-icon",
97
91
  "ai-portal.tab-list",
98
92
  "ai-portal.sticky-container"
99
93
  ],
100
- "ai-portal.ai-agents": [
101
- "eo-icon",
102
- "eo-link"
103
- ],
104
94
  "ai-portal.chat-stream": [
105
95
  "eo-icon",
106
96
  "eo-button",
@@ -111,11 +101,21 @@
111
101
  "ai-portal.chat-input",
112
102
  "ai-portal.show-case",
113
103
  "eo-code-block",
114
- "ai-portal.blank-state",
115
104
  "ai-portal.running-flow",
116
105
  "basic.show-dialog",
117
106
  "basic.copy-to-clipboard",
118
- "presentational.code-wrapper"
107
+ "presentational.code-wrapper",
108
+ "eo-actions"
109
+ ],
110
+ "ai-portal.ai-agents": [
111
+ "eo-icon",
112
+ "eo-link"
113
+ ],
114
+ "ai-portal.ai-employees": [
115
+ "eo-link",
116
+ "eo-icon",
117
+ "ai-portal.tab-list",
118
+ "ai-portal.sticky-container"
119
119
  ],
120
120
  "ai-portal.page-container": [
121
121
  "eo-link",
@@ -129,28 +129,27 @@
129
129
  "eo-menu-item",
130
130
  "eo-input"
131
131
  ],
132
- "ai-portal.goal-card-list": [
133
- "eo-icon",
134
- "eo-dropdown-actions",
135
- "eo-easyops-avatar",
136
- "eo-button"
137
- ],
138
132
  "ai-portal.preview-container": [
139
133
  "eo-icon",
140
134
  "eo-page-title",
141
135
  "eo-main-view",
142
136
  "eo-narrow-view"
143
137
  ],
144
- "ai-portal.project-conversations": [
145
- "eo-link",
138
+ "ai-portal.action-buttons": [
146
139
  "eo-icon",
140
+ "eo-button"
141
+ ],
142
+ "ai-portal.goal-card-list": [
143
+ "eo-icon",
144
+ "eo-dropdown-actions",
147
145
  "eo-easyops-avatar",
148
- "eo-mini-actions"
146
+ "eo-button"
149
147
  ],
150
- "ai-portal.activity-timeline": [
148
+ "ai-portal.project-conversations": [
151
149
  "eo-link",
152
150
  "eo-icon",
153
- "eo-easyops-avatar"
151
+ "eo-easyops-avatar",
152
+ "eo-mini-actions"
154
153
  ],
155
154
  "ai-portal.project-knowledges": [
156
155
  "eo-link",
@@ -158,9 +157,10 @@
158
157
  "eo-easyops-avatar",
159
158
  "eo-mini-actions"
160
159
  ],
161
- "ai-portal.action-buttons": [
160
+ "ai-portal.activity-timeline": [
161
+ "eo-link",
162
162
  "eo-icon",
163
- "eo-button"
163
+ "eo-easyops-avatar"
164
164
  ],
165
165
  "ai-portal.chat-input": [
166
166
  "eo-icon",
@@ -214,12 +214,11 @@
214
214
  "ai-portal.chat-input",
215
215
  "ai-portal.show-case",
216
216
  "eo-code-block",
217
- "ai-portal.blank-state",
218
217
  "ai-portal.running-flow",
219
218
  "basic.show-dialog",
220
219
  "basic.copy-to-clipboard",
221
220
  "presentational.code-wrapper"
222
221
  ]
223
222
  },
224
- "filePath": "bricks/ai-portal/dist/index.16143768.js"
223
+ "filePath": "bricks/ai-portal/dist/index.b10ed910.js"
225
224
  }
@@ -0,0 +1,2 @@
1
+ "use strict";(globalThis.webpackChunk_next_bricks_ai_portal=globalThis.webpackChunk_next_bricks_ai_portal||[]).push([[1999],{625:(e,t,a)=>{function n(e){switch(e){case"input-required":return{lib:"antd",theme:"filled",icon:"pause-circle"};case"completed":return{lib:"antd",theme:"filled",icon:"check-circle"};case"failed":return{lib:"antd",theme:"filled",icon:"close-circle"};case"terminated":return{lib:"antd",theme:"filled",icon:"stop"};case"working":return{lib:"antd",icon:"loading-3-quarters",spinning:!0};default:return{lib:"antd",theme:"filled",icon:"clock-circle"}}}a.d(t,{W:()=>n})},39590:(e,t,a)=>{a.d(t,{A:()=>o});var n=a(36758),i=a.n(n),s=a(40935),l=a.n(s)()(i());l.push([e.id,".container--sUPsOvDf{background:rgba(184,187,205,0.2);border-radius:12px;border:1px solid rgba(255,255,255,0.3);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:16px 26px}.container--sUPsOvDf:not(:first-child){margin-top:40px}.input--sHBtAfAH{margin-top:20px}.tips--z3ROgEOO{font-weight:500;color:#d48806;display:flex;align-items:center;gap:12px;margin-bottom:12px}",""]),l.locals={container:"container--sUPsOvDf",input:"input--sHBtAfAH",tips:"tips--z3ROgEOO"};const o=l},76239:(e,t,a)=>{a.d(t,{A:()=>u});var n=a(36758),i=a.n(n),s=a(40935),l=a.n(s),o=a(20062),r=a.n(o),c=new URL(a(32360),a.b),d=l()(i()),m=r()(c);d.push([e.id,`ai-portal\\.chat-stream{display:flex;position:relative;width:100%;height:100%;overflow:hidden;background-color:#f3f3f4;background-image:url(${m});background-size:cover;background-repeat:no-repeat;background-position:center;background-attachment:fixed;color:rgba(0,0,0,0.88);--cruise-canvas-node-width-small:330px;--cruise-canvas-node-width-medium:453px;--cruise-canvas-node-width-large:800px;--cruise-canvas-primary-color:var(--elevo-color-brand);--cruise-canvas-input-background:rgba(255,255,255,0.8);--cruise-canvas-input-box-shadow:0px 1px 0px 0px #ffffff,inset 0px 2px 4px 0px #b3bcf9}.container--IOwk4fR1{display:flex;flex-direction:column;position:relative;flex:1;min-width:0}.header--O9c4lNA3{height:54px;padding:0 72px;display:flex;align-items:center;justify-content:space-between}.header--O9c4lNA3 h1{font-weight:500;font-size:14px;margin:0;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}.main--KDIjetJs{overflow-y:auto;flex:1;padding:20px 24px}.narrow--xWih9UIb{width:100%;max-width:800px;margin:0 auto}.message--YIXGDQNi + .message--YIXGDQNi{margin-top:40px}.loading-icon--lagcmORP{flex:1;display:flex;align-items:center;justify-content:center;font-size:48px;color:#fff}.footer--aLZ8UWjM{padding:0 20px 24px}.aside--Xjd6To2A{width:0%;height:100%;transition:width 0.2s ease-in-out;position:relative}.expanded--xZgk3uBF{width:50%}.feedback--YbYylTcK{margin:24px auto 0}.toolbar--uiLshJmw{left:20px;bottom:20px}@media (max-width: 1123px){div.toolbar--uiLshJmw{display:none}}`,""]),d.locals={container:"container--IOwk4fR1",header:"header--O9c4lNA3",main:"main--KDIjetJs",narrow:"narrow--xWih9UIb",message:"message--YIXGDQNi","loading-icon":"loading-icon--lagcmORP",footer:"footer--aLZ8UWjM",aside:"aside--Xjd6To2A",expanded:"expanded--xZgk3uBF",feedback:"feedback--YbYylTcK",toolbar:"toolbar--uiLshJmw"};const u=d},76697:(e,t,a)=>{a.d(t,{A:()=>o});var n=a(36758),i=a.n(n),s=a(40935),l=a.n(s)()(i());l.push([e.id,".body--NgvmAsX4{position:relative;flex:1;min-height:0}.chat--Dd_Y5vKy{background:rgba(227,228,229,0.4);border:1px solid rgba(0,0,0,0.1);border-radius:8px;padding:16px 20px;height:100%;overflow-y:auto}.messages--XFimmqyO{width:100%;margin:0 auto}.message--R4_9LFJq + .message--R4_9LFJq{margin-top:40px}",""]),l.locals={body:"body--NgvmAsX4",chat:"chat--Dd_Y5vKy",messages:"messages--XFimmqyO",message:"message--R4_9LFJq"};const o=l},81999:(e,t,a)=>{a.d(t,{C:()=>Ae});var n=a(18769),i=a.n(n),s=a(60128),l=a(53373),o=a.n(l),r=a(52208),c=a(67101),d=a(13330),m=a(30672),u=a(30621),p=a(30925),f=a(76720),b=a(96923),v=a(40177),g=a(62309),h=a(72591),E=a.n(h),x=a(1740),k=a.n(x),w=a(88128),y=a.n(w),A=a(30855),I=a.n(A),T=a(93051),N=a.n(T),S=a(73656),D=a.n(S),C=a(83090),U={};U.styleTagTransform=D(),U.setAttributes=I(),U.insert=y().bind(null,"head"),U.domAPI=k(),U.insertStyleElement=N(),E()(C.A,U);const R=C.A&&C.A.locals?C.A.locals:void 0;var F=a(36903),j=a(39649),_=a(51069),P=a(67177),M=a(83685),O={};O.styleTagTransform=D(),O.setAttributes=I(),O.insert=y().bind(null,"head"),O.domAPI=k(),O.insertStyleElement=N(),E()(M.A,O);const z=M.A&&M.A.locals?M.A.locals:void 0;var B=a(625);let G=function(e){return e.WAITING="WAITING",e.EXECUTING="EXECUTING",e.PAUSED="PAUSED",e.SUCCEEDED="SUCCEEDED",e.FAILED="FAILED",e.TERMINATED="TERMINATED",e}({});const L="bricks/ai-portal/FlowApp",J=P.i18n.getFixedT(null,L);var V=a(40563),q=a(9442),X=a(69493);(0,P.initializeI18n)(L,{en:{WAITING:"Waiting",EXECUTING:"Executing",PAUSED:"Paused",SUCCEEDED:"Succeeded",FAILED:"Failed",TERMINATED:"Terminated"},zh:{WAITING:"等待中",EXECUTING:"执行中",PAUSED:"暂停",SUCCEEDED:"成功",FAILED:"失败",TERMINATED:"已终止"}});const K=(0,n.forwardRef)(H);function W(e){var t;let{flow:a,activity:s}=e;const{tasks:l}=(0,n.useContext)(f.j),r=(0,n.useMemo)((()=>l.find((e=>e.id===a.taskId))),[l,a.taskId]),c=(0,n.useMemo)((()=>a.spec.map((e=>{var t;return{...e,serviceFlowActivities:null===(t=e.serviceFlowActivities)||void 0===t?void 0:t.map((e=>{const t=l.find((t=>t.id===e.taskId));return{name:e.name,taskId:e.taskId,state:null==t?void 0:t.state,startTime:null==t?void 0:t.startTime,endTime:null==t?void 0:t.endTime}}))}}))),[a.spec,l]),d=(0,n.useMemo)((()=>c.flatMap((e=>{var t;return(null===(t=e.serviceFlowActivities)||void 0===t?void 0:t.filter((e=>e.taskId)))||[]}))),[c]),u=(0,n.useMemo)((()=>function(e){const t=(0,B.W)(e);let a,n;switch(e){case"working":a=J(G.EXECUTING),n=z.working;break;case"completed":a=J(G.SUCCEEDED),n=z.completed;break;case"failed":a=J(G.FAILED),n=z.failed;break;case"input-required":a=J(G.PAUSED),n=z.paused;break;case"terminated":a=J(G.TERMINATED);break;default:a=J(e?G.EXECUTING:G.WAITING)}return{icon:t,text:a,className:n}}(r.state)),[r.state]),p=(0,n.useRef)(null),b=(0,n.useRef)(null),{scrollable:v,scrollToBottom:g,toggleAutoScroll:h}=(0,V.i)(!0,p,b),E=(0,n.useRef)(new Map);return(0,n.useEffect)((()=>{if(null!=s&&s.taskId){const e=E.current.get(s.taskId);e&&(e.scrollIntoView(),h(!1))}}),[s,h]),i().createElement(i().Fragment,null,i().createElement("div",{className:z.heading},i().createElement("div",{className:z.header},i().createElement("div",{className:o()(z.status,u.className)},i().createElement(m.Bj,u.icon),u.text),i().createElement("div",{className:z.title},`${null!==(t=a.space)&&void 0!==t&&t.name?`${a.space.name} / `:""}${a.name}`)),i().createElement("div",{className:z.chart},i().createElement(m.n$,{spec:c,onActivityClick:e=>{const t=E.current.get(e.detail);t&&(t.scrollIntoView(),h(!1))}}))),i().createElement("div",{className:z.body},i().createElement("div",{className:z.chat,ref:p},i().createElement("div",{className:z.messages,ref:b},d.map((e=>i().createElement(K,{key:e.taskId,activity:e,ref:t=>{E.current.set(e.taskId,t)}}))))),i().createElement("button",{className:`${q.A["scroll-down"]} ${X.A["floating-button"]}`,style:{bottom:"30px"},hidden:!v,onClick:g},i().createElement(m.Bj,{lib:"antd",icon:"down"}))))}function H(e,t){let{activity:a}=e;const s=(0,n.useRef)(null),{tasks:l,errors:o}=(0,n.useContext)(f.j),r=(0,n.useMemo)((()=>l.find((e=>e.id===a.taskId))),[l,a.taskId]),{messages:c}=(0,d.p)(!0,r.state,l,o,{rootTaskId:a.taskId,expandAskUser:!0});return(0,n.useImperativeHandle)(t,(()=>({scrollIntoView:()=>{var e;null===(e=s.current)||void 0===e||e.scrollIntoView({behavior:"smooth",block:"nearest"})}}))),i().createElement("div",{className:z.activity,ref:s},c.map(((e,t,a)=>i().createElement("div",{className:z.message,key:t},"user"===e.role?i().createElement(u.R,{content:e.content,mentionedAiEmployeeId:e.mentionedAiEmployeeId,cmd:e.cmd,files:e.files}):i().createElement(p.G,{chunks:e.chunks,scopeState:r.state,isLatest:t===a.length-1,isSubTask:!0})))))}var $=a(6115),Q=a(76697),Y={};Y.styleTagTransform=D(),Y.setAttributes=I(),Y.insert=y().bind(null,"head"),Y.domAPI=k(),Y.insertStyleElement=N(),E()(Q.A,Y);const Z=Q.A&&Q.A.locals?Q.A.locals:void 0;function ee(e){let{task:t}=e;const{tasks:a,errors:s,flowMap:l,activityMap:o}=(0,n.useContext)(f.j),{messages:r}=(0,d.p)(!!t,t.state,a,s,{flowMap:l,activityMap:o,rootTaskId:t.id}),c=(0,n.useRef)(null),b=(0,n.useRef)(null),{scrollable:v,scrollToBottom:g}=(0,V.i)(!0,c,b);return i().createElement("div",{className:Z.body},i().createElement("div",{className:Z.chat,ref:c},i().createElement("div",{className:Z.messages,ref:b},r.map(((e,a,n)=>i().createElement("div",{className:Z.message,key:a},"user"===e.role?i().createElement(u.R,{content:e.content,mentionedAiEmployeeId:e.mentionedAiEmployeeId,cmd:e.cmd,files:e.files}):i().createElement(p.G,{chunks:e.chunks,scopeState:t.state,isLatest:a===n.length-1,isSubTask:!0})))))),i().createElement("button",{className:`${q.A["scroll-down"]} ${X.A["floating-button"]}`,style:{bottom:"30px"},hidden:!v,onClick:g},i().createElement(m.Bj,{lib:"antd",icon:"down"})))}const te={lib:"easyops",icon:"shrink"};function ae(e){let{detail:t,isSubTask:a,faded:s}=e;const{setActiveDetail:l,setSubActiveDetail:r}=(0,n.useContext)(f.j),{setUserClosedAside:c}=(0,n.useContext)(_.W);return i().createElement("div",{className:o()(R.aside,{[R.sub]:a,[R.faded]:s})},i().createElement("div",{className:R.box},i().createElement("div",{className:R.header},i().createElement("div",{className:R.title},"Elevo's Computer"),i().createElement(m.Py,{icon:te,variant:"mini",onClick:()=>{a?r(null):(l(null),c(!0))}})),i().createElement("div",{className:o()(R.body,{[R.scrollable]:"task"!==t.type&&("job"!==t.type||!t.job.generatedView)})},"job"===t.type?i().createElement(i().Fragment,null,i().createElement(j.t,{job:t.job,variant:"read-only"}),t.job.generatedView?i().createElement(ne,{name:"View",source:t.job.generatedView.code,language:"jsx"}):i().createElement($.M,{job:t.job})):"task"===t.type?i().createElement(ee,{task:t.task}):i().createElement(W,{flow:t.flow,activity:t.activity}))))}function ne(e){let{name:t,source:a,language:n}=e;return i().createElement("div",{className:o()(R.app,R.editor)},i().createElement("div",{className:R.heading},`${t}.${n}`),i().createElement("div",{className:o()(R.content,F.A.markdown)},i().createElement("div",{className:R.scroller},i().createElement(m.yQ,{className:R["code-block"],source:a,language:n,themeVariant:"elevo"}))))}var ie=a(94625),se=a(76239),le={};le.styleTagTransform=D(),le.setAttributes=I(),le.insert=y().bind(null,"head"),le.domAPI=k(),le.insertStyleElement=N(),E()(se.A,le);const oe=se.A&&se.A.locals?se.A.locals:void 0;var re=a(86767),ce=a(48952),de=a(98153),me=a(88253),ue=a(2367),pe=a(38717),fe=a(6671),be=a(32146),ve=a(39590),ge={};ge.styleTagTransform=D(),ge.setAttributes=I(),ge.insert=y().bind(null,"head"),ge.domAPI=k(),ge.insertStyleElement=N(),E()(ve.A,ge);const he=ve.A&&ve.A.locals?ve.A.locals:void 0;let Ee=function(e){return e.ASK_USER_TIPS="ASK_USER_TIPS",e}({});const xe="bricks/ai-portal/AskUser",ke={en:{[Ee.ASK_USER_TIPS]:"Elevo will continue after the activity 【{{ name }}】 provides additional information."},zh:{[Ee.ASK_USER_TIPS]:"Elevo将会在活动【{{ name }}】补充信息后继续执行。"}},we=P.i18n.getFixedT(null,xe);function ye(e){var t,a,s;let{task:l,parentJob:o,parentTask:r}=e;const{conversationState:c,tasks:g,errors:h,finished:E,earlyFinished:x,replay:k,activityMap:w}=(0,n.useContext)(f.j),{planMap:y}=(0,n.useContext)(_.W),A=v.QB.includes(c)||"input-required"===c,{messages:I}=(0,d.p)(!!l,null==l?void 0:l.state,g,h,{skipActivitySubTasks:!0,rootTaskId:null==l?void 0:l.id});if(v.QB.includes(null==l?void 0:l.state))return null;const T=null!==(t=null==w||null===(a=w.get(r.id))||void 0===a?void 0:a.activity.name)&&void 0!==t?t:o?null==y||null===(s=y.get(o.id))||void 0===s?void 0:s.name:void 0;return i().createElement("div",{className:he.container},i().createElement("div",{className:he.tips},i().createElement(m.Bj,{lib:"antd",icon:"info-circle",theme:"filled"}),we(Ee.ASK_USER_TIPS,{name:T})),I.map(((e,t,a)=>i().createElement("div",{className:he.message,key:t},"user"===e.role?i().createElement(u.R,{content:e.content,files:e.files}):i().createElement(p.G,{chunks:e.chunks,scopeState:null==l?void 0:l.state,isLatest:t===a.length-1&&!x,finished:E})))),!k&&i().createElement(b.s,{state:c,canChat:A,showInput:"always",className:he.input}))}function Ae(e,t){var a;let{conversationId:l,initialRequest:h,replay:E,replayDelay:x,supports:k,showHumanActions:w,showFeedback:y,showFeedbackAfterFailed:A,showFeedbackOnView:I,showUiSwitch:T,previewUrlTemplate:N,showCases:S,exampleProjects:D,tryItOutUrl:C,aiEmployees:U,commands:R,uploadOptions:F,onShare:j,onTerminate:P,onSubmitFeedback:M,onSwitchToCanvas:O,onFeedbackOnView:z,onDetailChange:B,onSplitChange:G}=e;const{conversation:L,tasks:J,serviceFlows:K,errors:W,humanInputRef:H,skipToResults:$,watchAgain:Q}=(0,c.u)(l,h,E,x),Y=!!L,Z=null!==(a=null==L?void 0:L.title)&&void 0!==a?a:"",ee=null==L?void 0:L.state,te=v.QB.includes(ee),ne=null==L?void 0:L.finished,se=!E&&(null==L?void 0:L.finished)&&"resume"!==L.mode&&!v.Z5.includes(ee),le=te||"input-required"===ee,{flowMap:ve,activityMap:ge}=(0,me.o)(K),{messages:he,jobMap:Ee,planMap:xe,lastDetail:ke,activeAskUser:we}=(0,d.p)(Y,null==L?void 0:L.state,J,W,{flowMap:ve,activityMap:ge,showHumanActions:w,skipActivitySubTasks:!0});(0,n.useEffect)((()=>{B({projectId:null==L?void 0:L.projectId})}),[B,null==L?void 0:L.projectId]);const Ae=(0,n.useMemo)((()=>Ee?[...Ee.values()].flatMap((e=>e.generatedView?{id:e.id,view:e.generatedView}:[])):[]),[Ee]),[Ie,Te]=(0,n.useState)(!1),[Ne,Se]=(0,n.useState)(!1),[De,Ce]=(0,n.useState)(!!y);(0,n.useEffect)((()=>{Ce(!!y)}),[y]);const[Ue,Re]=(0,n.useState)(),Fe=(0,n.useCallback)((e=>{Te(!0),M(e)}),[M]);(0,n.useImperativeHandle)(t,(()=>({feedbackSubmitDone:()=>{Se(!0),setTimeout((()=>{Ce(!1)}),3e3)},feedbackSubmitFailed:()=>{Te(!1)},feedbackOnViewDone:e=>{Re((t=>{const a=new Set(t);return a.add(e),a}))}})),[]);const[je,_e]=(0,n.useState)(null),[Pe,Me]=(0,n.useState)(null),[Oe,ze]=(0,n.useState)(null),[Be,Ge]=(0,n.useState)(!1),Le=(0,n.useRef)(!1);(0,n.useEffect)((()=>{if(Y){const e=setTimeout((()=>{Le.current=!0}),1e3);return()=>{clearTimeout(e)}}}),[Y]);const Je=!!h;(0,n.useEffect)((()=>{(Le.current||Je)&&ke&&!Be&&Me(ke)}),[ke,Be,Je]),(0,n.useEffect)((()=>{(0,s.getRuntime)().applyPageTitle(Z)}),[Z]);const Ve=(0,n.useCallback)(((e,t,a)=>{var n;null===(n=H.current)||void 0===n||n.call(H,e,t,a)}),[H]),qe=he[0],Xe="user"===(null==qe?void 0:qe.role)?qe:null,[Ke,We]=(0,n.useState)(null),[He,$e]=(0,n.useState)(null),Qe=l,Ye=(0,n.useMemo)((()=>({conversationId:l,conversationState:ee,finished:ne,earlyFinished:se,tasks:J,errors:W,jobMap:Ee,flowMap:ve,activityMap:ge,workspace:Qe,previewUrlTemplate:N,replay:E,showCases:S,exampleProjects:D,aiEmployees:U,commands:R,uploadOptions:F,humanInput:Ve,onShare:j,onTerminate:P,supports:k,activeExpandedViewJobId:je,setActiveExpandedViewJobId:_e,activeDetail:Pe,setActiveDetail:Me,subActiveDetail:Oe,setSubActiveDetail:ze,submittingFeedback:Ie,submittedFeedback:Ne,onSubmitFeedback:Fe,setShowFeedback:Ce,showFeedbackOnView:I,onFeedbackOnView:z,feedbackDoneViews:Ue,skipToResults:$,watchAgain:Q,tryItOut(){const e=window.open(`${(0,s.getBasePath)().slice(0,-1)}${null!=C?C:"/elevo"}`,"_blank");e&&(e.__elevo_try_it_out=Xe?{content:Xe.content,cmd:Xe.cmd,mentionedAiEmployeeId:Xe.mentionedAiEmployeeId}:{})},activeFile:Ke,setActiveFile:We,activeImages:He,setActiveImages:$e})),[l,ee,ne,se,J,W,Ee,ve,ge,Qe,N,E,S,D,U,R,F,Ve,j,P,k,je,Pe,Oe,Ie,Ne,Fe,I,z,Ue,$,Q,Xe,C,Ke,He]),[Ze,et]=(0,n.useState)(!1);(0,n.useEffect)((()=>{let e=!1;return Promise.race([(0,r.L)("light-plus"),new Promise((e=>setTimeout(e,5e3)))]).finally((()=>{e||et(!0)})),()=>{e=!0}}),[]);const tt=(0,n.useRef)(null),at=(0,n.useRef)(null),{scrollable:nt,scrollToBottom:it,toggleAutoScroll:st}=(0,V.i)(Y&&Ze,tt,at),lt=(0,ue.U)(Pe,J,Ee,ve,ge),ot=(0,ue.U)(Oe,J,Ee,ve,ge);(0,be.d)(Ye);const rt=!(!Pe&&!Oe);(0,n.useEffect)((()=>{G(rt)}),[G,rt]),(0,n.useEffect)((()=>{var e;null===(e=tt.current)||void 0===e||e.focus()}),[Y,Ze]);const ct=(0,n.useMemo)((()=>({lastDetail:ke,planMap:xe,setUserClosedAside:Ge,toggleAutoScroll:st})),[ke,xe,st]);return i().createElement(f.j.Provider,{value:Ye},i().createElement(_.W.Provider,{value:ct},i().createElement("div",{className:oe.container},i().createElement("div",{className:oe.header},i().createElement("h1",null,Z)),Y&&Ze?i().createElement(i().Fragment,null,i().createElement("div",{className:oe.main,tabIndex:-1,ref:tt},i().createElement("div",{className:oe.narrow,ref:at},he.map(((e,t,a)=>i().createElement("div",{className:oe.message,key:t},"user"===e.role?i().createElement(u.R,{content:e.content,cmd:e.cmd,mentionedAiEmployeeId:e.mentionedAiEmployeeId,files:e.files}):i().createElement(p.G,{chunks:e.chunks,scopeState:ee,isLatest:t===a.length-1&&!se,finished:L.finished})))),we&&i().createElement(ye,{task:we.task,parentJob:we.parentJob,parentTask:we.parentTask}),se&&i().createElement("div",{className:oe.message},i().createElement(p.G,{earlyFinished:!0})),E?(null==L?void 0:L.finished)&&i().createElement(de.A,{finished:!0,ui:"chat"}):De&&("completed"===ee||"failed"===ee&&A)&&J.length>0&&i().createElement(ie.k,{className:oe.feedback}))),i().createElement("button",{className:`${q.A["scroll-down"]} ${X.A["floating-button"]}`,hidden:!nt,onClick:it},i().createElement(m.Bj,{lib:"antd",icon:"down"})),E&&null!=L&&L.finished?null:i().createElement("div",{className:oe.footer},i().createElement("div",{className:oe.narrow},E?i().createElement(de.A,null):i().createElement(b.s,{state:ee,canChat:le,showInput:we?"never":"auto"})))):i().createElement("div",{className:oe["loading-icon"]},i().createElement(m.Bj,{lib:"antd",theme:"outlined",icon:"loading-3-quarters",spinning:!0}))),i().createElement("div",{className:o()(oe.aside,{[oe.expanded]:!!lt})},lt&&i().createElement(ae,{detail:lt,faded:!!ot}),ot&&i().createElement(ae,{detail:ot,isSubTask:!0})),je&&i().createElement(g.f,{views:Ae}),T&&i().createElement("div",{className:o()(re.A.toolbar,oe.toolbar)},i().createElement(m.Py,{icon:v.Rq,variant:"mini",title:(0,ce.t)(ce.K.SWITCH_TO_CANVAS),onClick:O})),Ke&&i().createElement(pe.d,{file:Ke}),He&&i().createElement(fe.f,{images:He})))}(0,P.initializeI18n)(xe,ke)},83090:(e,t,a)=>{a.d(t,{A:()=>o});var n=a(36758),i=a.n(n),s=a(40935),l=a.n(s)()(i());l.push([e.id,".aside--DDIdDtkt{padding:12px 12px 12px 0;height:100%}.faded--AsNxuT2v{opacity:0.4}.sub--d8EpebQt{position:absolute;top:16px;right:16px;left:-16px;height:calc(100% - 16px)}.box--niuFBiiQ{background:#ffffff;box-shadow:1px 1px 10px 0px rgba(0,10,26,0.1);border-radius:12px;height:100%;display:flex;flex-direction:column}.header--DPl_hrTp{height:52px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(0,0,0,0.15);padding:0 20px}.title--HlE9yRcJ{font-weight:500;font-size:16px;color:#262626}.body--OLKz1zeC{flex:1;min-height:0;padding:20px;display:flex;flex-direction:column}.body--OLKz1zeC.scrollable--JydKNhBJ{overflow-y:auto}.app--UanK0TGf{flex:1;min-height:0;background:#ffffff;border-radius:9px;border:1px solid #ccd1de;margin-top:16px;overflow:hidden;display:flex;flex-direction:column}.heading--ngRi_rQ4{background:#e6e9f3;color:#5e6472;padding:5px 14px}.content--I2i0y65v{font-size:12px;flex:1;min-height:0;position:relative}.scroller--mLfznC_I{height:100%;overflow-x:hidden;overflow-y:auto;overflow:hidden auto;padding:10px}.scroller--mLfznC_I.loading--U1GWHEp9{display:flex;align-items:center;justify-content:center}.editor--p_Sqs1os .content--I2i0y65v .code-block--XiUVX7st::part(wrapper){position:static;margin:0}.editor--p_Sqs1os .content--I2i0y65v .code-block--XiUVX7st::part(pre){background:none!important;padding:0;border-radius:0;border:0}",""]),l.locals={aside:"aside--DDIdDtkt",faded:"faded--AsNxuT2v",sub:"sub--d8EpebQt",box:"box--niuFBiiQ",header:"header--DPl_hrTp",title:"title--HlE9yRcJ",body:"body--OLKz1zeC",scrollable:"scrollable--JydKNhBJ",app:"app--UanK0TGf",heading:"heading--ngRi_rQ4",content:"content--I2i0y65v",scroller:"scroller--mLfznC_I",loading:"loading--U1GWHEp9",editor:"editor--p_Sqs1os","code-block":"code-block--XiUVX7st"};const o=l},83685:(e,t,a)=>{a.d(t,{A:()=>o});var n=a(36758),i=a.n(n),s=a(40935),l=a.n(s)()(i());l.push([e.id,".heading--SbCRupnn{border-radius:9px;border:1px solid #ccd1de;background-image:radial-gradient(circle at 1px 1px,#ddd 1px,transparent 0px);background-size:25px 25px;background-position:12px}.header--LGXNxV5J{display:flex;align-items:center;padding:16px 30px}.status--aqbJGBcl{background:#aeb3bc;border-radius:100px;height:40px;padding:9px 16px;display:flex;align-items:center;gap:8px;font-size:18px;color:#ffffff}.status--aqbJGBcl eo-icon{font-size:22px}.status--aqbJGBcl.paused--U1cc3Ksn{background:#f0a22e}.status--aqbJGBcl.working--f2PYqFo7{background:#4f69ff}.status--aqbJGBcl.completed--Ihiekkve{background:#08bf33}.status--aqbJGBcl.failed--kB8wxIZ0{background:var(--color-error)}.title--IRvB2t7z{font-weight:500;font-size:16px;margin-left:40px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chart--mypbn8pI{padding:8px 22px 18px;overflow-x:auto}.body--jnk1EIz0{margin-top:16px;position:relative}.chat--nEzTEXbV{background:rgba(227,228,229,0.4);border:1px solid rgba(0,0,0,0.1);border-radius:8px;padding:16px 20px;flex:1;min-height:0;overflow-y:auto}.messages--vLiwUYSP{width:100%;margin:0 auto}.message--Okzj6NDx + .message--Okzj6NDx,\n.activity--ACHv4xek + .activity--ACHv4xek{margin-top:40px}",""]),l.locals={heading:"heading--SbCRupnn",header:"header--LGXNxV5J",status:"status--aqbJGBcl",paused:"paused--U1cc3Ksn",working:"working--f2PYqFo7",completed:"completed--Ihiekkve",failed:"failed--kB8wxIZ0",title:"title--IRvB2t7z",chart:"chart--mypbn8pI",body:"body--jnk1EIz0",chat:"chat--nEzTEXbV",messages:"messages--vLiwUYSP",message:"message--Okzj6NDx",activity:"activity--ACHv4xek"};const o=l}}]);
2
+ //# sourceMappingURL=1999.f9846bc3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunks/1999.f9846bc3.js","mappings":"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","sources":["webpack:///./src/shared/getFlowOrActivityIcon.ts","webpack:///./src/shared/AskUser/AskUser.module.css","webpack:///./src/chat-stream/styles.module.css","webpack:///./src/chat-stream/Aside/TaskApp/TaskApp.module.css","webpack:///./src/chat-stream/Aside/Aside.module.css?0aa1","webpack:///./src/chat-stream/Aside/FlowApp/FlowApp.module.css?5832","webpack:///./src/chat-stream/Aside/FlowApp/i18n.ts","webpack:///./src/chat-stream/Aside/FlowApp/FlowApp.tsx","webpack:///./src/chat-stream/Aside/TaskApp/TaskApp.module.css?1923","webpack:///./src/chat-stream/Aside/TaskApp/TaskApp.tsx","webpack:///./src/chat-stream/Aside/Aside.tsx","webpack:///./src/chat-stream/styles.module.css?c00e","webpack:///./src/shared/AskUser/AskUser.module.css?01a3","webpack:///./src/shared/AskUser/i18n.ts","webpack:///./src/shared/AskUser/AskUser.tsx","webpack:///./src/chat-stream/ChatStream.tsx","webpack:///./src/chat-stream/Aside/Aside.module.css","webpack:///./src/chat-stream/Aside/FlowApp/FlowApp.module.css"],"sourcesContent":["import type { GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport type { ConversationState, JobState, TaskState } from \"./interfaces\";\n\nexport function getFlowOrActivityIcon(\n state: TaskState | JobState | ConversationState | undefined\n): GeneralIconProps {\n switch (state) {\n case \"input-required\":\n return { lib: \"antd\", theme: \"filled\", icon: \"pause-circle\" };\n case \"completed\":\n return { lib: \"antd\", theme: \"filled\", icon: \"check-circle\" };\n case \"failed\":\n return { lib: \"antd\", theme: \"filled\", icon: \"close-circle\" };\n case \"terminated\":\n return { lib: \"antd\", theme: \"filled\", icon: \"stop\" };\n case \"working\":\n return { lib: \"antd\", icon: \"loading-3-quarters\", spinning: true };\n default:\n return { lib: \"antd\", theme: \"filled\", icon: \"clock-circle\" };\n }\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.container--sUPsOvDf{background:rgba(184,187,205,0.2);border-radius:12px;border:1px solid rgba(255,255,255,0.3);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:16px 26px}.container--sUPsOvDf:not(:first-child){margin-top:40px}.input--sHBtAfAH{margin-top:20px}.tips--z3ROgEOO{font-weight:500;color:#d48806;display:flex;align-items:center;gap:12px;margin-bottom:12px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": `container--sUPsOvDf`,\n\t\"input\": `input--sHBtAfAH`,\n\t\"tips\": `tips--z3ROgEOO`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../home-container/images/background.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `ai-portal\\\\.chat-stream{display:flex;position:relative;width:100%;height:100%;overflow:hidden;background-color:#f3f3f4;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:cover;background-repeat:no-repeat;background-position:center;background-attachment:fixed;color:rgba(0,0,0,0.88);--cruise-canvas-node-width-small:330px;--cruise-canvas-node-width-medium:453px;--cruise-canvas-node-width-large:800px;--cruise-canvas-primary-color:var(--elevo-color-brand);--cruise-canvas-input-background:rgba(255,255,255,0.8);--cruise-canvas-input-box-shadow:0px 1px 0px 0px #ffffff,inset 0px 2px 4px 0px #b3bcf9}.container--IOwk4fR1{display:flex;flex-direction:column;position:relative;flex:1;min-width:0}.header--O9c4lNA3{height:54px;padding:0 72px;display:flex;align-items:center;justify-content:space-between}.header--O9c4lNA3 h1{font-weight:500;font-size:14px;margin:0;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}.main--KDIjetJs{overflow-y:auto;flex:1;padding:20px 24px}.narrow--xWih9UIb{width:100%;max-width:800px;margin:0 auto}.message--YIXGDQNi + .message--YIXGDQNi{margin-top:40px}.loading-icon--lagcmORP{flex:1;display:flex;align-items:center;justify-content:center;font-size:48px;color:#fff}.footer--aLZ8UWjM{padding:0 20px 24px}.aside--Xjd6To2A{width:0%;height:100%;transition:width 0.2s ease-in-out;position:relative}.expanded--xZgk3uBF{width:50%}.feedback--YbYylTcK{margin:24px auto 0}.toolbar--uiLshJmw{left:20px;bottom:20px}@media (max-width: 1123px){div.toolbar--uiLshJmw{display:none}}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": `container--IOwk4fR1`,\n\t\"header\": `header--O9c4lNA3`,\n\t\"main\": `main--KDIjetJs`,\n\t\"narrow\": `narrow--xWih9UIb`,\n\t\"message\": `message--YIXGDQNi`,\n\t\"loading-icon\": `loading-icon--lagcmORP`,\n\t\"footer\": `footer--aLZ8UWjM`,\n\t\"aside\": `aside--Xjd6To2A`,\n\t\"expanded\": `expanded--xZgk3uBF`,\n\t\"feedback\": `feedback--YbYylTcK`,\n\t\"toolbar\": `toolbar--uiLshJmw`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.body--NgvmAsX4{position:relative;flex:1;min-height:0}.chat--Dd_Y5vKy{background:rgba(227,228,229,0.4);border:1px solid rgba(0,0,0,0.1);border-radius:8px;padding:16px 20px;height:100%;overflow-y:auto}.messages--XFimmqyO{width:100%;margin:0 auto}.message--R4_9LFJq + .message--R4_9LFJq{margin-top:40px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"body\": `body--NgvmAsX4`,\n\t\"chat\": `chat--Dd_Y5vKy`,\n\t\"messages\": `messages--XFimmqyO`,\n\t\"message\": `message--R4_9LFJq`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./Aside.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./Aside.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./FlowApp.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./FlowApp.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n WAITING = \"WAITING\",\n EXECUTING = \"EXECUTING\",\n PAUSED = \"PAUSED\",\n SUCCEEDED = \"SUCCEEDED\",\n FAILED = \"FAILED\",\n TERMINATED = \"TERMINATED\",\n}\n\nconst en: Locale = {\n WAITING: \"Waiting\",\n EXECUTING: \"Executing\",\n PAUSED: \"Paused\",\n SUCCEEDED: \"Succeeded\",\n FAILED: \"Failed\",\n TERMINATED: \"Terminated\",\n};\n\nconst zh: Locale = {\n WAITING: \"等待中\",\n EXECUTING: \"执行中\",\n PAUSED: \"暂停\",\n SUCCEEDED: \"成功\",\n FAILED: \"失败\",\n TERMINATED: \"已终止\",\n};\n\nexport const NS = \"bricks/ai-portal/FlowApp\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, {\n forwardRef,\n useContext,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n} from \"react\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport classNames from \"classnames\";\nimport styles from \"./FlowApp.module.css\";\nimport { WrappedIcon, WrappedRunningFlow } from \"../../../shared/bricks\";\nimport { getFlowOrActivityIcon } from \"../../../shared/getFlowOrActivityIcon\";\nimport type {\n ActivityRun,\n ConversationState,\n JobState,\n ServiceFlowRun,\n TaskState,\n} from \"../../../shared/interfaces\";\nimport { TaskContext } from \"../../../shared/TaskContext\";\nimport { K, locales, NS, t } from \"./i18n\";\nimport { useConversationStream } from \"../../useConversationStream\";\nimport { UserMessage } from \"../../UserMessage/UserMessage\";\nimport { AssistantMessage } from \"../../AssistantMessage/AssistantMessage\";\nimport { useAutoScroll } from \"../../useAutoScroll\";\nimport scrollStyles from \"../../ScrollDownButton.module.css\";\nimport floatingStyles from \"../../../shared/FloatingButton.module.css\";\n\ninitializeI18n(NS, locales);\n\nconst ActivityDetail = forwardRef(LegacyActivityDetail);\n\nexport interface FlowAppProps {\n flow: ServiceFlowRun;\n activity?: ActivityRun;\n}\n\nexport function FlowApp({ flow, activity }: FlowAppProps) {\n const { tasks } = useContext(TaskContext);\n const flowTask = useMemo(() => {\n return tasks.find((t) => t.id === flow.taskId)!;\n }, [tasks, flow.taskId]);\n\n const runningSpec = useMemo(() => {\n return flow.spec.map((stage) => ({\n ...stage,\n serviceFlowActivities: stage.serviceFlowActivities?.map((activity) => {\n const task = tasks.find((t) => t.id === activity.taskId);\n return {\n name: activity.name,\n taskId: activity.taskId,\n state: task?.state,\n startTime: task?.startTime,\n endTime: task?.endTime,\n };\n }),\n }));\n }, [flow.spec, tasks]);\n\n const activities = useMemo(\n () =>\n runningSpec.flatMap(\n (s) => s.serviceFlowActivities?.filter((act) => act.taskId) || []\n ),\n [runningSpec]\n );\n\n const flowStatus = useMemo(\n () => getFlowStatusDisplay(flowTask.state),\n [flowTask.state]\n );\n\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const scrollContentRef = useRef<HTMLDivElement>(null);\n\n const { scrollable, scrollToBottom, toggleAutoScroll } = useAutoScroll(\n true,\n scrollContainerRef,\n scrollContentRef\n );\n\n const activitiesRef = useRef<Map<string, ActivityDetailRef | null>>(\n new Map()\n );\n\n useEffect(() => {\n if (activity?.taskId) {\n const activityDetail = activitiesRef.current.get(activity.taskId);\n if (activityDetail) {\n activityDetail.scrollIntoView();\n toggleAutoScroll(false);\n }\n }\n }, [activity, toggleAutoScroll]);\n\n return (\n <>\n <div className={styles.heading}>\n <div className={styles.header}>\n <div className={classNames(styles.status, flowStatus.className)}>\n <WrappedIcon {...flowStatus.icon} />\n {flowStatus.text}\n </div>\n <div className={styles.title}>\n {`${flow.space?.name ? `${flow.space.name} / ` : \"\"}${flow.name}`}\n </div>\n </div>\n <div className={styles.chart}>\n <WrappedRunningFlow\n spec={runningSpec}\n onActivityClick={(e) => {\n const activityDetail = activitiesRef.current.get(e.detail);\n if (activityDetail) {\n activityDetail.scrollIntoView();\n toggleAutoScroll(false);\n }\n }}\n />\n </div>\n </div>\n <div className={styles.body}>\n <div className={styles.chat} ref={scrollContainerRef}>\n <div className={styles.messages} ref={scrollContentRef}>\n {activities.map((act) => (\n <ActivityDetail\n key={act.taskId}\n activity={act}\n ref={(r) => {\n activitiesRef.current.set(act.taskId!, r);\n }}\n />\n ))}\n </div>\n </div>\n <button\n className={`${scrollStyles[\"scroll-down\"]} ${floatingStyles[\"floating-button\"]}`}\n style={{ bottom: \"30px\" }}\n hidden={!scrollable}\n onClick={scrollToBottom}\n >\n <WrappedIcon lib=\"antd\" icon=\"down\" />\n </button>\n </div>\n </>\n );\n}\n\ninterface ActivityDetailRef {\n scrollIntoView: () => void;\n}\n\ninterface ActivityDetailProps {\n activity: ActivityRun;\n}\n\nfunction LegacyActivityDetail(\n { activity }: ActivityDetailProps,\n ref: React.Ref<ActivityDetailRef>\n) {\n const activityRef = useRef<HTMLDivElement>(null);\n const { tasks, errors } = useContext(TaskContext);\n const activityTask = useMemo(() => {\n return tasks.find((t) => t.id === activity.taskId)!;\n }, [tasks, activity.taskId]);\n\n const { messages } = useConversationStream(\n true,\n activityTask.state,\n tasks,\n errors,\n {\n rootTaskId: activity.taskId,\n expandAskUser: true,\n }\n );\n\n useImperativeHandle(ref, () => ({\n scrollIntoView: () => {\n activityRef.current?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n });\n },\n }));\n\n return (\n <div className={styles.activity} ref={activityRef}>\n {messages.map((msg, index, list) => (\n <div className={styles.message} key={index}>\n {msg.role === \"user\" ? (\n <UserMessage\n content={msg.content}\n mentionedAiEmployeeId={msg.mentionedAiEmployeeId}\n cmd={msg.cmd}\n files={msg.files}\n />\n ) : (\n <AssistantMessage\n chunks={msg.chunks}\n scopeState={activityTask.state}\n isLatest={index === list.length - 1}\n isSubTask\n />\n )}\n </div>\n ))}\n </div>\n );\n}\n\nfunction getFlowStatusDisplay(state: TaskState | JobState | ConversationState) {\n const icon = getFlowOrActivityIcon(state);\n let text: string;\n let className: string | undefined;\n\n switch (state) {\n case \"working\":\n text = t(K.EXECUTING);\n className = styles.working;\n break;\n case \"completed\":\n text = t(K.SUCCEEDED);\n className = styles.completed;\n break;\n case \"failed\":\n text = t(K.FAILED);\n className = styles.failed;\n break;\n case \"input-required\":\n text = t(K.PAUSED);\n className = styles.paused;\n break;\n case \"terminated\":\n text = t(K.TERMINATED);\n break;\n default:\n text = state ? t(K.EXECUTING) : t(K.WAITING);\n }\n\n return { icon, text, className };\n}\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./TaskApp.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./TaskApp.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useContext, useRef } from \"react\";\nimport styles from \"./TaskApp.module.css\";\nimport { WrappedIcon } from \"../../../shared/bricks\";\nimport type { Task } from \"../../../shared/interfaces\";\nimport { TaskContext } from \"../../../shared/TaskContext\";\nimport { useConversationStream } from \"../../useConversationStream\";\nimport { UserMessage } from \"../../UserMessage/UserMessage\";\nimport { AssistantMessage } from \"../../AssistantMessage/AssistantMessage\";\nimport { useAutoScroll } from \"../../useAutoScroll\";\nimport scrollStyles from \"../../ScrollDownButton.module.css\";\nimport floatingStyles from \"../../../shared/FloatingButton.module.css\";\n\nexport interface TaskAppProps {\n task: Task;\n}\n\nexport function TaskApp({ task }: TaskAppProps) {\n const { tasks, errors, flowMap, activityMap } = useContext(TaskContext);\n const { messages } = useConversationStream(\n !!task,\n task.state,\n tasks,\n errors,\n {\n flowMap,\n activityMap,\n rootTaskId: task.id,\n }\n );\n\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const scrollContentRef = useRef<HTMLDivElement>(null);\n\n const { scrollable, scrollToBottom } = useAutoScroll(\n true,\n scrollContainerRef,\n scrollContentRef\n );\n\n return (\n <div className={styles.body}>\n <div className={styles.chat} ref={scrollContainerRef}>\n <div className={styles.messages} ref={scrollContentRef}>\n {messages.map((msg, index, list) => (\n <div className={styles.message} key={index}>\n {msg.role === \"user\" ? (\n <UserMessage\n content={msg.content}\n mentionedAiEmployeeId={msg.mentionedAiEmployeeId}\n cmd={msg.cmd}\n files={msg.files}\n />\n ) : (\n <AssistantMessage\n chunks={msg.chunks}\n scopeState={task.state}\n isLatest={index === list.length - 1}\n isSubTask\n />\n )}\n </div>\n ))}\n </div>\n </div>\n <button\n className={`${scrollStyles[\"scroll-down\"]} ${floatingStyles[\"floating-button\"]}`}\n style={{ bottom: \"30px\" }}\n hidden={!scrollable}\n onClick={scrollToBottom}\n >\n <WrappedIcon lib=\"antd\" icon=\"down\" />\n </button>\n </div>\n );\n}\n","import React, { useContext } from \"react\";\nimport classNames from \"classnames\";\nimport type { GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport styles from \"./Aside.module.css\";\nimport sharedStyles from \"../../cruise-canvas/shared.module.css\";\nimport { WrappedCodeBlock, WrappedIconButton } from \"../../shared/bricks\";\nimport { ToolCallStatus } from \"../../cruise-canvas/ToolCallStatus/ToolCallStatus\";\nimport { TaskContext } from \"../../shared/TaskContext\";\nimport { StreamContext } from \"../StreamContext\";\nimport type {\n ActiveDetailOfActivity,\n FulfilledActiveDetail,\n} from \"../../shared/interfaces\";\nimport { FlowApp } from \"./FlowApp/FlowApp\";\nimport { ToolCallDetail } from \"../../cruise-canvas/ToolCallDetail/ToolCallDetail\";\nimport { TaskApp } from \"./TaskApp/TaskApp\";\n\nconst ICON_SHRINK: GeneralIconProps = {\n lib: \"easyops\",\n icon: \"shrink\",\n};\n\nexport interface AsideProps {\n detail: FulfilledActiveDetail;\n isSubTask?: boolean;\n faded?: boolean;\n}\n\nexport function Aside({ detail, isSubTask, faded }: AsideProps) {\n const { setActiveDetail, setSubActiveDetail } = useContext(TaskContext);\n const { setUserClosedAside } = useContext(StreamContext);\n\n return (\n <div\n className={classNames(styles.aside, {\n [styles.sub]: isSubTask,\n [styles.faded]: faded,\n })}\n >\n <div className={styles.box}>\n <div className={styles.header}>\n <div className={styles.title}>Elevo&#39;s Computer</div>\n <WrappedIconButton\n icon={ICON_SHRINK}\n variant=\"mini\"\n onClick={() => {\n if (isSubTask) {\n setSubActiveDetail(null);\n } else {\n setActiveDetail(null);\n setUserClosedAside(true);\n }\n }}\n />\n </div>\n <div\n className={classNames(styles.body, {\n [styles.scrollable]:\n detail.type !== \"task\" &&\n (detail.type !== \"job\" || !detail.job.generatedView),\n })}\n >\n {detail.type === \"job\" ? (\n <>\n <ToolCallStatus job={detail.job} variant=\"read-only\" />\n {detail.job.generatedView ? (\n <EditorApp\n name=\"View\"\n source={detail.job.generatedView.code}\n language=\"jsx\"\n />\n ) : (\n <ToolCallDetail job={detail.job} />\n )}\n </>\n ) : detail.type === \"task\" ? (\n <TaskApp task={detail.task} />\n ) : (\n <FlowApp\n flow={detail.flow}\n activity={(detail as ActiveDetailOfActivity).activity}\n />\n )}\n </div>\n </div>\n </div>\n );\n}\n\ninterface EditorAppProps {\n name: string;\n source: string;\n language: string;\n}\n\nfunction EditorApp({ name, source, language }: EditorAppProps) {\n return (\n <div className={classNames(styles.app, styles.editor)}>\n <div className={styles.heading}>{`${name}.${language}`}</div>\n <div className={classNames(styles.content, sharedStyles.markdown)}>\n <div className={styles.scroller}>\n <WrappedCodeBlock\n className={styles[\"code-block\"]}\n source={source}\n language={language}\n themeVariant=\"elevo\"\n />\n </div>\n </div>\n </div>\n );\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./styles.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./styles.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./AskUser.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./AskUser.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n ASK_USER_TIPS = \"ASK_USER_TIPS\",\n}\n\nconst en: Locale = {\n [K.ASK_USER_TIPS]:\n \"Elevo will continue after the activity 【{{ name }}】 provides additional information.\",\n};\n\nconst zh: Locale = {\n [K.ASK_USER_TIPS]: \"Elevo将会在活动【{{ name }}】补充信息后继续执行。\",\n};\n\nexport const NS = \"bricks/ai-portal/AskUser\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, { useContext } from \"react\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport type { Job, Task } from \"../interfaces\";\nimport styles from \"./AskUser.module.css\";\nimport { useConversationStream } from \"../../chat-stream/useConversationStream\";\nimport { TaskContext } from \"../TaskContext\";\nimport { UserMessage } from \"../../chat-stream/UserMessage/UserMessage\";\nimport { AssistantMessage } from \"../../chat-stream/AssistantMessage/AssistantMessage\";\nimport { DONE_STATES } from \"../constants\";\nimport { ChatBox } from \"../ChatBox/ChatBox\";\nimport { K, locales, NS, t } from \"./i18n\";\nimport { WrappedIcon } from \"../bricks\";\nimport { StreamContext } from \"../../chat-stream/StreamContext\";\n\ninitializeI18n(NS, locales);\n\nexport interface AskUserProps {\n task: Task | undefined;\n parentJob: Job | undefined;\n parentTask: Task;\n}\n\nexport function AskUser({ task, parentJob, parentTask }: AskUserProps) {\n const {\n conversationState,\n tasks,\n errors,\n finished,\n earlyFinished,\n replay,\n activityMap,\n } = useContext(TaskContext);\n const { planMap } = useContext(StreamContext);\n const canChat =\n DONE_STATES.includes(conversationState) ||\n conversationState === \"input-required\";\n\n const { messages } = useConversationStream(\n !!task,\n task?.state,\n tasks,\n errors,\n {\n skipActivitySubTasks: true,\n rootTaskId: task?.id,\n }\n );\n\n const done = DONE_STATES.includes(task?.state);\n if (done) {\n return null;\n }\n\n const stepName =\n activityMap?.get(parentTask.id)?.activity.name ??\n (parentJob ? planMap?.get(parentJob.id)?.name : undefined);\n\n return (\n <div className={styles.container}>\n <div className={styles.tips}>\n <WrappedIcon lib=\"antd\" icon=\"info-circle\" theme=\"filled\" />\n {t(K.ASK_USER_TIPS, { name: stepName })}\n </div>\n {messages.map((msg, index, list) => (\n <div className={styles.message} key={index}>\n {msg.role === \"user\" ? (\n <UserMessage content={msg.content} files={msg.files} />\n ) : (\n <AssistantMessage\n chunks={msg.chunks}\n scopeState={task?.state}\n isLatest={index === list.length - 1 && !earlyFinished}\n finished={finished}\n />\n )}\n </div>\n ))}\n {!replay && (\n <ChatBox\n state={conversationState}\n canChat={canChat}\n showInput=\"always\"\n className={styles.input}\n />\n )}\n </div>\n );\n}\n","// istanbul ignore file: experimental\nimport React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { getBasePath, getRuntime } from \"@next-core/runtime\";\nimport classNames from \"classnames\";\nimport { preloadHighlighter } from \"@next-shared/markdown\";\nimport { useConversationDetail } from \"../cruise-canvas/useConversationDetail.js\";\nimport { useConversationStream } from \"./useConversationStream.js\";\nimport { WrappedIcon, WrappedIconButton } from \"../shared/bricks.js\";\nimport { UserMessage } from \"./UserMessage/UserMessage.js\";\nimport { AssistantMessage } from \"./AssistantMessage/AssistantMessage.js\";\nimport { TaskContext } from \"../shared/TaskContext.js\";\nimport { ChatBox } from \"../shared/ChatBox/ChatBox.js\";\nimport {\n DONE_STATES,\n ICON_CANVAS,\n NON_WORKING_STATES,\n} from \"../shared/constants.js\";\nimport { ExpandedView } from \"../shared/ExpandedView/ExpandedView.js\";\nimport { Aside } from \"./Aside/Aside.js\";\nimport { StreamContext } from \"./StreamContext.js\";\nimport type { FeedbackDetail } from \"../cruise-canvas/interfaces.js\";\nimport { NodeFeedback } from \"../shared/NodeFeedback/NodeFeedback.js\";\nimport type { ChatStreamProps, ChatStreamRef, ConversationDetail } from \".\";\nimport styles from \"./styles.module.css\";\nimport toolbarStyles from \"../cruise-canvas/toolbar.module.css\";\nimport { K, t } from \"./i18n.js\";\nimport { NodeReplay } from \"../cruise-canvas/NodeReplay/NodeReplay.js\";\nimport type {\n ActiveDetail,\n ActiveImages,\n ExtraChatPayload,\n FileInfo,\n} from \"../shared/interfaces.js\";\nimport { useFlowAndActivityMap } from \"../shared/useFlowAndActivityMap.js\";\nimport { useFulfilledActiveDetail } from \"../shared/useFulfilledActiveDetail.js\";\nimport { useAutoScroll } from \"./useAutoScroll.js\";\nimport scrollStyles from \"./ScrollDownButton.module.css\";\nimport floatingStyles from \"../shared/FloatingButton.module.css\";\nimport { FilePreview } from \"../shared/FilePreview/FilePreview.js\";\nimport { ImagesPreview } from \"../shared/FilePreview/ImagesPreview.js\";\nimport { useHandleEscape } from \"../shared/useHandleEscape.js\";\nimport { AskUser } from \"../shared/AskUser/AskUser.js\";\n\ninterface ChatStreamComponentProps extends ChatStreamProps {\n conversationId: string;\n onShare: () => void;\n onTerminate: () => void;\n onSubmitFeedback: (detail: FeedbackDetail) => void;\n onSwitchToCanvas: () => void;\n onFeedbackOnView: (viewId: string) => void;\n onDetailChange: (detail: ConversationDetail) => void;\n onSplitChange: (split: boolean) => void;\n}\n\nexport function ChatStreamComponent(\n {\n conversationId,\n initialRequest,\n replay,\n replayDelay,\n supports,\n showHumanActions,\n showFeedback: propShowFeedback,\n showFeedbackAfterFailed,\n showFeedbackOnView,\n showUiSwitch,\n previewUrlTemplate,\n showCases,\n exampleProjects,\n tryItOutUrl,\n aiEmployees,\n commands,\n uploadOptions,\n onShare,\n onTerminate,\n onSubmitFeedback,\n onSwitchToCanvas,\n onFeedbackOnView,\n onDetailChange,\n onSplitChange,\n }: ChatStreamComponentProps,\n ref: React.Ref<ChatStreamRef>\n) {\n const {\n conversation,\n tasks,\n serviceFlows,\n errors,\n humanInputRef,\n skipToResults,\n watchAgain,\n } = useConversationDetail(\n conversationId,\n initialRequest,\n replay,\n replayDelay\n );\n const conversationAvailable = !!conversation;\n const pageTitle = conversation?.title ?? \"\";\n const conversationState = conversation?.state;\n const conversationDone = DONE_STATES.includes(conversationState!);\n const conversationFinished = conversation?.finished;\n const earlyFinished =\n !replay &&\n conversation?.finished &&\n conversation.mode !== \"resume\" &&\n !NON_WORKING_STATES.includes(conversationState!);\n const canChat = conversationDone || conversationState === \"input-required\";\n const { flowMap, activityMap } = useFlowAndActivityMap(serviceFlows);\n const { messages, jobMap, planMap, lastDetail, activeAskUser } =\n useConversationStream(\n conversationAvailable,\n conversation?.state,\n tasks,\n errors,\n {\n flowMap,\n activityMap,\n showHumanActions,\n skipActivitySubTasks: true,\n }\n );\n\n useEffect(() => {\n onDetailChange({\n projectId: conversation?.projectId,\n });\n }, [onDetailChange, conversation?.projectId]);\n\n const views = useMemo(() => {\n if (!jobMap) {\n return [];\n }\n return [...jobMap.values()].flatMap((job) =>\n job.generatedView\n ? {\n id: job.id,\n view: job.generatedView,\n }\n : []\n );\n }, [jobMap]);\n\n const [submittingFeedback, setSubmittingFeedback] = useState(false);\n const [submittedFeedback, setSubmittedFeedback] = useState(false);\n const [showFeedback, setShowFeedback] = useState<boolean>(!!propShowFeedback);\n useEffect(() => {\n setShowFeedback(!!propShowFeedback);\n }, [propShowFeedback]);\n const [feedbackDoneViews, setFeedbackDoneViews] = useState<\n Set<string> | undefined\n >();\n\n const handleSubmitFeedback = useCallback(\n (detail: FeedbackDetail) => {\n setSubmittingFeedback(true);\n onSubmitFeedback(detail);\n },\n [onSubmitFeedback]\n );\n\n useImperativeHandle(\n ref,\n () => ({\n feedbackSubmitDone: () => {\n setSubmittedFeedback(true);\n setTimeout(() => {\n setShowFeedback(false);\n }, 3000);\n },\n feedbackSubmitFailed: () => {\n setSubmittingFeedback(false);\n },\n feedbackOnViewDone: (viewId: string) => {\n setFeedbackDoneViews((prev) => {\n const newSet = new Set(prev);\n newSet.add(viewId);\n return newSet;\n });\n },\n }),\n []\n );\n\n const [activeExpandedViewJobId, setActiveExpandedViewJobId] = useState<\n string | null\n >(null);\n\n const [activeDetail, setActiveDetail] = useState<ActiveDetail | null>(null);\n const [subActiveDetail, setSubActiveDetail] = useState<ActiveDetail | null>(\n null\n );\n const [userClosedAside, setUserClosedAside] = useState(false);\n\n // Delay flag to prevent the aside from being auto-opened for a completed task\n const delayRef = useRef(false);\n useEffect(() => {\n if (conversationAvailable) {\n const timer = setTimeout(() => {\n delayRef.current = true;\n }, 1000);\n return () => {\n clearTimeout(timer);\n };\n }\n }, [conversationAvailable]);\n\n const hasInitialRequest = !!initialRequest;\n useEffect(() => {\n if (\n (delayRef.current || hasInitialRequest) &&\n lastDetail &&\n !userClosedAside\n ) {\n setActiveDetail(lastDetail);\n }\n }, [lastDetail, userClosedAside, hasInitialRequest]);\n\n useEffect(() => {\n getRuntime().applyPageTitle(pageTitle);\n }, [pageTitle]);\n\n const humanInput = useCallback(\n (input: string | null, action?: string, extra?: ExtraChatPayload) => {\n humanInputRef.current?.(input, action, extra);\n },\n [humanInputRef]\n );\n\n const firstMessage = messages[0];\n const userMessage = firstMessage?.role === \"user\" ? firstMessage : null;\n\n const [activeFile, setActiveFile] = useState<FileInfo | null>(null);\n const [activeImages, setActiveImages] = useState<ActiveImages | null>(null);\n\n const workspace = conversationId;\n const taskContextValue = useMemo(\n () => ({\n conversationId,\n conversationState,\n finished: conversationFinished,\n earlyFinished,\n tasks,\n errors,\n jobMap,\n flowMap,\n activityMap,\n workspace,\n previewUrlTemplate,\n replay,\n showCases,\n exampleProjects,\n aiEmployees,\n commands,\n uploadOptions,\n\n humanInput,\n onShare,\n onTerminate,\n supports,\n\n activeExpandedViewJobId,\n setActiveExpandedViewJobId,\n activeDetail,\n setActiveDetail,\n subActiveDetail,\n setSubActiveDetail,\n\n submittingFeedback,\n submittedFeedback,\n onSubmitFeedback: handleSubmitFeedback,\n setShowFeedback,\n showFeedbackOnView,\n onFeedbackOnView,\n feedbackDoneViews,\n\n skipToResults,\n watchAgain,\n tryItOut() {\n const win = window.open(\n `${getBasePath().slice(0, -1)}${tryItOutUrl ?? \"/elevo\"}`,\n \"_blank\"\n );\n if (win) {\n win.__elevo_try_it_out = userMessage\n ? {\n content: userMessage.content,\n cmd: userMessage.cmd,\n mentionedAiEmployeeId: userMessage.mentionedAiEmployeeId,\n }\n : {};\n }\n },\n activeFile,\n setActiveFile,\n activeImages,\n setActiveImages,\n }),\n [\n conversationId,\n conversationState,\n conversationFinished,\n earlyFinished,\n tasks,\n errors,\n jobMap,\n flowMap,\n activityMap,\n workspace,\n previewUrlTemplate,\n replay,\n showCases,\n exampleProjects,\n aiEmployees,\n commands,\n uploadOptions,\n\n humanInput,\n onShare,\n onTerminate,\n supports,\n\n activeExpandedViewJobId,\n activeDetail,\n subActiveDetail,\n\n submittingFeedback,\n submittedFeedback,\n handleSubmitFeedback,\n showFeedbackOnView,\n onFeedbackOnView,\n feedbackDoneViews,\n\n skipToResults,\n watchAgain,\n userMessage,\n tryItOutUrl,\n activeFile,\n activeImages,\n ]\n );\n\n const [depsReady, setDepsReady] = useState(false);\n useEffect(() => {\n let ignore = false;\n Promise.race([\n preloadHighlighter(\"light-plus\"),\n // Wait at most 5s\n new Promise((resolve) => setTimeout(resolve, 5000)),\n ]).finally(() => {\n if (!ignore) {\n setDepsReady(true);\n }\n });\n return () => {\n ignore = true;\n };\n }, []);\n\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const scrollContentRef = useRef<HTMLDivElement>(null);\n\n const { scrollable, scrollToBottom, toggleAutoScroll } = useAutoScroll(\n conversationAvailable && depsReady,\n scrollContainerRef,\n scrollContentRef\n );\n\n const fulfilledActiveDetail = useFulfilledActiveDetail(\n activeDetail,\n tasks,\n jobMap,\n flowMap,\n activityMap\n );\n\n const fulfilledSubActiveDetail = useFulfilledActiveDetail(\n subActiveDetail,\n tasks,\n jobMap,\n flowMap,\n activityMap\n );\n\n useHandleEscape(taskContextValue);\n\n const split = !!(activeDetail || subActiveDetail);\n useEffect(() => {\n onSplitChange(split);\n }, [onSplitChange, split]);\n\n useEffect(() => {\n scrollContainerRef.current?.focus();\n }, [conversationAvailable, depsReady]);\n\n const streamContextValue = useMemo(\n () => ({\n lastDetail,\n planMap,\n setUserClosedAside,\n toggleAutoScroll,\n }),\n [lastDetail, planMap, toggleAutoScroll]\n );\n\n return (\n <TaskContext.Provider value={taskContextValue}>\n <StreamContext.Provider value={streamContextValue}>\n <div className={styles.container}>\n <div className={styles.header}>\n <h1>{pageTitle}</h1>\n </div>\n {conversationAvailable && depsReady ? (\n <>\n <div\n className={styles.main}\n tabIndex={-1}\n ref={scrollContainerRef}\n >\n <div className={styles.narrow} ref={scrollContentRef}>\n {messages.map((msg, index, list) => (\n <div className={styles.message} key={index}>\n {msg.role === \"user\" ? (\n <UserMessage\n content={msg.content}\n cmd={msg.cmd}\n mentionedAiEmployeeId={msg.mentionedAiEmployeeId}\n files={msg.files}\n />\n ) : (\n <AssistantMessage\n chunks={msg.chunks}\n scopeState={conversationState}\n isLatest={index === list.length - 1 && !earlyFinished}\n finished={conversation.finished}\n />\n )}\n </div>\n ))}\n {activeAskUser && (\n <AskUser\n task={activeAskUser.task}\n parentJob={activeAskUser.parentJob}\n parentTask={activeAskUser.parentTask}\n />\n )}\n {earlyFinished && (\n <div className={styles.message}>\n <AssistantMessage earlyFinished />\n </div>\n )}\n {replay\n ? conversation?.finished && (\n <NodeReplay finished ui=\"chat\" />\n )\n : showFeedback &&\n (conversationState === \"completed\" ||\n (conversationState === \"failed\" &&\n showFeedbackAfterFailed)) &&\n tasks.length > 0 && (\n <NodeFeedback className={styles.feedback} />\n )}\n </div>\n </div>\n <button\n className={`${scrollStyles[\"scroll-down\"]} ${floatingStyles[\"floating-button\"]}`}\n hidden={!scrollable}\n onClick={scrollToBottom}\n >\n <WrappedIcon lib=\"antd\" icon=\"down\" />\n </button>\n {!replay || !conversation?.finished ? (\n <div className={styles.footer}>\n <div className={styles.narrow}>\n {replay ? (\n <NodeReplay />\n ) : (\n <ChatBox\n state={conversationState}\n canChat={canChat}\n showInput={activeAskUser ? \"never\" : \"auto\"}\n />\n )}\n </div>\n </div>\n ) : null}\n </>\n ) : (\n <div className={styles[\"loading-icon\"]}>\n <WrappedIcon\n lib=\"antd\"\n theme=\"outlined\"\n icon=\"loading-3-quarters\"\n spinning\n />\n </div>\n )}\n </div>\n {\n <div\n className={classNames(styles.aside, {\n [styles.expanded]: !!fulfilledActiveDetail,\n })}\n >\n {fulfilledActiveDetail && (\n <Aside\n detail={fulfilledActiveDetail}\n faded={!!fulfilledSubActiveDetail}\n />\n )}\n {fulfilledSubActiveDetail && (\n <Aside detail={fulfilledSubActiveDetail} isSubTask />\n )}\n </div>\n }\n {activeExpandedViewJobId && <ExpandedView views={views!} />}\n {showUiSwitch && (\n <div className={classNames(toolbarStyles.toolbar, styles.toolbar)}>\n <WrappedIconButton\n icon={ICON_CANVAS}\n variant=\"mini\"\n title={t(K.SWITCH_TO_CANVAS)}\n onClick={onSwitchToCanvas}\n />\n </div>\n )}\n {activeFile && <FilePreview file={activeFile} />}\n {activeImages && <ImagesPreview images={activeImages} />}\n </StreamContext.Provider>\n </TaskContext.Provider>\n );\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.aside--DDIdDtkt{padding:12px 12px 12px 0;height:100%}.faded--AsNxuT2v{opacity:0.4}.sub--d8EpebQt{position:absolute;top:16px;right:16px;left:-16px;height:calc(100% - 16px)}.box--niuFBiiQ{background:#ffffff;box-shadow:1px 1px 10px 0px rgba(0,10,26,0.1);border-radius:12px;height:100%;display:flex;flex-direction:column}.header--DPl_hrTp{height:52px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(0,0,0,0.15);padding:0 20px}.title--HlE9yRcJ{font-weight:500;font-size:16px;color:#262626}.body--OLKz1zeC{flex:1;min-height:0;padding:20px;display:flex;flex-direction:column}.body--OLKz1zeC.scrollable--JydKNhBJ{overflow-y:auto}.app--UanK0TGf{flex:1;min-height:0;background:#ffffff;border-radius:9px;border:1px solid #ccd1de;margin-top:16px;overflow:hidden;display:flex;flex-direction:column}.heading--ngRi_rQ4{background:#e6e9f3;color:#5e6472;padding:5px 14px}.content--I2i0y65v{font-size:12px;flex:1;min-height:0;position:relative}.scroller--mLfznC_I{height:100%;overflow-x:hidden;overflow-y:auto;overflow:hidden auto;padding:10px}.scroller--mLfznC_I.loading--U1GWHEp9{display:flex;align-items:center;justify-content:center}.editor--p_Sqs1os .content--I2i0y65v .code-block--XiUVX7st::part(wrapper){position:static;margin:0}.editor--p_Sqs1os .content--I2i0y65v .code-block--XiUVX7st::part(pre){background:none!important;padding:0;border-radius:0;border:0}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"aside\": `aside--DDIdDtkt`,\n\t\"faded\": `faded--AsNxuT2v`,\n\t\"sub\": `sub--d8EpebQt`,\n\t\"box\": `box--niuFBiiQ`,\n\t\"header\": `header--DPl_hrTp`,\n\t\"title\": `title--HlE9yRcJ`,\n\t\"body\": `body--OLKz1zeC`,\n\t\"scrollable\": `scrollable--JydKNhBJ`,\n\t\"app\": `app--UanK0TGf`,\n\t\"heading\": `heading--ngRi_rQ4`,\n\t\"content\": `content--I2i0y65v`,\n\t\"scroller\": `scroller--mLfznC_I`,\n\t\"loading\": `loading--U1GWHEp9`,\n\t\"editor\": `editor--p_Sqs1os`,\n\t\"code-block\": `code-block--XiUVX7st`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.heading--SbCRupnn{border-radius:9px;border:1px solid #ccd1de;background-image:radial-gradient(circle at 1px 1px,#ddd 1px,transparent 0px);background-size:25px 25px;background-position:12px}.header--LGXNxV5J{display:flex;align-items:center;padding:16px 30px}.status--aqbJGBcl{background:#aeb3bc;border-radius:100px;height:40px;padding:9px 16px;display:flex;align-items:center;gap:8px;font-size:18px;color:#ffffff}.status--aqbJGBcl eo-icon{font-size:22px}.status--aqbJGBcl.paused--U1cc3Ksn{background:#f0a22e}.status--aqbJGBcl.working--f2PYqFo7{background:#4f69ff}.status--aqbJGBcl.completed--Ihiekkve{background:#08bf33}.status--aqbJGBcl.failed--kB8wxIZ0{background:var(--color-error)}.title--IRvB2t7z{font-weight:500;font-size:16px;margin-left:40px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chart--mypbn8pI{padding:8px 22px 18px;overflow-x:auto}.body--jnk1EIz0{margin-top:16px;position:relative}.chat--nEzTEXbV{background:rgba(227,228,229,0.4);border:1px solid rgba(0,0,0,0.1);border-radius:8px;padding:16px 20px;flex:1;min-height:0;overflow-y:auto}.messages--vLiwUYSP{width:100%;margin:0 auto}.message--Okzj6NDx + .message--Okzj6NDx,\n.activity--ACHv4xek + .activity--ACHv4xek{margin-top:40px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"heading\": `heading--SbCRupnn`,\n\t\"header\": `header--LGXNxV5J`,\n\t\"status\": `status--aqbJGBcl`,\n\t\"paused\": `paused--U1cc3Ksn`,\n\t\"working\": `working--f2PYqFo7`,\n\t\"completed\": `completed--Ihiekkve`,\n\t\"failed\": `failed--kB8wxIZ0`,\n\t\"title\": `title--IRvB2t7z`,\n\t\"chart\": `chart--mypbn8pI`,\n\t\"body\": `body--jnk1EIz0`,\n\t\"chat\": `chat--nEzTEXbV`,\n\t\"messages\": `messages--vLiwUYSP`,\n\t\"message\": `message--Okzj6NDx`,\n\t\"activity\": `activity--ACHv4xek`\n};\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["getFlowOrActivityIcon","state","lib","theme","icon","spinning","___CSS_LOADER_EXPORT___","push","module","id","locals","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_REPLACEMENT_0___","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","undefined","K","NS","t","i18n","getFixedT","initializeI18n","en","WAITING","EXECUTING","PAUSED","SUCCEEDED","FAILED","TERMINATED","zh","ActivityDetail","forwardRef","LegacyActivityDetail","FlowApp","_ref","_flow$space","flow","activity","tasks","useContext","TaskContext","flowTask","useMemo","find","taskId","runningSpec","spec","map","stage","_stage$serviceFlowAct","serviceFlowActivities","task","name","startTime","endTime","activities","flatMap","s","_s$serviceFlowActivit","filter","act","flowStatus","text","className","styles","working","completed","failed","paused","getFlowStatusDisplay","scrollContainerRef","useRef","scrollContentRef","scrollable","scrollToBottom","toggleAutoScroll","useAutoScroll","activitiesRef","Map","useEffect","activityDetail","current","get","scrollIntoView","React","heading","header","classNames","status","WrappedIcon","title","space","chart","WrappedRunningFlow","onActivityClick","e","detail","body","chat","ref","messages","key","r","set","scrollStyles","floatingStyles","style","bottom","hidden","onClick","_ref2","activityRef","errors","activityTask","useConversationStream","rootTaskId","expandAskUser","useImperativeHandle","_activityRef$current","behavior","block","msg","index","list","message","role","UserMessage","content","mentionedAiEmployeeId","cmd","files","AssistantMessage","chunks","scopeState","isLatest","length","isSubTask","TaskApp","flowMap","activityMap","ICON_SHRINK","Aside","faded","setActiveDetail","setSubActiveDetail","setUserClosedAside","StreamContext","aside","sub","box","WrappedIconButton","variant","type","job","generatedView","ToolCallStatus","EditorApp","source","code","language","ToolCallDetail","app","editor","sharedStyles","markdown","scroller","WrappedCodeBlock","themeVariant","locales","ASK_USER_TIPS","AskUser","_activityMap$get$acti","_activityMap$get","_planMap$get","parentJob","parentTask","conversationState","finished","earlyFinished","replay","planMap","canChat","DONE_STATES","includes","skipActivitySubTasks","stepName","container","tips","ChatBox","showInput","input","ChatStreamComponent","_conversation$title","conversationId","initialRequest","replayDelay","supports","showHumanActions","showFeedback","propShowFeedback","showFeedbackAfterFailed","showFeedbackOnView","showUiSwitch","previewUrlTemplate","showCases","exampleProjects","tryItOutUrl","aiEmployees","commands","uploadOptions","onShare","onTerminate","onSubmitFeedback","onSwitchToCanvas","onFeedbackOnView","onDetailChange","onSplitChange","conversation","serviceFlows","humanInputRef","skipToResults","watchAgain","useConversationDetail","conversationAvailable","pageTitle","conversationDone","conversationFinished","mode","NON_WORKING_STATES","useFlowAndActivityMap","jobMap","lastDetail","activeAskUser","projectId","views","values","view","submittingFeedback","setSubmittingFeedback","useState","submittedFeedback","setSubmittedFeedback","setShowFeedback","feedbackDoneViews","setFeedbackDoneViews","handleSubmitFeedback","useCallback","feedbackSubmitDone","setTimeout","feedbackSubmitFailed","feedbackOnViewDone","viewId","prev","newSet","Set","add","activeExpandedViewJobId","setActiveExpandedViewJobId","activeDetail","subActiveDetail","userClosedAside","delayRef","timer","clearTimeout","hasInitialRequest","getRuntime","applyPageTitle","humanInput","action","extra","_humanInputRef$curren","call","firstMessage","userMessage","activeFile","setActiveFile","activeImages","setActiveImages","workspace","taskContextValue","tryItOut","win","window","open","getBasePath","slice","__elevo_try_it_out","depsReady","setDepsReady","ignore","Promise","race","preloadHighlighter","resolve","finally","fulfilledActiveDetail","useFulfilledActiveDetail","fulfilledSubActiveDetail","useHandleEscape","split","_scrollContainerRef$c","focus","streamContextValue","Provider","value","main","tabIndex","narrow","NodeReplay","ui","NodeFeedback","feedback","footer","expanded","ExpandedView","toolbarStyles","toolbar","ICON_CANVAS","SWITCH_TO_CANVAS","FilePreview","file","ImagesPreview","images"],"sourceRoot":""}