andy-stack_vaultkeeper-ai/AIClasses/FunctionDefinitions/AIFunctionDefinitions.ts
Andrew Beal fbb2d8275d feat: add CompletePlan function to explicitly mark plan execution as complete
Add new CompletePlan function with schema and validation to allow agents to explicitly signal when all execution steps are done. Update system prompt to include completion confirmation step. Refactor execution loop to recursively prompt for completion if incomplete, with MAX_EXECUTION_DEPTH limit replacing MAX_PLANNING_ITERATIONS. Remove automatic incomplete execution handling in favor of explicit agent-driven completion.
2026-01-04 22:47:22 +00:00

75 lines
No EOL
2.8 KiB
TypeScript

import type { IAIFunctionDefinition } from "./IAIFunctionDefinition";
import { SearchVaultFiles } from "./Functions/SearchVaultFiles";
import { ReadVaultFiles } from "./Functions/ReadVaultFiles";
import { WriteVaultFile } from "./Functions/WriteVaultFile";
import { DeleteVaultFiles } from "./Functions/DeleteVaultFiles";
import { MoveVaultFiles } from "./Functions/MoveVaultFiles";
import { ListVaultFiles } from "./Functions/ListVaultFiles";
import { PatchVaultFile } from "./Functions/PatchVaultFile";
import { CreatePlan } from "./Functions/CreatePlan";
import { Replan } from "./Functions/Replan";
import { CompleteStep } from "./Functions/CompleteStep";
import { SubmitPlan } from "./Functions/SubmitPlan";
import { CancelPlan } from "./Functions/CancelPlan";
import { AskUserQuestion } from "./Functions/AskUserQuestion";
import { CompletePlan } from "./Functions/CompletePlan";
export abstract class AIFunctionDefinitions {
// Definitions list provides a list of function definitions that does not include any planning functions (used as reference in planning agent prompt)
private static readonly definitionsList = [SearchVaultFiles, ReadVaultFiles, ListVaultFiles, WriteVaultFile, PatchVaultFile, DeleteVaultFiles, MoveVaultFiles];
// Definitions for the main agent
public static agentDefinitions(destructive: boolean, planning: boolean): IAIFunctionDefinition[] {
if (planning) {
return [CreatePlan];
}
let actions = [
SearchVaultFiles,
ReadVaultFiles,
ListVaultFiles
];
if (destructive) {
actions = actions.concat([
WriteVaultFile,
PatchVaultFile,
DeleteVaultFiles,
MoveVaultFiles
]);
}
return actions;
}
// Definitions for the planning agent
public static planningAgentDefinitions(): IAIFunctionDefinition[] {
return [SearchVaultFiles, ReadVaultFiles, ListVaultFiles, AskUserQuestion, SubmitPlan];
}
// Definitions for the main agent during plan execution
public static agentExecutionDefinitions() {
return [
SearchVaultFiles,
ReadVaultFiles,
ListVaultFiles,
WriteVaultFile,
PatchVaultFile,
DeleteVaultFiles,
MoveVaultFiles,
CompleteStep,
Replan,
CompletePlan,
CancelPlan
];
}
public static compactSummaryForPlanningAgent(): string {
return this.definitionsList.map(definition => {
// Extract first line of description as brief purpose
const description = definition.description.split('\n')[0].trim();
return `- ${description}`;
}).join("\n");
}
}