@ariaflowagents/core 0.6.1 → 0.7.0
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 +58 -5
- package/dist/agents/Agent.d.ts +1 -0
- package/dist/agents/Agent.d.ts.map +1 -1
- package/dist/agents/Agent.js +10 -1
- package/dist/agents/Agent.js.map +1 -1
- package/dist/agents/CompositeAgent.d.ts +8 -12
- package/dist/agents/CompositeAgent.d.ts.map +1 -1
- package/dist/agents/CompositeAgent.js +30 -16
- package/dist/agents/CompositeAgent.js.map +1 -1
- package/dist/agents/FlowAgent.js +2 -2
- package/dist/agents/FlowAgent.js.map +1 -1
- package/dist/agents/LLMAgent.d.ts.map +1 -1
- package/dist/agents/LLMAgent.js +4 -25
- package/dist/agents/LLMAgent.js.map +1 -1
- package/dist/agents/TriageAgent.d.ts.map +1 -1
- package/dist/agents/TriageAgent.js +8 -29
- package/dist/agents/TriageAgent.js.map +1 -1
- package/dist/callbacks/httpCallback.d.ts +1 -0
- package/dist/callbacks/httpCallback.d.ts.map +1 -1
- package/dist/callbacks/httpCallback.js +20 -6
- package/dist/callbacks/httpCallback.js.map +1 -1
- package/dist/callbacks/streamCallback.d.ts +26 -0
- package/dist/callbacks/streamCallback.d.ts.map +1 -0
- package/dist/callbacks/streamCallback.js +281 -0
- package/dist/callbacks/streamCallback.js.map +1 -0
- package/dist/flows/FlowManager.d.ts +19 -4
- package/dist/flows/FlowManager.d.ts.map +1 -1
- package/dist/flows/FlowManager.js +355 -131
- package/dist/flows/FlowManager.js.map +1 -1
- package/dist/flows/extraction.d.ts +17 -0
- package/dist/flows/extraction.d.ts.map +1 -0
- package/dist/flows/extraction.js +56 -0
- package/dist/flows/extraction.js.map +1 -0
- package/dist/flows/index.d.ts +1 -2
- package/dist/flows/index.d.ts.map +1 -1
- package/dist/flows/index.js +1 -1
- package/dist/flows/index.js.map +1 -1
- package/dist/flows/validation.d.ts +7 -0
- package/dist/flows/validation.d.ts.map +1 -0
- package/dist/flows/validation.js +42 -0
- package/dist/flows/validation.js.map +1 -0
- package/dist/hooks/builtin/metrics.d.ts +4 -34
- package/dist/hooks/builtin/metrics.d.ts.map +1 -1
- package/dist/hooks/builtin/metrics.js +3 -65
- package/dist/hooks/builtin/metrics.js.map +1 -1
- package/dist/hooks/helpers.d.ts +8 -47
- package/dist/hooks/helpers.d.ts.map +1 -1
- package/dist/hooks/helpers.js +38 -104
- package/dist/hooks/helpers.js.map +1 -1
- package/dist/hooks/index.d.ts +4 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/processors/ProcessorRunner.d.ts.map +1 -1
- package/dist/processors/ProcessorRunner.js +13 -0
- package/dist/processors/ProcessorRunner.js.map +1 -1
- package/dist/prompts/PromptBuilder.d.ts.map +1 -1
- package/dist/prompts/PromptBuilder.js +10 -3
- package/dist/prompts/PromptBuilder.js.map +1 -1
- package/dist/prompts/types.d.ts +2 -1
- package/dist/prompts/types.d.ts.map +1 -1
- package/dist/prompts/types.js +46 -20
- package/dist/prompts/types.js.map +1 -1
- package/dist/runtime/ContextManager.d.ts +1 -1
- package/dist/runtime/ContextManager.d.ts.map +1 -1
- package/dist/runtime/ContextManager.js +141 -20
- package/dist/runtime/ContextManager.js.map +1 -1
- package/dist/runtime/ExtractionEngine.d.ts +34 -0
- package/dist/runtime/ExtractionEngine.d.ts.map +1 -0
- package/dist/runtime/ExtractionEngine.js +155 -0
- package/dist/runtime/ExtractionEngine.js.map +1 -0
- package/dist/runtime/FlowExecutor.d.ts +51 -0
- package/dist/runtime/FlowExecutor.d.ts.map +1 -0
- package/dist/runtime/FlowExecutor.js +523 -0
- package/dist/runtime/FlowExecutor.js.map +1 -0
- package/dist/runtime/InjectionQueue.d.ts +8 -1
- package/dist/runtime/InjectionQueue.d.ts.map +1 -1
- package/dist/runtime/InjectionQueue.js +33 -0
- package/dist/runtime/InjectionQueue.js.map +1 -1
- package/dist/runtime/Runtime.d.ts +32 -2
- package/dist/runtime/Runtime.d.ts.map +1 -1
- package/dist/runtime/Runtime.js +513 -633
- package/dist/runtime/Runtime.js.map +1 -1
- package/dist/runtime/SessionEventManager.d.ts +17 -0
- package/dist/runtime/SessionEventManager.d.ts.map +1 -0
- package/dist/runtime/SessionEventManager.js +149 -0
- package/dist/runtime/SessionEventManager.js.map +1 -0
- package/dist/runtime/SuggestionManager.d.ts +7 -0
- package/dist/runtime/SuggestionManager.d.ts.map +1 -0
- package/dist/runtime/SuggestionManager.js +50 -0
- package/dist/runtime/SuggestionManager.js.map +1 -0
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +1 -1
- package/dist/runtime/index.js.map +1 -1
- package/dist/services/MetricsService.d.ts +55 -0
- package/dist/services/MetricsService.d.ts.map +1 -0
- package/dist/services/MetricsService.js +86 -0
- package/dist/services/MetricsService.js.map +1 -0
- package/dist/services/TracingService.d.ts +13 -0
- package/dist/services/TracingService.d.ts.map +1 -0
- package/dist/services/TracingService.js +62 -0
- package/dist/services/TracingService.js.map +1 -0
- package/dist/session/stores/MemoryStore.js +1 -1
- package/dist/session/stores/MemoryStore.js.map +1 -1
- package/dist/tools/Tool.d.ts +25 -3
- package/dist/tools/Tool.d.ts.map +1 -1
- package/dist/tools/Tool.js.map +1 -1
- package/dist/tools/errorHandling.d.ts +1 -1
- package/dist/tools/errorHandling.d.ts.map +1 -1
- package/dist/tools/errorHandling.js +27 -20
- package/dist/tools/errorHandling.js.map +1 -1
- package/dist/tools/http.d.ts.map +1 -1
- package/dist/tools/http.js +53 -17
- package/dist/tools/http.js.map +1 -1
- package/dist/types/index.d.ts +179 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/telemetry.d.ts +52 -0
- package/dist/types/telemetry.d.ts.map +1 -0
- package/dist/types/telemetry.js +2 -0
- package/dist/types/telemetry.js.map +1 -0
- package/dist/utils/aiStream.d.ts +7 -0
- package/dist/utils/aiStream.d.ts.map +1 -0
- package/dist/utils/aiStream.js +41 -0
- package/dist/utils/aiStream.js.map +1 -0
- package/dist/utils/chrono.d.ts +3 -46
- package/dist/utils/chrono.d.ts.map +1 -1
- package/dist/utils/chrono.js.map +1 -1
- package/dist/utils/isRecord.d.ts +2 -0
- package/dist/utils/isRecord.d.ts.map +1 -0
- package/dist/utils/isRecord.js +4 -0
- package/dist/utils/isRecord.js.map +1 -0
- package/dist/utils/messageNormalization.d.ts +3 -0
- package/dist/utils/messageNormalization.d.ts.map +1 -0
- package/dist/utils/messageNormalization.js +121 -0
- package/dist/utils/messageNormalization.js.map +1 -0
- package/dist/utils/streamChunk.d.ts +5 -0
- package/dist/utils/streamChunk.d.ts.map +1 -0
- package/dist/utils/streamChunk.js +50 -0
- package/dist/utils/streamChunk.js.map +1 -0
- package/guides/EXAMPLE_VERIFICATION.md +53 -0
- package/guides/FLOWS.md +29 -0
- package/guides/GETTING_STARTED.md +14 -1
- package/guides/README.md +3 -1
- package/guides/RUNTIME.md +75 -0
- package/guides/TOOLS.md +6 -0
- package/package.json +2 -2
- package/dist/flows/AgentFlowManager.d.ts +0 -161
- package/dist/flows/AgentFlowManager.d.ts.map +0 -1
- package/dist/flows/AgentFlowManager.js +0 -448
- package/dist/flows/AgentFlowManager.js.map +0 -1
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { extractStructuredFields, mergeExtractionData, computeMissingFields } from '../flows/extraction.js';
|
|
2
|
+
export class ExtractionEngine {
|
|
3
|
+
options;
|
|
4
|
+
constructor(options) {
|
|
5
|
+
this.options = options;
|
|
6
|
+
}
|
|
7
|
+
getExtractionConfig(agent, session, helpers) {
|
|
8
|
+
if (helpers.isFlowAgent(agent)) {
|
|
9
|
+
const flowState = helpers.getFlowState(session, agent.id);
|
|
10
|
+
const nodeId = flowState?.context.currentNode ?? agent.initialNode;
|
|
11
|
+
const node = helpers.getFlowNode(agent, nodeId);
|
|
12
|
+
const config = node?.extraction ?? agent.extraction;
|
|
13
|
+
if (!config) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
return { config, nodeId };
|
|
17
|
+
}
|
|
18
|
+
if (!agent.extraction) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
return { config: agent.extraction };
|
|
22
|
+
}
|
|
23
|
+
getExtractionMemoryKey(agent, extraction, helpers, nodeId) {
|
|
24
|
+
const configured = extraction.memoryKey?.trim();
|
|
25
|
+
if (configured) {
|
|
26
|
+
return configured;
|
|
27
|
+
}
|
|
28
|
+
// For now, same logic as before, but keeping nodeId for future extensibility
|
|
29
|
+
return `extraction:${agent.id}`;
|
|
30
|
+
}
|
|
31
|
+
toExtractionData(value) {
|
|
32
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value)) {
|
|
33
|
+
return {};
|
|
34
|
+
}
|
|
35
|
+
return value;
|
|
36
|
+
}
|
|
37
|
+
readExtractionSnapshot(session, memoryKey) {
|
|
38
|
+
const raw = session.workingMemory[memoryKey];
|
|
39
|
+
if (typeof raw !== 'object' || raw === null) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
const record = raw;
|
|
43
|
+
const data = this.toExtractionData(record.data);
|
|
44
|
+
const missing = Array.isArray(record.missingFields)
|
|
45
|
+
? record.missingFields.filter((v) => typeof v === 'string')
|
|
46
|
+
: [];
|
|
47
|
+
return {
|
|
48
|
+
memoryKey,
|
|
49
|
+
data,
|
|
50
|
+
missingFields: missing,
|
|
51
|
+
includeInSystemPrompt: record.includeInSystemPrompt !== false,
|
|
52
|
+
updatedAt: typeof record.updatedAt === 'string' ? record.updatedAt : new Date().toISOString(),
|
|
53
|
+
lastInput: typeof record.lastInput === 'string' ? record.lastInput : '',
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
writeExtractionSnapshot(session, snapshot, touchSession) {
|
|
57
|
+
session.workingMemory[snapshot.memoryKey] = {
|
|
58
|
+
data: snapshot.data,
|
|
59
|
+
missingFields: snapshot.missingFields,
|
|
60
|
+
includeInSystemPrompt: snapshot.includeInSystemPrompt,
|
|
61
|
+
updatedAt: snapshot.updatedAt,
|
|
62
|
+
lastInput: snapshot.lastInput,
|
|
63
|
+
};
|
|
64
|
+
touchSession(session);
|
|
65
|
+
}
|
|
66
|
+
mergeExtractionIntoFlowState(session, agent, data, helpers) {
|
|
67
|
+
if (Object.keys(data).length === 0) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const existing = helpers.getFlowState(session, agent.id);
|
|
71
|
+
if (existing) {
|
|
72
|
+
existing.context.collectedData = {
|
|
73
|
+
...existing.context.collectedData,
|
|
74
|
+
...data,
|
|
75
|
+
};
|
|
76
|
+
helpers.setFlowState(session, agent.id, existing);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const seeded = {
|
|
80
|
+
initialized: false,
|
|
81
|
+
flowEnded: false,
|
|
82
|
+
context: {
|
|
83
|
+
currentNode: agent.initialNode,
|
|
84
|
+
collectedData: { ...data },
|
|
85
|
+
nodeHistory: [],
|
|
86
|
+
nodeTurnCounts: {},
|
|
87
|
+
messages: [],
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
helpers.setFlowState(session, agent.id, seeded);
|
|
91
|
+
}
|
|
92
|
+
buildExtractionSystemBlock(snapshot) {
|
|
93
|
+
const dataBlock = Object.keys(snapshot.data).length > 0
|
|
94
|
+
? JSON.stringify(snapshot.data, null, 2)
|
|
95
|
+
: '{}';
|
|
96
|
+
const missingBlock = snapshot.missingFields.length > 0
|
|
97
|
+
? snapshot.missingFields.join(', ')
|
|
98
|
+
: 'none';
|
|
99
|
+
return `\n\n## Extracted State
|
|
100
|
+
${dataBlock}
|
|
101
|
+
|
|
102
|
+
## Missing Required Fields
|
|
103
|
+
${missingBlock}
|
|
104
|
+
|
|
105
|
+
## Extraction Rules
|
|
106
|
+
- Treat extracted state as structured memory.
|
|
107
|
+
- Do not invent missing values.
|
|
108
|
+
- If fields are missing, ask only for missing fields.`;
|
|
109
|
+
}
|
|
110
|
+
async runTurnExtraction(agent, context, input, helpers, abortSignal) {
|
|
111
|
+
const extracted = this.getExtractionConfig(agent, context.session, helpers);
|
|
112
|
+
if (!extracted) {
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
const model = agent.model ?? this.options.defaultModel;
|
|
116
|
+
if (!model) {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
const { config, nodeId } = extracted;
|
|
120
|
+
const memoryKey = this.getExtractionMemoryKey(agent, config, helpers, nodeId);
|
|
121
|
+
const previous = this.readExtractionSnapshot(context.session, memoryKey);
|
|
122
|
+
const baseData = previous?.data ?? {};
|
|
123
|
+
let mergedData = baseData;
|
|
124
|
+
try {
|
|
125
|
+
const output = await extractStructuredFields({
|
|
126
|
+
model,
|
|
127
|
+
schema: config.schema,
|
|
128
|
+
userMessage: input,
|
|
129
|
+
systemPrompt: config.systemPrompt,
|
|
130
|
+
abortSignal,
|
|
131
|
+
telemetry: agent.telemetry ?? this.options.telemetry,
|
|
132
|
+
});
|
|
133
|
+
mergedData = mergeExtractionData(baseData, output);
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
mergedData = baseData;
|
|
137
|
+
}
|
|
138
|
+
const required = config.requiredFields ?? [];
|
|
139
|
+
const missingFields = computeMissingFields(mergedData, required);
|
|
140
|
+
const snapshot = {
|
|
141
|
+
memoryKey,
|
|
142
|
+
data: mergedData,
|
|
143
|
+
missingFields,
|
|
144
|
+
includeInSystemPrompt: config.includeInSystemPrompt !== false,
|
|
145
|
+
updatedAt: new Date().toISOString(),
|
|
146
|
+
lastInput: input,
|
|
147
|
+
};
|
|
148
|
+
this.writeExtractionSnapshot(context.session, snapshot, helpers.touchSession);
|
|
149
|
+
if (helpers.isFlowAgent(agent) && config.mergeIntoFlowState !== false) {
|
|
150
|
+
this.mergeExtractionIntoFlowState(context.session, agent, mergedData, helpers);
|
|
151
|
+
}
|
|
152
|
+
return snapshot;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=ExtractionEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExtractionEngine.js","sourceRoot":"","sources":["../../src/runtime/ExtractionEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type ModelMessage } from 'ai';
|
|
2
|
+
import type { FlowAgentConfig, AgentConfig, RunContext, HarnessStreamPart, FlowManagerState, ToolCallRecord, HarnessConfig } from '../types/index.js';
|
|
3
|
+
import { createHandoffTool } from '../tools/handoff.js';
|
|
4
|
+
export interface FlowExecutorHelpers {
|
|
5
|
+
emit: (context: RunContext, part: HarnessStreamPart) => AsyncGenerator<HarnessStreamPart>;
|
|
6
|
+
runOutputProcessing: (agent: AgentConfig, context: RunContext, text: string) => Promise<{
|
|
7
|
+
text: string;
|
|
8
|
+
tripwire?: {
|
|
9
|
+
processorId: string;
|
|
10
|
+
reason: string;
|
|
11
|
+
message?: string;
|
|
12
|
+
};
|
|
13
|
+
}>;
|
|
14
|
+
appendSessionMessage: (session: any, message: ModelMessage) => void;
|
|
15
|
+
appendSessionMessages: (session: any, messages: ModelMessage[]) => void;
|
|
16
|
+
postProcessPersistedAssistantMessages: (agent: AgentConfig, context: RunContext, startIndex: number) => Promise<Array<{
|
|
17
|
+
processorId: string;
|
|
18
|
+
reason: string;
|
|
19
|
+
message?: string;
|
|
20
|
+
}>>;
|
|
21
|
+
getAgentOutputProcessors: (agent: AgentConfig) => any[];
|
|
22
|
+
getSessionTurn: (session: any) => number;
|
|
23
|
+
buildToolIdempotencyKey: (context: RunContext, toolName: string, toolCallId: string) => string;
|
|
24
|
+
setFlowState: (session: any, agentId: string, state: FlowManagerState) => void;
|
|
25
|
+
getFlowState: (session: any, agentId: string) => FlowManagerState | undefined;
|
|
26
|
+
updateFlowStateSnapshot: (session: any, agentId: string, state: FlowManagerState) => void;
|
|
27
|
+
clearFlowState: (session: any, agentId: string) => void;
|
|
28
|
+
buildFlowWithHandoff: (agent: FlowAgentConfig, handoffTool: any, suppressAutoRespond: boolean) => FlowAgentConfig['flow'];
|
|
29
|
+
getFlowNode: (agent: FlowAgentConfig, nodeId?: string) => FlowAgentConfig['flow']['nodes'][number] | undefined;
|
|
30
|
+
touchSession: (session: any) => void;
|
|
31
|
+
matchesDetourRule: (input: string, patterns?: string[]) => boolean;
|
|
32
|
+
enforcecheck: (call: ToolCallRecord, context: RunContext) => Promise<{
|
|
33
|
+
allowed: boolean;
|
|
34
|
+
reason?: string;
|
|
35
|
+
}>;
|
|
36
|
+
enforcecheckResult: (call: ToolCallRecord, context: RunContext) => Promise<{
|
|
37
|
+
allowed: boolean;
|
|
38
|
+
reason?: string;
|
|
39
|
+
}>;
|
|
40
|
+
onToolCallHook: (context: RunContext, call: ToolCallRecord) => Promise<void>;
|
|
41
|
+
onToolResultHook: (context: RunContext, call: ToolCallRecord) => Promise<void>;
|
|
42
|
+
onToolErrorHook: (context: RunContext, call: ToolCallRecord, error: Error) => Promise<void>;
|
|
43
|
+
}
|
|
44
|
+
export declare class FlowExecutor {
|
|
45
|
+
private config;
|
|
46
|
+
constructor(config: HarnessConfig);
|
|
47
|
+
shouldHandleFlowInput(agent: FlowAgentConfig, input: string, flowState: FlowManagerState | undefined, helpers: FlowExecutorHelpers, abortSignal?: AbortSignal): Promise<boolean>;
|
|
48
|
+
runDetourResponse(agent: FlowAgentConfig, context: RunContext, input: string, flowState: FlowManagerState | undefined, handoffTool: ReturnType<typeof createHandoffTool> | undefined, onHandoff: (target: string, reason?: string) => void, helpers: FlowExecutorHelpers, abortSignal?: AbortSignal): AsyncGenerator<HarnessStreamPart>;
|
|
49
|
+
runFlowAgent(agent: FlowAgentConfig, context: RunContext, input: string, systemPrompt: string, handoffTool: ReturnType<typeof createHandoffTool> | undefined, onHandoff: (target: string, reason?: string) => void, toolCalls: ToolCallRecord[], helpers: FlowExecutorHelpers, abortSignal?: AbortSignal): AsyncGenerator<HarnessStreamPart>;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=FlowExecutor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FlowExecutor.d.ts","sourceRoot":"","sources":["../../src/runtime/FlowExecutor.ts"],"names":[],"mappings":"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"}
|