@next-bricks/ai-portal 0.1.0

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 (140) hide show
  1. package/dist/bricks.json +21 -0
  2. package/dist/chunks/1045.07fed1b5.js +2 -0
  3. package/dist/chunks/1045.07fed1b5.js.map +1 -0
  4. package/dist/chunks/1086.139e75b4.js +2 -0
  5. package/dist/chunks/1086.139e75b4.js.map +1 -0
  6. package/dist/chunks/1122.9dcaa54e.js +2 -0
  7. package/dist/chunks/1122.9dcaa54e.js.map +1 -0
  8. package/dist/chunks/114.edeb665e.js +2 -0
  9. package/dist/chunks/114.edeb665e.js.map +1 -0
  10. package/dist/chunks/1370.25ebf7b8.js +2 -0
  11. package/dist/chunks/1370.25ebf7b8.js.map +1 -0
  12. package/dist/chunks/1889.e5637ffa.js +2 -0
  13. package/dist/chunks/1889.e5637ffa.js.map +1 -0
  14. package/dist/chunks/1940.674f0e20.js +2 -0
  15. package/dist/chunks/1940.674f0e20.js.map +1 -0
  16. package/dist/chunks/2052.12bb32f3.js +2 -0
  17. package/dist/chunks/2052.12bb32f3.js.map +1 -0
  18. package/dist/chunks/2259.fc89bbe1.js +3 -0
  19. package/dist/chunks/2259.fc89bbe1.js.LICENSE.txt +17 -0
  20. package/dist/chunks/2259.fc89bbe1.js.map +1 -0
  21. package/dist/chunks/2277.a95810e5.js +2 -0
  22. package/dist/chunks/2277.a95810e5.js.map +1 -0
  23. package/dist/chunks/2569.af96d40a.js +2 -0
  24. package/dist/chunks/2569.af96d40a.js.map +1 -0
  25. package/dist/chunks/3144.a54c8d65.js +3 -0
  26. package/dist/chunks/3144.a54c8d65.js.LICENSE.txt +19 -0
  27. package/dist/chunks/3144.a54c8d65.js.map +1 -0
  28. package/dist/chunks/3171.33dbd1c2.js +2 -0
  29. package/dist/chunks/3171.33dbd1c2.js.map +1 -0
  30. package/dist/chunks/3426.053742ef.js +2 -0
  31. package/dist/chunks/3426.053742ef.js.map +1 -0
  32. package/dist/chunks/3458.90f259f4.js +3 -0
  33. package/dist/chunks/3458.90f259f4.js.LICENSE.txt +11 -0
  34. package/dist/chunks/3458.90f259f4.js.map +1 -0
  35. package/dist/chunks/3506.0d6e4b61.js +2 -0
  36. package/dist/chunks/3506.0d6e4b61.js.map +1 -0
  37. package/dist/chunks/3933.46c6b203.js +2 -0
  38. package/dist/chunks/3933.46c6b203.js.map +1 -0
  39. package/dist/chunks/4041.6ba6fafa.js +3 -0
  40. package/dist/chunks/4041.6ba6fafa.js.LICENSE.txt +9 -0
  41. package/dist/chunks/4041.6ba6fafa.js.map +1 -0
  42. package/dist/chunks/4306.7ea515ce.js +2 -0
  43. package/dist/chunks/4306.7ea515ce.js.map +1 -0
  44. package/dist/chunks/4507.5ef68765.js +3 -0
  45. package/dist/chunks/4507.5ef68765.js.LICENSE.txt +1 -0
  46. package/dist/chunks/4507.5ef68765.js.map +1 -0
  47. package/dist/chunks/4658.b0138e9e.js +2 -0
  48. package/dist/chunks/4658.b0138e9e.js.map +1 -0
  49. package/dist/chunks/5105.e769a484.js +2 -0
  50. package/dist/chunks/5105.e769a484.js.map +1 -0
  51. package/dist/chunks/5250.7614fa5b.js +3 -0
  52. package/dist/chunks/5250.7614fa5b.js.LICENSE.txt +8 -0
  53. package/dist/chunks/5250.7614fa5b.js.map +1 -0
  54. package/dist/chunks/5384.451ded3d.js +2 -0
  55. package/dist/chunks/5384.451ded3d.js.map +1 -0
  56. package/dist/chunks/5399.da78e6e2.js +2 -0
  57. package/dist/chunks/5399.da78e6e2.js.map +1 -0
  58. package/dist/chunks/5552.53db1092.js +2 -0
  59. package/dist/chunks/5552.53db1092.js.map +1 -0
  60. package/dist/chunks/6314.11c44a7e.js +2 -0
  61. package/dist/chunks/6314.11c44a7e.js.map +1 -0
  62. package/dist/chunks/6519.836946b6.js +2 -0
  63. package/dist/chunks/6519.836946b6.js.map +1 -0
  64. package/dist/chunks/6773.7fbec27a.js +2 -0
  65. package/dist/chunks/6773.7fbec27a.js.map +1 -0
  66. package/dist/chunks/7039.5503f3d9.js +2 -0
  67. package/dist/chunks/7039.5503f3d9.js.map +1 -0
  68. package/dist/chunks/726.0bc62720.js +2 -0
  69. package/dist/chunks/726.0bc62720.js.map +1 -0
  70. package/dist/chunks/7486.d3328a25.js +2 -0
  71. package/dist/chunks/7486.d3328a25.js.map +1 -0
  72. package/dist/chunks/7721.4c786e0a.js +3 -0
  73. package/dist/chunks/7721.4c786e0a.js.LICENSE.txt +3 -0
  74. package/dist/chunks/7721.4c786e0a.js.map +1 -0
  75. package/dist/chunks/7733.777c181e.js +2 -0
  76. package/dist/chunks/7733.777c181e.js.map +1 -0
  77. package/dist/chunks/843.0c7e4c28.js +2 -0
  78. package/dist/chunks/843.0c7e4c28.js.map +1 -0
  79. package/dist/chunks/871.623e9948.js +2 -0
  80. package/dist/chunks/871.623e9948.js.map +1 -0
  81. package/dist/chunks/8989.6f404d42.js +2 -0
  82. package/dist/chunks/8989.6f404d42.js.map +1 -0
  83. package/dist/chunks/9515.02c68755.js +2 -0
  84. package/dist/chunks/9515.02c68755.js.map +1 -0
  85. package/dist/chunks/9559.4479bc89.js +2 -0
  86. package/dist/chunks/9559.4479bc89.js.map +1 -0
  87. package/dist/chunks/9844.a4320543.js +2 -0
  88. package/dist/chunks/9844.a4320543.js.map +1 -0
  89. package/dist/chunks/chat-box.1ad19f84.js +2 -0
  90. package/dist/chunks/chat-box.1ad19f84.js.map +1 -0
  91. package/dist/chunks/cruise-canvas.a760429c.js +2 -0
  92. package/dist/chunks/cruise-canvas.a760429c.js.map +1 -0
  93. package/dist/chunks/main.c636a19a.js +2 -0
  94. package/dist/chunks/main.c636a19a.js.map +1 -0
  95. package/dist/examples.json +8 -0
  96. package/dist/images/854a0152.png +0 -0
  97. package/dist/images/a1d108f4.png +0 -0
  98. package/dist/images/b1e65906.png +0 -0
  99. package/dist/images/d4ea5a5c.png +0 -0
  100. package/dist/images/e7d89ec3.png +0 -0
  101. package/dist/index.bd9bab76.js +2 -0
  102. package/dist/index.bd9bab76.js.map +1 -0
  103. package/dist/manifest.json +60 -0
  104. package/dist/types.json +742 -0
  105. package/dist-types/bootstrap.d.ts +2 -0
  106. package/dist-types/chat-box/i18n.d.ts +15 -0
  107. package/dist-types/chat-box/index.d.ts +18 -0
  108. package/dist-types/chat-box/index.spec.d.ts +1 -0
  109. package/dist-types/cruise-canvas/NodeEnd/NodeEnd.d.ts +4 -0
  110. package/dist-types/cruise-canvas/NodeInstruction/NodeInstruction.d.ts +5 -0
  111. package/dist-types/cruise-canvas/NodeJob/NodeJob.d.ts +7 -0
  112. package/dist-types/cruise-canvas/NodeRequirement/NodeRequirement.d.ts +6 -0
  113. package/dist-types/cruise-canvas/NodeStart/NodeStart.d.ts +1 -0
  114. package/dist-types/cruise-canvas/PlanProgress/PlanProgress.d.ts +5 -0
  115. package/dist-types/cruise-canvas/ZoomBar/ZoomBar.d.ts +6 -0
  116. package/dist-types/cruise-canvas/bricks.d.ts +4 -0
  117. package/dist-types/cruise-canvas/cmdb.d.ts +14 -0
  118. package/dist-types/cruise-canvas/constants.d.ts +7 -0
  119. package/dist-types/cruise-canvas/i18n.d.ts +19 -0
  120. package/dist-types/cruise-canvas/index.d.ts +23 -0
  121. package/dist-types/cruise-canvas/interfaces.d.ts +114 -0
  122. package/dist-types/cruise-canvas/reducers/error.d.ts +3 -0
  123. package/dist-types/cruise-canvas/reducers/error.spec.d.ts +1 -0
  124. package/dist-types/cruise-canvas/reducers/index.d.ts +3 -0
  125. package/dist-types/cruise-canvas/reducers/interfaces.d.ts +15 -0
  126. package/dist-types/cruise-canvas/reducers/jobs.d.ts +4 -0
  127. package/dist-types/cruise-canvas/reducers/jobs.spec.d.ts +1 -0
  128. package/dist-types/cruise-canvas/reducers/task.d.ts +4 -0
  129. package/dist-types/cruise-canvas/reducers/task.spec.d.ts +1 -0
  130. package/dist-types/cruise-canvas/useAutoCenter.d.ts +14 -0
  131. package/dist-types/cruise-canvas/useAutoCenter.spec.d.ts +1 -0
  132. package/dist-types/cruise-canvas/useLayout.d.ts +16 -0
  133. package/dist-types/cruise-canvas/useLayout.spec.d.ts +1 -0
  134. package/dist-types/cruise-canvas/useTaskDetail.d.ts +8 -0
  135. package/dist-types/cruise-canvas/useTaskGraph.d.ts +5 -0
  136. package/dist-types/cruise-canvas/useZoom.d.ts +20 -0
  137. package/dist-types/index.d.ts +0 -0
  138. package/docs/chat-box.md +67 -0
  139. package/docs/cruise-canvas.md +165 -0
  140. package/package.json +45 -0
@@ -0,0 +1,2 @@
1
+ "use strict";(globalThis.webpackChunk_next_bricks_ai_portal=globalThis.webpackChunk_next_bricks_ai_portal||[]).push([[2277,4658],{4658:(e,t,r)=>{r.r(t),r.d(t,{inject:()=>m,transform:()=>v,transformAndInject:()=>w});var n=r(1030),a=r(9933);let i=function(e){return e[e.Initial=0]="Initial",e[e.ExpectField=1]="ExpectField",e[e.ExpectOptionalBeginDefault=2]="ExpectOptionalBeginDefault",e[e.ExpectDefaultValue=3]="ExpectDefaultValue",e[e.ExpectOptionalBeginPipe=4]="ExpectOptionalBeginPipe",e[e.ExpectPipeIdentifier=5]="ExpectPipeIdentifier",e[e.ExpectOptionalBeginPipeParameter=6]="ExpectOptionalBeginPipeParameter",e[e.ExpectPipeParameter=7]="ExpectPipeParameter",e[e.ExpectPlaceholderEnd=8]="ExpectPlaceholderEnd",e}({}),s=function(e){return e.Raw="Raw",e.BeginPlaceHolder="BeginPlaceHolder",e.Field="Field",e.BeginDefault="BeginDefault",e.LiteralString="LiteralString",e.BeginPipe="BeginPipe",e.PipeIdentifier="PipeIdentifier",e.BeginPipeParameter="BeginPipeParameter",e.EndPlaceHolder="EndPlaceHolder",e.JsonValue="JsonValue",e}({}),c=function(e){return e[e.Array=0]="Array",e[e.Object=1]="Object",e[e.String=2]="String",e[e.Others=3]="Others",e}({});function l(e){return new RegExp(`(${[].concat(e).map((e=>(0,n.escapeRegExp)(e))).join("|")})\\{`)}function o(e){var t;const r=y(e),n=null===(t=r.match(e.beginPlaceholder))||void 0===t?void 0:t[0],a=n?r.indexOf(n):-1;if(a>=0&&n&&"{"!==r.charAt(a+n.length)){const t=e.cursor+a;a>0&&e.tokens.push({type:s.Raw,value:r.substring(0,a)}),e.tokens.push({type:s.BeginPlaceHolder,loc:{start:t,end:t+n.length},value:n.substring(0,n.length-1)}),e.cursor+=a+n.length,e.status=i.ExpectField}else e.tokens.push({type:s.Raw,value:r}),e.cursor=e.raw.length}function u(e){e.cursor+=y(e).match(/^[ \r\n\t]*/)[0].length}function p(e){const[t]=y(e).match(/^[\w.*[\]\-\u{80}-\u{10FFFF}]*/u);e.tokens.push({type:s.Field,value:t}),e.cursor+=t.length,e.status=i.ExpectOptionalBeginDefault}function d(e){"="===y(e).charAt(0)?(e.tokens.push({type:s.BeginDefault}),e.cursor+=1,e.status=i.ExpectDefaultValue):e.status=i.ExpectOptionalBeginPipe}function f(e){k(e,i.ExpectOptionalBeginPipe)}function g(e){"|"===y(e).charAt(0)?(e.tokens.push({type:s.BeginPipe}),e.cursor+=1,e.status=i.ExpectPipeIdentifier):e.status=i.ExpectPlaceholderEnd}function h(e){const t=y(e).match(/^[a-zA-Z]\w*/);if(!t)throw new Error(`Expected a pipe identifier at index ${e.cursor} near: ${JSON.stringify(e.raw.substring(e.cursor))}`);const r=t[0];e.tokens.push({type:s.PipeIdentifier,value:r}),e.cursor+=r.length,e.status=i.ExpectOptionalBeginPipeParameter}function P(e){":"===y(e).charAt(0)?(e.tokens.push({type:s.BeginPipeParameter}),e.cursor+=1,e.status=i.ExpectPipeParameter):e.status=i.ExpectOptionalBeginPipe}function E(e){k(e,i.ExpectOptionalBeginPipeParameter)}function b(e){if("}"!==y(e).charAt(0))throw new Error(`Expected a placeholder end '}' at index ${e.cursor} near: ${JSON.stringify(e.raw.substring(e.cursor))}`);e.tokens.push({type:s.EndPlaceHolder,loc:{start:e.cursor,end:e.cursor+1}}),e.cursor+=1,e.status=i.Initial}const x=new Map([["false",!1],["null",null],["true",!0]]);function k(e,t){const r=y(e);if(/[0-9[{"]/.test(r.charAt(0))||/-[0-9]/.test(r.substring(0,2)))!function(e,t){const r=y(e),n=r.charAt(0),a="["===n?c.Array:"{"===n?c.Object:'"'===n?c.String:c.Others;let i=0,l=0,o=0,u=!1,p=!1,d=!1;for(;i<r.length;){const e=r.charAt(i);if(p)p=!1;else if(u)'"'===e?u=!1:"\\"===e&&(p=!0);else switch(e){case"[":o+=1;break;case"{":l+=1;break;case"]":o-=1;break;case"}":l-=1;break;case'"':u=!0}switch(i+=1,a){case c.Array:d=!o;break;case c.Object:d=!l;break;case c.String:d=!u;break;default:d=i<r.length&&/[^a-z0-9E.+-]/.test(r.charAt(i))}if(d)break}if(!d)throw new Error(`Failed to match a JSON value at index ${e.cursor} near: ${JSON.stringify(e.raw.substring(e.cursor))}`);e.tokens.push({type:s.JsonValue,value:JSON.parse(r.substring(0,i))}),e.cursor+=i,e.status=t}(e,t);else{const[r]=y(e).match(/^[\w\-\u{80}-\u{10FFFF}]*/u);x.has(r)?e.tokens.push({type:s.JsonValue,value:x.get(r)}):e.tokens.push({type:s.LiteralString,value:r}),e.cursor+=r.length,e.status=t}}function y(e){return e.raw.substring(e.cursor)}function v(e,t){return A(e,"@",t)}function m(e,t){return A(e,"$",t)}function w(e,t){return A(e,["@","$"],t)}function A(e,t,r){if(!function(e,t){return l(t).test(e)}(e,t))return e;const c=(x=r.data,function(e){let t=e.field?(0,n.get)(x,e.field):x;return void 0===t&&(t=e.defaultValue),(0,a.processPipes)(t,e.pipes)});var x;const k=function(e,t){return function(r){var i,s;const c=r.field.match(/^(?:(QUERY(?:_ARRAY)?|EVENT|query|event|APP|HASH|ANCHOR|SYS|FLAGS|CTX)\.)?(.+)$/);if(!c)return t.substring(r.loc.start,r.loc.end);let l,[,o,u]=c;!o&&/^[A-Z_]+$/.test(u)&&(o=u,u="*");const p={SYS:"sys",FLAGS:"flags"};switch(o){case"QUERY":case"query":l="*"===u?e.query:e.query.has(u)?e.query.get(u):void 0;break;case"QUERY_ARRAY":l=e.query.has(u)?e.query.getAll(u):void 0;break;case"EVENT":case"event":if(void 0===e.event)return t.substring(r.loc.start,r.loc.end);l="*"===u?e.event:(0,n.get)(e.event,u);break;case"APP":l="*"===u?null!==(i=e.overrideApp)&&void 0!==i?i:e.app:(0,n.get)(null!==(s=e.overrideApp)&&void 0!==s?s:e.app,u);break;case"HASH":l=e.location.hash;break;case"SYS":case"FLAGS":l="*"===u?e[p[o]]:(0,n.get)(e[p[o]],u);break;case"ANCHOR":{const t=e.location.hash?e.location.hash.substr(1):null;l="*"===u?t:(0,n.get)(t,u);break}case"CTX":{const e=t.substring(r.loc.start,r.loc.end);return console.error(`CTX is not supported in placeholder any more: "${e}"`),e}default:if(!e.match)return t.substring(r.loc.start,r.loc.end);l=e.match.params[u]}return void 0===l&&(l=r.defaultValue),(0,a.processPipes)(l,r.pipes)}}(r,e);return y=function(e,t){return function(e){const t={type:"InjectableString",elements:[]};let r;function n(t){return t===e[0].type&&(r=e.shift(),!0)}function a(t){if(r=e.shift(),Array.isArray(t)?!t.includes(r.type):t!==r.type)throw new Error(`Expected token: ${t}, received token: ${r.type}`)}for(;e.length>0;)if(n(s.Raw))t.elements.push({type:"RawString",value:r.value});else{a(s.BeginPlaceHolder);const e=r.loc.start,i=r.value;a(s.Field);const c={type:"Placeholder",symbol:i,field:r.value,defaultValue:void 0,pipes:[],loc:{start:e,end:e}};for(t.elements.push(c),n(s.BeginDefault)&&(a([s.JsonValue,s.LiteralString]),c.defaultValue=r.value);n(s.BeginPipe);){a(s.PipeIdentifier);const e={type:"PipeCall",identifier:r.value,parameters:[]};for(c.pipes.push(e);n(s.BeginPipeParameter);)a([s.JsonValue,s.LiteralString]),e.parameters.push(r.value)}a(s.EndPlaceHolder),c.loc.end=r.loc.end}return t}(function(e,t){const r={beginPlaceholder:l(t),raw:e,cursor:0,status:i.Initial,tokens:[]};for(;r.cursor<e.length;)switch(r.status){case i.Initial:o(r);break;case i.ExpectField:u(r),p(r);break;case i.ExpectOptionalBeginDefault:u(r),d(r);break;case i.ExpectDefaultValue:u(r),f(r);break;case i.ExpectOptionalBeginPipe:u(r),g(r);break;case i.ExpectPipeIdentifier:u(r),h(r);break;case i.ExpectOptionalBeginPipeParameter:u(r),P(r);break;case i.ExpectPipeParameter:u(r),E(r);break;case i.ExpectPlaceholderEnd:u(r),b(r)}if(r.status!==i.Initial)throw new Error("Expected a placeholder end '}' at the end");return r.tokens}(e,t))}(e,t).elements.map((e=>"RawString"===e.type?e.value:"$"===e.symbol?k(e):c(e))),1===y.length?y[0]:y.join("");var y}}}]);
2
+ //# sourceMappingURL=2277.a95810e5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunks/2277.a95810e5.js","mappings":"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","sources":["webpack:///../../node_modules/@next-core/inject/dist/esm/interfaces.js","webpack:///../../node_modules/@next-core/inject/dist/esm/lexical.js","webpack:///../../node_modules/@next-core/inject/dist/esm/compile.js","webpack:///../../node_modules/@next-core/inject/dist/esm/syntax.js"],"sourcesContent":["export let LexicalStatus = /*#__PURE__*/function (LexicalStatus) {\n LexicalStatus[LexicalStatus[\"Initial\"] = 0] = \"Initial\";\n LexicalStatus[LexicalStatus[\"ExpectField\"] = 1] = \"ExpectField\";\n LexicalStatus[LexicalStatus[\"ExpectOptionalBeginDefault\"] = 2] = \"ExpectOptionalBeginDefault\";\n LexicalStatus[LexicalStatus[\"ExpectDefaultValue\"] = 3] = \"ExpectDefaultValue\";\n LexicalStatus[LexicalStatus[\"ExpectOptionalBeginPipe\"] = 4] = \"ExpectOptionalBeginPipe\";\n LexicalStatus[LexicalStatus[\"ExpectPipeIdentifier\"] = 5] = \"ExpectPipeIdentifier\";\n LexicalStatus[LexicalStatus[\"ExpectOptionalBeginPipeParameter\"] = 6] = \"ExpectOptionalBeginPipeParameter\";\n LexicalStatus[LexicalStatus[\"ExpectPipeParameter\"] = 7] = \"ExpectPipeParameter\";\n LexicalStatus[LexicalStatus[\"ExpectPlaceholderEnd\"] = 8] = \"ExpectPlaceholderEnd\";\n return LexicalStatus;\n}({});\nexport let TokenType = /*#__PURE__*/function (TokenType) {\n TokenType[\"Raw\"] = \"Raw\";\n TokenType[\"BeginPlaceHolder\"] = \"BeginPlaceHolder\";\n TokenType[\"Field\"] = \"Field\";\n TokenType[\"BeginDefault\"] = \"BeginDefault\";\n TokenType[\"LiteralString\"] = \"LiteralString\";\n TokenType[\"BeginPipe\"] = \"BeginPipe\";\n TokenType[\"PipeIdentifier\"] = \"PipeIdentifier\";\n TokenType[\"BeginPipeParameter\"] = \"BeginPipeParameter\";\n TokenType[\"EndPlaceHolder\"] = \"EndPlaceHolder\";\n TokenType[\"JsonValue\"] = \"JsonValue\";\n return TokenType;\n}({});\nexport let JsonValueType = /*#__PURE__*/function (JsonValueType) {\n JsonValueType[JsonValueType[\"Array\"] = 0] = \"Array\";\n JsonValueType[JsonValueType[\"Object\"] = 1] = \"Object\";\n JsonValueType[JsonValueType[\"String\"] = 2] = \"String\";\n JsonValueType[JsonValueType[\"Others\"] = 3] = \"Others\";\n return JsonValueType;\n}({});\n//# sourceMappingURL=interfaces.js.map","import { escapeRegExp } from \"lodash\";\nimport { LexicalStatus, TokenType, JsonValueType } from \"./interfaces.js\";\nexport function getRegExpOfPlaceholder(symbols) {\n return new RegExp(`(${[].concat(symbols).map(symbol => escapeRegExp(symbol)).join(\"|\")})\\\\{`);\n}\nexport function tokenize(raw, symbols) {\n const context = {\n beginPlaceholder: getRegExpOfPlaceholder(symbols),\n raw,\n cursor: 0,\n status: LexicalStatus.Initial,\n tokens: []\n };\n while (context.cursor < raw.length) {\n switch (context.status) {\n case LexicalStatus.Initial:\n eatOptionalRawAndOptionalPlaceholderBegin(context);\n break;\n case LexicalStatus.ExpectField:\n eatWhitespace(context);\n eatField(context);\n break;\n case LexicalStatus.ExpectOptionalBeginDefault:\n eatWhitespace(context);\n eatOptionalDefault(context);\n break;\n case LexicalStatus.ExpectDefaultValue:\n eatWhitespace(context);\n eatDefaultValue(context);\n break;\n case LexicalStatus.ExpectOptionalBeginPipe:\n eatWhitespace(context);\n eatOptionalBeginPipe(context);\n break;\n case LexicalStatus.ExpectPipeIdentifier:\n eatWhitespace(context);\n eatPipeIdentifier(context);\n break;\n case LexicalStatus.ExpectOptionalBeginPipeParameter:\n eatWhitespace(context);\n eatOptionalBeginPipeParameter(context);\n break;\n case LexicalStatus.ExpectPipeParameter:\n eatWhitespace(context);\n eatPipeParameter(context);\n break;\n case LexicalStatus.ExpectPlaceholderEnd:\n eatWhitespace(context);\n eatPlaceholderEnd(context);\n break;\n }\n }\n if (context.status !== LexicalStatus.Initial) {\n throw new Error(\"Expected a placeholder end '}' at the end\");\n }\n return context.tokens;\n}\nfunction eatOptionalRawAndOptionalPlaceholderBegin(context) {\n var _subRaw$match;\n const subRaw = getSubRaw(context);\n const matchedPlaceholder = (_subRaw$match = subRaw.match(context.beginPlaceholder)) === null || _subRaw$match === void 0 ? void 0 : _subRaw$match[0];\n const subCursor = matchedPlaceholder ? subRaw.indexOf(matchedPlaceholder) : -1;\n if (subCursor >= 0 && matchedPlaceholder && subRaw.charAt(subCursor + matchedPlaceholder.length) !== \"{\") {\n const nextCursor = context.cursor + subCursor;\n if (subCursor > 0) {\n context.tokens.push({\n type: TokenType.Raw,\n value: subRaw.substring(0, subCursor)\n });\n }\n context.tokens.push({\n type: TokenType.BeginPlaceHolder,\n loc: {\n start: nextCursor,\n end: nextCursor + matchedPlaceholder.length\n },\n value: matchedPlaceholder.substring(0, matchedPlaceholder.length - 1)\n });\n context.cursor += subCursor + matchedPlaceholder.length;\n context.status = LexicalStatus.ExpectField;\n } else {\n context.tokens.push({\n type: TokenType.Raw,\n value: subRaw\n });\n context.cursor = context.raw.length;\n }\n}\nfunction eatWhitespace(context) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n context.cursor += getSubRaw(context).match(/^[ \\r\\n\\t]*/)[0].length;\n}\nfunction eatField(context) {\n // Only allow alphanumeric, `_`, `.`, `*`, `[`, `]`, `-` and other non-ascii.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const [value] = getSubRaw(context).match(/^[\\w.*[\\]\\-\\u{80}-\\u{10FFFF}]*/u);\n context.tokens.push({\n type: TokenType.Field,\n value\n });\n context.cursor += value.length;\n context.status = LexicalStatus.ExpectOptionalBeginDefault;\n}\nfunction eatOptionalDefault(context) {\n if (getSubRaw(context).charAt(0) === \"=\") {\n context.tokens.push({\n type: TokenType.BeginDefault\n });\n context.cursor += 1;\n context.status = LexicalStatus.ExpectDefaultValue;\n } else {\n context.status = LexicalStatus.ExpectOptionalBeginPipe;\n }\n}\nfunction eatDefaultValue(context) {\n eatJsonValueOrLiteralString(context, LexicalStatus.ExpectOptionalBeginPipe);\n}\nfunction eatOptionalBeginPipe(context) {\n if (getSubRaw(context).charAt(0) === \"|\") {\n context.tokens.push({\n type: TokenType.BeginPipe\n });\n context.cursor += 1;\n context.status = LexicalStatus.ExpectPipeIdentifier;\n } else {\n context.status = LexicalStatus.ExpectPlaceholderEnd;\n }\n}\nfunction eatPipeIdentifier(context) {\n const matches = getSubRaw(context).match(/^[a-zA-Z]\\w*/);\n if (!matches) {\n throw new Error(`Expected a pipe identifier at index ${context.cursor} near: ${JSON.stringify(context.raw.substring(context.cursor))}`);\n }\n const value = matches[0];\n context.tokens.push({\n type: TokenType.PipeIdentifier,\n value\n });\n context.cursor += value.length;\n context.status = LexicalStatus.ExpectOptionalBeginPipeParameter;\n}\nfunction eatOptionalBeginPipeParameter(context) {\n if (getSubRaw(context).charAt(0) === \":\") {\n context.tokens.push({\n type: TokenType.BeginPipeParameter\n });\n context.cursor += 1;\n context.status = LexicalStatus.ExpectPipeParameter;\n } else {\n context.status = LexicalStatus.ExpectOptionalBeginPipe;\n }\n}\nfunction eatPipeParameter(context) {\n eatJsonValueOrLiteralString(context, LexicalStatus.ExpectOptionalBeginPipeParameter);\n}\nfunction eatPlaceholderEnd(context) {\n if (getSubRaw(context).charAt(0) === \"}\") {\n context.tokens.push({\n type: TokenType.EndPlaceHolder,\n loc: {\n start: context.cursor,\n end: context.cursor + 1\n }\n });\n context.cursor += 1;\n context.status = LexicalStatus.Initial;\n } else {\n throw new Error(`Expected a placeholder end '}' at index ${context.cursor} near: ${JSON.stringify(context.raw.substring(context.cursor))}`);\n }\n}\nconst jsonLiteralMap = new Map([[\"false\", false], [\"null\", null], [\"true\", true]]);\nfunction eatJsonValueOrLiteralString(context, nextStatus) {\n const subRaw = getSubRaw(context);\n if (/[0-9[{\"]/.test(subRaw.charAt(0)) || /-[0-9]/.test(subRaw.substring(0, 2))) {\n eatJsonValue(context, nextStatus);\n } else {\n // Accept any characters except controls and whitespace.\n // Only allow alphanumeric, `_`, `-` and other non-ascii.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const [value] = getSubRaw(context).match(/^[\\w\\-\\u{80}-\\u{10FFFF}]*/u);\n if (jsonLiteralMap.has(value)) {\n context.tokens.push({\n type: TokenType.JsonValue,\n value: jsonLiteralMap.get(value)\n });\n } else {\n context.tokens.push({\n type: TokenType.LiteralString,\n value\n });\n }\n context.cursor += value.length;\n context.status = nextStatus;\n }\n}\n\n// 我们不需要非常精确地在一段字符串中匹配出一段*完整合法的* JSON value,\n// 而只需要找到一段*可能是完整合法的* JSON value 即可,解析的工作交给 `JSON.parse()`。\n// 由于 JSON 中 object/array/string 的镜像起止符特性,我们尝试去完成这些符号匹配即可。\nfunction eatJsonValue(context, nextStatus) {\n const subRaw = getSubRaw(context);\n const firstChar = subRaw.charAt(0);\n const valueType = firstChar === \"[\" ? JsonValueType.Array : firstChar === \"{\" ? JsonValueType.Object : firstChar === '\"' ? JsonValueType.String : JsonValueType.Others;\n let subCursor = 0;\n let objectBracesToMatch = 0;\n let arrayBracketsToMatch = 0;\n let stringQuotesToClose = false;\n let stringBackslashToEscape = false;\n let matched = false;\n while (subCursor < subRaw.length) {\n const char = subRaw.charAt(subCursor);\n if (stringBackslashToEscape) {\n stringBackslashToEscape = false;\n } else if (stringQuotesToClose) {\n if (char === '\"') {\n stringQuotesToClose = false;\n } else if (char === \"\\\\\") {\n stringBackslashToEscape = true;\n }\n } else {\n switch (char) {\n case \"[\":\n arrayBracketsToMatch += 1;\n break;\n case \"{\":\n objectBracesToMatch += 1;\n break;\n case \"]\":\n arrayBracketsToMatch -= 1;\n break;\n case \"}\":\n objectBracesToMatch -= 1;\n break;\n case '\"':\n stringQuotesToClose = true;\n break;\n }\n }\n subCursor += 1;\n switch (valueType) {\n case JsonValueType.Array:\n matched = !arrayBracketsToMatch;\n break;\n case JsonValueType.Object:\n matched = !objectBracesToMatch;\n break;\n case JsonValueType.String:\n matched = !stringQuotesToClose;\n break;\n default:\n // 对于其它类型,如果下一个字符不再是这些值类型可能的字符时,我们认为 JSON value 完成匹配。\n // 其它可能的值类型:number/boolean/null/undefined。\n matched = subCursor < subRaw.length && /[^a-z0-9E.+-]/.test(subRaw.charAt(subCursor));\n }\n if (matched) {\n break;\n }\n }\n if (!matched) {\n throw new Error(`Failed to match a JSON value at index ${context.cursor} near: ${JSON.stringify(context.raw.substring(context.cursor))}`);\n }\n context.tokens.push({\n type: TokenType.JsonValue,\n value: JSON.parse(subRaw.substring(0, subCursor))\n });\n context.cursor += subCursor;\n context.status = nextStatus;\n}\nfunction getSubRaw(context) {\n return context.raw.substring(context.cursor);\n}\n//# sourceMappingURL=lexical.js.map","import { get } from \"lodash\";\nimport { processPipes } from \"@next-core/pipes\";\nimport { parseInjectableString } from \"./syntax.js\";\nimport { getRegExpOfPlaceholder } from \"./lexical.js\";\nexport function transform(raw, context) {\n return compile(raw, \"@\", context);\n}\nexport function inject(raw, context) {\n return compile(raw, \"$\", context);\n}\nexport function transformAndInject(raw, context) {\n return compile(raw, [\"@\", \"$\"], context);\n}\nfunction compile(raw, symbols, context) {\n // const symbols = [\"@\", \"$\"];\n if (!isInjectable(raw, symbols)) {\n return raw;\n }\n const transformNode = transformNodeFactory(context.data);\n const injectNode = injectNodeFactory(context, raw);\n const tree = parseInjectableString(raw, symbols);\n const values = tree.elements.map(node => node.type === \"RawString\" ? node.value : node.symbol === \"$\" ? injectNode(node) : transformNode(node));\n return reduceCompiledValues(values);\n}\nfunction reduceCompiledValues(values) {\n // If the whole string is a placeholder, we should keep the original value.\n if (values.length === 1) {\n return values[0];\n }\n\n // If an element is `undefined`, `null` or an empty array `[]`, it is converted to an empty string.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join#Description\n return values.join(\"\");\n}\nfunction isInjectable(raw, symbols) {\n return getRegExpOfPlaceholder(symbols).test(raw);\n}\nfunction transformNodeFactory(data) {\n return function transformNode(node) {\n // If meet `@{}`, return `data`.\n let result = node.field ? get(data, node.field) : data;\n if (result === undefined) {\n result = node.defaultValue;\n }\n return processPipes(result, node.pipes);\n };\n}\nfunction injectNodeFactory(context, raw) {\n return function injectNode(node) {\n var _context$overrideApp, _context$overrideApp2;\n const matches = node.field.match(/^(?:(QUERY(?:_ARRAY)?|EVENT|query|event|APP|HASH|ANCHOR|SYS|FLAGS|CTX)\\.)?(.+)$/);\n if (!matches) {\n // Keep the original raw partial when meet a unknown namespace.\n return raw.substring(node.loc.start, node.loc.end);\n }\n let [, namespace, subField] = matches;\n\n // Support namespace with no subfield such as `${ANCHOR}`.\n // But distinguish with match params. E.g. `${query}` is a match param.\n if (!namespace && /^[A-Z_]+$/.test(subField)) {\n namespace = subField;\n subField = \"*\";\n }\n let result;\n const SimpleContextMap = {\n SYS: \"sys\",\n FLAGS: \"flags\"\n };\n switch (namespace) {\n case \"QUERY\":\n case \"query\":\n if (subField === \"*\") {\n result = context.query;\n } else {\n result = context.query.has(subField) ? context.query.get(subField) : undefined;\n }\n break;\n case \"QUERY_ARRAY\":\n result = context.query.has(subField) ? context.query.getAll(subField) : undefined;\n break;\n case \"EVENT\":\n case \"event\":\n if (context.event === undefined) {\n // Keep the original raw partial when meet a `${EVENT}` in non-event context.\n return raw.substring(node.loc.start, node.loc.end);\n }\n result = subField === \"*\" ? context.event : get(context.event, subField);\n break;\n case \"APP\":\n result = subField === \"*\" ? (_context$overrideApp = context.overrideApp) !== null && _context$overrideApp !== void 0 ? _context$overrideApp : context.app : get((_context$overrideApp2 = context.overrideApp) !== null && _context$overrideApp2 !== void 0 ? _context$overrideApp2 : context.app, subField);\n break;\n case \"HASH\":\n result = context.location.hash;\n break;\n case \"SYS\":\n case \"FLAGS\":\n result = subField === \"*\" ? context[SimpleContextMap[namespace]] : get(context[SimpleContextMap[namespace]], subField);\n break;\n case \"ANCHOR\":\n {\n const anchor = context.location.hash ? context.location.hash.substr(1) : null;\n result = subField === \"*\" ? anchor : get(anchor, subField);\n break;\n }\n case \"CTX\":\n {\n const original = raw.substring(node.loc.start, node.loc.end);\n // eslint-disable-next-line no-console\n console.error(`CTX is not supported in placeholder any more: \"${original}\"`);\n return original;\n }\n default:\n if (context.match) {\n result = context.match.params[subField];\n } else {\n // If the context is empty, return the original raw partial.\n return raw.substring(node.loc.start, node.loc.end);\n }\n }\n if (result === undefined) {\n result = node.defaultValue;\n }\n return processPipes(result, node.pipes);\n };\n}\n//# sourceMappingURL=compile.js.map","import { tokenize } from \"./lexical.js\";\nimport { TokenType } from \"./interfaces.js\";\nexport function parseInjectableString(raw, symbols) {\n return parseTokens(tokenize(raw, symbols));\n}\nfunction parseTokens(tokens) {\n const tree = {\n type: \"InjectableString\",\n elements: []\n };\n let token;\n function optionalToken(type) {\n if (type === tokens[0].type) {\n token = tokens.shift();\n return true;\n }\n return false;\n }\n function acceptToken(type) {\n token = tokens.shift();\n if (Array.isArray(type) ? !type.includes(token.type) : type !== token.type) {\n throw new Error(`Expected token: ${type}, received token: ${token.type}`);\n }\n }\n while (tokens.length > 0) {\n if (optionalToken(TokenType.Raw)) {\n tree.elements.push({\n type: \"RawString\",\n value: token.value\n });\n } else {\n acceptToken(TokenType.BeginPlaceHolder);\n const start = token.loc.start;\n const symbol = token.value;\n acceptToken(TokenType.Field);\n const placeholder = {\n type: \"Placeholder\",\n symbol,\n field: token.value,\n defaultValue: undefined,\n pipes: [],\n loc: {\n start,\n end: start\n }\n };\n tree.elements.push(placeholder);\n if (optionalToken(TokenType.BeginDefault)) {\n acceptToken([TokenType.JsonValue, TokenType.LiteralString]);\n placeholder.defaultValue = token.value;\n }\n while (optionalToken(TokenType.BeginPipe)) {\n acceptToken(TokenType.PipeIdentifier);\n const pipe = {\n type: \"PipeCall\",\n identifier: token.value,\n parameters: []\n };\n placeholder.pipes.push(pipe);\n while (optionalToken(TokenType.BeginPipeParameter)) {\n acceptToken([TokenType.JsonValue, TokenType.LiteralString]);\n pipe.parameters.push(token.value);\n }\n }\n acceptToken(TokenType.EndPlaceHolder);\n placeholder.loc.end = token.loc.end;\n }\n }\n return tree;\n}\n//# sourceMappingURL=syntax.js.map"],"names":["LexicalStatus","TokenType","JsonValueType","getRegExpOfPlaceholder","symbols","RegExp","concat","map","symbol","escapeRegExp","join","eatOptionalRawAndOptionalPlaceholderBegin","context","_subRaw$match","subRaw","getSubRaw","matchedPlaceholder","match","beginPlaceholder","subCursor","indexOf","charAt","length","nextCursor","cursor","tokens","push","type","Raw","value","substring","BeginPlaceHolder","loc","start","end","status","ExpectField","raw","eatWhitespace","eatField","Field","ExpectOptionalBeginDefault","eatOptionalDefault","BeginDefault","ExpectDefaultValue","ExpectOptionalBeginPipe","eatDefaultValue","eatJsonValueOrLiteralString","eatOptionalBeginPipe","BeginPipe","ExpectPipeIdentifier","ExpectPlaceholderEnd","eatPipeIdentifier","matches","Error","JSON","stringify","PipeIdentifier","ExpectOptionalBeginPipeParameter","eatOptionalBeginPipeParameter","BeginPipeParameter","ExpectPipeParameter","eatPipeParameter","eatPlaceholderEnd","EndPlaceHolder","Initial","jsonLiteralMap","Map","nextStatus","test","firstChar","valueType","Array","Object","String","Others","objectBracesToMatch","arrayBracketsToMatch","stringQuotesToClose","stringBackslashToEscape","matched","char","JsonValue","parse","eatJsonValue","has","get","LiteralString","transform","compile","inject","transformAndInject","isInjectable","transformNode","data","node","result","field","undefined","defaultValue","processPipes","pipes","injectNode","_context$overrideApp","_context$overrideApp2","namespace","subField","SimpleContextMap","SYS","FLAGS","query","getAll","event","overrideApp","app","location","hash","anchor","substr","original","console","error","params","injectNodeFactory","values","tree","elements","token","optionalToken","shift","acceptToken","isArray","includes","placeholder","pipe","identifier","parameters","parseTokens","tokenize","parseInjectableString"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(globalThis.webpackChunk_next_bricks_ai_portal=globalThis.webpackChunk_next_bricks_ai_portal||[]).push([[2569],{79:(e,t,n)=>{n.d(t,{I:()=>s,K:()=>a,NS:()=>r,t:()=>i});var o=n(1147);let a=function(e){return e.YES="YES",e.NO="NO",e.PLAN_COMPLETED="PLAN_COMPLETED",e.TASK_COMPLETED="TASK_COMPLETED",e.SHARE="SHARE",e}({});const r="bricks/ai-portal/cruise-canvas",s={en:{YES:"Yes",NO:"No",PLAN_COMPLETED:"All jobs done",TASK_COMPLETED:"Task completed",SHARE:"Share"},zh:{YES:"是",NO:"否",PLAN_COMPLETED:"所有任务已全部完成",TASK_COMPLETED:"任务完成",SHARE:"分享"}},i=o.i18n.getFixedT(null,r)},1451:(e,t,n)=>{n.d(t,{e:()=>d});var o=n(9575),a=n(8769),r=n(9435),s=n(9126);const i=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","font-variant","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing","word-break","white-space"];let l;const c=/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"metaKey":"ctrlKey",d=a.forwardRef(u);function u(e,t){let{autoResize:n,minRows:d,maxRows:u,borderSize:p,paddingSize:m,containerRef:g,value:f,style:h,submitWhen:b,onChange:k,onSubmit:x,onKeyDown:v,onCompositionStart:w,onCompositionEnd:y,...E}=e;const A=null==n||n,[D,B]=(0,a.useState)(null!=f?f:""),V=(0,a.useRef)(null),[S,z]=(0,a.useState)(null);(0,a.useImperativeHandle)(t,(()=>({focus:()=>{const e=V.current;if(e){var t;const n=null===(t=e.value)||void 0===t?void 0:t.length;e.focus(),n&&e.setSelectionRange(n,n)}}})),[]);const T=(0,a.useCallback)((()=>{const e=V.current;if(e&&A){const t=function(e,t){const{minRows:n=null,maxRows:o=null,borderSize:a=2,paddingSize:r=8}=null!=t?t:{};l||(l=document.createElement("textarea"),l.setAttribute("tab-index","-1"),l.setAttribute("aria-hidden","true"),document.body.appendChild(l));const s=window.getComputedStyle(e),c=i.map((e=>`${e}:${s.getPropertyValue(e)}`)).join(";");let d,u,p;l.setAttribute("style",`${c};\n min-height: 0!important;\n max-height: none!important;\n height: 0!important;\n visibility: hidden!important;\n overflow: hidden!important;\n position: absolute!important;\n z-index: -1000!important;\n top: 0!important;\n right: 0!important;\n pointer-events: none!important;\n`),l.value=e.value||e.placeholder||"";let m=l.scrollHeight+a;if(null!==n||null!==o){const e=parseFloat(window.getComputedStyle(l).getPropertyValue("line-height"));null!==n&&(d=e*n+r+a,m=Math.max(d,m)),null!==o&&(u=e*o+r+a,m<=u&&(p="hidden"),m=Math.min(u,m))}const g={height:m,overflowY:p,resize:"none"};return d&&(g.minHeight=d),u&&(g.maxHeight=u),g}(e,{minRows:d,maxRows:u,borderSize:p,paddingSize:m});(0,r.flushSync)((()=>{z(t)}))}}),[A,u,d,p,m]);(0,a.useEffect)((()=>{B(null!=f?f:"")}),[f]),(0,a.useEffect)((()=>{T()}),[T,D]);const C=(0,a.useRef)(!1),N=(0,a.useCallback)((e=>{C.current=!0,null==w||w(e)}),[w]),Q=(0,a.useCallback)((e=>{C.current=!1,null==y||y(e)}),[y]),_=(0,a.useCallback)((e=>{C.current||("Enter"===e.key&&("enter-without-shift"===b?!e.shiftKey:"enter-with-mod"===b&&e[c])&&(e.preventDefault(),e.stopPropagation(),null==x||x(e)),null==v||v(e))}),[v,x,b]);return(0,a.useEffect)((()=>{const e=null==g?void 0:g.current;if(!e||!A)return;let t;const n=new s.A((n=>{for(const o of n)if(o.target===e){const e=o.contentBoxSize?o.contentBoxSize[0]?o.contentBoxSize[0].inlineSize:o.contentBoxSize.inlineSize:o.contentRect.width;if(void 0!==e&&e!==t){const n=!t;t=e,n||requestAnimationFrame(T)}}}));return n.observe(e),()=>{n.disconnect()}}),[A,g,T]),a.createElement("textarea",(0,o.A)({},E,{ref:V,value:D,style:{...h,...S},onChange:e=>{B(e.target.value),null==k||k(e)},onCompositionStart:N,onCompositionEnd:Q,onKeyDown:_}))}},1776:(e,t,n)=>{e.exports=n.p+"images/a1d108f4.png"},2464:(e,t,n)=>{n.d(t,{A:()=>b});var o=n(2591),a=n.n(o),r=n(1740),s=n.n(r),i=n(8128),l=n.n(i),c=n(855),d=n.n(c),u=n(3051),p=n.n(u),m=n(3656),g=n.n(m),f=n(7110),h={};h.styleTagTransform=g(),h.setAttributes=d(),h.insert=l().bind(null,"head"),h.domAPI=s(),h.insertStyleElement=p(),a()(f.A,h);const b=f.A&&f.A.locals?f.A.locals:void 0},2773:(e,t,n)=>{n.d(t,{S:()=>p});var o=n(8769),a=n(1030),r=n(3357),s=n(4427),i=n(5050);function l(e){const t=[];let n;for(const o of e){if(n&&n===o.role){const e=t[t.length-1];e.parts=[...e.parts,...o.parts]}else t.push({...o});n=o.role}for(const e of t)e.parts=c(e.parts);return t}function c(e){const t=[];let n;for(const o of e)n&&n===o.type&&"text"===o.type?t[t.length-1].text+=o.text:t.push({...o}),n=o.type;return t}const d=(u={task:(e,t)=>{switch(t.type){case"sse":{const n=(0,a.pick)(t.payload,["id","requirement","state","startTime","endTime","plan"]);return"blocked"===n.state&&(n.state="working"),t.isInitial?n:e&&(0,a.isMatchWith)(e,n,a.isEqual)?e:{...e,...n}}case"reset":return null}return e},jobs:(e,t)=>{switch(t.type){case"sse":{const s=t.payload.jobs;let i=t.isInitial?[]:e;if(!Array.isArray(s)||0===s.length)return i;for(const e of s){var n,o;"blocked"===e.state&&(e.state="working");const t=null!==(n=null===(o=i)||void 0===o?void 0:o.findIndex((t=>t.id===e.id)))&&void 0!==n?n:-1,{messages:s,toolCall:c}=e;if("string"==typeof(null==c?void 0:c.arguments))try{e.toolCall.arguments=JSON.parse(c.arguments)}catch(t){console.error("Failed to parse toolCall arguments",t),e.toolCall.arguments={},e.toolCall.argumentsParseFailed=!0,e.toolCall.argumentsParseError=t}if(-1===t)i=Array.isArray(s)&&s.length>0?[...i,{...e,messages:l(s)}]:[...i,e];else{const n=i[t],o=(0,a.pick)(e,["id","upstream","parent","state","instruction","toolCall","isError","startTime","endTime"]);var r;Array.isArray(s)&&s.length>0&&(o.messages=l([...null!==(r=n.messages)&&void 0!==r?r:[],...s])),(0,a.isMatchWith)(n,o,a.isEqual)||(i=[...i.slice(0,t),{...n,...o},...i.slice(t+1)])}}return i}case"reset":return 0===e.length?e:[]}return e},error:(e,t)=>{switch(t.type){case"sse":{const n=t.payload.error;return null===e&&"string"==typeof n?n:e}case"reset":return null}return e}},(e,t)=>Object.fromEntries(Object.entries(u).map((n=>{let[o,a]=n;return[o,a(e[o],t)]}))));var u;function p(e){const[{task:t,jobs:n,error:l},c]=(0,o.useReducer)(d,null,(()=>({task:null,jobs:[],error:null}))),u=(0,o.useRef)();(0,o.useEffect)((()=>{if(c({type:"reset"}),u.current=void 0,!e)return;let t,n=!1,o=!1;const a=async()=>{if(!o){o=!0,t=new AbortController;try{const a=await(0,s.createSSEStream)(`${(0,i.getBasePath)()}api/gateway/logic.llm.aiops_service/api/v1/llm/agent/flow/${e}`,{signal:t.signal}),r=await a;let l=!0;for await(const e of r){if(n)return void(o=!1);c({type:"sse",payload:e,isInitial:l}),l=!1}}catch(e){console.error("sse failed",e),(0,i.handleHttpError)(e)}finally{o=!1}}};return u.current=async(t,n)=>{const o=await fetch(`${(0,i.getBasePath)()}api/gateway/logic.llm.aiops_service/api/v1/llm/agent/flow/${e}/job/${t}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e,jobId:t,input:n})});if(o.ok)a();else{let e;console.error("human input failed",o.status,o.statusText);try{e=await o.json()}catch{}(0,i.handleHttpError)(new r.HttpResponseError(o,e))}},a(),()=>{var e;n=!0,null===(e=t)||void 0===e||e.abort()}}),[e]);const[p,m]=(0,o.useState)([]);return(0,o.useEffect)((()=>{m((e=>{const o=new Map,r=new Map;for(const e of n){var s;o.set(e.id,e),e.parent&&r.set(e.parent,[...null!==(s=r.get(e.parent))&&void 0!==s?s:[],e.id])}const i=e=>{var t;return"input-required"===e.state||!(null===(t=r.get(e.id))||void 0===t||!t.some((e=>{const t=o.get(e);return i(t)})))},l=[];for(const e of null!==(c=null==t?void 0:t.plan)&&void 0!==c?c:[]){var c;const t=o.get(e.id);l.push({id:e.id,instruction:e.instruction,state:t?i(t)?"input-required":t.state:void 0})}return(0,a.isEqual)(e,l)?e:l}))}),[n,null==t?void 0:t.plan]),{task:t,jobs:n,plan:p,error:l,humanInputRef:u}}},3153:(e,t,n)=>{n.d(t,{r:()=>D});var o=n(9575),a=n(8769),r=n.n(a),s=n(3373),i=n.n(s),l=n(2591),c=n.n(l),d=n(1740),u=n.n(d),p=n(8128),m=n.n(p),g=n(855),f=n.n(g),h=n(3051),b=n.n(h),k=n(3656),x=n.n(k),v=n(4751),w={};w.styleTagTransform=x(),w.setAttributes=f(),w.insert=m().bind(null,"head"),w.domAPI=u(),w.insertStyleElement=b(),c()(v.A,w);const y=v.A&&v.A.locals?v.A.locals:void 0;var E=n(5805),A=n(79);function D(e){let{plan:t}=e;const[n,o]=(0,a.useState)(!1),{doneCount:s,state:l,instruction:c}=(0,a.useMemo)((()=>(null!=t?t:[]).reduce(((e,t)=>"completed"===t.state?{...e,state:t.state,doneCount:e.doneCount+1}:e.instruction?e:{...e,state:t.state,instruction:t.instruction}),{doneCount:0,state:"unknown",instruction:""})),[t]),{className:d,icon:u}=(0,a.useMemo)((()=>V(l)),[l]),p=(0,a.useCallback)((()=>{o((e=>!e))}),[]);return null!=t&&t.length?r().createElement("div",{className:i()(y.progress,d),onClick:p},r().createElement("div",{className:y.icon},r().createElement(E.B,u)),r().createElement("span",{className:y.text,title:"completed"===l?"":c},"completed"===l?(0,A.t)(A.K.PLAN_COMPLETED):c),r().createElement("span",{className:y.stat},s,"/",t.length),r().createElement(E.B,{className:y.expand,lib:"antd",theme:"outlined",icon:n?"down":"up"}),n&&r().createElement("ul",{className:y.details,onClick:e=>e.stopPropagation()},t.map(((e,t)=>r().createElement(B,{key:t,state:e.state,instruction:e.instruction}))))):null}function B(e){let{state:t,instruction:n}=e;const{className:s,icon:l}=(0,a.useMemo)((()=>V(t)),[t]);return r().createElement("li",{className:y.step},r().createElement(E.B,(0,o.A)({},l,{className:i()(y.state,s)})),r().createElement("span",{className:y.instruction,title:n},n))}function V(e){switch(e){case"completed":return{className:y.completed,icon:{lib:"fa",prefix:"fas",icon:"check"}};case"submitted":case"working":return{className:y.working,icon:{lib:"antd",theme:"outlined",icon:"loading-3-quarters",spinning:!0}};case"input-required":return{className:y["input-required"],icon:{lib:"fa",prefix:"far",icon:"circle-pause"}};case"failed":return{className:y.failed,icon:{lib:"fa",prefix:"fas",icon:"xmark"}};case"canceled":return{className:y.canceled,icon:{lib:"fa",prefix:"far",icon:"circle-stop"}};default:return{icon:{lib:"fa",prefix:"far",icon:"clock"}}}}},3795:(e,t,n)=>{e.exports=n.p+"images/e7d89ec3.png"},3865:(e,t,n)=>{n.d(t,{A:()=>i});var o=n(6758),a=n.n(o),r=n(935),s=n.n(r)()(a());s.push([e.id,".zoom-bar--MTw5VGPl{position:absolute;left:20px;bottom:20px;display:flex;align-items:center;padding:4px 6px;-webkit-user-select:none;user-select:none;background:rgba(255,255,255,0.7);box-shadow:0px 3px 14px 0px rgba(0,0,0,0.1),0px 1px 4px 0px rgba(0,0,0,0.06);border-radius:8px;border:1px solid rgba(255,255,255,0.3)}.zoom-bar--MTw5VGPl button{background:transparent;border:none;border-radius:4px;color:#333;width:24px;height:24px;font-size:16px;line-height:16px;display:flex;align-items:center;justify-content:center;cursor:pointer}.zoom-bar--MTw5VGPl button:hover{background:rgba(0,0,0,0.04)}.zoom-bar--MTw5VGPl button:active{background:rgba(0,0,0,0.08)}.divider--S0X2YCDi{background:rgba(0,0,0,0.15);width:1px;height:16px}.zoom-bar--MTw5VGPl > :not(:last-child){margin-right:6px}",""]),s.locals={"zoom-bar":"zoom-bar--MTw5VGPl",divider:"divider--S0X2YCDi"};const i=s},4388:(e,t,n)=>{n.d(t,{O:()=>D});var o=n(8769),a=n.n(o),r=n(9859),s=n(9096),i=n(1302),l=n.n(i),c=n(2591),d=n.n(c),u=n(1740),p=n.n(u),m=n(8128),g=n.n(m),f=n(855),h=n.n(f),b=n(3051),k=n.n(b),x=n(3656),v=n.n(x),w=n(6137),y={};y.styleTagTransform=v(),y.setAttributes=h(),y.insert=g().bind(null,"head"),y.domAPI=p(),y.insertStyleElement=k(),d()(w.A,y);const E=w.A&&w.A.locals?w.A.locals:void 0,A=(0,r.wrapBrick)("eo-easyops-avatar");function D(e){let{content:t,startTime:n,loading:r}=e;const i=(0,o.useMemo)((()=>s.auth.getAuth().username),[]);return a().createElement("div",{className:E["node-requirement"]},a().createElement("div",{className:E.heading},a().createElement("div",{className:E.user},a().createElement(A,{nameOrInstanceId:i,showName:!0,size:"xs"})),a().createElement("div",{className:E.time},n&&l()(1e3*n).format("MM-DD HH:mm"))),a().createElement("div",{className:E.body},t),r&&a().createElement(a().Fragment,null,a().createElement("svg",{className:E["loading-line"],viewBox:"0 0 2 62",width:"2",height:"62"},a().createElement("path",{d:"M1 0 L1 62"})),a().createElement("div",{className:E.loading},a().createElement("div",{className:E.inner}))))}},4751:(e,t,n)=>{n.d(t,{A:()=>i});var o=n(6758),a=n.n(o),r=n(935),s=n.n(r)()(a());s.push([e.id,".progress--62eOnxaf{position:absolute;bottom:20px;left:50%;transform:translate(-50%,0);width:453px;max-width:80%;background:#ffffff;box-shadow:0px 6px 16px 0px rgba(0,0,0,0.08),0px 3px 6px -4px rgba(0,0,0,0.12);border-radius:12px;padding:12px;line-height:24px;cursor:pointer;display:flex;align-items:center}.icon--TMLJniSx{margin-right:6px;width:22px;height:22px;border-radius:22px;display:flex;align-items:center;justify-content:center;background:linear-gradient(222deg,#abaab7 25%,#fff 75%);color:#4e4d56;font-size:12px;text-shadow:0px 1px 1px #fff}.progress--62eOnxaf.completed--ACUTqxl7 .icon--TMLJniSx{background:linear-gradient(222deg,#16c661 25%,#fff 75%);color:#055527}.progress--62eOnxaf.failed--atS7ek2B .icon--TMLJniSx{background:linear-gradient(222deg,#f24c25 25%,#fff 75%);color:#5b1504}.progress--62eOnxaf.working--Z6W16jVj .icon--TMLJniSx{background:linear-gradient(222deg,#3e56ff 25%,#fff 75%);color:#0c165d}.progress--62eOnxaf.input-required--YhWlEgu0 .icon--TMLJniSx{background:linear-gradient(222deg,#12aacc 25%,#fff 75%);color:#0c353e}.progress--62eOnxaf.canceled--imA9nfyy .icon--TMLJniSx{background:linear-gradient(222deg,#fcaa07 25%,#fff 75%);color:#302206}.text--vZYOZzn1,\n.instruction--Z7riLyFL{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-width:0;flex:1}.stat--YsJ88cZz{margin-left:auto;color:#8c8c8c}.expand--gqn8QEnc{margin-left:6px;color:#8c8c8c}.details--rtuqBzKj{position:absolute;left:0;right:0;bottom:4em;background:#fff;border-radius:12px;box-shadow:0px 6px 16px 0px rgba(0,0,0,0.08),0px 3px 6px -4px rgba(0,0,0,0.12);list-style:none;margin:0;padding:12px;cursor:auto}.step--f9i49Db2{display:flex;align-items:center}.step--f9i49Db2:not(:last-child){margin-bottom:8px}.state--TmkD_q3_{margin-right:6px;color:var(--text-color-secondary)}.state--TmkD_q3_.completed--ACUTqxl7{color:var(--color-success)}.state--TmkD_q3_.failed--atS7ek2B{color:var(--color-error)}.state--TmkD_q3_.working--Z6W16jVj{color:var(--color-info)}.state--TmkD_q3_.input-required--YhWlEgu0{color:var(--palette-cyan-7)}.state--TmkD_q3_.canceled--imA9nfyy{color:#fcaa07}",""]),s.locals={progress:"progress--62eOnxaf",icon:"icon--TMLJniSx",completed:"completed--ACUTqxl7",failed:"failed--atS7ek2B",working:"working--Z6W16jVj","input-required":"input-required--YhWlEgu0",canceled:"canceled--imA9nfyy",text:"text--vZYOZzn1",instruction:"instruction--Z7riLyFL",stat:"stat--YsJ88cZz",expand:"expand--gqn8QEnc",details:"details--rtuqBzKj",step:"step--f9i49Db2",state:"state--TmkD_q3_"};const i=s},4999:(e,t,n)=>{n.d(t,{l:()=>w});var o=n(8769),a=n.n(o),r=n(2591),s=n.n(r),i=n(1740),l=n.n(i),c=n(8128),d=n.n(c),u=n(855),p=n.n(u),m=n(3051),g=n.n(m),f=n(3656),h=n.n(f),b=n(3865),k={};k.styleTagTransform=h(),k.setAttributes=p(),k.insert=d().bind(null,"head"),k.domAPI=l(),k.insertStyleElement=g(),s()(b.A,k);const x=b.A&&b.A.locals?b.A.locals:void 0;var v=n(5805);function w(e){let{scale:t,onScaleChange:n,onReCenter:r}=e;const s=(0,o.useCallback)((()=>{null==n||n(t+.1)}),[n,t]),i=(0,o.useCallback)((()=>{null==n||n(t-.1)}),[n,t]);return a().createElement("div",{className:x["zoom-bar"]},a().createElement("button",{onClick:r},a().createElement(v.B,{lib:"fa",prefix:"fas",icon:"expand"})),a().createElement("div",{className:x.divider}),a().createElement("button",{onClick:i},a().createElement(v.B,{lib:"antd",theme:"outlined",icon:"minus-circle"})),a().createElement("button",{onClick:s},a().createElement(v.B,{lib:"antd",theme:"outlined",icon:"plus-circle"})))}},5005:(e,t,n)=>{n.d(t,{A:()=>i});var o=n(6758),a=n.n(o),r=n(935),s=n.n(r)()(a());s.push([e.id,".node-instruction--Gu7k6RDs{max-width:437px;background:rgba(255,255,255,0.2);box-shadow:0px 4px 10px 0px rgba(54,64,80,0.08);border-radius:9999px;border:1px solid rgba(255,255,255,0.284);padding:6px 16px;color:rgba(0,0,0,0.45)}.text--jsSeLl7B{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.loading--KdGolqAK > .text--jsSeLl7B{color:transparent;background:linear-gradient(to right,rgba(0,0,0,0.45) 0%,rgba(0,0,0,0.45) 40%,rgba(220,220,220,1) 50%,rgba(0,0,0,0.45) 60%,rgba(0,0,0,0.45) 100%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;animation:shineEffect--Zn2JtRpU 2s infinite linear}@keyframes shineEffect--Zn2JtRpU{0%{background-position:-50% 50%}100%{background-position:-250% 50%}}",""]),s.locals={"node-instruction":"node-instruction--Gu7k6RDs",text:"text--jsSeLl7B",loading:"loading--KdGolqAK",shineEffect:"shineEffect--Zn2JtRpU"};const i=s},5391:(e,t,n)=>{n.d(t,{W:()=>S});var o=n(8769),a=n.n(o),r=n(1085),s=n(3091),i=n(7447),l=n(3640),c=n(4360),d=n(3544),u=n(4650),p=n(9830);function m(){function e(e,t,n){if(!n||"pre"!==n.tagName||"code"!==e.tagName)return;const o=function(e){const t=e.properties.className||[];for(const e of t)if("language-"===e.slice(0,9))return e.slice(9).toLowerCase();return null}(e);if(null===o)return;let a;try{n.properties.className=(n.properties.className||[]).concat("language-"+o),a=p.L.highlight((0,u.d)(e),o)}catch{return}e.children=a.children}return t=>{(0,d.YR)(t,"element",e)}}const g={Fragment:r.Fragment,jsx:r.jsx,jsxs:r.jsxs};function f(e){let{content:t}=e;const[n,a]=(0,o.useState)(null);return(0,o.useEffect)((()=>{let e=!1;return(0,s.l)().use(i.A).use(l.A).use([m]).use(c.A,g).process(t).then((t=>{e||a(t.result)})).catch((t=>{e||(console.error("Convert markdown failed:",t),a(null))})),()=>{e=!0}}),[t]),n}var h=n(1451),b=n(4598),k=n(3373),x=n.n(k),v=n(1302),w=n.n(v),y=n(5050),E=n(9443),A=n(79),D=n(2267);const B=a().lazy((async()=>({default:await(0,D.asyncWrapBrick)("cmdb-instances.cmdb-instances-input-form",{onChangeV2:"cmdb.instance.form.change.v2"})})));var V=n(5805);function S(e){var t,n,o,r,s,i,l;let{job:c,state:d,humanInput:u}=e;const p="ask_human"===(null===(t=c.toolCall)||void 0===t?void 0:t.name),m=p&&["ask_user_more","ask_user_confirm","ask_user_choose","ask_user_select_from_cmdb"].includes(null===(n=c.toolCall.arguments)||void 0===n?void 0:n.command);return a().createElement("div",{className:x()(E.A["node-job"],{[E.A.error]:c.isError,[E.A["ask-user"]]:m})},a().createElement("div",{className:E.A.heading},c.toolCall?a().createElement(a().Fragment,null,p?a().createElement(V.B,{className:E.A.icon,lib:"fa",prefix:"fas",icon:"person-circle-question"}):a().createElement(V.B,{className:E.A.icon,lib:"antd",theme:"outlined",icon:"tool"}),a().createElement("div",{className:E.A.tool},null===(o=c.toolCall)||void 0===o?void 0:o.name)):a().createElement(a().Fragment,null,a().createElement(V.B,{className:E.A.icon,lib:"easyops",icon:"robot"})),a().createElement("div",{className:E.A.time},c.startTime&&w()(1e3*c.startTime).format("MM-DD HH:mm"))),a().createElement("div",{className:E.A.body},m?a().createElement(a().Fragment,null,a().createElement("div",{className:`${E.A.message} ${E.A["role-assistant"]}`},a().createElement(f,{content:null===(r=c.toolCall.arguments)||void 0===r?void 0:r.question})),"input-required"===d&&("ask_user_more"===c.toolCall.arguments.command?a().createElement(z,{jobId:c.id,humanInput:u}):"ask_user_confirm"===c.toolCall.arguments.command?a().createElement(T,{jobId:c.id,humanInput:u}):"ask_user_choose"===c.toolCall.arguments.command?a().createElement(C,{jobId:c.id,humanInput:u,options:c.toolCall.arguments.options}):"ask_user_select_from_cmdb"===c.toolCall.arguments.command?a().createElement(N,{jobId:c.id,humanInput:u,objectId:c.toolCall.arguments.objectId,attrId:c.toolCall.arguments.attrId}):null)):p?a().createElement("div",{className:`${E.A.message} ${E.A["role-assistant"]}`},"Unexpected ask_human command:"," ",JSON.stringify(null!==(s=null===(i=c.toolCall.arguments)||void 0===i?void 0:i.command)&&void 0!==s?s:null)):null,null===(l=c.messages)||void 0===l?void 0:l.map(((e,t)=>{var n;return a().createElement("div",{key:t,className:x()(E.A.message,{[E.A["role-user"]]:"tool"===e.role&&p})},null===(n=e.parts)||void 0===n?void 0:n.map(((t,n)=>a().createElement(a().Fragment,{key:n},"text"===t.type?"tool"===e.role&&p?t.text:a().createElement(Q,{content:t.text,isToolOutput:"tool"===e.role&&!!c.toolCall&&!p}):"file"===t.type?a().createElement("div",null,t.file.name):a().createElement("div",null,JSON.stringify(t.data))))))}))))}function z(e){let{jobId:t,humanInput:n}=e;const r=(0,o.useRef)(null);return a().createElement("div",{ref:r},a().createElement(h.e,{className:E.A["human-input"],containerRef:r,autoResize:!0,minRows:2,paddingSize:14,placeholder:"Type your message here...",submitWhen:"enter-without-shift",onSubmit:e=>{const o=e.currentTarget.value;o&&(null==n||n(t,o))}}))}function T(e){let{jobId:t,humanInput:n}=e;return a().createElement("div",{style:{marginTop:"1em"}},a().createElement(V.G,{type:"primary",onClick:()=>{null==n||n(t,(0,A.t)(A.K.YES))}},(0,A.t)(A.K.YES)),a().createElement(V.G,{onClick:()=>{null==n||n(t,(0,A.t)(A.K.NO))},style:{marginLeft:"0.5em"}},(0,A.t)(A.K.NO)))}function C(e){let{jobId:t,options:n,humanInput:o}=e;return a().createElement("div",{style:{marginTop:"1em",display:"flex",flexDirection:"column",gap:"0.5em"}},null==n?void 0:n.map(((e,n)=>a().createElement(V.G,{key:n,onClick:()=>{null==o||o(t,e)}},e))))}function N(e){let{jobId:t,objectId:n,attrId:r,humanInput:s}=e;const[i,l]=(0,o.useState)(null);if((0,o.useEffect)((()=>{if(!n)return;let e=!1;return(async()=>{try{const t=(await(0,b.r)({ref_object:n})).data;e||l(t)}catch(e){console.error("Fetch object list failed:",e),(0,y.handleHttpError)(e)}})(),()=>{e=!0}}),[n]),!n)return a().createElement("div",{style:{marginTop:"1em"}},"Can not call ask_user_select_from_cmdb without objectId");const c=!r||"instanceId"===r&&"HOST"===n?"ip":r;return a().createElement("div",{style:{marginTop:"1em"}},a().createElement(o.Suspense,null,a().createElement(B,{objectList:i,objectId:n,fieldId:c,onChangeV2:e=>{null==s||s(t,e.detail.map((e=>e[c])).join("\n"))}})))}function Q(e){let{content:t,isToolOutput:n}=e;const r=(0,o.useMemo)((()=>{if(n)try{const e=JSON.parse(null!=t?t:"");return`\`\`\`json\n${JSON.stringify(e,null,2)}\n\`\`\``}catch{}return t}),[t,n]);return a().createElement(f,{content:r})}},5805:(e,t,n)=>{n.d(t,{B:()=>a,G:()=>r});var o=n(9859);const a=(0,o.wrapBrick)("eo-icon"),r=(0,o.wrapBrick)("eo-button")},6137:(e,t,n)=>{n.d(t,{A:()=>p});var o=n(6758),a=n.n(o),r=n(935),s=n.n(r),i=n(62),l=n.n(i),c=new URL(n(1776),n.b),d=s()(a()),u=l()(c);d.push([e.id,`.node-requirement--aVjY3LFY{width:453px;background-color:rgba(255,255,255,0.4);background-image:url(${u});background-position:center bottom;background-size:453px 128px;background-repeat:no-repeat;box-shadow:0px 4px 10px 0px rgba(54,64,80,0.18);border-radius:12px;-webkit-backdrop-filter:blur(28px);backdrop-filter:blur(28px);border:1px solid rgba(255,255,255,0.4);padding:8px;white-space:pre-wrap;position:relative}.heading--F8b1aIJT{display:flex;justify-content:space-between;align-items:center;margin-bottom:11px;font-size:12px}.time--IRwoiblW{color:#8c8c8c}.body--JYv_r9n_{background:#f1f6ff;box-shadow:0px 1px 0px 0px #ffffff;border-radius:9px;padding:15px 10px}.loading-line--xDrsXoxu{position:absolute;bottom:-62px;left:50%;transform:translate(-50%,0)}.loading-line--xDrsXoxu path{fill:none;stroke-width:2px;stroke:rgba(255,255,255,0.6);stroke-dasharray:5,5}.loading--yZvyv4wE{position:absolute;bottom:-74px;left:50%;transform:translate(-50%,0);width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:rgba(69,94,255,0.5);border-radius:24px;animation:loading--yZvyv4wE 1s infinite linear}.inner--voOHXPcc{width:12px;height:12px;background:rgb(69,94,255);border-radius:12px}@keyframes loading--yZvyv4wE{0%{transform:translate(-50%,0) scale(1);opacity:1}100%{transform:translate(-50%,0) scale(1.5);opacity:0}}`,""]),d.locals={"node-requirement":"node-requirement--aVjY3LFY",heading:"heading--F8b1aIJT",time:"time--IRwoiblW",body:"body--JYv_r9n_","loading-line":"loading-line--xDrsXoxu",loading:"loading--yZvyv4wE",inner:"inner--voOHXPcc"};const p=d},6261:(e,t,n)=>{e.exports=n.p+"images/854a0152.png"},6494:(e,t,n)=>{n.d(t,{E:()=>i});var o=n(8769),a=n(4257),r=n(7566),s=n(6854);function i(e){let{nodes:t,sizeReady:n,zoomer:i,rootRef:l}=e;const[c,d]=(0,o.useState)(!1),u=(0,o.useRef)(!1);return(0,o.useEffect)((()=>{const e=l.current;if(n&&e&&!c&&t.length>0){let n=1/0,o=-1/0,l=1/0,c=-1/0;for(const e of t){const t=e.view,a=t.x+t.width,r=t.y+t.height;t.x<n&&(n=t.x),a>o&&(o=a),t.y<l&&(l=t.y),r>c&&(c=r)}const p=(e.clientWidth-(o+n))/2;let m=30;if(u.current){const t=c-l+s.xX-e.clientHeight;m=t>0?-t-l:(e.clientHeight-(c+l))/2}i.transform((0,r.A)(e),new a.uV(1,p,m)),d(!0)}u.current=!1}),[c,t,l,n,i]),{centered:c,setCentered:d,reCenterRef:u}}},6811:(e,t,n)=>{e.exports=n.p+"images/d4ea5a5c.png"},6854:(e,t,n)=>{n.d(t,{Jw:()=>s,QB:()=>l,U5:()=>r,Yt:()=>a,sS:()=>o,xX:()=>i});const o=.5,a=2,r="<START>",s="<END>",i=96,l=["completed","failed","canceled"]},6938:(e,t,n)=>{n.d(t,{L:()=>y});var o=n(8769),a=n.n(o),r=n(3373),s=n.n(r),i=n(2591),l=n.n(i),c=n(1740),d=n.n(c),u=n(8128),p=n.n(u),m=n(855),g=n.n(m),f=n(3051),h=n.n(f),b=n(3656),k=n.n(b),x=n(5005),v={};v.styleTagTransform=k(),v.setAttributes=g(),v.insert=p().bind(null,"head"),v.domAPI=d(),v.insertStyleElement=h(),l()(x.A,v);const w=x.A&&x.A.locals?x.A.locals:void 0;function y(e){let{content:t,loading:n}=e;return a().createElement("div",{className:s()(w["node-instruction"],{[w.loading]:n})},a().createElement("div",{className:w.text,title:t},t))}},7110:(e,t,n)=>{n.d(t,{A:()=>p});var o=n(6758),a=n.n(o),r=n(935),s=n.n(r),i=n(62),l=n.n(i),c=new URL(n(3795),n.b),d=s()(a()),u=l()(c);d.push([e.id,`ai-portal\\.cruise-canvas{display:block;position:relative;width:100%;height:100%;overflow:hidden;background-color:rgb(205,206,207);background-image:url(${u});background-size:cover;background-repeat:no-repeat;background-position:center;color:#262626;--cruise-canvas-node-border:1px solid gray;--cruise-canvas-node-width-medium:380px;--cruise-canvas-node-width-large:764px;--cruise-canvas-primary-color:#2540ff}.root--z6jdb_BU{width:100%;height:100%;position:relative}.widgets--r6lUPOu2{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;-webkit-user-select:none;user-select:none}.widgets--r6lUPOu2 > *{pointer-events:auto;-webkit-user-select:text;user-select:text}.canvas--u6C26uH_,\n.edges--uNPQGWZg{width:100%;height:100%;position:absolute;transform-origin:0% 0%;-webkit-user-select:none;user-select:none}.node--IBGywwp4{position:absolute;-webkit-user-select:text;user-select:text;cursor:auto}.node--IBGywwp4:not(.ready--pmh440go),\n.canvas--u6C26uH_:not(.ready--pmh440go) > .edges--uNPQGWZg{visibility:hidden}svg.edges--uNPQGWZg{pointer-events:none;overflow:visible}.edge--muRUWYG1{fill:none;stroke-width:2px;stroke:rgba(255,255,255,0.6);stroke-dasharray:5,5}.size-medium--s_5BfbCV,\n.size-large--GFdstz_s{border:var(--cruise-canvas-node-border);border-radius:6px;padding:6px}.size-medium--s_5BfbCV{width:var(--cruise-canvas-node-width-medium)}.size-large--GFdstz_s{width:var(--cruise-canvas-node-width-large)}.node-default--rfA_zOid{border:var(--cruise-canvas-node-border)}.node-default--rfA_zOid > :first-child{margin-top:0}.node-default--rfA_zOid > :last-child{margin-bottom:0}`,""]),d.locals={root:"root--z6jdb_BU",widgets:"widgets--r6lUPOu2",canvas:"canvas--u6C26uH_",edges:"edges--uNPQGWZg",node:"node--IBGywwp4",ready:"ready--pmh440go",edge:"edge--muRUWYG1","size-medium":"size-medium--s_5BfbCV","size-large":"size-large--GFdstz_s","node-default":"node-default--rfA_zOid"};const p=d},7221:(e,t,n)=>{n.d(t,{A:()=>g});var o=n(6758),a=n.n(o),r=n(935),s=n.n(r),i=n(62),l=n.n(i),c=new URL(n(9594),n.b),d=new URL(n(6261),n.b),u=s()(a()),p=l()(c),m=l()(d);u.push([e.id,`.node-end--yzRaOZnC{width:330px;background-color:#fff;background-image:url(${p});background-size:330px 271px;background-repeat:no-repeat;background-position:center;border:1px solid #e0e5f0;border-radius:12px;display:flex;flex-direction:column;align-items:center;padding:41px 24px 28px}.icon--IVcHjGFO{width:64px;height:64px;background-image:url(${m});background-size:59px 49px;background-repeat:no-repeat;background-position:center;margin-bottom:16px}.title--ESn4jaJ9{margin-bottom:8px;font-weight:500;font-size:16px;line-height:24px}.description--aYl8sq6S{margin-bottom:36px;font-size:13px;color:#8c8c8c;line-height:24px}.button--mkIwsPzt{width:120px;height:30px;background:rgba(0,0,0,0.04);border:none;border-radius:15px;text-align:center;cursor:pointer}.button--mkIwsPzt:hover{background:rgba(0,0,0,0.08)}.button--mkIwsPzt:active{background:rgba(0,0,0,0.15)}`,""]),u.locals={"node-end":"node-end--yzRaOZnC",icon:"icon--IVcHjGFO",title:"title--ESn4jaJ9",description:"description--aYl8sq6S",button:"button--mkIwsPzt"};const g=u},7617:(e,t,n)=>{n.d(t,{A:()=>i});var o=n(6758),a=n.n(o),r=n(935),s=n.n(r)()(a());s.push([e.id,'.node-job--soTYrcA7{width:330px;background:linear-gradient(180deg,#f5f8ff 0%,#edf0f9 100%);box-shadow:0px 4px 10px 0px rgba(177,149,207,0.4),0px 2px 4px 0px rgba(0,0,0,0.06);border-radius:12px;border:1px solid #ffffff;padding:8px}.error--IwtdD0T6{outline-offset:4px;outline:2px solid var(--color-error)}.heading--GZqrhPqL{display:flex;align-items:center;border-bottom:1px solid #e2e2ec;padding:0 5px 5px;font-size:12px;color:#8c8c8c}.icon--Rb_vveHN{margin-right:6px}.time--eHXSEjt6{margin-left:auto}.body--V34MsV9R{padding:16px 4px 8px;max-height:392px;overflow-y:auto}.message--iVQBlD6k{overflow-wrap:break-word}.message--iVQBlD6k + .message--iVQBlD6k{margin-top:1em}.message--iVQBlD6k p{margin:1em 0}.message--iVQBlD6k > :first-child{margin-top:0}.message--iVQBlD6k > :last-child{margin-bottom:0}.ask-user--lf925zGf .heading--GZqrhPqL{border-bottom:none}.ask-user--lf925zGf .body--V34MsV9R{padding-top:8px}.role-assistant--Y8vd9Oms,\n.role-user--nAW4Hzsu{background:rgba(255,255,255,0.8);border-radius:9px;border:1px solid #ccd1de;padding:6px 16px}.role-user--nAW4Hzsu{white-space:pre-wrap}.human-input--wFc6ovnT{margin-top:1em;display:block;width:100%;padding:0.5em 1em;color:var(--antd-input-color);background:rgba(255,255,255,0.8);box-shadow:0px 1px 0px 0px #ffffff,inset 0px 2px 4px 0px #b3bcf9;box-sizing:border-box;border:1px solid var(--antd-input-border-color);border-radius:9px;font-size:14px;line-height:22px;height:32px}.human-input--wFc6ovnT:not(:disabled):hover{border:1px solid var(--antd-input-hover-border-color)}.human-input--wFc6ovnT:not(:disabled):focus{border:1px solid var(--antd-input-focus-border-color);outline:0;box-shadow:0 0 0 2px rgb(0 113 235/20%)}.human-input--wFc6ovnT::placeholder{color:var(--antd-input-placeholder-color)}.message--iVQBlD6k code[class*="language-"],.message--iVQBlD6k pre[class*="language-"]{background:hsl(230,1%,98%);color:hsl(230,8%,24%);font-family:"Fira Code","Fira Mono",Menlo,Consolas,"DejaVu Sans Mono",monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:2;tab-size:2;-webkit-hyphens:none;hyphens:none;font-size:13px}.message--iVQBlD6k code[class*="language-"]::selection,.message--iVQBlD6k code[class*="language-"] *::selection,.message--iVQBlD6k pre[class*="language-"] *::selection{background:hsl(230,1%,90%);color:inherit}.message--iVQBlD6k pre[class*="language-"]{padding:1em;margin:0.5em 0;overflow:auto;border-radius:9px}.message--iVQBlD6k :not(pre) > code[class*="language-"]{padding:0.2em 0.3em;border-radius:9px;white-space:normal}.message--iVQBlD6k .token.comment,.message--iVQBlD6k .token.prolog,.message--iVQBlD6k .token.cdata{color:hsl(230,4%,64%)}.message--iVQBlD6k .token.doctype,.message--iVQBlD6k .token.punctuation,.message--iVQBlD6k .token.entity{color:hsl(230,8%,24%)}.message--iVQBlD6k .token.attr-name,.message--iVQBlD6k .token.class-name,.message--iVQBlD6k .token.boolean,.message--iVQBlD6k .token.constant,.message--iVQBlD6k .token.number,.message--iVQBlD6k .token.atrule{color:hsl(35,99%,36%)}.message--iVQBlD6k .token.keyword{color:hsl(301,63%,40%)}.message--iVQBlD6k .token.property,.message--iVQBlD6k .token.tag,.message--iVQBlD6k .token.symbol,.message--iVQBlD6k .token.deleted,.message--iVQBlD6k .token.important{color:hsl(5,74%,59%)}.message--iVQBlD6k .token.selector,.message--iVQBlD6k .token.string,.message--iVQBlD6k .token.char,.message--iVQBlD6k .token.builtin,.message--iVQBlD6k .token.inserted,.message--iVQBlD6k .token.regex,.message--iVQBlD6k .token.attr-value,.message--iVQBlD6k .token.attr-value > .token.punctuation{color:hsl(119,34%,47%)}.message--iVQBlD6k .token.variable,.message--iVQBlD6k .token.operator,.message--iVQBlD6k .token.function{color:hsl(221,87%,60%)}.message--iVQBlD6k .token.url{color:hsl(198,99%,37%)}.message--iVQBlD6k .token.attr-value > .token.punctuation.attr-equals,.message--iVQBlD6k .token.special-attr > .token.attr-value > .token.value.css{color:hsl(230,8%,24%)}.message--iVQBlD6k .language-css .token.selector{color:hsl(5,74%,59%)}.message--iVQBlD6k .language-css .token.property{color:hsl(230,8%,24%)}.message--iVQBlD6k .language-css .token.function,.message--iVQBlD6k .language-css .token.url > .token.function{color:hsl(198,99%,37%)}.message--iVQBlD6k .language-css .token.url > .token.string.url{color:hsl(119,34%,47%)}.message--iVQBlD6k .language-css .token.important,.message--iVQBlD6k .language-css .token.atrule .token.rule{color:hsl(301,63%,40%)}.message--iVQBlD6k .language-javascript .token.operator{color:hsl(301,63%,40%)}.message--iVQBlD6k .language-javascript .token.template-string > .token.interpolation > .token.interpolation-punctuation.punctuation{color:hsl(344,84%,43%)}.message--iVQBlD6k .language-json .token.operator{color:hsl(230,8%,24%)}.message--iVQBlD6k .language-json .token.null.keyword{color:hsl(35,99%,36%)}.message--iVQBlD6k .language-markdown .token.url,.message--iVQBlD6k .language-markdown .token.url > .token.operator,.message--iVQBlD6k .language-markdown .token.url-reference.url > .token.string{color:hsl(230,8%,24%)}.message--iVQBlD6k .language-markdown .token.url > .token.content{color:hsl(221,87%,60%)}.message--iVQBlD6k .language-markdown .token.url > .token.url,.message--iVQBlD6k .language-markdown .token.url-reference.url{color:hsl(198,99%,37%)}.message--iVQBlD6k .language-markdown .token.blockquote.punctuation,.message--iVQBlD6k .language-markdown .token.hr.punctuation{color:hsl(230,4%,64%);font-style:italic}.message--iVQBlD6k .language-markdown .token.code-snippet{color:hsl(119,34%,47%)}.message--iVQBlD6k .language-markdown .token.bold .token.content{color:hsl(35,99%,36%)}.message--iVQBlD6k .language-markdown .token.italic .token.content{color:hsl(301,63%,40%)}.message--iVQBlD6k .language-markdown .token.strike .token.content,.message--iVQBlD6k .language-markdown .token.strike .token.punctuation,.message--iVQBlD6k .language-markdown .token.list.punctuation,.message--iVQBlD6k .language-markdown .token.title.important > .token.punctuation{color:hsl(5,74%,59%)}.message--iVQBlD6k .token.bold{font-weight:bold}.message--iVQBlD6k .token.comment,.message--iVQBlD6k .token.italic{font-style:italic}.message--iVQBlD6k .token.entity{cursor:help}.message--iVQBlD6k .token.namespace{opacity:0.8}.node-job--soTYrcA7 *::-webkit-scrollbar{width:5px;height:5px;background:transparent}.node-job--soTYrcA7 *::-webkit-scrollbar-thumb{background-color:#d8d8d8;border-radius:3px}.node-job--soTYrcA7 *::-webkit-scrollbar-track{background:transparent}',""]),s.locals={"node-job":"node-job--soTYrcA7",error:"error--IwtdD0T6",heading:"heading--GZqrhPqL",icon:"icon--Rb_vveHN",time:"time--eHXSEjt6",body:"body--V34MsV9R",message:"message--iVQBlD6k","ask-user":"ask-user--lf925zGf","role-assistant":"role-assistant--Y8vd9Oms","role-user":"role-user--nAW4Hzsu","human-input":"human-input--wFc6ovnT"};const i=s},7642:(e,t,n)=>{n.d(t,{g:()=>i});var o=n(7586),a=n.n(o),r=n(8769),s=n(6854);function i(e){let{rawNodes:t,rawEdges:n,sizeMap:o,state:i}=e;const c=(0,r.useRef)(null),d="completed"===i,{initialNodes:u,initialEdges:p}=(0,r.useMemo)((()=>{const e=[{type:"start",id:s.U5}],o=[],a=[],r=null!=t?t:[],i=null!=n?n:[],l=new Set(i.map((e=>e.target))),u=d?new Set(i.map((e=>e.source))):null;for(const e of r)l.has(e.id)||o.push({source:s.U5,target:e.id}),d&&!u.has(e.id)&&a.push(e.id);e.push(...r),o.push(...i),a.length>0&&(e.push({id:s.Jw,type:"end"}),o.push(...a.map((e=>({source:e,target:s.Jw})))));const p=c.current;if(p)for(const t of e){const e=p.get(t.id);e&&(t.view=e)}return{initialNodes:e,initialEdges:o}}),[d,n,t]),m=(0,r.useRef)(null);return(0,r.useMemo)((()=>{var e;for(const e of u)if(null==o||!o.has(e.id))return{sizeReady:!1,nodes:u,edges:[]};const t=new(a().graphlib.Graph);t.setGraph({rankdir:"TB",nodesep:50,edgesep:10,ranksep:50}),t.setDefaultEdgeLabel((function(){return{}}));for(const e of p)t.setEdge(e.source,e.target);for(const e of u){const[n,a]=o.get(e.id);t.setNode(e.id,{id:e.id,width:n,height:a})}a().layout(t);let n=null;const r=u.map((e=>{const o=t.node(e.id),a=o.x-o.width/2,r=o.y-o.height/2;return"start"===e.type&&(m.current?n={x:m.current.x-a,y:m.current.y-r}:m.current={x:a,y:r}),{...e,view:{x:a,y:r,width:o.width,height:o.height}}}));if(n)for(const e of r)Object.assign(e.view,l(e.view,n));const s=null!==(e=c.current)&&void 0!==e?e:c.current=new Map;for(const e of r){const{x:t,y:n}=e.view;s.set(e.id,{x:t,y:n})}return{sizeReady:!0,nodes:r,edges:p.map((e=>{const o=t.node(e.source),a=l(o,n),r=t.node(e.target),s=l(r,n),i=s.y-r.height/2-25,c=[{x:a.x,y:a.y+o.height/2},{x:a.x,y:i},{x:s.x,y:i},{x:s.x,y:s.y-r.height/2}];return{...e,points:c}}))}}),[p,u,o])}function l(e,t){return t?{x:e.x+t.x,y:e.y+t.y}:{x:e.x,y:e.y}}},7954:(e,t,n)=>{n.d(t,{H:()=>v});var o=n(8769),a=n.n(o),r=n(2591),s=n.n(r),i=n(1740),l=n.n(i),c=n(8128),d=n.n(c),u=n(855),p=n.n(u),m=n(3051),g=n.n(m),f=n(3656),h=n.n(f),b=n(8905),k={};k.styleTagTransform=h(),k.setAttributes=p(),k.insert=d().bind(null,"head"),k.domAPI=l(),k.insertStyleElement=g(),s()(b.A,k);const x=b.A&&b.A.locals?b.A.locals:void 0;function v(){return a().createElement("div",{className:x["node-start"]},a().createElement("div",{className:x.icon}))}},8231:(e,t,n)=>{n.d(t,{f:()=>m});var o,a,r,s=n(8769),i=n(7566),l=n(4257),c=n(6854),d=n(9443);const u=/mac/i.test(null!==(o=null!==(a=null===(r=navigator.userAgentData)||void 0===r?void 0:r.platform)&&void 0!==a?a:navigator.platform)&&void 0!==o?o:navigator.userAgent);function p(e){return-e.deltaY*(1===e.deltaMode?.05:e.deltaMode?1:.002)*(e.ctrlKey&&u?10:1)}function m(e){let{rootRef:t,zoomable:n,scrollable:o,pannable:a,pannableWithCtrl:r,scaleRange:u,onSwitchActiveTarget:m}=e;const[g,f]=(0,s.useState)(!1),[h,b]=(0,s.useState)({k:1,x:0,y:0}),k=(0,s.useRef)(h),x=(0,s.useMemo)((()=>null!=u?u:[c.sS,c.Yt]),[u]),v=(0,s.useMemo)((()=>(0,l.s_)().wheelDelta(p)),[]);return(0,s.useEffect)((()=>{let e=!1;v.scaleExtent(n?x:[1,1]).on("start",(()=>{e=!1,f(!0)})).on("zoom",(t=>{e=!0,b(t.transform),k.current=t.transform})).on("end",(()=>{f(!1),e||null==m||m(null)})).filter((e=>("wheel"===e.type||(r?a||e.ctrlKey:!e.ctrlKey))&&!e.button))}),[m,x,n,v,r,a]),(0,s.useEffect)((()=>{if(r){const e=e=>{e.ctrlKey&&e.preventDefault()};return document.addEventListener("contextmenu",e,!0),()=>{document.removeEventListener("contextmenu",e,!0)}}}),[r]),(0,s.useEffect)((()=>{const e=t.current;if(!e)return;const s=(0,i.A)(e),l=()=>{s.on(".zoom",null).on(".zoom.custom",null).on("wheel",null)};if(n||o||a)return(n||o)&&s.on("wheel.zoom.custom",(e=>{if(!e.ctrlKey&&(e.stopImmediatePropagation(),o)){const t=e.target.closest('pre[class*="language-"]');if(t&&function(e,t){if(t>0){const t=e.scrollWidth-e.clientWidth;return e.scrollLeft<=t-1}return e.scrollLeft>=1}(t,e.deltaX))return;const n=e.target.closest(`.${d.A.body}`);if(n&&function(e,t){if(t>0){const t=e.scrollHeight-e.clientHeight;return e.scrollTop<=t-1}return e.scrollTop>=1}(n,e.deltaY))return;e.cancelable&&(e.preventDefault(),v.translateBy(s,e.wheelDeltaX/5,e.wheelDeltaY/5))}})),s.call(v).on("wheel",(e=>{e.preventDefault()})).on("dblclick.zoom",null),a||r||s.on("mousedown.zoom",null),a||s.on("touchstart.zoom",null).on("touchmove.zoom",null).on("touchend.zoom",null),l;l()}),[r,a,t,o,n,v]),{grabbing:g,transform:h,transformRef:k,zoomer:v,scaleRange:x}}},8905:(e,t,n)=>{n.d(t,{A:()=>p});var o=n(6758),a=n.n(o),r=n(935),s=n.n(r),i=n(62),l=n.n(i),c=new URL(n(6811),n.b),d=s()(a()),u=l()(c);d.push([e.id,`.node-start--Mrh1iP5r{width:65px;height:65px;position:relative;overflow:visible}.icon--NxC4u6Wl{width:75px;height:75px;background-image:url(${u});background-size:75px 75px;background-repeat:no-repeat;background-position:center;position:absolute;left:-5px;top:-1px}`,""]),d.locals={"node-start":"node-start--Mrh1iP5r",icon:"icon--NxC4u6Wl"};const p=d},9295:(e,t,n)=>{n.d(t,{s:()=>w});var o=n(8769),a=n.n(o),r=n(2591),s=n.n(r),i=n(1740),l=n.n(i),c=n(8128),d=n.n(c),u=n(855),p=n.n(u),m=n(3051),g=n.n(m),f=n(3656),h=n.n(f),b=n(7221),k={};k.styleTagTransform=h(),k.setAttributes=p(),k.insert=d().bind(null,"head"),k.domAPI=l(),k.insertStyleElement=g(),s()(b.A,k);const x=b.A&&b.A.locals?b.A.locals:void 0;var v=n(79);function w(e){let{onShare:t}=e;return a().createElement("div",{className:x["node-end"]},a().createElement("div",{className:x.icon}),a().createElement("div",{className:x.title},(0,v.t)(v.K.TASK_COMPLETED)),a().createElement("div",{className:x.description},(0,v.t)(v.K.PLAN_COMPLETED)),a().createElement("button",{className:x.button,onClick:t},(0,v.t)(v.K.SHARE)))}},9443:(e,t,n)=>{n.d(t,{A:()=>b});var o=n(2591),a=n.n(o),r=n(1740),s=n.n(r),i=n(8128),l=n.n(i),c=n(855),d=n.n(c),u=n(3051),p=n.n(u),m=n(3656),g=n.n(m),f=n(7617),h={};h.styleTagTransform=g(),h.setAttributes=d(),h.insert=l().bind(null,"head"),h.domAPI=s(),h.insertStyleElement=p(),a()(f.A,h);const b=f.A&&f.A.locals?f.A.locals:void 0},9533:(e,t,n)=>{n.d(t,{B:()=>a});var o=n(8769);function a(e,t){return(0,o.useMemo)((()=>{if(!e)return null;const n=[],o=[],a="requirement";n.push({type:"requirement",id:a,content:e.requirement,state:0===t.length?"working":"completed"});const r=new Map,s=new Map,i=new Map,l=new Map,c=[],d=[];for(const e of t)if(e.parent){let t=s.get(e.parent);t||(t=[],s.set(e.parent,t)),t.push(e.id)}for(const e of t){r.set(e.id,e);for(const t of null!==(u=e.upstream)&&void 0!==u?u:[]){var u;let n=i.get(t);n||(n=[],i.set(t,n)),n.push(e.id)}var p;e.parent||(d.push(e.id),null!==(p=e.upstream)&&void 0!==p&&p.length||c.push(e.id))}const m=e=>{for(const t of e){const e=s.get(t),n=i.get(t);if(e){const o=e.filter((e=>{var t;return!(null!==(t=r.get(e).upstream)&&void 0!==t&&t.length)})),a=n?e.filter((e=>!i.has(e))):[];i.set(t,o);for(const e of a)i.set(e,[...n]);m(e)}}};m(d);for(const[e,t]of i)for(const n of t){let t=l.get(n);t||(t=[],l.set(n,t)),t.push(e)}const g=[],f=new Set,h=[...c];for(;h.length>0;){const e=h.shift();if(f.has(e))continue;f.add(e),g.push(e);const t=i.get(e);t&&h.push(...t)}const b=new Map([[a,[a]]]);for(const e of g){const t=r.get(e),{messages:o}=t,a=Array.isArray(o)&&o.length>0||t.toolCall,s=[];if(t.instruction){const o=`instruction:${e}`;n.push({type:"instruction",id:o,job:t,state:t.state}),s.push(o)}if(a||!t.instruction){const e=`job:${t.id}`;n.push({type:"job",id:e,job:t,state:t.state}),s.push(e)}b.set(e,s)}for(const e of g){const t=b.get(e),n=l.get(e);for(const e of null!=n?n:[a]){const n=b.get(e);o.push({source:n[n.length-1],target:t[0]})}for(let e=1;e<t.length;e++)o.push({source:t[e-1],target:t[e]})}return{nodes:n,edges:o}}),[e,t])}},9594:(e,t,n)=>{e.exports=n.p+"images/b1e65906.png"}}]);
2
+ //# sourceMappingURL=2569.af96d40a.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunks/2569.af96d40a.js","mappings":"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","sources":["webpack:///./src/cruise-canvas/i18n.ts","webpack:///../../../src/utils/calculateAutoSizeStyle.ts","webpack:///../../src/TextareaAutoResize.tsx","webpack:///./src/cruise-canvas/styles.module.css?7c94","webpack:///./src/cruise-canvas/reducers/jobs.ts","webpack:///./src/cruise-canvas/reducers/index.ts","webpack:///./src/cruise-canvas/reducers/task.ts","webpack:///./src/cruise-canvas/reducers/error.ts","webpack:///./src/cruise-canvas/useTaskDetail.ts","webpack:///./src/cruise-canvas/PlanProgress/PlanProgress.module.css?4fe8","webpack:///./src/cruise-canvas/PlanProgress/PlanProgress.tsx","webpack:///./src/cruise-canvas/ZoomBar/ZoomBar.module.css","webpack:///./src/cruise-canvas/NodeRequirement/NodeRequirement.module.css?7927","webpack:///./src/cruise-canvas/NodeRequirement/NodeRequirement.tsx","webpack:///./src/cruise-canvas/PlanProgress/PlanProgress.module.css","webpack:///./src/cruise-canvas/ZoomBar/ZoomBar.module.css?7d53","webpack:///./src/cruise-canvas/ZoomBar/ZoomBar.tsx","webpack:///./src/cruise-canvas/NodeInstruction/NodeInstruction.module.css","webpack:///../../src/rehypePrism.ts","webpack:///../../src/MarkdownComponent.tsx","webpack:///./src/cruise-canvas/cmdb.tsx","webpack:///./src/cruise-canvas/NodeJob/NodeJob.tsx","webpack:///./src/cruise-canvas/bricks.ts","webpack:///./src/cruise-canvas/NodeRequirement/NodeRequirement.module.css","webpack:///./src/cruise-canvas/useAutoCenter.ts","webpack:///./src/cruise-canvas/constants.ts","webpack:///./src/cruise-canvas/NodeInstruction/NodeInstruction.module.css?5e68","webpack:///./src/cruise-canvas/NodeInstruction/NodeInstruction.tsx","webpack:///./src/cruise-canvas/styles.module.css","webpack:///./src/cruise-canvas/NodeEnd/NodeEnd.module.css","webpack:///./src/cruise-canvas/NodeJob/NodeJob.module.css","webpack:///./src/cruise-canvas/useLayout.ts","webpack:///./src/cruise-canvas/NodeStart/NodeStart.module.css?c135","webpack:///./src/cruise-canvas/NodeStart/NodeStart.tsx","webpack:///./src/cruise-canvas/useZoom.ts","webpack:///./src/cruise-canvas/NodeStart/NodeStart.module.css","webpack:///./src/cruise-canvas/NodeEnd/NodeEnd.module.css?bd4b","webpack:///./src/cruise-canvas/NodeEnd/NodeEnd.tsx","webpack:///./src/cruise-canvas/NodeJob/NodeJob.module.css?69ec","webpack:///./src/cruise-canvas/useTaskGraph.ts"],"sourcesContent":["import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n YES = \"YES\",\n NO = \"NO\",\n PLAN_COMPLETED = \"PLAN_COMPLETED\",\n TASK_COMPLETED = \"TASK_COMPLETED\",\n SHARE = \"SHARE\",\n}\n\nconst en: Locale = {\n YES: \"Yes\",\n NO: \"No\",\n PLAN_COMPLETED: \"All jobs done\",\n TASK_COMPLETED: \"Task completed\",\n SHARE: \"Share\",\n};\n\nconst zh: Locale = {\n YES: \"是\",\n NO: \"否\",\n PLAN_COMPLETED: \"所有任务已全部完成\",\n TASK_COMPLETED: \"任务完成\",\n SHARE: \"分享\",\n};\n\nexport const NS = \"bricks/ai-portal/cruise-canvas\";\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","// istanbul ignore file\nimport type React from \"react\";\n\nconst HIDDEN_TEXTAREA_STYLE = `\n min-height: 0!important;\n max-height: none!important;\n height: 0!important;\n visibility: hidden!important;\n overflow: hidden!important;\n position: absolute!important;\n z-index: -1000!important;\n top: 0!important;\n right: 0!important;\n pointer-events: none!important;\n`;\n\nconst SIZING_STYLE = [\n \"letter-spacing\",\n \"line-height\",\n \"padding-top\",\n \"padding-bottom\",\n \"font-family\",\n \"font-weight\",\n \"font-size\",\n \"font-variant\",\n \"text-rendering\",\n \"text-transform\",\n \"width\",\n \"text-indent\",\n \"padding-left\",\n \"padding-right\",\n \"border-width\",\n \"box-sizing\",\n \"word-break\",\n \"white-space\",\n];\n\nlet hiddenTextarea: HTMLTextAreaElement | undefined;\n\nexport interface AutoSizeOptions {\n minRows?: number | null;\n maxRows?: number | null;\n borderSize?: number;\n paddingSize?: number;\n}\n\n/**\n * 计算 textarea 高度\n * https://github.com/react-component/textarea/blob/1c0026fbe30e5f7dff1fca695b2cf262246381ca/src/calculateNodeHeight.tsx\n */\nexport default function calculateAutoSizeStyle(\n uiTextNode: HTMLTextAreaElement,\n options?: AutoSizeOptions\n): React.CSSProperties {\n const {\n minRows = null,\n maxRows = null,\n borderSize = 2,\n paddingSize = 8,\n } = options ?? {};\n\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement(\"textarea\");\n hiddenTextarea.setAttribute(\"tab-index\", \"-1\");\n hiddenTextarea.setAttribute(\"aria-hidden\", \"true\");\n document.body.appendChild(hiddenTextarea);\n }\n\n const uiTextNodeStyle = window.getComputedStyle(uiTextNode);\n const sizingStyle = SIZING_STYLE.map(\n (name) => `${name}:${uiTextNodeStyle.getPropertyValue(name)}`\n ).join(\";\");\n\n // equal style\n hiddenTextarea.setAttribute(\n \"style\",\n `${sizingStyle};${HIDDEN_TEXTAREA_STYLE}`\n );\n hiddenTextarea.value = uiTextNode.value || uiTextNode.placeholder || \"\";\n\n let minHeight: number | undefined;\n let maxHeight: number | undefined;\n let overflowY: React.CSSProperties[\"overflowY\"];\n\n let height = hiddenTextarea.scrollHeight + borderSize;\n\n if (minRows !== null || maxRows !== null) {\n const singleRowHeight =\n process.env.NODE_ENV === \"test\"\n ? 22\n : parseFloat(\n window\n .getComputedStyle(hiddenTextarea)\n .getPropertyValue(\"line-height\")\n );\n if (minRows !== null) {\n minHeight = singleRowHeight * minRows + paddingSize + borderSize;\n height = Math.max(minHeight, height);\n }\n if (maxRows !== null) {\n maxHeight = singleRowHeight * maxRows + paddingSize + borderSize;\n if (height <= maxHeight) {\n overflowY = \"hidden\";\n }\n height = Math.min(maxHeight, height);\n }\n }\n\n const style: React.CSSProperties = {\n height,\n overflowY,\n resize: \"none\",\n };\n\n if (minHeight) {\n style.minHeight = minHeight;\n }\n if (maxHeight) {\n style.maxHeight = maxHeight;\n }\n\n return style;\n}\n","import React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { flushSync } from \"react-dom\";\nimport ResizeObserver from \"resize-observer-polyfill\";\nimport calculateAutoSizeStyle from \"./utils/calculateAutoSizeStyle.js\";\n\n// istanbul ignore next\nconst modKey = /Mac|iPod|iPhone|iPad/.test(navigator.platform)\n ? \"metaKey\"\n : \"ctrlKey\";\n\nexport interface TextareaAutoResizeProps\n extends React.DetailedHTMLProps<\n React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n HTMLTextAreaElement\n > {\n /** @default true */\n autoResize?: boolean;\n minRows?: number | null;\n maxRows?: number | null;\n /** @default 2 */\n borderSize?: number;\n /** @default 8 */\n paddingSize?: number;\n containerRef?: React.RefObject<HTMLElement>;\n submitWhen?: \"enter-without-shift\" | \"enter-with-mod\";\n}\n\nexport interface TextareaAutoResizeRef {\n focus(): void;\n}\n\nexport const TextareaAutoResize = React.forwardRef<\n TextareaAutoResizeRef,\n TextareaAutoResizeProps\n>(LegacyTextareaAutoResize);\n\nfunction LegacyTextareaAutoResize(\n {\n autoResize: _autoResize,\n minRows,\n maxRows,\n borderSize,\n paddingSize,\n containerRef,\n value: propValue,\n style,\n submitWhen,\n onChange,\n onSubmit,\n onKeyDown,\n onCompositionStart,\n onCompositionEnd,\n ...props\n }: TextareaAutoResizeProps,\n ref: React.ForwardedRef<TextareaAutoResizeRef>\n): React.JSX.Element {\n const autoResize = _autoResize ?? true;\n const [value, setValue] = useState(propValue ?? \"\");\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const [autoStyle, setAutoStyle] = useState<React.CSSProperties | null>(null);\n\n useImperativeHandle(\n ref,\n () => ({\n focus: () => {\n const textarea = textareaRef.current;\n // istanbul ignore else: defensive check\n if (textarea) {\n const valueLength = textarea.value?.length;\n textarea.focus();\n valueLength && textarea.setSelectionRange(valueLength, valueLength);\n }\n },\n }),\n []\n );\n\n const doAutoResize = useCallback(() => {\n const textarea = textareaRef.current;\n if (textarea && autoResize) {\n const style = calculateAutoSizeStyle(textarea, {\n minRows,\n maxRows,\n borderSize,\n paddingSize,\n });\n // istanbul ignore next\n if (process.env.NODE_ENV === \"test\") {\n setAutoStyle(style);\n } else {\n flushSync(() => {\n setAutoStyle(style);\n });\n }\n }\n }, [autoResize, maxRows, minRows, borderSize, paddingSize]);\n\n const handleInputChange = (\n e: React.ChangeEvent<HTMLTextAreaElement>\n ): void => {\n setValue(e.target.value);\n onChange?.(e);\n };\n\n useEffect(() => {\n setValue(propValue ?? \"\");\n }, [propValue]);\n\n useEffect(() => {\n doAutoResize();\n }, [doAutoResize, value]);\n\n const compositionRef = useRef(false);\n\n const handleCompositionStart = useCallback(\n (e: React.CompositionEvent<HTMLTextAreaElement>) => {\n compositionRef.current = true;\n onCompositionStart?.(e);\n },\n [onCompositionStart]\n );\n\n const handleCompositionEnd = useCallback(\n (e: React.CompositionEvent<HTMLTextAreaElement>) => {\n compositionRef.current = false;\n onCompositionEnd?.(e);\n },\n [onCompositionEnd]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (compositionRef.current) {\n // Ignore key events during composition\n return;\n }\n\n if (\n e.key === \"Enter\" &&\n (submitWhen === \"enter-without-shift\"\n ? !e.shiftKey\n : submitWhen === \"enter-with-mod\" && e[modKey])\n ) {\n e.preventDefault();\n e.stopPropagation();\n onSubmit?.(e);\n }\n\n onKeyDown?.(e);\n },\n [onKeyDown, onSubmit, submitWhen]\n );\n\n // istanbul ignore next\n useEffect(() => {\n const container = containerRef?.current;\n if (!container || !autoResize) {\n return;\n }\n let previousInlineSize: number | undefined;\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === container) {\n // istanbul ignore next: compatibility\n const currentInlineSize = entry.contentBoxSize\n ? entry.contentBoxSize[0]\n ? entry.contentBoxSize[0].inlineSize\n : (entry.contentBoxSize as unknown as ResizeObserverSize)\n .inlineSize\n : entry.contentRect.width;\n if (\n currentInlineSize !== undefined &&\n currentInlineSize !== previousInlineSize\n ) {\n const isInitial = !previousInlineSize;\n previousInlineSize = currentInlineSize;\n if (!isInitial) {\n requestAnimationFrame(doAutoResize);\n }\n }\n }\n }\n });\n observer.observe(container);\n return () => {\n observer.disconnect();\n };\n }, [autoResize, containerRef, doAutoResize]);\n\n return (\n <textarea\n {...props}\n ref={textareaRef}\n value={value}\n style={{\n ...style,\n ...autoStyle,\n }}\n onChange={handleInputChange}\n onCompositionStart={handleCompositionStart}\n onCompositionEnd={handleCompositionEnd}\n onKeyDown={handleKeyDown}\n />\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","import type { Reducer } from \"react\";\nimport { isEqual, isMatchWith, pick } from \"lodash\";\nimport type { Job, JobPatch, Message, Part, TextPart } from \"../interfaces\";\nimport type { CruiseCanvasAction } from \"./interfaces\";\n\nexport const jobs: Reducer<Job[], CruiseCanvasAction> = (state, action) => {\n switch (action.type) {\n case \"sse\": {\n const jobsPatch = action.payload.jobs;\n let jobs = action.isInitial ? [] : state;\n\n if (!Array.isArray(jobsPatch) || jobsPatch.length === 0) {\n return jobs;\n }\n\n for (const jobPatch of jobsPatch) {\n // TODO(): remove temp work around.\n // if (!jobPatch.upstream?.length) {\n // delete jobPatch.upstream;\n // }\n // if (!jobPatch.parent) {\n // delete jobPatch.parent;\n // }\n // if (!jobPatch.state) {\n // delete jobPatch.state;\n // }\n // if (!jobPatch.instruction) {\n // delete jobPatch.instruction;\n // }\n\n if ((jobPatch as any).state === \"blocked\") {\n jobPatch.state = \"working\";\n }\n\n const previousJobIndex =\n jobs?.findIndex((job) => job.id === jobPatch.id) ?? -1;\n const { messages: messagesPatch, toolCall } = jobPatch;\n\n if (typeof toolCall?.arguments === \"string\") {\n try {\n jobPatch.toolCall!.arguments = JSON.parse(toolCall.arguments);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to parse toolCall arguments\", e);\n jobPatch.toolCall!.arguments = {};\n jobPatch.toolCall!.argumentsParseFailed = true;\n jobPatch.toolCall!.argumentsParseError = e;\n }\n }\n\n if (previousJobIndex === -1) {\n if (Array.isArray(messagesPatch) && messagesPatch.length > 0) {\n jobs = [\n ...jobs,\n {\n ...jobPatch,\n messages: mergeMessages(messagesPatch),\n } as Job,\n ];\n } else {\n jobs = [...jobs, jobPatch as Job];\n }\n } else {\n const previousJob = jobs[previousJobIndex];\n const restMessagesPatch: JobPatch = pick(jobPatch, [\n \"id\",\n \"upstream\",\n \"parent\",\n \"state\",\n \"instruction\",\n \"toolCall\",\n \"isError\",\n \"startTime\",\n \"endTime\",\n ]);\n if (Array.isArray(messagesPatch) && messagesPatch.length > 0) {\n restMessagesPatch.messages = mergeMessages([\n ...(previousJob.messages ?? []),\n ...messagesPatch,\n ]);\n }\n if (!isMatchWith(previousJob, restMessagesPatch, isEqual)) {\n jobs = [\n ...jobs.slice(0, previousJobIndex),\n {\n ...previousJob,\n ...restMessagesPatch,\n },\n ...jobs.slice(previousJobIndex + 1),\n ];\n }\n }\n }\n\n return jobs;\n }\n\n case \"reset\": {\n return state.length === 0 ? state : [];\n }\n }\n\n return state;\n};\n\nfunction mergeMessages(messages: Message[]): Message[] {\n const merged: Message[] = [];\n let previousRole: Message[\"role\"] | undefined;\n for (const message of messages) {\n if (!previousRole || previousRole !== message.role) {\n merged.push({ ...message });\n } else {\n const lastMessage = merged[merged.length - 1];\n lastMessage.parts = [...lastMessage.parts, ...message.parts];\n }\n previousRole = message.role;\n }\n\n for (const message of merged) {\n message.parts = mergeMessageParts(message.parts);\n }\n\n return merged;\n}\n\nfunction mergeMessageParts(parts: Part[]): Part[] {\n const merged: Part[] = [];\n let previousType: Part[\"type\"] | undefined;\n for (const part of parts) {\n if (!previousType || previousType !== part.type || part.type !== \"text\") {\n merged.push({ ...part });\n } else {\n const lastPart = merged[merged.length - 1] as TextPart;\n lastPart.text += part.text;\n }\n previousType = part.type;\n }\n return merged;\n}\n","import { Reducer } from \"react\";\nimport type { CruiseCanvasAction, CruiseCanvasState } from \"./interfaces\";\nimport { jobs } from \"./jobs\";\nimport { task } from \"./task\";\nimport { error } from \"./error\";\n\ntype ReducersMapObject<S, A> = {\n [K in keyof S]: Reducer<S[K], A>;\n};\n\nfunction combineReducers<S, A>(\n reducers: ReducersMapObject<S, A>\n): Reducer<S, A> {\n return ((state, action) =>\n Object.fromEntries(\n Object.entries<Reducer<any, A>>(reducers).map(([key, value]) => [\n key,\n value(state[key as keyof S], action),\n ])\n )) as Reducer<S, A>;\n}\n\nexport const rootReducer = combineReducers<\n CruiseCanvasState,\n CruiseCanvasAction\n>({\n task,\n jobs,\n error,\n});\n","import type { Reducer } from \"react\";\nimport { isEqual, isMatchWith, pick } from \"lodash\";\nimport type { TaskBaseDetail } from \"../interfaces\";\nimport type { CruiseCanvasAction } from \"./interfaces\";\n\nexport const task: Reducer<TaskBaseDetail | null, CruiseCanvasAction> = (\n state,\n action\n) => {\n switch (action.type) {\n case \"sse\": {\n const taskPatch = pick(action.payload, [\n \"id\",\n \"requirement\",\n \"state\",\n \"startTime\",\n \"endTime\",\n \"plan\",\n ]);\n\n // TODO(): remove temp work around.\n // if (!taskPatch.requirement) {\n // delete taskPatch.requirement;\n // }\n // if (!taskPatch.state) {\n // delete taskPatch.state;\n // }\n\n if ((taskPatch as any).state === \"blocked\") {\n taskPatch.state = \"working\";\n }\n\n return (\n action.isInitial\n ? taskPatch\n : state && isMatchWith(state, taskPatch, isEqual)\n ? state\n : { ...state, ...taskPatch }\n ) as TaskBaseDetail;\n }\n\n case \"reset\": {\n return null;\n }\n }\n return state;\n};\n","import type { Reducer } from \"react\";\nimport type { CruiseCanvasAction } from \"./interfaces\";\n\nexport const error: Reducer<string | null, CruiseCanvasAction> = (\n state,\n action\n) => {\n switch (action.type) {\n case \"sse\": {\n const error = action.payload.error;\n return state === null && typeof error === \"string\" ? error : state;\n }\n\n case \"reset\": {\n return null;\n }\n }\n\n return state;\n};\n","// istanbul ignore file\nimport { useEffect, useReducer, useRef, useState } from \"react\";\nimport { isEqual } from \"lodash\";\nimport { HttpResponseError } from \"@next-core/http\";\nimport { createSSEStream } from \"@next-core/utils/general\";\nimport { getBasePath, handleHttpError } from \"@next-core/runtime\";\nimport { rootReducer } from \"./reducers\";\nimport type { Job, StepWithState, TaskPatch } from \"./interfaces\";\n\nexport function useTaskDetail(taskId: string | undefined) {\n const [{ task, jobs, error }, dispatch] = useReducer(\n rootReducer,\n null,\n () => ({\n task: null,\n jobs: [],\n error: null,\n })\n );\n\n const humanInputRef = useRef<(jobId: string, input: string) => void>();\n\n useEffect(() => {\n dispatch({ type: \"reset\" });\n humanInputRef.current = undefined;\n if (!taskId) {\n return;\n }\n\n let ignore = false;\n let requesting = false;\n let ctrl: AbortController | undefined;\n\n const makeRequest = async () => {\n if (requesting) {\n return;\n }\n\n requesting = true;\n ctrl = new AbortController();\n try {\n const request = await createSSEStream<TaskPatch>(\n `${getBasePath()}api/gateway/logic.llm.aiops_service/api/v1/llm/agent/flow/${taskId}`,\n // `/api/mocks/task/get?${new URLSearchParams({ id: taskId })}`\n // `http://localhost:8888/.netlify/functions/task-get?${new URLSearchParams({ id: taskId })}`\n // `https://serverless-mocks.netlify.app/.netlify/functions/task-get?${new URLSearchParams({ id: taskId })}`\n {\n signal: ctrl.signal,\n }\n );\n const stream = await request;\n let isInitial = true;\n for await (const value of stream) {\n if (ignore) {\n requesting = false;\n return;\n }\n\n dispatch({ type: \"sse\", payload: value, isInitial });\n isInitial = false;\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"sse failed\", e);\n handleHttpError(e);\n } finally {\n requesting = false;\n }\n };\n\n humanInputRef.current = async (jobId: string, input: string) => {\n const response = await fetch(\n `${getBasePath()}api/gateway/logic.llm.aiops_service/api/v1/llm/agent/flow/${taskId}/job/${jobId}`,\n // `/api/mocks/task/input`,\n // `http://localhost:8888/.netlify/functions/task-input`,\n // `https://serverless-mocks.netlify.app/.netlify/functions/task-input`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n id: taskId,\n jobId: jobId,\n input,\n }),\n }\n );\n if (response.ok) {\n makeRequest();\n } else {\n // eslint-disable-next-line no-console\n console.error(\n \"human input failed\",\n response.status,\n response.statusText\n );\n\n let responseJson;\n try {\n responseJson = await response.json();\n } catch {\n // Do nothing.\n }\n handleHttpError(new HttpResponseError(response, responseJson));\n }\n };\n\n makeRequest();\n\n return () => {\n ignore = true;\n ctrl?.abort();\n };\n }, [taskId]);\n\n const [plan, setPlan] = useState<StepWithState[]>([]);\n\n useEffect(() => {\n setPlan((prev) => {\n const jobMap = new Map<string, Job>();\n const childrenMap = new Map<string, string[]>();\n for (const job of jobs) {\n jobMap.set(job.id, job);\n\n if (job.parent) {\n childrenMap.set(job.parent, [\n ...(childrenMap.get(job.parent) ?? []),\n job.id,\n ]);\n }\n }\n\n // A step is input-required when itself is input-required or any of its descendants is input-required.\n const isInputRequired = (job: Job): boolean => {\n return (\n job.state === \"input-required\" ||\n !!childrenMap.get(job.id)?.some((childId) => {\n const childJob = jobMap.get(childId)!;\n return isInputRequired(childJob);\n })\n );\n };\n\n const plan: StepWithState[] = [];\n for (const step of task?.plan ?? []) {\n const job = jobMap.get(step.id);\n plan.push({\n id: step.id,\n instruction: step.instruction,\n state: job\n ? isInputRequired(job)\n ? \"input-required\"\n : job.state\n : undefined,\n });\n }\n\n return isEqual(prev, plan) ? prev : plan;\n });\n }, [jobs, task?.plan]);\n\n return { task, jobs, plan, error, humanInputRef };\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]!./PlanProgress.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]!./PlanProgress.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file: experimental\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport classNames from \"classnames\";\nimport styles from \"./PlanProgress.module.css\";\nimport type { JobState, StepWithState } from \"../interfaces\";\nimport { WrappedIcon } from \"../bricks\";\nimport { K, t } from \"../i18n\";\n\nexport interface PlanProgressProps {\n plan?: StepWithState[];\n}\n\ninterface PlanProgressStat {\n doneCount: number;\n instruction: string;\n state: JobState | undefined;\n}\n\nexport function PlanProgress({ plan }: PlanProgressProps): JSX.Element | null {\n const [expanded, setExpanded] = useState(false);\n\n const { doneCount, state, instruction } = useMemo(() => {\n return (plan ?? []).reduce<PlanProgressStat>(\n (acc, step) => {\n if (step.state === \"completed\") {\n return {\n ...acc,\n state: step.state,\n doneCount: acc.doneCount + 1,\n };\n } else if (!acc.instruction) {\n return {\n ...acc,\n state: step.state,\n instruction: step.instruction,\n };\n }\n return acc;\n },\n {\n doneCount: 0,\n state: \"unknown\",\n instruction: \"\",\n }\n );\n }, [plan]);\n\n const { className, icon } = useMemo(() => {\n return getClassNameAndIconProps(state);\n }, [state]);\n\n const toggle = useCallback(() => {\n setExpanded((prev) => !prev);\n }, []);\n\n if (!plan?.length) {\n return null;\n }\n\n return (\n <div className={classNames(styles.progress, className)} onClick={toggle}>\n <div className={styles.icon}>\n <WrappedIcon {...icon} />\n </div>\n <span\n className={styles.text}\n title={state === \"completed\" ? \"\" : instruction}\n >\n {state === \"completed\" ? t(K.PLAN_COMPLETED) : instruction}\n </span>\n <span className={styles.stat}>\n {doneCount}/{plan.length}\n </span>\n <WrappedIcon\n className={styles.expand}\n lib=\"antd\"\n theme=\"outlined\"\n icon={expanded ? \"down\" : \"up\"}\n />\n {expanded && (\n <ul className={styles.details} onClick={(e) => e.stopPropagation()}>\n {plan.map((step, index) => (\n <PlanStep\n key={index}\n state={step.state}\n instruction={step.instruction}\n />\n ))}\n </ul>\n )}\n </div>\n );\n}\n\ninterface PlanStepProps {\n state?: JobState;\n instruction: string;\n}\n\nfunction PlanStep({ state, instruction }: PlanStepProps) {\n const { className, icon } = useMemo(() => {\n return getClassNameAndIconProps(state);\n }, [state]);\n\n return (\n <li className={styles.step}>\n <WrappedIcon {...icon} className={classNames(styles.state, className)} />\n <span className={styles.instruction} title={instruction}>\n {instruction}\n </span>\n </li>\n );\n}\n\nfunction getClassNameAndIconProps(state: JobState | undefined) {\n switch (state) {\n case \"completed\":\n return {\n className: styles.completed,\n icon: {\n lib: \"fa\",\n prefix: \"fas\",\n icon: \"check\",\n },\n };\n case \"submitted\":\n case \"working\":\n return {\n className: styles.working,\n icon: {\n lib: \"antd\",\n theme: \"outlined\",\n icon: \"loading-3-quarters\",\n spinning: true,\n },\n };\n case \"input-required\":\n return {\n className: styles[\"input-required\"],\n icon: {\n lib: \"fa\",\n prefix: \"far\",\n icon: \"circle-pause\",\n },\n };\n case \"failed\":\n return {\n className: styles.failed,\n icon: {\n lib: \"fa\",\n prefix: \"fas\",\n icon: \"xmark\",\n },\n };\n case \"canceled\":\n return {\n className: styles.canceled,\n icon: {\n lib: \"fa\",\n prefix: \"far\",\n icon: \"circle-stop\",\n },\n };\n default:\n return {\n icon: {\n lib: \"fa\",\n prefix: \"far\",\n icon: \"clock\",\n },\n };\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, `.zoom-bar--MTw5VGPl{position:absolute;left:20px;bottom:20px;display:flex;align-items:center;padding:4px 6px;-webkit-user-select:none;user-select:none;background:rgba(255,255,255,0.7);box-shadow:0px 3px 14px 0px rgba(0,0,0,0.1),0px 1px 4px 0px rgba(0,0,0,0.06);border-radius:8px;border:1px solid rgba(255,255,255,0.3)}.zoom-bar--MTw5VGPl button{background:transparent;border:none;border-radius:4px;color:#333;width:24px;height:24px;font-size:16px;line-height:16px;display:flex;align-items:center;justify-content:center;cursor:pointer}.zoom-bar--MTw5VGPl button:hover{background:rgba(0,0,0,0.04)}.zoom-bar--MTw5VGPl button:active{background:rgba(0,0,0,0.08)}.divider--S0X2YCDi{background:rgba(0,0,0,0.15);width:1px;height:16px}.zoom-bar--MTw5VGPl > :not(:last-child){margin-right:6px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"zoom-bar\": `zoom-bar--MTw5VGPl`,\n\t\"divider\": `divider--S0X2YCDi`\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]!./NodeRequirement.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]!./NodeRequirement.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file: experimental\nimport React, { useMemo } from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport type {\n EoEasyopsAvatar,\n EoEasyopsAvatarProps,\n} from \"@next-bricks/basic/easyops-avatar\";\nimport moment from \"moment\";\nimport styles from \"./NodeRequirement.module.css\";\n\nconst WrappedEasyOpsAvatar = wrapBrick<EoEasyopsAvatar, EoEasyopsAvatarProps>(\n \"eo-easyops-avatar\"\n);\n\nexport interface NodeRequirementProps {\n content?: string;\n startTime?: number;\n loading?: boolean;\n}\n\nexport function NodeRequirement({\n content,\n startTime,\n loading,\n}: NodeRequirementProps): JSX.Element {\n const username = useMemo(() => {\n return auth.getAuth().username;\n }, []);\n\n return (\n <div className={styles[\"node-requirement\"]}>\n <div className={styles.heading}>\n <div className={styles.user}>\n <WrappedEasyOpsAvatar\n nameOrInstanceId={username}\n showName\n size=\"xs\"\n />\n </div>\n <div className={styles.time}>\n {startTime && moment(startTime * 1000).format(\"MM-DD HH:mm\")}\n </div>\n </div>\n <div className={styles.body}>{content}</div>\n {loading && (\n <>\n <svg\n className={styles[\"loading-line\"]}\n viewBox=\"0 0 2 62\"\n width=\"2\"\n height=\"62\"\n >\n <path d=\"M1 0 L1 62\" />\n </svg>\n <div className={styles.loading}>\n <div className={styles.inner} />\n </div>\n </>\n )}\n </div>\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, `.progress--62eOnxaf{position:absolute;bottom:20px;left:50%;transform:translate(-50%,0);width:453px;max-width:80%;background:#ffffff;box-shadow:0px 6px 16px 0px rgba(0,0,0,0.08),0px 3px 6px -4px rgba(0,0,0,0.12);border-radius:12px;padding:12px;line-height:24px;cursor:pointer;display:flex;align-items:center}.icon--TMLJniSx{margin-right:6px;width:22px;height:22px;border-radius:22px;display:flex;align-items:center;justify-content:center;background:linear-gradient(222deg,#abaab7 25%,#fff 75%);color:#4e4d56;font-size:12px;text-shadow:0px 1px 1px #fff}.progress--62eOnxaf.completed--ACUTqxl7 .icon--TMLJniSx{background:linear-gradient(222deg,#16c661 25%,#fff 75%);color:#055527}.progress--62eOnxaf.failed--atS7ek2B .icon--TMLJniSx{background:linear-gradient(222deg,#f24c25 25%,#fff 75%);color:#5b1504}.progress--62eOnxaf.working--Z6W16jVj .icon--TMLJniSx{background:linear-gradient(222deg,#3e56ff 25%,#fff 75%);color:#0c165d}.progress--62eOnxaf.input-required--YhWlEgu0 .icon--TMLJniSx{background:linear-gradient(222deg,#12aacc 25%,#fff 75%);color:#0c353e}.progress--62eOnxaf.canceled--imA9nfyy .icon--TMLJniSx{background:linear-gradient(222deg,#fcaa07 25%,#fff 75%);color:#302206}.text--vZYOZzn1,\n.instruction--Z7riLyFL{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-width:0;flex:1}.stat--YsJ88cZz{margin-left:auto;color:#8c8c8c}.expand--gqn8QEnc{margin-left:6px;color:#8c8c8c}.details--rtuqBzKj{position:absolute;left:0;right:0;bottom:4em;background:#fff;border-radius:12px;box-shadow:0px 6px 16px 0px rgba(0,0,0,0.08),0px 3px 6px -4px rgba(0,0,0,0.12);list-style:none;margin:0;padding:12px;cursor:auto}.step--f9i49Db2{display:flex;align-items:center}.step--f9i49Db2:not(:last-child){margin-bottom:8px}.state--TmkD_q3_{margin-right:6px;color:var(--text-color-secondary)}.state--TmkD_q3_.completed--ACUTqxl7{color:var(--color-success)}.state--TmkD_q3_.failed--atS7ek2B{color:var(--color-error)}.state--TmkD_q3_.working--Z6W16jVj{color:var(--color-info)}.state--TmkD_q3_.input-required--YhWlEgu0{color:var(--palette-cyan-7)}.state--TmkD_q3_.canceled--imA9nfyy{color:#fcaa07}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"progress\": `progress--62eOnxaf`,\n\t\"icon\": `icon--TMLJniSx`,\n\t\"completed\": `completed--ACUTqxl7`,\n\t\"failed\": `failed--atS7ek2B`,\n\t\"working\": `working--Z6W16jVj`,\n\t\"input-required\": `input-required--YhWlEgu0`,\n\t\"canceled\": `canceled--imA9nfyy`,\n\t\"text\": `text--vZYOZzn1`,\n\t\"instruction\": `instruction--Z7riLyFL`,\n\t\"stat\": `stat--YsJ88cZz`,\n\t\"expand\": `expand--gqn8QEnc`,\n\t\"details\": `details--rtuqBzKj`,\n\t\"step\": `step--f9i49Db2`,\n\t\"state\": `state--TmkD_q3_`\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]!./ZoomBar.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]!./ZoomBar.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file: experimental\nimport React, { useCallback } from \"react\";\nimport styles from \"./ZoomBar.module.css\";\nimport { WrappedIcon } from \"../bricks\";\n\nexport interface ZoomBarProps {\n scale: number;\n onScaleChange?: (scale: number) => void;\n onReCenter?: () => void;\n}\n\nexport function ZoomBar({\n scale,\n onScaleChange,\n onReCenter,\n}: ZoomBarProps): JSX.Element {\n const handleZoomIn = useCallback(() => {\n onScaleChange?.(scale + 0.1);\n }, [onScaleChange, scale]);\n\n const handleZoomOut = useCallback(() => {\n onScaleChange?.(scale - 0.1);\n }, [onScaleChange, scale]);\n\n return (\n <div className={styles[\"zoom-bar\"]}>\n <button onClick={onReCenter}>\n <WrappedIcon lib=\"fa\" prefix=\"fas\" icon=\"expand\" />\n </button>\n <div className={styles.divider}></div>\n <button onClick={handleZoomOut}>\n <WrappedIcon lib=\"antd\" theme=\"outlined\" icon=\"minus-circle\" />\n </button>\n <button onClick={handleZoomIn}>\n <WrappedIcon lib=\"antd\" theme=\"outlined\" icon=\"plus-circle\" />\n </button>\n </div>\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, `.node-instruction--Gu7k6RDs{max-width:437px;background:rgba(255,255,255,0.2);box-shadow:0px 4px 10px 0px rgba(54,64,80,0.08);border-radius:9999px;border:1px solid rgba(255,255,255,0.284);padding:6px 16px;color:rgba(0,0,0,0.45)}.text--jsSeLl7B{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.loading--KdGolqAK > .text--jsSeLl7B{color:transparent;background:linear-gradient(to right,rgba(0,0,0,0.45) 0%,rgba(0,0,0,0.45) 40%,rgba(220,220,220,1) 50%,rgba(0,0,0,0.45) 60%,rgba(0,0,0,0.45) 100%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;animation:shineEffect--Zn2JtRpU 2s infinite linear}@keyframes shineEffect--Zn2JtRpU{0%{background-position:-50% 50%}100%{background-position:-250% 50%}}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"node-instruction\": `node-instruction--Gu7k6RDs`,\n\t\"text\": `text--jsSeLl7B`,\n\t\"loading\": `loading--KdGolqAK`,\n\t\"shineEffect\": `shineEffect--Zn2JtRpU`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { visit } from \"unist-util-visit\";\nimport { toString } from \"hast-util-to-string\";\nimport { refractor, type RefractorElement } from \"refractor\";\n\n// Reference https://github.com/mapbox/rehype-prism\nexport function rehypePrism() {\n function visitor(\n node: RefractorElement,\n _index: number | undefined,\n parent: RefractorElement | undefined\n ) {\n if (!parent || parent.tagName !== \"pre\" || node.tagName !== \"code\") {\n return;\n }\n\n const lang = getLanguage(node);\n\n if (lang === null) {\n return;\n }\n\n let result;\n try {\n parent.properties.className = (\n (parent.properties.className as string[]) || []\n ).concat(\"language-\" + lang);\n result = refractor.highlight(toString(node), lang);\n } catch {\n return;\n }\n\n node.children = result.children;\n }\n return (tree: RefractorElement) => {\n visit(tree, \"element\", visitor);\n };\n}\n\nfunction getLanguage(node: RefractorElement) {\n const className = (node.properties.className as string[]) || [];\n\n for (const classListItem of className) {\n if (classListItem.slice(0, 9) === \"language-\") {\n return classListItem.slice(9).toLowerCase();\n }\n }\n\n return null;\n}\n","import { useEffect, useState } from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nimport { unified } from \"unified\";\nimport remarkParse from \"remark-parse\";\nimport remarkToRehype from \"remark-rehype\";\nimport rehypeReact, { Options as RehypeReactOptions } from \"rehype-react\";\nimport { rehypePrism } from \"./rehypePrism.js\";\n\nconst production = { Fragment, jsx, jsxs };\n\nexport interface MarkdownComponentProps {\n content?: string;\n}\n\n// Reference https://github.com/remarkjs/react-remark/blob/39553e5f5c9e9b903bebf261788ff45130668de0/src/index.ts\nexport function MarkdownComponent({ content }: MarkdownComponentProps) {\n const [reactContent, setReactContent] = useState<JSX.Element | null>(null);\n\n useEffect(() => {\n let ignore = false;\n unified()\n .use(remarkParse)\n .use(remarkToRehype)\n .use([rehypePrism])\n .use(rehypeReact, production as RehypeReactOptions)\n .process(content)\n .then((vFile) => {\n if (!ignore) {\n setReactContent(vFile.result);\n }\n })\n .catch((error) => {\n if (!ignore) {\n // eslint-disable-next-line no-console\n console.error(\"Convert markdown failed:\", error);\n setReactContent(null);\n }\n });\n return () => {\n ignore = true;\n };\n }, [content]);\n\n return reactContent;\n}\n","import React from \"react\";\nimport { asyncWrapBrick } from \"@next-core/react-runtime\";\n\ninterface CMDBSelectProps {\n objectId?: string | null;\n fieldId?: string | null;\n objectList?: any[] | null;\n}\n\ninterface CMDBSelectEvents {\n \"cmdb.instance.form.change.v2\": CustomEvent<any[]>;\n}\n\ninterface CMDBSelectEvensMapping {\n onChangeV2: \"cmdb.instance.form.change.v2\";\n}\n\nexport const AsyncWrappedCMDB = React.lazy(async () => ({\n default: await asyncWrapBrick<\n HTMLElement,\n CMDBSelectProps,\n CMDBSelectEvents,\n CMDBSelectEvensMapping\n >(\"cmdb-instances.cmdb-instances-input-form\", {\n onChangeV2: \"cmdb.instance.form.change.v2\",\n }),\n}));\n","// istanbul ignore file: experimental\nimport React, { Suspense, useEffect, useMemo, useRef, useState } from \"react\";\nimport { MarkdownComponent } from \"@next-shared/markdown\";\nimport { TextareaAutoResize } from \"@next-shared/form\";\nimport { CmdbObjectApi_getObjectRef } from \"@next-api-sdk/cmdb-sdk\";\nimport classNames from \"classnames\";\nimport moment from \"moment\";\nimport { handleHttpError } from \"@next-core/runtime\";\nimport styles from \"./NodeJob.module.css\";\nimport type { Job } from \"../interfaces\";\nimport { K, t } from \"../i18n.js\";\nimport { AsyncWrappedCMDB } from \"../cmdb.js\";\nimport { WrappedButton, WrappedIcon } from \"../bricks.js\";\n\nexport interface NodeJobProps {\n job: Job;\n state?: string;\n humanInput?: (jobId: string, input: string) => void;\n}\n\nexport function NodeJob({ job, state, humanInput }: NodeJobProps): JSX.Element {\n const askUser = job.toolCall?.name === \"ask_human\";\n const knownAskUser =\n askUser &&\n [\n \"ask_user_more\",\n \"ask_user_confirm\",\n \"ask_user_choose\",\n \"ask_user_select_from_cmdb\",\n ].includes(job.toolCall!.arguments?.command as string);\n\n return (\n <div\n className={classNames(styles[\"node-job\"], {\n [styles.error]: job.isError,\n [styles[\"ask-user\"]]: knownAskUser,\n })}\n >\n <div className={styles.heading}>\n {job.toolCall ? (\n <>\n {askUser ? (\n <WrappedIcon\n className={styles.icon}\n lib=\"fa\"\n prefix=\"fas\"\n icon=\"person-circle-question\"\n />\n ) : (\n <WrappedIcon\n className={styles.icon}\n lib=\"antd\"\n theme=\"outlined\"\n icon=\"tool\"\n />\n )}\n <div className={styles.tool}>{job.toolCall?.name}</div>\n </>\n ) : (\n <>\n <WrappedIcon className={styles.icon} lib=\"easyops\" icon=\"robot\" />\n </>\n )}\n <div className={styles.time}>\n {job.startTime && moment(job.startTime * 1000).format(\"MM-DD HH:mm\")}\n </div>\n </div>\n <div className={styles.body}>\n {knownAskUser ? (\n <>\n <div className={`${styles.message} ${styles[\"role-assistant\"]}`}>\n <MarkdownComponent\n content={job.toolCall!.arguments?.question as string}\n />\n </div>\n {state === \"input-required\" &&\n (job.toolCall!.arguments!.command === \"ask_user_more\" ? (\n <HumanInputComponent jobId={job.id} humanInput={humanInput} />\n ) : job.toolCall!.arguments!.command === \"ask_user_confirm\" ? (\n <HumanConfirmComponent jobId={job.id} humanInput={humanInput} />\n ) : job.toolCall!.arguments!.command === \"ask_user_choose\" ? (\n <HumanChooseComponent\n jobId={job.id}\n humanInput={humanInput}\n options={job.toolCall!.arguments!.options as string[]}\n />\n ) : job.toolCall!.arguments!.command ===\n \"ask_user_select_from_cmdb\" ? (\n <HumanSelectFromCmdb\n jobId={job.id}\n humanInput={humanInput}\n objectId={job.toolCall!.arguments!.objectId as string}\n attrId={job.toolCall!.arguments!.attrId as string}\n />\n ) : null)}\n </>\n ) : askUser ? (\n <div className={`${styles.message} ${styles[\"role-assistant\"]}`}>\n Unexpected ask_human command:{\" \"}\n {JSON.stringify(job.toolCall!.arguments?.command ?? null)}\n </div>\n ) : null}\n {job.messages?.map((message, index) => (\n <div\n key={index}\n className={classNames(styles.message, {\n [styles[\"role-user\"]]: message.role === \"tool\" && askUser,\n })}\n >\n {message.parts?.map((part, partIndex) => (\n <React.Fragment key={partIndex}>\n {part.type === \"text\" ? (\n message.role === \"tool\" && askUser ? (\n part.text\n ) : (\n <RefineMarkdownComponent\n content={part.text}\n isToolOutput={\n message.role === \"tool\" && !!job.toolCall && !askUser\n }\n />\n )\n ) : part.type === \"file\" ? (\n <div>{part.file.name}</div>\n ) : (\n <div>{JSON.stringify(part.data)}</div>\n )}\n </React.Fragment>\n ))}\n </div>\n ))}\n </div>\n </div>\n );\n}\n\nfunction HumanInputComponent({\n jobId,\n humanInput,\n}: {\n jobId: string;\n humanInput?: (jobId: string, input: string) => void;\n}): JSX.Element {\n const containerRef = useRef<HTMLDivElement>(null);\n\n return (\n <div /* className=\"node-ask-user-more size-medium\" */ ref={containerRef}>\n {/* <div className=\"message\">\n <MarkdownComponent content={node.content} />\n </div> */}\n <TextareaAutoResize\n className={styles[\"human-input\"]}\n containerRef={containerRef}\n autoResize\n minRows={2}\n paddingSize={14}\n placeholder=\"Type your message here...\"\n submitWhen=\"enter-without-shift\"\n onSubmit={(e) => {\n const input = e.currentTarget.value;\n if (input) {\n humanInput?.(jobId, input);\n }\n }}\n />\n </div>\n );\n}\n\nfunction HumanConfirmComponent({\n jobId,\n humanInput,\n}: {\n jobId: string;\n humanInput?: (jobId: string, input: string) => void;\n}): JSX.Element {\n return (\n <div style={{ marginTop: \"1em\" }}>\n <WrappedButton\n type=\"primary\"\n onClick={() => {\n humanInput?.(jobId, t(K.YES));\n }}\n >\n {t(K.YES)}\n </WrappedButton>\n <WrappedButton\n onClick={() => {\n humanInput?.(jobId, t(K.NO));\n }}\n style={{ marginLeft: \"0.5em\" }}\n >\n {t(K.NO)}\n </WrappedButton>\n </div>\n );\n}\n\nfunction HumanChooseComponent({\n jobId,\n options,\n humanInput,\n}: {\n jobId: string;\n options?: string[];\n humanInput?: (jobId: string, input: string) => void;\n}): JSX.Element {\n return (\n <div\n style={{\n marginTop: \"1em\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"0.5em\",\n }}\n >\n {options?.map((option, index) => (\n <WrappedButton\n key={index}\n onClick={() => {\n humanInput?.(jobId, option);\n }}\n >\n {option}\n </WrappedButton>\n ))}\n </div>\n );\n}\n\nfunction HumanSelectFromCmdb({\n jobId,\n objectId,\n attrId,\n humanInput,\n}: {\n jobId: string;\n objectId?: string;\n attrId?: string;\n humanInput?: (jobId: string, input: string) => void;\n}): JSX.Element {\n const [objectList, setObjectList] = useState<any[] | null>(null);\n\n useEffect(() => {\n if (!objectId) {\n return;\n }\n let ignore = false;\n (async () => {\n try {\n const objects = (\n await CmdbObjectApi_getObjectRef({ ref_object: objectId })\n ).data;\n if (!ignore) {\n setObjectList(objects);\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"Fetch object list failed:\", e);\n handleHttpError(e);\n }\n })();\n return () => {\n ignore = true;\n };\n }, [objectId]);\n\n if (!objectId) {\n return (\n <div style={{ marginTop: \"1em\" }}>\n Can not call ask_user_select_from_cmdb without objectId\n </div>\n );\n }\n // if (!objectId || !attrId) {\n // return <div style={{ marginTop: \"1em\" }}>Can not call ask_user_select_from_cmdb without {!objectId ? \"objectId\" : \"attrId\"}</div>;\n // }\n\n const fieldId =\n !attrId || (attrId === \"instanceId\" && objectId === \"HOST\") ? \"ip\" : attrId;\n\n return (\n <div style={{ marginTop: \"1em\" }}>\n <Suspense>\n <AsyncWrappedCMDB\n objectList={objectList}\n objectId={objectId}\n fieldId={fieldId}\n onChangeV2={(e) => {\n humanInput?.(\n jobId,\n e.detail.map((i) => i[fieldId /* ?? \"instanceId\" */]).join(\"\\n\")\n );\n }}\n />\n </Suspense>\n </div>\n );\n}\n\nfunction RefineMarkdownComponent({\n content,\n isToolOutput,\n}: {\n content?: string;\n isToolOutput?: boolean;\n}): JSX.Element {\n const refinedContent = useMemo(() => {\n if (isToolOutput) {\n try {\n const json = JSON.parse(content ?? \"\");\n return `${\"```json\\n\"}${JSON.stringify(json, null, 2)}${\"\\n```\"}`;\n } catch {\n // Do nothing.\n }\n }\n return content;\n }, [content, isToolOutput]);\n\n return <MarkdownComponent content={refinedContent} />;\n}\n","import { wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Button, ButtonProps } from \"@next-bricks/basic/button\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport const WrappedButton = wrapBrick<Button, ButtonProps>(\"eo-button\");\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(\"../images/requirement@2x.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, `.node-requirement--aVjY3LFY{width:453px;background-color:rgba(255,255,255,0.4);background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-position:center bottom;background-size:453px 128px;background-repeat:no-repeat;box-shadow:0px 4px 10px 0px rgba(54,64,80,0.18);border-radius:12px;-webkit-backdrop-filter:blur(28px);backdrop-filter:blur(28px);border:1px solid rgba(255,255,255,0.4);padding:8px;white-space:pre-wrap;position:relative}.heading--F8b1aIJT{display:flex;justify-content:space-between;align-items:center;margin-bottom:11px;font-size:12px}.time--IRwoiblW{color:#8c8c8c}.body--JYv_r9n_{background:#f1f6ff;box-shadow:0px 1px 0px 0px #ffffff;border-radius:9px;padding:15px 10px}.loading-line--xDrsXoxu{position:absolute;bottom:-62px;left:50%;transform:translate(-50%,0)}.loading-line--xDrsXoxu path{fill:none;stroke-width:2px;stroke:rgba(255,255,255,0.6);stroke-dasharray:5,5}.loading--yZvyv4wE{position:absolute;bottom:-74px;left:50%;transform:translate(-50%,0);width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:rgba(69,94,255,0.5);border-radius:24px;animation:loading--yZvyv4wE 1s infinite linear}.inner--voOHXPcc{width:12px;height:12px;background:rgb(69,94,255);border-radius:12px}@keyframes loading--yZvyv4wE{0%{transform:translate(-50%,0) scale(1);opacity:1}100%{transform:translate(-50%,0) scale(1.5);opacity:0}}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"node-requirement\": `node-requirement--aVjY3LFY`,\n\t\"heading\": `heading--F8b1aIJT`,\n\t\"time\": `time--IRwoiblW`,\n\t\"body\": `body--JYv_r9n_`,\n\t\"loading-line\": `loading-line--xDrsXoxu`,\n\t\"loading\": `loading--yZvyv4wE`,\n\t\"inner\": `inner--voOHXPcc`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { useEffect, useRef, useState, type RefObject } from \"react\";\nimport { ZoomTransform, type ZoomBehavior } from \"d3-zoom\";\nimport { select } from \"d3-selection\";\nimport type { GraphNode } from \"./interfaces\";\nimport { CANVAS_PADDING_BOTTOM } from \"./constants\";\n\nexport interface UseAutoCenterOptions {\n nodes: GraphNode[];\n sizeReady: boolean;\n zoomer: ZoomBehavior<HTMLDivElement, unknown>;\n rootRef: RefObject<HTMLDivElement>;\n}\n\nexport function useAutoCenter({\n nodes,\n sizeReady,\n zoomer,\n rootRef,\n}: UseAutoCenterOptions) {\n const [centered, setCentered] = useState(false);\n const reCenterRef = useRef(false);\n\n // Transform to horizontal center once.\n useEffect(() => {\n const root = rootRef.current;\n if (sizeReady && root && !centered && nodes.length > 0) {\n let left = Infinity;\n let right = -Infinity;\n let top = Infinity;\n let bottom = -Infinity;\n\n for (const node of nodes) {\n const view = node.view!;\n const r = view.x + view.width;\n const b = view.y + view.height;\n if (view.x < left) {\n left = view.x;\n }\n if (r > right) {\n right = r;\n }\n if (view.y < top) {\n top = view.y;\n }\n if (b > bottom) {\n bottom = b;\n }\n }\n\n const x = (root.clientWidth - (right + left)) / 2;\n let y = 30;\n if (reCenterRef.current) {\n const height = bottom - top + CANVAS_PADDING_BOTTOM;\n const diffY = height - root.clientHeight;\n if (diffY > 0) {\n y = -diffY - top;\n } else {\n y = (root.clientHeight - (bottom + top)) / 2;\n }\n }\n\n zoomer.transform(select(root), new ZoomTransform(1, x, y));\n setCentered(true);\n }\n\n reCenterRef.current = false;\n }, [centered, nodes, rootRef, sizeReady, zoomer]);\n\n return { centered, setCentered, reCenterRef };\n}\n","import { JobState } from \"./interfaces.js\";\n\nexport const DEFAULT_SCALE_RANGE_MIN = 0.5;\nexport const DEFAULT_SCALE_RANGE_MAX = 2;\nexport const START_NODE_ID = \"<START>\";\nexport const END_NODE_ID = \"<END>\";\nexport const CANVAS_PADDING_BOTTOM = 96;\n\nexport const DONE_STATES = [\"completed\", \"failed\", \"canceled\"] as JobState[];\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]!./NodeInstruction.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]!./NodeInstruction.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file: experimental\nimport React from \"react\";\nimport classNames from \"classnames\";\nimport styles from \"./NodeInstruction.module.css\";\n\nexport interface NodeInstructionProps {\n content?: string;\n loading?: boolean;\n}\n\nexport function NodeInstruction({\n content,\n loading,\n}: NodeInstructionProps): JSX.Element {\n return (\n <div\n className={classNames(styles[\"node-instruction\"], {\n [styles.loading]: loading,\n })}\n >\n <div className={styles.text} title={content}>\n {content}\n </div>\n </div>\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\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./images/background@2x.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\\\\.cruise-canvas{display:block;position:relative;width:100%;height:100%;overflow:hidden;background-color:rgb(205,206,207);background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:cover;background-repeat:no-repeat;background-position:center;color:#262626;--cruise-canvas-node-border:1px solid gray;--cruise-canvas-node-width-medium:380px;--cruise-canvas-node-width-large:764px;--cruise-canvas-primary-color:#2540ff}.root--z6jdb_BU{width:100%;height:100%;position:relative}.widgets--r6lUPOu2{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;-webkit-user-select:none;user-select:none}.widgets--r6lUPOu2 > *{pointer-events:auto;-webkit-user-select:text;user-select:text}.canvas--u6C26uH_,\n.edges--uNPQGWZg{width:100%;height:100%;position:absolute;transform-origin:0% 0%;-webkit-user-select:none;user-select:none}.node--IBGywwp4{position:absolute;-webkit-user-select:text;user-select:text;cursor:auto}.node--IBGywwp4:not(.ready--pmh440go),\n.canvas--u6C26uH_:not(.ready--pmh440go) > .edges--uNPQGWZg{visibility:hidden}svg.edges--uNPQGWZg{pointer-events:none;overflow:visible}.edge--muRUWYG1{fill:none;stroke-width:2px;stroke:rgba(255,255,255,0.6);stroke-dasharray:5,5}.size-medium--s_5BfbCV,\n.size-large--GFdstz_s{border:var(--cruise-canvas-node-border);border-radius:6px;padding:6px}.size-medium--s_5BfbCV{width:var(--cruise-canvas-node-width-medium)}.size-large--GFdstz_s{width:var(--cruise-canvas-node-width-large)}.node-default--rfA_zOid{border:var(--cruise-canvas-node-border)}.node-default--rfA_zOid > :first-child{margin-top:0}.node-default--rfA_zOid > :last-child{margin-bottom:0}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"root\": `root--z6jdb_BU`,\n\t\"widgets\": `widgets--r6lUPOu2`,\n\t\"canvas\": `canvas--u6C26uH_`,\n\t\"edges\": `edges--uNPQGWZg`,\n\t\"node\": `node--IBGywwp4`,\n\t\"ready\": `ready--pmh440go`,\n\t\"edge\": `edge--muRUWYG1`,\n\t\"size-medium\": `size-medium--s_5BfbCV`,\n\t\"size-large\": `size-large--GFdstz_s`,\n\t\"node-default\": `node-default--rfA_zOid`\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(\"../images/end@2x.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"../images/completed@2x.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___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.node-end--yzRaOZnC{width:330px;background-color:#fff;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:330px 271px;background-repeat:no-repeat;background-position:center;border:1px solid #e0e5f0;border-radius:12px;display:flex;flex-direction:column;align-items:center;padding:41px 24px 28px}.icon--IVcHjGFO{width:64px;height:64px;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_1___});background-size:59px 49px;background-repeat:no-repeat;background-position:center;margin-bottom:16px}.title--ESn4jaJ9{margin-bottom:8px;font-weight:500;font-size:16px;line-height:24px}.description--aYl8sq6S{margin-bottom:36px;font-size:13px;color:#8c8c8c;line-height:24px}.button--mkIwsPzt{width:120px;height:30px;background:rgba(0,0,0,0.04);border:none;border-radius:15px;text-align:center;cursor:pointer}.button--mkIwsPzt:hover{background:rgba(0,0,0,0.08)}.button--mkIwsPzt:active{background:rgba(0,0,0,0.15)}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"node-end\": `node-end--yzRaOZnC`,\n\t\"icon\": `icon--IVcHjGFO`,\n\t\"title\": `title--ESn4jaJ9`,\n\t\"description\": `description--aYl8sq6S`,\n\t\"button\": `button--mkIwsPzt`\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, `.node-job--soTYrcA7{width:330px;background:linear-gradient(180deg,#f5f8ff 0%,#edf0f9 100%);box-shadow:0px 4px 10px 0px rgba(177,149,207,0.4),0px 2px 4px 0px rgba(0,0,0,0.06);border-radius:12px;border:1px solid #ffffff;padding:8px}.error--IwtdD0T6{outline-offset:4px;outline:2px solid var(--color-error)}.heading--GZqrhPqL{display:flex;align-items:center;border-bottom:1px solid #e2e2ec;padding:0 5px 5px;font-size:12px;color:#8c8c8c}.icon--Rb_vveHN{margin-right:6px}.time--eHXSEjt6{margin-left:auto}.body--V34MsV9R{padding:16px 4px 8px;max-height:392px;overflow-y:auto}.message--iVQBlD6k{overflow-wrap:break-word}.message--iVQBlD6k + .message--iVQBlD6k{margin-top:1em}.message--iVQBlD6k p{margin:1em 0}.message--iVQBlD6k > :first-child{margin-top:0}.message--iVQBlD6k > :last-child{margin-bottom:0}.ask-user--lf925zGf .heading--GZqrhPqL{border-bottom:none}.ask-user--lf925zGf .body--V34MsV9R{padding-top:8px}.role-assistant--Y8vd9Oms,\n.role-user--nAW4Hzsu{background:rgba(255,255,255,0.8);border-radius:9px;border:1px solid #ccd1de;padding:6px 16px}.role-user--nAW4Hzsu{white-space:pre-wrap}.human-input--wFc6ovnT{margin-top:1em;display:block;width:100%;padding:0.5em 1em;color:var(--antd-input-color);background:rgba(255,255,255,0.8);box-shadow:0px 1px 0px 0px #ffffff,inset 0px 2px 4px 0px #b3bcf9;box-sizing:border-box;border:1px solid var(--antd-input-border-color);border-radius:9px;font-size:14px;line-height:22px;height:32px}.human-input--wFc6ovnT:not(:disabled):hover{border:1px solid var(--antd-input-hover-border-color)}.human-input--wFc6ovnT:not(:disabled):focus{border:1px solid var(--antd-input-focus-border-color);outline:0;box-shadow:0 0 0 2px rgb(0 113 235/20%)}.human-input--wFc6ovnT::placeholder{color:var(--antd-input-placeholder-color)}.message--iVQBlD6k code[class*=\"language-\"],.message--iVQBlD6k pre[class*=\"language-\"]{background:hsl(230,1%,98%);color:hsl(230,8%,24%);font-family:\"Fira Code\",\"Fira Mono\",Menlo,Consolas,\"DejaVu Sans Mono\",monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:2;tab-size:2;-webkit-hyphens:none;hyphens:none;font-size:13px}.message--iVQBlD6k code[class*=\"language-\"]::selection,.message--iVQBlD6k code[class*=\"language-\"] *::selection,.message--iVQBlD6k pre[class*=\"language-\"] *::selection{background:hsl(230,1%,90%);color:inherit}.message--iVQBlD6k pre[class*=\"language-\"]{padding:1em;margin:0.5em 0;overflow:auto;border-radius:9px}.message--iVQBlD6k :not(pre) > code[class*=\"language-\"]{padding:0.2em 0.3em;border-radius:9px;white-space:normal}.message--iVQBlD6k .token.comment,.message--iVQBlD6k .token.prolog,.message--iVQBlD6k .token.cdata{color:hsl(230,4%,64%)}.message--iVQBlD6k .token.doctype,.message--iVQBlD6k .token.punctuation,.message--iVQBlD6k .token.entity{color:hsl(230,8%,24%)}.message--iVQBlD6k .token.attr-name,.message--iVQBlD6k .token.class-name,.message--iVQBlD6k .token.boolean,.message--iVQBlD6k .token.constant,.message--iVQBlD6k .token.number,.message--iVQBlD6k .token.atrule{color:hsl(35,99%,36%)}.message--iVQBlD6k .token.keyword{color:hsl(301,63%,40%)}.message--iVQBlD6k .token.property,.message--iVQBlD6k .token.tag,.message--iVQBlD6k .token.symbol,.message--iVQBlD6k .token.deleted,.message--iVQBlD6k .token.important{color:hsl(5,74%,59%)}.message--iVQBlD6k .token.selector,.message--iVQBlD6k .token.string,.message--iVQBlD6k .token.char,.message--iVQBlD6k .token.builtin,.message--iVQBlD6k .token.inserted,.message--iVQBlD6k .token.regex,.message--iVQBlD6k .token.attr-value,.message--iVQBlD6k .token.attr-value > .token.punctuation{color:hsl(119,34%,47%)}.message--iVQBlD6k .token.variable,.message--iVQBlD6k .token.operator,.message--iVQBlD6k .token.function{color:hsl(221,87%,60%)}.message--iVQBlD6k .token.url{color:hsl(198,99%,37%)}.message--iVQBlD6k .token.attr-value > .token.punctuation.attr-equals,.message--iVQBlD6k .token.special-attr > .token.attr-value > .token.value.css{color:hsl(230,8%,24%)}.message--iVQBlD6k .language-css .token.selector{color:hsl(5,74%,59%)}.message--iVQBlD6k .language-css .token.property{color:hsl(230,8%,24%)}.message--iVQBlD6k .language-css .token.function,.message--iVQBlD6k .language-css .token.url > .token.function{color:hsl(198,99%,37%)}.message--iVQBlD6k .language-css .token.url > .token.string.url{color:hsl(119,34%,47%)}.message--iVQBlD6k .language-css .token.important,.message--iVQBlD6k .language-css .token.atrule .token.rule{color:hsl(301,63%,40%)}.message--iVQBlD6k .language-javascript .token.operator{color:hsl(301,63%,40%)}.message--iVQBlD6k .language-javascript .token.template-string > .token.interpolation > .token.interpolation-punctuation.punctuation{color:hsl(344,84%,43%)}.message--iVQBlD6k .language-json .token.operator{color:hsl(230,8%,24%)}.message--iVQBlD6k .language-json .token.null.keyword{color:hsl(35,99%,36%)}.message--iVQBlD6k .language-markdown .token.url,.message--iVQBlD6k .language-markdown .token.url > .token.operator,.message--iVQBlD6k .language-markdown .token.url-reference.url > .token.string{color:hsl(230,8%,24%)}.message--iVQBlD6k .language-markdown .token.url > .token.content{color:hsl(221,87%,60%)}.message--iVQBlD6k .language-markdown .token.url > .token.url,.message--iVQBlD6k .language-markdown .token.url-reference.url{color:hsl(198,99%,37%)}.message--iVQBlD6k .language-markdown .token.blockquote.punctuation,.message--iVQBlD6k .language-markdown .token.hr.punctuation{color:hsl(230,4%,64%);font-style:italic}.message--iVQBlD6k .language-markdown .token.code-snippet{color:hsl(119,34%,47%)}.message--iVQBlD6k .language-markdown .token.bold .token.content{color:hsl(35,99%,36%)}.message--iVQBlD6k .language-markdown .token.italic .token.content{color:hsl(301,63%,40%)}.message--iVQBlD6k .language-markdown .token.strike .token.content,.message--iVQBlD6k .language-markdown .token.strike .token.punctuation,.message--iVQBlD6k .language-markdown .token.list.punctuation,.message--iVQBlD6k .language-markdown .token.title.important > .token.punctuation{color:hsl(5,74%,59%)}.message--iVQBlD6k .token.bold{font-weight:bold}.message--iVQBlD6k .token.comment,.message--iVQBlD6k .token.italic{font-style:italic}.message--iVQBlD6k .token.entity{cursor:help}.message--iVQBlD6k .token.namespace{opacity:0.8}.node-job--soTYrcA7 *::-webkit-scrollbar{width:5px;height:5px;background:transparent}.node-job--soTYrcA7 *::-webkit-scrollbar-thumb{background-color:#d8d8d8;border-radius:3px}.node-job--soTYrcA7 *::-webkit-scrollbar-track{background:transparent}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"node-job\": `node-job--soTYrcA7`,\n\t\"error\": `error--IwtdD0T6`,\n\t\"heading\": `heading--GZqrhPqL`,\n\t\"icon\": `icon--Rb_vveHN`,\n\t\"time\": `time--eHXSEjt6`,\n\t\"body\": `body--V34MsV9R`,\n\t\"message\": `message--iVQBlD6k`,\n\t\"ask-user\": `ask-user--lf925zGf`,\n\t\"role-assistant\": `role-assistant--Y8vd9Oms`,\n\t\"role-user\": `role-user--nAW4Hzsu`,\n\t\"human-input\": `human-input--wFc6ovnT`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import dagre from \"@dagrejs/dagre\";\nimport { useMemo, useRef } from \"react\";\nimport type {\n NodePosition,\n NodeView,\n GraphEdge,\n GraphNode,\n SizeTuple,\n TaskState,\n} from \"./interfaces\";\nimport { END_NODE_ID, START_NODE_ID } from \"./constants\";\n\nexport interface UseLayoutOptions {\n rawNodes: GraphNode[] | undefined;\n rawEdges: GraphEdge[] | undefined;\n sizeMap: Map<string, SizeTuple> | null;\n state?: TaskState;\n}\n\nexport function useLayout({\n rawNodes: _rawNodes,\n rawEdges: _rawEdges,\n sizeMap,\n state,\n}: UseLayoutOptions) {\n const memoizedPositionsRef = useRef<Map<string, NodePosition> | null>(null);\n const completed = state === \"completed\";\n\n const { initialNodes, initialEdges } = useMemo(() => {\n const initialNodes: GraphNode[] = [\n {\n type: \"start\",\n id: START_NODE_ID,\n },\n ];\n const initialEdges: GraphEdge[] = [];\n const finishedNodeIds: string[] = [];\n const rawNodes = _rawNodes ?? [];\n const rawEdges = _rawEdges ?? [];\n\n const hasSource = new Set<string>(rawEdges.map((edge) => edge.target));\n const hasTarget = completed\n ? new Set<string>(rawEdges.map((edge) => edge.source))\n : null;\n\n for (const node of rawNodes) {\n if (!hasSource.has(node.id)) {\n initialEdges.push({\n source: START_NODE_ID,\n target: node.id,\n });\n }\n\n if (completed && !hasTarget!.has(node.id)) {\n finishedNodeIds.push(node.id);\n }\n }\n\n initialNodes.push(...rawNodes);\n initialEdges.push(...rawEdges);\n\n if (finishedNodeIds.length > 0) {\n initialNodes.push({\n id: END_NODE_ID,\n type: \"end\",\n });\n initialEdges.push(\n ...finishedNodeIds.map((id) => ({\n source: id,\n target: END_NODE_ID,\n }))\n );\n }\n\n const memoizedPositions = memoizedPositionsRef.current;\n if (memoizedPositions) {\n for (const node of initialNodes) {\n const view = memoizedPositions.get(node.id);\n if (view) {\n node.view = view as NodeView;\n }\n }\n }\n\n return { initialNodes, initialEdges };\n }, [completed, _rawEdges, _rawNodes]);\n\n const startNodePositionRef = useRef<NodePosition | null>(null);\n\n return useMemo(() => {\n for (const node of initialNodes) {\n if (!sizeMap?.has(node.id)) {\n return { sizeReady: false, nodes: initialNodes, edges: [] };\n }\n }\n\n const graph = new dagre.graphlib.Graph();\n graph.setGraph({\n rankdir: \"TB\",\n nodesep: 50,\n edgesep: 10,\n ranksep: 50,\n });\n // Default to assigning a new object as a label for each new edge.\n graph.setDefaultEdgeLabel(function () {\n return {};\n });\n for (const edge of initialEdges) {\n graph.setEdge(edge.source, edge.target);\n }\n for (const node of initialNodes) {\n const [width, height] = sizeMap!.get(node.id)!;\n graph.setNode(node.id, {\n id: node.id,\n width,\n height,\n });\n }\n dagre.layout(graph);\n\n // Make the start node position unchanged\n let offsets: NodePosition | null = null;\n\n const nodes = initialNodes.map<GraphNode>((node) => {\n const nodeView = graph.node(node.id);\n const x = nodeView.x - nodeView.width / 2;\n const y = nodeView.y - nodeView.height / 2;\n\n if (node.type === \"start\") {\n if (startNodePositionRef.current) {\n offsets = {\n x: startNodePositionRef.current.x - x,\n y: startNodePositionRef.current.y - y,\n };\n } else {\n startNodePositionRef.current = { x, y };\n }\n }\n\n return {\n ...node,\n view: {\n x,\n y,\n width: nodeView.width,\n height: nodeView.height,\n },\n };\n });\n\n if (offsets) {\n for (const node of nodes) {\n Object.assign(node.view!, getPositionWithOffsets(node.view!, offsets));\n }\n }\n\n const memoizedPositions = (memoizedPositionsRef.current ??= new Map());\n for (const node of nodes) {\n const { x, y } = node.view!;\n memoizedPositions.set(node.id, { x, y });\n }\n\n const edges = initialEdges.map((edge) => {\n const source = graph.node(edge.source);\n const sourcePosition = getPositionWithOffsets(source, offsets);\n const target = graph.node(edge.target);\n const targetPosition = getPositionWithOffsets(target, offsets);\n // const turnY =\n // (sourcePosition.y +\n // source.height / 2 +\n // targetPosition.y -\n // target.height / 2) /\n // 2;\n const turnY = targetPosition.y - target.height / 2 - 25;\n const points: NodePosition[] = [\n { x: sourcePosition.x, y: sourcePosition.y + source.height / 2 },\n { x: sourcePosition.x, y: turnY },\n { x: targetPosition.x, y: turnY },\n { x: targetPosition.x, y: targetPosition.y - target.height / 2 },\n ];\n\n return {\n ...edge,\n points,\n };\n });\n\n return {\n sizeReady: true,\n nodes,\n edges,\n };\n }, [initialEdges, initialNodes, sizeMap]);\n}\n\nfunction getPositionWithOffsets<T extends NodePosition>(\n position: T,\n offsets: NodePosition | null\n): NodePosition {\n if (!offsets) {\n return {\n x: position.x,\n y: position.y,\n };\n }\n return {\n x: position.x + offsets.x,\n y: position.y + offsets.y,\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]!./NodeStart.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]!./NodeStart.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file: experimental\nimport React from \"react\";\nimport styles from \"./NodeStart.module.css\";\n\nexport function NodeStart(): JSX.Element {\n return (\n <div className={styles[\"node-start\"]}>\n <div className={styles.icon} />\n </div>\n );\n}\n","// istanbul ignore file: hard to test with d3-zoom\nimport React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { select } from \"d3-selection\";\nimport { zoom, type ZoomBehavior } from \"d3-zoom\";\nimport type {\n RangeTuple,\n TransformLiteral /* , ActiveTarget */,\n} from \"./interfaces\";\nimport { DEFAULT_SCALE_RANGE_MIN, DEFAULT_SCALE_RANGE_MAX } from \"./constants\";\n// import type { ActiveTarget } from \"./interfaces\";\nimport jobStyles from \"./NodeJob/NodeJob.module.css\";\n\nexport interface UseZoomOptions {\n rootRef: React.RefObject<HTMLDivElement>;\n zoomable?: boolean;\n scrollable?: boolean;\n pannable?: boolean;\n pannableWithCtrl?: boolean;\n scaleRange?: RangeTuple;\n onSwitchActiveTarget?(target: unknown | null): void;\n}\n\nexport interface UseZoomResult {\n grabbing: boolean;\n transform: TransformLiteral;\n transformRef: React.MutableRefObject<TransformLiteral>;\n scaleRange: RangeTuple;\n zoomer: ZoomBehavior<HTMLDivElement, unknown>;\n}\n\n// istanbul ignore next\nconst isMac = /mac/i.test(\n (\n navigator as Navigator & {\n userAgentData?: {\n platform: string;\n };\n }\n ).userAgentData?.platform ??\n navigator.platform ??\n navigator.userAgent\n);\n\n// istanbul ignore next\nfunction wheelData(event: WheelEvent) {\n // On Windows with normal mouse, deltaY is too big when scroll with ctrlKey pressed,\n // which cause the zooming too fast.\n // While on mac OS, we need to keep default behavior of d3-zoom.\n return (\n -event.deltaY *\n (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) *\n (event.ctrlKey && isMac ? 10 : 1)\n );\n}\n\nexport function useZoom({\n rootRef,\n zoomable,\n scrollable,\n pannable,\n pannableWithCtrl,\n scaleRange: _scaleRange,\n onSwitchActiveTarget,\n}: UseZoomOptions): UseZoomResult {\n const [grabbing, setGrabbing] = useState(false);\n const [transform, setTransform] = useState<TransformLiteral>({\n k: 1,\n x: 0,\n y: 0,\n });\n const transformRef = useRef(transform);\n\n const scaleRange = useMemo(\n () =>\n _scaleRange ??\n ([DEFAULT_SCALE_RANGE_MIN, DEFAULT_SCALE_RANGE_MAX] as RangeTuple),\n [_scaleRange]\n );\n\n const zoomer = useMemo(\n () => zoom<HTMLDivElement, unknown>().wheelDelta(wheelData),\n []\n );\n\n // istanbul ignore next: d3-zoom currently hard to test\n useEffect(() => {\n let moved = false;\n zoomer\n .scaleExtent(zoomable ? scaleRange : [1, 1])\n .on(\"start\", () => {\n moved = false;\n setGrabbing(true);\n })\n .on(\"zoom\", (e: { transform: TransformLiteral }) => {\n moved = true;\n setTransform(e.transform);\n transformRef.current = e.transform;\n })\n .on(\"end\", () => {\n setGrabbing(false);\n if (!moved) {\n onSwitchActiveTarget?.(null);\n }\n })\n .filter(\n (event) =>\n (event.type === \"wheel\" ||\n (pannableWithCtrl ? pannable || event.ctrlKey : !event.ctrlKey)) &&\n !event.button\n );\n }, [\n onSwitchActiveTarget,\n scaleRange,\n zoomable,\n zoomer,\n pannableWithCtrl,\n pannable,\n ]);\n\n useEffect(() => {\n if (pannableWithCtrl) {\n const onContextMenu = (e: MouseEvent) => {\n if (e.ctrlKey) {\n e.preventDefault();\n }\n };\n document.addEventListener(\"contextmenu\", onContextMenu, true);\n return () => {\n document.removeEventListener(\"contextmenu\", onContextMenu, true);\n };\n }\n }, [pannableWithCtrl]);\n\n // istanbul ignore next: d3-zoom currently hard to test\n useEffect(() => {\n const root = rootRef.current;\n if (!root) {\n return;\n }\n\n const rootSelection = select(root);\n\n const unsetZoom = () => {\n rootSelection\n .on(\".zoom\", null)\n .on(\".zoom.custom\", null)\n .on(\"wheel\", null);\n };\n\n if (!(zoomable || scrollable || pannable)) {\n unsetZoom();\n return;\n }\n\n if (zoomable || scrollable) {\n // Do not override default d3 zoom handler.\n // Only handles *panning*\n rootSelection.on(\n \"wheel.zoom.custom\",\n (e: WheelEvent & { wheelDeltaX: number; wheelDeltaY: number }) => {\n // Mac OS trackpad pinch event is emitted as a wheel.zoom and d3.event.ctrlKey set to true\n if (!e.ctrlKey) {\n // Stop immediate propagation for default d3 zoom handler\n e.stopImmediatePropagation();\n if (scrollable) {\n const pre = (e.target as HTMLElement)!.closest(\n 'pre[class*=\"language-\"]'\n );\n if (pre) {\n if (checkScrollableX(pre, e.deltaX)) {\n return;\n }\n }\n\n const node = (e.target as HTMLElement)!.closest(\n `.${jobStyles.body}`\n );\n if (node) {\n if (checkScrollableY(node, e.deltaY)) {\n return;\n }\n }\n\n if (e.cancelable) {\n e.preventDefault();\n zoomer.translateBy(\n rootSelection,\n e.wheelDeltaX / 5,\n e.wheelDeltaY / 5\n );\n }\n }\n }\n // zoomer.scaleBy(rootSelection, Math.pow(2, defaultWheelDelta(e)))\n }\n );\n }\n\n rootSelection\n .call(zoomer)\n .on(\"wheel\", (e: WheelEvent) => {\n e.preventDefault();\n })\n .on(\"dblclick.zoom\", null);\n\n if (!pannable && !pannableWithCtrl) {\n rootSelection.on(\"mousedown.zoom\", null);\n }\n\n if (!pannable) {\n rootSelection\n .on(\"touchstart.zoom\", null)\n .on(\"touchmove.zoom\", null)\n .on(\"touchend.zoom\", null);\n }\n\n return unsetZoom;\n }, [pannableWithCtrl, pannable, rootRef, scrollable, zoomable, zoomer]);\n\n return { grabbing, transform, transformRef, zoomer, scaleRange };\n}\n\n// 检查元素是否还能滚动\nfunction checkScrollableY(element: Element, delta: number) {\n const isScrollingDown = delta > 0;\n // 还能向下滚动 或 还能向上滚动\n if (isScrollingDown) {\n const maxScroll = element.scrollHeight - element.clientHeight;\n return element.scrollTop <= maxScroll - 1;\n }\n return element.scrollTop >= 1;\n}\n\n// 检查元素是否还能滚动\nfunction checkScrollableX(element: Element, delta: number) {\n const isScrollingRight = delta > 0; // Updated variable name for clarity\n // 还能向右滚动 或 还能向左滚动\n if (isScrollingRight) {\n const maxScroll = element.scrollWidth - element.clientWidth; // Changed to scrollWidth and clientWidth\n return element.scrollLeft <= maxScroll - 1; // Changed to scrollLeft\n }\n return element.scrollLeft >= 1;\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\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../images/start@2x.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, `.node-start--Mrh1iP5r{width:65px;height:65px;position:relative;overflow:visible}.icon--NxC4u6Wl{width:75px;height:75px;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:75px 75px;background-repeat:no-repeat;background-position:center;position:absolute;left:-5px;top:-1px}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"node-start\": `node-start--Mrh1iP5r`,\n\t\"icon\": `icon--NxC4u6Wl`\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]!./NodeEnd.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]!./NodeEnd.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file: experimental\nimport React from \"react\";\nimport styles from \"./NodeEnd.module.css\";\nimport { K, t } from \"../i18n\";\n\nexport interface NodeEndProps {\n onShare?: () => void;\n}\n\nexport function NodeEnd({ onShare }: NodeEndProps): JSX.Element {\n return (\n <div className={styles[\"node-end\"]}>\n <div className={styles.icon} />\n <div className={styles.title}>{t(K.TASK_COMPLETED)}</div>\n <div className={styles.description}>{t(K.PLAN_COMPLETED)}</div>\n <button className={styles.button} onClick={onShare}>\n {t(K.SHARE)}\n </button>\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]!./NodeJob.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]!./NodeJob.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file\nimport { useMemo } from \"react\";\nimport type { Job, GraphEdge, GraphNode, TaskBaseDetail } from \"./interfaces\";\n\nexport function useTaskGraph(\n task: TaskBaseDetail | null | undefined,\n jobs: Job[]\n) {\n return useMemo(() => {\n if (!task) {\n return null;\n }\n\n const nodes: GraphNode[] = [];\n const edges: GraphEdge[] = [];\n\n const requirementNodeId = \"requirement\";\n nodes.push({\n type: \"requirement\",\n id: requirementNodeId,\n content: task.requirement,\n state: jobs.length === 0 ? \"working\" : \"completed\",\n });\n\n const jobMap = new Map<string, Job>();\n const childrenMap = new Map<string, string[]>();\n const downstreamMap = new Map<string, string[]>();\n const upstreamMap = new Map<string, string[]>();\n const rootDownstream: string[] = [];\n const rootChildren: string[] = [];\n\n for (const job of jobs) {\n if (job.parent) {\n let children = childrenMap.get(job.parent);\n if (!children) {\n children = [];\n childrenMap.set(job.parent, children);\n }\n children.push(job.id);\n }\n }\n\n // Setup jobMap and downstreamMap\n for (const job of jobs) {\n jobMap.set(job.id, job);\n\n for (const up of job.upstream ?? []) {\n let downstream = downstreamMap.get(up);\n if (!downstream) {\n downstream = [];\n downstreamMap.set(up, downstream);\n }\n downstream.push(job.id);\n }\n\n if (!job.parent) {\n rootChildren.push(job.id);\n\n if (!job.upstream?.length) {\n rootDownstream.push(job.id);\n }\n }\n }\n\n const alignDownstreamMap = (children: string[]) => {\n for (const rootJobId of children) {\n const subChildren = childrenMap.get(rootJobId);\n const downstream = downstreamMap.get(rootJobId);\n\n if (subChildren) {\n const firstLevelChildren = subChildren.filter((child) => {\n const childJob = jobMap.get(child)!;\n return !childJob.upstream?.length;\n });\n\n const lastLevelChildren = downstream\n ? subChildren.filter((child) => {\n return !downstreamMap.has(child);\n })\n : [];\n\n downstreamMap.set(rootJobId, firstLevelChildren);\n\n for (const child of lastLevelChildren) {\n downstreamMap.set(child, [...downstream!]);\n }\n\n alignDownstreamMap(subChildren);\n }\n }\n };\n\n alignDownstreamMap(rootChildren);\n\n // Setup upstreamMap\n for (const [upstream, downstream] of downstreamMap) {\n for (const target of downstream) {\n let upstreams = upstreamMap.get(target);\n if (!upstreams) {\n upstreams = [];\n upstreamMap.set(target, upstreams);\n }\n upstreams.push(upstream);\n }\n }\n\n // Get BFS order of jobs\n const list: string[] = [];\n const visitedJobs = new Set<string>();\n const queue: string[] = [...rootDownstream];\n while (queue.length > 0) {\n const id = queue.shift()!;\n if (visitedJobs.has(id)) {\n continue;\n }\n visitedJobs.add(id);\n list.push(id);\n const downstream = downstreamMap.get(id);\n if (downstream) {\n queue.push(...downstream);\n }\n }\n\n const jobNodesMap = new Map<string, string[]>([\n [requirementNodeId, [requirementNodeId]],\n ]);\n\n for (const jobId of list) {\n const job = jobMap.get(jobId)!;\n const { messages } = job;\n const hasMessages =\n (Array.isArray(messages) && messages.length > 0) || job.toolCall;\n\n const nodeIds: string[] = [];\n\n if (job.instruction) {\n const instructionNodeId = `instruction:${jobId}`;\n nodes.push({\n type: \"instruction\",\n id: instructionNodeId,\n job,\n state: job.state,\n });\n\n nodeIds.push(instructionNodeId);\n }\n\n if (hasMessages || !job.instruction) {\n const jobNodeId = `job:${job.id}`;\n nodes.push({\n type: \"job\",\n id: jobNodeId,\n job,\n state: job.state,\n });\n nodeIds.push(jobNodeId);\n }\n\n jobNodesMap.set(jobId, nodeIds);\n }\n\n for (const jobId of list) {\n const nodeIds = jobNodesMap.get(jobId)!;\n\n const upstreams = upstreamMap.get(jobId);\n for (const upstream of upstreams ?? [requirementNodeId]) {\n const parentNodeIds = jobNodesMap.get(upstream)!;\n edges.push({\n source: parentNodeIds[parentNodeIds.length - 1],\n target: nodeIds[0],\n });\n }\n\n for (let i = 1; i < nodeIds.length; i++) {\n edges.push({\n source: nodeIds[i - 1],\n target: nodeIds[i],\n });\n }\n }\n\n return {\n nodes,\n edges,\n };\n }, [task, jobs]);\n}\n"],"names":["K","NS","locales","en","YES","NO","PLAN_COMPLETED","TASK_COMPLETED","SHARE","zh","t","i18n","getFixedT","SIZING_STYLE","hiddenTextarea","modKey","test","navigator","platform","TextareaAutoResize","React","LegacyTextareaAutoResize","_ref","ref","autoResize","_autoResize","minRows","maxRows","borderSize","paddingSize","containerRef","value","propValue","style","submitWhen","onChange","onSubmit","onKeyDown","onCompositionStart","onCompositionEnd","props","setValue","useState","textareaRef","useRef","autoStyle","setAutoStyle","useImperativeHandle","focus","textarea","current","_textarea$value","valueLength","length","setSelectionRange","doAutoResize","useCallback","uiTextNode","options","document","createElement","setAttribute","body","appendChild","uiTextNodeStyle","window","getComputedStyle","sizingStyle","map","name","getPropertyValue","join","minHeight","maxHeight","overflowY","placeholder","height","scrollHeight","singleRowHeight","parseFloat","Math","max","min","resize","calculateAutoSizeStyle","flushSync","useEffect","compositionRef","handleCompositionStart","e","handleCompositionEnd","handleKeyDown","key","shiftKey","preventDefault","stopPropagation","container","previousInlineSize","observer","ResizeObserver","entries","entry","target","currentInlineSize","contentBoxSize","inlineSize","contentRect","width","undefined","isInitial","requestAnimationFrame","observe","disconnect","_extends","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","mergeMessages","messages","merged","previousRole","message","role","lastMessage","parts","push","mergeMessageParts","previousType","part","type","text","rootReducer","reducers","task","state","action","taskPatch","pick","payload","isMatchWith","isEqual","jobs","jobsPatch","Array","isArray","jobPatch","_jobs$findIndex","_jobs","previousJobIndex","findIndex","job","id","messagesPatch","toolCall","arguments","JSON","parse","console","error","argumentsParseFailed","argumentsParseError","previousJob","restMessagesPatch","_previousJob$messages","slice","Object","fromEntries","useTaskDetail","taskId","dispatch","useReducer","humanInputRef","ctrl","ignore","requesting","makeRequest","async","AbortController","request","createSSEStream","getBasePath","signal","stream","handleHttpError","jobId","input","response","fetch","method","headers","stringify","ok","responseJson","status","statusText","json","HttpResponseError","_ctrl","abort","plan","setPlan","prev","jobMap","Map","childrenMap","_childrenMap$get","set","parent","get","isInputRequired","_childrenMap$get2","some","childId","childJob","step","_task$plan","instruction","PlanProgress","expanded","setExpanded","doneCount","useMemo","reduce","acc","className","icon","getClassNameAndIconProps","toggle","classNames","styles","progress","onClick","WrappedIcon","title","stat","expand","lib","theme","details","index","PlanStep","_ref2","completed","prefix","working","spinning","failed","canceled","___CSS_LOADER_EXPORT___","module","WrappedEasyOpsAvatar","wrapBrick","NodeRequirement","content","startTime","loading","username","auth","getAuth","heading","user","nameOrInstanceId","showName","size","time","moment","format","viewBox","d","inner","ZoomBar","scale","onScaleChange","onReCenter","handleZoomIn","handleZoomOut","divider","rehypePrism","visitor","node","_index","tagName","lang","properties","classListItem","toLowerCase","getLanguage","result","concat","refractor","highlight","toString","children","tree","visit","production","Fragment","jsx","jsxs","MarkdownComponent","reactContent","setReactContent","unified","use","remarkParse","remarkToRehype","rehypeReact","process","then","vFile","catch","AsyncWrappedCMDB","default","asyncWrapBrick","onChangeV2","NodeJob","_job$toolCall","_arguments","_job$toolCall2","_arguments2","_arguments$command","_arguments3","_job$messages","humanInput","askUser","knownAskUser","includes","command","isError","tool","question","HumanInputComponent","HumanConfirmComponent","HumanChooseComponent","HumanSelectFromCmdb","objectId","attrId","_message$parts","partIndex","RefineMarkdownComponent","isToolOutput","file","data","currentTarget","_ref3","marginTop","WrappedButton","marginLeft","_ref4","display","flexDirection","gap","option","_ref5","objectList","setObjectList","objects","CmdbObjectApi_getObjectRef","ref_object","fieldId","Suspense","detail","i","_ref6","refinedContent","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_REPLACEMENT_0___","useAutoCenter","nodes","sizeReady","zoomer","rootRef","centered","setCentered","reCenterRef","root","left","Infinity","right","top","bottom","view","r","x","b","y","clientWidth","diffY","CANVAS_PADDING_BOTTOM","clientHeight","transform","select","ZoomTransform","DEFAULT_SCALE_RANGE_MIN","DEFAULT_SCALE_RANGE_MAX","START_NODE_ID","END_NODE_ID","DONE_STATES","NodeInstruction","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_REPLACEMENT_1___","useLayout","rawNodes","_rawNodes","rawEdges","_rawEdges","sizeMap","memoizedPositionsRef","initialNodes","initialEdges","finishedNodeIds","hasSource","Set","edge","hasTarget","source","has","memoizedPositions","startNodePositionRef","_memoizedPositionsRef","edges","graph","dagre","Graph","setGraph","rankdir","nodesep","edgesep","ranksep","setDefaultEdgeLabel","setEdge","setNode","offsets","nodeView","assign","getPositionWithOffsets","sourcePosition","targetPosition","turnY","points","position","NodeStart","isMac","_userAgentData$platfo","_userAgentData","userAgentData","userAgent","wheelData","event","deltaY","deltaMode","ctrlKey","useZoom","zoomable","scrollable","pannable","pannableWithCtrl","scaleRange","_scaleRange","onSwitchActiveTarget","grabbing","setGrabbing","setTransform","k","transformRef","zoom","wheelDelta","moved","scaleExtent","on","filter","button","onContextMenu","addEventListener","removeEventListener","rootSelection","unsetZoom","stopImmediatePropagation","pre","closest","element","delta","maxScroll","scrollWidth","scrollLeft","checkScrollableX","deltaX","jobStyles","scrollTop","checkScrollableY","cancelable","translateBy","wheelDeltaX","wheelDeltaY","call","NodeEnd","onShare","description","useTaskGraph","requirementNodeId","requirement","downstreamMap","upstreamMap","rootDownstream","rootChildren","up","_job$upstream","upstream","downstream","_job$upstream2","alignDownstreamMap","rootJobId","subChildren","firstLevelChildren","child","_childJob$upstream","lastLevelChildren","upstreams","list","visitedJobs","queue","shift","add","jobNodesMap","hasMessages","nodeIds","instructionNodeId","jobNodeId","parentNodeIds"],"sourceRoot":""}