session.go 60 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158
  1. // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
  2. package opencode
  3. import (
  4. "context"
  5. "errors"
  6. "fmt"
  7. "net/http"
  8. "reflect"
  9. "github.com/sst/opencode-sdk-go/internal/apijson"
  10. "github.com/sst/opencode-sdk-go/internal/param"
  11. "github.com/sst/opencode-sdk-go/internal/requestconfig"
  12. "github.com/sst/opencode-sdk-go/option"
  13. "github.com/sst/opencode-sdk-go/shared"
  14. "github.com/tidwall/gjson"
  15. )
  16. // SessionService contains methods and other services that help with interacting
  17. // with the opencode API.
  18. //
  19. // Note, unlike clients, this service does not read variables from the environment
  20. // automatically. You should not instantiate this service directly, and instead use
  21. // the [NewSessionService] method instead.
  22. type SessionService struct {
  23. Options []option.RequestOption
  24. Permissions *SessionPermissionService
  25. }
  26. // NewSessionService generates a new service that applies the given options to each
  27. // request. These options are applied after the parent client's options (if there
  28. // is one), and before any request-specific options.
  29. func NewSessionService(opts ...option.RequestOption) (r *SessionService) {
  30. r = &SessionService{}
  31. r.Options = opts
  32. r.Permissions = NewSessionPermissionService(opts...)
  33. return
  34. }
  35. // Create a new session
  36. func (r *SessionService) New(ctx context.Context, opts ...option.RequestOption) (res *Session, err error) {
  37. opts = append(r.Options[:], opts...)
  38. path := "session"
  39. err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, nil, &res, opts...)
  40. return
  41. }
  42. // List all sessions
  43. func (r *SessionService) List(ctx context.Context, opts ...option.RequestOption) (res *[]Session, err error) {
  44. opts = append(r.Options[:], opts...)
  45. path := "session"
  46. err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
  47. return
  48. }
  49. // Delete a session and all its data
  50. func (r *SessionService) Delete(ctx context.Context, id string, opts ...option.RequestOption) (res *bool, err error) {
  51. opts = append(r.Options[:], opts...)
  52. if id == "" {
  53. err = errors.New("missing required id parameter")
  54. return
  55. }
  56. path := fmt.Sprintf("session/%s", id)
  57. err = requestconfig.ExecuteNewRequest(ctx, http.MethodDelete, path, nil, &res, opts...)
  58. return
  59. }
  60. // Abort a session
  61. func (r *SessionService) Abort(ctx context.Context, id string, opts ...option.RequestOption) (res *bool, err error) {
  62. opts = append(r.Options[:], opts...)
  63. if id == "" {
  64. err = errors.New("missing required id parameter")
  65. return
  66. }
  67. path := fmt.Sprintf("session/%s/abort", id)
  68. err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, nil, &res, opts...)
  69. return
  70. }
  71. // Create and send a new message to a session
  72. func (r *SessionService) Chat(ctx context.Context, id string, body SessionChatParams, opts ...option.RequestOption) (res *AssistantMessage, err error) {
  73. opts = append(r.Options[:], opts...)
  74. if id == "" {
  75. err = errors.New("missing required id parameter")
  76. return
  77. }
  78. path := fmt.Sprintf("session/%s/message", id)
  79. err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
  80. return
  81. }
  82. // Analyze the app and create an AGENTS.md file
  83. func (r *SessionService) Init(ctx context.Context, id string, body SessionInitParams, opts ...option.RequestOption) (res *bool, err error) {
  84. opts = append(r.Options[:], opts...)
  85. if id == "" {
  86. err = errors.New("missing required id parameter")
  87. return
  88. }
  89. path := fmt.Sprintf("session/%s/init", id)
  90. err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
  91. return
  92. }
  93. // Get a message from a session
  94. func (r *SessionService) Message(ctx context.Context, id string, messageID string, opts ...option.RequestOption) (res *SessionMessageResponse, err error) {
  95. opts = append(r.Options[:], opts...)
  96. if id == "" {
  97. err = errors.New("missing required id parameter")
  98. return
  99. }
  100. if messageID == "" {
  101. err = errors.New("missing required messageID parameter")
  102. return
  103. }
  104. path := fmt.Sprintf("session/%s/message/%s", id, messageID)
  105. err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
  106. return
  107. }
  108. // List messages for a session
  109. func (r *SessionService) Messages(ctx context.Context, id string, opts ...option.RequestOption) (res *[]SessionMessagesResponse, err error) {
  110. opts = append(r.Options[:], opts...)
  111. if id == "" {
  112. err = errors.New("missing required id parameter")
  113. return
  114. }
  115. path := fmt.Sprintf("session/%s/message", id)
  116. err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
  117. return
  118. }
  119. // Revert a message
  120. func (r *SessionService) Revert(ctx context.Context, id string, body SessionRevertParams, opts ...option.RequestOption) (res *Session, err error) {
  121. opts = append(r.Options[:], opts...)
  122. if id == "" {
  123. err = errors.New("missing required id parameter")
  124. return
  125. }
  126. path := fmt.Sprintf("session/%s/revert", id)
  127. err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
  128. return
  129. }
  130. // Share a session
  131. func (r *SessionService) Share(ctx context.Context, id string, opts ...option.RequestOption) (res *Session, err error) {
  132. opts = append(r.Options[:], opts...)
  133. if id == "" {
  134. err = errors.New("missing required id parameter")
  135. return
  136. }
  137. path := fmt.Sprintf("session/%s/share", id)
  138. err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, nil, &res, opts...)
  139. return
  140. }
  141. // Summarize the session
  142. func (r *SessionService) Summarize(ctx context.Context, id string, body SessionSummarizeParams, opts ...option.RequestOption) (res *bool, err error) {
  143. opts = append(r.Options[:], opts...)
  144. if id == "" {
  145. err = errors.New("missing required id parameter")
  146. return
  147. }
  148. path := fmt.Sprintf("session/%s/summarize", id)
  149. err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
  150. return
  151. }
  152. // Restore all reverted messages
  153. func (r *SessionService) Unrevert(ctx context.Context, id string, opts ...option.RequestOption) (res *Session, err error) {
  154. opts = append(r.Options[:], opts...)
  155. if id == "" {
  156. err = errors.New("missing required id parameter")
  157. return
  158. }
  159. path := fmt.Sprintf("session/%s/unrevert", id)
  160. err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, nil, &res, opts...)
  161. return
  162. }
  163. // Unshare the session
  164. func (r *SessionService) Unshare(ctx context.Context, id string, opts ...option.RequestOption) (res *Session, err error) {
  165. opts = append(r.Options[:], opts...)
  166. if id == "" {
  167. err = errors.New("missing required id parameter")
  168. return
  169. }
  170. path := fmt.Sprintf("session/%s/share", id)
  171. err = requestconfig.ExecuteNewRequest(ctx, http.MethodDelete, path, nil, &res, opts...)
  172. return
  173. }
  174. type AssistantMessage struct {
  175. ID string `json:"id,required"`
  176. Cost float64 `json:"cost,required"`
  177. Mode string `json:"mode,required"`
  178. ModelID string `json:"modelID,required"`
  179. Path AssistantMessagePath `json:"path,required"`
  180. ProviderID string `json:"providerID,required"`
  181. Role AssistantMessageRole `json:"role,required"`
  182. SessionID string `json:"sessionID,required"`
  183. System []string `json:"system,required"`
  184. Time AssistantMessageTime `json:"time,required"`
  185. Tokens AssistantMessageTokens `json:"tokens,required"`
  186. Error AssistantMessageError `json:"error"`
  187. Summary bool `json:"summary"`
  188. JSON assistantMessageJSON `json:"-"`
  189. }
  190. // assistantMessageJSON contains the JSON metadata for the struct
  191. // [AssistantMessage]
  192. type assistantMessageJSON struct {
  193. ID apijson.Field
  194. Cost apijson.Field
  195. Mode apijson.Field
  196. ModelID apijson.Field
  197. Path apijson.Field
  198. ProviderID apijson.Field
  199. Role apijson.Field
  200. SessionID apijson.Field
  201. System apijson.Field
  202. Time apijson.Field
  203. Tokens apijson.Field
  204. Error apijson.Field
  205. Summary apijson.Field
  206. raw string
  207. ExtraFields map[string]apijson.Field
  208. }
  209. func (r *AssistantMessage) UnmarshalJSON(data []byte) (err error) {
  210. return apijson.UnmarshalRoot(data, r)
  211. }
  212. func (r assistantMessageJSON) RawJSON() string {
  213. return r.raw
  214. }
  215. func (r AssistantMessage) implementsMessage() {}
  216. type AssistantMessagePath struct {
  217. Cwd string `json:"cwd,required"`
  218. Root string `json:"root,required"`
  219. JSON assistantMessagePathJSON `json:"-"`
  220. }
  221. // assistantMessagePathJSON contains the JSON metadata for the struct
  222. // [AssistantMessagePath]
  223. type assistantMessagePathJSON struct {
  224. Cwd apijson.Field
  225. Root apijson.Field
  226. raw string
  227. ExtraFields map[string]apijson.Field
  228. }
  229. func (r *AssistantMessagePath) UnmarshalJSON(data []byte) (err error) {
  230. return apijson.UnmarshalRoot(data, r)
  231. }
  232. func (r assistantMessagePathJSON) RawJSON() string {
  233. return r.raw
  234. }
  235. type AssistantMessageRole string
  236. const (
  237. AssistantMessageRoleAssistant AssistantMessageRole = "assistant"
  238. )
  239. func (r AssistantMessageRole) IsKnown() bool {
  240. switch r {
  241. case AssistantMessageRoleAssistant:
  242. return true
  243. }
  244. return false
  245. }
  246. type AssistantMessageTime struct {
  247. Created float64 `json:"created,required"`
  248. Completed float64 `json:"completed"`
  249. JSON assistantMessageTimeJSON `json:"-"`
  250. }
  251. // assistantMessageTimeJSON contains the JSON metadata for the struct
  252. // [AssistantMessageTime]
  253. type assistantMessageTimeJSON struct {
  254. Created apijson.Field
  255. Completed apijson.Field
  256. raw string
  257. ExtraFields map[string]apijson.Field
  258. }
  259. func (r *AssistantMessageTime) UnmarshalJSON(data []byte) (err error) {
  260. return apijson.UnmarshalRoot(data, r)
  261. }
  262. func (r assistantMessageTimeJSON) RawJSON() string {
  263. return r.raw
  264. }
  265. type AssistantMessageTokens struct {
  266. Cache AssistantMessageTokensCache `json:"cache,required"`
  267. Input float64 `json:"input,required"`
  268. Output float64 `json:"output,required"`
  269. Reasoning float64 `json:"reasoning,required"`
  270. JSON assistantMessageTokensJSON `json:"-"`
  271. }
  272. // assistantMessageTokensJSON contains the JSON metadata for the struct
  273. // [AssistantMessageTokens]
  274. type assistantMessageTokensJSON struct {
  275. Cache apijson.Field
  276. Input apijson.Field
  277. Output apijson.Field
  278. Reasoning apijson.Field
  279. raw string
  280. ExtraFields map[string]apijson.Field
  281. }
  282. func (r *AssistantMessageTokens) UnmarshalJSON(data []byte) (err error) {
  283. return apijson.UnmarshalRoot(data, r)
  284. }
  285. func (r assistantMessageTokensJSON) RawJSON() string {
  286. return r.raw
  287. }
  288. type AssistantMessageTokensCache struct {
  289. Read float64 `json:"read,required"`
  290. Write float64 `json:"write,required"`
  291. JSON assistantMessageTokensCacheJSON `json:"-"`
  292. }
  293. // assistantMessageTokensCacheJSON contains the JSON metadata for the struct
  294. // [AssistantMessageTokensCache]
  295. type assistantMessageTokensCacheJSON struct {
  296. Read apijson.Field
  297. Write apijson.Field
  298. raw string
  299. ExtraFields map[string]apijson.Field
  300. }
  301. func (r *AssistantMessageTokensCache) UnmarshalJSON(data []byte) (err error) {
  302. return apijson.UnmarshalRoot(data, r)
  303. }
  304. func (r assistantMessageTokensCacheJSON) RawJSON() string {
  305. return r.raw
  306. }
  307. type AssistantMessageError struct {
  308. // This field can have the runtime type of [shared.ProviderAuthErrorData],
  309. // [shared.UnknownErrorData], [interface{}].
  310. Data interface{} `json:"data,required"`
  311. Name AssistantMessageErrorName `json:"name,required"`
  312. JSON assistantMessageErrorJSON `json:"-"`
  313. union AssistantMessageErrorUnion
  314. }
  315. // assistantMessageErrorJSON contains the JSON metadata for the struct
  316. // [AssistantMessageError]
  317. type assistantMessageErrorJSON struct {
  318. Data apijson.Field
  319. Name apijson.Field
  320. raw string
  321. ExtraFields map[string]apijson.Field
  322. }
  323. func (r assistantMessageErrorJSON) RawJSON() string {
  324. return r.raw
  325. }
  326. func (r *AssistantMessageError) UnmarshalJSON(data []byte) (err error) {
  327. *r = AssistantMessageError{}
  328. err = apijson.UnmarshalRoot(data, &r.union)
  329. if err != nil {
  330. return err
  331. }
  332. return apijson.Port(r.union, &r)
  333. }
  334. // AsUnion returns a [AssistantMessageErrorUnion] interface which you can cast to
  335. // the specific types for more type safety.
  336. //
  337. // Possible runtime types of the union are [shared.ProviderAuthError],
  338. // [shared.UnknownError], [AssistantMessageErrorMessageOutputLengthError],
  339. // [shared.MessageAbortedError].
  340. func (r AssistantMessageError) AsUnion() AssistantMessageErrorUnion {
  341. return r.union
  342. }
  343. // Union satisfied by [shared.ProviderAuthError], [shared.UnknownError],
  344. // [AssistantMessageErrorMessageOutputLengthError] or [shared.MessageAbortedError].
  345. type AssistantMessageErrorUnion interface {
  346. ImplementsAssistantMessageError()
  347. }
  348. func init() {
  349. apijson.RegisterUnion(
  350. reflect.TypeOf((*AssistantMessageErrorUnion)(nil)).Elem(),
  351. "name",
  352. apijson.UnionVariant{
  353. TypeFilter: gjson.JSON,
  354. Type: reflect.TypeOf(shared.ProviderAuthError{}),
  355. DiscriminatorValue: "ProviderAuthError",
  356. },
  357. apijson.UnionVariant{
  358. TypeFilter: gjson.JSON,
  359. Type: reflect.TypeOf(shared.UnknownError{}),
  360. DiscriminatorValue: "UnknownError",
  361. },
  362. apijson.UnionVariant{
  363. TypeFilter: gjson.JSON,
  364. Type: reflect.TypeOf(AssistantMessageErrorMessageOutputLengthError{}),
  365. DiscriminatorValue: "MessageOutputLengthError",
  366. },
  367. apijson.UnionVariant{
  368. TypeFilter: gjson.JSON,
  369. Type: reflect.TypeOf(shared.MessageAbortedError{}),
  370. DiscriminatorValue: "MessageAbortedError",
  371. },
  372. )
  373. }
  374. type AssistantMessageErrorMessageOutputLengthError struct {
  375. Data interface{} `json:"data,required"`
  376. Name AssistantMessageErrorMessageOutputLengthErrorName `json:"name,required"`
  377. JSON assistantMessageErrorMessageOutputLengthErrorJSON `json:"-"`
  378. }
  379. // assistantMessageErrorMessageOutputLengthErrorJSON contains the JSON metadata for
  380. // the struct [AssistantMessageErrorMessageOutputLengthError]
  381. type assistantMessageErrorMessageOutputLengthErrorJSON struct {
  382. Data apijson.Field
  383. Name apijson.Field
  384. raw string
  385. ExtraFields map[string]apijson.Field
  386. }
  387. func (r *AssistantMessageErrorMessageOutputLengthError) UnmarshalJSON(data []byte) (err error) {
  388. return apijson.UnmarshalRoot(data, r)
  389. }
  390. func (r assistantMessageErrorMessageOutputLengthErrorJSON) RawJSON() string {
  391. return r.raw
  392. }
  393. func (r AssistantMessageErrorMessageOutputLengthError) ImplementsAssistantMessageError() {}
  394. type AssistantMessageErrorMessageOutputLengthErrorName string
  395. const (
  396. AssistantMessageErrorMessageOutputLengthErrorNameMessageOutputLengthError AssistantMessageErrorMessageOutputLengthErrorName = "MessageOutputLengthError"
  397. )
  398. func (r AssistantMessageErrorMessageOutputLengthErrorName) IsKnown() bool {
  399. switch r {
  400. case AssistantMessageErrorMessageOutputLengthErrorNameMessageOutputLengthError:
  401. return true
  402. }
  403. return false
  404. }
  405. type AssistantMessageErrorName string
  406. const (
  407. AssistantMessageErrorNameProviderAuthError AssistantMessageErrorName = "ProviderAuthError"
  408. AssistantMessageErrorNameUnknownError AssistantMessageErrorName = "UnknownError"
  409. AssistantMessageErrorNameMessageOutputLengthError AssistantMessageErrorName = "MessageOutputLengthError"
  410. AssistantMessageErrorNameMessageAbortedError AssistantMessageErrorName = "MessageAbortedError"
  411. )
  412. func (r AssistantMessageErrorName) IsKnown() bool {
  413. switch r {
  414. case AssistantMessageErrorNameProviderAuthError, AssistantMessageErrorNameUnknownError, AssistantMessageErrorNameMessageOutputLengthError, AssistantMessageErrorNameMessageAbortedError:
  415. return true
  416. }
  417. return false
  418. }
  419. type FilePart struct {
  420. ID string `json:"id,required"`
  421. MessageID string `json:"messageID,required"`
  422. Mime string `json:"mime,required"`
  423. SessionID string `json:"sessionID,required"`
  424. Type FilePartType `json:"type,required"`
  425. URL string `json:"url,required"`
  426. Filename string `json:"filename"`
  427. Source FilePartSource `json:"source"`
  428. JSON filePartJSON `json:"-"`
  429. }
  430. // filePartJSON contains the JSON metadata for the struct [FilePart]
  431. type filePartJSON struct {
  432. ID apijson.Field
  433. MessageID apijson.Field
  434. Mime apijson.Field
  435. SessionID apijson.Field
  436. Type apijson.Field
  437. URL apijson.Field
  438. Filename apijson.Field
  439. Source apijson.Field
  440. raw string
  441. ExtraFields map[string]apijson.Field
  442. }
  443. func (r *FilePart) UnmarshalJSON(data []byte) (err error) {
  444. return apijson.UnmarshalRoot(data, r)
  445. }
  446. func (r filePartJSON) RawJSON() string {
  447. return r.raw
  448. }
  449. func (r FilePart) implementsPart() {}
  450. type FilePartType string
  451. const (
  452. FilePartTypeFile FilePartType = "file"
  453. )
  454. func (r FilePartType) IsKnown() bool {
  455. switch r {
  456. case FilePartTypeFile:
  457. return true
  458. }
  459. return false
  460. }
  461. type FilePartInputParam struct {
  462. Mime param.Field[string] `json:"mime,required"`
  463. Type param.Field[FilePartInputType] `json:"type,required"`
  464. URL param.Field[string] `json:"url,required"`
  465. ID param.Field[string] `json:"id"`
  466. Filename param.Field[string] `json:"filename"`
  467. Source param.Field[FilePartSourceUnionParam] `json:"source"`
  468. }
  469. func (r FilePartInputParam) MarshalJSON() (data []byte, err error) {
  470. return apijson.MarshalRoot(r)
  471. }
  472. func (r FilePartInputParam) implementsSessionChatParamsPartUnion() {}
  473. type FilePartInputType string
  474. const (
  475. FilePartInputTypeFile FilePartInputType = "file"
  476. )
  477. func (r FilePartInputType) IsKnown() bool {
  478. switch r {
  479. case FilePartInputTypeFile:
  480. return true
  481. }
  482. return false
  483. }
  484. type FilePartSource struct {
  485. Path string `json:"path,required"`
  486. Text FilePartSourceText `json:"text,required"`
  487. Type FilePartSourceType `json:"type,required"`
  488. Kind int64 `json:"kind"`
  489. Name string `json:"name"`
  490. // This field can have the runtime type of [SymbolSourceRange].
  491. Range interface{} `json:"range"`
  492. JSON filePartSourceJSON `json:"-"`
  493. union FilePartSourceUnion
  494. }
  495. // filePartSourceJSON contains the JSON metadata for the struct [FilePartSource]
  496. type filePartSourceJSON struct {
  497. Path apijson.Field
  498. Text apijson.Field
  499. Type apijson.Field
  500. Kind apijson.Field
  501. Name apijson.Field
  502. Range apijson.Field
  503. raw string
  504. ExtraFields map[string]apijson.Field
  505. }
  506. func (r filePartSourceJSON) RawJSON() string {
  507. return r.raw
  508. }
  509. func (r *FilePartSource) UnmarshalJSON(data []byte) (err error) {
  510. *r = FilePartSource{}
  511. err = apijson.UnmarshalRoot(data, &r.union)
  512. if err != nil {
  513. return err
  514. }
  515. return apijson.Port(r.union, &r)
  516. }
  517. // AsUnion returns a [FilePartSourceUnion] interface which you can cast to the
  518. // specific types for more type safety.
  519. //
  520. // Possible runtime types of the union are [FileSource], [SymbolSource].
  521. func (r FilePartSource) AsUnion() FilePartSourceUnion {
  522. return r.union
  523. }
  524. // Union satisfied by [FileSource] or [SymbolSource].
  525. type FilePartSourceUnion interface {
  526. implementsFilePartSource()
  527. }
  528. func init() {
  529. apijson.RegisterUnion(
  530. reflect.TypeOf((*FilePartSourceUnion)(nil)).Elem(),
  531. "type",
  532. apijson.UnionVariant{
  533. TypeFilter: gjson.JSON,
  534. Type: reflect.TypeOf(FileSource{}),
  535. DiscriminatorValue: "file",
  536. },
  537. apijson.UnionVariant{
  538. TypeFilter: gjson.JSON,
  539. Type: reflect.TypeOf(SymbolSource{}),
  540. DiscriminatorValue: "symbol",
  541. },
  542. )
  543. }
  544. type FilePartSourceType string
  545. const (
  546. FilePartSourceTypeFile FilePartSourceType = "file"
  547. FilePartSourceTypeSymbol FilePartSourceType = "symbol"
  548. )
  549. func (r FilePartSourceType) IsKnown() bool {
  550. switch r {
  551. case FilePartSourceTypeFile, FilePartSourceTypeSymbol:
  552. return true
  553. }
  554. return false
  555. }
  556. type FilePartSourceParam struct {
  557. Path param.Field[string] `json:"path,required"`
  558. Text param.Field[FilePartSourceTextParam] `json:"text,required"`
  559. Type param.Field[FilePartSourceType] `json:"type,required"`
  560. Kind param.Field[int64] `json:"kind"`
  561. Name param.Field[string] `json:"name"`
  562. Range param.Field[interface{}] `json:"range"`
  563. }
  564. func (r FilePartSourceParam) MarshalJSON() (data []byte, err error) {
  565. return apijson.MarshalRoot(r)
  566. }
  567. func (r FilePartSourceParam) implementsFilePartSourceUnionParam() {}
  568. // Satisfied by [FileSourceParam], [SymbolSourceParam], [FilePartSourceParam].
  569. type FilePartSourceUnionParam interface {
  570. implementsFilePartSourceUnionParam()
  571. }
  572. type FilePartSourceText struct {
  573. End int64 `json:"end,required"`
  574. Start int64 `json:"start,required"`
  575. Value string `json:"value,required"`
  576. JSON filePartSourceTextJSON `json:"-"`
  577. }
  578. // filePartSourceTextJSON contains the JSON metadata for the struct
  579. // [FilePartSourceText]
  580. type filePartSourceTextJSON struct {
  581. End apijson.Field
  582. Start apijson.Field
  583. Value apijson.Field
  584. raw string
  585. ExtraFields map[string]apijson.Field
  586. }
  587. func (r *FilePartSourceText) UnmarshalJSON(data []byte) (err error) {
  588. return apijson.UnmarshalRoot(data, r)
  589. }
  590. func (r filePartSourceTextJSON) RawJSON() string {
  591. return r.raw
  592. }
  593. type FilePartSourceTextParam struct {
  594. End param.Field[int64] `json:"end,required"`
  595. Start param.Field[int64] `json:"start,required"`
  596. Value param.Field[string] `json:"value,required"`
  597. }
  598. func (r FilePartSourceTextParam) MarshalJSON() (data []byte, err error) {
  599. return apijson.MarshalRoot(r)
  600. }
  601. type FileSource struct {
  602. Path string `json:"path,required"`
  603. Text FilePartSourceText `json:"text,required"`
  604. Type FileSourceType `json:"type,required"`
  605. JSON fileSourceJSON `json:"-"`
  606. }
  607. // fileSourceJSON contains the JSON metadata for the struct [FileSource]
  608. type fileSourceJSON struct {
  609. Path apijson.Field
  610. Text apijson.Field
  611. Type apijson.Field
  612. raw string
  613. ExtraFields map[string]apijson.Field
  614. }
  615. func (r *FileSource) UnmarshalJSON(data []byte) (err error) {
  616. return apijson.UnmarshalRoot(data, r)
  617. }
  618. func (r fileSourceJSON) RawJSON() string {
  619. return r.raw
  620. }
  621. func (r FileSource) implementsFilePartSource() {}
  622. type FileSourceType string
  623. const (
  624. FileSourceTypeFile FileSourceType = "file"
  625. )
  626. func (r FileSourceType) IsKnown() bool {
  627. switch r {
  628. case FileSourceTypeFile:
  629. return true
  630. }
  631. return false
  632. }
  633. type FileSourceParam struct {
  634. Path param.Field[string] `json:"path,required"`
  635. Text param.Field[FilePartSourceTextParam] `json:"text,required"`
  636. Type param.Field[FileSourceType] `json:"type,required"`
  637. }
  638. func (r FileSourceParam) MarshalJSON() (data []byte, err error) {
  639. return apijson.MarshalRoot(r)
  640. }
  641. func (r FileSourceParam) implementsFilePartSourceUnionParam() {}
  642. type Message struct {
  643. ID string `json:"id,required"`
  644. Role MessageRole `json:"role,required"`
  645. SessionID string `json:"sessionID,required"`
  646. // This field can have the runtime type of [UserMessageTime],
  647. // [AssistantMessageTime].
  648. Time interface{} `json:"time,required"`
  649. Cost float64 `json:"cost"`
  650. // This field can have the runtime type of [AssistantMessageError].
  651. Error interface{} `json:"error"`
  652. Mode string `json:"mode"`
  653. ModelID string `json:"modelID"`
  654. // This field can have the runtime type of [AssistantMessagePath].
  655. Path interface{} `json:"path"`
  656. ProviderID string `json:"providerID"`
  657. Summary bool `json:"summary"`
  658. // This field can have the runtime type of [[]string].
  659. System interface{} `json:"system"`
  660. // This field can have the runtime type of [AssistantMessageTokens].
  661. Tokens interface{} `json:"tokens"`
  662. JSON messageJSON `json:"-"`
  663. union MessageUnion
  664. }
  665. // messageJSON contains the JSON metadata for the struct [Message]
  666. type messageJSON struct {
  667. ID apijson.Field
  668. Role apijson.Field
  669. SessionID apijson.Field
  670. Time apijson.Field
  671. Cost apijson.Field
  672. Error apijson.Field
  673. Mode apijson.Field
  674. ModelID apijson.Field
  675. Path apijson.Field
  676. ProviderID apijson.Field
  677. Summary apijson.Field
  678. System apijson.Field
  679. Tokens apijson.Field
  680. raw string
  681. ExtraFields map[string]apijson.Field
  682. }
  683. func (r messageJSON) RawJSON() string {
  684. return r.raw
  685. }
  686. func (r *Message) UnmarshalJSON(data []byte) (err error) {
  687. *r = Message{}
  688. err = apijson.UnmarshalRoot(data, &r.union)
  689. if err != nil {
  690. return err
  691. }
  692. return apijson.Port(r.union, &r)
  693. }
  694. // AsUnion returns a [MessageUnion] interface which you can cast to the specific
  695. // types for more type safety.
  696. //
  697. // Possible runtime types of the union are [UserMessage], [AssistantMessage].
  698. func (r Message) AsUnion() MessageUnion {
  699. return r.union
  700. }
  701. // Union satisfied by [UserMessage] or [AssistantMessage].
  702. type MessageUnion interface {
  703. implementsMessage()
  704. }
  705. func init() {
  706. apijson.RegisterUnion(
  707. reflect.TypeOf((*MessageUnion)(nil)).Elem(),
  708. "role",
  709. apijson.UnionVariant{
  710. TypeFilter: gjson.JSON,
  711. Type: reflect.TypeOf(UserMessage{}),
  712. DiscriminatorValue: "user",
  713. },
  714. apijson.UnionVariant{
  715. TypeFilter: gjson.JSON,
  716. Type: reflect.TypeOf(AssistantMessage{}),
  717. DiscriminatorValue: "assistant",
  718. },
  719. )
  720. }
  721. type MessageRole string
  722. const (
  723. MessageRoleUser MessageRole = "user"
  724. MessageRoleAssistant MessageRole = "assistant"
  725. )
  726. func (r MessageRole) IsKnown() bool {
  727. switch r {
  728. case MessageRoleUser, MessageRoleAssistant:
  729. return true
  730. }
  731. return false
  732. }
  733. type Part struct {
  734. ID string `json:"id,required"`
  735. MessageID string `json:"messageID,required"`
  736. SessionID string `json:"sessionID,required"`
  737. Type PartType `json:"type,required"`
  738. CallID string `json:"callID"`
  739. Cost float64 `json:"cost"`
  740. Filename string `json:"filename"`
  741. // This field can have the runtime type of [[]string].
  742. Files interface{} `json:"files"`
  743. Hash string `json:"hash"`
  744. Mime string `json:"mime"`
  745. Snapshot string `json:"snapshot"`
  746. Source FilePartSource `json:"source"`
  747. // This field can have the runtime type of [ToolPartState].
  748. State interface{} `json:"state"`
  749. Synthetic bool `json:"synthetic"`
  750. Text string `json:"text"`
  751. // This field can have the runtime type of [TextPartTime].
  752. Time interface{} `json:"time"`
  753. // This field can have the runtime type of [StepFinishPartTokens].
  754. Tokens interface{} `json:"tokens"`
  755. Tool string `json:"tool"`
  756. URL string `json:"url"`
  757. JSON partJSON `json:"-"`
  758. union PartUnion
  759. }
  760. // partJSON contains the JSON metadata for the struct [Part]
  761. type partJSON struct {
  762. ID apijson.Field
  763. MessageID apijson.Field
  764. SessionID apijson.Field
  765. Type apijson.Field
  766. CallID apijson.Field
  767. Cost apijson.Field
  768. Filename apijson.Field
  769. Files apijson.Field
  770. Hash apijson.Field
  771. Mime apijson.Field
  772. Snapshot apijson.Field
  773. Source apijson.Field
  774. State apijson.Field
  775. Synthetic apijson.Field
  776. Text apijson.Field
  777. Time apijson.Field
  778. Tokens apijson.Field
  779. Tool apijson.Field
  780. URL apijson.Field
  781. raw string
  782. ExtraFields map[string]apijson.Field
  783. }
  784. func (r partJSON) RawJSON() string {
  785. return r.raw
  786. }
  787. func (r *Part) UnmarshalJSON(data []byte) (err error) {
  788. *r = Part{}
  789. err = apijson.UnmarshalRoot(data, &r.union)
  790. if err != nil {
  791. return err
  792. }
  793. return apijson.Port(r.union, &r)
  794. }
  795. // AsUnion returns a [PartUnion] interface which you can cast to the specific types
  796. // for more type safety.
  797. //
  798. // Possible runtime types of the union are [TextPart], [FilePart], [ToolPart],
  799. // [StepStartPart], [StepFinishPart], [SnapshotPart], [PartPatchPart].
  800. func (r Part) AsUnion() PartUnion {
  801. return r.union
  802. }
  803. // Union satisfied by [TextPart], [FilePart], [ToolPart], [StepStartPart],
  804. // [StepFinishPart], [SnapshotPart] or [PartPatchPart].
  805. type PartUnion interface {
  806. implementsPart()
  807. }
  808. func init() {
  809. apijson.RegisterUnion(
  810. reflect.TypeOf((*PartUnion)(nil)).Elem(),
  811. "type",
  812. apijson.UnionVariant{
  813. TypeFilter: gjson.JSON,
  814. Type: reflect.TypeOf(TextPart{}),
  815. DiscriminatorValue: "text",
  816. },
  817. apijson.UnionVariant{
  818. TypeFilter: gjson.JSON,
  819. Type: reflect.TypeOf(FilePart{}),
  820. DiscriminatorValue: "file",
  821. },
  822. apijson.UnionVariant{
  823. TypeFilter: gjson.JSON,
  824. Type: reflect.TypeOf(ToolPart{}),
  825. DiscriminatorValue: "tool",
  826. },
  827. apijson.UnionVariant{
  828. TypeFilter: gjson.JSON,
  829. Type: reflect.TypeOf(StepStartPart{}),
  830. DiscriminatorValue: "step-start",
  831. },
  832. apijson.UnionVariant{
  833. TypeFilter: gjson.JSON,
  834. Type: reflect.TypeOf(StepFinishPart{}),
  835. DiscriminatorValue: "step-finish",
  836. },
  837. apijson.UnionVariant{
  838. TypeFilter: gjson.JSON,
  839. Type: reflect.TypeOf(SnapshotPart{}),
  840. DiscriminatorValue: "snapshot",
  841. },
  842. apijson.UnionVariant{
  843. TypeFilter: gjson.JSON,
  844. Type: reflect.TypeOf(PartPatchPart{}),
  845. DiscriminatorValue: "patch",
  846. },
  847. )
  848. }
  849. type PartPatchPart struct {
  850. ID string `json:"id,required"`
  851. Files []string `json:"files,required"`
  852. Hash string `json:"hash,required"`
  853. MessageID string `json:"messageID,required"`
  854. SessionID string `json:"sessionID,required"`
  855. Type PartPatchPartType `json:"type,required"`
  856. JSON partPatchPartJSON `json:"-"`
  857. }
  858. // partPatchPartJSON contains the JSON metadata for the struct [PartPatchPart]
  859. type partPatchPartJSON struct {
  860. ID apijson.Field
  861. Files apijson.Field
  862. Hash apijson.Field
  863. MessageID apijson.Field
  864. SessionID apijson.Field
  865. Type apijson.Field
  866. raw string
  867. ExtraFields map[string]apijson.Field
  868. }
  869. func (r *PartPatchPart) UnmarshalJSON(data []byte) (err error) {
  870. return apijson.UnmarshalRoot(data, r)
  871. }
  872. func (r partPatchPartJSON) RawJSON() string {
  873. return r.raw
  874. }
  875. func (r PartPatchPart) implementsPart() {}
  876. type PartPatchPartType string
  877. const (
  878. PartPatchPartTypePatch PartPatchPartType = "patch"
  879. )
  880. func (r PartPatchPartType) IsKnown() bool {
  881. switch r {
  882. case PartPatchPartTypePatch:
  883. return true
  884. }
  885. return false
  886. }
  887. type PartType string
  888. const (
  889. PartTypeText PartType = "text"
  890. PartTypeFile PartType = "file"
  891. PartTypeTool PartType = "tool"
  892. PartTypeStepStart PartType = "step-start"
  893. PartTypeStepFinish PartType = "step-finish"
  894. PartTypeSnapshot PartType = "snapshot"
  895. PartTypePatch PartType = "patch"
  896. )
  897. func (r PartType) IsKnown() bool {
  898. switch r {
  899. case PartTypeText, PartTypeFile, PartTypeTool, PartTypeStepStart, PartTypeStepFinish, PartTypeSnapshot, PartTypePatch:
  900. return true
  901. }
  902. return false
  903. }
  904. type Session struct {
  905. ID string `json:"id,required"`
  906. Time SessionTime `json:"time,required"`
  907. Title string `json:"title,required"`
  908. Version string `json:"version,required"`
  909. ParentID string `json:"parentID"`
  910. Revert SessionRevert `json:"revert"`
  911. Share SessionShare `json:"share"`
  912. JSON sessionJSON `json:"-"`
  913. }
  914. // sessionJSON contains the JSON metadata for the struct [Session]
  915. type sessionJSON struct {
  916. ID apijson.Field
  917. Time apijson.Field
  918. Title apijson.Field
  919. Version apijson.Field
  920. ParentID apijson.Field
  921. Revert apijson.Field
  922. Share apijson.Field
  923. raw string
  924. ExtraFields map[string]apijson.Field
  925. }
  926. func (r *Session) UnmarshalJSON(data []byte) (err error) {
  927. return apijson.UnmarshalRoot(data, r)
  928. }
  929. func (r sessionJSON) RawJSON() string {
  930. return r.raw
  931. }
  932. type SessionTime struct {
  933. Created float64 `json:"created,required"`
  934. Updated float64 `json:"updated,required"`
  935. JSON sessionTimeJSON `json:"-"`
  936. }
  937. // sessionTimeJSON contains the JSON metadata for the struct [SessionTime]
  938. type sessionTimeJSON struct {
  939. Created apijson.Field
  940. Updated apijson.Field
  941. raw string
  942. ExtraFields map[string]apijson.Field
  943. }
  944. func (r *SessionTime) UnmarshalJSON(data []byte) (err error) {
  945. return apijson.UnmarshalRoot(data, r)
  946. }
  947. func (r sessionTimeJSON) RawJSON() string {
  948. return r.raw
  949. }
  950. type SessionRevert struct {
  951. MessageID string `json:"messageID,required"`
  952. Diff string `json:"diff"`
  953. PartID string `json:"partID"`
  954. Snapshot string `json:"snapshot"`
  955. JSON sessionRevertJSON `json:"-"`
  956. }
  957. // sessionRevertJSON contains the JSON metadata for the struct [SessionRevert]
  958. type sessionRevertJSON struct {
  959. MessageID apijson.Field
  960. Diff apijson.Field
  961. PartID apijson.Field
  962. Snapshot apijson.Field
  963. raw string
  964. ExtraFields map[string]apijson.Field
  965. }
  966. func (r *SessionRevert) UnmarshalJSON(data []byte) (err error) {
  967. return apijson.UnmarshalRoot(data, r)
  968. }
  969. func (r sessionRevertJSON) RawJSON() string {
  970. return r.raw
  971. }
  972. type SessionShare struct {
  973. URL string `json:"url,required"`
  974. JSON sessionShareJSON `json:"-"`
  975. }
  976. // sessionShareJSON contains the JSON metadata for the struct [SessionShare]
  977. type sessionShareJSON struct {
  978. URL apijson.Field
  979. raw string
  980. ExtraFields map[string]apijson.Field
  981. }
  982. func (r *SessionShare) UnmarshalJSON(data []byte) (err error) {
  983. return apijson.UnmarshalRoot(data, r)
  984. }
  985. func (r sessionShareJSON) RawJSON() string {
  986. return r.raw
  987. }
  988. type SnapshotPart struct {
  989. ID string `json:"id,required"`
  990. MessageID string `json:"messageID,required"`
  991. SessionID string `json:"sessionID,required"`
  992. Snapshot string `json:"snapshot,required"`
  993. Type SnapshotPartType `json:"type,required"`
  994. JSON snapshotPartJSON `json:"-"`
  995. }
  996. // snapshotPartJSON contains the JSON metadata for the struct [SnapshotPart]
  997. type snapshotPartJSON struct {
  998. ID apijson.Field
  999. MessageID apijson.Field
  1000. SessionID apijson.Field
  1001. Snapshot apijson.Field
  1002. Type apijson.Field
  1003. raw string
  1004. ExtraFields map[string]apijson.Field
  1005. }
  1006. func (r *SnapshotPart) UnmarshalJSON(data []byte) (err error) {
  1007. return apijson.UnmarshalRoot(data, r)
  1008. }
  1009. func (r snapshotPartJSON) RawJSON() string {
  1010. return r.raw
  1011. }
  1012. func (r SnapshotPart) implementsPart() {}
  1013. type SnapshotPartType string
  1014. const (
  1015. SnapshotPartTypeSnapshot SnapshotPartType = "snapshot"
  1016. )
  1017. func (r SnapshotPartType) IsKnown() bool {
  1018. switch r {
  1019. case SnapshotPartTypeSnapshot:
  1020. return true
  1021. }
  1022. return false
  1023. }
  1024. type StepFinishPart struct {
  1025. ID string `json:"id,required"`
  1026. Cost float64 `json:"cost,required"`
  1027. MessageID string `json:"messageID,required"`
  1028. SessionID string `json:"sessionID,required"`
  1029. Tokens StepFinishPartTokens `json:"tokens,required"`
  1030. Type StepFinishPartType `json:"type,required"`
  1031. JSON stepFinishPartJSON `json:"-"`
  1032. }
  1033. // stepFinishPartJSON contains the JSON metadata for the struct [StepFinishPart]
  1034. type stepFinishPartJSON struct {
  1035. ID apijson.Field
  1036. Cost apijson.Field
  1037. MessageID apijson.Field
  1038. SessionID apijson.Field
  1039. Tokens apijson.Field
  1040. Type apijson.Field
  1041. raw string
  1042. ExtraFields map[string]apijson.Field
  1043. }
  1044. func (r *StepFinishPart) UnmarshalJSON(data []byte) (err error) {
  1045. return apijson.UnmarshalRoot(data, r)
  1046. }
  1047. func (r stepFinishPartJSON) RawJSON() string {
  1048. return r.raw
  1049. }
  1050. func (r StepFinishPart) implementsPart() {}
  1051. type StepFinishPartTokens struct {
  1052. Cache StepFinishPartTokensCache `json:"cache,required"`
  1053. Input float64 `json:"input,required"`
  1054. Output float64 `json:"output,required"`
  1055. Reasoning float64 `json:"reasoning,required"`
  1056. JSON stepFinishPartTokensJSON `json:"-"`
  1057. }
  1058. // stepFinishPartTokensJSON contains the JSON metadata for the struct
  1059. // [StepFinishPartTokens]
  1060. type stepFinishPartTokensJSON struct {
  1061. Cache apijson.Field
  1062. Input apijson.Field
  1063. Output apijson.Field
  1064. Reasoning apijson.Field
  1065. raw string
  1066. ExtraFields map[string]apijson.Field
  1067. }
  1068. func (r *StepFinishPartTokens) UnmarshalJSON(data []byte) (err error) {
  1069. return apijson.UnmarshalRoot(data, r)
  1070. }
  1071. func (r stepFinishPartTokensJSON) RawJSON() string {
  1072. return r.raw
  1073. }
  1074. type StepFinishPartTokensCache struct {
  1075. Read float64 `json:"read,required"`
  1076. Write float64 `json:"write,required"`
  1077. JSON stepFinishPartTokensCacheJSON `json:"-"`
  1078. }
  1079. // stepFinishPartTokensCacheJSON contains the JSON metadata for the struct
  1080. // [StepFinishPartTokensCache]
  1081. type stepFinishPartTokensCacheJSON struct {
  1082. Read apijson.Field
  1083. Write apijson.Field
  1084. raw string
  1085. ExtraFields map[string]apijson.Field
  1086. }
  1087. func (r *StepFinishPartTokensCache) UnmarshalJSON(data []byte) (err error) {
  1088. return apijson.UnmarshalRoot(data, r)
  1089. }
  1090. func (r stepFinishPartTokensCacheJSON) RawJSON() string {
  1091. return r.raw
  1092. }
  1093. type StepFinishPartType string
  1094. const (
  1095. StepFinishPartTypeStepFinish StepFinishPartType = "step-finish"
  1096. )
  1097. func (r StepFinishPartType) IsKnown() bool {
  1098. switch r {
  1099. case StepFinishPartTypeStepFinish:
  1100. return true
  1101. }
  1102. return false
  1103. }
  1104. type StepStartPart struct {
  1105. ID string `json:"id,required"`
  1106. MessageID string `json:"messageID,required"`
  1107. SessionID string `json:"sessionID,required"`
  1108. Type StepStartPartType `json:"type,required"`
  1109. JSON stepStartPartJSON `json:"-"`
  1110. }
  1111. // stepStartPartJSON contains the JSON metadata for the struct [StepStartPart]
  1112. type stepStartPartJSON struct {
  1113. ID apijson.Field
  1114. MessageID apijson.Field
  1115. SessionID apijson.Field
  1116. Type apijson.Field
  1117. raw string
  1118. ExtraFields map[string]apijson.Field
  1119. }
  1120. func (r *StepStartPart) UnmarshalJSON(data []byte) (err error) {
  1121. return apijson.UnmarshalRoot(data, r)
  1122. }
  1123. func (r stepStartPartJSON) RawJSON() string {
  1124. return r.raw
  1125. }
  1126. func (r StepStartPart) implementsPart() {}
  1127. type StepStartPartType string
  1128. const (
  1129. StepStartPartTypeStepStart StepStartPartType = "step-start"
  1130. )
  1131. func (r StepStartPartType) IsKnown() bool {
  1132. switch r {
  1133. case StepStartPartTypeStepStart:
  1134. return true
  1135. }
  1136. return false
  1137. }
  1138. type SymbolSource struct {
  1139. Kind int64 `json:"kind,required"`
  1140. Name string `json:"name,required"`
  1141. Path string `json:"path,required"`
  1142. Range SymbolSourceRange `json:"range,required"`
  1143. Text FilePartSourceText `json:"text,required"`
  1144. Type SymbolSourceType `json:"type,required"`
  1145. JSON symbolSourceJSON `json:"-"`
  1146. }
  1147. // symbolSourceJSON contains the JSON metadata for the struct [SymbolSource]
  1148. type symbolSourceJSON struct {
  1149. Kind apijson.Field
  1150. Name apijson.Field
  1151. Path apijson.Field
  1152. Range apijson.Field
  1153. Text apijson.Field
  1154. Type apijson.Field
  1155. raw string
  1156. ExtraFields map[string]apijson.Field
  1157. }
  1158. func (r *SymbolSource) UnmarshalJSON(data []byte) (err error) {
  1159. return apijson.UnmarshalRoot(data, r)
  1160. }
  1161. func (r symbolSourceJSON) RawJSON() string {
  1162. return r.raw
  1163. }
  1164. func (r SymbolSource) implementsFilePartSource() {}
  1165. type SymbolSourceRange struct {
  1166. End SymbolSourceRangeEnd `json:"end,required"`
  1167. Start SymbolSourceRangeStart `json:"start,required"`
  1168. JSON symbolSourceRangeJSON `json:"-"`
  1169. }
  1170. // symbolSourceRangeJSON contains the JSON metadata for the struct
  1171. // [SymbolSourceRange]
  1172. type symbolSourceRangeJSON struct {
  1173. End apijson.Field
  1174. Start apijson.Field
  1175. raw string
  1176. ExtraFields map[string]apijson.Field
  1177. }
  1178. func (r *SymbolSourceRange) UnmarshalJSON(data []byte) (err error) {
  1179. return apijson.UnmarshalRoot(data, r)
  1180. }
  1181. func (r symbolSourceRangeJSON) RawJSON() string {
  1182. return r.raw
  1183. }
  1184. type SymbolSourceRangeEnd struct {
  1185. Character float64 `json:"character,required"`
  1186. Line float64 `json:"line,required"`
  1187. JSON symbolSourceRangeEndJSON `json:"-"`
  1188. }
  1189. // symbolSourceRangeEndJSON contains the JSON metadata for the struct
  1190. // [SymbolSourceRangeEnd]
  1191. type symbolSourceRangeEndJSON struct {
  1192. Character apijson.Field
  1193. Line apijson.Field
  1194. raw string
  1195. ExtraFields map[string]apijson.Field
  1196. }
  1197. func (r *SymbolSourceRangeEnd) UnmarshalJSON(data []byte) (err error) {
  1198. return apijson.UnmarshalRoot(data, r)
  1199. }
  1200. func (r symbolSourceRangeEndJSON) RawJSON() string {
  1201. return r.raw
  1202. }
  1203. type SymbolSourceRangeStart struct {
  1204. Character float64 `json:"character,required"`
  1205. Line float64 `json:"line,required"`
  1206. JSON symbolSourceRangeStartJSON `json:"-"`
  1207. }
  1208. // symbolSourceRangeStartJSON contains the JSON metadata for the struct
  1209. // [SymbolSourceRangeStart]
  1210. type symbolSourceRangeStartJSON struct {
  1211. Character apijson.Field
  1212. Line apijson.Field
  1213. raw string
  1214. ExtraFields map[string]apijson.Field
  1215. }
  1216. func (r *SymbolSourceRangeStart) UnmarshalJSON(data []byte) (err error) {
  1217. return apijson.UnmarshalRoot(data, r)
  1218. }
  1219. func (r symbolSourceRangeStartJSON) RawJSON() string {
  1220. return r.raw
  1221. }
  1222. type SymbolSourceType string
  1223. const (
  1224. SymbolSourceTypeSymbol SymbolSourceType = "symbol"
  1225. )
  1226. func (r SymbolSourceType) IsKnown() bool {
  1227. switch r {
  1228. case SymbolSourceTypeSymbol:
  1229. return true
  1230. }
  1231. return false
  1232. }
  1233. type SymbolSourceParam struct {
  1234. Kind param.Field[int64] `json:"kind,required"`
  1235. Name param.Field[string] `json:"name,required"`
  1236. Path param.Field[string] `json:"path,required"`
  1237. Range param.Field[SymbolSourceRangeParam] `json:"range,required"`
  1238. Text param.Field[FilePartSourceTextParam] `json:"text,required"`
  1239. Type param.Field[SymbolSourceType] `json:"type,required"`
  1240. }
  1241. func (r SymbolSourceParam) MarshalJSON() (data []byte, err error) {
  1242. return apijson.MarshalRoot(r)
  1243. }
  1244. func (r SymbolSourceParam) implementsFilePartSourceUnionParam() {}
  1245. type SymbolSourceRangeParam struct {
  1246. End param.Field[SymbolSourceRangeEndParam] `json:"end,required"`
  1247. Start param.Field[SymbolSourceRangeStartParam] `json:"start,required"`
  1248. }
  1249. func (r SymbolSourceRangeParam) MarshalJSON() (data []byte, err error) {
  1250. return apijson.MarshalRoot(r)
  1251. }
  1252. type SymbolSourceRangeEndParam struct {
  1253. Character param.Field[float64] `json:"character,required"`
  1254. Line param.Field[float64] `json:"line,required"`
  1255. }
  1256. func (r SymbolSourceRangeEndParam) MarshalJSON() (data []byte, err error) {
  1257. return apijson.MarshalRoot(r)
  1258. }
  1259. type SymbolSourceRangeStartParam struct {
  1260. Character param.Field[float64] `json:"character,required"`
  1261. Line param.Field[float64] `json:"line,required"`
  1262. }
  1263. func (r SymbolSourceRangeStartParam) MarshalJSON() (data []byte, err error) {
  1264. return apijson.MarshalRoot(r)
  1265. }
  1266. type TextPart struct {
  1267. ID string `json:"id,required"`
  1268. MessageID string `json:"messageID,required"`
  1269. SessionID string `json:"sessionID,required"`
  1270. Text string `json:"text,required"`
  1271. Type TextPartType `json:"type,required"`
  1272. Synthetic bool `json:"synthetic"`
  1273. Time TextPartTime `json:"time"`
  1274. JSON textPartJSON `json:"-"`
  1275. }
  1276. // textPartJSON contains the JSON metadata for the struct [TextPart]
  1277. type textPartJSON struct {
  1278. ID apijson.Field
  1279. MessageID apijson.Field
  1280. SessionID apijson.Field
  1281. Text apijson.Field
  1282. Type apijson.Field
  1283. Synthetic apijson.Field
  1284. Time apijson.Field
  1285. raw string
  1286. ExtraFields map[string]apijson.Field
  1287. }
  1288. func (r *TextPart) UnmarshalJSON(data []byte) (err error) {
  1289. return apijson.UnmarshalRoot(data, r)
  1290. }
  1291. func (r textPartJSON) RawJSON() string {
  1292. return r.raw
  1293. }
  1294. func (r TextPart) implementsPart() {}
  1295. type TextPartType string
  1296. const (
  1297. TextPartTypeText TextPartType = "text"
  1298. )
  1299. func (r TextPartType) IsKnown() bool {
  1300. switch r {
  1301. case TextPartTypeText:
  1302. return true
  1303. }
  1304. return false
  1305. }
  1306. type TextPartTime struct {
  1307. Start float64 `json:"start,required"`
  1308. End float64 `json:"end"`
  1309. JSON textPartTimeJSON `json:"-"`
  1310. }
  1311. // textPartTimeJSON contains the JSON metadata for the struct [TextPartTime]
  1312. type textPartTimeJSON struct {
  1313. Start apijson.Field
  1314. End apijson.Field
  1315. raw string
  1316. ExtraFields map[string]apijson.Field
  1317. }
  1318. func (r *TextPartTime) UnmarshalJSON(data []byte) (err error) {
  1319. return apijson.UnmarshalRoot(data, r)
  1320. }
  1321. func (r textPartTimeJSON) RawJSON() string {
  1322. return r.raw
  1323. }
  1324. type TextPartInputParam struct {
  1325. Text param.Field[string] `json:"text,required"`
  1326. Type param.Field[TextPartInputType] `json:"type,required"`
  1327. ID param.Field[string] `json:"id"`
  1328. Synthetic param.Field[bool] `json:"synthetic"`
  1329. Time param.Field[TextPartInputTimeParam] `json:"time"`
  1330. }
  1331. func (r TextPartInputParam) MarshalJSON() (data []byte, err error) {
  1332. return apijson.MarshalRoot(r)
  1333. }
  1334. func (r TextPartInputParam) implementsSessionChatParamsPartUnion() {}
  1335. type TextPartInputType string
  1336. const (
  1337. TextPartInputTypeText TextPartInputType = "text"
  1338. )
  1339. func (r TextPartInputType) IsKnown() bool {
  1340. switch r {
  1341. case TextPartInputTypeText:
  1342. return true
  1343. }
  1344. return false
  1345. }
  1346. type TextPartInputTimeParam struct {
  1347. Start param.Field[float64] `json:"start,required"`
  1348. End param.Field[float64] `json:"end"`
  1349. }
  1350. func (r TextPartInputTimeParam) MarshalJSON() (data []byte, err error) {
  1351. return apijson.MarshalRoot(r)
  1352. }
  1353. type ToolPart struct {
  1354. ID string `json:"id,required"`
  1355. CallID string `json:"callID,required"`
  1356. MessageID string `json:"messageID,required"`
  1357. SessionID string `json:"sessionID,required"`
  1358. State ToolPartState `json:"state,required"`
  1359. Tool string `json:"tool,required"`
  1360. Type ToolPartType `json:"type,required"`
  1361. JSON toolPartJSON `json:"-"`
  1362. }
  1363. // toolPartJSON contains the JSON metadata for the struct [ToolPart]
  1364. type toolPartJSON struct {
  1365. ID apijson.Field
  1366. CallID apijson.Field
  1367. MessageID apijson.Field
  1368. SessionID apijson.Field
  1369. State apijson.Field
  1370. Tool apijson.Field
  1371. Type apijson.Field
  1372. raw string
  1373. ExtraFields map[string]apijson.Field
  1374. }
  1375. func (r *ToolPart) UnmarshalJSON(data []byte) (err error) {
  1376. return apijson.UnmarshalRoot(data, r)
  1377. }
  1378. func (r toolPartJSON) RawJSON() string {
  1379. return r.raw
  1380. }
  1381. func (r ToolPart) implementsPart() {}
  1382. type ToolPartState struct {
  1383. Status ToolPartStateStatus `json:"status,required"`
  1384. Error string `json:"error"`
  1385. // This field can have the runtime type of [interface{}], [map[string]interface{}].
  1386. Input interface{} `json:"input"`
  1387. // This field can have the runtime type of [map[string]interface{}].
  1388. Metadata interface{} `json:"metadata"`
  1389. Output string `json:"output"`
  1390. // This field can have the runtime type of [ToolStateRunningTime],
  1391. // [ToolStateCompletedTime], [ToolStateErrorTime].
  1392. Time interface{} `json:"time"`
  1393. Title string `json:"title"`
  1394. JSON toolPartStateJSON `json:"-"`
  1395. union ToolPartStateUnion
  1396. }
  1397. // toolPartStateJSON contains the JSON metadata for the struct [ToolPartState]
  1398. type toolPartStateJSON struct {
  1399. Status apijson.Field
  1400. Error apijson.Field
  1401. Input apijson.Field
  1402. Metadata apijson.Field
  1403. Output apijson.Field
  1404. Time apijson.Field
  1405. Title apijson.Field
  1406. raw string
  1407. ExtraFields map[string]apijson.Field
  1408. }
  1409. func (r toolPartStateJSON) RawJSON() string {
  1410. return r.raw
  1411. }
  1412. func (r *ToolPartState) UnmarshalJSON(data []byte) (err error) {
  1413. *r = ToolPartState{}
  1414. err = apijson.UnmarshalRoot(data, &r.union)
  1415. if err != nil {
  1416. return err
  1417. }
  1418. return apijson.Port(r.union, &r)
  1419. }
  1420. // AsUnion returns a [ToolPartStateUnion] interface which you can cast to the
  1421. // specific types for more type safety.
  1422. //
  1423. // Possible runtime types of the union are [ToolStatePending], [ToolStateRunning],
  1424. // [ToolStateCompleted], [ToolStateError].
  1425. func (r ToolPartState) AsUnion() ToolPartStateUnion {
  1426. return r.union
  1427. }
  1428. // Union satisfied by [ToolStatePending], [ToolStateRunning], [ToolStateCompleted]
  1429. // or [ToolStateError].
  1430. type ToolPartStateUnion interface {
  1431. implementsToolPartState()
  1432. }
  1433. func init() {
  1434. apijson.RegisterUnion(
  1435. reflect.TypeOf((*ToolPartStateUnion)(nil)).Elem(),
  1436. "status",
  1437. apijson.UnionVariant{
  1438. TypeFilter: gjson.JSON,
  1439. Type: reflect.TypeOf(ToolStatePending{}),
  1440. DiscriminatorValue: "pending",
  1441. },
  1442. apijson.UnionVariant{
  1443. TypeFilter: gjson.JSON,
  1444. Type: reflect.TypeOf(ToolStateRunning{}),
  1445. DiscriminatorValue: "running",
  1446. },
  1447. apijson.UnionVariant{
  1448. TypeFilter: gjson.JSON,
  1449. Type: reflect.TypeOf(ToolStateCompleted{}),
  1450. DiscriminatorValue: "completed",
  1451. },
  1452. apijson.UnionVariant{
  1453. TypeFilter: gjson.JSON,
  1454. Type: reflect.TypeOf(ToolStateError{}),
  1455. DiscriminatorValue: "error",
  1456. },
  1457. )
  1458. }
  1459. type ToolPartStateStatus string
  1460. const (
  1461. ToolPartStateStatusPending ToolPartStateStatus = "pending"
  1462. ToolPartStateStatusRunning ToolPartStateStatus = "running"
  1463. ToolPartStateStatusCompleted ToolPartStateStatus = "completed"
  1464. ToolPartStateStatusError ToolPartStateStatus = "error"
  1465. )
  1466. func (r ToolPartStateStatus) IsKnown() bool {
  1467. switch r {
  1468. case ToolPartStateStatusPending, ToolPartStateStatusRunning, ToolPartStateStatusCompleted, ToolPartStateStatusError:
  1469. return true
  1470. }
  1471. return false
  1472. }
  1473. type ToolPartType string
  1474. const (
  1475. ToolPartTypeTool ToolPartType = "tool"
  1476. )
  1477. func (r ToolPartType) IsKnown() bool {
  1478. switch r {
  1479. case ToolPartTypeTool:
  1480. return true
  1481. }
  1482. return false
  1483. }
  1484. type ToolStateCompleted struct {
  1485. Input map[string]interface{} `json:"input,required"`
  1486. Metadata map[string]interface{} `json:"metadata,required"`
  1487. Output string `json:"output,required"`
  1488. Status ToolStateCompletedStatus `json:"status,required"`
  1489. Time ToolStateCompletedTime `json:"time,required"`
  1490. Title string `json:"title,required"`
  1491. JSON toolStateCompletedJSON `json:"-"`
  1492. }
  1493. // toolStateCompletedJSON contains the JSON metadata for the struct
  1494. // [ToolStateCompleted]
  1495. type toolStateCompletedJSON struct {
  1496. Input apijson.Field
  1497. Metadata apijson.Field
  1498. Output apijson.Field
  1499. Status apijson.Field
  1500. Time apijson.Field
  1501. Title apijson.Field
  1502. raw string
  1503. ExtraFields map[string]apijson.Field
  1504. }
  1505. func (r *ToolStateCompleted) UnmarshalJSON(data []byte) (err error) {
  1506. return apijson.UnmarshalRoot(data, r)
  1507. }
  1508. func (r toolStateCompletedJSON) RawJSON() string {
  1509. return r.raw
  1510. }
  1511. func (r ToolStateCompleted) implementsToolPartState() {}
  1512. type ToolStateCompletedStatus string
  1513. const (
  1514. ToolStateCompletedStatusCompleted ToolStateCompletedStatus = "completed"
  1515. )
  1516. func (r ToolStateCompletedStatus) IsKnown() bool {
  1517. switch r {
  1518. case ToolStateCompletedStatusCompleted:
  1519. return true
  1520. }
  1521. return false
  1522. }
  1523. type ToolStateCompletedTime struct {
  1524. End float64 `json:"end,required"`
  1525. Start float64 `json:"start,required"`
  1526. JSON toolStateCompletedTimeJSON `json:"-"`
  1527. }
  1528. // toolStateCompletedTimeJSON contains the JSON metadata for the struct
  1529. // [ToolStateCompletedTime]
  1530. type toolStateCompletedTimeJSON struct {
  1531. End apijson.Field
  1532. Start apijson.Field
  1533. raw string
  1534. ExtraFields map[string]apijson.Field
  1535. }
  1536. func (r *ToolStateCompletedTime) UnmarshalJSON(data []byte) (err error) {
  1537. return apijson.UnmarshalRoot(data, r)
  1538. }
  1539. func (r toolStateCompletedTimeJSON) RawJSON() string {
  1540. return r.raw
  1541. }
  1542. type ToolStateError struct {
  1543. Error string `json:"error,required"`
  1544. Input map[string]interface{} `json:"input,required"`
  1545. Status ToolStateErrorStatus `json:"status,required"`
  1546. Time ToolStateErrorTime `json:"time,required"`
  1547. JSON toolStateErrorJSON `json:"-"`
  1548. }
  1549. // toolStateErrorJSON contains the JSON metadata for the struct [ToolStateError]
  1550. type toolStateErrorJSON struct {
  1551. Error apijson.Field
  1552. Input apijson.Field
  1553. Status apijson.Field
  1554. Time apijson.Field
  1555. raw string
  1556. ExtraFields map[string]apijson.Field
  1557. }
  1558. func (r *ToolStateError) UnmarshalJSON(data []byte) (err error) {
  1559. return apijson.UnmarshalRoot(data, r)
  1560. }
  1561. func (r toolStateErrorJSON) RawJSON() string {
  1562. return r.raw
  1563. }
  1564. func (r ToolStateError) implementsToolPartState() {}
  1565. type ToolStateErrorStatus string
  1566. const (
  1567. ToolStateErrorStatusError ToolStateErrorStatus = "error"
  1568. )
  1569. func (r ToolStateErrorStatus) IsKnown() bool {
  1570. switch r {
  1571. case ToolStateErrorStatusError:
  1572. return true
  1573. }
  1574. return false
  1575. }
  1576. type ToolStateErrorTime struct {
  1577. End float64 `json:"end,required"`
  1578. Start float64 `json:"start,required"`
  1579. JSON toolStateErrorTimeJSON `json:"-"`
  1580. }
  1581. // toolStateErrorTimeJSON contains the JSON metadata for the struct
  1582. // [ToolStateErrorTime]
  1583. type toolStateErrorTimeJSON struct {
  1584. End apijson.Field
  1585. Start apijson.Field
  1586. raw string
  1587. ExtraFields map[string]apijson.Field
  1588. }
  1589. func (r *ToolStateErrorTime) UnmarshalJSON(data []byte) (err error) {
  1590. return apijson.UnmarshalRoot(data, r)
  1591. }
  1592. func (r toolStateErrorTimeJSON) RawJSON() string {
  1593. return r.raw
  1594. }
  1595. type ToolStatePending struct {
  1596. Status ToolStatePendingStatus `json:"status,required"`
  1597. JSON toolStatePendingJSON `json:"-"`
  1598. }
  1599. // toolStatePendingJSON contains the JSON metadata for the struct
  1600. // [ToolStatePending]
  1601. type toolStatePendingJSON struct {
  1602. Status apijson.Field
  1603. raw string
  1604. ExtraFields map[string]apijson.Field
  1605. }
  1606. func (r *ToolStatePending) UnmarshalJSON(data []byte) (err error) {
  1607. return apijson.UnmarshalRoot(data, r)
  1608. }
  1609. func (r toolStatePendingJSON) RawJSON() string {
  1610. return r.raw
  1611. }
  1612. func (r ToolStatePending) implementsToolPartState() {}
  1613. type ToolStatePendingStatus string
  1614. const (
  1615. ToolStatePendingStatusPending ToolStatePendingStatus = "pending"
  1616. )
  1617. func (r ToolStatePendingStatus) IsKnown() bool {
  1618. switch r {
  1619. case ToolStatePendingStatusPending:
  1620. return true
  1621. }
  1622. return false
  1623. }
  1624. type ToolStateRunning struct {
  1625. Status ToolStateRunningStatus `json:"status,required"`
  1626. Time ToolStateRunningTime `json:"time,required"`
  1627. Input interface{} `json:"input"`
  1628. Metadata map[string]interface{} `json:"metadata"`
  1629. Title string `json:"title"`
  1630. JSON toolStateRunningJSON `json:"-"`
  1631. }
  1632. // toolStateRunningJSON contains the JSON metadata for the struct
  1633. // [ToolStateRunning]
  1634. type toolStateRunningJSON struct {
  1635. Status apijson.Field
  1636. Time apijson.Field
  1637. Input apijson.Field
  1638. Metadata apijson.Field
  1639. Title apijson.Field
  1640. raw string
  1641. ExtraFields map[string]apijson.Field
  1642. }
  1643. func (r *ToolStateRunning) UnmarshalJSON(data []byte) (err error) {
  1644. return apijson.UnmarshalRoot(data, r)
  1645. }
  1646. func (r toolStateRunningJSON) RawJSON() string {
  1647. return r.raw
  1648. }
  1649. func (r ToolStateRunning) implementsToolPartState() {}
  1650. type ToolStateRunningStatus string
  1651. const (
  1652. ToolStateRunningStatusRunning ToolStateRunningStatus = "running"
  1653. )
  1654. func (r ToolStateRunningStatus) IsKnown() bool {
  1655. switch r {
  1656. case ToolStateRunningStatusRunning:
  1657. return true
  1658. }
  1659. return false
  1660. }
  1661. type ToolStateRunningTime struct {
  1662. Start float64 `json:"start,required"`
  1663. JSON toolStateRunningTimeJSON `json:"-"`
  1664. }
  1665. // toolStateRunningTimeJSON contains the JSON metadata for the struct
  1666. // [ToolStateRunningTime]
  1667. type toolStateRunningTimeJSON struct {
  1668. Start apijson.Field
  1669. raw string
  1670. ExtraFields map[string]apijson.Field
  1671. }
  1672. func (r *ToolStateRunningTime) UnmarshalJSON(data []byte) (err error) {
  1673. return apijson.UnmarshalRoot(data, r)
  1674. }
  1675. func (r toolStateRunningTimeJSON) RawJSON() string {
  1676. return r.raw
  1677. }
  1678. type UserMessage struct {
  1679. ID string `json:"id,required"`
  1680. Role UserMessageRole `json:"role,required"`
  1681. SessionID string `json:"sessionID,required"`
  1682. Time UserMessageTime `json:"time,required"`
  1683. JSON userMessageJSON `json:"-"`
  1684. }
  1685. // userMessageJSON contains the JSON metadata for the struct [UserMessage]
  1686. type userMessageJSON struct {
  1687. ID apijson.Field
  1688. Role apijson.Field
  1689. SessionID apijson.Field
  1690. Time apijson.Field
  1691. raw string
  1692. ExtraFields map[string]apijson.Field
  1693. }
  1694. func (r *UserMessage) UnmarshalJSON(data []byte) (err error) {
  1695. return apijson.UnmarshalRoot(data, r)
  1696. }
  1697. func (r userMessageJSON) RawJSON() string {
  1698. return r.raw
  1699. }
  1700. func (r UserMessage) implementsMessage() {}
  1701. type UserMessageRole string
  1702. const (
  1703. UserMessageRoleUser UserMessageRole = "user"
  1704. )
  1705. func (r UserMessageRole) IsKnown() bool {
  1706. switch r {
  1707. case UserMessageRoleUser:
  1708. return true
  1709. }
  1710. return false
  1711. }
  1712. type UserMessageTime struct {
  1713. Created float64 `json:"created,required"`
  1714. JSON userMessageTimeJSON `json:"-"`
  1715. }
  1716. // userMessageTimeJSON contains the JSON metadata for the struct [UserMessageTime]
  1717. type userMessageTimeJSON struct {
  1718. Created apijson.Field
  1719. raw string
  1720. ExtraFields map[string]apijson.Field
  1721. }
  1722. func (r *UserMessageTime) UnmarshalJSON(data []byte) (err error) {
  1723. return apijson.UnmarshalRoot(data, r)
  1724. }
  1725. func (r userMessageTimeJSON) RawJSON() string {
  1726. return r.raw
  1727. }
  1728. type SessionMessageResponse struct {
  1729. Info Message `json:"info,required"`
  1730. Parts []Part `json:"parts,required"`
  1731. JSON sessionMessageResponseJSON `json:"-"`
  1732. }
  1733. // sessionMessageResponseJSON contains the JSON metadata for the struct
  1734. // [SessionMessageResponse]
  1735. type sessionMessageResponseJSON struct {
  1736. Info apijson.Field
  1737. Parts apijson.Field
  1738. raw string
  1739. ExtraFields map[string]apijson.Field
  1740. }
  1741. func (r *SessionMessageResponse) UnmarshalJSON(data []byte) (err error) {
  1742. return apijson.UnmarshalRoot(data, r)
  1743. }
  1744. func (r sessionMessageResponseJSON) RawJSON() string {
  1745. return r.raw
  1746. }
  1747. type SessionMessagesResponse struct {
  1748. Info Message `json:"info,required"`
  1749. Parts []Part `json:"parts,required"`
  1750. JSON sessionMessagesResponseJSON `json:"-"`
  1751. }
  1752. // sessionMessagesResponseJSON contains the JSON metadata for the struct
  1753. // [SessionMessagesResponse]
  1754. type sessionMessagesResponseJSON struct {
  1755. Info apijson.Field
  1756. Parts apijson.Field
  1757. raw string
  1758. ExtraFields map[string]apijson.Field
  1759. }
  1760. func (r *SessionMessagesResponse) UnmarshalJSON(data []byte) (err error) {
  1761. return apijson.UnmarshalRoot(data, r)
  1762. }
  1763. func (r sessionMessagesResponseJSON) RawJSON() string {
  1764. return r.raw
  1765. }
  1766. type SessionChatParams struct {
  1767. ModelID param.Field[string] `json:"modelID,required"`
  1768. Parts param.Field[[]SessionChatParamsPartUnion] `json:"parts,required"`
  1769. ProviderID param.Field[string] `json:"providerID,required"`
  1770. MessageID param.Field[string] `json:"messageID"`
  1771. Mode param.Field[string] `json:"mode"`
  1772. System param.Field[string] `json:"system"`
  1773. Tools param.Field[map[string]bool] `json:"tools"`
  1774. }
  1775. func (r SessionChatParams) MarshalJSON() (data []byte, err error) {
  1776. return apijson.MarshalRoot(r)
  1777. }
  1778. type SessionChatParamsPart struct {
  1779. Type param.Field[SessionChatParamsPartsType] `json:"type,required"`
  1780. ID param.Field[string] `json:"id"`
  1781. Filename param.Field[string] `json:"filename"`
  1782. Mime param.Field[string] `json:"mime"`
  1783. Source param.Field[FilePartSourceUnionParam] `json:"source"`
  1784. Synthetic param.Field[bool] `json:"synthetic"`
  1785. Text param.Field[string] `json:"text"`
  1786. Time param.Field[interface{}] `json:"time"`
  1787. URL param.Field[string] `json:"url"`
  1788. }
  1789. func (r SessionChatParamsPart) MarshalJSON() (data []byte, err error) {
  1790. return apijson.MarshalRoot(r)
  1791. }
  1792. func (r SessionChatParamsPart) implementsSessionChatParamsPartUnion() {}
  1793. // Satisfied by [TextPartInputParam], [FilePartInputParam],
  1794. // [SessionChatParamsPart].
  1795. type SessionChatParamsPartUnion interface {
  1796. implementsSessionChatParamsPartUnion()
  1797. }
  1798. type SessionChatParamsPartsType string
  1799. const (
  1800. SessionChatParamsPartsTypeText SessionChatParamsPartsType = "text"
  1801. SessionChatParamsPartsTypeFile SessionChatParamsPartsType = "file"
  1802. )
  1803. func (r SessionChatParamsPartsType) IsKnown() bool {
  1804. switch r {
  1805. case SessionChatParamsPartsTypeText, SessionChatParamsPartsTypeFile:
  1806. return true
  1807. }
  1808. return false
  1809. }
  1810. type SessionInitParams struct {
  1811. MessageID param.Field[string] `json:"messageID,required"`
  1812. ModelID param.Field[string] `json:"modelID,required"`
  1813. ProviderID param.Field[string] `json:"providerID,required"`
  1814. }
  1815. func (r SessionInitParams) MarshalJSON() (data []byte, err error) {
  1816. return apijson.MarshalRoot(r)
  1817. }
  1818. type SessionRevertParams struct {
  1819. MessageID param.Field[string] `json:"messageID,required"`
  1820. PartID param.Field[string] `json:"partID"`
  1821. }
  1822. func (r SessionRevertParams) MarshalJSON() (data []byte, err error) {
  1823. return apijson.MarshalRoot(r)
  1824. }
  1825. type SessionSummarizeParams struct {
  1826. ModelID param.Field[string] `json:"modelID,required"`
  1827. ProviderID param.Field[string] `json:"providerID,required"`
  1828. }
  1829. func (r SessionSummarizeParams) MarshalJSON() (data []byte, err error) {
  1830. return apijson.MarshalRoot(r)
  1831. }