-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathagentic-executor.ts
More file actions
67 lines (62 loc) · 2.38 KB
/
Copy pathagentic-executor.ts
File metadata and controls
67 lines (62 loc) · 2.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import { appendEvidenceEvent } from "./evidence-ledger";
import { learnFromMission, type LearningMemoryRecord } from "./learning-memory";
import { runModelIntelligence, type ModelIntelligenceResult } from "./model-provider";
import { runMission, type MissionInput, type MissionResult } from "./orchestrator";
export type AgenticMissionInput = MissionInput & {
operatorInstruction?: string;
};
export type AgenticMissionResult = {
mission: MissionResult;
modelIntelligence: ModelIntelligenceResult;
learning: LearningMemoryRecord | null;
evidenceEventIds: string[];
};
export async function runAgenticMission(input: AgenticMissionInput): Promise<AgenticMissionResult> {
const mission = await runMission(input);
const modelIntelligence = await runModelIntelligence({ mission, operatorInstruction: input.operatorInstruction });
const modelEvent = appendEvidenceEvent({
missionId: mission.missionId,
actor: "model-intelligence-adapter",
action: "model_intelligence_completed",
input: {
missionId: mission.missionId,
provider: modelIntelligence.provider,
model: modelIntelligence.model,
policyDecision: mission.policyDecision.decision,
},
output: {
status: modelIntelligence.status,
summary: modelIntelligence.summary,
verifyRequired: modelIntelligence.verifyRequired,
recommendedNextSteps: modelIntelligence.recommendedNextSteps,
},
policyDecision: mission.policyDecision,
});
mission.evidenceEventIds = [...mission.evidenceEventIds, modelEvent.eventId];
const learning = learnFromMission(mission, modelIntelligence);
const learningEvent = appendEvidenceEvent({
missionId: mission.missionId,
actor: "evidence-learning-memory",
action: "learning_memory_recorded",
input: { missionId: mission.missionId, modelEventId: modelEvent.eventId },
output: learning
? {
memoryId: learning.memoryId,
redacted: learning.redacted,
evidenceHashes: learning.evidenceHashes,
}
: { recorded: false },
policyDecision: mission.policyDecision,
parentEventId: modelEvent.eventId,
});
mission.evidenceEventIds = [...mission.evidenceEventIds, learningEvent.eventId];
return {
mission,
modelIntelligence: {
...modelIntelligence,
evidenceEventIds: mission.evidenceEventIds,
},
learning,
evidenceEventIds: mission.evidenceEventIds,
};
}