diff --git a/data/bindata.go b/data/bindata.go index 46228ab4..f40d39f7 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(1746678055, 0)} + info := bindataFileInfo{name: "init/.env", size: 219, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/.vscode/settings.json", size: 4666, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/console.d.ts", size: 221, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/exception.d.ts", size: 738, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/fs.d.ts", size: 8554, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/global.d.ts", size: 1759, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/http.d.ts", size: 6179, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/io.d.ts", size: 587, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/log.d.ts", size: 1692, mode: os.FileMode(493), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/neo.d.ts", size: 3750, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/process/fs.d.ts", size: 11133, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/process/http.d.ts", size: 5653, mode: os.FileMode(493), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/process/model.d.ts", size: 6656, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/process.d.ts", size: 23165, mode: os.FileMode(493), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/query.d.ts", size: 6124, mode: os.FileMode(493), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/store.d.ts", size: 2251, mode: os.FileMode(493), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/sui.d.ts", size: 1713, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/time.d.ts", size: 711, mode: os.FileMode(493), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime.d.ts", size: 424, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/.vscode/types/sui.d.ts", size: 8931, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/app.yao", size: 3115, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/data/README.md", size: 41, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__assets/README.md", size: 33, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__assets/images/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__assets/images/logos/logo_color.svg", size: 2909, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__assets/images/logos/wordmark.svg", size: 3615, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__data.json", size: 30, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__document.html", size: 492, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/data/templates/default/index/index.css", size: 2896, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/data/templates/default/index/index.html", size: 2361, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/data/templates/default/index/index.json", size: 31, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/db/README.md", size: 84, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/flows/menu.flow.yao", size: 813, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/forms/account.form.yao", size: 1194, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/icons/app.icns", size: 67465, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/icons/app.ico", size: 54993, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/logins/admin.login.yao", size: 302, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/logs/README.md", size: 28, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/models/admin/user.mod.yao", size: 6416, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/models/tests/pet.mod.yao", size: 525, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/neo/neo.yml", size: 724, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/public/README.md", size: 108, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/public/assets/README.md", size: 33, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/public/assets/images/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/public/assets/images/logos/logo_color.svg", size: 2909, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/public/assets/images/logos/wordmark.svg", size: 3615, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/public/assets/libsui.min.js", size: 12569, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/public/assets/libsui.min.js.map", size: 38553, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/public/index.cfg", size: 85, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/public/index.sui", size: 5682, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/scripts/account.ts", size: 2521, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/scripts/ai/neo.ts", size: 375, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/scripts/tests.ts", size: 1044, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/scripts/utils.ts", size: 1230, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/suis/web.sui.yao", size: 675, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/tables/account.tab.yao", size: 5597, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "init/tsconfig.json", size: 178, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _libsuiAgentTs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x5b\xdd\x73\x1b\x39\x72\x7f\xd7\x5f\xd1\x66\xb9\x94\x19\x87\x4b\xca\x7b\x77\x79\xa0\x96\xd6\xaa\xe4\xbd\x5b\x5d\xca\x6b\x97\xe5\xab\x54\xca\x51\xc9\xd0\x4c\x93\xc4\x69\x08\xcc\x01\xa0\x3e\x22\xf1\x7f\x4f\xa1\x81\x99\x01\x30\x43\x4a\x4e\x6d\x52\xe7\x17\x73\x80\x46\xa3\xd1\x1f\xbf\x6e\x7c\x68\xfa\xe6\xcd\x01\xbc\x81\xff\x64\x12\x4e\xcf\xe1\x74\x89\xc2\xc0\xa7\x8d\x42\xf8\x2b\xbb\x65\x17\x85\xe2\xb5\x81\x8b\xf7\xff\x6e\x69\x7e\x66\x1b\xb3\x92\x0a\x3e\xb0\xfb\x9f\xd6\xec\xfe\x67\xfe\x8f\x1b\x36\x29\xe4\xfa\x1d\x75\xae\x19\x17\x86\x71\x81\x0a\x56\xc6\xd4\x7a\x36\x9d\x3e\x30\xc9\xea\x5a\x5b\x9a\x03\x78\x33\x3d\x38\xf0\x93\x7d\x40\xad\xd9\x12\x41\x1b\xb5\x29\x8c\x9d\x6c\x21\x15\x30\x9a\x5b\xa1\xae\xa5\xd0\xa8\x69\x04\x17\x06\xd5\x82\x15\xe8\x24\x6b\x06\x3e\x1e\x00\x18\xbc\x37\x33\xcb\x82\x8b\xe5\xb1\xfd\x7e\xa8\xf1\x24\x6c\x28\xa5\xb0\x0d\xd7\x52\x56\xc8\x84\x6d\xe1\xfa\x4a\xa0\x8c\xdb\x98\xd6\x5c\x1b\x26\xcc\x15\x2f\xa3\xe1\x5d\x87\x60\x6b\xdc\xd1\xc5\x6e\x99\x61\x2a\xea\xac\x95\xac\xf5\xc9\x0c\x3e\x63\x21\x55\xf9\x93\xeb\x18\x03\x13\x0f\xef\x48\x4c\x29\xab\x74\x2a\x81\x77\xb1\x50\x25\x56\x86\xc5\x4d\xb5\xc2\x5b\x2e\x37\xfa\x6a\x87\xc0\xdb\x56\xbb\xef\xa5\x40\xc0\x5b\xab\xcc\x92\x19\xd6\x69\x99\x34\x6a\xd5\xe4\x94\x69\xe9\xde\x5b\x82\x79\xa4\xdc\xaf\x97\xc7\x2d\xab\x5f\x88\xcb\x8a\x89\xb2\x42\x05\x8b\x8d\x28\x0c\x97\x82\x54\x9d\xda\xc7\x8f\xfe\xd5\xd3\x5a\x0b\x65\x6b\xd7\x36\x8b\xf8\xe7\x33\xb8\x95\xbc\x24\x89\xbb\xe1\x56\x98\xa1\xb1\x7a\x16\x0b\x1b\x8e\x8e\x84\x24\x99\xc0\xac\x98\x81\x82\x09\xb8\x46\xa8\xb8\x36\x28\xb0\x04\x23\x93\x95\xbb\x11\x73\x18\xf9\x49\x46\xf0\x04\x23\xeb\x2e\xa3\x1d\x4b\xd7\xa0\xc8\x9a\x34\x4b\xb2\x70\x22\xfc\xb5\xa1\xb3\xb2\x7b\xae\x27\xb3\x44\x29\x81\x53\x06\xcb\xa5\xa5\x14\x15\xd3\xda\x47\xdf\x23\x59\x9b\xdf\x32\x83\xb0\x92\xda\xc4\xce\xe5\xda\x8d\xbc\x41\x31\xd4\x41\x76\xd7\xb3\x58\xaa\x90\x20\x74\x9f\x21\x06\xc5\x8a\xf5\x42\xa1\x65\xde\x30\xbe\x90\x1b\x55\x20\x3c\x81\xd8\x54\x55\x34\x5a\x0a\x17\x97\x83\xde\x7f\x00\x40\xda\x05\x78\xe3\xd7\x5a\x48\xe1\xdc\x53\x2a\xd7\xfc\x73\xcd\x14\x5b\x83\xac\xc9\xd1\x1c\x11\x17\xdc\x70\x56\xf1\xff\x66\xd4\xe8\xfa\x34\xd1\x4f\x0f\x20\xe4\x91\x0d\xad\x6e\xec\x47\x78\x4f\xfa\x48\x1f\x39\xa9\x19\xc0\xac\xb8\x9e\x58\x2d\xc3\xdc\x93\xb9\xaf\xa7\x27\x18\x4d\x59\xcd\xa7\x57\x57\x0f\x4c\x4e\x05\xca\xd1\x71\x37\x80\xd4\xdf\x8d\xa0\xcf\xa0\xdb\x19\x01\xe6\xf0\xb8\x0d\x5a\x43\xd9\x60\x1e\x19\x22\xa0\xf2\xfa\xef\x98\xfb\x86\x90\xbd\x65\xdd\x68\xbe\x19\xe6\x14\x1f\x0c\xf3\x0d\x4f\x4f\x5e\x8a\x6d\xa4\xfe\xbf\xa0\x40\x45\xfe\x40\x16\x87\xf3\xf7\x5e\xff\x0a\xcd\x46\x09\x0d\xa7\xb0\x11\xfc\x1f\x1b\x6c\xba\x81\x0b\x30\x2b\x42\xea\x35\x33\x20\x17\xce\x53\xbe\x1a\xbe\x46\x6d\xd8\xba\xbe\xbc\xfa\xaa\x98\x28\xe5\xfa\xb2\xb5\x4c\xe3\x15\x6b\x76\x83\x67\x2b\x66\xce\xdf\x67\x79\x63\x15\xaf\x7f\x32\x1e\xb8\x81\x30\x87\x0f\xcc\xac\x26\xee\x2b\xcb\x27\x46\x5e\x10\x6d\xf6\x87\x7f\xcb\x27\x7a\x73\xed\x46\x66\x3f\x8e\xe1\xed\x9f\xf2\xe3\x60\x3c\x29\xfb\x3d\x33\x38\x11\xf2\x2e\xf3\x5d\x6e\x25\xf0\x8d\xe4\x7c\xfd\x68\xf4\xf6\xea\xf5\xa3\xe3\xbd\xfd\xd6\xd7\xc8\x67\x5c\x5a\xc0\x50\xc0\x84\x47\x4f\x1f\xfc\x91\x63\xba\x9e\x0e\x72\xc0\x48\x0f\x34\x94\xc3\xb2\x0e\x52\xa4\xf2\x98\x92\x47\x0c\x1a\x30\xfd\x73\x0b\xa6\xd2\xb7\x91\x7a\x89\x7f\x62\x8a\x2f\x2b\x6c\x23\xc1\x7a\x4c\xe1\xf2\x65\xb1\x62\x5c\x70\xb1\x6c\xd5\xfd\x51\xfc\xf4\x0b\xe0\xbd\x41\x51\xea\x00\xe8\xde\x65\xa4\x0e\xe2\x3c\x83\x5f\xc6\xf4\xe5\xc5\x98\x41\x37\xa2\x13\xfd\x24\x45\xf3\x08\xb0\x0e\x00\xf2\x59\x80\x55\x00\x7c\x01\x99\x53\xcc\x7c\x1e\xa0\x6a\x13\x63\x51\x54\x4c\x7c\x2f\xcc\x5b\x55\x30\x3d\x00\x94\x00\x5b\xc0\x4a\x63\xca\xdc\xa9\x74\x90\xb3\xed\x8a\xd9\x46\x30\x4b\x3c\x43\xcf\xb0\x63\xfb\x7e\x70\x66\x15\x5c\x91\x31\xa8\x22\x69\xd5\xeb\x3a\xb2\x3c\x58\xb4\x0f\xc7\x54\x1c\x3d\x29\x2a\xa9\xb1\x71\xc4\xe1\xb0\xdd\x0e\xcc\x5c\xb9\x79\x9b\x42\x2c\x72\x1c\x2e\xea\x8d\x81\x2f\x36\xa6\x1b\x15\x4a\xe5\x5b\xe5\xf5\xdf\xb1\x30\x70\xc7\xcd\x8a\xea\x22\x60\xa2\xf4\x40\xc0\x2a\x60\xc6\xb0\x62\xb5\xb6\x3a\x8a\x38\x32\xb5\xd4\x70\x5a\x96\xbc\xa1\x53\xcb\x0d\x51\x59\x9f\xac\x6d\x42\x32\x72\x40\x0f\x4c\x3f\x88\x82\x84\xcd\x68\x76\xef\x0b\xe7\xf6\xf7\x18\x26\x93\x89\xe5\x3b\xb3\x90\xff\xf5\x32\x9f\xc1\x27\x25\xd7\x5c\xe3\x4f\x36\x05\x44\x41\x9f\x64\xf8\xb6\xfc\x80\x39\xd8\x1a\xc4\x12\x56\x68\xa0\x62\xda\x9c\x36\x58\x69\x31\xd5\xeb\x34\x86\x7a\xab\x57\x6b\x71\x0f\x2e\x2e\x33\x8d\x7b\xa4\xb6\x94\x7b\x31\xb1\x2b\xee\xf6\x92\x6f\x29\xa9\x01\x4c\xa7\x76\x9d\x05\x6a\xed\x2d\x42\xf0\xeb\x94\x46\xab\xf0\xdf\xa1\xae\xce\x5c\xd3\x71\xe7\x4d\x0f\x35\xca\x85\x67\x40\xce\xee\x66\x0c\xdc\xdd\xb3\xb1\x6a\xf0\x05\xb0\xa3\xde\x46\x21\xf3\x0c\xf5\x84\x5c\x64\xdb\x38\xa7\x9d\xda\xb5\x07\x8e\x02\x87\x87\xd0\x6b\x9c\x54\x28\x96\x66\x05\xef\xe0\xa8\x13\xa9\x9d\x26\x1a\x3e\x1f\x18\xbd\x66\x75\x96\x75\x0d\x39\xcc\xdf\x41\xd6\xb1\x01\x70\xd6\xe9\x28\x26\xb6\x61\x1c\x10\x6c\x54\x15\xf5\x6f\x54\x15\x76\x5b\x05\x46\xfd\xb6\x21\x24\xf0\x92\x5e\xf5\x08\xc3\x8e\x70\xc0\xf5\x83\xb1\x0e\x1a\x50\x52\x4b\xc4\x53\x21\x33\x58\x5e\x31\x13\x73\x6c\x9b\x43\xe2\x05\xaf\x90\xfc\x35\xa0\xf4\x6d\x11\x4f\x97\xf3\x63\x86\xae\x2d\x24\x8b\x43\x20\xa0\x0d\x3b\xc2\x01\x25\x6a\xda\xd1\x51\x35\x14\xd0\x07\xed\x1d\xf9\x36\x6f\xf1\x6b\xeb\x11\xab\xf1\xf5\xd3\xb2\x6c\x4a\xbd\x06\x23\x42\x87\x77\xf1\xdd\x95\x24\x8f\x16\x15\xc2\x32\x65\xec\xb0\x67\x7b\x9c\x92\x0b\xf3\x99\xdd\xc1\x1c\x50\x14\xb2\xc4\xbf\x7d\x3e\x3f\x93\xeb\x5a\x0a\x14\x26\xfb\xeb\xc5\xc7\xdf\x26\x2e\x20\xf8\xe2\x21\xf3\xe4\x79\xde\xe3\x71\xff\x7d\x3c\xee\x13\x1e\x4d\x6d\xd7\x15\x7a\xd1\x0c\xb6\x8c\x29\x9b\xee\xa6\x58\x7b\x7a\x72\xdf\x61\xa1\x13\x8e\x6a\xed\xf1\x89\x80\x77\x0e\xdf\x0e\x43\x13\xcd\x5f\x3f\xf6\x2a\x44\x57\xa2\x34\x0c\xb4\x61\x66\xa3\xaf\x50\x94\xb5\xe4\x14\xd1\xdf\xfc\x18\x5b\xad\x6e\xa7\xae\xff\xc4\x2b\x65\xfe\xfa\xb1\xd3\xe6\xf6\xd0\x2f\xb3\x69\xbd\x77\xad\xb4\x34\x3b\xb3\xfd\x7f\x7b\xe8\x97\x62\x89\x68\x89\xdb\xd7\x8f\xb1\xd4\xb1\x40\xbb\x24\xf9\x3f\x17\x21\x90\xc1\x25\xfa\x5f\x94\x92\x8a\xea\x69\x9b\x96\x32\xb4\x9f\x94\x7d\x08\x5f\xda\xc4\xac\x1e\x62\xc4\xd2\xdd\x51\x83\x1d\x7c\xc7\xb8\x81\x05\x9a\x62\x95\x25\xba\x1e\xc3\x63\x1c\xed\x25\x0a\xbb\x1d\xd1\x33\x18\x71\x51\x54\x9b\x12\x47\x61\x8c\xad\x90\x95\xa8\xf4\x0c\x1e\xe1\xb4\x28\xb0\x36\x33\x18\xb1\xba\xae\x78\x41\xdb\x97\xe9\xdf\xb5\x14\x23\xd8\x86\x71\xe6\x57\xd5\x80\x71\x23\xd7\xc4\x49\x42\xa9\xe0\xc7\xa3\x23\xeb\x65\xc3\x5d\x6f\x73\x5f\xd2\x04\x8c\xdc\x12\x4b\xb7\xbf\x77\xcb\x6b\x07\x5b\x11\xb2\x7c\x52\x30\xbb\xdc\xac\x8f\xc3\xed\xbe\xfd\xdb\xaf\x5f\xbe\x7c\x82\xd7\x8f\xc9\xb4\xdb\x6f\x09\x4a\xb4\x5f\x36\xd5\x91\x05\x3e\xb4\x55\xde\xe8\x37\x34\x77\x52\xdd\xb8\xf6\x31\xd4\x15\x32\x8d\x64\x10\xb6\x64\x5c\x40\xc5\x0c\xaa\xd1\x71\xa4\x02\x2b\xf7\x49\x53\x2a\xe6\x91\x05\x12\xf6\x96\xb2\x21\xec\x78\x84\xb5\xa3\xa5\x6f\x28\x4e\x26\xde\x64\x3a\x1b\xfd\xf1\xe8\xed\x28\xdf\xcb\x7b\x74\x81\x5a\xdb\x1a\x1d\xef\x6b\xae\xb0\x9c\xc1\x27\x27\x7c\x25\x97\x5c\x38\xf1\x47\xdf\x3b\xe9\x1f\xf6\x4f\x1a\x74\x00\x8c\xac\x07\x69\x0d\x25\x0a\x1e\x4c\x5f\xac\xb0\xb8\x81\x07\xb9\x51\x50\xa3\x5a\x73\x12\x52\xdb\x72\xf0\x7f\x2f\xd8\x9f\x8e\x8e\x9e\xd7\x86\xba\x45\x05\x3e\xc2\xec\xae\x44\xa3\xba\xe5\x05\x02\xd7\x60\x70\x5d\x4b\xc5\x14\xaf\x1e\x60\x23\xd8\x2d\xe3\x15\xbb\xae\xf0\xbb\xd5\xf3\xc7\xef\x52\xcf\x79\x2b\x82\x90\x06\x16\x72\x23\x06\xb5\x54\x48\xb1\xe0\xcb\x8d\xa2\x08\xdc\x27\x92\x2d\x38\x5c\xe9\xf5\xe5\xa1\x76\xd0\x32\x7a\xb9\x38\x67\x52\x08\x74\xbb\xba\x05\xe3\xd5\xb0\xc5\x84\x0f\x87\xa2\x25\x0e\x05\x4a\x03\x78\x1d\x6f\xc4\xe6\xe1\x86\xe7\x6b\xbb\xd3\xba\xdc\xb5\x87\x6a\xe2\x29\x66\x13\xaf\x28\xee\x8b\x80\xa0\x39\x65\x0d\x17\x3d\x8e\xfb\xa9\x92\x1a\x11\xc1\x28\xee\x72\xa7\xad\x33\x30\x6a\x93\x0c\xb2\x1b\xb5\x7e\xfb\x36\x0f\xf5\xd0\x18\x88\x40\x0a\x3c\x28\x93\x41\xf2\x1e\x90\xff\x73\x28\x89\xe2\xc3\xba\x62\xe0\xfe\x3b\xe1\xee\xff\x57\x8b\xd1\x5e\x25\x4c\x85\xcd\x06\xcb\x57\xc4\xd1\x0e\x27\xda\xad\xb6\x79\x9f\x36\xb1\x78\x17\x9e\x03\x66\x41\xaa\xa4\x3d\xe8\x59\x98\x24\xad\x80\x81\x54\xdd\x56\x18\x75\x9b\x38\x50\x4f\xa4\x90\x35\xd5\x5d\x2e\x1f\x3d\xb6\xdb\x13\xea\xeb\x0e\x0d\xb2\x47\x97\xd4\xb6\x36\xc1\xda\x5f\xad\xd4\xdb\x28\xe1\xa7\x29\xbf\x59\x80\x3b\xbf\xc2\xf2\xca\xa7\x46\x2a\x09\x6b\xa6\x34\x52\xd2\x09\xb4\xe7\x9c\xe2\x55\x34\x60\x20\xd1\xfe\x8e\x4e\xe8\x67\x4c\xfd\x70\xe7\x94\x89\x17\xba\x9b\x85\xd8\x49\xae\x71\xc9\x45\xdf\xd9\xe2\x16\x14\xc9\x28\xaa\xd1\xa3\x16\xba\xd5\xe8\xfb\x5f\xdc\xb2\x6b\xdb\x91\xee\xc0\x77\xf5\xb9\x0d\x77\xdc\x2b\xf0\x6e\xe6\x82\xe0\x2e\x99\x1e\x2b\xc3\x22\xcf\x87\x79\x6c\xdd\x48\x63\xd3\x29\x38\x85\x02\x73\x08\xdd\xb8\x94\x3b\xd2\x6f\xff\x35\x1b\x71\x97\x05\x1c\x6d\x92\x02\x5a\xf5\xd3\x86\x55\xd7\xac\xb0\x71\xae\xf8\x9a\xa9\x87\x31\xf9\xe4\x15\x37\xb8\x1e\xfb\x99\xc6\x80\xf7\x46\x31\x2b\x5f\xc4\xc4\x2b\xb5\x3b\xa1\x8d\x85\xf0\x62\x1e\x1e\xc2\xa9\x52\xec\x61\xc2\x35\xfd\xef\xdb\xf3\x54\xa4\x76\xab\x41\xdd\x5d\xd6\x4e\xa9\x1a\xb4\x6a\x0e\x87\x47\x09\xde\x40\x07\x47\x7e\xf1\xfd\x7e\x92\x7b\x36\xc0\x1a\x3a\x8d\xcc\xba\x9f\x34\x8d\x2d\xe9\x07\x58\x41\xa3\xb8\x59\xf3\x83\xa8\x79\x39\x48\xdb\xea\x76\xd6\xfd\x74\xfa\x1b\xa2\xf6\xea\x1f\xe8\x21\x83\xf4\x3b\x06\xb8\xec\x86\x5f\x68\x21\xf8\xd5\xab\x7e\x28\x74\x70\xdb\xfd\x6b\x0e\xbc\x26\xf5\x46\xaf\xb2\xc8\x50\xf9\xf1\x30\x6d\x93\x6f\x52\xe2\x84\x9a\x4a\x66\x29\xb0\xef\x14\xed\x46\x20\xb8\x5f\x4b\xa0\x89\x4e\x54\x2f\x07\x8f\x4b\xd3\xb5\xfa\xce\x93\x49\x7b\x3d\xd7\x13\x9c\x00\x3b\x39\xfe\x6c\x55\x92\x7c\x37\xc0\xb6\x8b\x66\x9b\x04\xf0\x19\x55\x51\x7c\x01\x77\x08\x02\xe9\x66\xcf\x1f\xbf\x00\xa3\xa4\xe4\xa5\xea\x01\xa5\x5e\xc9\x4d\x55\x9e\x11\xe9\x6f\x78\x37\x5c\xbe\xb9\xb0\x7f\x35\x9f\x77\x19\x11\x0e\x0f\x13\x91\x33\xb2\xb5\xf5\xb9\xcc\x1d\x37\xcf\xe7\x2e\xc3\x1d\x1e\x42\xd6\xc4\x14\xc5\x47\x9e\xe7\xb9\xfd\x98\x4e\xad\xc4\xc4\xad\x58\x31\xb1\xc4\xd2\x16\xea\x34\xd8\x96\xcd\x76\x2c\x13\x25\x98\x15\x2a\x5f\x48\xdf\x1b\x4b\x41\x4c\xa2\xd9\x5b\xff\xf1\xc7\x70\x76\x6e\xbb\x2b\x8c\x57\x11\x5d\x33\xf5\xe4\x6f\x78\x7c\x4d\x99\xfd\x00\x6f\x2f\xe3\x2b\x2a\xab\x89\xb0\x21\xef\x4d\xe5\x60\xd9\x2e\xfd\x15\xa1\x71\x7e\x6c\x57\xfb\x51\x54\x0f\x8d\x59\x02\xa3\x58\x2d\x70\xf3\x2f\x9a\xda\xec\x8a\x6d\xc5\xce\x1c\x8c\xc3\xa6\x2e\x99\xc1\xc4\xdc\x7f\xa3\x46\xb2\x46\x8a\xd2\x9d\x85\xe6\xd4\x95\x42\xbd\x1f\xda\x8a\x0f\x5c\xb8\xd4\xc0\xa5\x48\xc0\x3e\x5e\x62\x74\xda\xfc\xfc\x95\xdd\x10\x1b\x8b\x7b\xbb\x19\xb9\x1d\x46\x92\x10\x77\x33\x73\x29\x31\x8f\xf4\xbe\x8b\xb5\xa3\x8d\x98\xbb\xa6\x48\x3b\x96\xff\x70\x3c\xa4\xe8\x31\x9d\xc2\x07\xa6\x6e\xe8\x78\x8f\x8c\xd0\x58\x92\x69\xef\xbf\xd6\xa2\x80\xf7\x5c\x1b\xdd\xcb\x5f\xa9\x83\xbd\x83\x23\xeb\x29\xfb\x1d\xd0\xc1\x6d\x1f\xc6\xf6\x8e\x1a\xcc\x72\x93\xc9\x64\xef\xa0\x5d\x60\x3e\x04\xf4\xdb\x14\xa2\x52\x35\x9d\xf5\xbd\x9d\xee\x62\x58\x55\x81\x54\x7c\xc9\x05\xab\x28\xa0\x51\x19\x8e\x7a\xa0\x96\x10\x01\x2a\xf5\x56\xf3\x5c\xc6\x76\xf9\x9a\xc2\xc1\xf6\x5b\xc2\x1e\xcd\x40\x01\xb7\x3f\xbb\x85\x85\x57\x1b\xd6\x1a\x49\xd4\x36\x96\x17\x4a\xae\xc9\x3f\xda\x55\xf6\x21\x18\x76\xd5\xa6\xe9\x01\xf6\x9e\xd8\x7b\x7a\x82\x8d\x28\x71\xc1\x05\xee\x61\xe2\xee\x0f\xf6\x46\xde\xcb\x18\x35\x37\x3f\xcf\x44\xda\x6e\x66\x69\xf2\x8f\x53\x7f\x67\xec\x24\x45\x26\x59\x3f\xa2\x4b\x7d\xee\x7c\x41\x8a\x6f\xd1\xd5\xc5\xe4\x18\x28\xf7\x76\x77\xc9\xa0\x69\x8f\xd6\x0b\xcf\xe1\x72\xe1\xf7\x29\x16\x5e\x58\x2a\xec\x2a\x14\xe2\x32\xa1\x5f\x24\xa4\x65\xc1\x5f\xd0\x40\xb1\x51\xca\xae\xb6\x51\x47\x76\x87\x70\x23\xe4\x5d\x07\x50\x70\x8d\x05\xdb\x68\xb4\xc5\x03\x1d\xc7\x60\xd9\xcb\xa8\xec\x5a\xde\x62\xde\x2b\x1f\x3c\xf3\x2b\x26\xf4\x1d\xa9\x64\x2f\xb2\xa4\xb9\xe8\x02\x4d\xfb\x7a\x2b\xcc\x48\x65\x02\xca\x7d\xc0\x7c\x3b\xbc\xef\x68\x9f\x82\x75\xbb\xe2\x3d\x02\xfd\x78\xd9\xdf\x5b\xa4\x1c\x26\x71\x12\xec\x79\x45\xb4\xfe\xc9\xe0\x53\xb4\xde\xe6\x06\x7a\x72\x4e\x76\xe5\xcf\xfd\x55\x9f\xdf\xb6\x35\x8b\x2d\xe4\xba\xae\x90\xf6\x46\xae\x04\x5b\x54\x6c\x69\xdd\x5f\xa3\xc9\x13\x95\x0e\x39\x39\x6d\xf0\xf0\xde\x3c\xbb\x4c\x7f\x79\x65\xff\xdb\xe7\x9f\xcd\x86\xf1\x79\x7e\x61\xb9\xb2\x9f\x9f\x2b\x20\x9f\xb7\x83\xdd\x3e\xce\x1d\xb4\x3f\x97\xa2\x28\x93\xdb\x7c\xd4\xba\xa2\x40\xd9\xfa\x4d\x93\xd2\xa3\x51\xf4\xa0\xa5\x42\x03\x3c\xf0\xb0\xc0\xd3\x8f\x81\xc3\xbb\x39\x1c\x1d\x03\xff\xe1\x87\x5d\x58\x32\xe0\xa3\xfc\x32\x45\x82\xc0\xfd\x77\x96\x00\x31\x95\xb3\xec\xb5\x42\x76\xd3\xdf\x81\x04\x33\x35\xb7\x8f\xbe\x69\x1c\x64\xf9\x34\xad\xa7\x86\x48\x74\xf8\x7b\x40\xe3\x8b\x80\x71\x17\x2c\x3e\x0f\x84\x17\x37\xbc\xb6\xde\x50\xa0\xd6\x5c\x2c\xad\xc2\x84\x6c\x5f\x01\x18\xd9\x94\xd9\xb1\x4a\x5f\x91\xa3\xdb\x22\xde\x39\x94\xfd\xe5\x1c\x7a\xe0\xe0\xa9\xab\xad\x1d\x31\x5f\x40\x7b\xd8\x99\xf0\x1d\x74\xe2\xf8\x78\xc5\xac\xb8\xb8\x19\xd1\xf5\x69\xd7\x26\x65\xd5\x3b\x70\xd9\xe9\xfb\x83\x85\x5f\x36\x48\x4c\xe7\x04\xf9\xc0\x16\xbf\x9c\xed\xaa\x4f\x06\xcf\xcf\x60\xe8\xc4\xac\x5f\x24\xc6\x4f\x31\x9e\x59\xc6\x60\x08\x87\xbf\x07\x21\x91\x0c\x17\x5e\xbc\x07\x3a\x1e\x40\x38\x42\x44\xda\xa7\xbd\x10\xfa\x52\x3d\x76\x15\x68\x0e\xff\x3a\x00\x8c\xdd\xd4\x13\x6d\x98\x32\xfa\x3f\xb8\x59\x65\xa3\xff\x52\xe9\x9d\xce\xbe\x49\x69\xb8\xc2\xba\x62\x05\xd2\xd8\xb1\x9d\xef\x99\x50\x7d\x91\xb2\x5f\x04\xe8\xbd\x98\x42\x51\xf6\xaa\x8b\xf6\xcd\x9e\x0a\x88\x93\xe2\x2d\x9e\x3c\x3c\x95\x6f\xee\x34\x50\x25\x97\x0c\x16\x62\x64\x85\x13\xba\x07\xc8\x46\x7f\xa6\x3b\x24\xf7\x18\x4b\xe9\x36\x03\xce\x46\x63\xb0\x43\x07\xce\xf9\xe3\x03\x75\xf4\x37\xe3\x19\xde\x26\x47\xe3\xc1\xcd\xb9\xed\xec\x38\xf5\xb1\xa7\x7d\x59\xd4\x09\x1d\x5e\xc1\x44\x9c\xa8\x2b\x7c\xdd\xd6\x3d\xd2\x3e\x6d\x1f\x9b\x84\x5b\x71\x4a\x31\x0b\x5e\x21\x6c\xea\x4a\xb2\x72\xf0\xd1\x7f\x30\xd4\xce\xea\x8a\xfc\xee\x71\x32\xbd\x09\x8a\xff\x0c\x20\xfc\x8e\x9f\xfc\x74\xed\xfe\x65\x8f\xd8\xac\xaf\x1d\x4a\x87\xef\x78\x3a\xb2\xf6\xc1\x4e\xc0\x71\xe0\x85\xf4\xce\xbf\x22\x08\x5e\xd6\x0c\x3e\xd6\x3f\x0f\x5f\x8b\x0d\xfe\x41\x44\xc1\xaa\x6a\x50\x2f\xe1\x23\xb2\xc1\xbf\x88\x08\xde\x5e\x9d\xcc\x52\x5d\x7e\xbd\xec\x8b\x41\x20\x9c\xcc\x3c\x6e\x9e\xd3\x23\x37\x2b\x54\xc0\x9a\xeb\x16\xe9\x7f\x3b\x81\x4b\xf7\xde\x2b\x79\x68\xef\xd8\xda\xca\xf0\xc9\x0f\xa3\x9f\xed\xa3\x8c\x44\x60\xfb\xef\x59\xa1\x1b\x47\x6f\x1c\x6b\xef\x13\xf1\xbe\xd6\xdc\xf3\x6f\x12\x61\x25\xb5\x89\x8c\xd5\x7b\x55\x3f\x64\x6a\xff\x80\x65\xd7\x5f\x78\x6c\x0f\xfe\x27\x00\x00\xff\xff\x8a\x35\xc3\x81\x52\x33\x00\x00") +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") func libsuiAgentTsBytes() ([]byte, error) { return bindataRead( @@ -1421,7 +1421,7 @@ func libsuiAgentTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "libsui/agent.ts", size: 13138, mode: os.FileMode(420), modTime: time.Unix(1746678055, 0)} + info := bindataFileInfo{name: "libsui/agent.ts", size: 14104, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "libsui/index.ts", size: 13049, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "libsui/utils.ts", size: 5959, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "libsui/yao.ts", size: 4338, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "public/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "ui/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "xgen/setup/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "xgen/v0.9/index.html", size: 14, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "xgen/v1.0/index.html", size: 50, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "xgen/v1.0/layouts__index.async.js", size: 71, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "xgen/v1.0/umi.js", size: 71, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "yao/data/icons/404.png", size: 9342, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "yao/data/icons/icon.icns", size: 67465, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "yao/data/icons/icon.ico", size: 54993, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "yao/data/icons/icon.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "yao/data/index.html", size: 282, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "yao/fields/model.trans.json", size: 14938, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "yao/langs/en-US.json", size: 66, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "yao/langs/zh-cn/global.yml", size: 1762, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "yao/langs/zh-cn/logins/admin.login.yml", size: 94, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "yao/langs/zh-cn/logins/user.login.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "yao/langs/zh-hk/global.yml", size: 1762, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "yao/langs/zh-hk/logins/admin.login.yml", size: 94, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "yao/langs/zh-hk/logins/user.login.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1746705917, 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(1746678055, 0)} + info := bindataFileInfo{name: "yao/release/app.yaz", size: 181682, mode: os.FileMode(420), modTime: time.Unix(1746705917, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/neo/api.go b/neo/api.go index 0121afa7..6c8d0c08 100644 --- a/neo/api.go +++ b/neo/api.go @@ -134,15 +134,6 @@ func (neo *DSL) API(router *gin.Engine, path string) error { // curl -X GET 'http://localhost:5099/api/__yao/neo/mentions?keywords=assistant&token=xxx' router.GET(path+"/mentions", append(middlewares, neo.handleMentions)...) - // Generation endpoints - // Generate custom content example: - // curl -X GET 'http://localhost:5099/api/__yao/neo/generate?content=Generate+something&type=custom&system_prompt=You+are+a+helpful+assistant&chat_id=chat_123&token=xxx' - // curl -X POST 'http://localhost:5099/api/__yao/neo/generate' \ - // -H 'Content-Type: application/json' \ - // -d '{"content": "Generate something", "type": "custom", "system_prompt": "You are a helpful assistant", "chat_id": "chat_123", "token": "xxx"}' - router.GET(path+"/generate", append(middlewares, neo.handleGenerateCustom)...) - router.POST(path+"/generate", append(middlewares, neo.handleGenerateCustom)...) - // Generate title example: // curl -X GET 'http://localhost:5099/api/__yao/neo/generate/title?content=Chat+content&chat_id=chat_123&token=xxx' // curl -X POST 'http://localhost:5099/api/__yao/neo/generate/title' \ @@ -238,6 +229,24 @@ func (neo *DSL) handleChat(c *gin.Context) { ctx = chatctx.WithAssistantID(ctx, assistantID) } + // Set the silent mode + silent := c.Query("silent") + if silent == "true" || silent == "1" { + ctx = chatctx.WithSilent(ctx, true) + } + + // Set the history visible + historyVisible := c.Query("history_visible") + if historyVisible != "" { + ctx = chatctx.WithHistoryVisible(ctx, historyVisible == "true" || historyVisible == "1") + } + + // Set the client type + clientType := c.Query("client_type") + if clientType != "" { + ctx = chatctx.WithClientType(ctx, clientType) + } + err := neo.Answer(ctx, content, c) // Error handling @@ -485,7 +494,7 @@ func (neo *DSL) handleChatLatest(c *gin.Context) { // Create a new chat if len(chats.Groups) == 0 || len(chats.Groups[0].Chats) == 0 { - assistantID := neo.Use + assistantID := neo.Use.Default queryAssistantID := c.Query("assistant_id") if queryAssistantID != "" { assistantID = queryAssistantID @@ -504,7 +513,7 @@ func (neo *DSL) handleChatLatest(c *gin.Context) { "assistant_id": ast.ID, "assistant_name": ast.Name, "assistant_avatar": ast.Avatar, - "assistant_deleteable": neo.Use != ast.ID, + "assistant_deleteable": neo.Use.Default != ast.ID, }}) c.Done() return @@ -530,7 +539,7 @@ func (neo *DSL) handleChatLatest(c *gin.Context) { chat.Chat["assistant_id"] = neo.Use // Get the assistant info - ast, err := assistant.Get(neo.Use) + ast, err := assistant.Get(neo.Use.Default) if err != nil { c.JSON(500, gin.H{"message": err.Error(), "code": 500}) c.Done() @@ -573,7 +582,7 @@ func (neo *DSL) handleChatDetail(c *gin.Context) { chat.Chat["assistant_id"] = neo.Use // Get the assistant info - ast, err := assistant.Get(neo.Use) + ast, err := assistant.Get(neo.Use.Default) if err != nil { c.JSON(500, gin.H{"message": err.Error(), "code": 500}) c.Done() @@ -583,7 +592,7 @@ func (neo *DSL) handleChatDetail(c *gin.Context) { chat.Chat["assistant_avatar"] = ast.Avatar } - chat.Chat["assistant_deleteable"] = neo.Use != chat.Chat["assistant_id"] + chat.Chat["assistant_deleteable"] = neo.Use.Default != chat.Chat["assistant_id"] c.JSON(200, map[string]interface{}{"data": chat}) c.Done() } @@ -659,20 +668,6 @@ func (neo *DSL) handleChatUpdate(c *gin.Context) { return } - // If content is not empty, Generate the chat title - if body.Content != "" { - ctx, cancel := chatctx.NewWithCancel(sid, c.Query("chat_id"), "") - defer cancel() - - title, err := neo.GenerateChatTitle(ctx, body.Content, c, true) - if err != nil { - c.JSON(500, gin.H{"message": err.Error(), "code": 500}) - c.Done() - return - } - body.Title = title - } - if body.Title == "" { c.JSON(400, gin.H{"message": "title is required", "code": 400}) c.Done() @@ -813,155 +808,81 @@ func (r *generateResponse) send(key string) { // handleGenerateTitle handles generating a chat title func (neo *DSL) handleGenerateTitle(c *gin.Context) { - var content string - if c.Request.Method == "GET" { - content = c.Query("content") - } else { - var body struct { - Content string `json:"content"` - } - if err := c.BindJSON(&body); err != nil { - // For SSE requests, send error message in SSE format - if strings.Contains(c.GetHeader("Accept"), "text/event-stream") { - c.Header("Content-Type", "text/event-stream;charset=utf-8") - c.Header("Cache-Control", "no-cache") - c.Header("Connection", "keep-alive") - msg := message.New().Error("invalid request body").Done() - msg.Write(c.Writer) - return - } - c.JSON(400, gin.H{"message": "invalid request body", "code": 400}) - return - } - content = body.Content + // Set headers for SSE + c.Header("Content-Type", "text/event-stream;charset=utf-8") + c.Header("Cache-Control", "no-cache") + c.Header("Connection", "keep-alive") + + sid := c.GetString("__sid") + if sid == "" { + sid = uuid.New().String() } - resp := &generateResponse{ - c: c, - sid: c.GetString("__sid"), - content: content, - } - - // For SSE requests, set headers before validation - if strings.Contains(c.GetHeader("Accept"), "text/event-stream") { - c.Header("Content-Type", "text/event-stream;charset=utf-8") - c.Header("Cache-Control", "no-cache") - c.Header("Connection", "keep-alive") - } - - if !resp.validate() { + content := c.Query("content") + if content == "" { + msg := message.New().Error("content is required").Done() + msg.Write(c.Writer) return } - ctx, cancel := chatctx.NewWithCancel(resp.sid, c.Query("chat_id"), "") - defer cancel() + chatID := fmt.Sprintf("generate_title_%d", time.Now().UnixNano()) - // Use silent mode for regular HTTP requests, streaming for SSE - silent := !strings.Contains(c.GetHeader("Accept"), "text/event-stream") - resp.result, resp.err = neo.GenerateChatTitle(ctx, resp.content, c, silent) - resp.send("result") + // Set the context with validated chat_id + ctx, cancel := chatctx.NewWithCancel(sid, chatID, c.Query("context")) + defer cancel() + defer ctx.Release() // Release the context after the request is done + + // Set the assistant ID + ctx = chatctx.WithHistoryVisible(ctx, false) + ctx = chatctx.WithAssistantID(ctx, neo.Use.Title) + + err := neo.Answer(ctx, content, c) + + // Error handling + if err != nil { + message.New().Done().Error(err).Write(c.Writer) + c.Done() + return + } } // handleGeneratePrompts handles generating prompts func (neo *DSL) handleGeneratePrompts(c *gin.Context) { - var content string - if c.Request.Method == "GET" { - content = c.Query("content") - } else { - var body struct { - Content string `json:"content"` - } - if err := c.BindJSON(&body); err != nil { - // For SSE requests, send error message in SSE format - if strings.Contains(c.GetHeader("Accept"), "text/event-stream") { - c.Header("Content-Type", "text/event-stream;charset=utf-8") - c.Header("Cache-Control", "no-cache") - c.Header("Connection", "keep-alive") - msg := message.New().Error("invalid request body").Done() - msg.Write(c.Writer) - return - } - c.JSON(400, gin.H{"message": "invalid request body", "code": 400}) - return - } - content = body.Content + // Set headers for SSE + c.Header("Content-Type", "text/event-stream;charset=utf-8") + c.Header("Cache-Control", "no-cache") + c.Header("Connection", "keep-alive") + + sid := c.GetString("__sid") + if sid == "" { + sid = uuid.New().String() } - resp := &generateResponse{ - c: c, - sid: c.GetString("__sid"), - content: content, - } - - // For SSE requests, set headers before validation - if strings.Contains(c.GetHeader("Accept"), "text/event-stream") { - c.Header("Content-Type", "text/event-stream;charset=utf-8") - c.Header("Cache-Control", "no-cache") - c.Header("Connection", "keep-alive") - } - - if !resp.validate() { + content := c.Query("content") + if content == "" { + msg := message.New().Error("content is required").Done() + msg.Write(c.Writer) return } - ctx, cancel := chatctx.NewWithCancel(resp.sid, c.Query("chat_id"), "") + chatID := fmt.Sprintf("generate_prompts_%d", time.Now().UnixNano()) + + // Set the context with validated chat_id + ctx, cancel := chatctx.NewWithCancel(sid, chatID, c.Query("context")) defer cancel() + defer ctx.Release() // Release the context after the request is done - // Use silent mode for regular HTTP requests, streaming for SSE - silent := !strings.Contains(c.GetHeader("Accept"), "text/event-stream") - resp.result, resp.err = neo.GeneratePrompts(ctx, resp.content, c, silent) - resp.send("result") -} + // Set the assistant ID + ctx = chatctx.WithHistoryVisible(ctx, false) + ctx = chatctx.WithAssistantID(ctx, neo.Use.Prompt) + err := neo.Answer(ctx, content, c) -// handleGenerateCustom handles generating custom content -func (neo *DSL) handleGenerateCustom(c *gin.Context) { - var content, genType, systemPrompt string - - if c.Request.Method == "GET" { - content = c.Query("content") - genType = c.Query("type") - systemPrompt = c.Query("system_prompt") - } else { - var body struct { - Content string `json:"content"` - Type string `json:"type"` - SystemPrompt string `json:"system_prompt"` - } - if err := c.BindJSON(&body); err != nil { - c.JSON(400, gin.H{"message": "invalid request body", "code": 400}) - return - } - content = body.Content - genType = body.Type - systemPrompt = body.SystemPrompt - } - - resp := &generateResponse{ - c: c, - sid: c.GetString("__sid"), - content: content, - } - if !resp.validate() { + // Error handling + if err != nil { + message.New().Done().Error(err).Write(c.Writer) + c.Done() return } - - // Additional validations for custom generation - if genType == "" { - c.JSON(400, gin.H{"message": "type is required", "code": 400}) - return - } - if systemPrompt == "" { - c.JSON(400, gin.H{"message": "system_prompt is required", "code": 400}) - return - } - - ctx, cancel := chatctx.NewWithCancel(resp.sid, c.Query("chat_id"), "") - defer cancel() - - // Use silent mode for regular HTTP requests, streaming for SSE - silent := !strings.Contains(c.GetHeader("Accept"), "text/event-stream") - resp.result, resp.err = neo.GenerateWithAI(ctx, resp.content, genType, systemPrompt, c, silent) - resp.send("result") } // handleAssistantList handles listing assistants diff --git a/neo/assistant/call.go b/neo/assistant/call.go index 9865db1b..e69cd594 100644 --- a/neo/assistant/call.go +++ b/neo/assistant/call.go @@ -242,7 +242,8 @@ func (obj *objectCall) run(info *v8go.FunctionCallbackInfo) *v8go.Value { chatCtx.AssistantID = assistantID chatCtx.ChatID = fmt.Sprintf("call_%s", uuid.New().String()) // New chat id chatCtx.Silent = options.Silent - chatCtx.Args = goArgs // Arguments for call + chatCtx.ClientType = chatctx.ClientTypeAgent // Set the client type to agent + chatCtx.Args = goArgs // Arguments for call // Define the callback function var cb func(msg *chatMessage.Message) = nil diff --git a/neo/context/context.go b/neo/context/context.go index c4465fdd..c4d6d2f1 100644 --- a/neo/context/context.go +++ b/neo/context/context.go @@ -12,24 +12,26 @@ import ( // Context the context type Context struct { context.Context - Sid string `json:"sid" yaml:"-"` // Session ID - ChatID string `json:"chat_id,omitempty"` // Chat ID, use to select chat - AssistantID string `json:"assistant_id,omitempty"` // Assistant ID, use to select assistant - Stack string `json:"stack,omitempty"` // will be removed in the future - Path string `json:"pathname,omitempty"` // wiil be rename to path - FormData map[string]interface{} `json:"formdata,omitempty"` - Field *Field `json:"field,omitempty"` - Namespace string `json:"namespace,omitempty"` - Config map[string]interface{} `json:"config,omitempty"` - Signal interface{} `json:"signal,omitempty"` - Silent bool `json:"silent,omitempty"` // Silent mode - Retry bool `json:"retry,omitempty"` // Retry mode - RetryTimes uint8 `json:"retry_times,omitempty"` // Retry times - Upload *FileUpload `json:"upload,omitempty"` - Version bool `json:"version,omitempty"` // Version support - RAG bool `json:"rag,omitempty"` // RAG support - Args []interface{} `json:"args,omitempty"` // Arguments for call - SharedSpace plan.Space `json:"-"` // Shared space + Sid string `json:"sid" yaml:"-"` // Session ID + ChatID string `json:"chat_id,omitempty"` // Chat ID, use to select chat + AssistantID string `json:"assistant_id,omitempty"` // Assistant ID, use to select assistant + Stack string `json:"stack,omitempty"` // will be removed in the future + Path string `json:"pathname,omitempty"` // wiil be rename to path + FormData map[string]interface{} `json:"formdata,omitempty"` + Field *Field `json:"field,omitempty"` + Namespace string `json:"namespace,omitempty"` + Config map[string]interface{} `json:"config,omitempty"` + Signal interface{} `json:"signal,omitempty"` + Silent bool `json:"silent,omitempty"` // Silent mode + ClientType string `json:"client_type,omitempty"` // The request client type. SDK, Desktop, Web, JSSDK, etc. the default is Web + HistoryVisible bool `json:"history_visible,omitempty"` // History visible, default is true, if false, the history will not be displayed in the UI + Retry bool `json:"retry,omitempty"` // Retry mode + RetryTimes uint8 `json:"retry_times,omitempty"` // Retry times + Upload *FileUpload `json:"upload,omitempty"` + Version bool `json:"version,omitempty"` // Version support + RAG bool `json:"rag,omitempty"` // RAG support + Args []interface{} `json:"args,omitempty"` // Arguments for call + SharedSpace plan.Space `json:"-"` // Shared space } // Field the context field @@ -49,10 +51,59 @@ type FileUpload struct { TempFile string `json:"temp_file,omitempty"` } +const ( + + // ClientTypeAgent is the client type for Agent + ClientTypeAgent = "agent" + + // ClientTypeWeb is the client type for Web (Default UI) + ClientTypeWeb = "web" + + // ClientTypeSDK is the client type for SDK + ClientTypeSDK = "android" + + // ClientTypeIOS is the client type for IOS + ClientTypeIOS = "ios" + + // ClientTypeJSSDK is the client type for JSSDK + ClientTypeJSSDK = "jssdk" + + // ClientTypeMacOS is the client type for MacOS Desktop + ClientTypeMacOS = "macos" + + // ClientTypeWindows is the client type for Windows Desktop + ClientTypeWindows = "windows" + + // ClientTypeLinux is the client type for Linux Desktop + ClientTypeLinux = "linux" +) + +// SupportedClientTypes is the supported client types +var SupportedClientTypes = map[string]bool{ + ClientTypeAgent: true, + ClientTypeWeb: true, + ClientTypeSDK: true, + ClientTypeIOS: true, + ClientTypeJSSDK: true, + ClientTypeMacOS: true, + ClientTypeWindows: true, + ClientTypeLinux: true, +} + // New create a new context func New(sid, cid, payload string) Context { - ctx := Context{Context: context.Background(), Sid: sid, ChatID: cid, SharedSpace: plan.NewMemorySharedSpace()} + // Validate the client type + ctx := Context{ + Context: context.Background(), + SharedSpace: plan.NewMemorySharedSpace(), + Sid: sid, + ChatID: cid, + HistoryVisible: true, + ClientType: ClientTypeWeb, + Silent: false, + } + if payload == "" { return ctx } @@ -77,6 +128,29 @@ func WithAssistantID(ctx Context, assistantID string) Context { return ctx } +// WithSilent set the silent mode +func WithSilent(ctx Context, silent bool) Context { + ctx.Silent = silent + return ctx +} + +// WithClientType set the client type +func WithClientType(ctx Context, clientType string) Context { + // Validate the client type + if !SupportedClientTypes[clientType] { + log.Error("[Neo] Invalid client type: %s", clientType) + return ctx + } + ctx.ClientType = clientType + return ctx +} + +// WithHistoryVisible set the history visible +func WithHistoryVisible(ctx Context, historyVisible bool) Context { + ctx.HistoryVisible = historyVisible + return ctx +} + // NewWithTimeout create a new context with timeout func NewWithTimeout(sid, cid, payload string, timeout time.Duration) (Context, context.CancelFunc) { ctx := New(sid, cid, payload) @@ -127,6 +201,12 @@ func (ctx *Context) Map() map[string]interface{} { data["silent"] = ctx.Silent } + // History visible + data["history_visible"] = ctx.HistoryVisible + + // Client type + data["client_type"] = ctx.ClientType + // Retry mode if ctx.Retry { data["retry"] = ctx.Retry diff --git a/neo/hooks.go b/neo/hooks.go index a777f768..67210bca 100644 --- a/neo/hooks.go +++ b/neo/hooks.go @@ -15,7 +15,7 @@ import ( func (neo *DSL) HookCreate(ctx chatctx.Context, messages []map[string]interface{}, c *gin.Context) (CreateResponse, error) { // Default assistant - assistantID := neo.Use + assistantID := neo.Use.Default if ctx.AssistantID != "" { assistantID = ctx.AssistantID } diff --git a/neo/load.go b/neo/load.go index 9302352c..42e71099 100644 --- a/neo/load.go +++ b/neo/load.go @@ -47,6 +47,21 @@ func Load(cfg config.Config) error { setting.StoreSetting.MaxSize = 100 } + // Default Assistant + if setting.Use == nil { + setting.Use = &Use{Default: "neo"} + } + + // Title Assistant + if setting.Use.Title == "" { + setting.Use.Title = setting.Use.Default + } + + // Prompt Assistant + if setting.Use.Prompt == "" { + setting.Use.Prompt = setting.Use.Default + } + Neo = &setting // Store Setting @@ -185,8 +200,8 @@ func initAssistant() error { // defaultAssistant get the default assistant func defaultAssistant() (*assistant.Assistant, error) { - if Neo.Use != "" { - return assistant.Get(Neo.Use) + if Neo.Use != nil && Neo.Use.Default != "" { + return assistant.Get(Neo.Use.Default) } name := Neo.Name diff --git a/neo/neo.go b/neo/neo.go index 7b064eba..3efe0e44 100644 --- a/neo/neo.go +++ b/neo/neo.go @@ -6,10 +6,8 @@ import ( "strings" "github.com/gin-gonic/gin" - "github.com/yaoapp/kun/log" "github.com/yaoapp/yao/neo/assistant" chatctx "github.com/yaoapp/yao/neo/context" - "github.com/yaoapp/yao/neo/message" ) // Answer reply the message @@ -34,237 +32,6 @@ func (neo *DSL) Select(id string) (assistant.API, error) { return assistant.Get(id) } -// GeneratePrompts generate prompts for the AI assistant -func (neo *DSL) GeneratePrompts(ctx chatctx.Context, input string, c *gin.Context, silent ...bool) (string, error) { - prompts := ` - Optimize the prompts for the AI assistant - 1. Optimize prompts based on the user's input - 2. The prompts should be clear and specific - 3. The prompts should be in the same language as the input - 4. Keep the prompts concise but comprehensive - 5. DO NOT ASK USER FOR MORE INFORMATION, JUST GENERATE PROMPTS - 6. DO NOT ANSWER THE QUESTION, JUST GENERATE PROMPTS - ` - isSilent := false - if len(silent) > 0 { - isSilent = silent[0] - } - return neo.GenerateWithAI(ctx, input, "prompts", prompts, c, isSilent) -} - -// GenerateChatTitle generate the chat title -func (neo *DSL) GenerateChatTitle(ctx chatctx.Context, input string, c *gin.Context, silent ...bool) (string, error) { - prompts := ` - Help me generate a title for the chat - 1. The title should be a short and concise description of the chat. - 2. The title should be a single sentence. - 3. The title should be in same language as the chat. - 4. The title should be no more than 50 characters. - 5. ANSWER ONLY THE TITLE CONTENT, FOR EXAMPLE: Chat with AI is a valid title, but "Chat with AI" is not a valid title. - ` - isSilent := false - if len(silent) > 0 { - isSilent = silent[0] - } - return neo.GenerateWithAI(ctx, input, "title", prompts, c, isSilent) -} - -// GenerateWithAI generate content with AI, type can be "title", "prompts", etc. -func (neo *DSL) GenerateWithAI(ctx chatctx.Context, input string, messageType string, systemPrompt string, c *gin.Context, silent bool) (string, error) { - messages := []map[string]interface{}{ - {"role": "system", "content": systemPrompt}, - { - "role": "user", - "content": input, - "type": messageType, - "name": ctx.Sid, - }, - } - - res, err := neo.HookCreate(ctx, messages, c) - if err != nil { - return "", err - } - - // Select Assistant - ast, err := neo.Select(res.AssistantID) - if err != nil { - return "", err - } - - if ast == nil { - msg := message.New().Error("assistant is not initialized").Done() - msg.Write(c.Writer) - return "", fmt.Errorf("assistant is not initialized") - } - - clientBreak := make(chan bool, 1) - done := make(chan bool, 1) - fail := make(chan error, 1) - contents := message.NewContents() - - // Chat with AI in background - go func() { - msgList := []message.Message{} - for _, vv := range messages { - msg := message.New().Map(vv) - if content, ok := vv["content"].(string); ok { - msgs, err := message.NewContent(content) - if err == nil { - for _, v := range msgs { - v.AssistantID = msg.AssistantID - v.AssistantName = msg.AssistantName - v.AssistantAvatar = msg.AssistantAvatar - v.Role = msg.Role - v.Name = msg.Name - v.Mentions = msg.Mentions - msgList = append(msgList, v) - } - } - } - } - - errorRaw := "" - isFirstThink := true - isThinking := false - currentMessageID := "" - tokenID := "" - beganAt := int64(0) - err := ast.Chat(c.Request.Context(), msgList, neo.Option, func(data []byte) int { - select { - case <-clientBreak: - return 0 // break - - default: - msg := message.NewOpenAI(data, isThinking) - if msg == nil { - return 1 // continue - } - - if msg.Pending { - errorRaw += msg.Text - return 1 // continue - } - - // Handle error - if msg.Type == "error" { - fail <- fmt.Errorf("%s", msg.Text) - return 0 // break - } - - // for api reasoning_content response - if msg.Type == "think" { - if isFirstThink { - msg.Text = "\n" + msg.Text // add the think begin tag - isFirstThink = false - isThinking = true - } - } - - // for api reasoning_content response - if isThinking && msg.Type != "think" { - // add the think close tag - end := message.New().Map(map[string]interface{}{"text": "\n\n", "type": "think", "delta": true}) - end.Write(c.Writer) - end.ID = currentMessageID - end.AppendTo(contents) - isThinking = false - - // Clear the token and make a new line - contents.NewText([]byte{}, message.Extra{ID: currentMessageID}) - contents.ClearToken(currentMessageID) - } - - // Append content and send message - msg.AppendTo(contents) - - // Scan the tokens - contents.ScanTokens(currentMessageID, tokenID, beganAt, func(params message.ScanCallbackParams) { - currentMessageID = params.MessageID - msg.ID = params.MessageID - msg.Type = params.Token - msg.Text = "" // clear the text - msg.Props = map[string]interface{}{"text": params.Text} // Update props - - // End of the token clear the text - if params.Begin { - msg.Begin = beganAt - return - } - - // End of the token clear the text - if params.End { - msg.End = params.EndAt - return - } - - // New message with the tails - if params.Tails != "" { - newMsg, err := message.NewString(params.Tails, params.MessageID) - if err != nil { - return - } - msgList = append(msgList, *newMsg) - } - }) - - if !silent { - value := msg.String() - if value != "" { - message.New(). - Map(map[string]interface{}{ - "text": value, - "delta": true, - "done": msg.IsDone, - }). - Write(c.Writer) - } - } - - // Complete the stream - if msg.IsDone { - value := msg.String() - if value == "" { - msg.Write(c.Writer) - } - done <- true - return 0 // break - } - - return 1 // continue - } - }) - - if err != nil { - log.Error("Chat error: %s", err.Error()) - if !silent { - message.New().Error(err).Done().Write(c.Writer) - } - } - - if errorRaw != "" { - msg, err := message.NewStringError(errorRaw) - if err != nil { - log.Error("Error parsing error message: %s", err.Error()) - } - msg.Write(c.Writer) - } - - done <- true - }() - - // Wait for completion or client disconnect - select { - case <-done: - return contents.Text(), nil - case err := <-fail: - return "", err - case <-c.Writer.CloseNotify(): - clientBreak <- true - return "", nil - } -} - // Upload upload a file func (neo *DSL) Upload(ctx chatctx.Context, c *gin.Context) (*assistant.File, error) { // Get the file diff --git a/neo/store/xun.go b/neo/store/xun.go index 3b897b30..354736d2 100644 --- a/neo/store/xun.go +++ b/neo/store/xun.go @@ -607,6 +607,7 @@ func (conv *Xun) SaveHistory(sid string, messages []map[string]interface{}, cid // Get silent flag from context var silent bool = false + var historyVisible bool = true if context != nil { if silentVal, ok := context["silent"]; ok { switch v := silentVal.(type) { @@ -620,6 +621,20 @@ func (conv *Xun) SaveHistory(sid string, messages []map[string]interface{}, cid silent = v != 0 } } + + // Get history visible from context + if historyVisibleVal, ok := context["history_visible"]; ok { + switch v := historyVisibleVal.(type) { + case bool: + historyVisible = v + case string: + historyVisible = v == "true" || v == "1" || v == "yes" + case int: + historyVisible = v != 0 + case float64: + historyVisible = v != 0 + } + } } // First ensure chat record exists @@ -639,7 +654,7 @@ func (conv *Xun) SaveHistory(sid string, messages []map[string]interface{}, cid "chat_id": cid, "sid": userID, "assistant_id": assistantID, - "silent": silent, + "silent": silent || historyVisible == false, "created_at": time.Now(), }) @@ -653,7 +668,7 @@ func (conv *Xun) SaveHistory(sid string, messages []map[string]interface{}, cid Where("sid", userID). Update(map[string]interface{}{ "assistant_id": assistantID, - "silent": silent, + "silent": silent || historyVisible == false, }) if err != nil { return err diff --git a/neo/types.go b/neo/types.go index 6e6cb343..c41b10f2 100644 --- a/neo/types.go +++ b/neo/types.go @@ -14,7 +14,7 @@ import ( type DSL struct { ID string `json:"-" yaml:"-"` Name string `json:"name,omitempty" yaml:"name,omitempty"` - Use string `json:"use,omitempty" yaml:"use,omitempty"` // Which assistant to use default + Use *Use `json:"use,omitempty" yaml:"use,omitempty"` // Which assistant to use default, title, prompt Guard string `json:"guard,omitempty" yaml:"guard,omitempty"` Connector string `json:"connector" yaml:"connector"` StoreSetting store.Setting `json:"store" yaml:"store"` @@ -34,6 +34,13 @@ type DSL struct { GuardHandlers []gin.HandlerFunc `json:"-" yaml:"-"` } +// Use the use setting for the assistant +type Use struct { + Default string `json:"default,omitempty" yaml:"default,omitempty"` + Title string `json:"title,omitempty" yaml:"title,omitempty"` + Prompt string `json:"prompt,omitempty" yaml:"prompt,omitempty"` +} + // VisionSetting the vision setting type VisionSetting struct { Storage driver.StorageConfig `json:"storage" yaml:"storage"` diff --git a/sui/libsui/agent.ts b/sui/libsui/agent.ts index ca2df1ad..8a3c38ea 100644 --- a/sui/libsui/agent.ts +++ b/sui/libsui/agent.ts @@ -59,6 +59,8 @@ class Agent { private chat_id?: string; private es: EventSource | null; private context: Record; + private silent?: boolean = false; + private history_visible?: boolean = false; /** * Agent constructor @@ -72,6 +74,28 @@ class Agent { this.chat_id = option.chat_id; this.es = null; this.context = option.context || {}; + + // Set silent mode, default is true + if (option.silent !== undefined) { + this.silent = + option.silent === true || + option.silent === "true" || + option.silent === 1 || + option.silent === "1" + ? false + : true; + } + + // Set history visible mode, default is false + if (option.history_visible !== undefined) { + this.history_visible = + option.history_visible === true || + option.history_visible === "true" || + option.history_visible === 1 || + option.history_visible === "1" + ? true + : false; + } } /** @@ -152,10 +176,12 @@ class Agent { 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}?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 { @@ -447,6 +473,8 @@ type AgentInput = interface AgentOption { host?: string; token: string; + silent?: boolean | string | number; + history_visible?: boolean | string | number; chat_id?: string; context?: Record; }