lembas -l / --local: everything in the project, nothing written elsewhere
Config, data and state are rooted at <project>/.agent/local/lembas (or .lembas/), kept out of git; a local directory the repository carries is refused. The user's logins and connections.yaml are read, never written; the user's config.yaml is not read. The TUI is started with TMPDIR inside it (the compiled binary unpacks its native library there) and OpenTUI's cache goes there too; the agent's commands keep the user's TMPDIR. An instance serves models, chat, speech and the balance only: the link, /remote, the service and the hub are off, deletes are not sent, and the server library, search, fetch, embeddings and personalization are not used. Self-update and uninstall are refused. hardline_disable is ignored, and tools treat the local directory as outside the project. The smoke test runs a whole local session in the compiled binary and checks that HOME, the XDG directories and TMPDIR gained nothing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
27 files changed
+636
-105
No files matched your search
+2
-1
@@ -5,6 +5,7 @@ import { mkdirSync, writeFileSync } from "node:fs"
|
||||
import { assertProjectFile } from "./project/safe.ts"
|
||||
import { dirname, join } from "node:path"
|
||||
import { findSetting, globalConfigFile, legacyInstructionFiles, parseValue, readRaw, SettingError, SETTINGS, show, sourceOf, writeKey, type Entry, type Scope, type SettingDef } from "./config/settings.ts"
|
||||
import { isLocal } from "./config/paths.ts"
|
||||
|
||||
export interface SettingsHost {
|
||||
/** The project's config.yaml, when the project is trusted (else project scope is refused). */
|
||||
@@ -87,7 +88,7 @@ export class Settings {
|
||||
}
|
||||
if (!def.reload) this.host.apply(key, value)
|
||||
|
||||
const where = scope === "session" ? "for this session" : elsewhere ? "for your account" : scope === "global" ? "in the global config" : "in this project's config"
|
||||
const where = scope === "session" ? "for this session" : elsewhere ? "for your account" : scope === "global" ? (isLocal() ? "in local mode's config" : "in the global config") : "in this project's config"
|
||||
let message = `${key} = ${show(value)} ${where}`
|
||||
if (def.reload) message += "; it takes effect from the next start (/reload)"
|
||||
for (const n of notes) message += `; ${n}`
|
||||
|
||||
Reference in new issue
Block a user