@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
package/dist/index.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
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 { FlowManager } from './flows/FlowManager.js';
|
|
7
|
+
export { FlowGraph, FlowGraphBuilder } from './flows/FlowGraph.js';
|
|
8
|
+
export { FlowNode } from './flows/FlowNode.js';
|
|
9
|
+
export { createFlowTransition, isFlowTransition } from './flows/transitions.js';
|
|
10
|
+
export { AgentFlowManager, ContextStrategy, createCollectorTool, } from './flows/AgentFlowManager.js';
|
|
11
|
+
export { SessionManager } from './session/SessionManager.js';
|
|
12
|
+
export { MemoryStore } from './session/stores/MemoryStore.js';
|
|
13
|
+
export { Runtime, createRuntime } from './runtime/Runtime.js';
|
|
14
|
+
export { InjectionQueue, createInjectionQueue, commonInjections } from './runtime/InjectionQueue.js';
|
|
15
|
+
export { SessionWorkingMemory } from './runtime/WorkingMemory.js';
|
|
16
|
+
export { createHandoffTool, isHandoffResult } from './tools/handoff.js';
|
|
17
|
+
export { HookRunner, createHookRunner } from './hooks/HookRunner.js';
|
|
18
|
+
export { loggingHooks, createLoggingHooks } from './hooks/builtin/logging.js';
|
|
19
|
+
export { createMetricsHooks, InMemoryMetrics } from './hooks/builtin/metrics.js';
|
|
20
|
+
export { ToolEnforcer, createToolEnforcer } from './guards/ToolEnforcer.js';
|
|
21
|
+
export * as StopConditions from './guards/StopConditions.js';
|
|
22
|
+
export * as EnforcementRules from './guards/rules.js';
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","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;AAG5D,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;AAWrC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,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;AAGlE,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGxE,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;AAGjF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,KAAK,cAAc,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,gBAAgB,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { Injection, InjectionLevel } from '../types/index.js';
|
|
2
|
+
export declare class InjectionQueue {
|
|
3
|
+
private injections;
|
|
4
|
+
private useCounts;
|
|
5
|
+
add(injection: Omit<Injection, 'id'>): string;
|
|
6
|
+
addBatch(injections: Omit<Injection, 'id'>[]): string[];
|
|
7
|
+
remove(id: string): boolean;
|
|
8
|
+
get(id: string): Injection | undefined;
|
|
9
|
+
getFor(level: InjectionLevel, toolName?: string): string;
|
|
10
|
+
peekFor(level: InjectionLevel, toolName?: string): Injection[];
|
|
11
|
+
clear(): void;
|
|
12
|
+
size(): number;
|
|
13
|
+
getAll(): Injection[];
|
|
14
|
+
export(): {
|
|
15
|
+
injections: Injection[];
|
|
16
|
+
useCounts: [string, number][];
|
|
17
|
+
};
|
|
18
|
+
import(data: {
|
|
19
|
+
injections: Injection[];
|
|
20
|
+
useCounts: [string, number][];
|
|
21
|
+
}): void;
|
|
22
|
+
}
|
|
23
|
+
export declare function createInjectionQueue(): InjectionQueue;
|
|
24
|
+
export declare const commonInjections: {
|
|
25
|
+
professional: {
|
|
26
|
+
content: string;
|
|
27
|
+
priority: "high";
|
|
28
|
+
level: "system";
|
|
29
|
+
};
|
|
30
|
+
concise: {
|
|
31
|
+
content: string;
|
|
32
|
+
priority: "medium";
|
|
33
|
+
level: "system";
|
|
34
|
+
};
|
|
35
|
+
noGuessing: {
|
|
36
|
+
content: string;
|
|
37
|
+
priority: "critical";
|
|
38
|
+
level: "system";
|
|
39
|
+
};
|
|
40
|
+
confirmDestructive: {
|
|
41
|
+
content: string;
|
|
42
|
+
priority: "critical";
|
|
43
|
+
level: "system";
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=InjectionQueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InjectionQueue.d.ts","sourceRoot":"","sources":["../../src/runtime/InjectionQueue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAqB,MAAM,mBAAmB,CAAC;AAStF,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAAgC;IAClD,OAAO,CAAC,SAAS,CAA6B;IAE9C,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,MAAM;IAO7C,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE;IAIvD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAK3B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,MAAM,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IA2CxD,OAAO,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE;IAkB9D,KAAK,IAAI,IAAI;IAKb,IAAI,IAAI,MAAM;IAId,MAAM,IAAI,SAAS,EAAE;IAIrB,MAAM,IAAI;QAAE,UAAU,EAAE,SAAS,EAAE,CAAC;QAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;KAAE;IAOpE,MAAM,CAAC,IAAI,EAAE;QAAE,UAAU,EAAE,SAAS,EAAE,CAAC;QAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;KAAE,GAAG,IAAI;CAS/E;AAED,wBAAgB,oBAAoB,IAAI,cAAc,CAErD;AAED,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;CAwB5B,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
const PRIORITY_ORDER = {
|
|
2
|
+
critical: 4,
|
|
3
|
+
high: 3,
|
|
4
|
+
medium: 2,
|
|
5
|
+
low: 1,
|
|
6
|
+
};
|
|
7
|
+
export class InjectionQueue {
|
|
8
|
+
injections = new Map();
|
|
9
|
+
useCounts = new Map();
|
|
10
|
+
add(injection) {
|
|
11
|
+
const id = crypto.randomUUID();
|
|
12
|
+
this.injections.set(id, { ...injection, id });
|
|
13
|
+
this.useCounts.set(id, 0);
|
|
14
|
+
return id;
|
|
15
|
+
}
|
|
16
|
+
addBatch(injections) {
|
|
17
|
+
return injections.map(injection => this.add(injection));
|
|
18
|
+
}
|
|
19
|
+
remove(id) {
|
|
20
|
+
this.useCounts.delete(id);
|
|
21
|
+
return this.injections.delete(id);
|
|
22
|
+
}
|
|
23
|
+
get(id) {
|
|
24
|
+
return this.injections.get(id);
|
|
25
|
+
}
|
|
26
|
+
getFor(level, toolName) {
|
|
27
|
+
const now = Date.now();
|
|
28
|
+
const applicable = [];
|
|
29
|
+
for (const [id, injection] of this.injections) {
|
|
30
|
+
if (injection.level !== level)
|
|
31
|
+
continue;
|
|
32
|
+
if (level === 'tool' && injection.toolName !== toolName)
|
|
33
|
+
continue;
|
|
34
|
+
if (injection.expiresAt && injection.expiresAt < now) {
|
|
35
|
+
this.injections.delete(id);
|
|
36
|
+
this.useCounts.delete(id);
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
const uses = this.useCounts.get(id) ?? 0;
|
|
40
|
+
if (injection.maxUses !== undefined && uses >= injection.maxUses) {
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
applicable.push(injection);
|
|
44
|
+
}
|
|
45
|
+
applicable.sort((a, b) => PRIORITY_ORDER[b.priority] - PRIORITY_ORDER[a.priority]);
|
|
46
|
+
for (const injection of applicable) {
|
|
47
|
+
const uses = (this.useCounts.get(injection.id) ?? 0) + 1;
|
|
48
|
+
this.useCounts.set(injection.id, uses);
|
|
49
|
+
if (injection.once) {
|
|
50
|
+
this.injections.delete(injection.id);
|
|
51
|
+
this.useCounts.delete(injection.id);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (applicable.length === 0)
|
|
55
|
+
return '';
|
|
56
|
+
return applicable
|
|
57
|
+
.map(inj => `<system-reminder priority="${inj.priority}">\n${inj.content}\n</system-reminder>`)
|
|
58
|
+
.join('\n\n');
|
|
59
|
+
}
|
|
60
|
+
peekFor(level, toolName) {
|
|
61
|
+
const now = Date.now();
|
|
62
|
+
const applicable = [];
|
|
63
|
+
for (const injection of this.injections.values()) {
|
|
64
|
+
if (injection.level !== level)
|
|
65
|
+
continue;
|
|
66
|
+
if (level === 'tool' && injection.toolName !== toolName)
|
|
67
|
+
continue;
|
|
68
|
+
if (injection.expiresAt && injection.expiresAt < now)
|
|
69
|
+
continue;
|
|
70
|
+
const uses = this.useCounts.get(injection.id) ?? 0;
|
|
71
|
+
if (injection.maxUses !== undefined && uses >= injection.maxUses)
|
|
72
|
+
continue;
|
|
73
|
+
applicable.push(injection);
|
|
74
|
+
}
|
|
75
|
+
return applicable.sort((a, b) => PRIORITY_ORDER[b.priority] - PRIORITY_ORDER[a.priority]);
|
|
76
|
+
}
|
|
77
|
+
clear() {
|
|
78
|
+
this.injections.clear();
|
|
79
|
+
this.useCounts.clear();
|
|
80
|
+
}
|
|
81
|
+
size() {
|
|
82
|
+
return this.injections.size;
|
|
83
|
+
}
|
|
84
|
+
getAll() {
|
|
85
|
+
return Array.from(this.injections.values());
|
|
86
|
+
}
|
|
87
|
+
export() {
|
|
88
|
+
return {
|
|
89
|
+
injections: Array.from(this.injections.values()),
|
|
90
|
+
useCounts: Array.from(this.useCounts.entries()),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
import(data) {
|
|
94
|
+
this.clear();
|
|
95
|
+
for (const injection of data.injections) {
|
|
96
|
+
this.injections.set(injection.id, injection);
|
|
97
|
+
}
|
|
98
|
+
for (const [id, count] of data.useCounts) {
|
|
99
|
+
this.useCounts.set(id, count);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
export function createInjectionQueue() {
|
|
104
|
+
return new InjectionQueue();
|
|
105
|
+
}
|
|
106
|
+
export const commonInjections = {
|
|
107
|
+
professional: {
|
|
108
|
+
content: 'Always maintain a professional, helpful, and empathetic tone.',
|
|
109
|
+
priority: 'high',
|
|
110
|
+
level: 'system',
|
|
111
|
+
},
|
|
112
|
+
concise: {
|
|
113
|
+
content: 'Keep responses concise and focused. Avoid unnecessary verbosity.',
|
|
114
|
+
priority: 'medium',
|
|
115
|
+
level: 'system',
|
|
116
|
+
},
|
|
117
|
+
noGuessing: {
|
|
118
|
+
content: 'Never guess or make up information. If unsure, ask for clarification or use tools to verify.',
|
|
119
|
+
priority: 'critical',
|
|
120
|
+
level: 'system',
|
|
121
|
+
},
|
|
122
|
+
confirmDestructive: {
|
|
123
|
+
content: 'Always confirm with the user before performing any destructive or irreversible actions.',
|
|
124
|
+
priority: 'critical',
|
|
125
|
+
level: 'system',
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=InjectionQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InjectionQueue.js","sourceRoot":"","sources":["../../src/runtime/InjectionQueue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { AgentConfig, HarnessConfig, HarnessStreamPart, StreamOptions, Session } from '../types/index.js';
|
|
2
|
+
export declare class Runtime {
|
|
3
|
+
private config;
|
|
4
|
+
private agents;
|
|
5
|
+
private defaultAgentId;
|
|
6
|
+
private defaultModel?;
|
|
7
|
+
private maxSteps;
|
|
8
|
+
private maxHandoffs;
|
|
9
|
+
private stopConditions;
|
|
10
|
+
private sessionStore;
|
|
11
|
+
private hookRunner;
|
|
12
|
+
private enforcer;
|
|
13
|
+
constructor(config: HarnessConfig);
|
|
14
|
+
stream(options: StreamOptions): AsyncGenerator<HarnessStreamPart>;
|
|
15
|
+
chat(sessionId: string, input: string, userId?: string): AsyncGenerator<HarnessStreamPart>;
|
|
16
|
+
private runLoop;
|
|
17
|
+
private createSession;
|
|
18
|
+
getSession(id: string): Promise<Session | null>;
|
|
19
|
+
deleteSession(id: string): Promise<void>;
|
|
20
|
+
getAgent(id: string): AgentConfig | undefined;
|
|
21
|
+
getAllAgents(): AgentConfig[];
|
|
22
|
+
}
|
|
23
|
+
export declare function createRuntime(config: HarnessConfig): Runtime;
|
|
24
|
+
//# sourceMappingURL=Runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/Runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,iBAAiB,EAGjB,aAAa,EAEb,OAAO,EACR,MAAM,mBAAmB,CAAC;AAS3B,qBAAa,OAAO;IAWN,OAAO,CAAC,MAAM;IAV1B,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,YAAY,CAAC,CAAgC;IACrD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,YAAY,CAA6C;IACjE,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAe;gBAEX,MAAM,EAAE,aAAa;IAelC,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,cAAc,CAAC,iBAAiB,CAAC;IA8CjE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,iBAAiB,CAAC;YAIlF,OAAO;IA0MtB,OAAO,CAAC,aAAa;IAwBf,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAI/C,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI7C,YAAY,IAAI,WAAW,EAAE;CAG9B;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAE5D"}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
import { streamText } from 'ai';
|
|
2
|
+
import { createHandoffTool, isHandoffResult } from '../tools/handoff.js';
|
|
3
|
+
import { InjectionQueue, commonInjections } from './InjectionQueue.js';
|
|
4
|
+
import { checkStopConditions, defaultStopConditions } from '../guards/StopConditions.js';
|
|
5
|
+
import { HookRunner } from '../hooks/HookRunner.js';
|
|
6
|
+
import { ToolEnforcer } from '../guards/ToolEnforcer.js';
|
|
7
|
+
import { defaultEnforcementRules } from '../guards/rules.js';
|
|
8
|
+
import { MemoryStore } from '../session/stores/MemoryStore.js';
|
|
9
|
+
export class Runtime {
|
|
10
|
+
config;
|
|
11
|
+
agents = new Map();
|
|
12
|
+
defaultAgentId;
|
|
13
|
+
defaultModel;
|
|
14
|
+
maxSteps;
|
|
15
|
+
maxHandoffs;
|
|
16
|
+
stopConditions;
|
|
17
|
+
sessionStore;
|
|
18
|
+
hookRunner;
|
|
19
|
+
enforcer;
|
|
20
|
+
constructor(config) {
|
|
21
|
+
this.config = config;
|
|
22
|
+
for (const agent of config.agents) {
|
|
23
|
+
this.agents.set(agent.id, agent);
|
|
24
|
+
}
|
|
25
|
+
this.defaultAgentId = config.defaultAgentId;
|
|
26
|
+
this.defaultModel = config.defaultModel;
|
|
27
|
+
this.maxSteps = config.maxSteps ?? 20;
|
|
28
|
+
this.maxHandoffs = config.maxHandoffs ?? 10;
|
|
29
|
+
this.stopConditions = config.stopConditions ?? defaultStopConditions;
|
|
30
|
+
this.sessionStore = config.sessionStore ?? new MemoryStore();
|
|
31
|
+
this.hookRunner = new HookRunner(config.hooks ?? {});
|
|
32
|
+
this.enforcer = new ToolEnforcer(config.enforcementRules ?? defaultEnforcementRules);
|
|
33
|
+
}
|
|
34
|
+
async *stream(options) {
|
|
35
|
+
let session;
|
|
36
|
+
if (options.sessionId) {
|
|
37
|
+
const existing = await this.sessionStore.get(options.sessionId);
|
|
38
|
+
session = existing ?? this.createSession(options.sessionId, options.userId);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
session = this.createSession(undefined, options.userId);
|
|
42
|
+
}
|
|
43
|
+
session.messages.push({ role: 'user', content: options.input });
|
|
44
|
+
const activeAgentId = session.activeAgentId ?? session.currentAgent ?? this.defaultAgentId;
|
|
45
|
+
session.activeAgentId = activeAgentId;
|
|
46
|
+
session.currentAgent = activeAgentId;
|
|
47
|
+
const context = {
|
|
48
|
+
session,
|
|
49
|
+
agentId: activeAgentId,
|
|
50
|
+
stepCount: 0,
|
|
51
|
+
totalTokens: 0,
|
|
52
|
+
handoffStack: [],
|
|
53
|
+
startTime: Date.now(),
|
|
54
|
+
consecutiveErrors: 0,
|
|
55
|
+
toolCallHistory: [],
|
|
56
|
+
};
|
|
57
|
+
const injectionQueue = new InjectionQueue();
|
|
58
|
+
injectionQueue.add(commonInjections.professional);
|
|
59
|
+
injectionQueue.add(commonInjections.noGuessing);
|
|
60
|
+
injectionQueue.add(commonInjections.confirmDestructive);
|
|
61
|
+
await this.hookRunner.onStart(context);
|
|
62
|
+
try {
|
|
63
|
+
yield* this.runLoop(context, injectionQueue);
|
|
64
|
+
await this.hookRunner.onEnd(context, { success: true });
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
await this.hookRunner.onError(context, error);
|
|
68
|
+
await this.hookRunner.onEnd(context, { success: false, error: error });
|
|
69
|
+
yield { type: 'error', error: error.message };
|
|
70
|
+
}
|
|
71
|
+
finally {
|
|
72
|
+
await this.sessionStore.save(session);
|
|
73
|
+
yield { type: 'done', sessionId: session.id };
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async *chat(sessionId, input, userId) {
|
|
77
|
+
yield* this.stream({ input, sessionId, userId });
|
|
78
|
+
}
|
|
79
|
+
async *runLoop(context, injectionQueue) {
|
|
80
|
+
while (context.handoffStack.length < this.maxHandoffs) {
|
|
81
|
+
if (context.handoffStack.includes(context.agentId)) {
|
|
82
|
+
yield {
|
|
83
|
+
type: 'error',
|
|
84
|
+
error: `Circular handoff detected: ${context.handoffStack.join(' -> ')} -> ${context.agentId}`,
|
|
85
|
+
};
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
context.handoffStack.push(context.agentId);
|
|
89
|
+
const agent = this.agents.get(context.agentId);
|
|
90
|
+
if (!agent) {
|
|
91
|
+
yield { type: 'error', error: `Agent "${context.agentId}" not found` };
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
yield { type: 'agent-start', agentId: agent.id };
|
|
95
|
+
await this.hookRunner.onAgentStart(context, agent.id);
|
|
96
|
+
const handoffTool = createHandoffTool(Array.from(this.agents.values()), context.agentId);
|
|
97
|
+
const tools = { ...agent.tools, handoff: handoffTool };
|
|
98
|
+
const systemInjections = injectionQueue.getFor('system');
|
|
99
|
+
const system = systemInjections
|
|
100
|
+
? `${agent.systemPrompt}\n\n${systemInjections}`
|
|
101
|
+
: agent.systemPrompt;
|
|
102
|
+
let handoffTo = null;
|
|
103
|
+
let agentSteps = 0;
|
|
104
|
+
const agentMaxSteps = agent.maxSteps ?? agent.maxTurns ?? this.maxSteps;
|
|
105
|
+
while (agentSteps < agentMaxSteps) {
|
|
106
|
+
const stopResult = checkStopConditions(context, this.stopConditions);
|
|
107
|
+
if (stopResult.shouldStop) {
|
|
108
|
+
yield { type: 'error', error: `Stopped: ${stopResult.reason}` };
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
agentSteps += 1;
|
|
112
|
+
context.stepCount += 1;
|
|
113
|
+
yield { type: 'step-start', step: context.stepCount, agentId: agent.id };
|
|
114
|
+
await this.hookRunner.onStepStart(context, context.stepCount);
|
|
115
|
+
try {
|
|
116
|
+
const model = agent.model ?? this.defaultModel;
|
|
117
|
+
if (!model) {
|
|
118
|
+
throw new Error(`Agent "${agent.id}" is missing a model`);
|
|
119
|
+
}
|
|
120
|
+
const result = streamText({
|
|
121
|
+
model: model,
|
|
122
|
+
system,
|
|
123
|
+
messages: context.session.messages,
|
|
124
|
+
tools,
|
|
125
|
+
});
|
|
126
|
+
const toolCalls = [];
|
|
127
|
+
for await (const chunk of result.fullStream) {
|
|
128
|
+
if (chunk.type === 'text-delta') {
|
|
129
|
+
yield { type: 'text-delta', text: chunk.text };
|
|
130
|
+
}
|
|
131
|
+
if (chunk.type === 'tool-call') {
|
|
132
|
+
const args = 'args' in chunk ? chunk.args : chunk.input;
|
|
133
|
+
const callRecord = {
|
|
134
|
+
toolCallId: chunk.toolCallId,
|
|
135
|
+
toolName: chunk.toolName,
|
|
136
|
+
args,
|
|
137
|
+
success: true,
|
|
138
|
+
timestamp: Date.now(),
|
|
139
|
+
};
|
|
140
|
+
toolCalls.push(callRecord);
|
|
141
|
+
await this.hookRunner.onToolCall(context, callRecord);
|
|
142
|
+
yield {
|
|
143
|
+
type: 'tool-call',
|
|
144
|
+
toolCallId: chunk.toolCallId,
|
|
145
|
+
toolName: chunk.toolName,
|
|
146
|
+
args,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
if (chunk.type === 'tool-result') {
|
|
150
|
+
const toolResult = 'result' in chunk ? chunk.result : chunk.output;
|
|
151
|
+
const callRecord = toolCalls.find(call => call.toolCallId === chunk.toolCallId);
|
|
152
|
+
if (callRecord) {
|
|
153
|
+
callRecord.result = toolResult;
|
|
154
|
+
callRecord.durationMs = Date.now() - callRecord.timestamp;
|
|
155
|
+
context.toolCallHistory.push(callRecord);
|
|
156
|
+
await this.hookRunner.onToolResult(context, callRecord);
|
|
157
|
+
}
|
|
158
|
+
yield {
|
|
159
|
+
type: 'tool-result',
|
|
160
|
+
toolCallId: chunk.toolCallId,
|
|
161
|
+
toolName: chunk.toolName,
|
|
162
|
+
result: toolResult,
|
|
163
|
+
};
|
|
164
|
+
if (isHandoffResult(toolResult)) {
|
|
165
|
+
const targetAgent = toolResult.targetAgent ?? toolResult.targetAgentId;
|
|
166
|
+
handoffTo = targetAgent;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
const response = await result.response;
|
|
171
|
+
context.session.messages.push(...response.messages);
|
|
172
|
+
const usage = await result.usage;
|
|
173
|
+
const totalTokens = usage.totalTokens ?? 0;
|
|
174
|
+
context.totalTokens += totalTokens;
|
|
175
|
+
if (context.session.metadata) {
|
|
176
|
+
context.session.metadata.totalTokens += totalTokens;
|
|
177
|
+
context.session.metadata.totalSteps += 1;
|
|
178
|
+
}
|
|
179
|
+
context.consecutiveErrors = 0;
|
|
180
|
+
yield { type: 'step-end', step: context.stepCount, agentId: agent.id };
|
|
181
|
+
await this.hookRunner.onStepEnd(context, context.stepCount, {
|
|
182
|
+
toolCalls,
|
|
183
|
+
finishReason: await result.finishReason,
|
|
184
|
+
tokensUsed: totalTokens,
|
|
185
|
+
handoffTo: handoffTo ?? undefined,
|
|
186
|
+
});
|
|
187
|
+
const finishReason = await result.finishReason;
|
|
188
|
+
if (finishReason !== 'tool-calls' || handoffTo) {
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
context.consecutiveErrors += 1;
|
|
194
|
+
await this.hookRunner.onError(context, error);
|
|
195
|
+
yield { type: 'error', error: error.message };
|
|
196
|
+
if (context.consecutiveErrors >= 3) {
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
yield { type: 'agent-end', agentId: agent.id };
|
|
202
|
+
await this.hookRunner.onAgentEnd(context, agent.id);
|
|
203
|
+
if (!handoffTo) {
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
const reason = context.toolCallHistory
|
|
207
|
+
.filter(call => call.toolName === 'handoff' && isHandoffResult(call.result))
|
|
208
|
+
.pop()?.result;
|
|
209
|
+
await this.hookRunner.onHandoff(context, context.agentId, handoffTo, reason?.reason ?? 'No reason provided');
|
|
210
|
+
yield {
|
|
211
|
+
type: 'handoff',
|
|
212
|
+
from: context.agentId,
|
|
213
|
+
to: handoffTo,
|
|
214
|
+
reason: reason?.reason ?? 'No reason provided',
|
|
215
|
+
};
|
|
216
|
+
context.session.handoffHistory.push({
|
|
217
|
+
from: context.agentId,
|
|
218
|
+
to: handoffTo,
|
|
219
|
+
reason: reason?.reason ?? 'No reason provided',
|
|
220
|
+
timestamp: new Date(),
|
|
221
|
+
});
|
|
222
|
+
if (context.session.metadata) {
|
|
223
|
+
context.session.metadata.handoffHistory.push({
|
|
224
|
+
from: context.agentId,
|
|
225
|
+
to: handoffTo,
|
|
226
|
+
reason: reason?.reason ?? 'No reason provided',
|
|
227
|
+
timestamp: new Date(),
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
context.session.activeAgentId = handoffTo;
|
|
231
|
+
context.session.currentAgent = handoffTo;
|
|
232
|
+
context.agentId = handoffTo;
|
|
233
|
+
}
|
|
234
|
+
if (context.handoffStack.length >= this.maxHandoffs) {
|
|
235
|
+
yield { type: 'error', error: `Maximum handoffs (${this.maxHandoffs}) exceeded` };
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
createSession(id, userId) {
|
|
239
|
+
const now = new Date();
|
|
240
|
+
return {
|
|
241
|
+
id: id ?? crypto.randomUUID(),
|
|
242
|
+
userId,
|
|
243
|
+
messages: [],
|
|
244
|
+
createdAt: now,
|
|
245
|
+
updatedAt: now,
|
|
246
|
+
workingMemory: {},
|
|
247
|
+
currentAgent: this.defaultAgentId,
|
|
248
|
+
activeAgentId: this.defaultAgentId,
|
|
249
|
+
state: {},
|
|
250
|
+
metadata: {
|
|
251
|
+
createdAt: now,
|
|
252
|
+
lastActiveAt: now,
|
|
253
|
+
totalTokens: 0,
|
|
254
|
+
totalSteps: 0,
|
|
255
|
+
handoffHistory: [],
|
|
256
|
+
},
|
|
257
|
+
agentStates: {},
|
|
258
|
+
handoffHistory: [],
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
async getSession(id) {
|
|
262
|
+
return this.sessionStore.get(id);
|
|
263
|
+
}
|
|
264
|
+
async deleteSession(id) {
|
|
265
|
+
await this.sessionStore.delete(id);
|
|
266
|
+
}
|
|
267
|
+
getAgent(id) {
|
|
268
|
+
return this.agents.get(id);
|
|
269
|
+
}
|
|
270
|
+
getAllAgents() {
|
|
271
|
+
return Array.from(this.agents.values());
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
export function createRuntime(config) {
|
|
275
|
+
return new Runtime(config);
|
|
276
|
+
}
|
|
277
|
+
//# sourceMappingURL=Runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Runtime.js","sourceRoot":"","sources":["../../src/runtime/Runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Session, WorkingMemory } from '../types/index.js';
|
|
2
|
+
export declare class SessionWorkingMemory implements WorkingMemory {
|
|
3
|
+
private session;
|
|
4
|
+
constructor(session: Session);
|
|
5
|
+
get<T>(key: string): T | undefined;
|
|
6
|
+
set<T>(key: string, value: T): void;
|
|
7
|
+
has(key: string): boolean;
|
|
8
|
+
delete(key: string): boolean;
|
|
9
|
+
clear(): void;
|
|
10
|
+
toJSON(): Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=WorkingMemory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkingMemory.d.ts","sourceRoot":"","sources":["../../src/runtime/WorkingMemory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEhE,qBAAa,oBAAqB,YAAW,aAAa;IAC5C,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,OAAO;IAEpC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAIlC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAInC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQ5B,KAAK,IAAI,IAAI;IAIb,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAGlC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export class SessionWorkingMemory {
|
|
2
|
+
session;
|
|
3
|
+
constructor(session) {
|
|
4
|
+
this.session = session;
|
|
5
|
+
}
|
|
6
|
+
get(key) {
|
|
7
|
+
return this.session.workingMemory[key];
|
|
8
|
+
}
|
|
9
|
+
set(key, value) {
|
|
10
|
+
this.session.workingMemory[key] = value;
|
|
11
|
+
}
|
|
12
|
+
has(key) {
|
|
13
|
+
return Object.prototype.hasOwnProperty.call(this.session.workingMemory, key);
|
|
14
|
+
}
|
|
15
|
+
delete(key) {
|
|
16
|
+
if (this.has(key)) {
|
|
17
|
+
delete this.session.workingMemory[key];
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
clear() {
|
|
23
|
+
this.session.workingMemory = {};
|
|
24
|
+
}
|
|
25
|
+
toJSON() {
|
|
26
|
+
return { ...this.session.workingMemory };
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=WorkingMemory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkingMemory.js","sourceRoot":"","sources":["../../src/runtime/WorkingMemory.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,oBAAoB;IACX;IAApB,YAAoB,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;IAAG,CAAC;IAExC,GAAG,CAAI,GAAW;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAkB,CAAC;IAC1D,CAAC;IAED,GAAG,CAAI,GAAW,EAAE,KAAQ;QAC1B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,KAAgB,CAAC;IACrD,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,EAAE,CAAC;IAClC,CAAC;IAED,MAAM;QACJ,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Session } from '../types/index.js';
|
|
2
|
+
import type { SessionStore } from './SessionStore.js';
|
|
3
|
+
export declare class SessionManager {
|
|
4
|
+
private store;
|
|
5
|
+
private defaultAgentId;
|
|
6
|
+
constructor(store: SessionStore, defaultAgentId: string);
|
|
7
|
+
create(userId?: string, sessionId?: string): Promise<Session>;
|
|
8
|
+
getOrCreate(sessionId?: string, userId?: string): Promise<Session>;
|
|
9
|
+
get(sessionId: string): Promise<Session | null>;
|
|
10
|
+
save(session: Session): Promise<void>;
|
|
11
|
+
delete(sessionId: string): Promise<void>;
|
|
12
|
+
listForUser(userId: string): Promise<Session[]>;
|
|
13
|
+
recordHandoff(sessionId: string, fromAgentId: string, toAgentId: string, reason: string): Promise<void>;
|
|
14
|
+
updateStats(sessionId: string, tokensUsed: number, stepsCompleted: number): Promise<void>;
|
|
15
|
+
setState(sessionId: string, key: string, value: unknown): Promise<void>;
|
|
16
|
+
getState<T>(sessionId: string, key: string): Promise<T | undefined>;
|
|
17
|
+
cleanup(maxAgeMs: number): Promise<number>;
|
|
18
|
+
updateAgentState(sessionId: string, agentId: string, state: Record<string, unknown>): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=SessionManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionManager.d.ts","sourceRoot":"","sources":["../../src/session/SessionManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,qBAAa,cAAc;IAEvB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,cAAc;gBADd,KAAK,EAAE,YAAY,EACnB,cAAc,EAAE,MAAM;IAG1B,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2B7D,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYlE,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAI/C,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAI/C,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;IA0BV,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBzF,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvE,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAKnE,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO1C,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAc1G"}
|