@ariaflowagents/core 0.7.1 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +90 -1
- package/dist/agents/Agent.d.ts +188 -9
- package/dist/agents/Agent.d.ts.map +1 -1
- package/dist/agents/Agent.js +246 -24
- package/dist/agents/Agent.js.map +1 -1
- package/dist/agents/CompositeAgent.d.ts +4 -3
- package/dist/agents/CompositeAgent.d.ts.map +1 -1
- package/dist/agents/CompositeAgent.js +19 -9
- package/dist/agents/CompositeAgent.js.map +1 -1
- package/dist/agents/FlowAgent.d.ts +3 -2
- package/dist/agents/FlowAgent.d.ts.map +1 -1
- package/dist/agents/FlowAgent.js +16 -6
- package/dist/agents/FlowAgent.js.map +1 -1
- package/dist/agents/TriageAgent.d.ts +8 -2
- package/dist/agents/TriageAgent.d.ts.map +1 -1
- package/dist/agents/TriageAgent.js +39 -6
- package/dist/agents/TriageAgent.js.map +1 -1
- package/dist/agents/index.d.ts +1 -1
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +0 -1
- package/dist/agents/index.js.map +1 -1
- package/dist/flows/FlowManager.d.ts +8 -0
- package/dist/flows/FlowManager.d.ts.map +1 -1
- package/dist/flows/FlowManager.js +32 -2
- package/dist/flows/FlowManager.js.map +1 -1
- package/dist/foundation/AgentDefinition.d.ts +18 -0
- package/dist/foundation/AgentDefinition.d.ts.map +1 -0
- package/dist/foundation/AgentDefinition.js +2 -0
- package/dist/foundation/AgentDefinition.js.map +1 -0
- package/dist/foundation/AgentStateController.d.ts +26 -0
- package/dist/foundation/AgentStateController.d.ts.map +1 -0
- package/dist/foundation/AgentStateController.js +2 -0
- package/dist/foundation/AgentStateController.js.map +1 -0
- package/dist/foundation/ConversationEventLog.d.ts +72 -0
- package/dist/foundation/ConversationEventLog.d.ts.map +1 -0
- package/dist/foundation/ConversationEventLog.js +2 -0
- package/dist/foundation/ConversationEventLog.js.map +1 -0
- package/dist/foundation/ConversationState.d.ts +31 -0
- package/dist/foundation/ConversationState.d.ts.map +1 -0
- package/dist/foundation/ConversationState.js +2 -0
- package/dist/foundation/ConversationState.js.map +1 -0
- package/dist/foundation/DefaultAgentStateController.d.ts +24 -0
- package/dist/foundation/DefaultAgentStateController.d.ts.map +1 -0
- package/dist/foundation/DefaultAgentStateController.js +49 -0
- package/dist/foundation/DefaultAgentStateController.js.map +1 -0
- package/dist/foundation/DefaultConversationEventLog.d.ts +28 -0
- package/dist/foundation/DefaultConversationEventLog.d.ts.map +1 -0
- package/dist/foundation/DefaultConversationEventLog.js +195 -0
- package/dist/foundation/DefaultConversationEventLog.js.map +1 -0
- package/dist/foundation/DefaultConversationState.d.ts +34 -0
- package/dist/foundation/DefaultConversationState.d.ts.map +1 -0
- package/dist/foundation/DefaultConversationState.js +100 -0
- package/dist/foundation/DefaultConversationState.js.map +1 -0
- package/dist/foundation/DefaultToolExecutor.d.ts +58 -0
- package/dist/foundation/DefaultToolExecutor.d.ts.map +1 -0
- package/dist/foundation/DefaultToolExecutor.js +128 -0
- package/dist/foundation/DefaultToolExecutor.js.map +1 -0
- package/dist/foundation/ToolExecutor.d.ts +44 -0
- package/dist/foundation/ToolExecutor.d.ts.map +1 -0
- package/dist/foundation/ToolExecutor.js +2 -0
- package/dist/foundation/ToolExecutor.js.map +1 -0
- package/dist/foundation/createFoundation.d.ts +33 -0
- package/dist/foundation/createFoundation.d.ts.map +1 -0
- package/dist/foundation/createFoundation.js +34 -0
- package/dist/foundation/createFoundation.js.map +1 -0
- package/dist/foundation/index.d.ts +15 -0
- package/dist/foundation/index.d.ts.map +1 -0
- package/dist/foundation/index.js +8 -0
- package/dist/foundation/index.js.map +1 -0
- package/dist/hooks/HookRunner.d.ts +2 -0
- package/dist/hooks/HookRunner.d.ts.map +1 -1
- package/dist/hooks/HookRunner.js +4 -0
- package/dist/hooks/HookRunner.js.map +1 -1
- package/dist/index.d.ts +13 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/memory/MemoryService.d.ts +40 -0
- package/dist/memory/MemoryService.d.ts.map +1 -0
- package/dist/memory/MemoryService.js +2 -0
- package/dist/memory/MemoryService.js.map +1 -0
- package/dist/memory/index.d.ts +5 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +3 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/preloadMemory.d.ts +17 -0
- package/dist/memory/preloadMemory.d.ts.map +1 -0
- package/dist/memory/preloadMemory.js +62 -0
- package/dist/memory/preloadMemory.js.map +1 -0
- package/dist/memory/stores/InMemoryMemoryService.d.ts +20 -0
- package/dist/memory/stores/InMemoryMemoryService.d.ts.map +1 -0
- package/dist/memory/stores/InMemoryMemoryService.js +92 -0
- package/dist/memory/stores/InMemoryMemoryService.js.map +1 -0
- package/dist/memory/types.d.ts +49 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +8 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/prompts/AgentPrompt.d.ts +110 -0
- package/dist/prompts/AgentPrompt.d.ts.map +1 -0
- package/dist/prompts/AgentPrompt.js +373 -0
- package/dist/prompts/AgentPrompt.js.map +1 -0
- package/dist/prompts/PromptAssembly.d.ts +119 -0
- package/dist/prompts/PromptAssembly.d.ts.map +1 -0
- package/dist/prompts/PromptAssembly.js +150 -0
- package/dist/prompts/PromptAssembly.js.map +1 -0
- package/dist/prompts/PromptBuilder.d.ts +22 -3
- package/dist/prompts/PromptBuilder.d.ts.map +1 -1
- package/dist/prompts/PromptBuilder.js +242 -13
- package/dist/prompts/PromptBuilder.js.map +1 -1
- package/dist/prompts/PromptRenderer.d.ts +43 -0
- package/dist/prompts/PromptRenderer.d.ts.map +1 -0
- package/dist/prompts/PromptRenderer.js +114 -0
- package/dist/prompts/PromptRenderer.js.map +1 -0
- package/dist/prompts/brandVoice.d.ts +10 -0
- package/dist/prompts/brandVoice.d.ts.map +1 -0
- package/dist/prompts/brandVoice.js +87 -0
- package/dist/prompts/brandVoice.js.map +1 -0
- package/dist/prompts/index.d.ts +11 -4
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +7 -2
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/security.d.ts +5 -0
- package/dist/prompts/security.d.ts.map +1 -0
- package/dist/prompts/security.js +52 -0
- package/dist/prompts/security.js.map +1 -0
- package/dist/prompts/types.d.ts +65 -1
- package/dist/prompts/types.d.ts.map +1 -1
- package/dist/prompts/types.js +26 -0
- package/dist/prompts/types.js.map +1 -1
- package/dist/runtime/ContextBudget.d.ts +57 -0
- package/dist/runtime/ContextBudget.d.ts.map +1 -0
- package/dist/runtime/ContextBudget.js +103 -0
- package/dist/runtime/ContextBudget.js.map +1 -0
- package/dist/runtime/ContextManager.d.ts +8 -5
- package/dist/runtime/ContextManager.d.ts.map +1 -1
- package/dist/runtime/ContextManager.js +47 -14
- package/dist/runtime/ContextManager.js.map +1 -1
- package/dist/runtime/FlowExecutor.d.ts +16 -11
- package/dist/runtime/FlowExecutor.d.ts.map +1 -1
- package/dist/runtime/FlowExecutor.js +32 -138
- package/dist/runtime/FlowExecutor.js.map +1 -1
- package/dist/runtime/Runtime.d.ts +31 -78
- package/dist/runtime/Runtime.d.ts.map +1 -1
- package/dist/runtime/Runtime.js +225 -1406
- package/dist/runtime/Runtime.js.map +1 -1
- package/dist/runtime/SessionCache.d.ts +16 -0
- package/dist/runtime/SessionCache.d.ts.map +1 -0
- package/dist/runtime/SessionCache.js +49 -0
- package/dist/runtime/SessionCache.js.map +1 -0
- package/dist/runtime/SessionMutex.d.ts +37 -0
- package/dist/runtime/SessionMutex.d.ts.map +1 -0
- package/dist/runtime/SessionMutex.js +59 -0
- package/dist/runtime/SessionMutex.js.map +1 -0
- package/dist/runtime/StreamEmitter.d.ts +34 -0
- package/dist/runtime/StreamEmitter.d.ts.map +1 -0
- package/dist/runtime/StreamEmitter.js +91 -0
- package/dist/runtime/StreamEmitter.js.map +1 -0
- package/dist/runtime/handoffFilters.d.ts +60 -0
- package/dist/runtime/handoffFilters.d.ts.map +1 -0
- package/dist/runtime/handoffFilters.js +95 -0
- package/dist/runtime/handoffFilters.js.map +1 -0
- package/dist/runtime/pipeline/AgentExecuteStage.d.ts +22 -0
- package/dist/runtime/pipeline/AgentExecuteStage.d.ts.map +1 -0
- package/dist/runtime/pipeline/AgentExecuteStage.js +889 -0
- package/dist/runtime/pipeline/AgentExecuteStage.js.map +1 -0
- package/dist/runtime/pipeline/ContextAssembleStage.d.ts +26 -0
- package/dist/runtime/pipeline/ContextAssembleStage.d.ts.map +1 -0
- package/dist/runtime/pipeline/ContextAssembleStage.js +253 -0
- package/dist/runtime/pipeline/ContextAssembleStage.js.map +1 -0
- package/dist/runtime/pipeline/ContextGatherStage.d.ts +21 -0
- package/dist/runtime/pipeline/ContextGatherStage.d.ts.map +1 -0
- package/dist/runtime/pipeline/ContextGatherStage.js +161 -0
- package/dist/runtime/pipeline/ContextGatherStage.js.map +1 -0
- package/dist/runtime/pipeline/IntakeStage.d.ts +25 -0
- package/dist/runtime/pipeline/IntakeStage.d.ts.map +1 -0
- package/dist/runtime/pipeline/IntakeStage.js +126 -0
- package/dist/runtime/pipeline/IntakeStage.js.map +1 -0
- package/dist/runtime/pipeline/PostStreamStage.d.ts +26 -0
- package/dist/runtime/pipeline/PostStreamStage.d.ts.map +1 -0
- package/dist/runtime/pipeline/PostStreamStage.js +129 -0
- package/dist/runtime/pipeline/PostStreamStage.js.map +1 -0
- package/dist/runtime/pipeline/TurnPipeline.d.ts +54 -0
- package/dist/runtime/pipeline/TurnPipeline.d.ts.map +1 -0
- package/dist/runtime/pipeline/TurnPipeline.js +15 -0
- package/dist/runtime/pipeline/TurnPipeline.js.map +1 -0
- package/dist/runtime/pipeline/TurnServices.d.ts +48 -0
- package/dist/runtime/pipeline/TurnServices.d.ts.map +1 -0
- package/dist/runtime/pipeline/TurnServices.js +2 -0
- package/dist/runtime/pipeline/TurnServices.js.map +1 -0
- package/dist/runtime/pipeline/agentTypeGuards.d.ts +4 -0
- package/dist/runtime/pipeline/agentTypeGuards.d.ts.map +1 -0
- package/dist/runtime/pipeline/agentTypeGuards.js +7 -0
- package/dist/runtime/pipeline/agentTypeGuards.js.map +1 -0
- package/dist/runtime/pipeline/index.d.ts +11 -0
- package/dist/runtime/pipeline/index.d.ts.map +1 -0
- package/dist/runtime/pipeline/index.js +13 -0
- package/dist/runtime/pipeline/index.js.map +1 -0
- package/dist/runtime/pipeline/outputProcessing.d.ts +23 -0
- package/dist/runtime/pipeline/outputProcessing.d.ts.map +1 -0
- package/dist/runtime/pipeline/outputProcessing.js +63 -0
- package/dist/runtime/pipeline/outputProcessing.js.map +1 -0
- package/dist/runtime/pipeline/sessionUtils.d.ts +12 -0
- package/dist/runtime/pipeline/sessionUtils.d.ts.map +1 -0
- package/dist/runtime/pipeline/sessionUtils.js +73 -0
- package/dist/runtime/pipeline/sessionUtils.js.map +1 -0
- package/dist/tools/Tool.d.ts +7 -0
- package/dist/tools/Tool.d.ts.map +1 -1
- package/dist/tools/Tool.js +12 -3
- package/dist/tools/Tool.js.map +1 -1
- package/dist/tools/memory.d.ts +26 -0
- package/dist/tools/memory.d.ts.map +1 -0
- package/dist/tools/memory.js +51 -0
- package/dist/tools/memory.js.map +1 -0
- package/dist/types/index.d.ts +177 -6
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/guides/AGENTS.md +173 -0
- package/guides/README.md +12 -0
- package/guides/TOOLS.md +93 -27
- package/package.json +12 -4
- package/dist/agents/LLMAgent.d.ts +0 -11
- package/dist/agents/LLMAgent.d.ts.map +0 -1
- package/dist/agents/LLMAgent.js +0 -31
- package/dist/agents/LLMAgent.js.map +0 -1
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { HarnessStreamPart, RunContext, Session } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Discriminated union of conversation-level events for the runtime event log.
|
|
4
|
+
* Stored in session workingMemory for observability.
|
|
5
|
+
*/
|
|
6
|
+
export type ConversationEvent = {
|
|
7
|
+
type: 'user';
|
|
8
|
+
text: string;
|
|
9
|
+
userId?: string;
|
|
10
|
+
timestamp: Date;
|
|
11
|
+
} | {
|
|
12
|
+
type: 'assistant';
|
|
13
|
+
text: string;
|
|
14
|
+
timestamp: Date;
|
|
15
|
+
} | {
|
|
16
|
+
type: 'tool-call';
|
|
17
|
+
toolCallId: string;
|
|
18
|
+
toolName: string;
|
|
19
|
+
args: unknown;
|
|
20
|
+
timestamp: Date;
|
|
21
|
+
} | {
|
|
22
|
+
type: 'tool-result';
|
|
23
|
+
toolCallId: string;
|
|
24
|
+
toolName: string;
|
|
25
|
+
result: unknown;
|
|
26
|
+
timestamp: Date;
|
|
27
|
+
} | {
|
|
28
|
+
type: 'tool-error';
|
|
29
|
+
toolCallId: string;
|
|
30
|
+
toolName: string;
|
|
31
|
+
error: string;
|
|
32
|
+
timestamp: Date;
|
|
33
|
+
} | {
|
|
34
|
+
type: 'handoff';
|
|
35
|
+
from: string;
|
|
36
|
+
to: string;
|
|
37
|
+
reason?: string;
|
|
38
|
+
timestamp: Date;
|
|
39
|
+
} | {
|
|
40
|
+
type: 'flow-transition';
|
|
41
|
+
from: string;
|
|
42
|
+
to: string;
|
|
43
|
+
timestamp: Date;
|
|
44
|
+
} | {
|
|
45
|
+
type: 'error';
|
|
46
|
+
error: string;
|
|
47
|
+
timestamp: Date;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Records conversation events into session working memory and manages checkpointing.
|
|
51
|
+
* Shared by Runtime and VoiceEngine.
|
|
52
|
+
*/
|
|
53
|
+
export interface ConversationEventLog {
|
|
54
|
+
/**
|
|
55
|
+
* Record a stream part into the session's runtime event log.
|
|
56
|
+
* Text-deltas are accumulated; terminal events flush the assistant text.
|
|
57
|
+
*/
|
|
58
|
+
record(context: RunContext, part: HarnessStreamPart): void;
|
|
59
|
+
/**
|
|
60
|
+
* Persist the session as a checkpoint (called after significant events).
|
|
61
|
+
*/
|
|
62
|
+
checkpoint(session: Session): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Whether a given stream part type should trigger a checkpoint save.
|
|
65
|
+
*/
|
|
66
|
+
shouldCheckpoint(part: HarnessStreamPart): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Clean up transient state (e.g., accumulated assistant text) from the session.
|
|
69
|
+
*/
|
|
70
|
+
cleanup(session: Session): void;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=ConversationEventLog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConversationEventLog.d.ts","sourceRoot":"","sources":["../../src/foundation/ConversationEventLog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEhF;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAE,GAC3F;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAE,GAC/F;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAE,GAC5F;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAE,GAC/E;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAE,CAAC;AAEtD;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAE3D;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5C;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC;IAEnD;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConversationEventLog.js","sourceRoot":"","sources":["../../src/foundation/ConversationEventLog.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Session, WorkingMemory } from '../types/index.js';
|
|
2
|
+
import type { ModelMessage } from 'ai';
|
|
3
|
+
/**
|
|
4
|
+
* Manages session lifecycle: load, save, delete, message append, turn counting.
|
|
5
|
+
* Shared by Runtime and VoiceEngine.
|
|
6
|
+
*/
|
|
7
|
+
export interface ConversationState {
|
|
8
|
+
/** Load an existing session or create a new one. */
|
|
9
|
+
load(sessionId: string, userId?: string): Promise<Session>;
|
|
10
|
+
/** Persist session to the backing store. */
|
|
11
|
+
save(session: Session): Promise<void>;
|
|
12
|
+
/** Delete a session from the backing store. */
|
|
13
|
+
delete(sessionId: string): Promise<void>;
|
|
14
|
+
/** Get a WorkingMemory wrapper for the session. */
|
|
15
|
+
workingMemory(session: Session): WorkingMemory;
|
|
16
|
+
/** Append a user message to the session history. */
|
|
17
|
+
appendUserMessage(session: Session, text: string): void;
|
|
18
|
+
/** Append an assistant message to the session history. */
|
|
19
|
+
appendAssistantMessage(session: Session, text: string): void;
|
|
20
|
+
/** Append a raw ModelMessage to the session history. */
|
|
21
|
+
appendMessage(session: Session, message: ModelMessage): void;
|
|
22
|
+
/** Get the current turn number for the session. */
|
|
23
|
+
getSessionTurn(session: Session): number;
|
|
24
|
+
/** Increment and return the new turn number. */
|
|
25
|
+
bumpSessionTurn(session: Session): number;
|
|
26
|
+
/** Update the session's updatedAt timestamp. */
|
|
27
|
+
touchSession(session: Session): void;
|
|
28
|
+
/** Create a fresh session with defaults. */
|
|
29
|
+
createSession(id: string, defaultAgentId: string, userId?: string): Session;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=ConversationState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConversationState.d.ts","sourceRoot":"","sources":["../../src/foundation/ConversationState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAEvC;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,oDAAoD;IACpD,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3D,4CAA4C;IAC5C,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC,+CAA+C;IAC/C,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzC,mDAAmD;IACnD,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CAAC;IAE/C,oDAAoD;IACpD,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAExD,0DAA0D;IAC1D,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7D,wDAAwD;IACxD,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAE7D,mDAAmD;IACnD,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC;IAEzC,gDAAgD;IAChD,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC;IAE1C,gDAAgD;IAChD,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAErC,4CAA4C;IAC5C,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConversationState.js","sourceRoot":"","sources":["../../src/foundation/ConversationState.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Session } from '../types/index.js';
|
|
2
|
+
import type { AgentStateController } from './AgentStateController.js';
|
|
3
|
+
/**
|
|
4
|
+
* Default agent state controller extracted from Runtime.
|
|
5
|
+
*
|
|
6
|
+
* Handles:
|
|
7
|
+
* - Active agent resolution with fallback
|
|
8
|
+
* - Handoff recording in session.handoffHistory + session.metadata.handoffHistory
|
|
9
|
+
* - Per-agent state updates in session.agentStates
|
|
10
|
+
* - Circular handoff detection
|
|
11
|
+
*/
|
|
12
|
+
export declare class DefaultAgentStateController implements AgentStateController {
|
|
13
|
+
getActiveAgent(session: Session, fallbackAgentId: string): string;
|
|
14
|
+
setActiveAgent(session: Session, agentId: string): void;
|
|
15
|
+
recordHandoff(args: {
|
|
16
|
+
session: Session;
|
|
17
|
+
fromAgentId: string;
|
|
18
|
+
toAgentId: string;
|
|
19
|
+
reason: string;
|
|
20
|
+
}): void;
|
|
21
|
+
updateAgentState(session: Session, agentId: string, state: Record<string, unknown>): void;
|
|
22
|
+
isCircularHandoff(handoffStack: string[], agentId: string, maxVisits?: number): boolean;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=DefaultAgentStateController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultAgentStateController.d.ts","sourceRoot":"","sources":["../../src/foundation/DefaultAgentStateController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE;;;;;;;;GAQG;AACH,qBAAa,2BAA4B,YAAW,oBAAoB;IACtE,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM;IAIjE,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAKvD,aAAa,CAAC,IAAI,EAAE;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,IAAI;IAeR,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAczF,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,MAAU,GAAG,OAAO;CAI3F"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default agent state controller extracted from Runtime.
|
|
3
|
+
*
|
|
4
|
+
* Handles:
|
|
5
|
+
* - Active agent resolution with fallback
|
|
6
|
+
* - Handoff recording in session.handoffHistory + session.metadata.handoffHistory
|
|
7
|
+
* - Per-agent state updates in session.agentStates
|
|
8
|
+
* - Circular handoff detection
|
|
9
|
+
*/
|
|
10
|
+
export class DefaultAgentStateController {
|
|
11
|
+
getActiveAgent(session, fallbackAgentId) {
|
|
12
|
+
return session.activeAgentId ?? session.currentAgent ?? fallbackAgentId;
|
|
13
|
+
}
|
|
14
|
+
setActiveAgent(session, agentId) {
|
|
15
|
+
session.activeAgentId = agentId;
|
|
16
|
+
session.currentAgent = agentId;
|
|
17
|
+
}
|
|
18
|
+
recordHandoff(args) {
|
|
19
|
+
const record = {
|
|
20
|
+
from: args.fromAgentId,
|
|
21
|
+
to: args.toAgentId,
|
|
22
|
+
reason: args.reason,
|
|
23
|
+
timestamp: new Date(),
|
|
24
|
+
};
|
|
25
|
+
args.session.handoffHistory.push(record);
|
|
26
|
+
if (args.session.metadata) {
|
|
27
|
+
args.session.metadata.handoffHistory.push(record);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
updateAgentState(session, agentId, state) {
|
|
31
|
+
const existing = session.agentStates[agentId];
|
|
32
|
+
if (existing) {
|
|
33
|
+
existing.state = { ...existing.state, ...state };
|
|
34
|
+
existing.lastActive = new Date();
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
session.agentStates[agentId] = {
|
|
38
|
+
agentId,
|
|
39
|
+
state,
|
|
40
|
+
lastActive: new Date(),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
isCircularHandoff(handoffStack, agentId, maxVisits = 2) {
|
|
45
|
+
const priorVisits = handoffStack.filter(id => id === agentId).length;
|
|
46
|
+
return priorVisits >= maxVisits;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=DefaultAgentStateController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultAgentStateController.js","sourceRoot":"","sources":["../../src/foundation/DefaultAgentStateController.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,OAAO,2BAA2B;IACtC,cAAc,CAAC,OAAgB,EAAE,eAAuB;QACtD,OAAO,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,YAAY,IAAI,eAAe,CAAC;IAC1E,CAAC;IAED,cAAc,CAAC,OAAgB,EAAE,OAAe;QAC9C,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC;QAChC,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;IACjC,CAAC;IAED,aAAa,CAAC,IAKb;QACC,MAAM,MAAM,GAAkB;YAC5B,IAAI,EAAE,IAAI,CAAC,WAAW;YACtB,EAAE,EAAE,IAAI,CAAC,SAAS;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEzC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,OAAgB,EAAE,OAAe,EAAE,KAA8B;QAChF,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,KAAK,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC;YACjD,QAAQ,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG;gBAC7B,OAAO;gBACP,KAAK;gBACL,UAAU,EAAE,IAAI,IAAI,EAAE;aACvB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,YAAsB,EAAE,OAAe,EAAE,YAAoB,CAAC;QAC9E,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;QACrE,OAAO,WAAW,IAAI,SAAS,CAAC;IAClC,CAAC;CACF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { HarnessStreamPart, RunContext, Session } from '../types/index.js';
|
|
2
|
+
import type { SessionStore } from '../session/SessionStore.js';
|
|
3
|
+
import type { ConversationEventLog } from './ConversationEventLog.js';
|
|
4
|
+
export interface DefaultConversationEventLogConfig {
|
|
5
|
+
sessionStore: SessionStore;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Default conversation event log extracted from SessionEventManager + Runtime checkpoint logic.
|
|
9
|
+
*
|
|
10
|
+
* Handles:
|
|
11
|
+
* - Recording stream parts into session working memory
|
|
12
|
+
* - Text-delta accumulation and flush on terminal events
|
|
13
|
+
* - Value truncation at depth 5 for safe serialization
|
|
14
|
+
* - Checkpoint determination and persistence
|
|
15
|
+
*/
|
|
16
|
+
export declare class DefaultConversationEventLog implements ConversationEventLog {
|
|
17
|
+
private sessionStore;
|
|
18
|
+
constructor(config: DefaultConversationEventLogConfig);
|
|
19
|
+
record(context: RunContext, part: HarnessStreamPart): void;
|
|
20
|
+
checkpoint(session: Session): Promise<void>;
|
|
21
|
+
shouldCheckpoint(part: HarnessStreamPart): boolean;
|
|
22
|
+
cleanup(session: Session): void;
|
|
23
|
+
private getSessionTurn;
|
|
24
|
+
private appendEvent;
|
|
25
|
+
private flushAssistantText;
|
|
26
|
+
private toEventLogValue;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=DefaultConversationEventLog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultConversationEventLog.d.ts","sourceRoot":"","sources":["../../src/foundation/DefaultConversationEventLog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAmBtE,MAAM,WAAW,iCAAiC;IAChD,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,qBAAa,2BAA4B,YAAW,oBAAoB;IACtE,OAAO,CAAC,YAAY,CAAe;gBAEvB,MAAM,EAAE,iCAAiC;IAIrD,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAiFpD,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IASjD,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO;IAIlD,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAM/B,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,eAAe;CA4BxB"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import crypto from 'node:crypto';
|
|
2
|
+
import { isRecord } from '../utils/isRecord.js';
|
|
3
|
+
/** Working memory key for the runtime event log array. */
|
|
4
|
+
const EVENT_LOG_KEY = 'runtimeEventLog';
|
|
5
|
+
/** Working memory key for accumulated assistant text between flushes. */
|
|
6
|
+
const ASSISTANT_TEXT_KEY = '__ariaAssistantText';
|
|
7
|
+
/** Working memory key for turn tracking. */
|
|
8
|
+
const SESSION_TURN_KEY = '__ariaSessionTurn';
|
|
9
|
+
/** Max event entries before oldest are evicted. */
|
|
10
|
+
const MAX_ENTRIES = 2000;
|
|
11
|
+
/** Stream part types that trigger a checkpoint save. */
|
|
12
|
+
const CHECKPOINT_TYPES = new Set([
|
|
13
|
+
'tool-result',
|
|
14
|
+
'tool-error',
|
|
15
|
+
'flow-transition',
|
|
16
|
+
]);
|
|
17
|
+
/**
|
|
18
|
+
* Default conversation event log extracted from SessionEventManager + Runtime checkpoint logic.
|
|
19
|
+
*
|
|
20
|
+
* Handles:
|
|
21
|
+
* - Recording stream parts into session working memory
|
|
22
|
+
* - Text-delta accumulation and flush on terminal events
|
|
23
|
+
* - Value truncation at depth 5 for safe serialization
|
|
24
|
+
* - Checkpoint determination and persistence
|
|
25
|
+
*/
|
|
26
|
+
export class DefaultConversationEventLog {
|
|
27
|
+
sessionStore;
|
|
28
|
+
constructor(config) {
|
|
29
|
+
this.sessionStore = config.sessionStore;
|
|
30
|
+
}
|
|
31
|
+
record(context, part) {
|
|
32
|
+
// Fast path: text-delta only accumulates text — no UUID, no base object
|
|
33
|
+
if (part.type === 'text-delta') {
|
|
34
|
+
const prevRaw = context.session.workingMemory[ASSISTANT_TEXT_KEY];
|
|
35
|
+
const prev = typeof prevRaw === 'string' ? prevRaw : '';
|
|
36
|
+
context.session.workingMemory[ASSISTANT_TEXT_KEY] = prev + part.text;
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const base = {
|
|
40
|
+
id: crypto.randomUUID(),
|
|
41
|
+
sessionId: context.session.id,
|
|
42
|
+
agentId: context.agentId,
|
|
43
|
+
turn: this.getSessionTurn(context.session),
|
|
44
|
+
timestamp: new Date().toISOString(),
|
|
45
|
+
};
|
|
46
|
+
switch (part.type) {
|
|
47
|
+
case 'input':
|
|
48
|
+
this.appendEvent(context, { ...base, type: 'user', text: part.text, userId: part.userId });
|
|
49
|
+
return;
|
|
50
|
+
case 'tool-call':
|
|
51
|
+
this.appendEvent(context, {
|
|
52
|
+
...base,
|
|
53
|
+
type: 'tool_call',
|
|
54
|
+
toolCallId: part.toolCallId,
|
|
55
|
+
toolName: part.toolName,
|
|
56
|
+
args: this.toEventLogValue(part.args),
|
|
57
|
+
});
|
|
58
|
+
return;
|
|
59
|
+
case 'tool-result':
|
|
60
|
+
this.appendEvent(context, {
|
|
61
|
+
...base,
|
|
62
|
+
type: 'tool_result',
|
|
63
|
+
toolCallId: part.toolCallId,
|
|
64
|
+
toolName: part.toolName,
|
|
65
|
+
result: this.toEventLogValue(part.result),
|
|
66
|
+
});
|
|
67
|
+
return;
|
|
68
|
+
case 'tool-error':
|
|
69
|
+
this.appendEvent(context, {
|
|
70
|
+
...base,
|
|
71
|
+
type: 'tool_error',
|
|
72
|
+
toolCallId: part.toolCallId,
|
|
73
|
+
toolName: part.toolName,
|
|
74
|
+
error: part.error,
|
|
75
|
+
});
|
|
76
|
+
return;
|
|
77
|
+
case 'flow-transition':
|
|
78
|
+
this.appendEvent(context, {
|
|
79
|
+
...base,
|
|
80
|
+
type: 'transition',
|
|
81
|
+
kind: 'flow',
|
|
82
|
+
from: part.from,
|
|
83
|
+
to: part.to,
|
|
84
|
+
});
|
|
85
|
+
return;
|
|
86
|
+
case 'handoff':
|
|
87
|
+
this.appendEvent(context, {
|
|
88
|
+
...base,
|
|
89
|
+
type: 'transition',
|
|
90
|
+
kind: 'handoff',
|
|
91
|
+
from: part.from,
|
|
92
|
+
to: part.to,
|
|
93
|
+
reason: part.reason,
|
|
94
|
+
});
|
|
95
|
+
return;
|
|
96
|
+
case 'turn-end':
|
|
97
|
+
this.flushAssistantText(context, 'turn-end');
|
|
98
|
+
return;
|
|
99
|
+
case 'done':
|
|
100
|
+
this.flushAssistantText(context, 'done');
|
|
101
|
+
return;
|
|
102
|
+
case 'error':
|
|
103
|
+
this.flushAssistantText(context, 'error');
|
|
104
|
+
return;
|
|
105
|
+
default:
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
async checkpoint(session) {
|
|
110
|
+
const now = new Date();
|
|
111
|
+
session.updatedAt = now;
|
|
112
|
+
if (session.metadata) {
|
|
113
|
+
session.metadata.lastActiveAt = now;
|
|
114
|
+
}
|
|
115
|
+
await this.sessionStore.save(session);
|
|
116
|
+
}
|
|
117
|
+
shouldCheckpoint(part) {
|
|
118
|
+
return CHECKPOINT_TYPES.has(part.type);
|
|
119
|
+
}
|
|
120
|
+
cleanup(session) {
|
|
121
|
+
delete session.workingMemory[ASSISTANT_TEXT_KEY];
|
|
122
|
+
}
|
|
123
|
+
// --- Private helpers (extracted from SessionEventManager) ---
|
|
124
|
+
getSessionTurn(session) {
|
|
125
|
+
const value = session.workingMemory[SESSION_TURN_KEY];
|
|
126
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : 0;
|
|
127
|
+
}
|
|
128
|
+
appendEvent(context, entry) {
|
|
129
|
+
const current = context.session.workingMemory[EVENT_LOG_KEY];
|
|
130
|
+
let events;
|
|
131
|
+
if (Array.isArray(current)) {
|
|
132
|
+
events = current;
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
events = [];
|
|
136
|
+
context.session.workingMemory[EVENT_LOG_KEY] = events;
|
|
137
|
+
}
|
|
138
|
+
events.push(entry);
|
|
139
|
+
if (events.length > MAX_ENTRIES) {
|
|
140
|
+
events.splice(0, events.length - MAX_ENTRIES);
|
|
141
|
+
}
|
|
142
|
+
// Touch session
|
|
143
|
+
const now = new Date();
|
|
144
|
+
context.session.updatedAt = now;
|
|
145
|
+
if (context.session.metadata) {
|
|
146
|
+
context.session.metadata.lastActiveAt = now;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
flushAssistantText(context, trigger) {
|
|
150
|
+
const textRaw = context.session.workingMemory[ASSISTANT_TEXT_KEY];
|
|
151
|
+
const text = (typeof textRaw === 'string' ? textRaw : '').trim();
|
|
152
|
+
if (text.length > 0) {
|
|
153
|
+
this.appendEvent(context, {
|
|
154
|
+
id: crypto.randomUUID(),
|
|
155
|
+
sessionId: context.session.id,
|
|
156
|
+
agentId: context.agentId,
|
|
157
|
+
turn: this.getSessionTurn(context.session),
|
|
158
|
+
type: 'assistant_final',
|
|
159
|
+
trigger,
|
|
160
|
+
text,
|
|
161
|
+
timestamp: new Date().toISOString(),
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
delete context.session.workingMemory[ASSISTANT_TEXT_KEY];
|
|
165
|
+
}
|
|
166
|
+
toEventLogValue(value, depth = 0) {
|
|
167
|
+
if (value === null || value === undefined) {
|
|
168
|
+
return value;
|
|
169
|
+
}
|
|
170
|
+
if (depth >= 5) {
|
|
171
|
+
return '[truncated]';
|
|
172
|
+
}
|
|
173
|
+
if (value instanceof Date) {
|
|
174
|
+
return value.toISOString();
|
|
175
|
+
}
|
|
176
|
+
if (value instanceof Error) {
|
|
177
|
+
return { name: value.name, message: value.message };
|
|
178
|
+
}
|
|
179
|
+
if (Array.isArray(value)) {
|
|
180
|
+
return value.slice(0, 50).map(item => this.toEventLogValue(item, depth + 1));
|
|
181
|
+
}
|
|
182
|
+
if (typeof value === 'function') {
|
|
183
|
+
return '[function]';
|
|
184
|
+
}
|
|
185
|
+
if (isRecord(value)) {
|
|
186
|
+
const out = {};
|
|
187
|
+
for (const [k, v] of Object.entries(value).slice(0, 50)) {
|
|
188
|
+
out[k] = this.toEventLogValue(v, depth + 1);
|
|
189
|
+
}
|
|
190
|
+
return out;
|
|
191
|
+
}
|
|
192
|
+
return value;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=DefaultConversationEventLog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultConversationEventLog.js","sourceRoot":"","sources":["../../src/foundation/DefaultConversationEventLog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ModelMessage } from 'ai';
|
|
2
|
+
import type { Session, WorkingMemory } from '../types/index.js';
|
|
3
|
+
import type { SessionStore } from '../session/SessionStore.js';
|
|
4
|
+
import type { ConversationState } from './ConversationState.js';
|
|
5
|
+
export interface DefaultConversationStateConfig {
|
|
6
|
+
sessionStore: SessionStore;
|
|
7
|
+
defaultAgentId: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Default conversation state implementation extracted from Runtime.
|
|
11
|
+
*
|
|
12
|
+
* Handles:
|
|
13
|
+
* - Session load/create/save/delete via SessionStore
|
|
14
|
+
* - Message appending with normalization
|
|
15
|
+
* - Turn counting
|
|
16
|
+
* - Working memory access
|
|
17
|
+
*/
|
|
18
|
+
export declare class DefaultConversationState implements ConversationState {
|
|
19
|
+
private sessionStore;
|
|
20
|
+
private defaultAgentId;
|
|
21
|
+
constructor(config: DefaultConversationStateConfig);
|
|
22
|
+
load(sessionId: string, userId?: string): Promise<Session>;
|
|
23
|
+
save(session: Session): Promise<void>;
|
|
24
|
+
delete(sessionId: string): Promise<void>;
|
|
25
|
+
workingMemory(session: Session): WorkingMemory;
|
|
26
|
+
appendUserMessage(session: Session, text: string): void;
|
|
27
|
+
appendAssistantMessage(session: Session, text: string): void;
|
|
28
|
+
appendMessage(session: Session, message: ModelMessage): void;
|
|
29
|
+
getSessionTurn(session: Session): number;
|
|
30
|
+
bumpSessionTurn(session: Session): number;
|
|
31
|
+
touchSession(session: Session): void;
|
|
32
|
+
createSession(id: string, defaultAgentId: string, userId?: string): Session;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=DefaultConversationState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultConversationState.d.ts","sourceRoot":"","sources":["../../src/foundation/DefaultConversationState.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAOhE,MAAM,WAAW,8BAA8B;IAC7C,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,qBAAa,wBAAyB,YAAW,iBAAiB;IAChE,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,cAAc,CAAS;gBAEnB,MAAM,EAAE,8BAA8B;IAK5C,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ1D,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa;IAI9C,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAQvD,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAQ5D,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAQ5D,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAKxC,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAOzC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAQpC,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;CAuB5E"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { SessionWorkingMemory } from '../runtime/WorkingMemory.js';
|
|
2
|
+
import { normalizeModelMessage } from '../utils/messageNormalization.js';
|
|
3
|
+
/** Internal working memory key for turn tracking. */
|
|
4
|
+
const SESSION_TURN_KEY = '__ariaSessionTurn';
|
|
5
|
+
/**
|
|
6
|
+
* Default conversation state implementation extracted from Runtime.
|
|
7
|
+
*
|
|
8
|
+
* Handles:
|
|
9
|
+
* - Session load/create/save/delete via SessionStore
|
|
10
|
+
* - Message appending with normalization
|
|
11
|
+
* - Turn counting
|
|
12
|
+
* - Working memory access
|
|
13
|
+
*/
|
|
14
|
+
export class DefaultConversationState {
|
|
15
|
+
sessionStore;
|
|
16
|
+
defaultAgentId;
|
|
17
|
+
constructor(config) {
|
|
18
|
+
this.sessionStore = config.sessionStore;
|
|
19
|
+
this.defaultAgentId = config.defaultAgentId;
|
|
20
|
+
}
|
|
21
|
+
async load(sessionId, userId) {
|
|
22
|
+
const existing = await this.sessionStore.get(sessionId);
|
|
23
|
+
if (existing) {
|
|
24
|
+
return existing;
|
|
25
|
+
}
|
|
26
|
+
return this.createSession(sessionId, this.defaultAgentId, userId);
|
|
27
|
+
}
|
|
28
|
+
async save(session) {
|
|
29
|
+
this.touchSession(session);
|
|
30
|
+
await this.sessionStore.save(session);
|
|
31
|
+
}
|
|
32
|
+
async delete(sessionId) {
|
|
33
|
+
await this.sessionStore.delete(sessionId);
|
|
34
|
+
}
|
|
35
|
+
workingMemory(session) {
|
|
36
|
+
return new SessionWorkingMemory(session);
|
|
37
|
+
}
|
|
38
|
+
appendUserMessage(session, text) {
|
|
39
|
+
const message = {
|
|
40
|
+
role: 'user',
|
|
41
|
+
content: [{ type: 'text', text }],
|
|
42
|
+
};
|
|
43
|
+
this.appendMessage(session, message);
|
|
44
|
+
}
|
|
45
|
+
appendAssistantMessage(session, text) {
|
|
46
|
+
const message = {
|
|
47
|
+
role: 'assistant',
|
|
48
|
+
content: [{ type: 'text', text }],
|
|
49
|
+
};
|
|
50
|
+
this.appendMessage(session, message);
|
|
51
|
+
}
|
|
52
|
+
appendMessage(session, message) {
|
|
53
|
+
const normalized = normalizeModelMessage(message);
|
|
54
|
+
if (normalized) {
|
|
55
|
+
session.messages.push(normalized);
|
|
56
|
+
this.touchSession(session);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
getSessionTurn(session) {
|
|
60
|
+
const value = session.workingMemory[SESSION_TURN_KEY];
|
|
61
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : 0;
|
|
62
|
+
}
|
|
63
|
+
bumpSessionTurn(session) {
|
|
64
|
+
const next = this.getSessionTurn(session) + 1;
|
|
65
|
+
session.workingMemory[SESSION_TURN_KEY] = next;
|
|
66
|
+
this.touchSession(session);
|
|
67
|
+
return next;
|
|
68
|
+
}
|
|
69
|
+
touchSession(session) {
|
|
70
|
+
const now = new Date();
|
|
71
|
+
session.updatedAt = now;
|
|
72
|
+
if (session.metadata) {
|
|
73
|
+
session.metadata.lastActiveAt = now;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
createSession(id, defaultAgentId, userId) {
|
|
77
|
+
const now = new Date();
|
|
78
|
+
return {
|
|
79
|
+
id,
|
|
80
|
+
userId,
|
|
81
|
+
messages: [],
|
|
82
|
+
createdAt: now,
|
|
83
|
+
updatedAt: now,
|
|
84
|
+
workingMemory: {},
|
|
85
|
+
currentAgent: defaultAgentId,
|
|
86
|
+
activeAgentId: defaultAgentId,
|
|
87
|
+
state: {},
|
|
88
|
+
metadata: {
|
|
89
|
+
createdAt: now,
|
|
90
|
+
lastActiveAt: now,
|
|
91
|
+
totalTokens: 0,
|
|
92
|
+
totalSteps: 0,
|
|
93
|
+
handoffHistory: [],
|
|
94
|
+
},
|
|
95
|
+
agentStates: {},
|
|
96
|
+
handoffHistory: [],
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=DefaultConversationState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultConversationState.js","sourceRoot":"","sources":["../../src/foundation/DefaultConversationState.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { Session, ToolCallRecord } from '../types/index.js';
|
|
2
|
+
import type { ToolExecutor, ExecutableTool } from './ToolExecutor.js';
|
|
3
|
+
import type { ToolEnforcer } from '../guards/ToolEnforcer.js';
|
|
4
|
+
import type { HookRunner } from '../hooks/HookRunner.js';
|
|
5
|
+
import type { MemoryService } from '../memory/MemoryService.js';
|
|
6
|
+
export interface DefaultToolExecutorConfig {
|
|
7
|
+
enforcer: ToolEnforcer;
|
|
8
|
+
hookRunner: HookRunner;
|
|
9
|
+
memoryService?: MemoryService;
|
|
10
|
+
/** Default timeout in milliseconds for tool execution. Defaults to 30000 (30s). */
|
|
11
|
+
defaultToolTimeoutMs?: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Error thrown when a tool execution exceeds the configured timeout.
|
|
15
|
+
*/
|
|
16
|
+
export declare class ToolTimeoutError extends Error {
|
|
17
|
+
readonly toolName: string;
|
|
18
|
+
readonly timeoutMs: number;
|
|
19
|
+
constructor(toolName: string, timeoutMs: number);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Default tool executor extracted from Runtime.wrapToolsWithEnforcement().
|
|
23
|
+
*
|
|
24
|
+
* Handles:
|
|
25
|
+
* - Enforcement checks via ToolEnforcer
|
|
26
|
+
* - Idempotency key generation
|
|
27
|
+
* - Context enrichment (experimental_context)
|
|
28
|
+
* - Error propagation via HookRunner
|
|
29
|
+
*/
|
|
30
|
+
export declare class DefaultToolExecutor implements ToolExecutor {
|
|
31
|
+
private enforcer;
|
|
32
|
+
private hookRunner;
|
|
33
|
+
private memoryService?;
|
|
34
|
+
private defaultToolTimeoutMs?;
|
|
35
|
+
constructor(config: DefaultToolExecutorConfig);
|
|
36
|
+
execute(args: {
|
|
37
|
+
session: Session;
|
|
38
|
+
userId?: string;
|
|
39
|
+
agentId: string;
|
|
40
|
+
toolName: string;
|
|
41
|
+
tool: ExecutableTool;
|
|
42
|
+
input: unknown;
|
|
43
|
+
toolCallId?: string;
|
|
44
|
+
abortSignal?: AbortSignal;
|
|
45
|
+
step?: number;
|
|
46
|
+
turn?: number;
|
|
47
|
+
toolCallHistory?: ToolCallRecord[];
|
|
48
|
+
}): Promise<unknown>;
|
|
49
|
+
buildIdempotencyKey(args: {
|
|
50
|
+
sessionId: string;
|
|
51
|
+
agentId: string;
|
|
52
|
+
step: number;
|
|
53
|
+
toolName: string;
|
|
54
|
+
toolCallId: string;
|
|
55
|
+
}): string;
|
|
56
|
+
private withToolExecutionMetadata;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=DefaultToolExecutor.d.ts.map
|