From 169118c9e17c2ea5efb2eaacd07feeba427b9bb1 Mon Sep 17 00:00:00 2001 From: ismeth Date: Tue, 3 Mar 2026 22:56:24 +0100 Subject: [PATCH] fix: preserve tuple items in schema build and harden athena prompt path guard --- script/build-schema-document.ts | 4 +++- src/tools/athena-council/tools.ts | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/script/build-schema-document.ts b/script/build-schema-document.ts index be25717d1..f6de8437d 100644 --- a/script/build-schema-document.ts +++ b/script/build-schema-document.ts @@ -25,8 +25,10 @@ function removeDefaultedFromRequired(schema: Record): Record) + } else if (Array.isArray(result.items)) { + result.items = result.items.map((item) => removeDefaultedFromRequired(item as Record)) } for (const key of ["allOf", "anyOf", "oneOf"]) { diff --git a/src/tools/athena-council/tools.ts b/src/tools/athena-council/tools.ts index 51c1864d3..31370a5fe 100644 --- a/src/tools/athena-council/tools.ts +++ b/src/tools/athena-council/tools.ts @@ -1,6 +1,6 @@ import { tool, type ToolDefinition } from "@opencode-ai/plugin" import { readFile } from "node:fs/promises" -import { resolve } from "node:path" +import { resolve, sep } from "node:path" import type { BackgroundManager } from "../../features/background-agent" import type { CouncilConfig, CouncilMemberConfig } from "../../config/schema/athena" import { launchCouncilMember, type CouncilLaunchContext } from "./council-launcher" @@ -128,7 +128,7 @@ export function createAthenaCouncilTool(args: { let promptContent: string try { const resolvedPath = resolve(directory, toolArgs.prompt_file) - const expectedPrefix = resolve(directory, ".sisyphus/tmp") + const expectedPrefix = `${resolve(directory, ".sisyphus/tmp")}${sep}` if (!resolvedPath.startsWith(expectedPrefix)) { return `Invalid prompt_file path: expected path within .sisyphus/tmp/, got: ${toolArgs.prompt_file}` }