feat(ui): support question tool requests
Add question queue hydration, inline answering UI, and unify pending requests with permissions.
This commit is contained in:
@@ -58,8 +58,8 @@ type InstanceIndicatorCounts = {
|
||||
|
||||
const [instanceIndicatorCounts, setInstanceIndicatorCounts] = createSignal<Map<string, InstanceIndicatorCounts>>(new Map())
|
||||
|
||||
function getIndicatorBucket(session: Pick<Session, "status" | "pendingPermission">): InstanceSessionIndicatorStatus | "idle" {
|
||||
if (session.pendingPermission) {
|
||||
function getIndicatorBucket(session: Pick<Session, "status" | "pendingPermission" | "pendingQuestion">): InstanceSessionIndicatorStatus | "idle" {
|
||||
if (session.pendingPermission || session.pendingQuestion) {
|
||||
return "permission"
|
||||
}
|
||||
const status = session.status ?? "idle"
|
||||
@@ -126,7 +126,7 @@ function recomputeIndicatorCounts(instanceId: string, instanceSessions: Map<stri
|
||||
let compacting = 0
|
||||
|
||||
for (const session of instanceSessions.values()) {
|
||||
if (session.pendingPermission) {
|
||||
if (session.pendingPermission || session.pendingQuestion) {
|
||||
permission += 1
|
||||
continue
|
||||
}
|
||||
@@ -305,6 +305,13 @@ function setSessionPendingPermission(instanceId: string, sessionId: string, pend
|
||||
})
|
||||
}
|
||||
|
||||
function setSessionPendingQuestion(instanceId: string, sessionId: string, pending: boolean): void {
|
||||
withSession(instanceId, sessionId, (session) => {
|
||||
if (session.pendingQuestion === pending) return false
|
||||
session.pendingQuestion = pending
|
||||
})
|
||||
}
|
||||
|
||||
function setActiveSession(instanceId: string, sessionId: string): void {
|
||||
setActiveSessionId((prev) => {
|
||||
const next = new Map(prev)
|
||||
@@ -660,6 +667,7 @@ export {
|
||||
pruneDraftPrompts,
|
||||
withSession,
|
||||
setSessionPendingPermission,
|
||||
setSessionPendingQuestion,
|
||||
setSessionStatus,
|
||||
setActiveSession,
|
||||
|
||||
|
||||
Reference in New Issue
Block a user