Skip to content

Commit 9b5a219

Browse files
author
Jicheng Lu
committed
refine code hook
1 parent f7dd5af commit 9b5a219

6 files changed

Lines changed: 17 additions & 12 deletions

File tree

src/Infrastructure/BotSharp.Abstraction/Coding/Contexts/CodeExecutionContext.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ public class CodeExecutionContext
44
{
55
public AgentCodeScript CodeScript { get; set; }
66
public List<KeyValue> Arguments { get; set; } = [];
7+
public string? InvokeFrom { get; set; }
78
}

src/Infrastructure/BotSharp.Abstraction/Instructs/IInstructHook.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@ public interface IInstructHook : IHookBase
1212
Task OnResponseGenerated(InstructResponseModel response) => Task.CompletedTask;
1313

1414
Task BeforeCodeExecution(Agent agent, CodeExecutionContext context) => Task.CompletedTask;
15-
Task AfterCodeExecution(Agent agent, CodeExecutionResponseModel response) => Task.CompletedTask;
15+
Task AfterCodeExecution(Agent agent, CodeExecutionContext context, CodeExecutionResponseModel response) => Task.CompletedTask;
1616
}

src/Infrastructure/BotSharp.Abstraction/Instructs/InstructHookBase.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public virtual async Task BeforeCodeExecution(Agent agent, CodeExecutionContext
2828
await Task.CompletedTask;
2929
}
3030

31-
public virtual async Task AfterCodeExecution(Agent agent, CodeExecutionResponseModel response)
31+
public virtual async Task AfterCodeExecution(Agent agent, CodeExecutionContext context, CodeExecutionResponseModel response)
3232
{
3333
await Task.CompletedTask;
3434
}

src/Infrastructure/BotSharp.Core.Rules/Criteria/CodeScriptRuleCriteria.cs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,26 +53,28 @@ public async Task<RuleCriteriaResult> ValidateAsync(Agent agent, IRuleTrigger tr
5353
{
5454
var hooks = _services.GetHooks<IInstructHook>(agent.Id);
5555

56-
var argName = context.Parameters.GetValueOrDefault("argument_name", null);
57-
var argValue = context.Parameters.TryGetValue("argument_value", out var val) && val != null ? JsonSerializer.Deserialize<JsonElement>(val) : (JsonElement?)null;
56+
var argName = context.Parameters.GetValueOrDefault("code_script_arg_name", null);
57+
var argValue = context.Parameters.TryGetValue("code_script_arg_value", out var val) && val != null ? JsonSerializer.Deserialize<JsonElement>(val) : (JsonElement?)null;
5858
var arguments = BuildArguments(argName, argValue);
59-
var codeExeContext = new CodeExecutionContext
59+
var codeExecutionContext = new CodeExecutionContext
6060
{
6161
CodeScript = codeScript,
62-
Arguments = arguments
62+
Arguments = arguments,
63+
InvokeFrom = nameof(CodeScriptRuleCriteria)
6364
};
6465

6566
foreach (var hook in hooks)
6667
{
67-
await hook.BeforeCodeExecution(agent, codeExeContext);
68+
await hook.BeforeCodeExecution(agent, codeExecutionContext);
6869
}
6970

71+
codeScript = codeExecutionContext.CodeScript;
7072
var (useLock, useProcess, timeoutSeconds) = CodingUtil.GetCodeExecutionConfig(_codingSettings);
7173
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(timeoutSeconds));
7274
var response = processor.Run(codeScript.Content, options: new()
7375
{
7476
ScriptName = scriptName,
75-
Arguments = arguments,
77+
Arguments = codeExecutionContext.Arguments,
7678
UseLock = useLock,
7779
UseProcess = useProcess
7880
}, cancellationToken: cts.Token);
@@ -87,7 +89,7 @@ public async Task<RuleCriteriaResult> ValidateAsync(Agent agent, IRuleTrigger tr
8789

8890
foreach (var hook in hooks)
8991
{
90-
await hook.AfterCodeExecution(agent, codeResponse);
92+
await hook.AfterCodeExecution(agent, codeExecutionContext, codeResponse);
9193
}
9294

9395
if (response == null || !response.Success)

src/Infrastructure/BotSharp.Core/Instructs/Services/InstructService.Execute.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ public async Task<InstructResult> Execute(
195195
foreach (var hook in hooks)
196196
{
197197
await hook.AfterCompletion(agent, instructResult);
198-
await hook.AfterCodeExecution(agent, codeExecution);
198+
await hook.AfterCodeExecution(agent, context, codeExecution);
199199
}
200200

201201
return instructResult;

src/Infrastructure/BotSharp.Logger/Hooks/InstructionLogHook.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
using BotSharp.Abstraction.Coding.Contexts;
12
using BotSharp.Abstraction.Coding.Models;
23
using BotSharp.Abstraction.Instructs.Models;
34
using BotSharp.Abstraction.Instructs.Settings;
45
using BotSharp.Abstraction.Loggers.Models;
56
using BotSharp.Abstraction.Users;
67
using BotSharp.Abstraction.Utilities;
8+
using System;
79

810
namespace BotSharp.Logger.Hooks;
911

@@ -61,7 +63,7 @@ await db.SaveInstructionLogs(new List<InstructionLogModel>
6163
await base.OnResponseGenerated(response);
6264
}
6365

64-
public override async Task AfterCodeExecution(Agent agent, CodeExecutionResponseModel response)
66+
public override async Task AfterCodeExecution(Agent agent, CodeExecutionContext context, CodeExecutionResponseModel response)
6567
{
6668
if (response == null || !IsLoggingEnabled(agent?.Id))
6769
{
@@ -88,7 +90,7 @@ await db.SaveInstructionLogs(new List<InstructionLogModel>
8890
}
8991
});
9092

91-
await base.AfterCodeExecution(agent, response);
93+
await base.AfterCodeExecution(agent, context, response);
9294
}
9395

9496
private bool IsLoggingEnabled(string? agentId)

0 commit comments

Comments
 (0)