@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.
Files changed (134) hide show
  1. package/README.md +39 -0
  2. package/dist/agents/Agent.d.ts +15 -0
  3. package/dist/agents/Agent.d.ts.map +1 -0
  4. package/dist/agents/Agent.js +33 -0
  5. package/dist/agents/Agent.js.map +1 -0
  6. package/dist/agents/CompositeAgent.d.ts +24 -0
  7. package/dist/agents/CompositeAgent.d.ts.map +1 -0
  8. package/dist/agents/CompositeAgent.js +59 -0
  9. package/dist/agents/CompositeAgent.js.map +1 -0
  10. package/dist/agents/FlowAgent.d.ts +11 -0
  11. package/dist/agents/FlowAgent.d.ts.map +1 -0
  12. package/dist/agents/FlowAgent.js +44 -0
  13. package/dist/agents/FlowAgent.js.map +1 -0
  14. package/dist/agents/LLMAgent.d.ts +11 -0
  15. package/dist/agents/LLMAgent.d.ts.map +1 -0
  16. package/dist/agents/LLMAgent.js +52 -0
  17. package/dist/agents/LLMAgent.js.map +1 -0
  18. package/dist/agents/TriageAgent.d.ts +11 -0
  19. package/dist/agents/TriageAgent.d.ts.map +1 -0
  20. package/dist/agents/TriageAgent.js +89 -0
  21. package/dist/agents/TriageAgent.js.map +1 -0
  22. package/dist/agents/index.d.ts +7 -0
  23. package/dist/agents/index.d.ts.map +1 -0
  24. package/dist/agents/index.js +6 -0
  25. package/dist/agents/index.js.map +1 -0
  26. package/dist/flows/AgentFlowManager.d.ts +154 -0
  27. package/dist/flows/AgentFlowManager.d.ts.map +1 -0
  28. package/dist/flows/AgentFlowManager.js +272 -0
  29. package/dist/flows/AgentFlowManager.js.map +1 -0
  30. package/dist/flows/FlowGraph.d.ts +23 -0
  31. package/dist/flows/FlowGraph.d.ts.map +1 -0
  32. package/dist/flows/FlowGraph.js +57 -0
  33. package/dist/flows/FlowGraph.js.map +1 -0
  34. package/dist/flows/FlowManager.d.ts +36 -0
  35. package/dist/flows/FlowManager.d.ts.map +1 -0
  36. package/dist/flows/FlowManager.js +256 -0
  37. package/dist/flows/FlowManager.js.map +1 -0
  38. package/dist/flows/FlowNode.d.ts +8 -0
  39. package/dist/flows/FlowNode.d.ts.map +1 -0
  40. package/dist/flows/FlowNode.js +12 -0
  41. package/dist/flows/FlowNode.js.map +1 -0
  42. package/dist/flows/index.d.ts +8 -0
  43. package/dist/flows/index.d.ts.map +1 -0
  44. package/dist/flows/index.js +6 -0
  45. package/dist/flows/index.js.map +1 -0
  46. package/dist/flows/transitions.d.ts +9 -0
  47. package/dist/flows/transitions.d.ts.map +1 -0
  48. package/dist/flows/transitions.js +15 -0
  49. package/dist/flows/transitions.js.map +1 -0
  50. package/dist/guards/StopConditions.d.ts +14 -0
  51. package/dist/guards/StopConditions.d.ts.map +1 -0
  52. package/dist/guards/StopConditions.js +161 -0
  53. package/dist/guards/StopConditions.js.map +1 -0
  54. package/dist/guards/ToolEnforcer.d.ts +11 -0
  55. package/dist/guards/ToolEnforcer.d.ts.map +1 -0
  56. package/dist/guards/ToolEnforcer.js +40 -0
  57. package/dist/guards/ToolEnforcer.js.map +1 -0
  58. package/dist/guards/index.d.ts +4 -0
  59. package/dist/guards/index.d.ts.map +1 -0
  60. package/dist/guards/index.js +4 -0
  61. package/dist/guards/index.js.map +1 -0
  62. package/dist/guards/rules.d.ts +8 -0
  63. package/dist/guards/rules.d.ts.map +1 -0
  64. package/dist/guards/rules.js +128 -0
  65. package/dist/guards/rules.js.map +1 -0
  66. package/dist/hooks/HookRunner.d.ts +30 -0
  67. package/dist/hooks/HookRunner.d.ts.map +1 -0
  68. package/dist/hooks/HookRunner.js +85 -0
  69. package/dist/hooks/HookRunner.js.map +1 -0
  70. package/dist/hooks/builtin/logging.d.ts +6 -0
  71. package/dist/hooks/builtin/logging.d.ts.map +1 -0
  72. package/dist/hooks/builtin/logging.js +99 -0
  73. package/dist/hooks/builtin/logging.js.map +1 -0
  74. package/dist/hooks/builtin/metrics.d.ts +38 -0
  75. package/dist/hooks/builtin/metrics.d.ts.map +1 -0
  76. package/dist/hooks/builtin/metrics.js +111 -0
  77. package/dist/hooks/builtin/metrics.js.map +1 -0
  78. package/dist/hooks/index.d.ts +5 -0
  79. package/dist/hooks/index.d.ts.map +1 -0
  80. package/dist/hooks/index.js +4 -0
  81. package/dist/hooks/index.js.map +1 -0
  82. package/dist/index.d.ts +30 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +23 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/runtime/InjectionQueue.d.ts +46 -0
  87. package/dist/runtime/InjectionQueue.d.ts.map +1 -0
  88. package/dist/runtime/InjectionQueue.js +128 -0
  89. package/dist/runtime/InjectionQueue.js.map +1 -0
  90. package/dist/runtime/Runtime.d.ts +24 -0
  91. package/dist/runtime/Runtime.d.ts.map +1 -0
  92. package/dist/runtime/Runtime.js +277 -0
  93. package/dist/runtime/Runtime.js.map +1 -0
  94. package/dist/runtime/WorkingMemory.d.ts +12 -0
  95. package/dist/runtime/WorkingMemory.d.ts.map +1 -0
  96. package/dist/runtime/WorkingMemory.js +29 -0
  97. package/dist/runtime/WorkingMemory.js.map +1 -0
  98. package/dist/runtime/index.d.ts +4 -0
  99. package/dist/runtime/index.d.ts.map +1 -0
  100. package/dist/runtime/index.js +4 -0
  101. package/dist/runtime/index.js.map +1 -0
  102. package/dist/session/SessionManager.d.ts +20 -0
  103. package/dist/session/SessionManager.d.ts.map +1 -0
  104. package/dist/session/SessionManager.js +134 -0
  105. package/dist/session/SessionManager.js.map +1 -0
  106. package/dist/session/SessionStore.d.ts +9 -0
  107. package/dist/session/SessionStore.d.ts.map +1 -0
  108. package/dist/session/SessionStore.js +2 -0
  109. package/dist/session/SessionStore.js.map +1 -0
  110. package/dist/session/index.d.ts +4 -0
  111. package/dist/session/index.d.ts.map +1 -0
  112. package/dist/session/index.js +3 -0
  113. package/dist/session/index.js.map +1 -0
  114. package/dist/session/stores/MemoryStore.d.ts +11 -0
  115. package/dist/session/stores/MemoryStore.d.ts.map +1 -0
  116. package/dist/session/stores/MemoryStore.js +34 -0
  117. package/dist/session/stores/MemoryStore.js.map +1 -0
  118. package/dist/tools/Tool.d.ts +10 -0
  119. package/dist/tools/Tool.d.ts.map +1 -0
  120. package/dist/tools/Tool.js +2 -0
  121. package/dist/tools/Tool.js.map +1 -0
  122. package/dist/tools/handoff.d.ts +25 -0
  123. package/dist/tools/handoff.d.ts.map +1 -0
  124. package/dist/tools/handoff.js +51 -0
  125. package/dist/tools/handoff.js.map +1 -0
  126. package/dist/tools/index.d.ts +4 -0
  127. package/dist/tools/index.d.ts.map +1 -0
  128. package/dist/tools/index.js +2 -0
  129. package/dist/tools/index.js.map +1 -0
  130. package/dist/types/index.d.ts +325 -0
  131. package/dist/types/index.d.ts.map +1 -0
  132. package/dist/types/index.js +2 -0
  133. package/dist/types/index.js.map +1 -0
  134. 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":"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"}
@@ -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,4 @@
1
+ export { HookRunner, createHookRunner } from './HookRunner.js';
2
+ export { loggingHooks, createLoggingHooks } from './builtin/logging.js';
3
+ export { createMetricsHooks, InMemoryMetrics } from './builtin/metrics.js';
4
+ //# sourceMappingURL=index.js.map
@@ -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"}
@@ -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"}