import type { CodeSandbox } from '../sandbox/code-sandbox.js'; import { type ScriptPackageRunner, type ScriptRunRequest, type ScriptRunResult } from './types.js'; /** 沙箱供给:同步实例或异步工厂(如按会话惰性创建沙箱) */ export type SandboxProvider = CodeSandbox | (() => Promise); export declare class DefaultScriptPackageRunner implements ScriptPackageRunner { private readonly sandboxProvider; constructor(sandboxProvider: SandboxProvider); private resolveSandbox; run(req: ScriptRunRequest): Promise; /** * 本地脚本包模式:entryFile 相对 bundleDir 解析。 * * 脚本内依赖 __file__ 相对路径回溯(SKILL_DIR = SCRIPT_DIR.parent、 * SKILLS_DIR = WORKSPACE/"skills"),并通过 sys.path.insert(SKILLS_DIR) * 导入 lib/config、读写各 skill 的 data 目录。因此必须把整个 * bundleDir/skills 目录树原样复制进沙箱根(保留 skills//scripts 结构), * 物化入口后直接 executeFile 运行,使路径回溯与 from lib import 完全等价于 * 原 skill 整包模式。 * * 两种来源: * 1) 磁盘 bundleDir 存在:直接读磁盘 entryFile + 递归复制 skills 目录树; * 2) DB 物化模式:磁盘 bundleDir 不存在但 bundleFiles 清单存在 —— 在临时目录 * 重建 bundleDir(按 relPath 落盘),再走与磁盘完全一致的物化逻辑,使 flow * 可完全 DB 化、跨环境独立运行。 */ private runBundledEntry; /** * 解析 bundleDir: * - 磁盘 bundleDir 存在 → 直接使用; * - 否则若携带 bundleFiles 清单 → 在临时目录按 relPath 重建并返回该目录 * (标记 __tmpBundleDir 以便运行后清理)。 */ private resolveBundleDir; /** 复制产物文件到沙箱工作目录,返回 名称→文件名 映射 */ private mountArtifacts; /** * 构建注入 inputs/artifacts 后的最终代码。 * Node:const __inputs__ = ...; const __artifacts__ = ...; 前缀 * Python:json.loads 包裹(JSON 字面量非合法 Python) */ private buildFinalCode; /** 从 stdout 解析 __FLOW_RESULT__ 行,其余行作为日志保留 */ private parseResult; } //# sourceMappingURL=script-package-runner.d.ts.map