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
@@ -10,6 +10,7 @@
|
||||
// library — with no `library:` written anywhere, a login whose token has the `library` scope
|
||||
// means the account's library (`lembas`); `library: local` written keeps this machine's.
|
||||
import { existsSync, readFileSync } from "node:fs"
|
||||
import { isLocal } from "../config/paths.ts"
|
||||
import type { Config } from "../config/schema.ts"
|
||||
import { PERSONALITIES } from "../config/schema.ts"
|
||||
import { LembasError, savePersonalization, usage, type Personalization, type Usage } from "./client.ts"
|
||||
@@ -59,6 +60,7 @@ export function withInstancePersonalization(config: Config): { config: Config; c
|
||||
* web UI has), and a PUT of the session's copy would wipe them. The cache takes what the instance
|
||||
* answered. */
|
||||
export async function pushPersonalization(key: (typeof PERSONAL_KEYS)[number], value: string): Promise<Personalization | undefined> {
|
||||
if (isLocal()) throw new LembasError("local mode (-l) keeps settings in the project, not in the account")
|
||||
const one = soleInstance()
|
||||
if (!one) throw new LembasError("not logged in to one LLeMbas instance")
|
||||
const saved = await savePersonalization(one.instance.base_url, one.token, one.instance.ca ? { ca: one.instance.ca } : undefined, { enabled: true, [key]: value })
|
||||
|
||||
Reference in new issue
Block a user