@@ -21,6 +21,7 @@ import { parseUserConfig } from "@App/pkg/utils/yaml";
2121import { decodeRValue } from "@App/pkg/utils/message_value" ;
2222import { extractCronExpr } from "@App/pkg/utils/cron" ;
2323import { changeLanguage , initLanguage , t } from "@App/locales/locales" ;
24+ import { type TExtensionEnv } from "../extension/extension_env" ;
2425
2526const utime_1min = 60 * 1000 ;
2627const utime_1hr = 60 * 60 * 1000 ;
@@ -40,7 +41,8 @@ export class Runtime {
4041
4142 constructor (
4243 private windowMessage : WindowMessage ,
43- private api : Server
44+ private api : Server ,
45+ private readonly extensionEnvAsync : Promise < TExtensionEnv | undefined >
4446 ) {
4547 this . logger = LoggerCore . getInstance ( ) . logger ( { component : "sandbox" } ) ;
4648 // 重试队列,5s检查一次
@@ -171,7 +173,20 @@ export class Runtime {
171173 // 暂未实现执行完成后立马释放,会在下一次执行时释放
172174 await this . stopScript ( script . uuid ) ;
173175 }
174- const exec = new BgExecScriptWarp ( script , this . windowMessage ) ;
176+ const extensionEnv = await this . extensionEnvAsync ;
177+
178+ // 判断 run-in
179+ const runIn = script . metadata ?. [ "run-in" ] ?. [ 0 ] ;
180+ const inIncognitoContext = extensionEnv ?. inIncognitoContext ;
181+ if ( runIn && runIn !== "all" && typeof inIncognitoContext === "boolean" ) {
182+ // 判断插件运行环境
183+ const contextType = inIncognitoContext ? "incognito-tabs" : "normal-tabs" ;
184+ if ( runIn !== contextType ) {
185+ return ;
186+ }
187+ }
188+
189+ const exec = new BgExecScriptWarp ( script , this . windowMessage , extensionEnv ) ;
175190 this . execScriptMap . set ( script . uuid , exec ) ;
176191 proxyUpdateRunStatus ( this . windowMessage , { uuid : script . uuid , runStatus : SCRIPT_RUN_STATUS_RUNNING } ) ;
177192 // 修改掉脚本掉最后运行时间, 数据库也需要修改
0 commit comments