flavor-code 1.2.3 → 1.2.5
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.
- package/README.md +369 -1090
- package/README.zh-CN.md +369 -0
- package/dist/{app-SCHNJSXI.js → app-3DXEGSS7.js} +15 -9
- package/dist/{chunk-XGCFBGBB.js → chunk-3TYRDK34.js} +43 -38
- package/dist/{chunk-MVIMQEQT.js → chunk-HFR2WS6T.js} +0 -1
- package/dist/{chunk-DM64TM4Z.js → chunk-KKIBYDJI.js} +0 -1
- package/dist/{chunk-VOCZVFP7.js → chunk-N2S7USST.js} +0 -1
- package/dist/{chunk-XS2JU6S3.js → chunk-NVLYFU6P.js} +3 -4
- package/dist/{chunk-JZ322RCJ.js → chunk-S32JRDZK.js} +0 -1
- package/dist/{chunk-AHUOGT4I.js → chunk-Z3BW52MK.js} +1 -2
- package/dist/{claude-ink-ZL4UZMFY.js → claude-ink-WPWPEL5A.js} +3 -4
- package/dist/cli.js +9 -10
- package/dist/desktop/main.js +41 -36
- package/dist/desktop/preload.cjs +0 -1
- package/dist/desktop-renderer/assets/index-C66pDvHs.js +1 -2
- package/dist/desktop-renderer/index.html +14 -14
- package/dist/{devtools-SXJBSV2N.js → devtools-4QTPKBKK.js} +0 -1
- package/dist/{load-WQGNTCHC.js → load-XC5JYYBQ.js} +2 -3
- package/dist/sdk/index.js +5 -6
- package/package.json +7 -1
- package//346/212/200/346/234/257/346/226/271/346/241/210/346/212/245/345/221/212.md +1 -1
- package/dist/app-SCHNJSXI.js.map +0 -1
- package/dist/chunk-AHUOGT4I.js.map +0 -1
- package/dist/chunk-DM64TM4Z.js.map +0 -1
- package/dist/chunk-JZ322RCJ.js.map +0 -1
- package/dist/chunk-MVIMQEQT.js.map +0 -1
- package/dist/chunk-VOCZVFP7.js.map +0 -1
- package/dist/chunk-XGCFBGBB.js.map +0 -1
- package/dist/chunk-XS2JU6S3.js.map +0 -1
- package/dist/claude-ink-ZL4UZMFY.js.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/desktop/main.js.map +0 -1
- package/dist/desktop/preload.cjs.map +0 -1
- package/dist/desktop-renderer/assets/index-C66pDvHs.js.map +0 -1
- package/dist/devtools-SXJBSV2N.js.map +0 -1
- package/dist/load-WQGNTCHC.js.map +0 -1
- package/dist/sdk/index.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli.tsx","../src/skills/manager.ts","../src/memory/cli.ts","../src/memory/manager.ts","../src/mcp/config-manager.ts","../src/mcp/cli.ts","../src/rpc/write-stream.ts","../src/eval/cli.ts","../src/execution/local.ts","../src/eval/schema.ts","../src/eval/runner.ts"],"sourcesContent":["import { realpathSync } from \"node:fs\";\r\nimport { homedir } from \"node:os\";\r\nimport { resolve } from \"node:path\";\r\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\r\nimport { Command } from \"commander\";\r\n\r\nimport { createProductionRuntime, type ProductionRuntime } from \"./production.js\";\r\nimport { initializeFlavor } from \"./init/project.js\";\r\nimport { message } from \"./utils/error.js\";\r\nimport { redactErrorText } from \"./utils/redact.js\";\r\nimport { packageVersion } from \"./utils/version.js\";\r\nimport { staticTaskLines } from \"./ui/task-progress-model.js\";\r\nimport { SkillManager } from \"./skills/manager.js\";\r\nimport { registerMemoryCommands } from \"./memory/cli.js\";\r\nimport { registerMcpCommands } from \"./mcp/cli.js\";\r\nimport { FlavorRpcServer } from \"./rpc/server.js\";\r\nimport { RpcWriteStreamBridge } from \"./rpc/write-stream.js\";\r\nimport { TraceRecorder } from \"./trace/recorder.js\";\r\nimport { runEvaluationFile } from \"./eval/cli.js\";\r\n\r\nexport function createProgram(): Command {\r\n const program = new Command()\r\n .name(\"flavor\")\r\n .description(\"Interactive coding agent\")\r\n .version(packageVersion())\r\n .option(\"-p, --print <prompt>\", \"run one prompt without the interactive UI\")\r\n .option(\"--resume [session-id]\", \"resume a saved session (latest when id is omitted)\")\r\n .option(\"--mode <mode>\", \"runtime mode: interactive or rpc\")\r\n .option(\"--workspace <path>\", \"workspace path (RPC mode)\")\r\n .option(\"--rpc-approvals\", \"allow an RPC client to resolve interactive tool approvals\")\r\n .option(\"--rpc-streamed-writes\", \"stream proposed file writes to an RPC client before committing them\")\r\n .option(\"--trace <path>\", \"write a redacted JSONL execution trace\");\r\n\r\n program\r\n .command(\"init [directory]\")\r\n .description(\"Initialize Flavor project files in a directory (defaults to cwd)\")\r\n .action(async (directory?: string) => {\r\n const cwd = directory ? resolve(directory) : process.cwd();\r\n try {\r\n const result = await initializeFlavor(cwd);\r\n process.stdout.write(`${result.created ? \"Created\" : \"Updated\"} ${result.path}\\n`);\r\n } catch (error) {\r\n process.stderr.write(`init: ${safeError(error)}\\n`);\r\n process.exitCode = 1;\r\n }\r\n });\r\n\r\n const skills = program.command(\"skills\").description(\"List and enable or disable project skills\");\r\n skills.command(\"list\", { isDefault: true }).description(\"List skills visible in the current project\").action(async () => {\r\n try {\r\n const entries = await new SkillManager({ workspace: process.cwd(), home: homedir() }).list();\r\n if (entries.length === 0) process.stdout.write(\"No skills found.\\n\");\r\n else for (const skill of entries) {\r\n process.stdout.write(`${skill.enabled ? \"on \" : \"off\"} ${skill.name} [${skill.source}] ${skill.description}\\n`);\r\n }\r\n } catch (error) {\r\n process.stderr.write(`skills: ${safeError(error)}\\n`);\r\n process.exitCode = 1;\r\n }\r\n });\r\n for (const enabled of [true, false]) {\r\n const action = enabled ? \"enable\" : \"disable\";\r\n skills.command(`${action} <name>`).description(`${enabled ? \"Enable\" : \"Disable\"} a skill for this project`).action(async (name: string) => {\r\n try {\r\n await new SkillManager({ workspace: process.cwd(), home: homedir() }).setEnabled(name, enabled);\r\n process.stdout.write(`${enabled ? \"Enabled\" : \"Disabled\"} ${name}.\\n`);\r\n } catch (error) {\r\n process.stderr.write(`skills: ${safeError(error)}\\n`);\r\n process.exitCode = 1;\r\n }\r\n });\r\n }\r\n\r\n registerMemoryCommands(program);\r\n registerMcpCommands(program);\r\n program.command(\"eval <spec>\")\r\n .option(\"--output <path>\", \"write the JSON report to a file\")\r\n .description(\"run a repeatable coding-agent evaluation\")\r\n .action(async (spec: string, command: { output?: string }) => {\r\n process.exitCode = await runEvaluationFile(spec, command.output);\r\n });\r\n\r\n program.action(async (options: {\r\n print?: string; resume?: string | boolean; mode?: string; workspace?: string; trace?: string; rpcApprovals?: boolean; rpcStreamedWrites?: boolean;\r\n }) => {\r\n const resumeSession = options.resume === true ? true : typeof options.resume === \"string\" ? options.resume : undefined;\r\n if (options.mode === \"rpc\") {\r\n process.exitCode = await runRpcMode({\r\n workspace: resolve(options.workspace ?? process.cwd()),\r\n ...(resumeSession === undefined ? {} : { resumeSession }),\r\n ...(options.trace === undefined ? {} : { trace: resolve(options.trace) }),\r\n interactiveApprovals: options.rpcApprovals === true,\r\n streamedWrites: options.rpcStreamedWrites === true,\r\n });\r\n return;\r\n }\r\n if (options.mode !== undefined && options.mode !== \"interactive\") {\r\n process.stderr.write(`Unsupported mode: ${options.mode}\\n`);\r\n process.exitCode = 2;\r\n return;\r\n }\r\n if (options.print !== undefined) {\r\n process.exitCode = await runPrint(options.print, {}, resumeSession);\r\n return;\r\n }\r\n if (!process.stdin.isTTY) {\r\n process.stderr.write(\"Interactive mode needs a TTY. Use --print <prompt> for scripts.\\n\");\r\n process.exitCode = 2;\r\n return;\r\n }\r\n setInteractiveProcessTitle();\r\n const [{ render, AlternateScreen }, { createElement }, { App }] = await Promise.all([\r\n import(\"./claude-ink/index.js\"), import(\"react\"), import(\"./ui/app.js\"),\r\n ]);\r\n const instance = await render(createElement(AlternateScreen, { mouseTracking: true },\r\n createElement(App, {\r\n workspace: process.cwd(), home: homedir(), ...(resumeSession === undefined ? {} : { resumeSession }),\r\n })), { exitOnCtrlC: false });\r\n await instance.waitUntilExit();\r\n });\r\n\r\n return program;\r\n}\r\n\r\nexport async function runRpcMode(options: {\r\n workspace: string;\r\n resumeSession?: string | true;\r\n trace?: string;\r\n interactiveApprovals?: boolean;\r\n streamedWrites?: boolean;\r\n}): Promise<number> {\r\n let recorder: TraceRecorder | undefined;\r\n try {\r\n const server = new FlavorRpcServer({\r\n input: process.stdin,\r\n output: process.stdout,\r\n workspace: options.workspace,\r\n createRuntime: async ({ workspace, output }) => {\r\n let activeRuntime: ProductionRuntime | undefined;\r\n const streamedWrites = options.streamedWrites ? new RpcWriteStreamBridge(output) : undefined;\r\n const onApprovalChange = (): void => {\r\n if (!options.interactiveApprovals) return;\r\n const approval = activeRuntime?.approvals.pending;\r\n output(approval === undefined\r\n ? { type: \"approval-cleared\" }\r\n : { type: \"approval-request\", request: approval });\r\n };\r\n const runtime = await createProductionRuntime({\r\n workspace,\r\n home: homedir(),\r\n approvalPolicy: \"deny\",\r\n rpcToolApprovals: options.interactiveApprovals === true,\r\n ...(streamedWrites === undefined ? {} : { beforeFileCommit: streamedWrites.preview.bind(streamedWrites) }),\r\n ...(options.interactiveApprovals ? { onApprovalChange } : {}),\r\n ...(options.resumeSession === undefined ? {} : { resumeSession: options.resumeSession }),\r\n output,\r\n });\r\n activeRuntime = runtime;\r\n Object.defineProperty(runtime, \"rpcApprovals\", { value: options.interactiveApprovals === true, enumerable: true });\r\n if (streamedWrites !== undefined) Object.defineProperty(runtime, \"rpcWrites\", { value: streamedWrites, enumerable: true });\r\n if (options.trace !== undefined) recorder = new TraceRecorder({\r\n path: options.trace, sessionId: runtime.sessionId,\r\n });\r\n return runtime;\r\n },\r\n onRecord: (kind, payload) => recorder?.record(kind, payload),\r\n });\r\n await server.start();\r\n await recorder?.close();\r\n return 0;\r\n } catch (error) {\r\n await recorder?.close().catch(() => undefined);\r\n process.stderr.write(`rpc: ${safeError(error)}\\n`);\r\n return 1;\r\n }\r\n}\r\n\r\nexport function setInteractiveProcessTitle(target: { title: string } = process): void {\r\n target.title = \"Flavor Code\";\r\n}\r\n\r\nexport interface PrintDependencies {\r\n createRuntime?: typeof createProductionRuntime;\r\n stdout?(text: string): void;\r\n stderr?(text: string): void;\r\n}\r\n\r\nexport async function runPrint(prompt: string, dependencies: PrintDependencies = {}, resumeSession?: string | true): Promise<number> {\r\n let code = 0;\r\n let runtime: ProductionRuntime;\r\n const stdout = dependencies.stdout ?? ((text: string) => process.stdout.write(text));\r\n const stderr = dependencies.stderr ?? ((text: string) => process.stderr.write(text));\r\n try {\r\n runtime = await (dependencies.createRuntime ?? createProductionRuntime)({\r\n workspace: process.cwd(), home: homedir(), approvalPolicy: \"deny\",\r\n ...(resumeSession === undefined ? {} : { resumeSession }),\r\n output(event) {\r\n if (event.type === \"text\") stdout(event.text);\r\n else if (event.type === \"notice\") stdout(`${event.message}\\n`);\r\n else if (event.type === \"tasks\") {\r\n for (const line of staticTaskLines(event.snapshot)) stdout(`${line}\\n`);\r\n }\r\n else if (event.type === \"error\") { stderr(`${event.error.code}: ${event.error.message}\\n`); code = 1; }\r\n },\r\n });\r\n } catch (error) {\r\n stderr(`startup: ${safeError(error)}\\n`);\r\n return 2;\r\n }\r\n try {\r\n await runtime.session.start();\r\n await runtime.session.submit(prompt);\r\n } catch (error) {\r\n stderr(`runtime: ${safeError(error)}\\n`); code = 1;\r\n } finally {\r\n try { await runtime.session.close(); }\r\n catch (error) { stderr(`runtime: ${safeError(error)}\\n`); code = 1; }\r\n try { await runtime.dispose(); }\r\n catch (error) { stderr(`runtime: ${safeError(error)}\\n`); code = 1; }\r\n }\r\n if (code === 0) stdout(\"\\n\");\r\n return code;\r\n}\r\n\r\nfunction safeError(error: unknown): string {\r\n return redactErrorText(message(error));\r\n}\r\n\r\nif (process.argv[1]) {\r\n const scriptPath = fileURLToPath(import.meta.url);\r\n if (realpathSync(scriptPath) === realpathSync(process.argv[1])) {\r\n try {\r\n await createProgram().parseAsync(process.argv);\r\n } catch (error) {\r\n process.stderr.write(`flavor: ${safeError(error)}\\n`);\r\n process.exitCode = 1;\r\n }\r\n }\r\n}\r\n","import { lstat, mkdir, readFile, readdir, realpath, rm, writeFile } from \"node:fs/promises\";\nimport { homedir } from \"node:os\";\nimport { isAbsolute, join, relative, resolve, sep } from \"node:path\";\n\nimport { stringify } from \"yaml\";\n\nimport { loadConfig, setProjectSkillDisabled } from \"../config/load.js\";\nimport { SkillNameSchema } from \"../config/schema.js\";\nimport { SkillRegistry, type SkillMetadata, type SkillSource } from \"./registry.js\";\nimport { PluginManifestSchema } from \"../plugins/types.js\";\n\nexport interface ManagedSkillSummary {\n readonly name: string;\n readonly description: string;\n readonly source: SkillSource;\n readonly root: string;\n readonly enabled: boolean;\n readonly editable: boolean;\n readonly disableModelInvocation: boolean;\n}\n\nexport interface ManagedSkill extends ManagedSkillSummary {\n readonly body: string;\n}\n\nexport interface SkillDraft {\n readonly name: string;\n readonly description: string;\n readonly body: string;\n readonly disableModelInvocation?: boolean;\n}\n\nexport interface SkillManagerOptions {\n workspace: string;\n home?: string;\n}\n\nexport class SkillManager {\n readonly #workspace: string;\n readonly #home: string;\n\n constructor(options: SkillManagerOptions) {\n this.#workspace = resolve(options.workspace);\n this.#home = resolve(options.home ?? homedir());\n }\n\n async list(): Promise<readonly ManagedSkillSummary[]> {\n const { registry, disabled } = await this.#registry();\n return Promise.all((await registry.discover()).map((metadata) => this.#summary(metadata, disabled)));\n }\n\n async get(name: string): Promise<ManagedSkill> {\n const validName = parseName(name);\n const { registry, disabled } = await this.#registry();\n const metadata = (await registry.discover()).find((skill) => skill.name === validName);\n if (metadata === undefined) throw new Error(`Skill not found: ${validName}`);\n return { ...await this.#summary(metadata, disabled), body: await registry.loadBody(metadata) };\n }\n\n async create(draft: SkillDraft): Promise<ManagedSkill> {\n const value = parseDraft(draft);\n const projectRoot = this.#projectRoot();\n const directory = join(projectRoot, value.name);\n await mkdir(projectRoot, { recursive: true, mode: 0o700 });\n try {\n await mkdir(directory, { mode: 0o700 });\n } catch (error) {\n if (isCode(error, \"EEXIST\")) throw new Error(`A project skill named \"${value.name}\" already exists`);\n throw error;\n }\n try {\n await writeFile(join(directory, \"SKILL.md\"), renderSkill(value), { encoding: \"utf8\", flag: \"wx\", mode: 0o600 });\n await this.#persistEnabled(value.name, true);\n return this.get(value.name);\n } catch (error) {\n await rm(directory, { recursive: true, force: true }).catch(() => undefined);\n throw error;\n }\n }\n\n async update(name: string, draft: SkillDraft): Promise<ManagedSkill> {\n const validName = parseName(name);\n const value = parseDraft(draft);\n if (value.name !== validName) throw new Error(\"Rename is not supported; create a new skill instead\");\n const directory = this.#projectSkillDirectory(validName);\n const info = await lstat(directory).catch((error) => {\n if (isCode(error, \"ENOENT\")) throw new Error(`Project skill not found: ${validName}`);\n throw error;\n });\n if (!info.isDirectory() || info.isSymbolicLink()) throw new Error(`Project skill path is not a real directory: ${validName}`);\n const skillFile = join(directory, \"SKILL.md\");\n const fileInfo = await lstat(skillFile);\n if (!fileInfo.isFile() || fileInfo.isSymbolicLink()) throw new Error(`Project skill file is not a real file: ${validName}`);\n await writeFile(skillFile, renderSkill(value), { encoding: \"utf8\", mode: 0o600 });\n return this.get(validName);\n }\n\n async delete(name: string): Promise<void> {\n const validName = parseName(name);\n const directory = this.#projectSkillDirectory(validName);\n const info = await lstat(directory).catch((error) => {\n if (isCode(error, \"ENOENT\")) throw new Error(`Project skill not found: ${validName}`);\n throw error;\n });\n if (!info.isDirectory() || info.isSymbolicLink()) throw new Error(`Project skill path is not a real directory: ${validName}`);\n await rm(directory, { recursive: true });\n await this.#persistEnabled(validName, true);\n }\n\n async setEnabled(name: string, enabled: boolean): Promise<void> {\n const validName = parseName(name);\n const { registry } = await this.#registry();\n if (!(await registry.discover()).some((skill) => skill.name === validName)) {\n throw new Error(`Skill not found: ${validName}`);\n }\n await this.#persistEnabled(validName, enabled);\n }\n\n async #persistEnabled(validName: string, enabled: boolean): Promise<void> {\n const loaded = await loadConfig({ cwd: this.#workspace, home: this.#home });\n await setProjectSkillDisabled(this.#workspace, validName, !enabled, loaded.config.skills.disabled);\n }\n\n async #registry(): Promise<{ registry: SkillRegistry; disabled: ReadonlySet<string> }> {\n const loaded = await loadConfig({ cwd: this.#workspace, home: this.#home });\n const [globalPluginRoots, projectPluginRoots] = await Promise.all([\n discoverPluginSkillRoots(join(this.#home, \".flavor-code\", \"plugins\")),\n discoverPluginSkillRoots(join(this.#workspace, \".flavor\", \"plugins\")),\n ]);\n return {\n registry: new SkillRegistry({\n globalRoots: [join(this.#home, \".flavor-code\", \"skills\"), ...globalPluginRoots],\n projectRoots: [this.#projectRoot(), ...projectPluginRoots],\n }),\n disabled: new Set(loaded.config.skills.disabled),\n };\n }\n\n async #summary(metadata: SkillMetadata, disabled: ReadonlySet<string>): Promise<ManagedSkillSummary> {\n const expected = this.#projectSkillDirectory(metadata.name);\n const editable = metadata.source === \"project\"\n && await realpath(expected).then((physical) => physical === metadata.root).catch(() => false);\n return {\n ...metadata,\n enabled: !disabled.has(metadata.name),\n editable,\n };\n }\n\n #projectRoot(): string { return join(this.#workspace, \".flavor\", \"skills\"); }\n #projectSkillDirectory(name: string): string { return join(this.#projectRoot(), name); }\n}\n\nfunction parseName(value: string): string {\n return SkillNameSchema.parse(value.trim());\n}\n\nfunction parseDraft(draft: SkillDraft): Required<SkillDraft> {\n const name = parseName(draft.name);\n const description = draft.description.trim();\n const body = draft.body.replace(/\\r\\n/g, \"\\n\").trim();\n if (description.length === 0 || description.length > 4_000) throw new Error(\"Skill description must be between 1 and 4,000 characters\");\n if (body.length === 0 || Buffer.byteLength(body, \"utf8\") > 256 * 1024) throw new Error(\"Skill instructions must be between 1 byte and 256 KiB\");\n return { name, description, body, disableModelInvocation: draft.disableModelInvocation ?? false };\n}\n\nfunction renderSkill(draft: Required<SkillDraft>): string {\n const frontmatter = stringify({\n name: draft.name,\n description: draft.description,\n \"disable-model-invocation\": draft.disableModelInvocation,\n }).trimEnd();\n return `---\\n${frontmatter}\\n---\\n\\n${draft.body}\\n`;\n}\n\nfunction isCode(error: unknown, code: string): boolean {\n return typeof error === \"object\" && error !== null && \"code\" in error\n && (error as NodeJS.ErrnoException).code === code;\n}\n\nasync function discoverPluginSkillRoots(directory: string): Promise<string[]> {\n let entries;\n try { entries = await readdir(directory, { withFileTypes: true }); }\n catch (error) { if (isCode(error, \"ENOENT\")) return []; throw error; }\n const roots: string[] = [];\n for (const entry of entries) {\n if (!entry.isDirectory() || entry.isSymbolicLink()) continue;\n const pluginRoot = await realpath(join(directory, entry.name));\n try {\n const manifest = PluginManifestSchema.parse(JSON.parse(await readFile(join(pluginRoot, \"flavor-plugin.json\"), \"utf8\")));\n for (const contribution of manifest.contributes.skillRoots) {\n const candidate = resolve(pluginRoot, contribution.path);\n const info = await lstat(candidate);\n if (!info.isDirectory() || info.isSymbolicLink()) continue;\n const physical = await realpath(candidate);\n const relation = relative(pluginRoot, physical);\n if (relation === \"..\" || relation.startsWith(`..${sep}`) || isAbsolute(relation)) continue;\n roots.push(physical);\n }\n } catch {\n // Invalid plugins are reported by PluginHost; the skill manager simply omits them.\n }\n }\n return roots;\n}\n","import { homedir } from \"node:os\";\nimport type { Command } from \"commander\";\n\nimport { createProjectMemoryManager, type MemoryManagerLike } from \"./manager.js\";\nimport { MEMORY_TYPES, type MemoryType } from \"./types.js\";\n\nexport interface MemoryCliDependencies {\n open?(options: { workspace: string; home: string }): Promise<MemoryManagerLike>;\n cwd?(): string;\n home?(): string;\n write?(text: string): void;\n}\n\nexport function registerMemoryCommands(program: Command, dependencies: MemoryCliDependencies = {}): void {\n const open = dependencies.open ?? createProjectMemoryManager;\n const cwd = dependencies.cwd ?? (() => process.cwd());\n const home = dependencies.home ?? homedir;\n const write = dependencies.write ?? ((text: string) => process.stdout.write(text));\n const manager = () => open({ workspace: cwd(), home: home() });\n const memory = program.command(\"memory\").description(\"Inspect and maintain project long-term memory\");\n\n memory.command(\"list\", { isDefault: true })\n .description(\"List project memories\")\n .option(\"--json\", \"print a machine-readable snapshot\")\n .action(async (options: { json?: boolean }) => {\n const snapshot = await (await manager()).snapshot();\n if (options.json) {\n write(`${JSON.stringify(snapshot, null, 2)}\\n`);\n return;\n }\n write(`Memory file: ${snapshot.path}\\n`);\n if (!snapshot.enabled) {\n write(\"Long-term memory is disabled for this project.\\n\");\n return;\n }\n if (snapshot.entries.length === 0) {\n write(\"No long-term memories.\\n\");\n return;\n }\n for (const entry of snapshot.entries) write(`${entry.id} ${entry.type} ${entry.content}\\n`);\n });\n\n memory.command(\"add\")\n .description(\"Add a memory\")\n .argument(\"<type>\", \"user, feedback, project, or reference\")\n .argument(\"<text...>\", \"memory text\")\n .action(async (type: string, words: string[]) => {\n const entry = await (await manager()).remember({ type: parseMemoryType(type), content: words.join(\" \") });\n write(`Added ${entry.id} ${entry.type} ${entry.content}\\n`);\n });\n\n memory.command(\"update\")\n .description(\"Replace one memory by id\")\n .argument(\"<id>\", \"12-character memory id\")\n .argument(\"<type>\", \"user, feedback, project, or reference\")\n .argument(\"<text...>\", \"replacement text\")\n .action(async (id: string, type: string, words: string[]) => {\n const entry = await (await manager()).update(id, { type: parseMemoryType(type), content: words.join(\" \") });\n write(`Updated ${id} -> ${entry.id} ${entry.type} ${entry.content}\\n`);\n });\n\n memory.command(\"delete\")\n .description(\"Delete one memory by id\")\n .argument(\"<id>\", \"12-character memory id\")\n .action(async (id: string) => {\n const deleted = await (await manager()).delete(id);\n if (!deleted) throw new Error(`Memory entry not found: ${id}`);\n write(`Deleted ${id}\\n`);\n });\n\n memory.command(\"path\")\n .description(\"Print the project memory file path\")\n .action(async () => write(`${(await (await manager()).snapshot()).path}\\n`));\n}\n\nfunction parseMemoryType(value: string): MemoryType {\n if (!(MEMORY_TYPES as readonly string[]).includes(value)) {\n throw new Error(`Unsupported memory type: ${value}. Use ${MEMORY_TYPES.join(\", \")}.`);\n }\n return value as MemoryType;\n}\n","import { loadConfig } from \"../config/load.js\";\nimport { MemoryStore } from \"./store.js\";\nimport type { MemoryCandidate, MemoryEntry } from \"./types.js\";\n\nexport interface MemorySnapshot {\n enabled: boolean;\n path: string;\n entries: readonly MemoryEntry[];\n}\n\nexport interface MemoryManagerLike {\n snapshot(): Promise<MemorySnapshot>;\n remember(candidate: MemoryCandidate): Promise<MemoryEntry>;\n update(id: string, candidate: MemoryCandidate): Promise<MemoryEntry>;\n delete(id: string): Promise<boolean>;\n}\n\nexport class ProjectMemoryManager implements MemoryManagerLike {\n readonly #store: MemoryStore;\n readonly #enabled: boolean;\n\n constructor(store: MemoryStore, enabled = true) {\n this.#store = store;\n this.#enabled = enabled;\n }\n\n async snapshot(): Promise<MemorySnapshot> {\n return {\n enabled: this.#enabled,\n path: this.#store.path,\n entries: this.#enabled ? await this.#store.list() : [],\n };\n }\n\n async remember(candidate: MemoryCandidate): Promise<MemoryEntry> {\n this.#assertEnabled();\n const result = await this.#store.remember(candidate);\n if (!result.added) throw new Error(\"Memory entry already exists or the configured capacity has been reached\");\n return result.entry;\n }\n\n async update(id: string, candidate: MemoryCandidate): Promise<MemoryEntry> {\n this.#assertEnabled();\n return this.#store.update(id, candidate);\n }\n\n async delete(id: string): Promise<boolean> {\n this.#assertEnabled();\n return this.#store.delete(id);\n }\n\n #assertEnabled(): void {\n if (!this.#enabled) throw new Error(\"Long-term memory is disabled for this project\");\n }\n}\n\nexport async function createProjectMemoryManager(options: { workspace: string; home: string }): Promise<ProjectMemoryManager> {\n const { memory } = (await loadConfig({ cwd: options.workspace, home: options.home })).config;\n const store = new MemoryStore({\n workspace: options.workspace,\n maxEntries: memory.maxEntries,\n maxEntryChars: memory.maxEntryChars,\n });\n return new ProjectMemoryManager(store, memory.enabled);\n}\n","import { join } from \"node:path\";\n\nimport { McpServerConfigSchema, McpServerNameSchema, type McpServerConfig, type McpServerConfigInput } from \"../config/schema.js\";\nimport { readRecoverableFile, updateProtectedFile } from \"../config/protected-file.js\";\n\ntype ConfigObject = Record<string, unknown>;\n\nexport interface ManagedMcpServer {\n name: string;\n transport: \"stdio\" | \"http\";\n enabled: boolean;\n config: McpServerConfig;\n}\n\nexport interface ProjectMcpConfigManagerLike {\n readonly path: string;\n list(): Promise<ManagedMcpServer[]>;\n create(name: string, config: McpServerConfigInput): Promise<ManagedMcpServer>;\n update(originalName: string, name: string, config: McpServerConfigInput): Promise<ManagedMcpServer>;\n setEnabled(name: string, enabled: boolean): Promise<ManagedMcpServer>;\n delete(name: string): Promise<void>;\n}\n\nexport class ProjectMcpConfigManager implements ProjectMcpConfigManagerLike {\n readonly path: string;\n\n constructor(workspace: string) {\n this.path = join(workspace, \".flavor\", \"flavor.json\");\n }\n\n async list(): Promise<ManagedMcpServer[]> {\n const document = await readRecoverableFile(this.path, (raw) => parseDocument(this.path, raw));\n return parseServers(this.path, document?.value[\"mcpServers\"]);\n }\n\n async create(name: string, config: McpServerConfigInput): Promise<ManagedMcpServer> {\n const validName = McpServerNameSchema.parse(name);\n const validConfig = McpServerConfigSchema.parse(config);\n await this.#mutate((servers) => {\n if (servers[validName] !== undefined) throw new Error(`MCP service \"${validName}\" already exists`);\n servers[validName] = validConfig;\n });\n return managedServer(validName, validConfig);\n }\n\n async update(originalName: string, name: string, config: McpServerConfigInput): Promise<ManagedMcpServer> {\n const validOriginal = McpServerNameSchema.parse(originalName);\n const validName = McpServerNameSchema.parse(name);\n const parsedConfig = McpServerConfigSchema.parse(config);\n let persistedConfig = parsedConfig;\n await this.#mutate((servers) => {\n const current = servers[validOriginal];\n if (current === undefined) throw new Error(`MCP service \"${validOriginal}\" not found`);\n if (validName !== validOriginal && servers[validName] !== undefined) {\n throw new Error(`MCP service \"${validName}\" already exists`);\n }\n const sameTransport = (\"command\" in current && \"command\" in config)\n || (\"url\" in current && \"url\" in config);\n persistedConfig = sameTransport\n ? McpServerConfigSchema.parse({ ...current, ...config })\n : parsedConfig;\n delete servers[validOriginal];\n servers[validName] = persistedConfig;\n });\n return managedServer(validName, persistedConfig);\n }\n\n async setEnabled(name: string, enabled: boolean): Promise<ManagedMcpServer> {\n const validName = McpServerNameSchema.parse(name);\n let next: McpServerConfig | undefined;\n await this.#mutate((servers) => {\n const current = servers[validName];\n if (current === undefined) throw new Error(`MCP service \"${validName}\" not found`);\n next = McpServerConfigSchema.parse({ ...current, disabled: !enabled });\n servers[validName] = next;\n });\n return managedServer(validName, next!);\n }\n\n async delete(name: string): Promise<void> {\n const validName = McpServerNameSchema.parse(name);\n await this.#mutate((servers) => {\n if (servers[validName] === undefined) throw new Error(`MCP service \"${validName}\" not found`);\n delete servers[validName];\n });\n }\n\n async #mutate(update: (servers: Record<string, McpServerConfig>) => void): Promise<void> {\n await updateProtectedFile<ConfigObject>({\n path: this.path,\n decode: (raw) => parseDocument(this.path, raw),\n encode: (value) => `${JSON.stringify(value, null, 2)}\\n`,\n update: (current) => {\n const document = { ...(current ?? {}) };\n const servers = Object.fromEntries(parseServers(this.path, document[\"mcpServers\"])\n .map((server) => [server.name, server.config]));\n update(servers);\n document[\"mcpServers\"] = servers;\n return document;\n },\n });\n }\n}\n\nfunction parseDocument(path: string, raw: string): ConfigObject {\n const value: unknown = JSON.parse(raw);\n if (!isRecord(value)) throw new Error(`Configuration file ${path} must contain a JSON object`);\n return value;\n}\n\nfunction parseServers(path: string, value: unknown): ManagedMcpServer[] {\n if (value === undefined) return [];\n if (!isRecord(value)) throw new Error(`Configuration field mcpServers in ${path} must be an object`);\n return Object.entries(value).map(([name, config]) => {\n try {\n return managedServer(McpServerNameSchema.parse(name), McpServerConfigSchema.parse(config));\n } catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n throw new Error(`Invalid MCP service \"${name}\" in ${path}: ${reason}`);\n }\n }).sort((left, right) => left.name.localeCompare(right.name));\n}\n\nfunction managedServer(name: string, config: McpServerConfig): ManagedMcpServer {\n return {\n name,\n transport: \"command\" in config ? \"stdio\" : \"http\",\n enabled: !config.disabled,\n config,\n };\n}\n\nfunction isRecord(value: unknown): value is ConfigObject {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n","import type { Command } from \"commander\";\n\nimport type { McpServerConfigInput } from \"../config/schema.js\";\nimport { ProjectMcpConfigManager } from \"./config-manager.js\";\n\ninterface McpCliManager {\n readonly path: string;\n list(): Promise<readonly { name: string; transport: string; enabled: boolean }[]>;\n create(name: string, config: McpServerConfigInput): Promise<unknown>;\n update(originalName: string, name: string, config: McpServerConfigInput): Promise<unknown>;\n setEnabled(name: string, enabled: boolean): Promise<unknown>;\n delete(name: string): Promise<unknown>;\n}\n\nexport interface McpCliDependencies {\n open(): McpCliManager;\n write(text: string): void;\n}\n\ninterface ConfigOptions {\n command?: string;\n url?: string;\n arg?: string[];\n env?: string[];\n header?: string[];\n cwd?: string;\n timeout?: number;\n}\n\nexport function registerMcpCommands(program: Command, dependencies?: Partial<McpCliDependencies>): void {\n const deps: McpCliDependencies = {\n open: dependencies?.open ?? (() => new ProjectMcpConfigManager(process.cwd())),\n write: dependencies?.write ?? ((text) => process.stdout.write(text)),\n };\n const mcp = program.command(\"mcp\").description(\"Manage project MCP service configurations\");\n\n mcp.command(\"list\", { isDefault: true }).option(\"--json\", \"print JSON\").action(async (options: { json?: boolean }) => {\n const services = await deps.open().list();\n if (options.json) deps.write(`${JSON.stringify(services, null, 2)}\\n`);\n else if (services.length === 0) deps.write(\"No project MCP services configured.\\n\");\n else for (const service of services) {\n deps.write(`${service.enabled ? \"on \" : \"off\"} ${service.name} ${service.transport}\\n`);\n }\n });\n\n addConfigCommand(mcp.command(\"add <name>\").description(\"Add a project MCP service\"))\n .action(async (name: string, options: ConfigOptions) => {\n await deps.open().create(name, configFromOptions(options));\n deps.write(`Added MCP service ${name}.\\n`);\n });\n\n addConfigCommand(mcp.command(\"update <name>\").description(\"Replace a project MCP service configuration\"))\n .option(\"--rename <name>\", \"rename the service\")\n .action(async (name: string, options: ConfigOptions & { rename?: string }) => {\n await deps.open().update(name, options.rename ?? name, configFromOptions(options));\n deps.write(`Updated MCP service ${options.rename ?? name}.\\n`);\n });\n\n for (const enabled of [true, false]) {\n const action = enabled ? \"enable\" : \"disable\";\n mcp.command(`${action} <name>`).description(`${enabled ? \"Enable\" : \"Disable\"} a project MCP service`)\n .action(async (name: string) => {\n await deps.open().setEnabled(name, enabled);\n deps.write(`${enabled ? \"Enabled\" : \"Disabled\"} MCP service ${name}.\\n`);\n });\n }\n\n mcp.command(\"delete <name>\").description(\"Delete a project MCP service\").action(async (name: string) => {\n await deps.open().delete(name);\n deps.write(`Deleted MCP service ${name}.\\n`);\n });\n mcp.command(\"path\").description(\"Print the project MCP configuration path\").action(() => {\n deps.write(`${deps.open().path}\\n`);\n });\n}\n\nfunction addConfigCommand(command: Command): Command {\n return command\n .option(\"--command <program>\", \"stdio executable\")\n .option(\"--url <url>\", \"Streamable HTTP endpoint\")\n .option(\"--arg <value>\", \"stdio argument; repeatable\", collect, [])\n .option(\"--env <KEY=VALUE>\", \"stdio environment entry; repeatable\", collect, [])\n .option(\"--header <KEY=VALUE>\", \"HTTP header; repeatable\", collect, [])\n .option(\"--cwd <path>\", \"stdio working directory\")\n .option(\"--timeout <ms>\", \"request timeout in milliseconds\", parseTimeout);\n}\n\nfunction configFromOptions(options: ConfigOptions): McpServerConfigInput {\n if ((options.command === undefined) === (options.url === undefined)) {\n throw new Error(\"Specify exactly one transport with --command or --url\");\n }\n if (options.command !== undefined) {\n if ((options.header?.length ?? 0) > 0) throw new Error(\"--header is available only with --url\");\n return {\n command: options.command,\n ...(options.arg?.length ? { args: options.arg } : {}),\n ...(options.env?.length ? { env: keyValueRecord(options.env, \"environment\") } : {}),\n ...(options.cwd === undefined ? {} : { cwd: options.cwd }),\n ...(options.timeout === undefined ? {} : { timeoutMs: options.timeout }),\n };\n }\n if ((options.arg?.length ?? 0) > 0 || (options.env?.length ?? 0) > 0 || options.cwd !== undefined) {\n throw new Error(\"--arg, --env, and --cwd are available only with --command\");\n }\n return {\n url: options.url!,\n ...(options.header?.length ? { headers: keyValueRecord(options.header, \"header\") } : {}),\n ...(options.timeout === undefined ? {} : { timeoutMs: options.timeout }),\n };\n}\n\nfunction collect(value: string, previous: string[]): string[] {\n return [...previous, value];\n}\n\nfunction parseTimeout(value: string): number {\n const parsed = Number(value);\n if (!Number.isSafeInteger(parsed) || parsed < 100) throw new Error(\"--timeout must be an integer of at least 100ms\");\n return parsed;\n}\n\nfunction keyValueRecord(entries: readonly string[], label: string): Record<string, string> {\n return Object.fromEntries(entries.map((entry) => {\n const separator = entry.indexOf(\"=\");\n if (separator <= 0) throw new Error(`Invalid ${label} entry \"${entry}\"; use KEY=VALUE`);\n return [entry.slice(0, separator), entry.slice(separator + 1)];\n }));\n}\n","import { randomUUID } from \"node:crypto\";\n\nimport type { FileWriteProposal } from \"../tools/files.js\";\nimport type { SessionOutput } from \"../ui/session.js\";\n\ninterface PendingWrite {\n id: string;\n resolve(): void;\n reject(error: unknown): void;\n removeAbort(): void;\n}\n\nexport class RpcWriteStreamBridge {\n readonly #output: (event: SessionOutput) => void;\n #pending: PendingWrite | undefined;\n\n constructor(output: (event: SessionOutput) => void) {\n this.#output = output;\n }\n\n get pendingId(): string | undefined { return this.#pending?.id; }\n\n async preview(proposal: FileWriteProposal, signal: AbortSignal): Promise<void> {\n if (this.#pending !== undefined) throw new Error(\"Another streamed write is still awaiting commit\");\n if (signal.aborted) throw signal.reason;\n const id = randomUUID();\n this.#output({\n type: \"write-start\",\n id,\n path: proposal.path,\n before: proposal.before,\n totalBytes: Buffer.byteLength(proposal.after),\n });\n for (const delta of streamChunks(proposal.after)) this.#output({ type: \"write-delta\", id, delta });\n this.#output({ type: \"write-ready\", id });\n\n await new Promise<void>((resolve, reject) => {\n const onAbort = (): void => {\n this.#output({ type: \"write-cancelled\", id });\n this.#clear(id);\n reject(signal.reason);\n };\n signal.addEventListener(\"abort\", onAbort, { once: true });\n this.#pending = {\n id,\n resolve,\n reject,\n removeAbort: () => signal.removeEventListener(\"abort\", onAbort),\n };\n });\n }\n\n commit(id: string): void {\n const pending = this.#pending;\n if (pending === undefined || pending.id !== id) throw new Error(\"Streamed write is no longer awaiting commit\");\n pending.removeAbort();\n this.#pending = undefined;\n pending.resolve();\n }\n\n dispose(): void {\n const pending = this.#pending;\n if (pending === undefined) return;\n pending.removeAbort();\n this.#pending = undefined;\n pending.reject(new Error(\"Streamed write bridge disposed\"));\n }\n\n #clear(id: string): void {\n if (this.#pending?.id !== id) return;\n this.#pending.removeAbort();\n this.#pending = undefined;\n }\n}\n\nexport function streamChunks(content: string, maxChars = 2_048): string[] {\n if (!content) return [];\n const chunks: string[] = [];\n for (const line of content.match(/[^\\n]*\\n|[^\\n]+$/g) ?? []) {\n for (let offset = 0; offset < line.length; offset += maxChars) {\n chunks.push(line.slice(offset, offset + maxChars));\n }\n }\n return chunks;\n}\n","import { readFile, writeFile } from \"node:fs/promises\";\nimport { dirname, resolve } from \"node:path\";\n\nimport { createProductionRuntime } from \"../production.js\";\nimport { createExecutionEnvironment } from \"../execution/factory.js\";\nimport { LocalExecutionEnvironment } from \"../execution/local.js\";\nimport { EvaluationSpecSchema } from \"./schema.js\";\nimport { runEvaluation } from \"./runner.js\";\n\nexport async function runEvaluationFile(path: string, outputPath?: string): Promise<number> {\n const specPath = resolve(path);\n const parsed = EvaluationSpecSchema.parse(JSON.parse(await readFile(specPath, \"utf8\")));\n const workspace = resolve(dirname(specPath), parsed.workspace);\n const spec = {\n name: parsed.name,\n prompt: parsed.prompt,\n workspace,\n verification: parsed.verification.map((step) => ({\n command: step.command,\n args: step.args,\n ...(step.timeoutMs === undefined ? {} : { timeoutMs: step.timeoutMs }),\n })),\n ...(parsed.maxTokens === undefined ? {} : { maxTokens: parsed.maxTokens }),\n };\n const configured = await import(\"../config/load.js\").then(({ loadConfig }) =>\n loadConfig({ cwd: workspace, home: process.env.USERPROFILE ?? process.env.HOME ?? workspace }));\n const environment = createExecutionEnvironment(workspace, configured.config.execution)\n ?? new LocalExecutionEnvironment();\n let report;\n try {\n report = await runEvaluation(spec, {\n createRuntime: (options) => createProductionRuntime({\n ...options,\n home: process.env.USERPROFILE ?? process.env.HOME ?? workspace,\n approvalPolicy: \"deny\",\n }),\n executionEnvironment: environment,\n });\n } finally {\n await environment.dispose();\n }\n const body = `${JSON.stringify(report, null, 2)}\\n`;\n if (outputPath === undefined) process.stdout.write(body);\n else await writeFile(resolve(outputPath), body, \"utf8\");\n return report.passed ? 0 : 1;\n}\n","import type { ExecutionEnvironment, ExecutionRequest, ExecutionResult } from \"./types.js\";\nimport { DEFAULT_MAX_OUTPUT_BYTES, executeShell } from \"../tools/shell.js\";\n\nexport class LocalExecutionEnvironment implements ExecutionEnvironment {\n readonly kind = \"local\" as const;\n\n exec(request: ExecutionRequest, signal?: AbortSignal): Promise<ExecutionResult> {\n const cancellation = signal ?? new AbortController().signal;\n return executeShell(request.cwd, {\n command: request.command,\n args: [...request.args],\n cwd: request.cwd,\n ...(request.timeoutMs === undefined ? {} : { timeoutMs: request.timeoutMs }),\n }, cancellation, DEFAULT_MAX_OUTPUT_BYTES);\n }\n\n async dispose(): Promise<void> {}\n}\n","import { z } from \"zod\";\n\nexport const EvaluationSpecSchema = z.object({\n name: z.string().trim().min(1).max(256),\n workspace: z.string().trim().min(1).max(32_768),\n prompt: z.string().trim().min(1).max(1_000_000),\n verification: z.array(z.object({\n command: z.string().trim().min(1).max(32_768),\n args: z.array(z.string()).max(1_000),\n timeoutMs: z.number().int().positive().max(86_400_000).optional(),\n }).strict()).min(1).max(100),\n maxTokens: z.number().int().positive().max(Number.MAX_SAFE_INTEGER).optional(),\n}).strict();\n","import type { ExecutionEnvironment } from \"../execution/types.js\";\nimport type { SessionOutput } from \"../ui/session.js\";\n\nexport interface EvaluationSpec {\n name: string;\n workspace: string;\n prompt: string;\n verification: Array<{ command: string; args: string[]; timeoutMs?: number }>;\n maxTokens?: number;\n}\n\nexport interface EvaluationRuntimeLike {\n session: { start(): Promise<void>; submit(prompt: string): Promise<void>; close(): Promise<void> };\n dispose(): Promise<void>;\n}\n\nexport interface EvaluationDependencies {\n createRuntime(options: { workspace: string; output(event: SessionOutput): void }): Promise<EvaluationRuntimeLike>;\n executionEnvironment: ExecutionEnvironment;\n now?: () => number;\n}\n\nexport interface EvaluationReport {\n name: string;\n workspace: string;\n passed: boolean;\n durationMs: number;\n tokens: { input: number; output: number; total: number; withinBudget: boolean };\n verification: Array<{ command: string; exitCode: number | null; passed: boolean; stdout: string; stderr: string }>;\n}\n\nexport async function runEvaluation(spec: EvaluationSpec, dependencies: EvaluationDependencies): Promise<EvaluationReport> {\n const now = dependencies.now ?? Date.now;\n const started = now();\n let input = 0;\n let output = 0;\n const runtime = await dependencies.createRuntime({\n workspace: spec.workspace,\n output: (event) => {\n if (event.type === \"usage\") {\n input = event.totalInputTokens;\n output = event.totalOutputTokens;\n } else if (event.type === \"done\" && input === 0 && output === 0) {\n input = event.usage.inputTokens;\n output = event.usage.outputTokens;\n }\n },\n });\n try {\n await runtime.session.start();\n await runtime.session.submit(spec.prompt);\n } finally {\n await runtime.session.close();\n await runtime.dispose();\n }\n const verification = [];\n for (const check of spec.verification) {\n const result = await dependencies.executionEnvironment.exec({\n command: check.command,\n args: check.args,\n cwd: spec.workspace,\n ...(check.timeoutMs === undefined ? {} : { timeoutMs: check.timeoutMs }),\n });\n verification.push({\n command: [check.command, ...check.args].join(\" \"),\n exitCode: result.exitCode,\n passed: result.exitCode === 0,\n stdout: result.stdout,\n stderr: result.stderr,\n });\n }\n const total = input + output;\n const withinBudget = spec.maxTokens === undefined || total <= spec.maxTokens;\n return {\n name: spec.name,\n workspace: spec.workspace,\n passed: withinBudget && verification.every((item) => item.passed),\n durationMs: Math.max(0, now() - started),\n tokens: { input, output, total, withinBudget },\n verification,\n };\n}\n"],"mappings":"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","names":["homedir","resolve","homedir","homedir","join","join","resolve","readFile","writeFile","resolve","resolve","readFile","loadConfig","writeFile","resolve","homedir"]}
|