From c10249061a348ea36aec6670975769a4abd72135 Mon Sep 17 00:00:00 2001 From: Mike Long Date: Fri, 13 Mar 2026 13:10:49 -0700 Subject: [PATCH] fix: accept local llm generation sessions --- packages/interfacectl-cli/dist/adapter/core.js | 2 +- .../interfacectl-cli/dist/commands/generation-session.js | 4 ++-- packages/interfacectl-cli/dist/index.js | 2 +- .../schemas/contract-delta-suggestions.schema.json | 2 +- .../schemas/generation-adapter-request.schema.json | 2 +- .../schemas/generation-benchmark-report.schema.json | 2 +- .../schemas/generation-session-comparison.schema.json | 2 +- .../schemas/generation-session-summary.schema.json | 2 +- .../interfacectl-cli/schemas/generation-session.schema.json | 2 +- packages/interfacectl-cli/src/adapter/core.ts | 2 +- .../interfacectl-cli/src/commands/generation-session.ts | 6 +++--- packages/interfacectl-cli/src/index.ts | 2 +- packages/interfacectl-cli/test/generation-session.test.mjs | 2 +- 13 files changed, 16 insertions(+), 16 deletions(-) diff --git a/packages/interfacectl-cli/dist/adapter/core.js b/packages/interfacectl-cli/dist/adapter/core.js index 0c50b29..f0f87f9 100644 --- a/packages/interfacectl-cli/dist/adapter/core.js +++ b/packages/interfacectl-cli/dist/adapter/core.js @@ -8,7 +8,7 @@ import { AdapterInputError, ensureReadableFile, isRecord, loadCompiledSurfaceBun import { runDescribeCommand } from "../commands/describe.js"; import { runValidateCommand } from "../commands/validate.js"; export { AdapterInputError, isAdapterInputError } from "./bundle.js"; -const VALID_TOOLS = new Set(["codex", "cursor", "lovable", "figma-make"]); +const VALID_TOOLS = new Set(["codex", "cursor", "local-llm", "lovable", "figma-make"]); const VALID_MODES = new Set(["workspace", "descriptor"]); const DEFAULT_DESCRIPTOR_PARITY_CONFIG = "contracts/generation-descriptor-parity.json"; const PARITY_FINDING_CODES = new Set([ diff --git a/packages/interfacectl-cli/dist/commands/generation-session.js b/packages/interfacectl-cli/dist/commands/generation-session.js index 79c7ddd..851abf7 100644 --- a/packages/interfacectl-cli/dist/commands/generation-session.js +++ b/packages/interfacectl-cli/dist/commands/generation-session.js @@ -7,7 +7,7 @@ import { runGenerationAdapter } from "../adapter/core.js"; import { buildPreparedGenerationPayload } from "./prepare-generation.js"; import { emitContractRunArtifact, } from "../utils/run-artifacts.js"; import { writeDeterministicJsonSync } from "../utils/deterministic-json.js"; -const VALID_TOOLS = new Set(["codex", "cursor"]); +const VALID_TOOLS = new Set(["codex", "cursor", "local-llm"]); const VALID_GRADES = new Set(["strong", "partial", "weak"]); const VALID_GUIDANCE_MODES = new Set(["prepared", "unguided"]); const VALID_REVIEW_STATUSES = new Set(["accepted", "rejected"]); @@ -71,7 +71,7 @@ function countBySeverity(validatePayload) { function ensureSessionTool(tool) { const normalized = typeof tool === "string" ? tool.trim().toLowerCase() : "codex"; if (!VALID_TOOLS.has(normalized)) { - throw new SessionInputError(`Invalid --tool value "${tool ?? ""}". Expected codex|cursor.`); + throw new SessionInputError(`Invalid --tool value "${tool ?? ""}". Expected codex|cursor|local-llm.`); } return normalized; } diff --git a/packages/interfacectl-cli/dist/index.js b/packages/interfacectl-cli/dist/index.js index d269dc9..73932f2 100644 --- a/packages/interfacectl-cli/dist/index.js +++ b/packages/interfacectl-cli/dist/index.js @@ -213,7 +213,7 @@ program .requiredOption("--bundle-root ", "Path to the compiled generation bundle directory") .requiredOption("--surface ", "Surface identifier") .requiredOption("--workspace-root ", "Workspace root for emitted run artifacts") - .option("--tool ", "Generation tool identifier (codex|cursor)") + .option("--tool ", "Generation tool identifier (codex|cursor|local-llm)") .option("--guidance-mode ", "Session guidance mode (prepared|unguided)") .option("--brief-file ", "Optional implementation brief file to freeze into the session") .option("--session ", "Optional session identifier") diff --git a/packages/interfacectl-cli/schemas/contract-delta-suggestions.schema.json b/packages/interfacectl-cli/schemas/contract-delta-suggestions.schema.json index 23fcb51..0327ceb 100644 --- a/packages/interfacectl-cli/schemas/contract-delta-suggestions.schema.json +++ b/packages/interfacectl-cli/schemas/contract-delta-suggestions.schema.json @@ -20,7 +20,7 @@ }, "tool": { "type": "string", - "enum": ["codex", "cursor"] + "enum": ["codex", "cursor", "local-llm"] }, "guidanceMode": { "type": "string", diff --git a/packages/interfacectl-cli/schemas/generation-adapter-request.schema.json b/packages/interfacectl-cli/schemas/generation-adapter-request.schema.json index b2085f4..e3de747 100644 --- a/packages/interfacectl-cli/schemas/generation-adapter-request.schema.json +++ b/packages/interfacectl-cli/schemas/generation-adapter-request.schema.json @@ -12,7 +12,7 @@ }, "tool": { "type": "string", - "enum": ["codex", "cursor", "lovable", "figma-make"] + "enum": ["codex", "cursor", "local-llm", "lovable", "figma-make"] }, "surfaceId": { "type": "string", diff --git a/packages/interfacectl-cli/schemas/generation-benchmark-report.schema.json b/packages/interfacectl-cli/schemas/generation-benchmark-report.schema.json index 8fd8eb3..248a0ae 100644 --- a/packages/interfacectl-cli/schemas/generation-benchmark-report.schema.json +++ b/packages/interfacectl-cli/schemas/generation-benchmark-report.schema.json @@ -27,7 +27,7 @@ }, "tool": { "type": "string", - "enum": ["codex", "cursor"] + "enum": ["codex", "cursor", "local-llm"] }, "comparisonPath": { "type": "string", diff --git a/packages/interfacectl-cli/schemas/generation-session-comparison.schema.json b/packages/interfacectl-cli/schemas/generation-session-comparison.schema.json index dab752f..a181f6e 100644 --- a/packages/interfacectl-cli/schemas/generation-session-comparison.schema.json +++ b/packages/interfacectl-cli/schemas/generation-session-comparison.schema.json @@ -16,7 +16,7 @@ }, "tool": { "type": "string", - "enum": ["codex", "cursor"] + "enum": ["codex", "cursor", "local-llm"] }, "brief": { "type": "object", diff --git a/packages/interfacectl-cli/schemas/generation-session-summary.schema.json b/packages/interfacectl-cli/schemas/generation-session-summary.schema.json index 91946ca..cc67ea4 100644 --- a/packages/interfacectl-cli/schemas/generation-session-summary.schema.json +++ b/packages/interfacectl-cli/schemas/generation-session-summary.schema.json @@ -38,7 +38,7 @@ }, "tool": { "type": "string", - "enum": ["codex", "cursor"] + "enum": ["codex", "cursor", "local-llm"] }, "guidanceMode": { "type": "string", diff --git a/packages/interfacectl-cli/schemas/generation-session.schema.json b/packages/interfacectl-cli/schemas/generation-session.schema.json index 4c3c66c..a98367b 100644 --- a/packages/interfacectl-cli/schemas/generation-session.schema.json +++ b/packages/interfacectl-cli/schemas/generation-session.schema.json @@ -35,7 +35,7 @@ }, "tool": { "type": "string", - "enum": ["codex", "cursor"] + "enum": ["codex", "cursor", "local-llm"] }, "guidanceMode": { "type": "string", diff --git a/packages/interfacectl-cli/src/adapter/core.ts b/packages/interfacectl-cli/src/adapter/core.ts index 6981f4d..940beee 100644 --- a/packages/interfacectl-cli/src/adapter/core.ts +++ b/packages/interfacectl-cli/src/adapter/core.ts @@ -17,7 +17,7 @@ import { runValidateCommand } from "../commands/validate.js"; export { AdapterInputError, isAdapterInputError } from "./bundle.js"; -const VALID_TOOLS = new Set(["codex", "cursor", "lovable", "figma-make"]); +const VALID_TOOLS = new Set(["codex", "cursor", "local-llm", "lovable", "figma-make"]); const VALID_MODES = new Set(["workspace", "descriptor"]); const DEFAULT_DESCRIPTOR_PARITY_CONFIG = "contracts/generation-descriptor-parity.json"; diff --git a/packages/interfacectl-cli/src/commands/generation-session.ts b/packages/interfacectl-cli/src/commands/generation-session.ts index 35aabbe..d99971a 100644 --- a/packages/interfacectl-cli/src/commands/generation-session.ts +++ b/packages/interfacectl-cli/src/commands/generation-session.ts @@ -17,7 +17,7 @@ import { } from "../utils/run-artifacts.js"; import { stringifyDeterministicJson, writeDeterministicJsonSync } from "../utils/deterministic-json.js"; -type SessionTool = "codex" | "cursor"; +type SessionTool = "codex" | "cursor" | "local-llm"; type AssessmentGrade = "strong" | "partial" | "weak"; type ValidateStatus = "pass" | "warn" | "block"; type GuidanceMode = "prepared" | "unguided"; @@ -393,7 +393,7 @@ interface LoadedAttempt { previewMetadataPath?: string; } -const VALID_TOOLS = new Set(["codex", "cursor"]); +const VALID_TOOLS = new Set(["codex", "cursor", "local-llm"]); const VALID_GRADES = new Set(["strong", "partial", "weak"]); const VALID_GUIDANCE_MODES = new Set(["prepared", "unguided"]); const VALID_REVIEW_STATUSES = new Set(["accepted", "rejected"]); @@ -471,7 +471,7 @@ function countBySeverity(validatePayload: JsonRecord) { function ensureSessionTool(tool?: string): SessionTool { const normalized = typeof tool === "string" ? tool.trim().toLowerCase() : "codex"; if (!VALID_TOOLS.has(normalized as SessionTool)) { - throw new SessionInputError(`Invalid --tool value "${tool ?? ""}". Expected codex|cursor.`); + throw new SessionInputError(`Invalid --tool value "${tool ?? ""}". Expected codex|cursor|local-llm.`); } return normalized as SessionTool; } diff --git a/packages/interfacectl-cli/src/index.ts b/packages/interfacectl-cli/src/index.ts index 77c3910..e1b5e1f 100644 --- a/packages/interfacectl-cli/src/index.ts +++ b/packages/interfacectl-cli/src/index.ts @@ -320,7 +320,7 @@ program .requiredOption("--bundle-root ", "Path to the compiled generation bundle directory") .requiredOption("--surface ", "Surface identifier") .requiredOption("--workspace-root ", "Workspace root for emitted run artifacts") - .option("--tool ", "Generation tool identifier (codex|cursor)") + .option("--tool ", "Generation tool identifier (codex|cursor|local-llm)") .option("--guidance-mode ", "Session guidance mode (prepared|unguided)") .option("--brief-file ", "Optional implementation brief file to freeze into the session") .option("--session ", "Optional session identifier") diff --git a/packages/interfacectl-cli/test/generation-session.test.mjs b/packages/interfacectl-cli/test/generation-session.test.mjs index e3c8bb7..23f1121 100644 --- a/packages/interfacectl-cli/test/generation-session.test.mjs +++ b/packages/interfacectl-cli/test/generation-session.test.mjs @@ -239,7 +239,7 @@ test("generation session commands freeze bundle input, record attempts, and emit "--workspace-root", workspaceRoot, "--tool", - "codex", + "local-llm", "--session", "demo-session", ],