mirror of
https://github.com/andy-stack/vaultkeeper-ai.git
synced 2026-07-22 16:30:27 +00:00
Track replan state to ensure plan doesn't complete prematurely when a replan is requested. Also add CompletePlan to orchestration agent definitions and update step progress callback on successful completion.
94 lines
No EOL
3.4 KiB
TypeScript
94 lines
No EOL
3.4 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 { Replan } from "./Functions/Replan";
|
|
import { CompleteStep } from "./Functions/CompleteStep";
|
|
import { SubmitPlan } from "./Functions/SubmitPlan";
|
|
import { CancelPlan } from "./Functions/CancelPlan";
|
|
import { AskUserQuestionPlanning } from "./Functions/AskUserQuestionPlanning";
|
|
import { CompletePlan } from "./Functions/CompletePlan";
|
|
import { AskUserQuestionExecution } from "./Functions/AskUserQuestionExecution";
|
|
import { ContinuePlanExecution } from "./Functions/ContinuePlanExecution";
|
|
import { CompleteTask } from "./Functions/CompleteTask";
|
|
import { ExecuteWorkflow } from "./Functions/CreatePlan";
|
|
|
|
export abstract class AIFunctionDefinitions {
|
|
|
|
public static isGated: boolean = false;
|
|
|
|
// 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];
|
|
|
|
public static agentDefinitions(destructive: boolean, planning: boolean): IAIFunctionDefinition[] {
|
|
this.isGated = false;
|
|
|
|
if (planning) {
|
|
return [ExecuteWorkflow];
|
|
}
|
|
|
|
let actions = [
|
|
SearchVaultFiles,
|
|
ReadVaultFiles,
|
|
ListVaultFiles
|
|
];
|
|
|
|
if (destructive) {
|
|
actions = actions.concat([
|
|
WriteVaultFile,
|
|
PatchVaultFile,
|
|
DeleteVaultFiles,
|
|
MoveVaultFiles
|
|
]);
|
|
}
|
|
|
|
return actions;
|
|
}
|
|
|
|
public static orchestrationAgentDefinitions(): IAIFunctionDefinition[] {
|
|
return [CompleteStep, Replan, CancelPlan, CompletePlan];
|
|
}
|
|
|
|
public static planningAgentDefinitions(): IAIFunctionDefinition[] {
|
|
return [SearchVaultFiles, ReadVaultFiles, ListVaultFiles, AskUserQuestionPlanning, SubmitPlan];
|
|
}
|
|
|
|
public static executionAgentDefinitions(): IAIFunctionDefinition[] {
|
|
return [...this.agentDefinitions(true, false), CompleteTask];
|
|
}
|
|
|
|
public static agentExecutionDefinitions() {
|
|
this.isGated = false;
|
|
return [
|
|
SearchVaultFiles,
|
|
ReadVaultFiles,
|
|
ListVaultFiles,
|
|
WriteVaultFile,
|
|
PatchVaultFile,
|
|
DeleteVaultFiles,
|
|
MoveVaultFiles,
|
|
AskUserQuestionExecution,
|
|
CompletePlan
|
|
];
|
|
}
|
|
|
|
public static gatedDefinitions() {
|
|
this.isGated = true;
|
|
return [
|
|
ContinuePlanExecution,
|
|
CompleteStep
|
|
];
|
|
}
|
|
|
|
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");
|
|
}
|
|
} |