session.go 65 KB

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