|
|
@@ -241,6 +241,7 @@ export namespace SessionPrompt {
|
|
|
using _ = defer(() => cancel(sessionID))
|
|
|
|
|
|
let step = 0
|
|
|
+ const session = await Session.get(sessionID)
|
|
|
while (true) {
|
|
|
SessionStatus.set(sessionID, { type: "busy" })
|
|
|
log.info("loop", { step, sessionID })
|
|
|
@@ -277,7 +278,7 @@ export namespace SessionPrompt {
|
|
|
step++
|
|
|
if (step === 1)
|
|
|
ensureTitle({
|
|
|
- session: await Session.get(sessionID),
|
|
|
+ session,
|
|
|
modelID: lastUser.model.modelID,
|
|
|
providerID: lastUser.model.providerID,
|
|
|
message: msgs.find((m) => m.info.role === "user")!,
|
|
|
@@ -519,7 +520,7 @@ export namespace SessionPrompt {
|
|
|
})
|
|
|
const tools = await resolveTools({
|
|
|
agent,
|
|
|
- sessionID,
|
|
|
+ session,
|
|
|
model,
|
|
|
tools: lastUser.tools,
|
|
|
processor,
|
|
|
@@ -589,7 +590,7 @@ export namespace SessionPrompt {
|
|
|
async function resolveTools(input: {
|
|
|
agent: Agent.Info
|
|
|
model: Provider.Model
|
|
|
- sessionID: string
|
|
|
+ session: Session.Info
|
|
|
tools?: Record<string, boolean>
|
|
|
processor: SessionProcessor.Info
|
|
|
}) {
|
|
|
@@ -606,7 +607,7 @@ export namespace SessionPrompt {
|
|
|
"tool.execute.before",
|
|
|
{
|
|
|
tool: item.id,
|
|
|
- sessionID: input.sessionID,
|
|
|
+ sessionID: input.session.id,
|
|
|
callID: options.toolCallId,
|
|
|
},
|
|
|
{
|
|
|
@@ -614,7 +615,7 @@ export namespace SessionPrompt {
|
|
|
},
|
|
|
)
|
|
|
const ctx: Tool.Context = {
|
|
|
- sessionID: input.sessionID,
|
|
|
+ sessionID: input.session.id,
|
|
|
abort: options.abortSignal!,
|
|
|
messageID: input.processor.message.id,
|
|
|
callID: options.toolCallId,
|
|
|
@@ -640,7 +641,7 @@ export namespace SessionPrompt {
|
|
|
async ask(req) {
|
|
|
await PermissionNext.ask({
|
|
|
...req,
|
|
|
- sessionID: input.sessionID,
|
|
|
+ sessionID: input.session.parentID ?? input.session.id,
|
|
|
tool: { messageID: input.processor.message.id, callID: options.toolCallId },
|
|
|
ruleset: input.agent.permission,
|
|
|
})
|
|
|
@@ -651,7 +652,7 @@ export namespace SessionPrompt {
|
|
|
"tool.execute.after",
|
|
|
{
|
|
|
tool: item.id,
|
|
|
- sessionID: input.sessionID,
|
|
|
+ sessionID: input.session.id,
|
|
|
callID: options.toolCallId,
|
|
|
},
|
|
|
result,
|
|
|
@@ -676,7 +677,7 @@ export namespace SessionPrompt {
|
|
|
"tool.execute.before",
|
|
|
{
|
|
|
tool: key,
|
|
|
- sessionID: input.sessionID,
|
|
|
+ sessionID: input.session.id,
|
|
|
callID: opts.toolCallId,
|
|
|
},
|
|
|
{
|
|
|
@@ -689,7 +690,7 @@ export namespace SessionPrompt {
|
|
|
"tool.execute.after",
|
|
|
{
|
|
|
tool: key,
|
|
|
- sessionID: input.sessionID,
|
|
|
+ sessionID: input.session.id,
|
|
|
callID: opts.toolCallId,
|
|
|
},
|
|
|
result,
|
|
|
@@ -704,7 +705,7 @@ export namespace SessionPrompt {
|
|
|
} else if (contentItem.type === "image") {
|
|
|
attachments.push({
|
|
|
id: Identifier.ascending("part"),
|
|
|
- sessionID: input.sessionID,
|
|
|
+ sessionID: input.session.id,
|
|
|
messageID: input.processor.message.id,
|
|
|
type: "file",
|
|
|
mime: contentItem.mimeType,
|