refactor(gui): Unify prompt analysis components for actor, intent decoder and Handoff

This commit is contained in:
rhit-lid2
2026-07-19 16:18:15 +05:30
parent f8977a14c6
commit 1e34becec7
9 changed files with 381 additions and 480 deletions

View File

@@ -13,7 +13,7 @@ import {
LedgerEntry,
LedgerRepository,
} from "@omnia/memory";
import { hydrate } from "@omnia/voice";
import { hydrate, PromptComponent } from "@omnia/voice";
/**
* Zod schema for the structured response expected from the actor LLM.
@@ -60,21 +60,24 @@ export class ActorPromptBuilder {
/**
* Assembles the system prompt and user context for a given entity.
*/
/**
* Assembles the system prompt and user context for a given entity.
*/
build(
worldState: WorldState,
entity: Entity,
): {
systemPrompt: string;
userContext: string;
sections: {
worldInfo: string;
memoryLedger: string;
cognitiveBuffer: string;
};
components: PromptComponent[];
} {
const systemPrompt = this.buildSystemPrompt();
const { userContext, sections } = this.buildUserContext(worldState, entity);
return { systemPrompt, userContext, sections };
const { userContext, components } = this.buildUserContext(
worldState,
entity,
systemPrompt,
);
return { systemPrompt, userContext, components };
}
private buildSystemPrompt(): string {
@@ -103,13 +106,10 @@ Guidelines:
private buildUserContext(
worldState: WorldState,
entity: Entity,
systemPrompt: string,
): {
userContext: string;
sections: {
worldInfo: string;
memoryLedger: string;
cognitiveBuffer: string;
};
components: PromptComponent[];
} {
const now = worldState.clock.get();
@@ -151,13 +151,28 @@ Guidelines:
if (cognitiveBuffer) parts.push(cognitiveBuffer);
const userContext = parts.join("\n\n");
const components: PromptComponent[] = [
{ label: "System Prompt", type: "system", content: systemPrompt },
{ label: "World Info", type: "world", content: worldInfo },
];
if (memoryLedger) {
components.push({
label: "Memory Ledger",
type: "memories",
content: memoryLedger,
});
}
if (cognitiveBuffer) {
components.push({
label: "Cognitive Buffer",
type: "events",
content: cognitiveBuffer,
});
}
return {
userContext,
sections: {
worldInfo,
memoryLedger,
cognitiveBuffer,
},
components,
};
}

View File

@@ -2,6 +2,7 @@ import { Entity, WorldState } from "@omnia/core";
import { ILLMProvider } from "@omnia/llm";
import { BufferEntry, BufferRepository, LedgerRepository } from "@omnia/memory";
import { Intent, IntentDecoder, IntentSequence } from "@omnia/intent";
import { PromptComponent } from "@omnia/voice";
import {
ActorPromptBuilder,
ActorResponseSchema,
@@ -56,11 +57,7 @@ export interface ActorTurnResult {
intents: IntentSequence;
systemPrompt?: string;
userContext?: string;
promptComponents?: {
worldInfo: string;
memoryLedger: string;
cognitiveBuffer: string;
};
promptComponents?: PromptComponent[];
}
/**
@@ -123,7 +120,7 @@ export class ActorAgent {
);
}
const { systemPrompt, userContext, sections } = this.promptBuilder.build(
const { systemPrompt, userContext, components } = this.promptBuilder.build(
worldState,
entity,
);
@@ -154,7 +151,7 @@ export class ActorAgent {
intents,
systemPrompt,
userContext,
promptComponents: sections,
promptComponents: components,
};
}
}

View File

@@ -1,3 +1,15 @@
export * from "./dehydration.js";
export * from "./hydration.js";
export * from "./contractions.js";
export interface PromptComponent {
label: string;
type: "system" | "world" | "events" | "memories" | "input" | "other";
content: string;
}
export interface PromptBreakdown {
systemPrompt: string;
userContext: string;
components?: PromptComponent[];
}