Render Markdown, add ask_human context, simplify inbox responses, group inbox by task

This commit is contained in:
Ian Gulliver
2026-10-14 10:37:04 -07:00
parent e9fd7de556
commit ca2644374d
25 changed files with 950 additions and 283 deletions
+66 -75
View File
@@ -110,22 +110,22 @@ func (e AttachmentKind) Valid() bool {
// Defines values for InboxItemKind.
const (
InboxItemKindQuestion InboxItemKind = "question"
InboxItemKindRateLimited InboxItemKind = "rate_limited"
InboxItemKindReport InboxItemKind = "report"
InboxItemKindSessionError InboxItemKind = "session_error"
Question InboxItemKind = "question"
RateLimited InboxItemKind = "rate_limited"
Report InboxItemKind = "report"
SessionError InboxItemKind = "session_error"
)
// Valid indicates whether the value is a known member of the InboxItemKind enum.
func (e InboxItemKind) Valid() bool {
switch e {
case InboxItemKindQuestion:
case Question:
return true
case InboxItemKindRateLimited:
case RateLimited:
return true
case InboxItemKindReport:
case Report:
return true
case InboxItemKindSessionError:
case SessionError:
return true
default:
return false
@@ -158,28 +158,22 @@ func (e InboxItemPriority) Valid() bool {
// Defines values for InboxResponseType.
const (
InboxResponseTypeDismiss InboxResponseType = "dismiss"
InboxResponseTypeFreeForm InboxResponseType = "free_form"
InboxResponseTypeOption InboxResponseType = "option"
InboxResponseTypeQuestion InboxResponseType = "question"
InboxResponseTypeRedirect InboxResponseType = "redirect"
InboxResponseTypeSnooze InboxResponseType = "snooze"
Dismiss InboxResponseType = "dismiss"
Option InboxResponseType = "option"
Other InboxResponseType = "other"
Snooze InboxResponseType = "snooze"
)
// Valid indicates whether the value is a known member of the InboxResponseType enum.
func (e InboxResponseType) Valid() bool {
switch e {
case InboxResponseTypeDismiss:
case Dismiss:
return true
case InboxResponseTypeFreeForm:
case Option:
return true
case InboxResponseTypeOption:
case Other:
return true
case InboxResponseTypeQuestion:
return true
case InboxResponseTypeRedirect:
return true
case InboxResponseTypeSnooze:
case Snooze:
return true
default:
return false
@@ -191,7 +185,6 @@ const (
Answered InboxState = "answered"
Dismissed InboxState = "dismissed"
Open InboxState = "open"
Redirected InboxState = "redirected"
Superseded InboxState = "superseded"
)
@@ -204,8 +197,6 @@ func (e InboxState) Valid() bool {
return true
case Open:
return true
case Redirected:
return true
case Superseded:
return true
default:
@@ -308,7 +299,7 @@ type InboxItem struct {
Id string `json:"id"`
Kind InboxItemKind `json:"kind"`
// Payload question: question, why_blocked, options, recommended_option, attachments. report: done, open_questions, next_steps, risks, deviations. session_error: error. rate_limited: vendor, rate_limit (the vendor's rate-limit status), error.
// Payload question: context, question, why_blocked, options, recommended_option, attachments. report: done, next_steps, risks, deviations. session_error: error. rate_limited: vendor, rate_limit (the vendor's rate-limit status), error.
Payload map[string]interface{} `json:"payload"`
Priority InboxItemPriority `json:"priority"`
ProjectId string `json:"project_id"`
@@ -357,7 +348,7 @@ type InboxResponseCreate struct {
// SnoozeUntil snooze: when the item reappears.
SnoozeUntil *time.Time `json:"snooze_until,omitempty"`
// Text Required for free_form, redirect, question; an optional note on option.
// Text other: the text sent to the agent.
Text *string `json:"text,omitempty"`
Type InboxResponseType `json:"type"`
}
@@ -1261,54 +1252,54 @@ func HandlerWithOptions(si ServerInterface, options StdHTTPServerOptions) http.H
// const string: with thousands of chunks the chained `+` fold is several
// times slower for the Go compiler than parsing a slice literal.
var swaggerSpec = []string{
"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",
"L6a82mz+HwAA//8=",
}
// decodeSpec returns the embedded OpenAPI spec as raw JSON bytes,