export * as ConfigExperimental from "./experimental.js" import { Schema } from "effect" import { NonNegativeInt, optional } from "../schema.js" import { ConfigModel } from "./model.js" import { ConfigPolicy } from "./policy.js" export class Info extends Schema.Class("ConfigExperimental.Info")({ portable_shell_scanner: Schema.Boolean.pipe(optional).annotate({ description: "Deprecated: the built-in shell permission scanner is now always enabled.", }), todo: Schema.Boolean.pipe(optional).annotate({ description: "Enable the experimental todowrite tool. Defaults to false.", }), background_compaction: Schema.Boolean.pipe(optional).annotate({ description: "Enable experimental background compaction: summarize the conversation in the background as it nears the compaction threshold, so automatic compaction does not wait for the summary. Background summaries that are never used still cost tokens. Defaults to false.", }), media_blob: Schema.Boolean.pipe(optional).annotate({ description: "Store new session media once in a deduplicated blob table instead of inline in every message row. Defaults to false.", }), image_generate: Schema.Union([ Schema.Boolean, Schema.Struct({ model: ConfigModel.Selection.pipe(optional).annotate({ description: "Default model for the experimental_image_generate tool when the agent doesn't choose one, as providerID/modelID. Falls back to automatic selection when it isn't available.", }), }), ]) .pipe(optional) .annotate({ description: "Settings for the experimental_image_generate tool, which is offered while a connected provider has an image model.", }), schedules: Schema.Boolean.pipe(optional).annotate({ description: "Enable experimental scheduled tasks that wake a session with a prompt. Defaults to false.", }), artifacts: Schema.Boolean.pipe(optional).annotate({ description: "Enable experimental artifacts backed by pluggable providers. Defaults to false.", }), subagent_depth: NonNegativeInt.pipe(optional).annotate({ description: "Maximum subagent nesting depth. Defaults to 1.", }), location_idle_timeout: Schema.Union([Schema.DurationFromString, Schema.Literal(false)]) .pipe(optional) .annotate({ description: 'How long a location can go without session activity before its services are unloaded. Running sessions and background jobs keep a location loaded. Set to false to never unload (default: "60 minutes")', }), policies: ConfigPolicy.Info.pipe(Schema.Array, optional).annotate({ description: "Deprecated: use top-level policies. Ordered policies controlling access to configured resources", }), }) {}