@ariaflowagents/core 0.1.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 +39 -0
- package/dist/agents/Agent.d.ts +15 -0
- package/dist/agents/Agent.d.ts.map +1 -0
- package/dist/agents/Agent.js +33 -0
- package/dist/agents/Agent.js.map +1 -0
- package/dist/agents/CompositeAgent.d.ts +24 -0
- package/dist/agents/CompositeAgent.d.ts.map +1 -0
- package/dist/agents/CompositeAgent.js +59 -0
- package/dist/agents/CompositeAgent.js.map +1 -0
- package/dist/agents/FlowAgent.d.ts +11 -0
- package/dist/agents/FlowAgent.d.ts.map +1 -0
- package/dist/agents/FlowAgent.js +44 -0
- package/dist/agents/FlowAgent.js.map +1 -0
- package/dist/agents/LLMAgent.d.ts +11 -0
- package/dist/agents/LLMAgent.d.ts.map +1 -0
- package/dist/agents/LLMAgent.js +52 -0
- package/dist/agents/LLMAgent.js.map +1 -0
- package/dist/agents/TriageAgent.d.ts +11 -0
- package/dist/agents/TriageAgent.d.ts.map +1 -0
- package/dist/agents/TriageAgent.js +89 -0
- package/dist/agents/TriageAgent.js.map +1 -0
- package/dist/agents/index.d.ts +7 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +6 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/flows/AgentFlowManager.d.ts +154 -0
- package/dist/flows/AgentFlowManager.d.ts.map +1 -0
- package/dist/flows/AgentFlowManager.js +272 -0
- package/dist/flows/AgentFlowManager.js.map +1 -0
- package/dist/flows/FlowGraph.d.ts +23 -0
- package/dist/flows/FlowGraph.d.ts.map +1 -0
- package/dist/flows/FlowGraph.js +57 -0
- package/dist/flows/FlowGraph.js.map +1 -0
- package/dist/flows/FlowManager.d.ts +36 -0
- package/dist/flows/FlowManager.d.ts.map +1 -0
- package/dist/flows/FlowManager.js +256 -0
- package/dist/flows/FlowManager.js.map +1 -0
- package/dist/flows/FlowNode.d.ts +8 -0
- package/dist/flows/FlowNode.d.ts.map +1 -0
- package/dist/flows/FlowNode.js +12 -0
- package/dist/flows/FlowNode.js.map +1 -0
- package/dist/flows/index.d.ts +8 -0
- package/dist/flows/index.d.ts.map +1 -0
- package/dist/flows/index.js +6 -0
- package/dist/flows/index.js.map +1 -0
- package/dist/flows/transitions.d.ts +9 -0
- package/dist/flows/transitions.d.ts.map +1 -0
- package/dist/flows/transitions.js +15 -0
- package/dist/flows/transitions.js.map +1 -0
- package/dist/guards/StopConditions.d.ts +14 -0
- package/dist/guards/StopConditions.d.ts.map +1 -0
- package/dist/guards/StopConditions.js +161 -0
- package/dist/guards/StopConditions.js.map +1 -0
- package/dist/guards/ToolEnforcer.d.ts +11 -0
- package/dist/guards/ToolEnforcer.d.ts.map +1 -0
- package/dist/guards/ToolEnforcer.js +40 -0
- package/dist/guards/ToolEnforcer.js.map +1 -0
- package/dist/guards/index.d.ts +4 -0
- package/dist/guards/index.d.ts.map +1 -0
- package/dist/guards/index.js +4 -0
- package/dist/guards/index.js.map +1 -0
- package/dist/guards/rules.d.ts +8 -0
- package/dist/guards/rules.d.ts.map +1 -0
- package/dist/guards/rules.js +128 -0
- package/dist/guards/rules.js.map +1 -0
- package/dist/hooks/HookRunner.d.ts +30 -0
- package/dist/hooks/HookRunner.d.ts.map +1 -0
- package/dist/hooks/HookRunner.js +85 -0
- package/dist/hooks/HookRunner.js.map +1 -0
- package/dist/hooks/builtin/logging.d.ts +6 -0
- package/dist/hooks/builtin/logging.d.ts.map +1 -0
- package/dist/hooks/builtin/logging.js +99 -0
- package/dist/hooks/builtin/logging.js.map +1 -0
- package/dist/hooks/builtin/metrics.d.ts +38 -0
- package/dist/hooks/builtin/metrics.d.ts.map +1 -0
- package/dist/hooks/builtin/metrics.js +111 -0
- package/dist/hooks/builtin/metrics.js.map +1 -0
- package/dist/hooks/index.d.ts +5 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +4 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/InjectionQueue.d.ts +46 -0
- package/dist/runtime/InjectionQueue.d.ts.map +1 -0
- package/dist/runtime/InjectionQueue.js +128 -0
- package/dist/runtime/InjectionQueue.js.map +1 -0
- package/dist/runtime/Runtime.d.ts +24 -0
- package/dist/runtime/Runtime.d.ts.map +1 -0
- package/dist/runtime/Runtime.js +277 -0
- package/dist/runtime/Runtime.js.map +1 -0
- package/dist/runtime/WorkingMemory.d.ts +12 -0
- package/dist/runtime/WorkingMemory.d.ts.map +1 -0
- package/dist/runtime/WorkingMemory.js +29 -0
- package/dist/runtime/WorkingMemory.js.map +1 -0
- package/dist/runtime/index.d.ts +4 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +4 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/session/SessionManager.d.ts +20 -0
- package/dist/session/SessionManager.d.ts.map +1 -0
- package/dist/session/SessionManager.js +134 -0
- package/dist/session/SessionManager.js.map +1 -0
- package/dist/session/SessionStore.d.ts +9 -0
- package/dist/session/SessionStore.d.ts.map +1 -0
- package/dist/session/SessionStore.js +2 -0
- package/dist/session/SessionStore.js.map +1 -0
- package/dist/session/index.d.ts +4 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +3 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/stores/MemoryStore.d.ts +11 -0
- package/dist/session/stores/MemoryStore.d.ts.map +1 -0
- package/dist/session/stores/MemoryStore.js +34 -0
- package/dist/session/stores/MemoryStore.js.map +1 -0
- package/dist/tools/Tool.d.ts +10 -0
- package/dist/tools/Tool.d.ts.map +1 -0
- package/dist/tools/Tool.js +2 -0
- package/dist/tools/Tool.js.map +1 -0
- package/dist/tools/handoff.d.ts +25 -0
- package/dist/tools/handoff.d.ts.map +1 -0
- package/dist/tools/handoff.js +51 -0
- package/dist/tools/handoff.js.map +1 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types/index.d.ts +325 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { EnforcementRule } from '../types/index.js';
|
|
2
|
+
export declare const readBeforeEdit: EnforcementRule;
|
|
3
|
+
export declare function createRateLimitRule(toolName: string, maxCallsPerWindow: number, windowMs?: number): EnforcementRule;
|
|
4
|
+
export declare function createDependencyRule(dependencies: Record<string, string[]>): EnforcementRule;
|
|
5
|
+
export declare const contentValidation: EnforcementRule;
|
|
6
|
+
export declare function createSequentialLimitRule(maxSequential?: number): EnforcementRule;
|
|
7
|
+
export declare const defaultEnforcementRules: EnforcementRule[];
|
|
8
|
+
//# sourceMappingURL=rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/guards/rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,eAAO,MAAM,cAAc,EAAE,eA+B5B,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,EACzB,QAAQ,GAAE,MAAc,GACvB,eAAe,CA4BjB;AAED,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACrC,eAAe,CA4BjB;AAED,eAAO,MAAM,iBAAiB,EAAE,eA2B/B,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,aAAa,GAAE,MAAU,GAAG,eAAe,CAyBpF;AAED,eAAO,MAAM,uBAAuB,EAAE,eAAe,EAIpD,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
export const readBeforeEdit = {
|
|
2
|
+
name: 'readBeforeEdit',
|
|
3
|
+
description: 'Must read a file before editing it',
|
|
4
|
+
appliesTo: ['editFile', 'writeFile', 'replaceInFile', 'modifyFile'],
|
|
5
|
+
check: (call, context) => {
|
|
6
|
+
const targetPath = call.args.path
|
|
7
|
+
|| call.args.filePath;
|
|
8
|
+
if (!targetPath)
|
|
9
|
+
return { allowed: true };
|
|
10
|
+
const wasRead = context.previousCalls.some(previous => previous.toolName === 'readFile' &&
|
|
11
|
+
(previous.args.path === targetPath ||
|
|
12
|
+
previous.args.filePath === targetPath));
|
|
13
|
+
if (!wasRead) {
|
|
14
|
+
return {
|
|
15
|
+
allowed: false,
|
|
16
|
+
reason: `Cannot edit "${targetPath}" without reading it first`,
|
|
17
|
+
alternative: {
|
|
18
|
+
toolName: 'readFile',
|
|
19
|
+
args: { path: targetPath },
|
|
20
|
+
message: 'Read the file first to understand its contents',
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
return { allowed: true };
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
export function createRateLimitRule(toolName, maxCallsPerWindow, windowMs = 60000) {
|
|
28
|
+
const callTimestamps = [];
|
|
29
|
+
return {
|
|
30
|
+
name: `rateLimit-${toolName}`,
|
|
31
|
+
description: `Limit ${toolName} to ${maxCallsPerWindow} calls per ${windowMs}ms`,
|
|
32
|
+
appliesTo: [toolName],
|
|
33
|
+
check: () => {
|
|
34
|
+
const now = Date.now();
|
|
35
|
+
const windowStart = now - windowMs;
|
|
36
|
+
while (callTimestamps.length > 0 && callTimestamps[0] < windowStart) {
|
|
37
|
+
callTimestamps.shift();
|
|
38
|
+
}
|
|
39
|
+
if (callTimestamps.length >= maxCallsPerWindow) {
|
|
40
|
+
const waitTime = Math.ceil((callTimestamps[0] + windowMs - now) / 1000);
|
|
41
|
+
return {
|
|
42
|
+
allowed: false,
|
|
43
|
+
reason: `Rate limit exceeded for ${toolName}. Wait ${waitTime}s.`,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
callTimestamps.push(now);
|
|
47
|
+
return { allowed: true };
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export function createDependencyRule(dependencies) {
|
|
52
|
+
return {
|
|
53
|
+
name: 'dependencyChain',
|
|
54
|
+
description: 'Enforce tool execution order',
|
|
55
|
+
appliesTo: Object.keys(dependencies),
|
|
56
|
+
check: (call, context) => {
|
|
57
|
+
const requiredTools = dependencies[call.toolName];
|
|
58
|
+
if (!requiredTools)
|
|
59
|
+
return { allowed: true };
|
|
60
|
+
const calledTools = new Set(context.previousCalls.map(previous => previous.toolName));
|
|
61
|
+
const missing = requiredTools.filter(tool => !calledTools.has(tool));
|
|
62
|
+
if (missing.length > 0) {
|
|
63
|
+
return {
|
|
64
|
+
allowed: false,
|
|
65
|
+
reason: `Must call ${missing.join(', ')} before ${call.toolName}`,
|
|
66
|
+
alternative: {
|
|
67
|
+
toolName: missing[0],
|
|
68
|
+
args: {},
|
|
69
|
+
message: `Run ${missing[0]} first`,
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
return { allowed: true };
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
export const contentValidation = {
|
|
78
|
+
name: 'contentValidation',
|
|
79
|
+
description: 'Validate content before writing to files',
|
|
80
|
+
appliesTo: ['writeFile', 'editFile', 'createFile'],
|
|
81
|
+
check: (call) => {
|
|
82
|
+
const content = call.args.content || '';
|
|
83
|
+
const secretPatterns = [
|
|
84
|
+
/api[_-]?key\s*[:=]\s*['"][^'"]{20,}['"]/i,
|
|
85
|
+
/password\s*[:=]\s*['"][^'"]+['"]/i,
|
|
86
|
+
/secret\s*[:=]\s*['"][^'"]{10,}['"]/i,
|
|
87
|
+
/bearer\s+[a-zA-Z0-9-_.]+/i,
|
|
88
|
+
];
|
|
89
|
+
for (const pattern of secretPatterns) {
|
|
90
|
+
if (pattern.test(content)) {
|
|
91
|
+
return {
|
|
92
|
+
allowed: false,
|
|
93
|
+
reason: 'Content appears to contain hardcoded secrets',
|
|
94
|
+
reminder: 'Use environment variables for sensitive values',
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return { allowed: true };
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
export function createSequentialLimitRule(maxSequential = 3) {
|
|
102
|
+
return {
|
|
103
|
+
name: `sequentialLimit(${maxSequential})`,
|
|
104
|
+
description: `Prevent more than ${maxSequential} sequential calls to the same tool`,
|
|
105
|
+
appliesTo: '*',
|
|
106
|
+
check: (call, context) => {
|
|
107
|
+
if (context.previousCalls.length < maxSequential) {
|
|
108
|
+
return { allowed: true };
|
|
109
|
+
}
|
|
110
|
+
const recent = context.previousCalls.slice(-maxSequential);
|
|
111
|
+
const allSameTool = recent.every(previous => previous.toolName === call.toolName);
|
|
112
|
+
if (allSameTool) {
|
|
113
|
+
return {
|
|
114
|
+
allowed: false,
|
|
115
|
+
reason: `Cannot call ${call.toolName} more than ${maxSequential} times in a row`,
|
|
116
|
+
reminder: 'Try a different approach or tool',
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
return { allowed: true };
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
export const defaultEnforcementRules = [
|
|
124
|
+
readBeforeEdit,
|
|
125
|
+
contentValidation,
|
|
126
|
+
createSequentialLimitRule(3),
|
|
127
|
+
];
|
|
128
|
+
//# sourceMappingURL=rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/guards/rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { HarnessHooks, RunContext, StepResult, ToolCallRecord } from '../types/index.js';
|
|
2
|
+
import type { ModelMessage } from 'ai';
|
|
3
|
+
type HookErrorHandler = (hookName: string, error: Error) => void;
|
|
4
|
+
export declare class HookRunner {
|
|
5
|
+
private hooks;
|
|
6
|
+
private errorHandler;
|
|
7
|
+
constructor(hooks?: HarnessHooks, errorHandler?: HookErrorHandler);
|
|
8
|
+
run<K extends keyof HarnessHooks>(hookName: K, ...args: NonNullable<HarnessHooks[K]> extends (...args: infer P) => any ? P : never): Promise<void>;
|
|
9
|
+
onStart(context: RunContext): Promise<void>;
|
|
10
|
+
onEnd(context: RunContext, result: {
|
|
11
|
+
success: boolean;
|
|
12
|
+
error?: Error;
|
|
13
|
+
}): Promise<void>;
|
|
14
|
+
onStepStart(context: RunContext, step: number): Promise<void>;
|
|
15
|
+
onStepEnd(context: RunContext, step: number, result: StepResult): Promise<void>;
|
|
16
|
+
onToolCall(context: RunContext, call: ToolCallRecord): Promise<void>;
|
|
17
|
+
onToolResult(context: RunContext, call: ToolCallRecord): Promise<void>;
|
|
18
|
+
onToolError(context: RunContext, call: ToolCallRecord, error: Error): Promise<void>;
|
|
19
|
+
onAgentStart(context: RunContext, agentId: string): Promise<void>;
|
|
20
|
+
onAgentEnd(context: RunContext, agentId: string): Promise<void>;
|
|
21
|
+
onHandoff(context: RunContext, from: string, to: string, reason: string): Promise<void>;
|
|
22
|
+
onError(context: RunContext, error: Error): Promise<void>;
|
|
23
|
+
onMessage(context: RunContext, message: ModelMessage): Promise<void>;
|
|
24
|
+
merge(additionalHooks: HarnessHooks): void;
|
|
25
|
+
setHooks(hooks: HarnessHooks): void;
|
|
26
|
+
getHooks(): HarnessHooks;
|
|
27
|
+
}
|
|
28
|
+
export declare function createHookRunner(hooks?: HarnessHooks, errorHandler?: HookErrorHandler): HookRunner;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=HookRunner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HookRunner.d.ts","sourceRoot":"","sources":["../../src/hooks/HookRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAEvC,KAAK,gBAAgB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;AAOjE,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,YAAY,CAAmB;gBAE3B,KAAK,GAAE,YAAiB,EAAE,YAAY,CAAC,EAAE,gBAAgB;IAK/D,GAAG,CAAC,CAAC,SAAS,MAAM,YAAY,EACpC,QAAQ,EAAE,CAAC,EACX,GAAG,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,GAClF,OAAO,CAAC,IAAI,CAAC;IAWV,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAItF,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/E,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpE,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAItE,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAInF,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjE,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/D,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvF,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1E,KAAK,CAAC,eAAe,EAAE,YAAY,GAAG,IAAI;IAiB1C,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAInC,QAAQ,IAAI,YAAY;CAGzB;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,CAAC,EAAE,YAAY,EACpB,YAAY,CAAC,EAAE,gBAAgB,GAC9B,UAAU,CAEZ"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
const defaultErrorHandler = (hookName, error) => {
|
|
2
|
+
console.error(`[HookRunner] Hook "${hookName}" failed:`, error.message);
|
|
3
|
+
};
|
|
4
|
+
export class HookRunner {
|
|
5
|
+
hooks;
|
|
6
|
+
errorHandler;
|
|
7
|
+
constructor(hooks = {}, errorHandler) {
|
|
8
|
+
this.hooks = hooks;
|
|
9
|
+
this.errorHandler = errorHandler ?? defaultErrorHandler;
|
|
10
|
+
}
|
|
11
|
+
async run(hookName, ...args) {
|
|
12
|
+
const hook = this.hooks[hookName];
|
|
13
|
+
if (!hook)
|
|
14
|
+
return;
|
|
15
|
+
try {
|
|
16
|
+
await hook(...args);
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
this.errorHandler(String(hookName), error);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
async onStart(context) {
|
|
23
|
+
await this.run('onStart', context);
|
|
24
|
+
}
|
|
25
|
+
async onEnd(context, result) {
|
|
26
|
+
await this.run('onEnd', context, result);
|
|
27
|
+
}
|
|
28
|
+
async onStepStart(context, step) {
|
|
29
|
+
await this.run('onStepStart', context, step);
|
|
30
|
+
}
|
|
31
|
+
async onStepEnd(context, step, result) {
|
|
32
|
+
await this.run('onStepEnd', context, step, result);
|
|
33
|
+
}
|
|
34
|
+
async onToolCall(context, call) {
|
|
35
|
+
await this.run('onToolCall', context, call);
|
|
36
|
+
}
|
|
37
|
+
async onToolResult(context, call) {
|
|
38
|
+
await this.run('onToolResult', context, call);
|
|
39
|
+
}
|
|
40
|
+
async onToolError(context, call, error) {
|
|
41
|
+
await this.run('onToolError', context, call, error);
|
|
42
|
+
}
|
|
43
|
+
async onAgentStart(context, agentId) {
|
|
44
|
+
await this.run('onAgentStart', context, agentId);
|
|
45
|
+
}
|
|
46
|
+
async onAgentEnd(context, agentId) {
|
|
47
|
+
await this.run('onAgentEnd', context, agentId);
|
|
48
|
+
}
|
|
49
|
+
async onHandoff(context, from, to, reason) {
|
|
50
|
+
await this.run('onHandoff', context, from, to, reason);
|
|
51
|
+
}
|
|
52
|
+
async onError(context, error) {
|
|
53
|
+
await this.run('onError', context, error);
|
|
54
|
+
}
|
|
55
|
+
async onMessage(context, message) {
|
|
56
|
+
await this.run('onMessage', context, message);
|
|
57
|
+
}
|
|
58
|
+
merge(additionalHooks) {
|
|
59
|
+
const hooks = this.hooks;
|
|
60
|
+
for (const [key, hook] of Object.entries(additionalHooks)) {
|
|
61
|
+
const existing = hooks[key];
|
|
62
|
+
if (!hook)
|
|
63
|
+
continue;
|
|
64
|
+
if (existing) {
|
|
65
|
+
hooks[key] = (async (...args) => {
|
|
66
|
+
await existing(...args);
|
|
67
|
+
await hook(...args);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
hooks[key] = hook;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
setHooks(hooks) {
|
|
76
|
+
this.hooks = hooks;
|
|
77
|
+
}
|
|
78
|
+
getHooks() {
|
|
79
|
+
return { ...this.hooks };
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
export function createHookRunner(hooks, errorHandler) {
|
|
83
|
+
return new HookRunner(hooks, errorHandler);
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=HookRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HookRunner.js","sourceRoot":"","sources":["../../src/hooks/HookRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { HarnessHooks } from '../../types/index.js';
|
|
2
|
+
type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
3
|
+
export declare const loggingHooks: HarnessHooks;
|
|
4
|
+
export declare function createLoggingHooks(logFn: (level: LogLevel, message: string, data?: Record<string, unknown>) => void): HarnessHooks;
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=logging.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../../src/hooks/builtin/logging.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAA0C,MAAM,sBAAsB,CAAC;AAEjG,KAAK,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAwBpD,eAAO,MAAM,YAAY,EAAE,YAgF1B,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAChF,YAAY,CAqBd"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
function log(level, message, context, data) {
|
|
2
|
+
const entry = {
|
|
3
|
+
timestamp: new Date().toISOString(),
|
|
4
|
+
level,
|
|
5
|
+
component: 'ariaflow',
|
|
6
|
+
message,
|
|
7
|
+
traceId: context?.session.id,
|
|
8
|
+
data,
|
|
9
|
+
};
|
|
10
|
+
console.log(JSON.stringify(entry));
|
|
11
|
+
}
|
|
12
|
+
export const loggingHooks = {
|
|
13
|
+
onStart: async (context) => {
|
|
14
|
+
log('info', 'Agent run started', context, {
|
|
15
|
+
sessionId: context.session.id,
|
|
16
|
+
agentId: context.agentId,
|
|
17
|
+
userId: context.session.userId,
|
|
18
|
+
});
|
|
19
|
+
},
|
|
20
|
+
onEnd: async (context, result) => {
|
|
21
|
+
const duration = Date.now() - context.startTime;
|
|
22
|
+
log('info', 'Agent run completed', context, {
|
|
23
|
+
success: result.success,
|
|
24
|
+
error: result.error?.message,
|
|
25
|
+
duration,
|
|
26
|
+
steps: context.stepCount,
|
|
27
|
+
tokens: context.totalTokens,
|
|
28
|
+
handoffs: context.handoffStack.length,
|
|
29
|
+
});
|
|
30
|
+
},
|
|
31
|
+
onStepStart: async (context, step) => {
|
|
32
|
+
log('debug', `Step ${step} started`, context, { step, agentId: context.agentId });
|
|
33
|
+
},
|
|
34
|
+
onStepEnd: async (context, step, result) => {
|
|
35
|
+
log('debug', `Step ${step} completed`, context, {
|
|
36
|
+
step,
|
|
37
|
+
finishReason: result.finishReason,
|
|
38
|
+
toolCalls: result.toolCalls.length,
|
|
39
|
+
tokens: result.tokensUsed,
|
|
40
|
+
});
|
|
41
|
+
},
|
|
42
|
+
onToolCall: async (context, call) => {
|
|
43
|
+
log('info', `Tool called: ${call.toolName}`, context, {
|
|
44
|
+
toolCallId: call.toolCallId,
|
|
45
|
+
toolName: call.toolName,
|
|
46
|
+
args: call.args,
|
|
47
|
+
});
|
|
48
|
+
},
|
|
49
|
+
onToolResult: async (context, call) => {
|
|
50
|
+
log('debug', `Tool completed: ${call.toolName}`, context, {
|
|
51
|
+
toolCallId: call.toolCallId,
|
|
52
|
+
toolName: call.toolName,
|
|
53
|
+
success: call.success,
|
|
54
|
+
durationMs: call.durationMs,
|
|
55
|
+
resultPreview: JSON.stringify(call.result)?.slice(0, 200),
|
|
56
|
+
});
|
|
57
|
+
},
|
|
58
|
+
onToolError: async (context, call, error) => {
|
|
59
|
+
log('error', `Tool failed: ${call.toolName}`, context, {
|
|
60
|
+
toolCallId: call.toolCallId,
|
|
61
|
+
toolName: call.toolName,
|
|
62
|
+
error: error.message,
|
|
63
|
+
stack: error.stack,
|
|
64
|
+
});
|
|
65
|
+
},
|
|
66
|
+
onHandoff: async (context, from, to, reason) => {
|
|
67
|
+
log('info', `Agent handoff: ${from} -> ${to}`, context, { from, to, reason });
|
|
68
|
+
},
|
|
69
|
+
onError: async (context, error) => {
|
|
70
|
+
log('error', 'Agent error', context, {
|
|
71
|
+
error: error.message,
|
|
72
|
+
stack: error.stack,
|
|
73
|
+
step: context.stepCount,
|
|
74
|
+
});
|
|
75
|
+
},
|
|
76
|
+
onAgentStart: async (context, agentId) => {
|
|
77
|
+
log('info', `Agent started: ${agentId}`, context, { agentId });
|
|
78
|
+
},
|
|
79
|
+
onAgentEnd: async (context, agentId) => {
|
|
80
|
+
log('info', `Agent ended: ${agentId}`, context, { agentId });
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
export function createLoggingHooks(logFn) {
|
|
84
|
+
const customLog = (level, message, context, data) => {
|
|
85
|
+
logFn(level, message, {
|
|
86
|
+
...data,
|
|
87
|
+
traceId: context?.session.id,
|
|
88
|
+
timestamp: new Date().toISOString(),
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
return {
|
|
92
|
+
onStart: async (ctx) => customLog('info', 'Agent started', ctx, { agentId: ctx.agentId }),
|
|
93
|
+
onEnd: async (ctx, r) => customLog('info', 'Agent ended', ctx, { success: r.success }),
|
|
94
|
+
onToolCall: async (ctx, c) => customLog('info', `Tool: ${c.toolName}`, ctx, { args: c.args }),
|
|
95
|
+
onHandoff: async (ctx, f, t, r) => customLog('info', `Handoff: ${f}->${t}`, ctx, { reason: r }),
|
|
96
|
+
onError: async (ctx, e) => customLog('error', 'Error', ctx, { error: e.message }),
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=logging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../src/hooks/builtin/logging.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { HarnessHooks } from '../../types/index.js';
|
|
2
|
+
export interface Metrics {
|
|
3
|
+
increment(name: string, value?: number, tags?: Record<string, string>): void;
|
|
4
|
+
gauge(name: string, value: number, tags?: Record<string, string>): void;
|
|
5
|
+
histogram(name: string, value: number, tags?: Record<string, string>): void;
|
|
6
|
+
timing(name: string, value: number, tags?: Record<string, string>): void;
|
|
7
|
+
}
|
|
8
|
+
export declare class InMemoryMetrics implements Metrics {
|
|
9
|
+
private counters;
|
|
10
|
+
private gauges;
|
|
11
|
+
private histograms;
|
|
12
|
+
private timings;
|
|
13
|
+
increment(name: string, value?: number, tags?: Record<string, string>): void;
|
|
14
|
+
gauge(name: string, value: number, tags?: Record<string, string>): void;
|
|
15
|
+
histogram(name: string, value: number, tags?: Record<string, string>): void;
|
|
16
|
+
timing(name: string, value: number, tags?: Record<string, string>): void;
|
|
17
|
+
private makeKey;
|
|
18
|
+
getAll(): {
|
|
19
|
+
counters: Record<string, number>;
|
|
20
|
+
gauges: Record<string, number>;
|
|
21
|
+
histograms: Record<string, {
|
|
22
|
+
count: number;
|
|
23
|
+
mean: number;
|
|
24
|
+
min: number;
|
|
25
|
+
max: number;
|
|
26
|
+
}>;
|
|
27
|
+
timings: Record<string, {
|
|
28
|
+
count: number;
|
|
29
|
+
mean: number;
|
|
30
|
+
p50: number;
|
|
31
|
+
p95: number;
|
|
32
|
+
p99: number;
|
|
33
|
+
}>;
|
|
34
|
+
};
|
|
35
|
+
reset(): void;
|
|
36
|
+
}
|
|
37
|
+
export declare function createMetricsHooks(metrics: Metrics): HarnessHooks;
|
|
38
|
+
//# sourceMappingURL=metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/hooks/builtin/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,WAAW,OAAO;IACtB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC7E,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACxE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC5E,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CAC1E;AAED,qBAAa,eAAgB,YAAW,OAAO;IAC7C,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,OAAO,CAA+B;IAE9C,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAK/E,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAKvE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAO3E,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAOxE,OAAO,CAAC,OAAO;IAMf,MAAM,IAAI;QACR,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACtF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACjG;IA+BD,KAAK,IAAI,IAAI;CAMd;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAmDjE"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
export class InMemoryMetrics {
|
|
2
|
+
counters = new Map();
|
|
3
|
+
gauges = new Map();
|
|
4
|
+
histograms = new Map();
|
|
5
|
+
timings = new Map();
|
|
6
|
+
increment(name, value = 1, tags) {
|
|
7
|
+
const key = this.makeKey(name, tags);
|
|
8
|
+
this.counters.set(key, (this.counters.get(key) ?? 0) + value);
|
|
9
|
+
}
|
|
10
|
+
gauge(name, value, tags) {
|
|
11
|
+
const key = this.makeKey(name, tags);
|
|
12
|
+
this.gauges.set(key, (this.gauges.get(key) ?? 0) + value);
|
|
13
|
+
}
|
|
14
|
+
histogram(name, value, tags) {
|
|
15
|
+
const key = this.makeKey(name, tags);
|
|
16
|
+
const values = this.histograms.get(key) ?? [];
|
|
17
|
+
values.push(value);
|
|
18
|
+
this.histograms.set(key, values);
|
|
19
|
+
}
|
|
20
|
+
timing(name, value, tags) {
|
|
21
|
+
const key = this.makeKey(name, tags);
|
|
22
|
+
const values = this.timings.get(key) ?? [];
|
|
23
|
+
values.push(value);
|
|
24
|
+
this.timings.set(key, values);
|
|
25
|
+
}
|
|
26
|
+
makeKey(name, tags) {
|
|
27
|
+
if (!tags || Object.keys(tags).length === 0)
|
|
28
|
+
return name;
|
|
29
|
+
const tagStr = Object.entries(tags).map(([k, v]) => `${k}:${v}`).join(',');
|
|
30
|
+
return `${name}{${tagStr}}`;
|
|
31
|
+
}
|
|
32
|
+
getAll() {
|
|
33
|
+
const histogramStats = {};
|
|
34
|
+
for (const [key, values] of this.histograms) {
|
|
35
|
+
histogramStats[key] = {
|
|
36
|
+
count: values.length,
|
|
37
|
+
mean: values.reduce((a, b) => a + b, 0) / values.length,
|
|
38
|
+
min: Math.min(...values),
|
|
39
|
+
max: Math.max(...values),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
const timingStats = {};
|
|
43
|
+
for (const [key, values] of this.timings) {
|
|
44
|
+
const sorted = [...values].sort((a, b) => a - b);
|
|
45
|
+
timingStats[key] = {
|
|
46
|
+
count: values.length,
|
|
47
|
+
mean: values.reduce((a, b) => a + b, 0) / values.length,
|
|
48
|
+
p50: sorted[Math.floor(sorted.length * 0.5)] ?? 0,
|
|
49
|
+
p95: sorted[Math.floor(sorted.length * 0.95)] ?? 0,
|
|
50
|
+
p99: sorted[Math.floor(sorted.length * 0.99)] ?? 0,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
counters: Object.fromEntries(this.counters),
|
|
55
|
+
gauges: Object.fromEntries(this.gauges),
|
|
56
|
+
histograms: histogramStats,
|
|
57
|
+
timings: timingStats,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
reset() {
|
|
61
|
+
this.counters.clear();
|
|
62
|
+
this.gauges.clear();
|
|
63
|
+
this.histograms.clear();
|
|
64
|
+
this.timings.clear();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
export function createMetricsHooks(metrics) {
|
|
68
|
+
const toolStartTimes = new Map();
|
|
69
|
+
return {
|
|
70
|
+
onStart: async (context) => {
|
|
71
|
+
metrics.increment('agent.starts', 1, { agent: context.agentId });
|
|
72
|
+
metrics.gauge('agent.active', 1);
|
|
73
|
+
},
|
|
74
|
+
onEnd: async (context, result) => {
|
|
75
|
+
const duration = Date.now() - context.startTime;
|
|
76
|
+
metrics.increment(result.success ? 'agent.success' : 'agent.failure');
|
|
77
|
+
metrics.gauge('agent.active', -1);
|
|
78
|
+
metrics.timing('agent.duration', duration);
|
|
79
|
+
metrics.histogram('agent.steps', context.stepCount);
|
|
80
|
+
metrics.histogram('agent.tokens', context.totalTokens);
|
|
81
|
+
metrics.histogram('agent.handoffs', context.handoffStack.length);
|
|
82
|
+
},
|
|
83
|
+
onToolCall: async (_context, call) => {
|
|
84
|
+
metrics.increment('tool.calls', 1, { tool: call.toolName });
|
|
85
|
+
toolStartTimes.set(call.toolCallId, Date.now());
|
|
86
|
+
},
|
|
87
|
+
onToolResult: async (_context, call) => {
|
|
88
|
+
const startTime = toolStartTimes.get(call.toolCallId);
|
|
89
|
+
if (startTime) {
|
|
90
|
+
metrics.timing('tool.duration', Date.now() - startTime, { tool: call.toolName });
|
|
91
|
+
toolStartTimes.delete(call.toolCallId);
|
|
92
|
+
}
|
|
93
|
+
metrics.increment('tool.success', 1, { tool: call.toolName });
|
|
94
|
+
},
|
|
95
|
+
onToolError: async (_context, call) => {
|
|
96
|
+
const startTime = toolStartTimes.get(call.toolCallId);
|
|
97
|
+
if (startTime) {
|
|
98
|
+
metrics.timing('tool.duration', Date.now() - startTime, { tool: call.toolName });
|
|
99
|
+
toolStartTimes.delete(call.toolCallId);
|
|
100
|
+
}
|
|
101
|
+
metrics.increment('tool.errors', 1, { tool: call.toolName });
|
|
102
|
+
},
|
|
103
|
+
onHandoff: async (_context, from, to) => {
|
|
104
|
+
metrics.increment('agent.handoffs', 1, { from, to });
|
|
105
|
+
},
|
|
106
|
+
onError: async () => {
|
|
107
|
+
metrics.increment('agent.errors');
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/hooks/builtin/metrics.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,eAAe;IAClB,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IACrC,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACnC,UAAU,GAAG,IAAI,GAAG,EAAoB,CAAC;IACzC,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE9C,SAAS,CAAC,IAAY,EAAE,QAAgB,CAAC,EAAE,IAA6B;QACtE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,IAAY,EAAE,KAAa,EAAE,IAA6B;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED,SAAS,CAAC,IAAY,EAAE,KAAa,EAAE,IAA6B;QAClE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,KAAa,EAAE,IAA6B;QAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IAEO,OAAO,CAAC,IAAY,EAAE,IAA6B;QACzD,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACzD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3E,OAAO,GAAG,IAAI,IAAI,MAAM,GAAG,CAAC;IAC9B,CAAC;IAED,MAAM;QAMJ,MAAM,cAAc,GAA8E,EAAE,CAAC;QACrG,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC5C,cAAc,CAAC,GAAG,CAAC,GAAG;gBACpB,KAAK,EAAE,MAAM,CAAC,MAAM;gBACpB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM;gBACvD,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;gBACxB,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;aACzB,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAA2F,EAAE,CAAC;QAC/G,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACjD,WAAW,CAAC,GAAG,CAAC,GAAG;gBACjB,KAAK,EAAE,MAAM,CAAC,MAAM;gBACpB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM;gBACvD,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC;gBACjD,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC;gBAClD,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC;aACnD,CAAC;QACJ,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC3C,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;YACvC,UAAU,EAAE,cAAc;YAC1B,OAAO,EAAE,WAAW;SACrB,CAAC;IACJ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEjD,OAAO;QACL,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACzB,OAAO,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACnC,CAAC;QAED,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;YAEhD,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;YACtE,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;YAClC,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YAC3C,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YACpD,OAAO,CAAC,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;YACvD,OAAO,CAAC,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACnE,CAAC;QAED,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;YACnC,OAAO,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC5D,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;YACrC,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtD,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACjF,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzC,CAAC;YACD,OAAO,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;YACpC,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtD,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACjF,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzC,CAAC;YACD,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;YACtC,OAAO,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { HookRunner, createHookRunner } from './HookRunner.js';
|
|
2
|
+
export { loggingHooks, createLoggingHooks } from './builtin/logging.js';
|
|
3
|
+
export { createMetricsHooks, InMemoryMetrics } from './builtin/metrics.js';
|
|
4
|
+
export type { Metrics } from './builtin/metrics.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC3E,YAAY,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export { Agent } from './agents/Agent.js';
|
|
2
|
+
export { LLMAgent } from './agents/LLMAgent.js';
|
|
3
|
+
export { FlowAgent } from './agents/FlowAgent.js';
|
|
4
|
+
export { TriageAgent } from './agents/TriageAgent.js';
|
|
5
|
+
export { CompositeAgent } from './agents/CompositeAgent.js';
|
|
6
|
+
export type { CompositeAgentConfig } from './agents/CompositeAgent.js';
|
|
7
|
+
export { FlowManager } from './flows/FlowManager.js';
|
|
8
|
+
export { FlowGraph, FlowGraphBuilder } from './flows/FlowGraph.js';
|
|
9
|
+
export { FlowNode } from './flows/FlowNode.js';
|
|
10
|
+
export { createFlowTransition, isFlowTransition } from './flows/transitions.js';
|
|
11
|
+
export { AgentFlowManager, ContextStrategy, createCollectorTool, } from './flows/AgentFlowManager.js';
|
|
12
|
+
export type { FlowManagerConfig as AgentFlowManagerConfig, FlowNodeConfig, FlowContext, FlowHooks, FlowAction, FlowStreamPart, ContextStrategyConfig, } from './flows/AgentFlowManager.js';
|
|
13
|
+
export { SessionManager } from './session/SessionManager.js';
|
|
14
|
+
export type { SessionStore } from './session/SessionStore.js';
|
|
15
|
+
export { MemoryStore } from './session/stores/MemoryStore.js';
|
|
16
|
+
export { Runtime, createRuntime } from './runtime/Runtime.js';
|
|
17
|
+
export { InjectionQueue, createInjectionQueue, commonInjections } from './runtime/InjectionQueue.js';
|
|
18
|
+
export { SessionWorkingMemory } from './runtime/WorkingMemory.js';
|
|
19
|
+
export type { Tool, ToolSet, ToolDefinition } from './tools/Tool.js';
|
|
20
|
+
export { createHandoffTool, isHandoffResult } from './tools/handoff.js';
|
|
21
|
+
export type { HandoffResult } from './tools/handoff.js';
|
|
22
|
+
export { HookRunner, createHookRunner } from './hooks/HookRunner.js';
|
|
23
|
+
export { loggingHooks, createLoggingHooks } from './hooks/builtin/logging.js';
|
|
24
|
+
export { createMetricsHooks, InMemoryMetrics } from './hooks/builtin/metrics.js';
|
|
25
|
+
export type { Metrics } from './hooks/builtin/metrics.js';
|
|
26
|
+
export { ToolEnforcer, createToolEnforcer } from './guards/ToolEnforcer.js';
|
|
27
|
+
export * as StopConditions from './guards/StopConditions.js';
|
|
28
|
+
export * as EnforcementRules from './guards/rules.js';
|
|
29
|
+
export type * from './types/index.js';
|
|
30
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,iBAAiB,IAAI,sBAAsB,EAC3C,cAAc,EACd,WAAW,EACX,SAAS,EACT,UAAU,EACV,cAAc,EACd,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACrG,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACxE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AACjF,YAAY,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,KAAK,cAAc,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,gBAAgB,MAAM,mBAAmB,CAAC;AAEtD,mBAAmB,kBAAkB,CAAC"}
|