|
@@ -74,13 +74,22 @@ export namespace SessionPrompt {
|
|
|
callback: (input: MessageV2.WithParts) => void
|
|
callback: (input: MessageV2.WithParts) => void
|
|
|
}[]
|
|
}[]
|
|
|
>()
|
|
>()
|
|
|
|
|
+ const pending = new Set<Promise<void>>()
|
|
|
|
|
+
|
|
|
|
|
+ const track = (promise: Promise<void>) => {
|
|
|
|
|
+ pending.add(promise)
|
|
|
|
|
+ promise.finally(() => pending.delete(promise))
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
return {
|
|
return {
|
|
|
queued,
|
|
queued,
|
|
|
|
|
+ pending,
|
|
|
|
|
+ track,
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
async (current) => {
|
|
async (current) => {
|
|
|
current.queued.clear()
|
|
current.queued.clear()
|
|
|
|
|
+ await Promise.allSettled([...current.pending])
|
|
|
},
|
|
},
|
|
|
)
|
|
)
|
|
|
|
|
|
|
@@ -191,28 +200,6 @@ export namespace SessionPrompt {
|
|
|
processor,
|
|
processor,
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
- // const permUnsub = (() => {
|
|
|
|
|
- // const handled = new Set<string>()
|
|
|
|
|
- // const options = [
|
|
|
|
|
- // { optionId: "allow_once", kind: "allow_once", name: "Allow once" },
|
|
|
|
|
- // { optionId: "allow_always", kind: "allow_always", name: "Always allow" },
|
|
|
|
|
- // { optionId: "reject_once", kind: "reject_once", name: "Reject" },
|
|
|
|
|
- // ]
|
|
|
|
|
- // return Bus.subscribe(Permission.Event.Updated, async (event) => {
|
|
|
|
|
- // const info = event.properties
|
|
|
|
|
- // if (info.sessionID !== input.sessionID) return
|
|
|
|
|
- // if (handled.has(info.id)) return
|
|
|
|
|
- // handled.add(info.id)
|
|
|
|
|
- // const toolCallId = info.callID ?? info.id
|
|
|
|
|
- // const metadata = info.metadata ?? {}
|
|
|
|
|
- // // TODO: emit permission event to bus for ACP to handle
|
|
|
|
|
- // Permission.respond({ sessionID: info.sessionID, permissionID: info.id, response: "reject" })
|
|
|
|
|
- // })
|
|
|
|
|
- // })()
|
|
|
|
|
- // await using _permSub = defer(() => {
|
|
|
|
|
- // permUnsub?.()
|
|
|
|
|
- // })
|
|
|
|
|
-
|
|
|
|
|
const params = await Plugin.trigger(
|
|
const params = await Plugin.trigger(
|
|
|
"chat.params",
|
|
"chat.params",
|
|
|
{
|
|
{
|
|
@@ -247,13 +234,15 @@ export namespace SessionPrompt {
|
|
|
step++
|
|
step++
|
|
|
await processor.next(msgs.findLast((m) => m.info.role === "user")?.info.id!)
|
|
await processor.next(msgs.findLast((m) => m.info.role === "user")?.info.id!)
|
|
|
if (step === 1) {
|
|
if (step === 1) {
|
|
|
- ensureTitle({
|
|
|
|
|
- session,
|
|
|
|
|
- history: msgs,
|
|
|
|
|
- message: userMsg,
|
|
|
|
|
- providerID: model.providerID,
|
|
|
|
|
- modelID: model.info.id,
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ state().track(
|
|
|
|
|
+ ensureTitle({
|
|
|
|
|
+ session,
|
|
|
|
|
+ history: msgs,
|
|
|
|
|
+ message: userMsg,
|
|
|
|
|
+ providerID: model.providerID,
|
|
|
|
|
+ modelID: model.info.id,
|
|
|
|
|
+ }),
|
|
|
|
|
+ )
|
|
|
SessionSummary.summarize({
|
|
SessionSummary.summarize({
|
|
|
sessionID: input.sessionID,
|
|
sessionID: input.sessionID,
|
|
|
messageID: userMsg.info.id,
|
|
messageID: userMsg.info.id,
|
|
@@ -1730,7 +1719,7 @@ export namespace SessionPrompt {
|
|
|
thinkingBudget: 0,
|
|
thinkingBudget: 0,
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- generateText({
|
|
|
|
|
|
|
+ await generateText({
|
|
|
maxOutputTokens: small.info.reasoning ? 1500 : 20,
|
|
maxOutputTokens: small.info.reasoning ? 1500 : 20,
|
|
|
providerOptions: ProviderTransform.providerOptions(small.npm, small.providerID, options),
|
|
providerOptions: ProviderTransform.providerOptions(small.npm, small.providerID, options),
|
|
|
messages: [
|
|
messages: [
|