From c44c3323341698acf3671063d5431adc96066cfa Mon Sep 17 00:00:00 2001 From: Max Date: Fri, 9 May 2025 10:27:31 +0800 Subject: [PATCH] feat: Update asset metadata and enhance Assistant API functionality - Updated modification times for various asset files in bindata.go to reflect recent changes. - Refactored the Assistant API to improve result handling and streamline message processing. - Removed unused stream handling code in the Assistant, simplifying the execution flow. - Enhanced the Agent class in libsui/agent.ts to better manage message states and improve error handling. --- data/bindata.go | 168 +++++++------- neo/assistant/api.go | 74 +----- neo/assistant/hooks.go | 64 ------ neo/message/message.go | 9 +- sui/libsui/agent.ts | 511 +++++++++++++++++++++-------------------- 5 files changed, 364 insertions(+), 462 deletions(-) diff --git a/data/bindata.go b/data/bindata.go index f40d39f7..db5d8778 100644 --- a/data/bindata.go +++ b/data/bindata.go @@ -261,7 +261,7 @@ func initEnv() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.env", size: 219, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/.env", size: 219, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -281,7 +281,7 @@ func initVscodeSettingsJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/settings.json", size: 4666, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/.vscode/settings.json", size: 4666, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -301,7 +301,7 @@ func initVscodeTypesRuntimeConsoleDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/console.d.ts", size: 221, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/console.d.ts", size: 221, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -321,7 +321,7 @@ func initVscodeTypesRuntimeExceptionDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/exception.d.ts", size: 738, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/exception.d.ts", size: 738, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -341,7 +341,7 @@ func initVscodeTypesRuntimeFsDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/fs.d.ts", size: 8554, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/fs.d.ts", size: 8554, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -361,7 +361,7 @@ func initVscodeTypesRuntimeGlobalDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/global.d.ts", size: 1759, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/global.d.ts", size: 1759, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -381,7 +381,7 @@ func initVscodeTypesRuntimeHttpDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/http.d.ts", size: 6179, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/http.d.ts", size: 6179, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -401,7 +401,7 @@ func initVscodeTypesRuntimeIoDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/io.d.ts", size: 587, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/io.d.ts", size: 587, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -421,7 +421,7 @@ func initVscodeTypesRuntimeLogDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/log.d.ts", size: 1692, mode: os.FileMode(493), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/log.d.ts", size: 1692, mode: os.FileMode(493), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -441,7 +441,7 @@ func initVscodeTypesRuntimeNeoDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/neo.d.ts", size: 3750, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/neo.d.ts", size: 3750, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -461,7 +461,7 @@ func initVscodeTypesRuntimeProcessFsDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/process/fs.d.ts", size: 11133, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/process/fs.d.ts", size: 11133, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -481,7 +481,7 @@ func initVscodeTypesRuntimeProcessHttpDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/process/http.d.ts", size: 5653, mode: os.FileMode(493), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/process/http.d.ts", size: 5653, mode: os.FileMode(493), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -501,7 +501,7 @@ func initVscodeTypesRuntimeProcessModelDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/process/model.d.ts", size: 6656, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/process/model.d.ts", size: 6656, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -521,7 +521,7 @@ func initVscodeTypesRuntimeProcessDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/process.d.ts", size: 23165, mode: os.FileMode(493), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/process.d.ts", size: 23165, mode: os.FileMode(493), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -541,7 +541,7 @@ func initVscodeTypesRuntimeQueryDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/query.d.ts", size: 6124, mode: os.FileMode(493), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/query.d.ts", size: 6124, mode: os.FileMode(493), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -561,7 +561,7 @@ func initVscodeTypesRuntimeStoreDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/store.d.ts", size: 2251, mode: os.FileMode(493), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/store.d.ts", size: 2251, mode: os.FileMode(493), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -581,7 +581,7 @@ func initVscodeTypesRuntimeSuiDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/sui.d.ts", size: 1713, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/sui.d.ts", size: 1713, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -601,7 +601,7 @@ func initVscodeTypesRuntimeTimeDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/time.d.ts", size: 711, mode: os.FileMode(493), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/time.d.ts", size: 711, mode: os.FileMode(493), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -621,7 +621,7 @@ func initVscodeTypesRuntimeDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime.d.ts", size: 424, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime.d.ts", size: 424, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -641,7 +641,7 @@ func initVscodeTypesSuiDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/sui.d.ts", size: 8931, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/.vscode/types/sui.d.ts", size: 8931, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -661,7 +661,7 @@ func initAppYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/app.yao", size: 3115, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/app.yao", size: 3115, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -681,7 +681,7 @@ func initDataReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/README.md", size: 41, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/data/README.md", size: 41, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -701,7 +701,7 @@ func initDataTemplatesDefault__assetsReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/__assets/README.md", size: 33, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__assets/README.md", size: 33, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -721,7 +721,7 @@ func initDataTemplatesDefault__assetsImagesIconsAppPng() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/__assets/images/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__assets/images/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -741,7 +741,7 @@ func initDataTemplatesDefault__assetsImagesLogosLogo_colorSvg() (*asset, error) return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/__assets/images/logos/logo_color.svg", size: 2909, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__assets/images/logos/logo_color.svg", size: 2909, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -761,7 +761,7 @@ func initDataTemplatesDefault__assetsImagesLogosWordmarkSvg() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/__assets/images/logos/wordmark.svg", size: 3615, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__assets/images/logos/wordmark.svg", size: 3615, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -781,7 +781,7 @@ func initDataTemplatesDefault__dataJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/__data.json", size: 30, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__data.json", size: 30, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -801,7 +801,7 @@ func initDataTemplatesDefault__documentHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/__document.html", size: 492, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__document.html", size: 492, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -821,7 +821,7 @@ func initDataTemplatesDefaultIndexIndexCss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/index/index.css", size: 2896, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/data/templates/default/index/index.css", size: 2896, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -841,7 +841,7 @@ func initDataTemplatesDefaultIndexIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/index/index.html", size: 2361, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/data/templates/default/index/index.html", size: 2361, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -861,7 +861,7 @@ func initDataTemplatesDefaultIndexIndexJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/index/index.json", size: 31, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/data/templates/default/index/index.json", size: 31, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -881,7 +881,7 @@ func initDbReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/db/README.md", size: 84, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/db/README.md", size: 84, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -901,7 +901,7 @@ func initFlowsMenuFlowYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/flows/menu.flow.yao", size: 813, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/flows/menu.flow.yao", size: 813, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -921,7 +921,7 @@ func initFormsAccountFormYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/forms/account.form.yao", size: 1194, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/forms/account.form.yao", size: 1194, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -941,7 +941,7 @@ func initIconsAppIcns() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/icons/app.icns", size: 67465, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/icons/app.icns", size: 67465, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -961,7 +961,7 @@ func initIconsAppIco() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/icons/app.ico", size: 54993, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/icons/app.ico", size: 54993, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -981,7 +981,7 @@ func initIconsAppPng() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1001,7 +1001,7 @@ func initLoginsAdminLoginYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/logins/admin.login.yao", size: 302, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/logins/admin.login.yao", size: 302, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1021,7 +1021,7 @@ func initLogsReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/logs/README.md", size: 28, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/logs/README.md", size: 28, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1041,7 +1041,7 @@ func initModelsAdminUserModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/models/admin/user.mod.yao", size: 6416, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/models/admin/user.mod.yao", size: 6416, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1061,7 +1061,7 @@ func initModelsTestsPetModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/models/tests/pet.mod.yao", size: 525, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/models/tests/pet.mod.yao", size: 525, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1081,7 +1081,7 @@ func initNeoNeoYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/neo/neo.yml", size: 724, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/neo/neo.yml", size: 724, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1101,7 +1101,7 @@ func initPublicReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/README.md", size: 108, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/public/README.md", size: 108, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1121,7 +1121,7 @@ func initPublicAssetsReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/assets/README.md", size: 33, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/public/assets/README.md", size: 33, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1141,7 +1141,7 @@ func initPublicAssetsImagesIconsAppPng() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/assets/images/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/public/assets/images/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1161,7 +1161,7 @@ func initPublicAssetsImagesLogosLogo_colorSvg() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/assets/images/logos/logo_color.svg", size: 2909, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/public/assets/images/logos/logo_color.svg", size: 2909, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1181,7 +1181,7 @@ func initPublicAssetsImagesLogosWordmarkSvg() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/assets/images/logos/wordmark.svg", size: 3615, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/public/assets/images/logos/wordmark.svg", size: 3615, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1201,7 +1201,7 @@ func initPublicAssetsLibsuiMinJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/assets/libsui.min.js", size: 12569, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/public/assets/libsui.min.js", size: 12569, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1221,7 +1221,7 @@ func initPublicAssetsLibsuiMinJsMap() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/assets/libsui.min.js.map", size: 38553, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/public/assets/libsui.min.js.map", size: 38553, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1241,7 +1241,7 @@ func initPublicIndexCfg() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/index.cfg", size: 85, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/public/index.cfg", size: 85, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1261,7 +1261,7 @@ func initPublicIndexSui() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/index.sui", size: 5682, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/public/index.sui", size: 5682, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1281,7 +1281,7 @@ func initScriptsAccountTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/scripts/account.ts", size: 2521, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/scripts/account.ts", size: 2521, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1301,7 +1301,7 @@ func initScriptsAiNeoTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/scripts/ai/neo.ts", size: 375, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/scripts/ai/neo.ts", size: 375, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1321,7 +1321,7 @@ func initScriptsTestsTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/scripts/tests.ts", size: 1044, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/scripts/tests.ts", size: 1044, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1341,7 +1341,7 @@ func initScriptsUtilsTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/scripts/utils.ts", size: 1230, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/scripts/utils.ts", size: 1230, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1361,7 +1361,7 @@ func initSuisWebSuiYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/suis/web.sui.yao", size: 675, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/suis/web.sui.yao", size: 675, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1381,7 +1381,7 @@ func initTablesAccountTabYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/tables/account.tab.yao", size: 5597, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/tables/account.tab.yao", size: 5597, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1401,12 +1401,12 @@ func initTsconfigJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/tsconfig.json", size: 178, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "init/tsconfig.json", size: 178, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _libsuiAgentTs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x3b\x5d\x73\x23\x37\x72\xef\xfa\x15\xbd\x2c\x95\x42\x6e\x68\x52\xeb\xbb\xcb\x03\x65\xae\xac\xd2\xfa\xce\xba\xd4\xda\x5b\xd6\x5e\xa5\x52\x1b\x95\x16\x9a\x69\x8a\xb0\x86\xc0\x18\x00\xf5\x11\x8a\xff\x3d\x85\x06\x30\x03\x60\x86\x94\x9c\xb8\x52\xa7\x17\x71\x1a\x8d\x46\xa3\xbf\x1b\x98\x99\xbe\x7d\x7b\x00\x6f\xe1\x3f\x99\x84\xb3\x0b\x38\xbb\x45\x61\xe0\xd3\x5a\x21\xfc\x9d\xdd\xb3\xcb\x42\xf1\xda\xc0\xe5\x87\x7f\xb7\x38\xdf\xb3\xb5\x59\x4a\x05\x1f\xd9\xe3\x77\x2b\xf6\xf8\x3d\xff\xed\x8e\x4d\x0a\xb9\x7a\x4f\x83\x2b\xc6\x85\x61\x5c\xa0\x82\xa5\x31\xb5\x9e\x4d\xa7\x4f\x4c\xb2\xba\xd6\x16\xe7\x00\xde\x4e\x0f\x0e\xfc\x62\x1f\x51\x6b\x76\x8b\xa0\x8d\x5a\x17\xc6\x2e\xb6\x90\x0a\x18\xad\xad\x50\xd7\x52\x68\xd4\x34\x83\x0b\x83\x6a\xc1\x0a\x74\x9c\x85\x89\x9b\x03\x00\x83\x8f\x66\x66\x49\x70\x71\x7b\x62\x9f\x9f\x6a\x3c\x8d\x01\xa5\x14\x16\x70\x23\x65\x85\x4c\x58\x08\xd7\xd7\x02\x65\x0a\x63\x5a\x73\x6d\x98\x30\xd7\xbc\x4c\xa6\xb7\x03\x82\xad\x70\xc7\x10\xbb\x67\x86\xa9\x64\xb0\x56\xb2\xd6\xa7\x33\xf8\x05\x0b\xa9\xca\xef\xdc\xc0\x18\x98\x78\x7a\x4f\x6c\x4a\x59\xe5\x4b\x09\x7c\x48\x99\x2a\xb1\x32\x2c\x05\xd5\x0a\xef\xb9\x5c\xeb\xeb\x1d\x0c\x6f\x1b\xe9\x7e\x90\x02\x01\xef\xad\x30\x4b\x66\x58\x2b\x65\x92\xa8\x15\x93\x13\xa6\xc5\xfb\x60\x11\xe6\x89\x70\xbf\x5c\x9d\x34\xa4\x7e\x20\x2a\x4b\x26\xca\x0a\x15\x2c\xd6\xa2\x30\x5c\x0a\x12\x75\xae\x1f\x3f\xfb\x47\x8f\x6b\x35\x34\x5c\x39\xd8\x2c\xa1\x3f\x9a\xc1\xbd\xe4\x25\x71\xdc\x4e\xb7\xcc\xf4\xcd\xd5\xb3\x94\xd9\x78\x76\xc2\x24\xf1\x04\x66\xc9\x0c\x14\x4c\xc0\x0d\x42\xc5\xb5\x41\x81\x25\x18\x99\xed\xdc\xcd\x98\xc3\xc0\x2f\x32\x80\x67\x18\x58\x73\x19\xec\xd8\xba\x06\x45\xda\xa4\x55\xb2\x8d\x13\xe2\x8f\x01\xcf\xf2\xee\xa9\x9e\xce\x32\xa1\x44\x46\x19\x6d\x97\xb6\x52\x54\x4c\x6b\xef\x7d\x1b\xd2\x36\xbf\x67\x06\x61\x29\xb5\x49\x8d\xcb\xc1\x8d\xbc\x43\xd1\x37\x40\x7a\xd7\xb3\x94\xab\x18\x21\x36\x9f\x3e\x02\xc5\x92\x75\x5c\xa1\x21\x1e\x08\x5f\xca\xb5\x2a\x10\x9e\x41\xac\xab\x2a\x99\x2d\x85\xf3\xcb\x1d\xd6\x1f\xf0\x34\xaf\x50\x98\xd6\xc2\x61\x0e\x0b\x56\x69\x8c\x71\x96\x5c\x1b\xa9\x9e\xae\xef\xb9\xe6\x37\x15\xf6\x21\x1f\x00\x90\xba\x00\xde\x7a\xe1\x15\x52\x38\x7b\x97\xca\x81\xbf\xaf\x99\x62\x2b\x90\x35\x59\xae\x43\xe2\x82\x1b\xce\x2a\xfe\xdf\x8c\x80\x6e\x4c\x13\xfe\xf4\x00\x62\x1a\xc3\x3e\x71\x8d\xfd\x0c\x6f\x9a\x3f\xd3\xc3\x88\xf4\x06\x60\x96\x5c\x4f\xac\xda\x60\xee\xd1\xdc\xd3\xf3\x33\x0c\xa6\xac\xe6\xd3\xeb\xeb\x27\x26\xa7\x02\xe5\xe0\xa4\x9d\x40\xfa\x6c\x67\xd0\x63\x34\xec\xb4\x0a\x73\xd8\x6c\x23\x68\xcc\x1b\xcc\x13\xcd\x46\x58\x5e\xa1\x2d\x71\x0f\x88\xc9\x5b\xd2\x41\x95\x61\x9a\xd3\x64\x34\xcd\x03\x9e\x9f\x89\x0b\xc2\x9c\x4e\xe1\x12\x8d\xd7\x26\xac\x64\x89\x63\x28\x71\xc1\xd6\x95\x01\xae\xc1\xa8\x35\x12\x1e\x5f\xc0\xd0\x93\xf1\xb8\x6f\xe6\x73\x58\x8b\x12\x17\x5c\x60\x19\x64\xe7\x97\xf6\x28\x73\x0f\x03\x48\xa7\xce\xe7\x73\xa2\x0c\xcf\xcf\x7b\x30\x06\x16\x65\xb0\x1f\xe7\xdd\x0b\x24\xde\x0d\x9a\x51\x80\x53\x67\x74\x11\x64\x46\x6c\x38\x99\x6d\x13\x81\x78\xd3\x05\x6f\xba\x5d\xc9\xb4\xa4\x22\xd1\x64\x06\xbf\x57\x46\x39\x6e\x47\x58\x1d\x84\xdd\x52\xeb\x43\xdd\x29\xbe\x3e\xe4\x3e\x39\xf6\x12\xcd\x04\xda\xd8\x47\x90\x67\x13\x03\xac\x40\xbd\x50\x1b\x07\xff\x1b\x0a\x54\x14\xc2\x28\x48\xc1\xc5\x07\xef\xe1\x0a\xcd\x5a\x09\x0d\x67\xb0\x16\xfc\xb7\x35\x86\x61\xe0\x02\xcc\x92\x8a\x8b\x15\x33\x20\x17\x2e\xb8\x7d\x31\x7c\x85\xda\xb0\x55\x7d\x75\xfd\x45\x31\x51\xca\xd5\x55\xe3\xfb\x21\xf8\xac\xd8\x1d\x9e\x2f\x99\xb9\xf8\x30\x1c\x05\xbf\xf7\x1a\xa0\xf0\x00\x6e\x22\xcc\xe1\x23\x33\xcb\x89\x7b\x1a\x8e\x26\x46\x5e\x12\xee\xf0\x4f\xff\x36\x9a\xe8\xf5\x8d\x9b\x39\xfc\x76\x0c\xef\xfe\x32\x3a\x89\xe6\x93\x3b\x7f\x60\x06\x27\x42\x3e\x0c\xfd\x90\xdb\x09\x7c\x25\x3e\x0f\x37\x46\x6f\xaf\x0f\x37\x8e\xf6\xf6\xeb\x49\x47\x22\xbf\xe0\xad\xcd\x71\x0a\x98\xf0\x09\xdf\xe7\xab\x24\xf4\xb9\x91\x36\x4b\x82\x91\x3e\x37\x52\xd9\x35\x6c\xb3\xa0\x54\x3e\x0d\x8e\x12\x02\x21\xff\xff\xb5\xc9\xff\xd2\xc3\x48\xbc\x44\x3f\x53\xc5\xe7\x25\x36\xb1\xd6\xc6\xa4\xc2\x95\x78\xc5\x92\x71\xc1\xc5\x6d\x23\xee\x9f\xc5\x77\x3f\x00\x3e\x1a\x14\xa5\x8e\x72\xf3\xfb\x21\x89\x83\x28\xcf\xe0\x87\x31\x3d\x79\x36\x66\xd0\xce\x68\x59\x3f\xcd\x0b\x90\x24\xc7\x1e\x00\x8c\x66\x51\x7a\x75\x6e\xe7\x04\x43\x86\x19\xe8\x64\x5e\xe6\xe2\xee\xc4\x8f\xc2\xbc\x11\x05\xd3\x3d\xb9\x1d\x60\x0b\x58\x69\xcc\x89\x3b\x91\xf6\x52\xb6\x43\x29\xd9\xa4\x32\x08\x8e\xd0\x58\x86\x9d\xdb\xb5\x83\x73\x2b\xe0\x8a\x94\x41\x45\x74\x23\x5e\x37\x30\x1c\x45\x9b\xf6\x01\x3f\x67\x47\x4f\x8a\x4a\x6a\x0c\x86\xd8\x9f\x18\xba\x3e\x79\xce\x2a\xb7\x6e\xe8\x1d\x12\xc3\xe1\xa2\x5e\x1b\xf8\x6c\xb3\x46\x10\xa1\x54\x1e\x2a\x6f\x7e\xc5\xc2\xc0\x03\x37\x4b\x2a\xe5\x81\x89\xd2\xc7\x0e\x56\x01\x33\x86\x15\xcb\x95\x95\x51\x42\x91\xa9\x5b\x0d\x67\x65\xc9\x03\x9e\xba\x5d\x13\x96\xb5\xc9\xda\xd6\x50\x46\xf6\xc8\x81\xe9\x27\x51\x10\xb3\x43\x5a\xdd\xdb\xc2\x85\xfd\x3d\x86\xc9\x64\x62\xe9\xce\x6c\x95\xf2\xe5\x6a\x34\x83\x4f\x4a\xae\xb8\xc6\xef\x6c\xd5\x92\x38\x7d\x56\x94\x36\x15\x33\xcc\xc1\x96\xcd\x16\xb1\x42\x03\x15\xd3\xe6\x2c\x64\x63\x9b\xb5\xbd\x4c\xd3\x62\xc2\xca\xd5\x6a\xdc\x07\x17\x57\x4c\x8d\x3b\xa8\xb6\xfb\x78\x35\xb2\xeb\x47\xf6\xa2\x47\xb9\xfb\x93\x92\x05\x6a\xed\x35\x42\x09\xde\x09\x8d\x76\xe1\x9f\x63\x59\x9d\x3b\xd0\x49\x6b\x4d\x4f\x35\xca\x85\x27\x40\xc6\xee\x56\x8c\xcc\xdd\x93\xb1\x62\xf0\x3d\x9b\xc3\xde\x26\x2e\xf3\x02\xf6\x84\x4c\x64\x1b\x8c\xd3\x2e\xed\xe0\x91\xa1\xc0\xd1\x11\x74\x80\x93\x0a\xc5\xad\x59\xc2\x7b\x38\x6e\x59\x6a\x96\x49\xa6\xcf\x7b\x66\xaf\x58\x3d\x1c\xb6\x80\x11\xcc\xdf\xc3\x70\x13\xe5\x2c\xa7\x9d\x16\x63\x62\x01\xe3\x08\x61\xad\xaa\x64\x7c\xad\xaa\x78\xd8\x0a\x30\x19\xb7\x80\x18\xc1\x73\x7a\xdd\x41\x8c\x07\xe2\x09\x37\x4f\xc6\x1a\x68\x84\x49\x90\x84\xa6\x42\x66\xb0\xbc\x66\x26\xa5\xd8\x80\x63\xe4\x05\xaf\x90\xec\x35\xc2\xf4\xb0\x84\xa6\xab\x2a\x53\x82\x0e\x16\xa3\xa5\x2e\x10\xe1\xc6\x03\xf1\x84\x12\x35\x1d\x42\x50\xbd\x1d\xe1\x47\xf0\x16\x7d\x3b\x6a\xe2\xd7\x36\x2b\xcb\xce\xca\x32\x74\x27\x21\x46\xc4\x06\xef\xfc\xbb\x2d\x7a\x37\x36\x2a\xc4\x85\xf0\xd8\xc5\x9e\xed\x49\x8e\x2e\xcc\x2f\xec\x01\xe6\x80\xa2\x90\x25\xfe\xe3\x97\x8b\x73\xb9\xaa\xa5\x40\x61\x86\x7f\xbf\xfc\xf9\xa7\x89\x73\x08\xbe\x78\x1a\x7a\xf4\xd1\xa8\x43\xe3\xf1\xf7\xd1\x78\xcc\x68\x84\xee\xa1\x6d\x25\xe2\xd1\x50\xd1\x26\xc5\xf5\x69\xa8\xf0\x66\x30\xa0\xaa\x6b\x10\x4f\xe9\x14\x6f\xfd\x45\xe7\x7e\x22\x56\xfb\x17\x65\x98\x1b\xda\x90\xe7\x67\xf7\x1c\x17\x58\xf1\xac\xc6\x0e\x3e\x51\xc0\x9f\xc3\xd7\xa3\xd8\x34\xe6\x87\x9b\x4e\xef\xe3\x4a\xa3\x66\xbb\x86\x99\xb5\xbe\x46\x51\xd6\x92\xd3\xbe\xbf\xfa\x39\xb6\x0f\xdb\x4e\xdd\xf8\xa9\x57\xc6\xfc\x70\xd3\x6a\x71\x7b\xe4\xc5\x1b\xa0\x8f\x0e\x4a\x22\xb5\x2b\xdb\xff\xdb\x23\xbf\x15\x8b\x44\x5b\xdc\x1e\x6e\x52\xae\x53\x86\x76\x71\x72\x5a\x54\x3c\x38\xf0\xfc\x57\xad\xcb\xbb\xa3\xff\x03\x53\x4e\xaf\xf3\xc3\x8d\xfb\xb1\x3d\xca\x94\x35\x3f\xdc\x64\x90\x57\x6e\x24\x36\x0b\xaa\x4b\x7e\x50\x4a\x2a\xea\x37\x6d\x52\x1d\xa2\x7d\xa4\xdc\x49\xd1\xb1\x29\x2b\xd4\x53\x1a\x6f\x75\x7b\xb6\x67\x27\x3f\x30\x6e\x60\x81\xa6\x58\x0e\x33\x8d\x8d\x61\x93\xc6\xaa\x12\x85\x6d\xd7\xf5\x0c\x06\x5c\x14\xd5\xba\xc4\x41\x1c\x21\x96\xc8\x4a\x54\x7a\x06\x1b\x38\x2b\x0a\xac\xcd\x0c\x06\xac\xae\x2b\x5e\x50\x7b\x3f\xfd\x55\x4b\x31\x80\x6d\x1c\x25\xfc\xae\x42\x2a\x09\x7c\x4d\x1c\x27\x94\xc8\xbe\x3d\x3e\xb6\xb6\xda\x3f\xf4\x6e\xe4\x0b\xb2\x88\x90\xdb\x62\xe9\x0e\xd4\xdc\xf6\x9a\xc9\x96\x85\xe1\x68\x52\x30\xbb\xdd\x61\x37\x8b\x34\x07\x65\x5f\x7f\xfc\xfc\xf9\x13\x1c\x6e\xb2\x65\xb7\x5f\xb3\x18\xd7\x3c\xd9\x44\x4d\x1a\xf8\xd8\xd4\xa8\x83\x9f\xd0\x3c\x48\x75\xe7\xe0\x63\xa8\x2b\x64\x1a\x49\x21\xec\x96\x71\x01\x15\x33\xa8\x06\x27\x89\x08\x2c\xdf\xa7\xa1\xd0\x1d\x25\x1a\xc8\xc8\x5b\xcc\x80\xd8\xd2\x88\x2b\x5f\x8b\x1f\x30\x4e\x27\x5e\x65\x7a\x38\xf8\xf3\xf1\xbb\xc1\x68\x2f\xed\xc1\x25\x6a\x6d\x3b\x0c\x7c\xac\xb9\xc2\x72\x06\x9f\x1c\xf3\x95\xbc\xe5\xc2\xb1\x3f\xf8\xbd\x8b\xfe\x69\xff\xa2\xd1\x00\xc0\xc0\x5a\x90\xd6\x50\xa2\xe0\xd1\xf2\xc5\x12\x8b\x3b\x78\x92\x6b\x05\x35\xaa\x15\x27\x26\xb5\x2d\x66\xff\xf7\x8c\xfd\xe5\xf8\xf8\x65\x69\xa8\x7b\x54\xe0\x3d\xcc\xf6\x54\x1a\xd5\x3d\x2f\x90\x0e\x57\x70\x55\x4b\xc5\x14\xaf\x9e\x60\x2d\xd8\x3d\xe3\x15\xbb\xa9\xf0\x77\x8b\xe7\xcf\xbf\x4b\x3c\x17\x0d\x0b\x42\x1a\x58\xc8\xb5\xe8\x95\x52\x21\xc5\x82\xdf\xae\x15\x79\xe0\x3e\x96\x6c\xb9\xe4\x0a\xc7\xcf\x4f\xb5\x0b\x2d\x83\xd7\xb3\x73\x2e\x85\x40\xd7\x93\x2e\x18\xaf\xfa\x35\x26\xbc\x3b\x14\x0d\x72\xcc\x50\xee\xc0\xab\xb4\x8d\x9c\xc7\xed\xda\x97\xa6\x4f\xbc\xda\xd5\x01\x06\x7f\x4a\xc9\xa4\x3b\x4a\xc7\x92\x40\x10\xae\x35\xe2\x4d\x8f\xd3\x71\xaa\x03\x07\x84\x30\x48\x87\xdc\xf5\x86\x3b\x95\x4a\x47\x6c\x9b\xd9\x85\x6f\x47\xb1\x1c\x82\x82\x28\x48\x81\x0f\xca\xa4\x90\x51\x27\x90\xff\x73\x08\x89\xfc\xc3\x9a\x62\x64\xfe\x3b\xc3\xdd\xff\xaf\x14\x93\x4e\x2b\x4e\x85\xa1\x3d\xf4\xf5\x7c\xd2\x9f\x25\xbd\x76\x53\x3d\x50\x0b\x8e\x0f\xf1\xc1\xfb\x30\x4a\x95\xd4\x41\x9f\xc7\x49\x92\x4e\xf9\xb6\x3d\x8d\x3c\xea\x26\x71\xa0\x9e\x48\x21\x6b\xaa\x1a\x5d\x3e\xda\x34\xcd\x15\x8d\xb5\x47\x1e\xc3\x8d\x4b\x6a\x5b\x9b\x60\xed\xaf\x86\xeb\x6d\x92\xf0\xf3\x94\x1f\x36\xe0\x4e\xdf\xb0\xbc\xf6\xa9\x91\x0a\xda\x9a\x29\x8d\x94\x74\x22\xe9\x39\xa3\x78\x93\x4c\xe8\x49\xb4\x7f\xa0\x11\xfa\x15\x73\x3b\xdc\xb9\x64\x66\x85\xee\x2a\x2f\x35\x92\x1b\xbc\xe5\xa2\x6b\x6c\x29\x04\x45\x36\x8b\x3a\x8c\x04\x42\xd7\x88\x5d\xfb\x4b\x21\xbb\x9a\xa6\xfc\xfc\x60\xd7\x98\x3b\x2e\x48\x47\x05\x3e\xcc\x9c\x13\x3c\x64\xcb\x63\x65\x58\x62\xf9\x30\x4f\xb5\x9b\x48\x6c\x3a\x05\x27\x50\x60\x2e\x42\x07\x93\x72\x77\x68\xcd\x5f\x38\x46\x70\x59\xc0\xe1\x66\x29\xa0\x11\x3f\xb5\xdb\xba\x66\x85\xf5\x73\xc5\x57\x4c\x3d\x8d\xc9\x26\xaf\xb9\xc1\xd5\xd8\xaf\x34\x06\x7c\x34\x8a\x59\xfe\x12\x22\x5e\xa8\xe1\x06\x23\x1e\xb0\x4c\x78\x36\x8f\x8e\xe0\x4c\x29\xf6\x34\xe1\x9a\xfe\x7b\xf8\x28\x67\xa9\x69\x58\x68\xb8\xcd\xda\x39\x56\x88\x56\xe1\xf2\x64\x90\xc5\x1b\x68\xc3\x91\xdf\x7c\x77\x9c\xf8\x9e\xf5\x90\x86\x56\x22\xb3\xf6\x27\x2d\x63\x4b\xfa\x1e\x52\x10\x04\x37\x0b\x3f\x08\x9b\x97\xbd\xb8\x8d\x6c\x67\xed\x4f\x27\xbf\x3e\x6c\x2f\xfe\x9e\x11\x52\x48\x77\xa0\x87\xca\xee\xf0\x0b\x4d\x08\x7e\xf3\xa6\xeb\x0a\x6d\xb8\x6d\xff\xc2\x71\xdd\xa4\x5e\xeb\xe5\x30\x51\xd4\xe8\xa4\x1f\x37\xe4\x9b\x1c\x39\xc3\xa6\x92\x59\x0a\xec\x1a\x45\xd3\x08\x44\x17\xda\x59\x68\xa2\xf3\xe0\xab\xde\xc3\xde\x7c\xaf\x7e\xf0\x74\xd2\xdc\x87\x77\x18\xa7\x80\x9d\x1d\xde\x36\x22\xc9\x9e\x43\x60\xdb\x85\xb3\xcd\x1c\xf8\x9c\xaa\x28\xbe\x80\x07\x04\x81\x74\x95\xee\x0f\x8f\x80\x51\x52\xf2\x5c\x75\x02\xa5\x5e\xca\x75\x55\x9e\x13\xea\x4f\xf8\xd0\x5f\xbe\x39\xb7\x7f\x33\x9f\xb7\x19\x11\x8e\x8e\x32\x96\x87\xa4\x6b\x6b\x73\x43\x77\x58\x1e\xee\xb1\x8e\x8e\x60\x18\x7c\x8a\xfc\x63\x34\x1a\x8d\xec\xc3\x74\x6a\x39\x26\x6a\xc5\x92\x89\x5b\x2c\x6d\xa1\x4e\x93\xfd\x9d\x24\x9d\x35\x9b\x25\x2a\x5f\x48\x3f\x1a\x8b\x41\x44\x92\xd5\x1b\xfb\xf1\x87\x88\x76\xed\xe3\xf8\xae\x8b\x18\x4c\xae\x61\x3b\xfc\x07\x1a\x5f\x72\x62\xdf\xc0\xbb\xab\xf4\x0a\xd7\x4a\x22\x06\x8c\x3a\x4b\xb9\xb0\x6c\xb7\xfe\x86\xa2\xf1\xe8\xc4\xee\xf6\x67\x51\x3d\x05\xb5\x44\x4a\xb1\x52\xe0\xe6\x5f\x34\xc1\xec\x8e\x6d\xc5\xce\x5c\x18\x87\x75\x5d\x32\x83\x99\xba\xff\x41\x40\xd2\x46\x1e\xa5\x5b\x0d\xcd\x69\x28\x0f\xf5\x7e\x6a\xc3\x3e\x70\xe1\x52\x03\x97\x22\x0b\xf6\xe9\x16\x93\xb3\xf2\x97\xaf\xb4\xfb\xc8\xd8\xb8\xb7\x9b\x90\xeb\x30\xb2\x84\xb8\x9b\x98\x4b\x89\xa3\x44\xee\xbb\x48\x3b\xdc\x84\xb8\x03\x25\xd2\xb1\xf4\xfb\xfd\x21\x8f\x1e\xd3\x29\x7c\x64\xea\x8e\x0e\x27\x49\x09\x41\x93\x4c\x7b\xfb\xb5\x1a\x05\x7c\xe4\xda\xe8\x4e\xfe\xca\x0d\xec\x3d\x1c\x5b\x4b\xd9\x6f\x80\x2e\xdc\x76\xc3\xd8\xde\x59\xbd\x59\x6e\x32\x99\xec\x9d\xb4\x2b\x98\xf7\x05\xfa\x6d\x1e\xa2\x72\x31\x9d\x77\xad\x9d\x6e\x92\x58\x55\x81\x54\xfc\x96\x0b\x56\x91\x43\xa3\x32\x1c\x75\x4f\x2d\x21\xa2\xa8\xd4\xd9\xcd\x4b\x19\xdb\xe5\x6b\x72\x07\x3b\x6e\x11\x3b\x38\x3d\x05\xdc\xfe\xec\x16\x17\x5e\x8d\x5b\x6b\x24\x56\x1b\x5f\x5e\x28\xb9\x22\xfb\x68\x76\xd9\x0d\xc1\xb0\xab\x36\xcd\x8f\xdf\xf7\xf8\xde\xf3\x73\xfb\xea\xc1\x6e\x22\xee\xf6\x63\xaf\xe7\xbd\x8e\x50\xb8\xb7\x7a\xc1\xd3\x76\x13\xcb\x93\x7f\x9a\xfa\x5b\x65\x67\x29\x32\xcb\xfa\x09\x5e\x6e\x73\x17\x0b\x12\x7c\x13\x5d\x9d\x4f\x8e\x81\x72\x6f\x7b\x13\x0e\x9a\x7a\xb4\x8e\x7b\xf6\x97\x0b\x7f\x4c\xb1\xf0\xca\x52\x61\x57\xa1\x90\x96\x09\xdd\x22\x21\x2f\x0b\xfe\x86\x06\x8a\xb5\x52\xf4\xd2\x8f\x17\xc7\xf0\x01\xe1\x4e\xc8\x87\x36\x40\xc1\x0d\x16\x6c\xad\xd1\x16\x0f\x74\x1c\x83\x65\x27\xa3\xb2\x1b\x79\x8f\xa3\x4e\xf9\xe0\x89\x5f\x33\xa1\x1f\x48\x24\x7b\x23\x4b\x9e\x8b\x2e\xd1\x34\xaf\x4b\xc6\x19\xa9\xcc\x82\x72\x37\x60\xbe\xeb\xef\x3b\x9a\x77\x2f\xdb\xae\x78\x0f\x43\xdf\x5e\x75\x7b\x8b\x9c\xc2\x24\x4d\x82\x1d\xab\x48\xf6\x3f\xe9\x7d\xf7\xb3\xd3\xdc\x40\x87\xcf\xc9\xae\xfc\xb9\xbf\xea\xf3\x6d\x5b\xd8\x6c\x21\x57\x75\x85\xd4\x1b\xb9\x12\x6c\x51\xb1\x5b\x6b\xfe\x1a\xcd\x28\x13\x69\x9f\x91\x53\x83\x87\x8f\xe6\xc5\x6d\xfa\xab\x37\xfb\x6f\x9f\x7d\x86\x86\xf1\x65\x7a\x71\xb9\xb2\x9f\x9e\x2b\x20\x5f\xd6\x83\x6d\x1f\xe7\x2e\xb4\xbf\x94\xa2\x28\x93\xdb\x7c\xd4\x98\xa2\x40\xd9\xd8\x4d\x48\xe9\xc9\x2c\x7a\x1d\xa7\x42\x03\x3c\xb2\xb0\xc8\xd2\x4f\x80\xc3\xfb\x39\x1c\x9f\x00\xff\xe6\x9b\x5d\xb1\xa4\xc7\x46\xf9\x55\x1e\x09\x22\xf3\xdf\x59\x02\xa4\x58\x4e\xb3\x37\x0a\xd9\x5d\xb7\x03\x89\x56\x0a\x77\xa7\x1e\x34\x8e\xb2\x7c\x9e\xd6\x73\x45\x64\x32\xfc\x23\x42\xe3\xab\x02\xe3\xae\xb0\xf8\x72\x20\xbc\xbc\xe3\xb5\xb5\x86\x02\xb5\xe6\xe2\xd6\x0a\x4c\xc8\xe6\x1d\x06\x23\x43\x99\x9d\x8a\xf4\x0d\x19\xba\x2d\xe2\x9d\x41\xd9\x5f\xce\xa0\x7b\x0e\x9e\xda\xda\xda\x21\xf3\x05\x34\x87\x9d\x19\xdd\x5e\x23\x4e\x8f\x57\xcc\x92\x8b\xbb\x01\x5d\xc2\xb6\x30\x29\xab\xce\x81\xcb\x4e\xdb\xef\x2d\xfc\x86\xbd\xc8\x74\x4e\x30\xea\x69\xf1\xcb\xd9\xae\xfa\xa4\xf7\xfc\x0c\xfa\x4e\xcc\xba\x45\x62\xfa\x22\xc9\x0b\xdb\xe8\x75\xe1\xf8\x77\x6f\x48\x24\xc5\xc5\xaf\x0d\x44\x32\xee\x89\x70\x14\x11\xa9\x4f\x7b\x65\xe8\xcb\xe5\xd8\x56\xa0\x23\xf8\xd7\x9e\xc0\xd8\x2e\x3d\xd1\x86\x29\xa3\xff\x83\x9b\xe5\x70\xf0\x5f\x2a\xbf\xd3\xd9\xb7\x28\x4d\x57\x58\x57\xac\x40\x9a\x3b\xb6\xeb\xbd\xe0\xaa\xaf\x12\xf6\xab\x02\x7a\xc7\xa7\x50\x94\x9d\xea\xa2\x79\xe3\x50\x45\xc8\x59\xf1\x96\x2e\x1e\x9f\xca\x87\x3b\x0d\x54\xd9\x25\x83\x0d\x31\xb2\xc2\x09\xdd\x03\x0c\x07\x7f\xa5\x3b\x24\xf7\x2a\x99\xd2\x4d\x06\x9c\x0d\xc6\x60\xa7\xf6\x9c\xf3\xa7\x07\xea\xe8\x6f\xc6\x87\x78\x9f\x1d\x8d\x47\x37\xe7\x76\xb0\xa5\xd4\x8d\x3d\xcd\x7b\x51\x2d\xd3\xf1\x15\x4c\x42\x89\x86\xe2\x77\xf3\xda\xaf\x22\xce\x9a\x57\x65\xe2\x56\x9c\x52\xcc\x82\x57\x08\xeb\xba\x92\xac\xec\xfd\xca\x26\x9a\x6a\x57\x75\x45\x7e\xfb\x35\x00\xbd\xd1\x94\x7e\x77\x13\x3f\xa7\x2f\x2c\xb5\x70\xff\x5e\x92\x58\xaf\x6e\x5c\x94\x8e\xdf\x42\x6a\xd1\x9a\xd7\x8d\x22\x8a\x3d\x9f\x24\xec\xfc\x6c\x27\x7a\x2f\xa8\xf7\xeb\x98\x8b\xf8\x5d\xb7\xde\x2f\x90\x0a\x56\x55\xbd\x72\x89\x5f\x81\xeb\xfd\x04\x29\x7a\x73\xec\x74\x96\xcb\xf2\xcb\x55\x97\x0d\x0a\xc2\xd9\xca\xe3\xf0\xfd\x0a\x72\xb3\x44\x05\x2c\x5c\xb7\x48\xff\xdb\x31\x5c\xba\xb7\xd5\xb2\x2f\x5b\x1c\x59\x5b\x19\x3e\xfb\x69\xf4\xb3\x79\x29\x23\x63\xd8\xfe\xbd\xc8\x74\x30\xf4\x60\x58\x7b\x3f\xa1\xe8\x4a\xcd\x7d\x1e\x41\x2c\x2c\xa5\x36\x89\xb2\x3a\x9f\xb1\x74\xbe\x0b\x79\x8e\xaf\xc8\x82\xe5\xec\xfe\x32\xa4\x17\xbd\xcf\x7e\xfc\x9b\x34\xbb\xbe\xd3\xda\x1e\xfc\x4f\x00\x00\x00\xff\xff\x02\x9b\xc2\xb4\x18\x37\x00\x00") +var _libsuiAgentTs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x3b\x5d\x73\x23\xb7\x91\xef\xfa\x15\xbd\xac\x2d\xdd\xd0\x47\x93\xbb\x4e\x72\x0f\x94\xb9\xb2\x4a\xeb\xc4\xca\xd5\xda\x5b\xd6\xa6\xae\xae\xf6\x54\x5a\x68\xa6\x29\xc2\x1a\x02\x0c\x00\xea\xe3\x24\xfe\xf7\x14\x1a\x98\x19\x00\x83\xa1\xb4\x89\x1f\xa2\x17\x91\x40\x77\xa3\xd1\xdf\x0d\x80\xb3\x6f\xbe\x39\x80\x6f\xe0\x7f\x99\x84\x93\x33\x38\xb9\x46\x61\xe0\xe3\x56\x21\xfc\x95\xdd\xb2\xf3\x52\xf1\x8d\x81\xf3\xf7\xff\x6d\x61\x7e\x60\x5b\xb3\x92\x0a\x3e\xb0\xfb\xef\xd7\xec\xfe\x07\xfe\xf7\x1b\x36\x2d\xe5\xfa\x1d\x4d\xae\x19\x17\x86\x71\x81\x0a\x56\xc6\x6c\xf4\x7c\x36\x7b\x60\x92\x6d\x36\xda\xc2\x1c\xc0\x37\xb3\x83\x03\xbf\xd8\x07\xd4\x9a\x5d\x23\x68\xa3\xb6\xa5\xb1\x8b\x2d\xa5\x02\x46\x6b\x2b\xd4\x1b\x29\x34\x6a\xc2\xe0\xc2\xa0\x5a\xb2\x12\x1d\x67\x0d\xe2\xe3\x01\x80\xc1\x7b\x33\xb7\x24\xb8\xb8\x3e\xb2\xdf\x1f\x36\x78\x1c\x0e\x54\x52\xd8\x81\x2b\x29\x6b\x64\xc2\x8e\x70\x7d\x29\x50\xc6\x63\x4c\x6b\xae\x0d\x13\xe6\x92\x57\x11\x7a\x37\x21\xd8\x1a\x07\xa6\xd8\x2d\x33\x4c\x45\x93\x1b\x25\x37\xfa\x78\x0e\xbf\x62\x29\x55\xf5\xbd\x9b\x98\x00\x13\x0f\xef\x88\x4d\x29\xeb\x74\x29\x81\x77\x31\x53\x15\xd6\x86\xc5\x43\x0a\xf5\xb6\x36\xc7\x73\x4b\xc8\x2d\x83\xb7\x5c\x6e\xf5\xe5\xc0\x06\x76\xad\xb4\xdf\x4b\x81\x80\xb7\x56\xb8\x15\x33\xac\x93\x3a\x49\xd8\x8a\xcd\x09\xd7\xc2\xbd\xb7\x00\x8b\x48\xd8\x9f\x2f\x8e\x5a\x52\x3f\x12\x95\x15\x13\x55\x8d\x0a\x96\x5b\x51\x1a\x2e\x05\x89\x3e\xd5\x97\xc7\xfe\xc9\xc3\x5a\x8d\x15\x6b\x37\x36\x8f\xe8\x8f\xe7\x70\x2b\x79\x45\x1c\x77\xe8\x96\x99\x1c\xae\x9e\xc7\xcc\x86\xd8\x11\x93\xc4\x13\x98\x15\x33\x50\x32\x01\x57\x08\x35\xd7\x06\x05\x56\x60\x64\xb2\x73\x87\xb1\x80\x91\x5f\x64\x04\x4f\x30\xb2\xe6\x33\x1a\xd8\xba\x06\x45\xda\xa5\x55\x92\x8d\x13\xe0\x4f\x0d\x9c\xe5\xdd\x53\x3d\x9e\x27\x42\x09\x8c\x34\xd8\x2e\x6d\xa5\xac\x99\xd6\xde\x1b\x1f\x49\xdb\xfc\x96\x19\x84\x95\xd4\x26\x36\x36\x37\x6e\xe4\x0d\x8a\xdc\x04\xe9\x5d\xcf\x63\xae\x42\x80\xd0\x7c\x72\x04\xca\x15\xeb\xb9\x46\x4b\xbc\x21\x7c\x2e\xb7\xaa\x44\x78\x02\xb1\xad\xeb\x08\x5b\x0a\xe7\xa7\x03\xde\xd0\xc0\x69\x5e\xa3\x30\x9d\xc5\xc3\x02\x96\xac\xd6\x18\xc2\xac\xb8\x36\x52\x3d\x5c\xde\x72\xcd\xaf\x6a\xcc\x01\x1f\x00\x90\xba\x00\xbe\xf1\xc2\x2b\xa5\x70\xf6\x2e\x95\x1b\xfe\x61\xc3\x14\x5b\x83\xdc\x90\xe5\x3a\x20\x2e\xb8\xe1\xac\xe6\xff\xcf\x68\xd0\xcd\x69\x82\x9f\x1d\x40\x48\xa3\xc8\x89\x6b\xe2\x31\xbc\x69\xfe\x42\x5f\xc6\xa4\x37\x00\xb3\xe2\x7a\x6a\xd5\x06\x0b\x0f\xe6\xbe\x3d\x3d\xc1\x68\xc6\x36\x7c\x76\x79\xf9\xc0\xe4\x4c\xa0\x1c\x1d\x75\x08\xa4\xcf\x0e\x83\xbe\x06\xd3\x4e\xab\xb0\x80\xc7\x5d\x30\x1a\xf2\x06\x8b\x48\xb3\x01\x94\x57\x68\x47\xdc\x0f\x84\xe4\x2d\xe9\x46\x95\x0d\x9a\xd3\x64\x80\xe6\x07\x9e\x9e\x88\x0b\x82\x9c\xcd\xe0\x1c\x8d\xd7\x26\xac\x65\x85\x13\xa8\x70\xc9\xb6\xb5\x01\xae\xc1\xa8\x2d\x12\x1c\x5f\x42\xe1\xc9\x78\xd8\x57\x8b\x05\x6c\x45\x85\x4b\x2e\xb0\x6a\x64\xe7\x97\xf6\x20\x0b\x3f\x06\x10\xa3\x2e\x16\x0b\xa2\x0c\x4f\x4f\x7b\x20\x46\x16\x64\xb4\x1f\xe6\xed\x33\x24\xde\x8e\xda\x59\x80\x63\x67\x74\xc1\xc8\x9c\xd8\x70\x32\xdb\x45\x02\xf1\xa6\x0b\xde\x74\xfb\x92\xe9\x48\x05\xa2\x49\x0c\x7e\xaf\x8c\x52\xd8\x9e\xb0\x7a\x00\xc3\x52\xcb\x81\x0e\x8a\x2f\x07\x9c\x93\x63\x96\x68\x22\xd0\xd6\x3e\x1a\x79\xb6\x31\xc0\x0a\xd4\x0b\xb5\x75\xf0\xbf\xa0\x40\x45\x21\x8c\x82\x14\x9c\xbd\xf7\x1e\xae\xd0\x6c\x95\xd0\x70\x02\x5b\xc1\xff\xbe\xc5\x66\x1a\xb8\x00\xb3\xa2\x62\x63\xcd\x0c\xc8\xa5\x0b\x6e\x9f\x0d\x5f\xa3\x36\x6c\xbd\xb9\xb8\xfc\xac\x98\xa8\xe4\xfa\xa2\xf5\xfd\x26\xf8\xac\xd9\x0d\x9e\xae\x98\x39\x7b\x5f\x8c\x1b\xbf\xf7\x1a\xa0\xf0\x00\x0e\x11\x16\xf0\x81\x99\xd5\xd4\x7d\x2b\xc6\x53\x23\xcf\x09\xb6\xf8\xc3\x7f\x8d\xa7\x7a\x7b\xe5\x30\x8b\xef\x26\xf0\xf6\x4f\xe3\xa3\x00\x9f\xdc\xf9\x3d\x33\x38\x15\xf2\xae\xf0\x53\x6e\x27\xf0\x85\xf8\x7c\xfd\x68\xf4\xee\xf2\xf5\xa3\xa3\xbd\xfb\x72\xd4\x93\xc8\xaf\x78\x6d\x73\x9c\x02\x26\x7c\xc2\xf7\xf9\x2a\x0a\x7d\x6e\xa6\xcb\x92\x60\xa4\xcf\x8d\x54\x86\x15\x5d\x16\x94\xca\xa7\xc1\x71\x44\xa0\xc9\xff\x7f\x6e\xf3\xbf\xf4\x63\x24\x5e\xa2\x9f\xa8\xe2\xd3\x0a\xdb\x58\x6b\x63\x52\xe9\x4a\xbe\x72\xc5\xb8\xe0\xe2\xba\x15\xf7\x2f\xe2\xfb\x1f\x01\xef\x0d\x8a\x4a\x07\xb9\xf9\x5d\x41\xe2\x20\xca\x73\xf8\x71\x42\xdf\x3c\x1b\x73\xe8\x30\x3a\xd6\x8f\xd3\x02\x24\xca\xb1\x07\x00\xe3\x79\x90\x5e\x9d\xdb\x39\xc1\x90\x61\x36\x74\x12\x2f\x73\x71\x77\xea\x67\x61\xd1\x8a\x82\xe9\x4c\x6e\x07\xd8\x01\xd6\x1a\x53\xe2\x4e\xa4\x59\xca\x76\x2a\x26\x1b\x55\x06\x8d\x23\xb4\x96\x61\x71\xfb\x76\x70\x6a\x05\x5c\x93\x32\xa8\xa8\x6e\xc5\xeb\x26\x8a\x71\xb0\x69\x1f\xf0\x53\x76\xf4\xb4\xac\xa5\xc6\xc6\x10\xf3\x89\xa1\xef\x93\xa7\xac\x76\xeb\x36\xbd\x44\x64\x38\x5c\x6c\xb6\x06\x3e\xd9\xac\xd1\x88\x50\x2a\x3f\x2a\xaf\x7e\xc3\xd2\xc0\x1d\x37\x2b\x2a\xed\x81\x89\xca\xc7\x0e\x56\x03\x33\x86\x95\xab\xb5\x95\x51\x44\x91\xa9\x6b\x0d\x27\x55\xc5\x1b\x38\x75\xbd\x25\x28\x6b\x93\x1b\x5b\x43\x19\x99\x91\x03\xd3\x0f\xa2\x24\x66\x0b\x5a\xdd\xdb\xc2\x99\xfd\x3c\x81\xe9\x74\x6a\xe9\x52\xa9\xfd\xf9\x62\x3c\x87\x8f\x4a\xae\xb9\xc6\xef\x6d\xd5\xe2\xe5\xe4\xe5\x2f\xf0\xae\x99\x2d\x0a\x85\x5a\xd6\xb7\x38\x01\x85\x76\x2f\x63\x58\xbc\x6b\xa5\xea\x9c\x3c\x29\x62\xdb\x0a\x1b\x16\x60\xcb\x6c\x07\x5a\xa3\x81\x9a\x69\x73\xd2\xe4\x6f\x9b\xe7\xdb\xb0\x18\x17\x20\x56\x17\xd6\x4a\x7c\x40\x72\x05\xd8\x24\x03\x6c\x7b\x98\xaf\x00\x77\x7d\xcd\x33\x08\x4d\xd6\xa7\x34\xf7\x51\xc9\x12\xb5\xf6\xda\xa4\xe2\xc0\x09\xdc\xef\xc8\x8f\x84\x92\x3e\x75\x43\xcd\xbe\xc9\x1a\x1f\x36\x28\x97\x9e\x08\x39\x8b\x5b\x39\x70\x17\x68\x48\x59\xb1\xf8\x2e\xd0\xc1\xef\x1a\x4a\xde\xed\x9e\xc5\x98\x92\xa1\xb5\x68\x8e\x05\x37\x13\x18\x1c\x1c\x1e\x42\x6f\x70\x5a\xa3\xb8\x36\x2b\x78\x07\x6f\x42\xd6\xda\xa5\x22\x02\x8b\x0c\xfe\x9a\x6d\x8a\xa2\x1b\x20\x63\x29\x42\x42\x00\x4e\x67\x1d\xcc\xd4\x0e\x4c\x22\x90\xad\xaa\x23\x88\xad\xaa\x63\x00\x2b\xd0\x08\xc2\x0e\xc4\x20\x9e\xe3\xcb\x1e\x68\x38\x11\xa3\x5c\x3d\x18\x6b\xc4\x01\x2c\x8d\x24\x74\x15\x32\x83\xd5\x25\x33\x31\xd5\x76\x38\x06\x5f\xf2\x1a\xc9\xa6\x03\x58\x3f\x96\xd0\x75\xf5\x6a\x4c\xd4\x8d\xc5\x80\xb1\xab\x04\xd0\xe1\x44\x8c\x52\xa1\xa6\x23\x0f\xaa\xe6\x03\x8c\x60\x3c\x44\xd8\x8d\xc7\x9d\xf1\xec\x1a\xeb\x0b\xbc\xe2\xa4\xaa\x9a\x1e\xa8\x89\x44\xb1\x6b\xb8\xb8\xd0\x15\xd7\x8f\x36\xfa\x84\x05\xf7\xc4\xc5\xb8\xd6\x48\x03\x04\x61\x7e\x65\x77\xb0\x00\x14\xa5\xac\xf0\x6f\xbf\x9e\x9d\xca\xf5\x46\x0a\x14\xa6\xf8\xeb\xf9\x2f\x3f\x4f\x9d\xeb\xf0\xe5\x43\xe1\xc1\x3b\x6e\xa3\x65\xbf\x8a\xca\x7d\x8f\x4a\xd3\xab\x74\x8d\x4b\x3c\xdf\x54\xd0\x51\x31\x7f\xdc\x54\x94\x73\x18\x51\x95\x37\x8a\x91\x7a\xe5\x62\xbe\xcc\x7d\x8e\x8c\xb5\x8b\xb3\xaa\xc1\x6e\x5a\x9f\xa7\x27\xf7\x3d\x2c\xea\x62\xbc\xd6\x42\x3e\x52\x9a\x59\xc0\x97\xc3\xd0\x68\x16\xaf\x1f\x7b\x1d\x97\x2b\xc8\x82\x6d\x1b\x66\xb6\xfa\x12\x45\xb5\x91\x9c\xf6\xff\xc5\x63\xd9\xfe\x6f\x37\x73\xf3\xc7\x5e\x35\x8b\xd7\x8f\x9d\x4e\x77\x87\x5e\xd4\xcd\xe8\xbd\x1b\x25\xe1\xda\xb5\xed\xff\xdd\xa1\xdf\x8e\x05\xa2\x6d\xee\x5e\x3f\xc6\x7c\xa7\x2c\x0d\xf1\x72\x5c\xd6\xbc\x71\xf4\xc5\x6f\x5a\x57\x37\x87\xff\x02\x5b\x4e\xc3\x8b\xd7\x8f\xee\xc3\xee\x30\x51\xda\xe2\xf5\x63\x32\xf2\xc2\xad\xc4\x06\x42\x35\xd1\x8f\x4a\x49\x45\xbd\xae\x4d\xe8\x05\xda\xaf\x94\xb7\xa3\xe4\x0b\x60\xd4\x43\x1a\xa5\x75\x77\xd6\x68\x09\xdc\x31\x6e\x60\x89\xa6\x5c\x15\x89\xe6\x26\xf0\x98\xc6\xb5\x0a\x85\xe1\xac\xd6\x73\x18\x71\x51\xd6\xdb\x0a\x47\x71\x1c\x59\x21\xab\x50\xe9\x39\x3c\xc2\x49\x59\xe2\xc6\xcc\x61\xc4\x36\x9b\x9a\x97\x74\xc4\x30\xfb\x4d\x4b\x31\x82\x5d\x1c\x4b\xda\x1d\x82\x4f\x45\x0d\x7f\x53\xc7\x11\x25\xc4\xef\xde\xbc\xb1\xf6\x9b\x9f\x7a\x3b\xf6\x85\x49\x44\xca\x6d\xb6\x72\x47\x7b\x6e\xa3\x2d\xba\x65\xa4\x18\x4f\x4b\x66\x37\x5e\xe4\xb2\x50\x7b\x68\xf7\xe5\xa7\x4f\x9f\x3e\xc2\xeb\xc7\x64\xe9\xdd\x97\x5e\x44\x0c\xbe\xdb\xd4\x4f\x5a\xf9\xd0\xd6\xcc\xa3\x9f\xd1\xdc\x49\x75\xe3\xc6\x27\xb0\xa9\x91\x69\x24\x15\xb1\x6b\xc6\x05\xd4\xcc\xa0\x1a\x1d\x25\xc2\xb0\xfc\x1f\x37\xa5\xf7\x38\xd1\x49\xb2\x84\x85\x6d\x40\x43\x3a\x61\x3d\x6e\x31\x1a\x98\xe3\xa9\x57\xa3\x2e\x46\x7f\x7c\xf3\x76\x34\x7e\x86\xfe\xe8\x1c\xb5\xb6\x9d\x0f\xde\x6f\xb8\xc2\x6a\x0e\x1f\xdd\x26\x6a\x79\xcd\x85\xdb\xc6\xe8\xeb\x17\xfe\xc3\x73\x0b\x47\x53\x00\x23\x6b\x5b\x5a\x43\x85\x82\x07\x4c\x94\x2b\x2c\x6f\xe0\x41\x6e\x15\x6c\x50\xad\x39\xb1\xaa\x6d\xa9\xfd\xaf\xb0\xf7\xa7\x37\x6f\xbe\x96\xbd\x73\x54\xb7\xa8\xc0\x7b\xa5\xed\x01\x35\xaa\x5b\x5e\x22\x1d\x06\xe1\x7a\x23\x15\x53\xbc\x7e\x80\xad\x60\xb7\x8c\xd7\xec\xaa\xc6\x7f\x42\x6c\x7f\xfc\x6a\xb1\x9d\xb5\x8c\x08\x69\x60\x29\xb7\x22\x2b\xbd\x52\x8a\x25\xbf\xde\x2a\xf2\xd9\xfd\x8c\xd9\xd2\xcc\x15\xac\x9f\x1e\x36\x2e\x2c\x8d\xbe\x8e\xa9\x53\x29\x04\xba\x7e\x7a\xc9\x78\x9d\xd7\xa7\xf0\xae\x53\xb6\xc0\x31\x5b\x7d\xb7\x5f\xc7\x6d\xf0\x22\x6c\x37\x3f\xb7\x7d\xee\xc5\x50\x07\xeb\xfe\xec\x3e\x63\x42\xe9\xde\xe2\xd9\x24\x84\x34\x97\x35\xa1\x00\x26\x29\x04\x55\x9f\x23\x02\x19\xa5\x93\xee\xe2\xc6\x9d\xaf\xa5\x73\xb6\x65\xce\xcd\xec\xc6\x83\x92\xf1\xcd\x9b\x6b\xd3\x9c\x02\xc3\x3a\x0e\x28\x1a\x82\xcf\x03\xa4\xcb\x5e\x8d\xff\x6f\x26\x59\x72\x35\x6b\xcf\x81\x27\x0d\x46\xd6\x7f\x1f\xd1\x87\x12\xce\x14\xd2\x6d\x26\x89\xd3\x77\xd3\x20\xfb\x8e\x25\xea\x4d\xa3\xf3\x89\x4e\x57\xee\xe0\x02\xef\xc2\xeb\x8a\x22\x48\xf0\x74\xee\x70\x1a\x26\x76\x3a\x1b\x0d\x37\xd2\x1d\x80\xa0\x0e\x52\x1c\xea\xa9\x14\x72\x43\x15\xb0\xcb\x9f\x8f\x41\x43\x49\xb3\xdd\x71\x51\xf1\xe8\xd2\xf0\xce\x16\x06\xf6\x53\xcb\xfd\x2e\x29\x58\xfa\x25\x4b\xb3\x15\x77\x7a\x89\xd5\xa5\x4f\xe8\x54\xa4\x6f\x98\xd2\x48\x29\x32\x12\xbd\xb3\xaf\x57\x11\x4a\xb6\x44\xf8\x5d\x6d\xda\xaf\x9a\x9a\xf5\x9e\x65\x7b\x46\xed\x2e\x49\x53\x7b\xbb\xc2\x6b\x2e\x72\xd6\x9b\x8e\xa1\xe8\xe1\x52\x2f\x95\x8c\xd1\x55\x6d\xce\xa8\xd3\xb1\xe1\x86\x31\x3d\x63\x19\x9e\x75\x47\x2a\xe9\xbc\xc0\xbb\xb9\xf3\xb1\xbb\x1e\x23\x58\x1b\x96\x0e\xba\x6b\xe0\xc4\xdd\x60\x11\x5b\x45\x22\xe3\xd9\x0c\x9c\x12\x80\xb9\xfc\xd2\x18\xa4\xbb\xbd\x0c\xfe\x9a\x23\x18\x97\xc9\x1c\x74\x2f\x8d\xb5\x4a\xa3\x03\x0a\xbd\x61\xa5\x0d\x35\x8a\xaf\x99\x7a\x98\x90\x55\x5f\x72\x83\xeb\x89\x5f\x6d\x02\x78\x6f\x14\xb3\x5c\x26\x64\xbc\x02\x9a\x1b\xa4\x78\xca\xb2\xe2\xd9\x3d\x3c\x84\x13\xa5\xd8\xc3\x94\x6b\xfa\xef\xc7\x7b\x49\xbf\x63\xcd\x01\x74\xf5\x5a\x1f\xae\x09\x9c\xcd\x15\xd6\xa8\x17\xf8\xa0\x8b\x8c\x5e\x10\x39\x08\xda\xc1\x3c\xbb\x00\x74\xf2\x99\x77\x1f\x69\x31\xdb\xe4\x64\xc9\x41\x23\xc8\x79\xf3\x81\xe0\x79\x35\x00\xdd\x4a\x7b\xde\x7d\x74\xf2\xcc\xc3\x7b\x95\x64\xe7\x48\x4d\xb9\xa9\x2c\xad\x7d\x79\x01\xda\xdc\xf0\xea\x55\xce\x9d\xc2\xd0\xde\xfd\x35\x87\xa3\xd3\xcd\x56\xaf\x8a\x48\x85\xe3\xd4\x3a\x7a\x69\x31\x05\xef\xc1\x53\x0b\x21\x45\xaf\x73\x70\x7f\xbe\x45\x0a\x1e\x1d\x24\xa1\x8f\xce\xec\x2f\xb2\x07\xf2\xfd\x7d\xfb\xe9\xe3\x69\xfb\x6a\x21\xb3\x01\x4a\x0e\xc9\x21\x7b\x20\xa0\xde\x48\x9b\x39\xe9\x90\xb9\x70\x81\xa0\x87\x19\xe3\xed\x7a\x81\xe0\x94\x6a\x49\xbe\x84\x3b\x04\x81\xf4\x18\xc2\x1f\xd4\x01\xa3\x04\xe9\x39\xce\x04\x69\xbd\x92\xdb\xba\x3a\x25\xe0\x9f\xf1\x6e\xa8\x90\x75\x01\xe4\xd5\x62\xd1\xe5\x68\x38\x3c\xec\x6d\xa7\x20\xcb\xb0\xb6\x5a\xb8\x4b\x8f\xe6\x3e\xf2\xf0\x10\x8a\xc6\x2b\xc9\xbb\xc6\xe3\xf1\xd8\x7e\x99\xcd\x2c\xdf\x44\xaf\x5c\x31\x71\x8d\x95\x6d\x69\x08\xd9\xdf\x2d\xd3\x9d\x81\x59\xa1\xf2\x0d\xc6\xbd\xb1\x10\x44\x24\x59\xbf\xb5\x35\x7f\x8c\x6b\x57\x7f\x13\xde\x5a\x7a\x26\xa3\x2b\xf5\xcc\x2e\x1a\x3a\x9f\x53\x82\xdf\xc2\xdb\x8b\xf8\x42\xde\x4a\x24\x1c\x18\x67\x96\x73\x89\xc0\x8a\xe0\x15\x45\xff\xf1\x91\xdd\xf5\x2f\xa2\x7e\x68\x94\x14\xa8\xc8\x4a\x83\x9b\xff\xd0\x34\x66\x77\x6e\x7b\x19\xe6\xd2\x06\x6c\x37\x15\x33\xd8\x53\xff\xdf\x68\x98\x34\xd3\x8f\xfe\x9d\xbe\x16\x34\xd9\x4f\x23\x1e\xbd\xdd\x06\x70\xe1\x12\x0f\x97\xa2\x97\x48\xe2\xcd\x46\x37\x1a\xcf\x3f\x55\xc8\x13\xb2\x51\x74\x98\x94\xeb\xc1\x92\x84\xbc\x8f\x9c\x4b\xc9\xe3\x44\x0b\x43\xe4\x1d\x74\xb4\x80\x1b\x4a\xe4\x64\xd7\xc8\xfb\x4a\x3f\xf6\xcc\x66\xf0\x81\xa9\x1b\x3a\x18\x26\xa5\x34\xba\x65\xda\x5b\xb6\xd5\x31\xe0\x3d\xd7\x26\xb5\xe1\xa0\x75\x08\xaf\x23\xac\xf5\xec\x37\x4b\x17\xba\x73\x81\x70\x2f\xde\x40\x1e\x9d\x4e\xa7\x7b\xd1\x86\x93\x43\x3e\x75\xf4\x2a\x81\x5d\x1a\xcc\x6d\x18\xeb\x7b\x03\xdd\x1c\xb2\xba\x06\xa9\xf8\x35\x17\xac\x26\xc7\x47\x65\x38\xa6\x92\x73\xf1\x4c\x04\x31\x2c\xb3\xb3\xe7\xeb\x03\x57\x1d\x90\xc3\x58\x08\x0b\x9a\x81\xca\x16\x99\xcf\xe5\xcf\xb0\x2c\x6c\x43\x80\x46\x62\xba\xf5\xfb\xa5\x92\x6b\xb2\x9c\x76\xc7\xb9\xe0\x0d\xc3\xf5\x74\x53\x4e\xce\xb3\x65\x25\xf4\xae\x50\xf6\xf8\xf0\xd3\x53\xf7\x34\x65\x1f\x19\x77\xa7\xb5\xd7\x83\x5f\x4a\xaa\xb9\xa3\x7c\xc6\x5f\xf7\x91\xeb\x97\x21\x71\x11\xd2\x99\x48\x2f\xd1\x26\xf5\x47\x04\xd9\xb7\xd7\xb3\x25\x29\xaa\x8d\xdc\xce\xbb\x27\x40\xf9\xbf\x7b\x35\x01\x9a\x3a\xd3\x8c\xa3\x0f\x95\x2e\xbf\x57\xe1\xf2\xe2\xb2\x65\x5f\xd1\xf2\xcf\x94\x28\xd0\xf6\x85\x31\x4c\x9a\x7a\xfe\x82\x06\xca\xad\x52\xf4\xb0\xcc\x8b\xb1\xb8\x43\xb8\x11\xf2\xae\x0b\x91\x70\x85\x25\xdb\x6a\xb4\xe5\x0d\x1d\x9b\x61\xd5\xcb\xf5\xec\x4a\xde\xe2\x38\x53\xe0\x78\xf2\x97\x4c\xe8\x3b\x12\xe4\xde\xb8\xd6\xcf\x8e\xe7\x68\xda\x67\xb9\x61\x8e\xac\x7a\xe9\xa1\x1f\xb6\xdf\x0e\x75\x59\xed\x3b\xdf\xee\x14\x61\x0f\x5b\xdf\x5d\xe4\xfa\xa8\x94\xc6\x34\x4e\xcd\x19\xab\x8a\x24\x31\xcd\xbe\x35\xce\xb4\x73\xd0\xe3\x76\x3a\x9c\xd9\x9f\xaf\x55\x7d\xd3\xda\x6c\xbc\x94\xeb\x4d\x8d\xd4\x11\xba\x92\x71\x59\xb3\x6b\xeb\x4a\x1a\xcd\xb8\x27\xe2\xbc\xc3\x50\x83\x8b\xf7\xe6\x05\x9b\xf6\x17\xb2\xf6\xdf\x73\x16\xdc\xb4\xcd\x2f\xa1\x1a\x96\x57\xcf\x53\x75\x05\xf0\x4b\x34\x64\x1b\xe9\x85\x4b\x36\x2f\x49\xa0\xd6\x56\x9d\x7f\xda\x75\xda\x33\xc3\x0c\x0b\xde\x8b\x9f\xe7\xc1\x93\x5b\x78\xba\x2f\xe1\x82\x6a\x1f\x9b\xb3\x5b\xb7\x11\x28\x5b\xfb\x6e\x8a\xa0\x04\x8f\x1e\xa9\xd5\x68\x80\x07\xbe\x10\x78\xe6\x11\x70\x78\xb7\x80\x37\x47\xc0\xbf\xfd\x76\x38\x66\x66\xfc\x89\xf7\xbc\x27\x72\xd7\x3d\x85\x53\x0c\xe7\x6c\xef\x4a\x21\xbb\xc9\xf5\x7d\xc1\x7a\xcd\x8d\xbf\x1f\x9a\x04\x95\x51\xbf\x10\xea\x9b\x48\x4f\xa6\xbf\x4f\x3a\x78\x61\x32\x18\x4e\x05\x2f\x49\x04\x7d\x7f\x3f\xbf\xe1\x1b\x6b\xc1\x25\x6a\xcd\xc5\xb5\x15\xa9\x90\xed\xdb\x1d\x23\x9b\xa6\x26\x15\xfb\x2b\x72\x55\xdb\x34\x39\x37\xb0\x9f\x9c\x3b\x66\x8f\x1c\xbb\x3e\xc6\x81\x0f\xda\xff\x1e\x07\x8c\x0f\xca\xcc\x8a\x8b\x9b\x11\x3d\x2b\xe8\xc6\xa4\xac\x33\x47\x67\x83\x9e\x3b\x50\x5a\x17\x59\x70\x3a\xe1\x19\x67\x8f\x65\xaa\xf9\x70\xb5\x37\x70\x82\x0a\xf9\x13\xd3\x5c\x29\x9e\x3e\xac\x7a\x66\x53\x03\xe1\x28\xfe\x36\x10\xf6\x49\xa9\xf1\x63\x19\xbf\xc5\xc1\x18\x4e\x71\x9f\xfa\xe6\x17\x87\xf7\x54\xbe\x5d\xbd\x3f\x86\xff\xcc\x06\xff\x8e\x81\xa9\x36\x4c\x19\xfd\x3f\xdc\xac\x8a\xd1\xff\xa9\xfe\x2d\xe4\xbe\x85\x89\x80\xc2\x4d\xcd\x4a\x24\xec\x89\x5d\xf3\x05\x2e\xff\x42\x15\xbc\x38\x7d\x65\xfc\x10\x45\xd5\xab\xb5\xda\x37\xbe\x2a\x02\x4f\xca\xe0\x98\x89\xf8\x1a\xa8\xb9\x56\x43\xd5\xbb\xe3\xb2\x61\x4b\xd6\x38\xa5\x2b\xa8\x62\xf4\x67\xba\xff\x74\x4f\x38\x95\x6e\x2b\x80\xf9\x68\x02\x16\x39\xde\x4f\x77\x8b\x97\xdc\x3a\xb5\x9f\xd2\xdb\x1a\xf4\x8f\x46\x0a\xbc\xed\xdd\xba\x04\xcf\x4a\xec\x74\x48\x31\x17\xee\x82\x27\x87\xdd\xee\xe2\xeb\xc2\x88\x62\x74\xd3\xe5\x58\x74\x77\x4c\xbb\xe0\x07\x4c\x27\xed\xbb\xb3\xf0\x7c\x85\xf2\xde\x92\xd7\x08\xdb\x4d\x2d\x59\x95\xfd\x81\x5c\x80\x6a\x39\x70\xdd\x56\xf7\xc3\x1d\x7a\x2e\x18\xff\x64\x2e\xfc\x1e\xbf\x04\xec\xc6\xfd\x73\x3f\xb1\x5d\x5f\xb9\x64\x11\x3e\xed\xeb\xc0\xda\x17\x7c\x01\xc5\xcc\xaf\x87\x06\x7f\x71\x17\x3c\xb2\xcb\xfe\x90\xed\x2c\x7c\x5a\x9a\xfd\xf1\x60\xc9\xea\x3a\x2b\x97\xf0\xbd\x69\xf6\xd7\x83\xc1\xd3\xcc\xe3\x79\x2a\xcb\xcf\x17\x7d\x36\x28\xd2\x27\x2b\x4f\x9a\x9f\x9a\x21\x37\x2b\x54\xc0\x9a\xdb\x3d\xe9\x3f\x3b\x86\x2b\xf7\x1c\x34\xf9\x11\x9a\x23\x6b\x8b\xea\x27\x8f\x46\x1f\xdb\x67\xd9\x09\xc3\xf6\xef\x59\xa6\x1b\xf3\x6f\x0c\x6b\xef\xaf\x9d\xfa\x52\x73\xbf\x64\x22\x16\x56\x52\x9b\x48\x59\xbd\x5f\x9c\xf5\x7e\xc2\xf5\x14\xde\xcc\x36\x96\x33\xfc\x23\xae\x2c\x78\xce\x7e\xfc\xd3\xb3\xa1\x9f\x58\xee\x0e\xfe\x11\x00\x00\xff\xff\x1a\x5b\x7e\x50\xd3\x3a\x00\x00") func libsuiAgentTsBytes() ([]byte, error) { return bindataRead( @@ -1421,7 +1421,7 @@ func libsuiAgentTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "libsui/agent.ts", size: 14104, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "libsui/agent.ts", size: 15059, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1441,7 +1441,7 @@ func libsuiIndexTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "libsui/index.ts", size: 13049, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "libsui/index.ts", size: 13049, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1461,7 +1461,7 @@ func libsuiUtilsTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "libsui/utils.ts", size: 5959, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "libsui/utils.ts", size: 5959, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1481,7 +1481,7 @@ func libsuiYaoTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "libsui/yao.ts", size: 4338, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "libsui/yao.ts", size: 4338, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1501,7 +1501,7 @@ func publicIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "public/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "public/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1521,7 +1521,7 @@ func uiIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "ui/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "ui/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1541,7 +1541,7 @@ func xgenSetupIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "xgen/setup/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "xgen/setup/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1561,7 +1561,7 @@ func xgenV09IndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "xgen/v0.9/index.html", size: 14, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "xgen/v0.9/index.html", size: 14, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1581,7 +1581,7 @@ func xgenV10IndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "xgen/v1.0/index.html", size: 50, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "xgen/v1.0/index.html", size: 50, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1601,7 +1601,7 @@ func xgenV10Layouts__indexAsyncJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "xgen/v1.0/layouts__index.async.js", size: 71, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "xgen/v1.0/layouts__index.async.js", size: 71, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1621,7 +1621,7 @@ func xgenV10UmiJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "xgen/v1.0/umi.js", size: 71, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "xgen/v1.0/umi.js", size: 71, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1641,7 +1641,7 @@ func yaoDataIcons404Png() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/icons/404.png", size: 9342, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "yao/data/icons/404.png", size: 9342, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1661,7 +1661,7 @@ func yaoDataIconsIconIcns() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/icons/icon.icns", size: 67465, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "yao/data/icons/icon.icns", size: 67465, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1681,7 +1681,7 @@ func yaoDataIconsIconIco() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/icons/icon.ico", size: 54993, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "yao/data/icons/icon.ico", size: 54993, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1701,7 +1701,7 @@ func yaoDataIconsIconPng() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/icons/icon.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "yao/data/icons/icon.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1721,7 +1721,7 @@ func yaoDataIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/index.html", size: 282, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "yao/data/index.html", size: 282, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1741,7 +1741,7 @@ func yaoFieldsModelTransJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/fields/model.trans.json", size: 14938, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "yao/fields/model.trans.json", size: 14938, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1761,7 +1761,7 @@ func yaoLangsEnUsJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/en-US.json", size: 66, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "yao/langs/en-US.json", size: 66, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1781,7 +1781,7 @@ func yaoLangsZhCnGlobalYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/zh-cn/global.yml", size: 1762, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "yao/langs/zh-cn/global.yml", size: 1762, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1801,7 +1801,7 @@ func yaoLangsZhCnLoginsAdminLoginYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/zh-cn/logins/admin.login.yml", size: 94, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "yao/langs/zh-cn/logins/admin.login.yml", size: 94, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1821,7 +1821,7 @@ func yaoLangsZhCnLoginsUserLoginYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/zh-cn/logins/user.login.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "yao/langs/zh-cn/logins/user.login.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1841,7 +1841,7 @@ func yaoLangsZhHkGlobalYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/zh-hk/global.yml", size: 1762, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "yao/langs/zh-hk/global.yml", size: 1762, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1861,7 +1861,7 @@ func yaoLangsZhHkLoginsAdminLoginYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/zh-hk/logins/admin.login.yml", size: 94, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "yao/langs/zh-hk/logins/admin.login.yml", size: 94, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1881,7 +1881,7 @@ func yaoLangsZhHkLoginsUserLoginYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/zh-hk/logins/user.login.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "yao/langs/zh-hk/logins/user.login.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1901,7 +1901,7 @@ func yaoReleaseAppYaz() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/release/app.yaz", size: 181682, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} + info := bindataFileInfo{name: "yao/release/app.yaz", size: 181682, mode: os.FileMode(420), modTime: time.Unix(1746757646, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/neo/assistant/api.go b/neo/assistant/api.go index d52849ac..60e01702 100644 --- a/neo/assistant/api.go +++ b/neo/assistant/api.go @@ -114,23 +114,20 @@ func (ast *Assistant) execute(c *gin.Context, ctx chatctx.Context, userInput int // Has result return directly if res != nil && res.Result != nil { + output := chatMessage.New(). + Assistant(ast.ID, ast.Name, ast.Avatar). + SetResult(res.Result). + Done() + // Has callback function if len(callback) > 0 { - output := chatMessage.New() - output.Result = res.Result output.Callback(callback[0]).Write(c.Writer) + return res.Result, nil } - - // Return the result directly + output.Write(c.Writer) return res.Result, nil } - // Handle next action - // It's not used, return the new assistant_id and chat_id - // if res != nil && res.Next != nil { - // return res.Next.Execute(c, ctx, contents) - // } - // Switch to the new assistant if necessary if res != nil && res.AssistantID != "" && res.AssistantID != ctx.AssistantID { newAst, err := Get(res.AssistantID) @@ -171,38 +168,6 @@ func (ast *Assistant) execute(c *gin.Context, ctx chatctx.Context, userInput int func (next *NextAction) Execute(c *gin.Context, ctx chatctx.Context, contents *chatMessage.Contents, callback ...interface{}) (interface{}, error) { switch next.Action { - // It's not used, because the process could be executed in the hook script - // It may remove in the future - // case "process": - // if next.Payload == nil { - // return fmt.Errorf("payload is required") - // } - - // name, ok := next.Payload["name"].(string) - // if !ok { - // return fmt.Errorf("process name should be string") - // } - - // args := []interface{}{} - // if v, ok := next.Payload["args"].([]interface{}); ok { - // args = v - // } - - // // Add context and writer to args - // args = append(args, ctx, c.Writer) - // p, err := process.Of(name, args...) - // if err != nil { - // return fmt.Errorf("get process error: %s", err.Error()) - // } - - // err = p.Execute() - // if err != nil { - // return fmt.Errorf("execute process error: %s", err.Error()) - // } - // defer p.Release() - - // return nil - case "assistant": if next.Payload == nil { return nil, fmt.Errorf("payload is required") @@ -535,29 +500,6 @@ func (ast *Assistant) streamChat( } }) - // Handle stream - // The stream hook is not used, because there's no need to handle the stream output - // if some thing need to be handled in future, we can use the stream hook again - // ------------------------------------------------------------------------------ - // res, err := ast.HookStream(c, ctx, messages, msg, contents) - // if err == nil && res != nil { - - // if res.Next != nil { - // err = res.Next.Execute(c, ctx, contents) - // if err != nil { - // chatMessage.New().Error(err.Error()).Done().Write(c.Writer) - // } - - // done <- true - // return 0 // break - // } - - // if res.Silent { - // return 1 // continue - // } - // } - // ------------------------------------------------------------------------------ - // Write the message to the stream msgType := msg.Type if msgType == "tool_calls_native" { @@ -650,7 +592,7 @@ func (ast *Assistant) streamChat( // has result if res != nil && res.Result != nil && cb != nil { - output.Result = res.Result // Add the result to the output message + output.SetResult(res.Result) } output.Callback(cb).Write(c.Writer) diff --git a/neo/assistant/hooks.go b/neo/assistant/hooks.go index acf39281..e2814160 100644 --- a/neo/assistant/hooks.go +++ b/neo/assistant/hooks.go @@ -75,70 +75,6 @@ func (ast *Assistant) HookCreate(c *gin.Context, context chatctx.Context, input return response, nil } -// HookStream Handle streaming response from LLM -func (ast *Assistant) HookStream(c *gin.Context, context chatctx.Context, input []message.Message, msg *message.Message, contents *chatMessage.Contents) (*ResHookStream, error) { - - // Create timeout context - ctx, cancel := ast.createTimeoutContext(5 * time.Second) - defer cancel() - - v, err := ast.call(ctx, "Stream", c, contents, context, input, msg, contents.JSON()) - if err != nil { - if err.Error() == HookErrorMethodNotFound { - return nil, nil - } - return nil, err - } - - response := &ResHookStream{} - switch v := v.(type) { - case map[string]interface{}: - if res, ok := v["output"].(string); ok { - vv := []message.Data{} - err := jsoniter.UnmarshalFromString(res, &vv) - if err != nil { - return nil, err - } - response.Output = vv - } - - if res, ok := v["output"].([]interface{}); ok { - vv := []message.Data{} - raw, _ := jsoniter.MarshalToString(res) - err := jsoniter.UnmarshalFromString(raw, &vv) - if err != nil { - return nil, err - } - response.Output = vv - } - - if res, ok := v["next"].(map[string]interface{}); ok { - response.Next = &NextAction{} - if name, ok := res["action"].(string); ok { - response.Next.Action = name - } - if payload, ok := res["payload"].(map[string]interface{}); ok { - response.Next.Payload = payload - } - } - - // Custom silent from hook - if res, ok := v["silent"].(bool); ok { - response.Silent = res - } - - case string: - vv := []message.Data{} - err := jsoniter.UnmarshalFromString(v, &vv) - if err != nil { - return nil, err - } - response.Output = vv - } - - return response, nil -} - // HookRetry Handle retry of assistant response func (ast *Assistant) HookRetry(c *gin.Context, context chatctx.Context, input []message.Message, contents *chatMessage.Contents, errmsg string) (interface{}, error) { ctx := ast.createBackgroundContext() diff --git a/neo/message/message.go b/neo/message/message.go index f1a5c87b..772544a0 100644 --- a/neo/message/message.go +++ b/neo/message/message.go @@ -396,6 +396,13 @@ func (m *Message) Error(message interface{}) *Message { return m } +// SetResult set the result +func (m *Message) SetResult(result any) *Message { + m.Result = result + m.Type = "result" // set the type to result + return m +} + // SetContent set the content func (m *Message) SetContent(content string) *Message { if strings.HasPrefix(content, "{") && strings.HasSuffix(content, "}") { @@ -432,7 +439,7 @@ func (m *Message) AppendTo(contents *Contents) *Message { } return m - case "loading", "error", "action", "progress", "plan": // Ignore progress, loading, plan and error messages + case "loading", "error", "action", "progress", "plan", "result": // Ignore progress, loading, plan and error messages return m default: diff --git a/sui/libsui/agent.ts b/sui/libsui/agent.ts index 8a3c38ea..12d0a58c 100644 --- a/sui/libsui/agent.ts +++ b/sui/libsui/agent.ts @@ -19,6 +19,7 @@ interface AgentMessage { tool_id?: string; new?: boolean; delta?: boolean; + result?: any; previous_assistant_id?: string; } @@ -142,294 +143,310 @@ class Agent { * @param args Additional arguments to pass to the agent */ async Call(input: AgentInput, ...args: any[]): Promise { - const messages: AgentMessage[] = []; - let lastAssistant = { - assistant_id: null as string | null, - assistant_name: null as string | null, - assistant_avatar: null as string | null, - }; + return new Promise((resolve, reject) => { + const messages: AgentMessage[] = []; + let lastAssistant = { + assistant_id: null as string | null, + assistant_name: null as string | null, + assistant_avatar: null as string | null, + }; - // Process input content - let content: AgentInputContent; - if (typeof input === "string") { - content = { text: input }; - } else { - content = { text: input.text }; - if (input.attachments && input.attachments.length > 0) { - content.attachments = input.attachments.map((attachment) => ({ - name: attachment.name, - url: attachment.url, - type: attachment.type, - content_type: attachment.content_type, - bytes: attachment.bytes, - created_at: attachment.created_at, - file_id: attachment.file_id, - chat_id: attachment.chat_id, - assistant_id: attachment.assistant_id, - description: attachment.description, - })); - } - } - - // Add context to the content - const context = { ...this.context, args }; - const contentRaw = encodeURIComponent(JSON.stringify(content)); - const contextRaw = encodeURIComponent(JSON.stringify(context)); - const token = this.token; - const silent = this.silent ? "true" : "false"; - const history_visible = this.history_visible ? "true" : "false"; - const chatId = this.chat_id || this.makeChatID(); - const assistantParam = `&assistant_id=${this.assistant_id}`; - const status_endpoint = `${this.host}/status?content=${contentRaw}&context=${contextRaw}&token=${token}&chat_id=${chatId}${assistantParam}`; - const endpoint = `${this.host}?client_type=jssdk&content=${contentRaw}&context=${contextRaw}&token=${token}&silent=${silent}&history_visible=${history_visible}&chat_id=${chatId}${assistantParam}`; - - const handleError = async (error: any) => { - try { - const response = await fetch(status_endpoint, { - credentials: "include", - headers: { Accept: "application/json" }, - }); - - if (response.status === 200 || response.status === 201) return; - - const data = await response.json().catch(() => ({ - message: `HTTP ${response.status}`, - })); - - let errorMessage = "Network error, please try again later"; - if (data?.message) { - errorMessage = data.message; - } else if (error.message?.includes("401")) { - errorMessage = "Session expired: Please login again"; - } else if (error.message?.includes("403")) { - errorMessage = - "Access denied: Please check your permissions or login again"; - } else if (error.message?.includes("500")) { - errorMessage = "Server error: The service is temporarily unavailable"; - } else if (error.message?.includes("404")) { - errorMessage = - "AI service not found: Please check your configuration"; - } else if (error.name === "TypeError") { - errorMessage = - "Connection failed: Please check your network connection"; - } - - const messageHandler = this.events["message"] as MessageHandler; - if (messageHandler) { - messageHandler({ - text: errorMessage, - type: "error", - is_neo: true, - done: true, - }); - } - } catch (statusError) { - const messageHandler = this.events["message"] as MessageHandler; - if (messageHandler) { - messageHandler({ - text: "Service unavailable, please try again later", - type: "error", - is_neo: true, - done: true, - }); + // Process input content + let content: AgentInputContent; + if (typeof input === "string") { + content = { text: input }; + } else { + content = { text: input.text }; + if (input.attachments && input.attachments.length > 0) { + content.attachments = input.attachments.map((attachment) => ({ + name: attachment.name, + url: attachment.url, + type: attachment.type, + content_type: attachment.content_type, + bytes: attachment.bytes, + created_at: attachment.created_at, + file_id: attachment.file_id, + chat_id: attachment.chat_id, + assistant_id: attachment.assistant_id, + description: attachment.description, + })); } } - }; - try { - let last_type: string | null = null; - const es = new EventSource(endpoint, { withCredentials: true }); - this.es = es; + // Add context to the content + const context = { ...this.context, args }; + const contentRaw = encodeURIComponent(JSON.stringify(content)); + const contextRaw = encodeURIComponent(JSON.stringify(context)); + const token = this.token; + const silent = this.silent ? "true" : "false"; + const history_visible = this.history_visible ? "true" : "false"; + const chatId = this.chat_id || this.makeChatID(); + const assistantParam = `&assistant_id=${this.assistant_id}`; + const status_endpoint = `${this.host}/status?content=${contentRaw}&context=${contextRaw}&token=${token}&chat_id=${chatId}${assistantParam}`; + const endpoint = `${this.host}?client_type=jssdk&content=${contentRaw}&context=${contextRaw}&token=${token}&silent=${silent}&history_visible=${history_visible}&chat_id=${chatId}${assistantParam}`; - es.onopen = () => {}; - es.onmessage = ({ data }: { data: string }) => { + const handleError = async (error: any) => { try { - const formated_data = JSON.parse(data); - if (!formated_data) return; + const response = await fetch(status_endpoint, { + credentials: "include", + headers: { Accept: "application/json" }, + }); + + if (response.status === 200 || response.status === 201) return; + + const data = await response.json().catch(() => ({ + message: `HTTP ${response.status}`, + })); + + let errorMessage = "Network error, please try again later"; + if (data?.message) { + errorMessage = data.message; + } else if (error.message?.includes("401")) { + errorMessage = "Session expired: Please login again"; + } else if (error.message?.includes("403")) { + errorMessage = + "Access denied: Please check your permissions or login again"; + } else if (error.message?.includes("500")) { + errorMessage = + "Server error: The service is temporarily unavailable"; + } else if (error.message?.includes("404")) { + errorMessage = + "AI service not found: Please check your configuration"; + } else if (error.name === "TypeError") { + errorMessage = + "Connection failed: Please check your network connection"; + } const messageHandler = this.events["message"] as MessageHandler; - if (!messageHandler) return; + if (messageHandler) { + messageHandler({ + text: errorMessage, + type: "error", + is_neo: true, + done: true, + }); + } - const { - tool_id, - begin, - type, - end, - text, - props, - done, - assistant_id, - assistant_name, - assistant_avatar, - new: is_new, - delta, - } = formated_data; + return reject(error); + } catch (statusError) { + const messageHandler = this.events["message"] as MessageHandler; + if (messageHandler) { + messageHandler({ + text: "Service unavailable, please try again later", + type: "error", + is_neo: true, + done: true, + }); + } - // Handle action message type - if (type === "action") { - const { namespace, primary, data_item, action, extra } = - props || {}; - if (action && Array.isArray(action)) { - const actionMessage = { + return reject(statusError); + } + }; + + try { + let last_type: string | null = null; + const es = new EventSource(endpoint, { withCredentials: true }); + this.es = es; + + es.onopen = () => {}; + es.onmessage = ({ data }: { data: string }) => { + try { + const formated_data = JSON.parse(data); + if (!formated_data) return; + + const messageHandler = this.events["message"] as MessageHandler; + if (!messageHandler) return; + + const { + tool_id, + begin, + type, + end, + text, + props, + done, + assistant_id, + assistant_name, + assistant_avatar, + new: is_new, + delta, + result, + } = formated_data; + + // Handle action message type + if (type === "action") { + const { namespace, primary, data_item, action, extra } = + props || {}; + if (action && Array.isArray(action)) { + const actionMessage = { + text: text || "", + type: "action", + props: { + namespace: namespace || "chat", + primary: primary || "id", + data_item: data_item || {}, + action, + extra, + }, + is_neo: true, + done: !!done, + }; + + messages.push(actionMessage); + messageHandler(actionMessage); + + if (done) { + const doneHandler = this.events["done"] as DoneHandler; + doneHandler?.(messages); + es.close(); + } + return resolve(result); + } + } + + // Check if we need to create a new message + const shouldCreateNewMessage = + (type !== last_type && + (!done || (done === true && (text || props)))) || // if type changed or done is true and there is text or props + messages.length === 0 || + (assistant_id && + messages[messages.length - 1].assistant_id !== assistant_id) || + (is_new && !delta); // Only create new message if it's new and not a delta update + + // Update last type + last_type = type; + + // Update assistant information + if (assistant_id) lastAssistant.assistant_id = assistant_id; + if (assistant_name) lastAssistant.assistant_name = assistant_name; + if (assistant_avatar) + lastAssistant.assistant_avatar = assistant_avatar; + + if (shouldCreateNewMessage) { + // Mark the last message as done if it exists + if (messages.length > 0 && messages[messages.length - 1].is_neo) { + messages[messages.length - 1] = { + ...messages[messages.length - 1], + done: true, + }; + } + + // Create new message with all original properties + const newMessage = { text: text || "", - type: "action", - props: { - namespace: namespace || "chat", - primary: primary || "id", - data_item: data_item || {}, - action, - extra, - }, + type: type || "text", + props, is_neo: true, - done: !!done, + new: is_new, // Only set new if it's from the original message + tool_id, + result: result, + assistant_id: lastAssistant.assistant_id || undefined, + assistant_name: lastAssistant.assistant_name || undefined, + assistant_avatar: lastAssistant.assistant_avatar || undefined, }; - messages.push(actionMessage); - messageHandler(actionMessage); + messages.push(newMessage); + messageHandler(newMessage); + // If the message is done, close the event source if (done) { const doneHandler = this.events["done"] as DoneHandler; doneHandler?.(messages); es.close(); + return resolve(result); } return; } - } - // Check if we need to create a new message - const shouldCreateNewMessage = - (type !== last_type && - (!done || (done === true && (text || props)))) || // if type changed or done is true and there is text or props - messages.length === 0 || - (assistant_id && - messages[messages.length - 1].assistant_id !== assistant_id) || - (is_new && !delta); // Only create new message if it's new and not a delta update + // Get current message (we know it exists because we checked messages.length above) + const current_answer = messages[messages.length - 1]; - // Update last type - last_type = type; - - // Update assistant information - if (assistant_id) lastAssistant.assistant_id = assistant_id; - if (assistant_name) lastAssistant.assistant_name = assistant_name; - if (assistant_avatar) - lastAssistant.assistant_avatar = assistant_avatar; - - if (shouldCreateNewMessage) { - // Mark the last message as done if it exists - if (messages.length > 0 && messages[messages.length - 1].is_neo) { - messages[messages.length - 1] = { - ...messages[messages.length - 1], - done: true, - }; + // Set previous assistant id + if (messages.length > 1) { + const previous_message = messages[messages.length - 2]; + if (previous_message.assistant_id) { + current_answer.previous_assistant_id = + previous_message.assistant_id; + } } - // Create new message with all original properties - const newMessage = { - text: text || "", - type: type || "text", - props, - is_neo: true, - new: is_new, // Only set new if it's from the original message - tool_id, - assistant_id: lastAssistant.assistant_id || undefined, - assistant_name: lastAssistant.assistant_name || undefined, - assistant_avatar: lastAssistant.assistant_avatar || undefined, - }; - - messages.push(newMessage); - messageHandler(newMessage); - - // If the message is done, close the event source + // Handle message completion (done flag is set) if (done) { + if (text) { + current_answer.text = text; + } + if (type) { + current_answer.type = type; + } + if (props) { + current_answer.props = props; + } + + // Set result if available + if (result) { + current_answer.result = result; + } + + // Mark all previous neo messages as done + for (let i = messages.length - 1; i >= 0; i--) { + const message = messages[i]; + if (message.is_neo) { + if (message.done) break; + messages[i] = { ...message, done: true }; + } + } + const doneHandler = this.events["done"] as DoneHandler; doneHandler?.(messages); es.close(); + return resolve(result); } - return; - } - // Get current message (we know it exists because we checked messages.length above) - const current_answer = messages[messages.length - 1]; + // Skip processing if no content to update + if (!text && !props && !type) return; - // Set previous assistant id - if (messages.length > 1) { - const previous_message = messages[messages.length - 2]; - if (previous_message.assistant_id) { - current_answer.previous_assistant_id = - previous_message.assistant_id; - } - } - - // Handle message completion (done flag is set) - if (done) { - if (text) { - current_answer.text = text; - } - if (type) { - current_answer.type = type; - } + // Update props if available if (props) { - current_answer.props = props; - } - - // Mark all previous neo messages as done - for (let i = messages.length - 1; i >= 0; i--) { - const message = messages[i]; - if (message.is_neo) { - if (message.done) break; - messages[i] = { ...message, done: true }; + if (type === "think" || type === "tool") { + current_answer.props = { + ...(current_answer.props || {}), + id: tool_id, + begin, + end, + }; + } else { + current_answer.props = props; } } - const doneHandler = this.events["done"] as DoneHandler; - doneHandler?.(messages); - es.close(); - return; - } - - // Skip processing if no content to update - if (!text && !props && !type) return; - - // Update props if available - if (props) { - if (type === "think" || type === "tool") { - current_answer.props = { - ...(current_answer.props || {}), - id: tool_id, - begin, - end, - }; - } else { - current_answer.props = props; - } - } - - // Handle text content - if (text) { - if (delta) { - current_answer.text = (current_answer.text || "") + text; - if (text.startsWith("\r")) { - current_answer.text = text.replace("\r", ""); + // Handle text content + if (text) { + if (delta) { + current_answer.text = (current_answer.text || "") + text; + if (text.startsWith("\r")) { + current_answer.text = text.replace("\r", ""); + } + } else { + current_answer.text = text; } - } else { - current_answer.text = text; } + + // Send current message to handler + messageHandler(current_answer); + } catch (err) { + console.error("Failed to parse message:", err); + reject(err); } + }; - // Send current message to handler - messageHandler(current_answer); - } catch (err) { - console.error("Failed to parse message:", err); - } - }; - - es.onerror = (ev) => { - handleError(ev); - es.close(); - }; - } catch (error) { - handleError(error); - } + es.onerror = (ev) => { + handleError(ev); + es.close(); + }; + } catch (error) { + handleError(error); + } + }); } }