diff --git a/src/plugin/tool-registry.ts b/src/plugin/tool-registry.ts index 041d3ef6..10e05b90 100644 --- a/src/plugin/tool-registry.ts +++ b/src/plugin/tool-registry.ts @@ -102,6 +102,7 @@ export function createToolRegistry(args: { mcpManager: managers.skillMcpManager, getSessionID: getSessionIDForMcp, gitMasterConfig: pluginConfig.git_master, + directory: ctx.directory, }) const taskSystemEnabled = pluginConfig.experimental?.task_system ?? false diff --git a/src/shared/model-requirements.ts b/src/shared/model-requirements.ts index 40d4daff..2927b48c 100644 --- a/src/shared/model-requirements.ts +++ b/src/shared/model-requirements.ts @@ -92,7 +92,6 @@ export const AGENT_MODEL_REQUIREMENTS: Record = { athena: { fallbackChain: [ { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, - { providers: ["kimi-for-coding"], model: "k2p5" }, { providers: ["opencode"], model: "kimi-k2.5-free" }, { providers: ["zai-coding-plan"], model: "glm-4.7" }, { providers: ["opencode"], model: "glm-4.7-free" }, diff --git a/src/tools/background-task/create-background-output.ts b/src/tools/background-task/create-background-output.ts index 82ecb23e..9bad3850 100644 --- a/src/tools/background-task/create-background-output.ts +++ b/src/tools/background-task/create-background-output.ts @@ -119,8 +119,13 @@ export function createBackgroundOutput(manager: BackgroundOutputManager, client: } if (shouldBlock) { + const abort = (toolContext as { abort?: AbortSignal } | undefined)?.abort const startTime = Date.now() while (Date.now() - startTime < timeoutMs) { + if (abort?.aborted) { + return formatTaskStatus(task) + } + await delay(1000) const currentTask = manager.getTask(args.task_id) diff --git a/src/tools/background-task/create-background-wait.ts b/src/tools/background-task/create-background-wait.ts index 20dc792e..de49f572 100644 --- a/src/tools/background-task/create-background-wait.ts +++ b/src/tools/background-task/create-background-wait.ts @@ -21,7 +21,9 @@ export function createBackgroundWait(manager: BackgroundOutputManager, client: B task_ids: tool.schema.array(tool.schema.string()).describe("Task IDs to monitor — returns when ANY one reaches a terminal state"), timeout: tool.schema.number().optional().describe("Max wait in ms. Default: 120000 (2 min). The tool returns immediately when any task finishes, so large values are fine."), }, - async execute(args: { task_ids: string[]; timeout?: number }) { + async execute(args: { task_ids: string[]; timeout?: number }, toolContext?: unknown) { + const abort = (toolContext as { abort?: AbortSignal } | undefined)?.abort + const taskIds = args.task_ids if (!taskIds || taskIds.length === 0) { return "Error: task_ids array is required and must not be empty." @@ -36,6 +38,10 @@ export function createBackgroundWait(manager: BackgroundOutputManager, client: B const startTime = Date.now() while (Date.now() - startTime < timeoutMs) { + if (abort?.aborted) { + return buildProgressSummary(manager, taskIds, true) + } + await delay(1000) const found = findFirstTerminal(manager, taskIds) diff --git a/src/tools/skill/tools.ts b/src/tools/skill/tools.ts index 60f6ad51..f9e08481 100644 --- a/src/tools/skill/tools.ts +++ b/src/tools/skill/tools.ts @@ -250,7 +250,7 @@ export function createSkillTool(options: SkillLoadOptions = {}): ToolDefinition body = injectGitMasterConfig(body, options.gitMasterConfig) } - const dir = matchedSkill.path ? dirname(matchedSkill.path) : matchedSkill.resolvedPath || process.cwd() + const dir = matchedSkill.path ? dirname(matchedSkill.path) : matchedSkill.resolvedPath || options.directory || process.cwd() const output = [ `## Skill: ${matchedSkill.name}`, diff --git a/src/tools/skill/types.ts b/src/tools/skill/types.ts index b914957d..5fe6b087 100644 --- a/src/tools/skill/types.ts +++ b/src/tools/skill/types.ts @@ -33,6 +33,6 @@ export interface SkillLoadOptions { /** Git master configuration for watermark/co-author settings */ gitMasterConfig?: GitMasterConfig disabledSkills?: Set - /** Project directory for skill discovery. Falls back to process.cwd() if not provided. */ + /** Project directory for skill discovery and base directory resolution. Should be ctx.directory from PluginContext. */ directory?: string }