@codeworksh/harness 0.3.0 → 0.4.0-canary.50.1.g9fe7a616

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -111,11 +111,7 @@ const providerFrom = (sandbox, options) => {
111
111
  }
112
112
  },
113
113
  mkdir: async (path, mkdirOptions) => {
114
- if (!mkdirOptions?.recursive) {
115
- await sandbox.fs.createFolder(path, "755");
116
- return;
117
- }
118
- const command = `mkdir -p ${(0, shell_exports.quote)(path)}`;
114
+ const command = mkdirOptions?.recursive ? `mkdir -p ${(0, shell_exports.quote)(path)}` : `mkdir ${(0, shell_exports.quote)(path)}`;
119
115
  const result = await sandbox.process.executeCommand(command, options.cwd, void 0, options.execTimeout);
120
116
  assertCommandSucceeded(command, result);
121
117
  },
@@ -124,8 +120,9 @@ const providerFrom = (sandbox, options) => {
124
120
  try {
125
121
  await sandbox.fs.deleteFile(path, rmOptions?.recursive);
126
122
  } catch (cause) {
127
- if (rmOptions?.force && !await filesystem.exists(path)) return;
128
- throw cause;
123
+ if (await filesystem.exists(path)) throw cause;
124
+ if (rmOptions?.force) return;
125
+ throw Object.assign(enoent("rm", path), { cause });
129
126
  }
130
127
  },
131
128
  realpath: async (path) => {
@@ -326,4 +323,4 @@ const config = (value) => ({
326
323
  //#endregion
327
324
  export { RuntimeConfig as a, sandbox as c, ResourcesConfig as i, CreateConfig as n, config as o, Options as r, make as s, ClientOptions as t };
328
325
 
329
- //# sourceMappingURL=daytona-D4sNwzSr.mjs.map
326
+ //# sourceMappingURL=daytona-BqRoRhe7.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daytona-BqRoRhe7.mjs","names":["make","SandboxIO","SandboxInstance","quoteArgv","quote","SandboxFileSystem","resolveCwd","ShellError","RemoteFileSystem.make","Shell","SandboxResource","EnvDaytona.SPILL_PATH","EnvDaytona.mountCwd","EnvDaytona.transport"],"sources":["../../src/sandboxes/daytona/fs.ts","../../src/sandboxes/daytona/provider.ts","../../src/sandboxes/daytona/index.ts"],"sourcesContent":["import { posix } from \"../../util/posix.ts\";\nimport { SandboxFileSystem } from \"../../sandbox/fs/filesystem.ts\";\n\nexport type FileStat = SandboxFileSystem.FileStat;\n\nexport interface Interface extends SandboxFileSystem.Provider {\n\treadonly lstat?: (path: string) => Promise<FileStat>;\n}\n\nexport interface Options {\n\treadonly cwd?: string;\n}\n\nconst resolvePath = (path: string, options?: Options) => {\n\tconst normalized = posix.normalize(path);\n\tif (options?.cwd === undefined || posix.isAbsolute(normalized)) return normalized;\n\treturn posix.normalize(posix.join(options.cwd, normalized));\n};\n\n/** Resolve provider paths without adding policy or mutable working-directory state. */\nexport const make = (provider: Interface, options?: Options): SandboxFileSystem.Provider => {\n\tconst resolve = (path: string) => resolvePath(path, options);\n\n\treturn {\n\t\treadFile: (path) => provider.readFile(resolve(path)),\n\t\treadFileBuffer: (path) => provider.readFileBuffer(resolve(path)),\n\t\treadBytes: (path, offset, length) => provider.readBytes(resolve(path), offset, length),\n\t\twriteFile: (path, content) => provider.writeFile(resolve(path), content),\n\t\tstat: (path) => provider.stat(resolve(path)),\n\t\t...(provider.lstat === undefined ? {} : { lstat: (path: string) => provider.lstat!(resolve(path)) }),\n\t\treaddir: (path) => provider.readdir(resolve(path)),\n\t\texists: (path) => provider.exists(resolve(path)),\n\t\tmkdir: (path, mkdirOptions) => provider.mkdir(resolve(path), mkdirOptions),\n\t\trm: (path, rmOptions) => provider.rm(resolve(path), rmOptions),\n\t\trealpath: (path) => provider.realpath(resolve(path)),\n\t\tscanLines: (path, scanOptions) => provider.scanLines(resolve(path), scanOptions),\n\t};\n};\n\nexport const withProvider = make;\n","/* oxlint-disable effecttsgo/async-function -- Daytona's SDK boundary is Promise-based. */\nimport { Context, DateTime, Effect, Layer, Option, Schema } from \"effect\";\nimport { Buffer } from \"node:buffer\";\nimport { posix } from \"../../util/posix.ts\";\nimport { sanitizeError } from \"../../sandbox/errors.ts\";\nimport { SandboxFileSystem } from \"../../sandbox/fs/filesystem.ts\";\nimport { SandboxInstance } from \"../../sandbox/instance.ts\";\nimport { SandboxIO } from \"../../sandbox/io.ts\";\nimport { SandboxResource } from \"../../sandbox/resource.ts\";\nimport { type ISandboxExe, quote, quoteArgv, resolveCwd, Shell, ShellError } from \"../../sandbox/shell/shell.ts\";\nimport * as RemoteFileSystem from \"./fs.ts\";\n\ntype CodeLanguage = import(\"@daytona/sdk\").CodeLanguage;\ntype Daytona = import(\"@daytona/sdk\").Daytona;\ntype FileInfo = import(\"@daytona/sdk\").FileInfo;\ntype Image = import(\"@daytona/sdk\").Image;\ntype RemoteSandbox = import(\"@daytona/sdk\").Sandbox;\ntype Resources = import(\"@daytona/sdk\").Resources;\n\n/** Fallback when Daytona cannot report a snapshot/image-specific work directory. */\nexport const DEFAULT_CWD = \"/home/daytona\";\n/** Where oversized tool output is written inside the sandbox. */\nexport const SPILL_PATH = \"/tmp\";\n\n/**\n * The mount cwd for a Daytona namespace.\n *\n * An absolute override replaces the namespace default outright, so the\n * `getWorkDir()` round-trip is skipped: it would discover a value we then throw\n * away. Otherwise the sandbox's own work directory is the default, and\n * {@link DEFAULT_CWD} covers a snapshot or image that reports none.\n *\n * Taken as a thunk rather than read off the sandbox so all three branches are\n * testable without provisioning one — this decides where every Daytona mount\n * roots, and §8.1 makes a wrong answer here resolve silently rather than fail.\n */\nexport const mountCwd = async (\n\tcwd: string | undefined,\n\tgetWorkDir: () => Promise<string | undefined>,\n): Promise<string> => {\n\tconst defaultCwd = posix.isAbsolute(cwd ?? \"\") ? DEFAULT_CWD : ((await getWorkDir()) ?? DEFAULT_CWD);\n\treturn SandboxIO.resolveMountCwd(defaultCwd, cwd);\n};\n\nexport class DaytonaError extends Schema.TaggedError<DaytonaError>()(\"DaytonaError\", {\n\tsanitized: SandboxInstance.PersistedError,\n}) {}\n\nexport interface Options {\n\t/** API key. Falls back to the `DAYTONA_API_KEY` env var when omitted. */\n\treadonly apiKey?: string | undefined;\n\t/** API URL. Falls back to `DAYTONA_API_URL` / the SDK default. */\n\treadonly apiUrl?: string | undefined;\n\t/** Target region. Falls back to `DAYTONA_TARGET` / the SDK default. */\n\treadonly target?: string | undefined;\n\t/** Reuse an existing sandbox by id or name instead of creating one. */\n\treadonly sandboxId?: string | undefined;\n\t/** Durable instance identity for this namespace. Supplied by the Controller. */\n\treadonly instanceId?: SandboxInstance.ID | undefined;\n\t/** Snapshot to create the sandbox from. */\n\treadonly snapshot?: string | undefined;\n\t/** Image (registry reference or declarative `Image`) to create the sandbox from. */\n\treadonly image?: string | Image | undefined;\n\t/** Runtime used for code execution. Defaults to `\"typescript\"`. */\n\treadonly language?: CodeLanguage | string | undefined;\n\t/** Environment variables baked into the sandbox. */\n\treadonly envVars?: Record<string, string> | undefined;\n\t/** Resource allocation (cpu / memory / disk). */\n\treadonly resources?: Resources | undefined;\n\t/** OS user to run as inside the sandbox. */\n\treadonly user?: string | undefined;\n\t/**\n\t * Mount working directory. Relative values resolve against `getWorkDir()`;\n\t * omitted values use it, with `/home/daytona` as the provider fallback.\n\t */\n\treadonly cwd?: string | undefined;\n\t/** Idle minutes before the sandbox auto-stops. */\n\treadonly autoStopInterval?: number | undefined;\n\t/** Per-command timeout in seconds. 0 means no timeout. */\n\treadonly execTimeout?: number | undefined;\n}\n\ninterface RemoteState {\n\treadonly sandbox: RemoteSandbox;\n\treadonly cwd: string;\n}\n\nclass Remote extends Context.Service<Remote, RemoteState>()(\"@codeworksh/harness/sandboxes/daytona/provider/Remote\") {}\n\nconst assertCommandSucceeded = (command: string, result: { exitCode: number; result?: string }) => {\n\tif (result.exitCode !== 0) throw new Error(result.result || `command failed (${result.exitCode}): ${command}`);\n};\n\nconst dateFrom = (value: string | undefined) => {\n\tif (value === undefined) return undefined;\n\treturn Option.getOrUndefined(DateTime.make(value).pipe(Option.map(DateTime.toDateUtc)));\n};\n\nexport const createSandbox = (daytona: Daytona, options: Options) => {\n\tconst base = {\n\t\tlanguage: options.language ?? \"typescript\",\n\t\t...(options.envVars === undefined ? {} : { envVars: options.envVars }),\n\t\t...(options.user === undefined ? {} : { user: options.user }),\n\t\t...(options.autoStopInterval === undefined ? {} : { autoStopInterval: options.autoStopInterval }),\n\t\tautoDeleteInterval: -1,\n\t};\n\treturn options.image !== undefined\n\t\t? daytona.create({\n\t\t\t\t...base,\n\t\t\t\timage: options.image,\n\t\t\t\t...(options.resources === undefined ? {} : { resources: options.resources }),\n\t\t\t})\n\t\t: daytona.create({ ...base, ...(options.snapshot === undefined ? {} : { snapshot: options.snapshot }) });\n};\n\nconst remote = (options: Options) =>\n\tLayer.effect(\n\t\tRemote,\n\t\tEffect.tryPromise({\n\t\t\ttry: async (): Promise<RemoteState> => {\n\t\t\t\tconst { Daytona } = await import(\"@daytona/sdk\");\n\t\t\t\tconst daytona = new Daytona({\n\t\t\t\t\t...(options.apiKey === undefined ? {} : { apiKey: options.apiKey }),\n\t\t\t\t\t...(options.apiUrl === undefined ? {} : { apiUrl: options.apiUrl }),\n\t\t\t\t\t...(options.target === undefined ? {} : { target: options.target }),\n\t\t\t\t});\n\t\t\t\tconst sandbox = options.sandboxId\n\t\t\t\t\t? await daytona.get(options.sandboxId)\n\t\t\t\t\t: await createSandbox(daytona, options);\n\t\t\t\treturn {\n\t\t\t\t\tsandbox,\n\t\t\t\t\tcwd: await mountCwd(options.cwd, () => sandbox.getWorkDir()),\n\t\t\t\t};\n\t\t\t},\n\t\t\tcatch: (cause) => new DaytonaError({ sanitized: sanitizeError(cause) }),\n\t\t}),\n\t);\n\nexport const statsFrom = (info: FileInfo): RemoteFileSystem.FileStat => {\n\tconst symlink = info.mode === undefined ? undefined : info.mode.startsWith(\"l\");\n\tconst mtime = dateFrom(info.modifiedAt ?? info.modTime);\n\n\t// omit size/mtime/isSymbolicLink the toolbox did not report — never fabricate\n\treturn {\n\t\tisFile: !info.isDir && symlink !== true,\n\t\tisDirectory: info.isDir,\n\t\t...(symlink === undefined ? {} : { isSymbolicLink: symlink }),\n\t\t...(info.size === undefined ? {} : { size: info.size }),\n\t\t...(mtime === undefined ? {} : { mtime }),\n\t};\n};\n\ntype RemoteFilesystemProvider = Pick<\n\tRemoteFileSystem.Interface,\n\t| \"readFile\"\n\t| \"readFileBuffer\"\n\t| \"readBytes\"\n\t| \"writeFile\"\n\t| \"stat\"\n\t| \"lstat\"\n\t| \"readdir\"\n\t| \"exists\"\n\t| \"mkdir\"\n\t| \"rm\"\n\t| \"realpath\"\n\t| \"scanLines\"\n>;\n\nconst enoent = (operation: string, path: string) =>\n\tObject.assign(new Error(`ENOENT: no such file or directory, ${operation} '${path}'`), { code: \"ENOENT\" });\n\n/** The toolbox rejects a missing path with its own 404; the filesystem contract expects `ENOENT`. */\nconst missing =\n\t(operation: string, path: string) =>\n\tasync (cause: unknown): Promise<never> => {\n\t\tconst { DaytonaFileNotFoundError } = await import(\"@daytona/sdk\");\n\t\tthrow cause instanceof DaytonaFileNotFoundError ? Object.assign(enoent(operation, path), { cause }) : cause;\n\t};\n\nconst providerFrom = (sandbox: RemoteSandbox, options: Options) => {\n\tconst run = async (argv: ReadonlyArray<string>) => {\n\t\tconst result = await sandbox.process.executeCommand(quoteArgv(argv), options.cwd, undefined, options.execTimeout);\n\t\treturn { exitCode: result.exitCode, stdout: result.result ?? \"\" };\n\t};\n\tconst filesystem: RemoteFilesystemProvider = {\n\t\treadFile: async (path: string) =>\n\t\t\t(await sandbox.fs.downloadFile(path).catch(missing(\"open\", path))).toString(\"utf8\"),\n\t\treadFileBuffer: async (path: string) =>\n\t\t\tnew Uint8Array(await sandbox.fs.downloadFile(path).catch(missing(\"open\", path))),\n\t\twriteFile: (path: string, content: string | Uint8Array) =>\n\t\t\tsandbox.fs.uploadFile(typeof content === \"string\" ? Buffer.from(content, \"utf8\") : Buffer.from(content), path),\n\t\tstat: async (path: string) => statsFrom(await sandbox.fs.getFileDetails(path).catch(missing(\"stat\", path))),\n\t\t// The toolbox file-details endpoint follows symlinks. Detect the entry\n\t\t// with the sandbox shell first so lstat never reports target metadata as\n\t\t// if it described the link itself.\n\t\tlstat: async (path: string) => {\n\t\t\tconst command = `test -L ${quote(path)}`;\n\t\t\tconst result = await sandbox.process.executeCommand(command, options.cwd, undefined, options.execTimeout);\n\t\t\tif (result.exitCode === 0) {\n\t\t\t\treturn { isFile: false, isDirectory: false, isSymbolicLink: true };\n\t\t\t}\n\t\t\tif (result.exitCode === 1)\n\t\t\t\treturn statsFrom(await sandbox.fs.getFileDetails(path).catch(missing(\"lstat\", path)));\n\t\t\tassertCommandSucceeded(command, result);\n\t\t\tthrow new Error(`unreachable lstat result for ${path}`);\n\t\t},\n\t\treaddir: async (path: string) =>\n\t\t\t(await sandbox.fs.listFiles(path).catch(missing(\"scandir\", path))).map((entry) => entry.name),\n\t\t// Only a genuine 404 means \"absent\". Auth, rate-limit, and transport\n\t\t// failures propagate: a caller that deletes records on absence must not\n\t\t// be told a path is gone because the API was briefly unreachable.\n\t\texists: async (path: string) => {\n\t\t\ttry {\n\t\t\t\tawait sandbox.fs.getFileDetails(path);\n\t\t\t\treturn true;\n\t\t\t} catch (cause) {\n\t\t\t\tconst { DaytonaNotFoundError } = await import(\"@daytona/sdk\");\n\t\t\t\tif (cause instanceof DaytonaNotFoundError) return false;\n\t\t\t\tthrow cause;\n\t\t\t}\n\t\t},\n\t\t// `createFolder` is `mkdir -p`; plain `mkdir` fails on a missing parent.\n\t\tmkdir: async (path: string, mkdirOptions?: { recursive?: boolean }) => {\n\t\t\tconst command = mkdirOptions?.recursive ? `mkdir -p ${quote(path)}` : `mkdir ${quote(path)}`;\n\t\t\tconst result = await sandbox.process.executeCommand(command, options.cwd, undefined, options.execTimeout);\n\t\t\tassertCommandSucceeded(command, result);\n\t\t},\n\t\trm: async (path: string, rmOptions?: { recursive?: boolean; force?: boolean }) => {\n\t\t\tif (rmOptions?.force && !(await filesystem.exists(path))) return;\n\t\t\ttry {\n\t\t\t\tawait sandbox.fs.deleteFile(path, rmOptions?.recursive);\n\t\t\t} catch (cause) {\n\t\t\t\tif (await filesystem.exists(path)) throw cause;\n\t\t\t\tif (rmOptions?.force) return;\n\t\t\t\tthrow Object.assign(enoent(\"rm\", path), { cause });\n\t\t\t}\n\t\t},\n\t\trealpath: async (path: string) => {\n\t\t\tfor (const script of SandboxFileSystem.realpathScripts) {\n\t\t\t\tconst command = quoteArgv([\"sh\", \"-c\", script, \"_\", path]);\n\t\t\t\tconst result = await sandbox.process.executeCommand(command, options.cwd, undefined, options.execTimeout);\n\t\t\t\tif (result.exitCode === 0) return (result.result ?? \"\").trimEnd();\n\t\t\t}\n\t\t\tthrow enoent(\"realpath\", path);\n\t\t},\n\t\tscanLines: SandboxFileSystem.Scan.viaShell(run),\n\t\treadBytes: SandboxFileSystem.readBytesViaShell(run),\n\t};\n\n\treturn filesystem;\n};\n\n// Daytona's execute API folds stderr into `result` and reports a single exit\n// code, so the shell surfaces the combined output as stdout and leaves stderr\n// empty rather than inventing a split.\nconst runCommand = (\n\tsandbox: RemoteSandbox,\n\toptions: Options,\n\tcommand: string,\n\topts?: { env?: Record<string, string>; cwd?: string },\n) =>\n\tEffect.tryPromise({\n\t\ttry: () =>\n\t\t\tsandbox.process.executeCommand(command, resolveCwd(options.cwd, opts?.cwd), opts?.env, options.execTimeout),\n\t\tcatch: (cause) => new ShellError({ command, cause }),\n\t}).pipe(Effect.map((response) => ({ stdout: response.result ?? \"\", stderr: \"\", exitCode: response.exitCode })));\n\nconst exec =\n\t(sandbox: RemoteSandbox, options: Options): ISandboxExe[\"exec\"] =>\n\t(command, opts) =>\n\t\trunCommand(sandbox, options, command, opts);\n\n// `executeCommand` takes a single string, so the vector is quoted here rather\n// than spawned; the per-call cwd rides the toolbox's own cwd argument instead\n// of a `cd` prefix.\nconst execArgv =\n\t(sandbox: RemoteSandbox, options: Options): ISandboxExe[\"execArgv\"] =>\n\t(argv, opts) =>\n\t\trunCommand(sandbox, options, quoteArgv(argv), opts);\n\nconst filesystemLayer = (options: Options) =>\n\tLayer.effect(\n\t\tSandboxFileSystem.Service,\n\t\tEffect.map(Remote, ({ sandbox, cwd }) => {\n\t\t\tconst mounted = { ...options, cwd };\n\t\t\treturn SandboxFileSystem.fromProvider(RemoteFileSystem.make(providerFrom(sandbox, mounted), { cwd }));\n\t\t}),\n\t);\n\nconst shellLayer = (options: Options) =>\n\tLayer.effect(\n\t\tShell,\n\t\tEffect.map(Remote, ({ sandbox, cwd }) => {\n\t\t\tconst mounted = { ...options, cwd };\n\t\t\treturn Shell.of({ exec: exec(sandbox, mounted), execArgv: execArgv(sandbox, mounted) });\n\t\t}),\n\t);\n\n/**\n * Cwd-neutral IO attachment for a lifecycle driver.\n *\n * Mount wrappers supply an absolute cwd to every public operation. Internal\n * filesystem helper commands already receive absolute paths, so the transport\n * itself keeps no mutable working-directory state and owns no resource\n * finalizer.\n */\nexport const transport = (\n\tsandbox: RemoteSandbox,\n\toptions: Pick<Options, \"execTimeout\"> = {},\n): Layer.Layer<SandboxFileSystem.Service | Shell> =>\n\tLayer.merge(\n\t\tLayer.succeed(\n\t\t\tSandboxFileSystem.Service,\n\t\t\tSandboxFileSystem.fromProvider(RemoteFileSystem.make(providerFrom(sandbox, options))),\n\t\t),\n\t\tLayer.succeed(\n\t\t\tShell,\n\t\t\tShell.of({\n\t\t\t\texec: exec(sandbox, options),\n\t\t\t\texecArgv: execArgv(sandbox, options),\n\t\t\t}),\n\t\t),\n\t);\n\n// Daytona's locator is the sandbox id. See `SandboxResource` for why this is a\n// shared tag rather than a Daytona-specific one.\nconst resourceLayer = Layer.effect(\n\tSandboxResource.Service,\n\tEffect.map(Remote, ({ sandbox }) => ({ providerResourceId: sandbox.id })),\n);\n\n// Identity is per remote sandbox, not per provider: two sandboxes both rooted at\n// the same directory must not share persisted directory records.\n//\n// The id is minted here only when the caller names none. A durable id is the\n// control plane's to mint and record — deriving one from the provider's own\n// locator is what §6.1 forbids — so a caller that needs the namespace to survive\n// a restart passes `instanceId` rather than relying on this.\nconst identityLayer = (options: Options) =>\n\tLayer.effect(\n\t\tSandboxIO.Current,\n\t\tEffect.map(Remote, ({ cwd }) =>\n\t\t\tSandboxIO.remote({\n\t\t\t\tdriver: \"daytona\",\n\t\t\t\tid: options.instanceId ?? SandboxInstance.ID.create(),\n\t\t\t\tdefaultCwd: cwd,\n\t\t\t\tspillPath: SPILL_PATH,\n\t\t\t}),\n\t\t),\n\t);\n\n/**\n * A Daytona sandbox provides the runtime filesystem service directly plus\n * the sandbox's native remote shell. It intentionally does not provide VFS:\n * remote filesystems have no synchronous filesystem surface.\n */\nexport const layer = (options: Options = {}): Layer.Layer<SandboxIO.Provides | SandboxResource.Service, DaytonaError> =>\n\tLayer.mergeAll(\n\t\tSandboxIO.withMutation(Layer.mergeAll(filesystemLayer(options), shellLayer(options), identityLayer(options))),\n\t\tresourceLayer,\n\t).pipe(Layer.provide(remote(options)));\n\nexport const services = layer;\n","import { Effect, Layer, Option, Schema } from \"effect\";\nimport { SandboxDriver, SandboxInstance, SandboxProvider } from \"../../sandbox.ts\";\nimport * as EnvDaytona from \"./provider.ts\";\n\nexport const Options = Schema.Struct({\n\tapiKey: Schema.optional(Schema.String),\n\tapiUrl: Schema.optional(Schema.String),\n\ttarget: Schema.optional(Schema.String),\n});\nexport type Options = typeof Options.Type;\nexport const ClientOptions = Options;\nexport type ClientOptions = Options;\n\nexport const ResourcesConfig = Schema.Struct({\n\tcpu: Schema.optional(Schema.Finite),\n\tgpu: Schema.optional(Schema.Finite),\n\tmemory: Schema.optional(Schema.Finite),\n\tdisk: Schema.optional(Schema.Finite),\n});\nexport type ResourcesConfig = typeof ResourcesConfig.Type;\n\nexport const CreateConfig = Schema.Struct({\n\tsnapshot: Schema.optional(Schema.String),\n\timage: Schema.optional(Schema.String),\n\tlanguage: Schema.optional(Schema.String),\n\tenvVars: Schema.optional(Schema.Record(Schema.String, Schema.String)),\n\tresources: Schema.optional(ResourcesConfig),\n\tuser: Schema.optional(Schema.String),\n\tcwd: Schema.optional(Schema.String),\n\tautoStopInterval: Schema.optional(Schema.Finite),\n\texecTimeout: Schema.optional(Schema.Finite),\n});\nexport type CreateConfig = typeof CreateConfig.Type;\n\nexport const RuntimeConfig = Schema.Struct({\n\tdefaultCwd: SandboxDriver.AbsolutePath,\n\tspillPath: Schema.optional(SandboxDriver.AbsolutePath),\n\tuser: Schema.optional(Schema.String),\n\texecTimeout: Schema.optional(Schema.Finite),\n});\nexport type RuntimeConfig = typeof RuntimeConfig.Type;\n\nconst name = SandboxDriver.Name.make(\"daytona\");\ntype DaytonaSdk = typeof import(\"@daytona/sdk\");\ntype RemoteSandbox = import(\"@daytona/sdk\").Sandbox;\ntype Resources = import(\"@daytona/sdk\").Resources;\n\nconst statusFrom = (\n\tstate: RemoteSandbox[\"state\"],\n): {\n\treadonly status: SandboxInstance.Status;\n\treadonly providerStatus: string;\n} => {\n\tconst providerStatus = state ?? \"unknown\";\n\treturn {\n\t\tstatus:\n\t\t\tstate === \"stopped\" || state === \"archived\"\n\t\t\t\t? \"offline\"\n\t\t\t\t: state === \"stopping\" || state === \"archiving\" || state === \"snapshotting\" || state === \"destroying\"\n\t\t\t\t\t? \"suspending\"\n\t\t\t\t\t: state === \"destroyed\"\n\t\t\t\t\t\t? \"unavail\"\n\t\t\t\t\t\t: state === \"error\" || state === \"build_failed\" || state === \"unknown\"\n\t\t\t\t\t\t\t? \"faulted\"\n\t\t\t\t\t\t\t: \"online\",\n\t\tproviderStatus,\n\t};\n};\n\nconst shouldWake = (sandbox: RemoteSandbox): boolean => sandbox.state === \"stopped\" || sandbox.state === \"archived\";\n\nexport const make = (\n\tclient: ClientOptions = {},\n): SandboxDriver.Driver<CreateConfig, RuntimeConfig> & SandboxDriver.Registration => {\n\tconst redact = SandboxProvider.makeRedactor([client.apiKey ?? \"\"]);\n\tconst daytona = (sdk: DaytonaSdk) =>\n\t\tnew sdk.Daytona({\n\t\t\t...(client.apiKey === undefined ? {} : { apiKey: client.apiKey }),\n\t\t\t...(client.apiUrl === undefined ? {} : { apiUrl: client.apiUrl }),\n\t\t\t...(client.target === undefined ? {} : { target: client.target }),\n\t\t});\n\n\tconst attempt = <A>(\n\t\toperation: string,\n\t\trun: (sdk: DaytonaSdk) => Promise<A>,\n\t): Effect.Effect<A, SandboxProvider.SandboxProviderError> =>\n\t\tEffect.suspend(() => {\n\t\t\tlet sdk: DaytonaSdk | undefined;\n\t\t\treturn Effect.tryPromise({\n\t\t\t\ttry: () =>\n\t\t\t\t\timport(\"@daytona/sdk\").then((loaded) => {\n\t\t\t\t\t\tsdk = loaded;\n\t\t\t\t\t\treturn run(loaded);\n\t\t\t\t\t}),\n\t\t\t\tcatch: (cause) =>\n\t\t\t\t\tSandboxProvider.providerError({\n\t\t\t\t\t\tdriver: name,\n\t\t\t\t\t\toperation,\n\t\t\t\t\t\tcause,\n\t\t\t\t\t\tredact,\n\t\t\t\t\t\tnotFound: sdk !== undefined && cause instanceof sdk.DaytonaNotFoundError,\n\t\t\t\t\t}),\n\t\t\t});\n\t\t});\n\n\tconst get = (providerResourceId: string, operation: string) =>\n\t\tattempt(operation, (sdk) => daytona(sdk).get(providerResourceId));\n\n\tconst refresh = (sandbox: RemoteSandbox, operation: string) =>\n\t\tattempt(operation, () => sandbox.refreshData()).pipe(Effect.as(sandbox));\n\n\tconst observed = (sandbox: RemoteSandbox): SandboxDriver.Observed => ({\n\t\t...statusFrom(sandbox.state),\n\t\tmetadata: {\n\t\t\ttarget: sandbox.target,\n\t\t},\n\t});\n\n\tconst wake = (sandbox: RemoteSandbox, operation: string) =>\n\t\tshouldWake(sandbox)\n\t\t\t? attempt(operation, () => sandbox.start()).pipe(Effect.map(() => sandbox))\n\t\t\t: Effect.succeed(sandbox);\n\n\tconst runtime = (\n\t\tdefaultCwd: string,\n\t\tinput: { readonly user?: string | undefined; readonly execTimeout?: number | undefined },\n\t) => ({\n\t\tdefaultCwd: SandboxDriver.AbsolutePath.make(defaultCwd),\n\t\tspillPath: SandboxDriver.AbsolutePath.make(EnvDaytona.SPILL_PATH),\n\t\t...(input.user === undefined ? {} : { user: input.user }),\n\t\t...(input.execTimeout === undefined ? {} : { execTimeout: input.execTimeout }),\n\t});\n\n\treturn SandboxDriver.driver({\n\t\tname,\n\t\tkind: \"remote\",\n\t\tcapabilities: {\n\t\t\tinspect: true,\n\t\t\treattach: true,\n\t\t\twake: true,\n\t\t\tstop: true,\n\t\t\tdestroy: true,\n\t\t\t// Installed SDK 0.187.0 has no cancellation signal on\n\t\t\t// executeCommand; session execution cannot carry cwd/env safely.\n\t\t\tcancels: false,\n\t\t},\n\t\tcreateConfigCodec: CreateConfig,\n\t\truntimeConfigCodec: RuntimeConfig,\n\t\tcreate: ({ instanceId, config }) =>\n\t\t\tEffect.gen(function* () {\n\t\t\t\tconst base = {\n\t\t\t\t\tlanguage: config.language ?? \"typescript\",\n\t\t\t\t\t...(config.envVars === undefined ? {} : { envVars: config.envVars }),\n\t\t\t\t\t...(config.user === undefined ? {} : { user: config.user }),\n\t\t\t\t\t...(config.autoStopInterval === undefined ? {} : { autoStopInterval: config.autoStopInterval }),\n\t\t\t\t\tautoDeleteInterval: -1,\n\t\t\t\t\tlabels: {\n\t\t\t\t\t\t\"codework-instance\": instanceId,\n\t\t\t\t\t\t\"codework-managed\": \"true\",\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t\tconst sandbox = yield* attempt(\"create\", (loaded) => {\n\t\t\t\t\tconst sdk = daytona(loaded);\n\t\t\t\t\treturn config.image === undefined\n\t\t\t\t\t\t? sdk.create({ ...base, ...(config.snapshot === undefined ? {} : { snapshot: config.snapshot }) })\n\t\t\t\t\t\t: sdk.create({\n\t\t\t\t\t\t\t\t...base,\n\t\t\t\t\t\t\t\timage: config.image,\n\t\t\t\t\t\t\t\t...(config.resources === undefined ? {} : { resources: config.resources as Resources }),\n\t\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tconst defaultCwd = yield* attempt(\"create.cwd\", () =>\n\t\t\t\t\tEnvDaytona.mountCwd(config.cwd, () => sandbox.getWorkDir()),\n\t\t\t\t);\n\t\t\t\tconst state = statusFrom(sandbox.state);\n\t\t\t\treturn {\n\t\t\t\t\tproviderResourceId: sandbox.id,\n\t\t\t\t\tproviderStatus: state.providerStatus,\n\t\t\t\t\truntimeConfig: runtime(defaultCwd, config),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\ttarget: sandbox.target,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}),\n\t\truntimeConfigFor: ({ providerResourceId, overrides }) =>\n\t\t\tEffect.gen(function* () {\n\t\t\t\tconst sandbox = yield* get(providerResourceId, \"runtimeConfigFor\");\n\t\t\t\tconst defaultCwd =\n\t\t\t\t\toverrides?.defaultCwd ??\n\t\t\t\t\tSandboxDriver.AbsolutePath.make(\n\t\t\t\t\t\tyield* attempt(\"runtimeConfigFor.cwd\", () =>\n\t\t\t\t\t\t\tEnvDaytona.mountCwd(undefined, () => sandbox.getWorkDir()),\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\tdefaultCwd,\n\t\t\t\t\tspillPath: overrides?.spillPath ?? SandboxDriver.AbsolutePath.make(EnvDaytona.SPILL_PATH),\n\t\t\t\t\t...(overrides?.user === undefined ? { user: sandbox.user } : { user: overrides.user }),\n\t\t\t\t\t...(overrides?.execTimeout === undefined ? {} : { execTimeout: overrides.execTimeout }),\n\t\t\t\t};\n\t\t\t}),\n\t\tattach: (input) =>\n\t\t\tLayer.unwrap(\n\t\t\t\tEffect.gen(function* () {\n\t\t\t\t\tconst sandbox = yield* get(\n\t\t\t\t\t\tOption.getOrElse(input.providerResourceId, () => input.id),\n\t\t\t\t\t\t\"attach\",\n\t\t\t\t\t);\n\t\t\t\t\tyield* wake(sandbox, \"attach.wake\");\n\t\t\t\t\treturn EnvDaytona.transport(\n\t\t\t\t\t\tsandbox,\n\t\t\t\t\t\tinput.runtimeConfig.execTimeout === undefined\n\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t: { execTimeout: input.runtimeConfig.execTimeout },\n\t\t\t\t\t);\n\t\t\t\t}),\n\t\t\t),\n\t\tinspect: (input) =>\n\t\t\tEffect.flatMap(\n\t\t\t\tget(\n\t\t\t\t\tOption.getOrElse(input.providerResourceId, () => input.id),\n\t\t\t\t\t\"inspect\",\n\t\t\t\t),\n\t\t\t\t(sandbox) => Effect.map(refresh(sandbox, \"inspect.refresh\"), observed),\n\t\t\t),\n\t\twake: (input) =>\n\t\t\tEffect.flatMap(\n\t\t\t\tget(\n\t\t\t\t\tOption.getOrElse(input.providerResourceId, () => input.id),\n\t\t\t\t\t\"wake\",\n\t\t\t\t),\n\t\t\t\t(sandbox) => Effect.map(wake(sandbox, \"wake.start\"), observed),\n\t\t\t),\n\t\tstop: (input) =>\n\t\t\tEffect.flatMap(\n\t\t\t\tget(\n\t\t\t\t\tOption.getOrElse(input.providerResourceId, () => input.id),\n\t\t\t\t\t\"stop\",\n\t\t\t\t),\n\t\t\t\t(sandbox) => attempt(\"stop\", () => sandbox.stop()).pipe(Effect.map(() => observed(sandbox))),\n\t\t\t),\n\t\tdestroy: (input) =>\n\t\t\tEffect.flatMap(\n\t\t\t\tget(\n\t\t\t\t\tOption.getOrElse(input.providerResourceId, () => input.id),\n\t\t\t\t\t\"destroy\",\n\t\t\t\t),\n\t\t\t\t(sandbox) => attempt(\"destroy\", () => sandbox.delete()),\n\t\t\t),\n\t});\n};\n\nconst sandbox = SandboxDriver.module({\n\tapiVersion: SandboxDriver.apiVersion,\n\tname,\n\toptions: Options,\n\tmake,\n});\n\nexport const config = (value: CreateConfig) => ({ driver: \"daytona\" as const, config: value });\n\nexport default sandbox;\n"],"mappings":"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"}
package/effect.d.mts CHANGED
@@ -1156,6 +1156,8 @@ interface Interface$16 {
1156
1156
  readonly get: (sessionId: ID$1) => Effect.Effect<Option.Option<SessionRow>>;
1157
1157
  /** The space a session attaches to — its env and absolute location. None when the session is unknown. */
1158
1158
  readonly space: (sessionId: ID$1) => Effect.Effect<Option.Option<schema_d_exports$7.SpaceSchema.Info>>;
1159
+ /** The project a session belongs to, through its space. None when the session is unknown. */
1160
+ readonly project: (sessionId: ID$1) => Effect.Effect<Option.Option<schema_d_exports$9.ProjectSchema.Info>>;
1159
1161
  /** Sessions newest first, across the whole database when no scope is given. */
1160
1162
  readonly list: (input?: ListInput$1) => Effect.Effect<SessionRow[]>;
1161
1163
  readonly entry: (entryId: string) => Effect.Effect<Option.Option<HydratedEntry>>;
@@ -1484,7 +1486,7 @@ declare const layer$12: Layer.Layer<Service$12, never, import("@codeworksh/plugi
1484
1486
  declare const layerWith$2: <E, RIn>(sandbox: Sandbox.Sandbox<E, RIn>) => Layer.Layer<Service$12, E, RIn>;
1485
1487
  declare const defaultLayer$3: (rootPath: string) => Layer.Layer<Service$12, never, never>;
1486
1488
  declare namespace project_d_exports {
1487
- export { Interface$10 as Interface, project_d_exports as Project, Resolved$2 as Resolved, Service$11 as Service, defaultLayer$2 as defaultLayer, layer$11 as layer, layerWith$1 as layerWith, provisional };
1489
+ export { Interface$10 as Interface, project_d_exports as Project, ProjectNotFoundError, ResolveOptions, Resolved$2 as Resolved, Service$11 as Service, defaultLayer$2 as defaultLayer, layer$11 as layer, layerWith$1 as layerWith, provisional, rename };
1488
1490
  }
1489
1491
  /** Deterministic, env-local id for a directory without a portable identity. Never written to a marker. */
1490
1492
  declare const provisional: (env: instance_d_exports.SandboxInstance.ID, location: string) => schema_d_exports$9.ProjectSchema.ID;
@@ -1496,27 +1498,43 @@ interface Resolved$2 {
1496
1498
  /** `space.kind ∈ { primary, plain }` */
1497
1499
  readonly isDefault: boolean;
1498
1500
  }
1501
+ interface ResolveOptions {
1502
+ /**
1503
+ * Names the project when this resolution creates it, ahead of the repository's and the
1504
+ * folder's name. An existing project keeps its name; {@link rename} changes it.
1505
+ */
1506
+ readonly name?: string;
1507
+ }
1499
1508
  interface Interface$10 {
1500
- readonly resolveOrCreate: (cwd: schema_d_exports$8.AbsolutePath) => Effect.Effect<Resolved$2, Error$1>;
1509
+ readonly resolveOrCreate: (cwd: schema_d_exports$8.AbsolutePath, options?: ResolveOptions) => Effect.Effect<Resolved$2, Error$1>;
1501
1510
  readonly get: (id: schema_d_exports$9.ProjectSchema.ID) => Effect.Effect<Option.Option<schema_d_exports$9.ProjectSchema.Info>>;
1502
1511
  readonly list: () => Effect.Effect<schema_d_exports$9.ProjectSchema.Info[]>;
1503
1512
  }
1504
1513
  declare const Service_base$9: Context.ServiceClass<Service$11, "@codeworksh/harness/project/project/Service", Interface$10>;
1505
1514
  declare class Service$11 extends Service_base$9 {}
1506
1515
  declare const layer$11: Layer.Layer<Service$11, never, io_d_exports.SandboxIO.Current | import("@codeworksh/plugin/sandbox/filesystem").Service | Service$13 | Service$14 | Service$12 | SqlClient.SqlClient>;
1516
+ declare const ProjectNotFoundError_base: Schema.Class<ProjectNotFoundError, Schema.TaggedStruct<"ProjectNotFoundError", {
1517
+ readonly projectId: Schema.String;
1518
+ }>, import("effect/Cause").YieldableError>;
1519
+ declare class ProjectNotFoundError extends ProjectNotFoundError_base {}
1520
+ /** Renames a project. Needs only the database, not a mount: a name is the same in every env. */
1521
+ declare const rename: (input: {
1522
+ readonly projectId: string;
1523
+ readonly name: string;
1524
+ }) => Effect.Effect<schema_d_exports$9.ProjectSchema.Info, ProjectNotFoundError, SqlClient.SqlClient>;
1507
1525
  /** Takes an assembled sandbox — local or remote — not a local backend. */
1508
1526
  declare const layerWith$1: <E, RIn>(sandbox: Sandbox.Sandbox<E, RIn>) => Layer.Layer<Service$11, E | import("effect/Config").ConfigError, Exclude<RIn, SqlClient.SqlClient | import("@effect/sql-sqlite-node/SqliteClient").SqliteClient>>;
1509
1527
  declare const defaultLayer$2: (path: string) => Layer.Layer<Service$11, import("effect/Config").ConfigError, never>;
1510
1528
  declare namespace location_d_exports {
1511
1529
  export { DirectoryNotFoundError, Error, Info$5 as Info, Interface$9 as Interface, location_d_exports as Location, NotDirectoryError, Service$10 as Service, layer$10 as layer, layerMounted };
1512
1530
  }
1513
- declare const layer$10: () => Layer.Layer<Service, import("@codeworksh/plugin/location").Error, io_d_exports.SandboxIO.Current | Service$11>;
1531
+ declare const layer$10: (options?: ResolveOptions) => Layer.Layer<Service, import("@codeworksh/plugin/location").Error, io_d_exports.SandboxIO.Current | Service$11>;
1514
1532
  /**
1515
1533
  * `layer` with the whole resolution stack (Project, Space, Repo, Worktree, Git)
1516
1534
  * folded in. What remains is exactly the mount and the database — for callers
1517
1535
  * that already hold both, such as the runner and `Session.create`.
1518
1536
  */
1519
- declare const layerMounted: () => Layer.Layer<Service, import("@codeworksh/plugin/location").Error, io_d_exports.SandboxIO.Current | import("@codeworksh/plugin/sandbox/filesystem").Service | import("@codeworksh/plugin/sandbox/shell").Shell | import("effect/sql/SqlClient").SqlClient>;
1537
+ declare const layerMounted: (options?: ResolveOptions) => Layer.Layer<Service, import("@codeworksh/plugin/location").Error, io_d_exports.SandboxIO.Current | import("@codeworksh/plugin/sandbox/filesystem").Service | import("@codeworksh/plugin/sandbox/shell").Shell | import("effect/sql/SqlClient").SqlClient>;
1520
1538
  declare namespace global_d_exports {
1521
1539
  export { global_d_exports as Global, Interface$8 as Interface, Service$9 as Service, app, appConfigDir, authFile, defaultLayer$1 as defaultLayer, homeConfig, layer$9 as layer, layerWith, make$3 as make, resolve$3 as resolve };
1522
1540
  }
@@ -1736,6 +1754,7 @@ declare const parse$1: (path: string, source: string) => Effect.Effect<{
1736
1754
  supportsOpenAIGrammarTools?: boolean;
1737
1755
  supportsThinkingTokenBudget?: boolean;
1738
1756
  forceAdaptiveThinking?: boolean;
1757
+ supportsTemperature?: boolean;
1739
1758
  thinkingTokenBudgetField?: string;
1740
1759
  };
1741
1760
  contextWindow: number;
@@ -2637,7 +2656,7 @@ declare class ProviderError extends ProviderError_base {
2637
2656
  }
2638
2657
  declare const ModelCatalogError_base: Schema.Class<ModelCatalogError, Schema.TaggedStruct<"Runner.ModelCatalogError", {
2639
2658
  readonly path: Schema.String;
2640
- readonly reason: Schema.Literals<readonly ["missing", "unreadable", "empty", "invalid"]>;
2659
+ readonly reason: Schema.Literals<readonly ["unreadable", "empty", "invalid"]>;
2641
2660
  readonly detail: Schema.String;
2642
2661
  }>, import("effect/Cause").YieldableError>;
2643
2662
  declare class ModelCatalogError extends ModelCatalogError_base {
@@ -3546,6 +3565,7 @@ declare const models: Effect.Effect<Partial<Record<string, Record<string, {
3546
3565
  supportsOpenAIGrammarTools?: boolean;
3547
3566
  supportsThinkingTokenBudget?: boolean;
3548
3567
  forceAdaptiveThinking?: boolean;
3568
+ supportsTemperature?: boolean;
3549
3569
  thinkingTokenBudgetField?: string;
3550
3570
  };
3551
3571
  contextWindow: number;
@@ -3653,6 +3673,7 @@ declare const effective: (declared: readonly schema_d_exports$4.DeclaredModel[])
3653
3673
  supportsOpenAIGrammarTools?: boolean;
3654
3674
  supportsThinkingTokenBudget?: boolean;
3655
3675
  forceAdaptiveThinking?: boolean;
3676
+ supportsTemperature?: boolean;
3656
3677
  thinkingTokenBudgetField?: string;
3657
3678
  };
3658
3679
  contextWindow: number;
@@ -3997,6 +4018,10 @@ interface CreateInput extends RuntimeInput {
3997
4018
  * own directory. {@link link} assigns one afterwards.
3998
4019
  */
3999
4020
  readonly hostDir?: string;
4021
+ /** Names the session's project if this creates it; an existing project keeps its name. */
4022
+ readonly project?: {
4023
+ readonly name: string;
4024
+ };
4000
4025
  }
4001
4026
  interface AttachInput extends RuntimeInput {
4002
4027
  readonly sessionId: ID$1;
@@ -4029,6 +4054,20 @@ interface Info$1 {
4029
4054
  */
4030
4055
  readonly hasHostLink: boolean;
4031
4056
  readonly sandbox?: Info$2;
4057
+ /** Absent only when the session's space or project row is missing. */
4058
+ readonly project?: {
4059
+ readonly id: schema_d_exports$9.ProjectSchema.ID;
4060
+ readonly name: string;
4061
+ };
4062
+ /** Last activity, epoch milliseconds: every appended entry moves it. */
4063
+ readonly updatedAt: number;
4064
+ /** The model chosen for this session over settings; absent when settings decide. */
4065
+ readonly model?: {
4066
+ readonly provider: string;
4067
+ readonly id: string;
4068
+ };
4069
+ /** The thinking level chosen for this session over settings; absent when settings decide. */
4070
+ readonly thinkingLevel?: Model.ThinkingLevel;
4032
4071
  }
4033
4072
  interface Handle {
4034
4073
  readonly id: ID$1;
@@ -4054,6 +4093,16 @@ declare const create$1: (input?: CreateInput | undefined) => Effect.Effect<{
4054
4093
  hostDir?: string & import("effect/Brand").Brand<"AbsolutePath">;
4055
4094
  hasHostLink: boolean;
4056
4095
  sandbox?: instance_d_exports.SandboxInstance.Info;
4096
+ project?: {
4097
+ id: string & import("effect/Brand").Brand<"Project.ID">;
4098
+ name: string;
4099
+ };
4100
+ updatedAt: number;
4101
+ model?: {
4102
+ readonly provider: string;
4103
+ readonly id: string;
4104
+ };
4105
+ thinkingLevel?: "high" | "low" | "max" | "medium" | "minimal" | "off" | "xhigh";
4057
4106
  }, SessionNotFoundError, never>;
4058
4107
  prompt: (input: PromptInput) => Effect.Effect<Admitted, InvalidPromptError | PromptConflictError | SessionNotFoundError, never>;
4059
4108
  run: (input: PromptInput) => Effect.Effect<Admitted, InvalidPromptError | PromptConflictError | SessionNotFoundError, never>;
@@ -4082,6 +4131,16 @@ declare const link: (input: {
4082
4131
  hostDir?: string & import("effect/Brand").Brand<"AbsolutePath">;
4083
4132
  hasHostLink: boolean;
4084
4133
  sandbox?: instance_d_exports.SandboxInstance.Info;
4134
+ project?: {
4135
+ id: string & import("effect/Brand").Brand<"Project.ID">;
4136
+ name: string;
4137
+ };
4138
+ updatedAt: number;
4139
+ model?: {
4140
+ readonly provider: string;
4141
+ readonly id: string;
4142
+ };
4143
+ thinkingLevel?: "high" | "low" | "max" | "medium" | "minimal" | "off" | "xhigh";
4085
4144
  }, SessionNotFoundError, never>;
4086
4145
  prompt: (input: PromptInput) => Effect.Effect<Admitted, InvalidPromptError | PromptConflictError | SessionNotFoundError, never>;
4087
4146
  run: (input: PromptInput) => Effect.Effect<Admitted, InvalidPromptError | PromptConflictError | SessionNotFoundError, never>;
@@ -4108,6 +4167,16 @@ declare const relink: (input: RelinkInput) => Effect.Effect<{
4108
4167
  hostDir?: string & import("effect/Brand").Brand<"AbsolutePath">;
4109
4168
  hasHostLink: boolean;
4110
4169
  sandbox?: instance_d_exports.SandboxInstance.Info;
4170
+ project?: {
4171
+ id: string & import("effect/Brand").Brand<"Project.ID">;
4172
+ name: string;
4173
+ };
4174
+ updatedAt: number;
4175
+ model?: {
4176
+ readonly provider: string;
4177
+ readonly id: string;
4178
+ };
4179
+ thinkingLevel?: "high" | "low" | "max" | "medium" | "minimal" | "off" | "xhigh";
4111
4180
  }, SessionNotFoundError, never>;
4112
4181
  prompt: (input: PromptInput) => Effect.Effect<Admitted, InvalidPromptError | PromptConflictError | SessionNotFoundError, never>;
4113
4182
  run: (input: PromptInput) => Effect.Effect<Admitted, InvalidPromptError | PromptConflictError | SessionNotFoundError, never>;
@@ -25063,5 +25132,5 @@ type DateTimeUtcFromMillis = import__codeworksh_plugin_schema.DateTimeUtcFromMil
25063
25132
  type EventSchema = import__codeworksh_plugin_event.EventSchema;
25064
25133
  type SandboxError = import__codeworksh_plugin_sandbox_errors.SandboxError;
25065
25134
  type optional = import__codeworksh_plugin_schema.optional;
25066
- export { control_d_exports as Control, db_d_exports as Database, DateTimeUtcFromMillis, event_d_exports as Event, list_d_exports as EventList, registry_d_exports as EventRegistry, EventSchema, global_d_exports as Global, harness_d_exports as Harness, location_d_exports as Location, catalog_d_exports as ModelCatalog, index_d_exports as Plugin, schema_d_exports as PromptSchema, run_d_exports as Runner, sandbox_d_exports as Sandbox, SandboxError, session_d_exports as Session, session_d_exports$1 as SessionStore, settings_d_exports as Settings, state_d_exports as State, tool_d_exports as Tool, optional };
25135
+ export { control_d_exports as Control, db_d_exports as Database, DateTimeUtcFromMillis, event_d_exports as Event, list_d_exports as EventList, registry_d_exports as EventRegistry, EventSchema, global_d_exports as Global, harness_d_exports as Harness, location_d_exports as Location, catalog_d_exports as ModelCatalog, index_d_exports as Plugin, project_d_exports as Project, schema_d_exports as PromptSchema, run_d_exports as Runner, sandbox_d_exports as Sandbox, SandboxError, session_d_exports as Session, session_d_exports$1 as SessionStore, settings_d_exports as Settings, state_d_exports as State, tool_d_exports as Tool, optional };
25067
25136
  //# sourceMappingURL=effect.d.mts.map