From b75cf543f558dd0d0b68161743a78f8e281df88d Mon Sep 17 00:00:00 2001 From: speakeasybot Date: Wed, 2 Sep 2026 18:58:08 +0000 Subject: [PATCH 1/2] =?UTF-8?q?##=20Python=20SDK=20Changes:=20*=20`glean.c?= =?UTF-8?q?hat.create()`:=20=20=20*=20=20`request.stream`=20**Removed**=20?= =?UTF-8?q?(Breaking=20=E2=9A=A0=EF=B8=8F)=20=20=20*=20=20`response.status?= =?UTF-8?q?[200].content[text/event-stream`=20**Removed**=20(Breaking=20?= =?UTF-8?q?=E2=9A=A0=EF=B8=8F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .speakeasy/gen.lock | 375 +++++++++++++---- .speakeasy/gen.yaml | 2 +- .speakeasy/glean-merged-spec.yaml | 379 ++++++++++++++++-- .speakeasy/workflow.lock | 12 +- README.md | 37 ++ RELEASES.md | 12 +- docs/models/chatmessagefragment.md | 2 +- docs/models/object.md | 16 - docs/models/platformchatcompletedresponse.md | 2 +- .../platformchatcompletedresponseobject.md | 16 + .../{input.md => platformchatcreateinput.md} | 2 +- docs/models/platformchatcreaterequest.md | 4 +- docs/models/platformchatcreateresponse.md | 17 - docs/models/platformchatcreatestreaminput.md | 20 + .../models/platformchatcreatestreamrequest.md | 11 + docs/models/platformchatfailedresponse.md | 16 + .../platformchatfailedresponseobject.md | 16 + .../platformchatfailedresponsestatus.md | 16 + docs/models/platformchatresponseerror.md | 9 + .../platformchatstreameventserversentevent.md | 43 ++ .../platformchatstreamoutputtextdelta.md | 10 + ...hatstreamoutputtextdeltaserversentevent.md | 10 + .../platformchatstreamoutputtextdeltatype.md | 16 + .../platformchatstreamoutputtextdone.md | 10 + ...chatstreamoutputtextdoneserversentevent.md | 10 + .../platformchatstreamoutputtextdonetype.md | 16 + docs/models/platformchatstreamprogress.md | 10 + ...atformchatstreamprogressserversentevent.md | 10 + docs/models/platformchatstreamprogresstype.md | 16 + .../platformchatstreamresponsecompleted.md | 10 + ...tstreamresponsecompletedserversentevent.md | 10 + ...platformchatstreamresponsecompletedtype.md | 16 + .../platformchatstreamresponsecreated.md | 9 + ...hatstreamresponsecreatedserversentevent.md | 10 + .../platformchatstreamresponsecreatedtype.md | 16 + .../platformchatstreamresponsefailed.md | 10 + ...chatstreamresponsefailedserversentevent.md | 10 + .../platformchatstreamresponsefailedtype.md | 16 + docs/sdks/chatsdk/README.md | 55 ++- pyproject.toml | 2 +- src/glean/api_client/_version.py | 6 +- src/glean/api_client/chat_sdk.py | 324 +++++++++++++-- src/glean/api_client/models/__init__.py | 192 ++++++++- .../api_client/models/chatmessagefragment.py | 4 +- ...st.py => platform_chat_create_streamop.py} | 43 +- .../models/platform_chat_createop.py | 91 ++++- .../models/platformchatcompletedresponse.py | 6 +- .../models/platformchatfailedresponse.py | 98 +++++ .../models/platformchatresponseerror.py | 54 +++ .../platformchatstreameventserversentevent.py | 58 +++ .../platformchatstreamoutputtextdelta.py | 30 ++ ...hatstreamoutputtextdeltaserversentevent.py | 56 +++ .../platformchatstreamoutputtextdone.py | 30 ++ ...chatstreamoutputtextdoneserversentevent.py | 56 +++ .../models/platformchatstreamprogress.py | 36 ++ ...atformchatstreamprogressserversentevent.py | 56 +++ .../platformchatstreamresponsecompleted.py | 34 ++ ...tstreamresponsecompletedserversentevent.py | 56 +++ .../platformchatstreamresponsecreated.py | 27 ++ ...hatstreamresponsecreatedserversentevent.py | 56 +++ .../platformchatstreamresponsefailed.py | 34 ++ ...chatstreamresponsefailedserversentevent.py | 56 +++ .../internal/handler/pathpostapichat.go | 4 +- .../models/components/chatmessagefragment.go | 2 +- .../platformchatcitationannotation.go | 12 + .../components/platformchatcitationsnippet.go | 12 + .../platformchatcompletedresponse.go | 20 +- .../components/platformchatcreaterequest.go | 127 ------ .../components/platformchatfailedresponse.go | 147 +++++++ .../components/platformchatoutputmessage.go | 12 + .../platformchatoutputtextcontent.go | 12 + .../components/platformchatresponseerror.go | 40 ++ .../platformchatstreameventserversentevent.go | 204 ++++++++++ .../platformchatstreamoutputtextdelta.go | 72 ++++ ...hatstreamoutputtextdeltaserversentevent.go | 42 ++ .../platformchatstreamoutputtextdone.go | 72 ++++ ...chatstreamoutputtextdoneserversentevent.go | 42 ++ .../components/platformchatstreamprogress.go | 74 ++++ ...atformchatstreamprogressserversentevent.go | 42 ++ .../platformchatstreamresponsecompleted.go | 72 ++++ ...tstreamresponsecompletedserversentevent.go | 42 ++ .../platformchatstreamresponsecreated.go | 64 +++ ...hatstreamresponsecreatedserversentevent.go | 42 ++ .../platformchatstreamresponsefailed.go | 72 ++++ ...chatstreamresponsefailedserversentevent.go | 42 ++ .../models/operations/platformchatcreate.go | 126 +++++- .../operations/platformchatcreatestream.go | 145 +++++++ .../internal/sdk/types/stream/stream.go | 218 ++++++++++ tests/test_chat_sdk.py | 4 +- tests/test_messages.py | 2 +- tests/test_summarize.py | 8 +- 91 files changed, 4056 insertions(+), 399 deletions(-) delete mode 100644 docs/models/object.md create mode 100644 docs/models/platformchatcompletedresponseobject.md rename docs/models/{input.md => platformchatcreateinput.md} (92%) delete mode 100644 docs/models/platformchatcreateresponse.md create mode 100644 docs/models/platformchatcreatestreaminput.md create mode 100644 docs/models/platformchatcreatestreamrequest.md create mode 100644 docs/models/platformchatfailedresponse.md create mode 100644 docs/models/platformchatfailedresponseobject.md create mode 100644 docs/models/platformchatfailedresponsestatus.md create mode 100644 docs/models/platformchatresponseerror.md create mode 100644 docs/models/platformchatstreameventserversentevent.md create mode 100644 docs/models/platformchatstreamoutputtextdelta.md create mode 100644 docs/models/platformchatstreamoutputtextdeltaserversentevent.md create mode 100644 docs/models/platformchatstreamoutputtextdeltatype.md create mode 100644 docs/models/platformchatstreamoutputtextdone.md create mode 100644 docs/models/platformchatstreamoutputtextdoneserversentevent.md create mode 100644 docs/models/platformchatstreamoutputtextdonetype.md create mode 100644 docs/models/platformchatstreamprogress.md create mode 100644 docs/models/platformchatstreamprogressserversentevent.md create mode 100644 docs/models/platformchatstreamprogresstype.md create mode 100644 docs/models/platformchatstreamresponsecompleted.md create mode 100644 docs/models/platformchatstreamresponsecompletedserversentevent.md create mode 100644 docs/models/platformchatstreamresponsecompletedtype.md create mode 100644 docs/models/platformchatstreamresponsecreated.md create mode 100644 docs/models/platformchatstreamresponsecreatedserversentevent.md create mode 100644 docs/models/platformchatstreamresponsecreatedtype.md create mode 100644 docs/models/platformchatstreamresponsefailed.md create mode 100644 docs/models/platformchatstreamresponsefailedserversentevent.md create mode 100644 docs/models/platformchatstreamresponsefailedtype.md rename src/glean/api_client/models/{platformchatcreaterequest.py => platform_chat_create_streamop.py} (67%) create mode 100644 src/glean/api_client/models/platformchatfailedresponse.py create mode 100644 src/glean/api_client/models/platformchatresponseerror.py create mode 100644 src/glean/api_client/models/platformchatstreameventserversentevent.py create mode 100644 src/glean/api_client/models/platformchatstreamoutputtextdelta.py create mode 100644 src/glean/api_client/models/platformchatstreamoutputtextdeltaserversentevent.py create mode 100644 src/glean/api_client/models/platformchatstreamoutputtextdone.py create mode 100644 src/glean/api_client/models/platformchatstreamoutputtextdoneserversentevent.py create mode 100644 src/glean/api_client/models/platformchatstreamprogress.py create mode 100644 src/glean/api_client/models/platformchatstreamprogressserversentevent.py create mode 100644 src/glean/api_client/models/platformchatstreamresponsecompleted.py create mode 100644 src/glean/api_client/models/platformchatstreamresponsecompletedserversentevent.py create mode 100644 src/glean/api_client/models/platformchatstreamresponsecreated.py create mode 100644 src/glean/api_client/models/platformchatstreamresponsecreatedserversentevent.py create mode 100644 src/glean/api_client/models/platformchatstreamresponsefailed.py create mode 100644 src/glean/api_client/models/platformchatstreamresponsefailedserversentevent.py delete mode 100644 tests/mockserver/internal/sdk/models/components/platformchatcreaterequest.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformchatfailedresponse.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformchatresponseerror.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformchatstreameventserversentevent.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformchatstreamoutputtextdelta.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformchatstreamoutputtextdeltaserversentevent.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformchatstreamoutputtextdone.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformchatstreamoutputtextdoneserversentevent.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformchatstreamprogress.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformchatstreamprogressserversentevent.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformchatstreamresponsecompleted.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformchatstreamresponsecompletedserversentevent.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformchatstreamresponsecreated.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformchatstreamresponsecreatedserversentevent.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformchatstreamresponsefailed.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformchatstreamresponsefailedserversentevent.go create mode 100644 tests/mockserver/internal/sdk/models/operations/platformchatcreatestream.go create mode 100644 tests/mockserver/internal/sdk/types/stream/stream.go diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 4d088d2f..a232a62f 100644 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,19 +1,19 @@ lockVersion: 2.0.0 id: 3e3290ca-0ee8-4981-b1bc-14536048fa63 management: - docChecksum: 18a116fa0026e01d9a1addcdb4a0eb16 + docChecksum: edc1d70ac465e8b7ce71bf4303a05851 docVersion: 0.9.0 - speakeasyVersion: 1.796.2 - generationVersion: 2.933.0 - releaseVersion: 0.16.2 - configChecksum: a7a11b36535e41b352cebf1baf51a08f + speakeasyVersion: 1.796.3 + generationVersion: 2.934.1 + releaseVersion: 0.17.0 + configChecksum: 2b488c3f1a8165fd1c1b6dfd98d4812a repoURL: https://github.com/gleanwork/api-client-python.git installationURL: https://github.com/gleanwork/api-client-python.git published: true persistentEdits: - generation_id: a9ae9f72-aa80-42b2-a7c6-80a108646be4 - pristine_commit_hash: 94a8120ced5f78b789b3995f71d75e3b0e961bbd - pristine_tree_hash: 806526f89efcfb70df8cac2915597c728d57954e + generation_id: da250175-706d-4e63-95cb-0a9f3cabd64c + pristine_commit_hash: e524d4d817d59b7d5cc77013e68501f6619ce348 + pristine_tree_hash: 79d3fe928589de9e55d20815b3b190f5cff0230f features: python: acceptHeaders: 3.0.0 @@ -47,6 +47,7 @@ features: responseFormat: 1.1.0 retries: 3.1.1 sdkHooks: 1.3.0 + serverEvents: 1.1.1 tests: 1.19.10 unions: 3.1.9 uploadStreams: 1.0.3 @@ -513,8 +514,8 @@ trackedFiles: pristine_git_object: 66737ea5adad94131631be69fbb4a398a43fd94b docs/models/chatmessagefragment.md: id: 9f4738df6b1b - last_write_checksum: sha1:fcca5d53ea3bffabb004a2273d0bc3d97d6f0c08 - pristine_git_object: 9fbc47f847fc288e59c2bd50629097fe3a378de4 + last_write_checksum: sha1:6cece4fa719fce97eabade958c4aa2a766e9d97a + pristine_git_object: b63a329967e9a19bb422553e86415e8ff3472032 docs/models/chatmetadata.md: id: 04d1111a98ac last_write_checksum: sha1:3e94025fd78eea7b18064ba4b5741bec7286e912 @@ -1819,10 +1820,6 @@ trackedFiles: id: 1db1dc7ee526 last_write_checksum: sha1:c5fcecc026e19e338aa6f14b49e177eeeffea606 pristine_git_object: 92e666de5f7156588d4dbaa09b36fec6e8f2403e - docs/models/input.md: - id: 5cbc446a3956 - last_write_checksum: sha1:edb11fdd84b602cb02ed2ca9e3a54e664bfafb17 - pristine_git_object: c54bec05e2353c4d45c272873e3d645b333a2d7e docs/models/inputoptions.md: id: 138e423f4a10 last_write_checksum: sha1:35aa8de6835bef5a294ef685f6480529f55f26f6 @@ -2091,10 +2088,6 @@ trackedFiles: id: 568581cb28bc last_write_checksum: sha1:263515c9f97885b91b6cd5844222320658442b07 pristine_git_object: b1cd1e56279e4db030fc140598c10231ff311137 - docs/models/object.md: - id: 7ffe67d0b83f - last_write_checksum: sha1:f0d75b529d5e6940235cd6e8bff91249c97f8f07 - pristine_git_object: 06f80d51f75580152f7992a7b7dc76cda72db346 docs/models/objectdefinition.md: id: 11daa0bec25f last_write_checksum: sha1:6990618d91fdb10bba60313d1b94e1f1be0dcc24 @@ -2297,20 +2290,32 @@ trackedFiles: pristine_git_object: bb688733d0a00e09f8b9d2c613f34976b41d5735 docs/models/platformchatcompletedresponse.md: id: c274bca3fa55 - last_write_checksum: sha1:38a1582c5266e7c2365e700008ebe1c70461d918 - pristine_git_object: 34af8ff1c4add0e01b27c73bb654ba7c32433860 + last_write_checksum: sha1:0cdd9b4e0729478f3d4142e3ba35f502753dcef7 + pristine_git_object: 0bf8bddada6d58640ac5ef3afe47f43ea0b12b9d + docs/models/platformchatcompletedresponseobject.md: + id: 229bfefa7800 + last_write_checksum: sha1:e808d4a1a7d68a6ea7e81a0273fbbd21f60546a6 + pristine_git_object: 7629d14c2951876d5bfc4af9090c8c4f744d6843 docs/models/platformchatcompletedresponsestatus.md: id: f52ac98c71f7 last_write_checksum: sha1:08119b0731b552212f11f6f657a933cd06d9daec pristine_git_object: 8bed3e0696e7a1665d1fc1ef77e883aa51affcb1 + docs/models/platformchatcreateinput.md: + id: b5ef80519bcf + last_write_checksum: sha1:923de319896bc8dbb4af15eae03baae730fd3042 + pristine_git_object: 9ee0df259532723cb625e145c48c0daf7d7a0d8e docs/models/platformchatcreaterequest.md: id: cd33a9dfda85 - last_write_checksum: sha1:a7d397ede45f0f7fd3332236f19e7bfe0f916f5a - pristine_git_object: f37f1031bb6bf575329284f2c5c9426194d0eca1 - docs/models/platformchatcreateresponse.md: - id: d07ae96f238d - last_write_checksum: sha1:2e27d36585ba58fc31cff8823ea1b6ba5203dd57 - pristine_git_object: 8cf9edc158c04e0a5828d33191b6ecc849257b58 + last_write_checksum: sha1:0e26aaf39478d21d6bcf3730943323ff34b2a710 + pristine_git_object: 82808d05f9f69e0885883471aac9783c67801d62 + docs/models/platformchatcreatestreaminput.md: + id: 8db5acf6cc48 + last_write_checksum: sha1:26e70a3ce28592c6059c62370d882f66f28e1387 + pristine_git_object: 250ba3f9e5482057896cf121968d834590649a3f + docs/models/platformchatcreatestreamrequest.md: + id: 2f7f30973ec2 + last_write_checksum: sha1:6e27a56cbd02cb01db44a93d1758245221c2897d + pristine_git_object: 484d017f9d5e02aeae6539c1a354644b4c1b9436 docs/models/platformchatcustomentitysource.md: id: 6e12deaeb23d last_write_checksum: sha1:b8ef7e1c92d45a3a3329a88b57361ba9553f28b3 @@ -2339,6 +2344,18 @@ trackedFiles: id: 4bd893a73267 last_write_checksum: sha1:920bce6ed056ceb6e7958e0be8620ef2ff4f6e31 pristine_git_object: 30967f4550b07d4dc49b041428597bc44b56731f + docs/models/platformchatfailedresponse.md: + id: d2e9a009333f + last_write_checksum: sha1:2b2b4ddaae8477dc41cf30584f92cf2fa0894944 + pristine_git_object: 544d0f8979ad8339ff976ae40202e3e66377d5bc + docs/models/platformchatfailedresponseobject.md: + id: 324660bb9de4 + last_write_checksum: sha1:ee75ca289ddecda4bf440723e504e9e18b03cb58 + pristine_git_object: 4749698be7bd9a92ab4a3ed82e253d5e8dac600c + docs/models/platformchatfailedresponsestatus.md: + id: 43a16ccb799c + last_write_checksum: sha1:a515d82aa2c663d64ad8a29c3a323d2d2aa64cfb + pristine_git_object: 752dc109151d51645e90c96f7fbf982fe80e3595 docs/models/platformchatfilesource.md: id: b64eca888132 last_write_checksum: sha1:88e87ca14737f8d3166da647fbb1313fdacad945 @@ -2383,6 +2400,86 @@ trackedFiles: id: e514ca59ade7 last_write_checksum: sha1:e0856c009120a4df0c15efccdb17b7474ba9fcd7 pristine_git_object: 4648aec0ab515b868f019c2d399cd3a45f34472c + docs/models/platformchatresponseerror.md: + id: 6a14f935513d + last_write_checksum: sha1:99552704de9146d2afb52b887ec49f1b6e918f2a + pristine_git_object: ca5bddbdce484a3c18114b5618de699274ee1d60 + docs/models/platformchatstreameventserversentevent.md: + id: 74cd4edd96ac + last_write_checksum: sha1:cc1dc190195e9e0f48042b957fc70e83c6a4f68b + pristine_git_object: 6879d646fa74f73bb27006a2d241247a762dc2ff + docs/models/platformchatstreamoutputtextdelta.md: + id: 3eebe174296e + last_write_checksum: sha1:7f3761275aa8292e0c67c0c86527776ba69933ad + pristine_git_object: a29201e03a825b0de7c5926a61031835543dcdad + docs/models/platformchatstreamoutputtextdeltaserversentevent.md: + id: cf911a21b7ac + last_write_checksum: sha1:40a820f898ac4e2f5fa46475cde5e2eb8951641b + pristine_git_object: 7fad1b07f273c12d66e9f4d595009ad64ab63997 + docs/models/platformchatstreamoutputtextdeltatype.md: + id: e2ff33328768 + last_write_checksum: sha1:f34630c94bcbbc7047f0382e5b756475c12ab197 + pristine_git_object: 6b682ee96b8c99027a6c3f1a98abf4ea1d74d244 + docs/models/platformchatstreamoutputtextdone.md: + id: b50863063bf8 + last_write_checksum: sha1:22a0998f14a5c302efa54e36deb7259ea9cc9993 + pristine_git_object: 6b973068595fdd6c9dcf9513a47e92af1db0e477 + docs/models/platformchatstreamoutputtextdoneserversentevent.md: + id: 2a45aaaca767 + last_write_checksum: sha1:26f82889afe5fabb0c3032c72c7a95e96a73ee41 + pristine_git_object: 56aa4f6c794ca294b1609925de0702021291ceed + docs/models/platformchatstreamoutputtextdonetype.md: + id: 26407fb5c4e8 + last_write_checksum: sha1:e95af21f8ffbdc0fed1a10b8147323182f578481 + pristine_git_object: 2acc83ea2709871206724186283a5879f5af674b + docs/models/platformchatstreamprogress.md: + id: c0f5fec1947d + last_write_checksum: sha1:80ea08675fa774f3818be3e7bd752f0a65de889e + pristine_git_object: ff966e3f2500f0263709e10c33aae1118bf9a0d1 + docs/models/platformchatstreamprogressserversentevent.md: + id: e06f2abf0751 + last_write_checksum: sha1:e07462c62379308fe0ab07a2dc39dd4d453dd722 + pristine_git_object: 99cf822f4252be5637ca13cfea3f52dab264fefb + docs/models/platformchatstreamprogresstype.md: + id: b9be8ced3e6e + last_write_checksum: sha1:496a64cb36bf1eec919b9da81e8734cc5653293d + pristine_git_object: 004a13e0e82f86acbac3cf171f55b79510cea49c + docs/models/platformchatstreamresponsecompleted.md: + id: cac3298dafe1 + last_write_checksum: sha1:764f1f98d2f962fb664a7c5235e36146afd88766 + pristine_git_object: ae6b71d31168f61d9f7a78ce56a7097c9ec49e38 + docs/models/platformchatstreamresponsecompletedserversentevent.md: + id: 46fd40f86d09 + last_write_checksum: sha1:8794f3cd36e58057679708ff79c7bad910687b64 + pristine_git_object: 70c516c83ef7034d2f8c81c27f9b13a885883398 + docs/models/platformchatstreamresponsecompletedtype.md: + id: 8d8346492673 + last_write_checksum: sha1:dc36e4b7af48539f116eb3326ae8393f41e86b24 + pristine_git_object: 593e30a6b48aa3de62d0581261eb207856a7e2f1 + docs/models/platformchatstreamresponsecreated.md: + id: a0c656bf7c5f + last_write_checksum: sha1:0a5a5e16635ccfce6103e8cf5378b355b9d05602 + pristine_git_object: b2c693c70ebd66433270467480d7542ff43ffbde + docs/models/platformchatstreamresponsecreatedserversentevent.md: + id: 68fff92b4cef + last_write_checksum: sha1:ba30c727302640575030dbc87364c5ae645a0ee0 + pristine_git_object: 4e612bbf156f3c07defeeb0e5262e698b6916010 + docs/models/platformchatstreamresponsecreatedtype.md: + id: 2ccadc209823 + last_write_checksum: sha1:950a8ea4f2a067d49f42e9bf7a9dbb6a244eda12 + pristine_git_object: f176217840783eba469148b60dc6d13c663ed21f + docs/models/platformchatstreamresponsefailed.md: + id: 29e947b16901 + last_write_checksum: sha1:62a803d82bc6b2d7582bf1557a0a532e6428fed1 + pristine_git_object: 979cf487703915ccf666fba51ff6e416d6a0185c + docs/models/platformchatstreamresponsefailedserversentevent.md: + id: 0bf3b0d3c3d7 + last_write_checksum: sha1:21cebd5c32abef1b3722ddca4a7f27fa6c6ee552 + pristine_git_object: 133046469487f9588c479108b1d8ad8630a3e1eb + docs/models/platformchatstreamresponsefailedtype.md: + id: c6a5277b7a47 + last_write_checksum: sha1:71c8bed820b7b848be51e3bff787a8de38f69e5a + pristine_git_object: d878152e2e4f6647625177367828b3089c1b7688 docs/models/platformcontentschedulewebhookevent.md: id: 7cf591a2907e last_write_checksum: sha1:3df88866a52033aa4555602e8b7128abdb1f6d14 @@ -3601,8 +3698,8 @@ trackedFiles: pristine_git_object: 85153af7ec594c2dbd1e4a8c2eba5ce713796265 docs/sdks/chatsdk/README.md: id: 83b4ee321663 - last_write_checksum: sha1:80b27be92fe4d96fca14313eaa9fcb1524f7bac1 - pristine_git_object: f541f724429e74e02ddfdc6ae0c99d1fdc38d04d + last_write_checksum: sha1:4a17fc3112d643a6d8a3a7146a79c90838056f25 + pristine_git_object: 58f9aea37b2f7cd7f439156e0548927515c0bde8 docs/sdks/clientactivity/README.md: id: a309613986a5 last_write_checksum: sha1:d9737458d891593ba2fb3372ab6e60ea728fe9a5 @@ -3737,8 +3834,8 @@ trackedFiles: pristine_git_object: 79e388be87446ab6a4064b372bad0e8376d0cb5e pyproject.toml: id: 5d07e7d72637 - last_write_checksum: sha1:314627ada5f907dfe762d42b455898682fd017f5 - pristine_git_object: fbc50d459b37c40ead57325817253088c83fffe5 + last_write_checksum: sha1:b0e2d2d1b9a92a51a543b372332b65b622e4c57e + pristine_git_object: c4dcc6eb4e09a522910fd98b210ce29a0d3fbc58 scripts/prepare_readme.py: id: e0c5957a6035 last_write_checksum: sha1:c2c83f71dea61eb50c9e05da83b16d18b4da8794 @@ -3765,8 +3862,8 @@ trackedFiles: pristine_git_object: 55f23c1feabfedeb7e8cd5bea8b910f0ae0b77d9 src/glean/api_client/_version.py: id: 0ce22b26136b - last_write_checksum: sha1:ab9358db14dd6cbe230d10ffe933fdff623479e8 - pristine_git_object: f1e4b67954209b7ce6d8efd4b99e6ad838d786a3 + last_write_checksum: sha1:f6cf7c9a092fdf68e6e16da658736cf69b73cb34 + pristine_git_object: 6ac9bc6e4facc092536961ad16968ecde196a024 src/glean/api_client/agents.py: id: b925701a9217 last_write_checksum: sha1:1d4b152d9d9260d1c97d4983f521f30b5cfa1085 @@ -3785,8 +3882,8 @@ trackedFiles: pristine_git_object: bf7b1b3b25ce6530403b0dd9f60599d236c780ce src/glean/api_client/chat_sdk.py: id: f2f30e13ca42 - last_write_checksum: sha1:328e511b8bdb485025a2091b999cb098c89960b3 - pristine_git_object: 8d63acc688a0876d3a64f4fe794b8aad3d17ed8a + last_write_checksum: sha1:0fd8e9638b78c28f1504967c62f471cd38108864 + pristine_git_object: 80bd36d3f99bafbc262cb5d3383ae9a4034a222c src/glean/api_client/client.py: id: c0c188098f10 last_write_checksum: sha1:bfadba5dfdc64280fd9c7bdbf96a0651e5db429f @@ -3949,8 +4046,8 @@ trackedFiles: pristine_git_object: 77016bfff6209866592fd8b42f2f3527f900992b src/glean/api_client/models/__init__.py: id: d5f6ea5efcbe - last_write_checksum: sha1:0610111c87afda1789e7c24d91dfd9335293cd64 - pristine_git_object: ebcfa532d31694456dc7957d82a273eee38d074b + last_write_checksum: sha1:13fbd4d8aa5ede7a6786291c66de5fb1a8921f5c + pristine_git_object: 573adfa6e945324491cbe40dfab96c6f8647e413 src/glean/api_client/models/accessrequestpermissiondeniedresponse_error.py: id: 22a2fa0d5899 last_write_checksum: sha1:f7dd6f906a4dd7433992f77395f9fb491fa5ac5c @@ -4257,8 +4354,8 @@ trackedFiles: pristine_git_object: 15fd378692330c508ca2b7c0c8df8070e7c688a3 src/glean/api_client/models/chatmessagefragment.py: id: 86344b2c1c3d - last_write_checksum: sha1:dbeb483ab92b411fc03a38b42769292ded7a0201 - pristine_git_object: 48632a889a6d4c056d7041337c0cf82c9317d933 + last_write_checksum: sha1:8e6b779a03a7d1ecfd047e21a46af5b95ff61892 + pristine_git_object: 844224bbf606b06d3ba5b1d59c98334d3f796209 src/glean/api_client/models/chatmetadata.py: id: 0469e4eebd69 last_write_checksum: sha1:6665183f9ae42b7258ed3b47d8bedbad19c5c7f7 @@ -5639,10 +5736,14 @@ trackedFiles: id: 606568a4c8fc last_write_checksum: sha1:58370e345df87a242670e2cfdb26800caa6a00ce pristine_git_object: 880c65c1e74dd49543d650516f29141c6cdd486d + src/glean/api_client/models/platform_chat_create_streamop.py: + id: 6950e1c0b047 + last_write_checksum: sha1:9e15087313982499851cfb3ba3f63090f5711ba8 + pristine_git_object: 7e6268b7f8f3855c2f5b1a422db02f4d9e06fc4b src/glean/api_client/models/platform_chat_createop.py: id: 6f911817c878 - last_write_checksum: sha1:77624faa54aaec5c18eba3d8cbe2a1f71bfa0b1c - pristine_git_object: 03ee7209ccbcf73a99bdc0123f0b86b0488df9a2 + last_write_checksum: sha1:8190a133a530c4a765fd42025a364220e65dcff1 + pristine_git_object: 4069a99089cae96228982f98a9a45cd8e1e0c9de src/glean/api_client/models/platform_search_filtersop.py: id: 3876ec8f6e5b last_write_checksum: sha1:0551a1836339a7b0f5dea4cf8946e001384d3146 @@ -5793,12 +5894,8 @@ trackedFiles: pristine_git_object: b44f4b97a5553ceb98d4651a39abbd753e03e960 src/glean/api_client/models/platformchatcompletedresponse.py: id: ed59f46e73df - last_write_checksum: sha1:0dd038141a88aec0d7a5838053ac167f894ffc53 - pristine_git_object: 4b32c84bd902a79b2e55da4f0e602a485a0fdff1 - src/glean/api_client/models/platformchatcreaterequest.py: - id: d6d4fc59e049 - last_write_checksum: sha1:aa28b7ef6c55c105e95ee31604f5c060b968abd6 - pristine_git_object: b596efc574a30fc43c9780d9b19dc2c6bfeac6ce + last_write_checksum: sha1:f4bc030382f556fee134d6ce386c1f15309b3db7 + pristine_git_object: 9c0061dac37bcaacd39ab2cf1f0de5a59a67eb79 src/glean/api_client/models/platformchatcustomentitysource.py: id: 385a56c07858 last_write_checksum: sha1:219f6e5baa20d6954839bfc16a00a9f424fbb96e @@ -5807,6 +5904,10 @@ trackedFiles: id: 1cd8111e3b4c last_write_checksum: sha1:43c63d69794b3897ce38c321806a719e7957f36b pristine_git_object: 73aad8d2edf3d1d6880e9cff3a0057b368d84543 + src/glean/api_client/models/platformchatfailedresponse.py: + id: a67ad1be1af7 + last_write_checksum: sha1:58cf0496973a6fc25167bd99f88ecc50d0ba914c + pristine_git_object: 7c34fe7f67991f56f3a8ef2fbc843c309d386584 src/glean/api_client/models/platformchatfilesource.py: id: 1a9d4653c065 last_write_checksum: sha1:d995e1a8bf690e316793f4916fbca81f0a279e47 @@ -5827,6 +5928,62 @@ trackedFiles: id: 617b816c747b last_write_checksum: sha1:1068fde6d156f689d9f93b799dd8b5a2fa399315 pristine_git_object: a2e120b176b2a3d8f8d5060f5717290ffb07eda4 + src/glean/api_client/models/platformchatresponseerror.py: + id: eff7e0843760 + last_write_checksum: sha1:258f4d2e46ae0166430059c1438d440feafde069 + pristine_git_object: ef73e944a19d1f8ab90b8887acd0f559fe1c0989 + src/glean/api_client/models/platformchatstreameventserversentevent.py: + id: d57b3400c0da + last_write_checksum: sha1:e12371eb200cfd626081149f469b84bc82d4861e + pristine_git_object: 25374f3f7858cfb9882541e77719800d58aebb67 + src/glean/api_client/models/platformchatstreamoutputtextdelta.py: + id: 767badbdf034 + last_write_checksum: sha1:4bf95771e424b93002b559225317213d5a7ce7c2 + pristine_git_object: 0163838facbd457a6bdbea21960c90ca62a49172 + src/glean/api_client/models/platformchatstreamoutputtextdeltaserversentevent.py: + id: 8257fcec25b6 + last_write_checksum: sha1:119efe8576169a98e65bb9ad8937854fa87debc7 + pristine_git_object: 1d7e6a4cfe219077e4e582d931cbfe74290d214c + src/glean/api_client/models/platformchatstreamoutputtextdone.py: + id: bc299dbeed70 + last_write_checksum: sha1:89c53f357f95ad4df72be7c13a410e5feed4219c + pristine_git_object: e427df2017190f12e983404d9c69acfd8c150f98 + src/glean/api_client/models/platformchatstreamoutputtextdoneserversentevent.py: + id: 83feaebd0587 + last_write_checksum: sha1:96e95ac3c8f6808f8eb406834669291bde8539f6 + pristine_git_object: f56d5aefa180f847d2b27cd131b26918c92573eb + src/glean/api_client/models/platformchatstreamprogress.py: + id: ca5d31d56d00 + last_write_checksum: sha1:3329703dbc5a470ba1e275949b8350a6c3b398b0 + pristine_git_object: e29fde8c84cf2b89b5fa3ae93ea3f2618843d385 + src/glean/api_client/models/platformchatstreamprogressserversentevent.py: + id: 0d36ce15e207 + last_write_checksum: sha1:11dabc6ba6505da4da614396828998657ced6588 + pristine_git_object: d6b76035b48df0bec60eed9ff57d868626398b59 + src/glean/api_client/models/platformchatstreamresponsecompleted.py: + id: 64df4fae402e + last_write_checksum: sha1:44a8278d8fdd9442b80b1e9941fcf0c49e584c5f + pristine_git_object: 32e505c96385285678d0763700b6ecdc602bcf75 + src/glean/api_client/models/platformchatstreamresponsecompletedserversentevent.py: + id: efffc7a2b4e1 + last_write_checksum: sha1:f1c4daa3a49c21c40b31d7777a3ade92a7900c23 + pristine_git_object: 143aa870f79a6d69457f06c208d14c37c0629935 + src/glean/api_client/models/platformchatstreamresponsecreated.py: + id: d62c520b895e + last_write_checksum: sha1:9899d75b217cdcbdf9c13cb17721797838bec0a4 + pristine_git_object: d4afad87888cab51a2b891f80193d8817f969881 + src/glean/api_client/models/platformchatstreamresponsecreatedserversentevent.py: + id: 92e86b61f8a6 + last_write_checksum: sha1:575b70f732bbe5456de5b0a8e8007313c2b0f2bc + pristine_git_object: bc55a9e27c5f5ddf967048bc4f0e5dabdeb8c509 + src/glean/api_client/models/platformchatstreamresponsefailed.py: + id: 2da55e29c74a + last_write_checksum: sha1:4d9cd599d5a6512fb3f70c965832974319c40c5d + pristine_git_object: b4908b629778520bc0446bb5d04522434aba4ae7 + src/glean/api_client/models/platformchatstreamresponsefailedserversentevent.py: + id: aa2699dde615 + last_write_checksum: sha1:82061a27d94f683de9be3c439c45e5aa075cb2bf + pristine_git_object: c4c16ab8bdbddd7554803c73557c31f474df4be8 src/glean/api_client/models/platformcontentschedulewebhookevent.py: id: 9967e953a04e last_write_checksum: sha1:c4967523e69ff60285e770e785059a415498409f @@ -7077,8 +7234,8 @@ trackedFiles: pristine_git_object: da7d08b0de7af705b535b8c40d172a3db3ba05cf tests/mockserver/internal/handler/pathpostapichat.go: id: 87a434352b0b - last_write_checksum: sha1:b09ce4ea80663c0fbf6e93e6abf9e0aa50bb28f0 - pristine_git_object: 7a5ec745c7b1c58e41225f7a280774e6ade6c017 + last_write_checksum: sha1:73557d2e24a17bcc4ea44f4af3eb6cfc66fbde6a + pristine_git_object: 337189e9dc4dd0490a94edc48504265732c8f5cb tests/mockserver/internal/handler/pathpostapiindexv1adddatasource.go: id: 549adf61c832 last_write_checksum: sha1:f1c92a8b8e4db16ee9334d7e28f8abec8c52d50e @@ -7809,8 +7966,8 @@ trackedFiles: pristine_git_object: f06157bccfa3a63727745952da0cfa5d323c3d23 tests/mockserver/internal/sdk/models/components/chatmessagefragment.go: id: 8d14e05d6934 - last_write_checksum: sha1:76403862fa202942fb3aece99946850c0d1f6f21 - pristine_git_object: 99f8ed7d37dc7334d81d332a7c25098d41b14906 + last_write_checksum: sha1:0edbd37a7bc5b5d99370f64f1418facf0b123513 + pristine_git_object: 5125ebb8302fa8ff989a4718ecde574eba6faa49 tests/mockserver/internal/sdk/models/components/chatmetadata.go: id: 53881e1500d3 last_write_checksum: sha1:2069155b9191362259f87a10f5eb7426b3bad1b8 @@ -8973,24 +9130,20 @@ trackedFiles: pristine_git_object: 58281ae6e982ccb6e585a3299a3893a5850cfb3d tests/mockserver/internal/sdk/models/components/platformchatcitationannotation.go: id: f4acfb6b571a - last_write_checksum: sha1:1f7f643895fdec20a70e5efebecdf9d8f636384e - pristine_git_object: 64b253ab16d8eea7f910fb7c32635756312c7866 + last_write_checksum: sha1:9c897630b1c2064f01239d038de95ad8131779fa + pristine_git_object: a8be52654eb44dc2a1033b204d007a215e9b48fb tests/mockserver/internal/sdk/models/components/platformchatcitationsnippet.go: id: 19303510f847 - last_write_checksum: sha1:521a16886f1f96d692e7dfc60c68ed16195f9db9 - pristine_git_object: def727555354501498b0e5757236ced49f597ba2 + last_write_checksum: sha1:12bd3f5f699a958f56ca053b6104a98dfa9b2c61 + pristine_git_object: 0a61eb36ea0c335e9db1f2c88d8202cf3fde56bd tests/mockserver/internal/sdk/models/components/platformchatcitationsource.go: id: f4e0cc1911d7 last_write_checksum: sha1:235f12483ef7492b172bfbefa85065019bed09cc pristine_git_object: 596b8663993c350c7a529ddd4bf958629d58f6c8 tests/mockserver/internal/sdk/models/components/platformchatcompletedresponse.go: id: dfc6d86d9ca2 - last_write_checksum: sha1:0a214ec8175734c89d968fbb3af56fc19e817264 - pristine_git_object: be4e37123971803d69d6581668ac6fa8e0f56347 - tests/mockserver/internal/sdk/models/components/platformchatcreaterequest.go: - id: b024a90db5cf - last_write_checksum: sha1:c7c3b67893cd7e42c4995e7e5b8f13bbb91090f1 - pristine_git_object: a5b50b89f856fa678f9bc26fa08818a8d91f183b + last_write_checksum: sha1:5309623b76e8faf8e345b74382e0f81d5ad37cd9 + pristine_git_object: df973046b13b4091b3ee1a85e070cb457daaf6e0 tests/mockserver/internal/sdk/models/components/platformchatcustomentitysource.go: id: 19335eec1f0c last_write_checksum: sha1:52947945dd84893095dd04c7c1d0fed92eed9d03 @@ -8999,6 +9152,10 @@ trackedFiles: id: 50d8ddf827c8 last_write_checksum: sha1:601d2c92039f18fcf03ea3abe7a8cb30d96862d2 pristine_git_object: 63d8078fd2f1510238397be59455ef19090a3a3a + tests/mockserver/internal/sdk/models/components/platformchatfailedresponse.go: + id: 921bc4d4fee3 + last_write_checksum: sha1:c9fe38548487b8e707e4e5b0e91031881ed91e5b + pristine_git_object: 1c7df6139f25b473eb2ae05274981ab86215e96d tests/mockserver/internal/sdk/models/components/platformchatfilesource.go: id: f717724c0acb last_write_checksum: sha1:9c1cf43539e36e553ea918fd22db2e9a6985f926 @@ -9009,16 +9166,72 @@ trackedFiles: pristine_git_object: 97c1e067fb5ecb6b2f97606419d967243488f520 tests/mockserver/internal/sdk/models/components/platformchatoutputmessage.go: id: 7ca1fc5cc683 - last_write_checksum: sha1:3db396040f3153e9079616c8618abeecc999e663 - pristine_git_object: 69218f0ebe38116259e1e0a7c021e605a79e88f6 + last_write_checksum: sha1:bf719da0350fbfafdb9b2459c45ec90fdeff26be + pristine_git_object: e8c6012073e865db79260a12e8b831b0bdc61be0 tests/mockserver/internal/sdk/models/components/platformchatoutputtextcontent.go: id: b5d5f31f9886 - last_write_checksum: sha1:65d94d8a5470bd836564c69e1476d29c7c8041b9 - pristine_git_object: d5020f5ca750f648d73d9153f3a332745d72304c + last_write_checksum: sha1:54300f2566d258c2125b840e17a7697051c02dfa + pristine_git_object: f3be4768043133e7909aca58d1c7f863c74bcecf tests/mockserver/internal/sdk/models/components/platformchatpersonsource.go: id: b44852860bd9 last_write_checksum: sha1:ae83c0e9521f08d5818d9aa5cff33ca7233239a7 pristine_git_object: 9576e8664747c8ca292816827aae56589aeab5c0 + tests/mockserver/internal/sdk/models/components/platformchatresponseerror.go: + id: a4d413676faa + last_write_checksum: sha1:5d37281d5b2288ea241100b99126d12f67f9d334 + pristine_git_object: 4fb413921081d3a64e2bdfd1edff758202030781 + tests/mockserver/internal/sdk/models/components/platformchatstreameventserversentevent.go: + id: 1b2ad9459d5f + last_write_checksum: sha1:2e167be4d00dd6260906829586de39ff078508c2 + pristine_git_object: 41154665e04da400c77013ed432399cb8d95d908 + tests/mockserver/internal/sdk/models/components/platformchatstreamoutputtextdelta.go: + id: 329ddf9c465e + last_write_checksum: sha1:d46187fcb298d9c35576dfbe1b8b6f189f4612b7 + pristine_git_object: fdac7c40b5e23c0dfb1a9759d9b68a44e9f62a46 + tests/mockserver/internal/sdk/models/components/platformchatstreamoutputtextdeltaserversentevent.go: + id: 9d28997d58de + last_write_checksum: sha1:ff72cefdfd770d73a50c6d0ee43b47e71d51c3f4 + pristine_git_object: 3841278bb157d67d986b4d7d64a4b7f2efe2a8e3 + tests/mockserver/internal/sdk/models/components/platformchatstreamoutputtextdone.go: + id: 90fdf0b45b57 + last_write_checksum: sha1:12b8e53007f8b3a50139ef3bcf8acdecc84f8781 + pristine_git_object: 8037a2796e4b170d4473a7baf2a4538b2211e10d + tests/mockserver/internal/sdk/models/components/platformchatstreamoutputtextdoneserversentevent.go: + id: cf1641bfef63 + last_write_checksum: sha1:94e691484db73df4c92c94448af1914cc8720b2c + pristine_git_object: 4421d6661a988be6f438e3fd1a71d5359d9b0ad3 + tests/mockserver/internal/sdk/models/components/platformchatstreamprogress.go: + id: c008e1720bc4 + last_write_checksum: sha1:9fa81eec76abe0ef2a950923b944c8b51955a751 + pristine_git_object: e59c586bf6b40217c05cf543a98050762e8628c2 + tests/mockserver/internal/sdk/models/components/platformchatstreamprogressserversentevent.go: + id: 3a2b557701b8 + last_write_checksum: sha1:a07f6f1f184a2d2fd20f834681b0c2a5e2141e28 + pristine_git_object: 3b1a876db1f00f2c7fd51545106a70db77e01c86 + tests/mockserver/internal/sdk/models/components/platformchatstreamresponsecompleted.go: + id: 8fda7d778ec7 + last_write_checksum: sha1:1cbd4531ed218071df1f10902a9c3a1c346c32d1 + pristine_git_object: 9f439b99fb4770a6668e6435dd353591fee58ab1 + tests/mockserver/internal/sdk/models/components/platformchatstreamresponsecompletedserversentevent.go: + id: 95cd788667ee + last_write_checksum: sha1:03fd65d6464a8ea5a8c45d3b098a7eccc96d6708 + pristine_git_object: 87196e332456c9e2d972db2f1816df69f98110d8 + tests/mockserver/internal/sdk/models/components/platformchatstreamresponsecreated.go: + id: 9ea28dc96be6 + last_write_checksum: sha1:56a9e1ce726e440579b8fddf8a0448d4ff63fcfc + pristine_git_object: 94632f0eaab550e77a8dab78da3182863fffd8a4 + tests/mockserver/internal/sdk/models/components/platformchatstreamresponsecreatedserversentevent.go: + id: a84455b46e8a + last_write_checksum: sha1:1c4fb74eadf257c8114118ef0b5fec3c017f7292 + pristine_git_object: 445ab015e89824faf84937c834b3e9fe6ef01f1f + tests/mockserver/internal/sdk/models/components/platformchatstreamresponsefailed.go: + id: b1835a610f92 + last_write_checksum: sha1:623809e02c8bddb459875598b27edb06b9c5e5be + pristine_git_object: 4f558c382ffee8238a791a8e1e7920f85d7848d7 + tests/mockserver/internal/sdk/models/components/platformchatstreamresponsefailedserversentevent.go: + id: cb4b807c5c50 + last_write_checksum: sha1:6cc1fb47210182778dd6dd3a302a118d8c23b73a + pristine_git_object: 8aeae90099849c9ecb918ad377780b2d6e8a7b0c tests/mockserver/internal/sdk/models/components/platformcontentschedulewebhookevent.go: id: aa997737c72e last_write_checksum: sha1:cf082854fbef3c2fb99b4415f333e65a3e97950a @@ -10193,8 +10406,12 @@ trackedFiles: pristine_git_object: cdbc9f550e7d2339b0946fe4783a3b79a851f39d tests/mockserver/internal/sdk/models/operations/platformchatcreate.go: id: 38da4ead08a1 - last_write_checksum: sha1:816aea1bfc29aa670152cf53137d3d8b5bcbcde4 - pristine_git_object: 1676f6436514b8104a1784f6ad3e6b3d4303befb + last_write_checksum: sha1:19b0801c6aea2f64707c910040ce0abe0abf0007 + pristine_git_object: c9dbd053cf81d79d52e8f61733224a1b98bbf3c1 + tests/mockserver/internal/sdk/models/operations/platformchatcreatestream.go: + id: 32e8d932ca7e + last_write_checksum: sha1:828c8e37232571f5737fed9c01bcbde3dc856068 + pristine_git_object: d94a54b7ed3d227a61ab2b41f443a8aca9adf755 tests/mockserver/internal/sdk/models/operations/platformsearch.go: id: d990791ac101 last_write_checksum: sha1:9da9b49850375b74bf6296fcec336ba9ad1e1eea @@ -10583,6 +10800,10 @@ trackedFiles: id: f880573cf1fb last_write_checksum: sha1:fc2275ea006257ba9ba4ff6f2a2cdb6205371eef pristine_git_object: 35c439d2661e08fcb6a854096fd7b9a8561b3938 + tests/mockserver/internal/sdk/types/stream/stream.go: + id: 1575a63509fc + last_write_checksum: sha1:c48811a5243fa7f9e23c67966b140c52614b58bd + pristine_git_object: 365d8cff3c2d90c64859e66f9f0b788f0271b2d7 tests/mockserver/internal/sdk/utils/json.go: id: b1ed67b63d16 last_write_checksum: sha1:2c860aa8b53b7d38c20290854c880368ce4fe0ec @@ -10657,8 +10878,8 @@ trackedFiles: pristine_git_object: d2b02f269ac418b9a9240772f28ab1bd3cfa4997 tests/test_chat_sdk.py: id: d6e6d5c5a1b2 - last_write_checksum: sha1:8517d306da079161e7be794bccd264e110a9dbad - pristine_git_object: 0ea26010bc53d5f562beb6a9637aa40cab8c03d6 + last_write_checksum: sha1:55b3a1b8bff0873ec0804da755fda550158e7d03 + pristine_git_object: 80a927281e7f1800c50cdf1eaaad0c72f057523c tests/test_client.py: id: 6b61d4b06ccc last_write_checksum: sha1:df970d19cdb9f9e057722699dc73965b6f9b1758 @@ -10745,8 +10966,8 @@ trackedFiles: pristine_git_object: 6cc8aeec3c52329d389081db0a27f10f53f214b9 tests/test_messages.py: id: be23089b1f8b - last_write_checksum: sha1:a91c985cd1d11560059dc448b10e0c7b75ed60e5 - pristine_git_object: dfdc18641f0d6c38d84b4603ad2da71f75f2e13c + last_write_checksum: sha1:2404e23964ef6a1f5ddc900402b34e597d2d9617 + pristine_git_object: 132005ec7d1e35f805b6a8c28e07e043bce22f0a tests/test_people.py: id: 37c243940039 last_write_checksum: sha1:2b78b1c5ea17f267895188b1b48ff9fe2bc19f17 @@ -10773,8 +10994,8 @@ trackedFiles: pristine_git_object: 63587d5a9e7b7e506ce9daf00d51ce92afb56035 tests/test_summarize.py: id: a255d8a6f627 - last_write_checksum: sha1:d0245ffca1533446942ac2b0f1109d4f6e9888b4 - pristine_git_object: f9c494d59cc7d73c8b3ea1c965b544c79625198a + last_write_checksum: sha1:37185416149f9acbd3383f6c279692aa31e2344a + pristine_git_object: 449a89669c90568cbef8fb81ea72eb5e5034bd39 tests/test_tools.py: id: 70889bdf7321 last_write_checksum: sha1:e9e37efd6a65d805c02d70d548df9c87dd062b0e @@ -12151,6 +12372,15 @@ examples: application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} "500": application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} + platform-chat-create-stream: + speakeasy-default-platform-chat-create-stream: + requestBody: + application/json: {"input": "What is our parental leave policy?", "stream": true, "store": true} + responses: + "400": + application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} + "500": + application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} examplesVersion: 1.0.2 generatedTests: activity: "2025-04-28T22:05:12+01:00" @@ -12351,6 +12581,7 @@ generatedTests: platform-trigger-presets-get: "2026-08-21T02:33:03Z" platform-trigger-presets-input-values-list: "2026-08-21T02:33:03Z" platform-trigger-presets-events-search: "2026-08-21T02:33:03Z" +releaseNotes: "## Python SDK Changes:\n* `glean.chat.create()`: \n * `request.stream` **Removed** (Breaking ⚠️)\n * `response.status[200].content[text/event-stream` **Removed** (Breaking ⚠️)\n" generatedFiles: - .devcontainer/README.md - .devcontainer/devcontainer.json diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index bb813888..0cd91706 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -34,7 +34,7 @@ generation: generateNewTests: true skipResponseBodyAssertions: true python: - version: 0.16.2 + version: 0.17.0 additionalDependencies: dev: {} main: {} diff --git a/.speakeasy/glean-merged-spec.yaml b/.speakeasy/glean-merged-spec.yaml index f13077c0..89d80e75 100644 --- a/.speakeasy/glean-merged-spec.yaml +++ b/.speakeasy/glean-merged-spec.yaml @@ -2,8 +2,8 @@ openapi: 3.1.0 info: version: "0.9.0" title: Glean API - x-source-commit-sha: 862fa29b6596610ab353977db068dc0775b41374 - x-open-api-commit-sha: 7da59003472c34503ffb3d3dfbd504f288990ba2 + x-source-commit-sha: 5466f502134b80b23f38908bc64369113503fdea + x-open-api-commit-sha: deb9f3c416b47e6ae3ae9af44a4b6a8ba8f61089 description: | # Introduction In addition to the data sources that Glean has built-in support for, Glean also provides a REST API that enables customers to put arbitrary content in the search index. This is useful, for example, for doing permissions-aware search over content in internal tools that reside on-prem as well as for searching over applications that Glean does not currently support first class. In addition these APIs allow the customer to push organization data (people info, organization structure etc) into Glean. @@ -267,7 +267,16 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/PlatformChatCreateRequest" + allOf: + - $ref: "#/components/schemas/PlatformChatCreateRequest" + - type: object + required: + - stream + properties: + stream: + type: boolean + const: false + default: false responses: "200": description: Successful response. @@ -275,31 +284,6 @@ paths: application/json: schema: $ref: "#/components/schemas/PlatformChatCompletedResponse" - text/event-stream: - schema: - type: string - description: | - Server-sent events for a streaming chat run. Event payloads are documented under ChatStream* schemas. - example: | - id: 1 - event: RESPONSE_CREATED - data: {"type":"RESPONSE_CREATED","response_id":"resp_e65a0a77-97a2-4c91-be60-eae7f6238015"} - - id: 2 - event: RESPONSE_PROGRESS - data: {"type":"RESPONSE_PROGRESS","response_id":"resp_e65a0a77-97a2-4c91-be60-eae7f6238015","text":"**Searching:** foo"} - - id: 3 - event: RESPONSE_OUTPUT_TEXT_DELTA - data: {"type":"RESPONSE_OUTPUT_TEXT_DELTA","response_id":"resp_e65a0a77-97a2-4c91-be60-eae7f6238015","delta":"Hello"} - - id: 4 - event: RESPONSE_OUTPUT_TEXT_DONE - data: {"type":"RESPONSE_OUTPUT_TEXT_DONE","response_id":"resp_e65a0a77-97a2-4c91-be60-eae7f6238015","text":"Hello"} - - id: 5 - event: RESPONSE_COMPLETED - data: {"type":"RESPONSE_COMPLETED","response_id":"resp_e65a0a77-97a2-4c91-be60-eae7f6238015","response":{"id":"resp_e65a0a77-97a2-4c91-be60-eae7f6238015","object":"RESPONSE","status":"COMPLETED","output":[{"type":"MESSAGE","role":"ASSISTANT","content":[{"type":"OUTPUT_TEXT","text":"Hello"}]}],"store":true,"request_id":"req_123","created_at":"2026-07-14T20:00:00Z"}} "400": $ref: "#/components/responses/PlatformBadRequest" "401": @@ -1747,6 +1731,65 @@ paths: x-speakeasy-name-override: searchPresetEvents security: - APIToken: [] + /api/chat#stream: + post: + tags: + - Chat + summary: SDK-only logical operation. HTTP clients must call the base path; the URL fragment is not sent. Create a chat response + description: | + SDK-only logical operation. HTTP clients must call the base path; the URL fragment is not sent. Run an assistant turn. Set `stream` to true to receive server-sent events; otherwise the response is a typed JSON response object. + operationId: platform-chat-create-stream + x-visibility: Public + x-glean-experimental: + id: e65a0a77-97a2-4c91-be60-eae7f6238015 + introduced: "2026-07-14" + x-codegen-request-body-name: payload + requestBody: + required: true + content: + application/json: + schema: + allOf: + - $ref: "#/components/schemas/PlatformChatCreateRequest" + - type: object + required: + - stream + properties: + stream: + type: boolean + const: true + default: true + responses: + "200": + description: Successful response. + content: + text/event-stream: + schema: + $ref: "#/components/schemas/PlatformChatStreamEventServerSentEvent" + "400": + $ref: "#/components/responses/PlatformBadRequest" + "401": + $ref: "#/components/responses/PlatformUnauthorized" + "403": + $ref: "#/components/responses/PlatformForbidden" + "404": + $ref: "#/components/responses/PlatformNotFound" + "408": + $ref: "#/components/responses/PlatformRequestTimeout" + "413": + $ref: "#/components/responses/PlatformRequestTooLarge" + "422": + $ref: "#/components/responses/PlatformUnprocessableEntity" + "429": + $ref: "#/components/responses/PlatformTooManyRequests" + "500": + $ref: "#/components/responses/PlatformInternalServerError" + "503": + $ref: "#/components/responses/PlatformServiceUnavailable" + x-speakeasy-group: chat + x-speakeasy-name-override: createStream + security: + - APIToken: [] /rest/api/v1/activity: post: operationId: activity @@ -7494,6 +7537,188 @@ components: request_id: type: string minLength: 1 + PlatformChatStreamResponseCreated: + type: object + additionalProperties: false + required: + - type + - response_id + properties: + type: + type: string + enum: + - RESPONSE_CREATED + response_id: + $ref: "#/components/schemas/PlatformChatStreamResponseId" + PlatformChatStreamProgress: + type: object + additionalProperties: false + required: + - type + - response_id + - text + properties: + type: + type: string + enum: + - RESPONSE_PROGRESS + response_id: + $ref: "#/components/schemas/PlatformChatStreamResponseId" + text: + type: string + minLength: 1 + description: | + Verbatim concatenated fragment text from an assistant UPDATE wire message. Display-oriented passthrough only; not part of the final answer and not present on terminal response snapshots. + PlatformChatStreamOutputTextDelta: + type: object + additionalProperties: false + required: + - type + - response_id + - delta + properties: + type: + type: string + enum: + - RESPONSE_OUTPUT_TEXT_DELTA + response_id: + $ref: "#/components/schemas/PlatformChatStreamResponseId" + delta: + type: string + PlatformChatStreamOutputTextDone: + type: object + additionalProperties: false + required: + - type + - response_id + - text + properties: + type: + type: string + enum: + - RESPONSE_OUTPUT_TEXT_DONE + response_id: + $ref: "#/components/schemas/PlatformChatStreamResponseId" + text: + type: string + PlatformChatStreamResponseCompleted: + type: object + additionalProperties: false + required: + - type + - response_id + - response + properties: + type: + type: string + enum: + - RESPONSE_COMPLETED + response_id: + $ref: "#/components/schemas/PlatformChatStreamResponseId" + response: + $ref: "#/components/schemas/PlatformChatCompletedResponse" + PlatformChatResponseError: + type: object + additionalProperties: false + required: + - message + properties: + code: + type: + - string + - "null" + description: | + Open snake_case error code aligned with ProblemDetail codes when present. Clients must tolerate unknown values; the set of codes is not a closed enum. Limit failures use `spend_limit_exceeded` (billing spend limit) and `token_limit_exceeded` (model context/token limit). + example: spend_limit_exceeded + message: + type: string + minLength: 1 + PlatformChatFailedResponse: + type: object + additionalProperties: false + required: + - id + - object + - created_at + - status + - output + - store + - request_id + - error + properties: + id: + $ref: "#/components/schemas/PlatformChatStreamResponseId" + object: + type: string + enum: + - RESPONSE + created_at: + type: string + format: date-time + description: RFC 3339 UTC timestamp when the response was created. + status: + type: string + enum: + - FAILED + output: + type: array + maxItems: 1 + items: + $ref: "#/components/schemas/PlatformChatOutputMessage" + store: + type: boolean + conversation_id: + type: + - string + - "null" + minLength: 1 + description: Present when the interaction was persisted. + request_id: + type: string + minLength: 1 + error: + $ref: "#/components/schemas/PlatformChatResponseError" + PlatformChatStreamResponseFailed: + type: object + additionalProperties: false + required: + - type + - response_id + - response + properties: + type: + type: string + enum: + - RESPONSE_FAILED + response_id: + $ref: "#/components/schemas/PlatformChatStreamResponseId" + response: + $ref: "#/components/schemas/PlatformChatFailedResponse" + PlatformChatStreamEvent: + description: | + JSON object written to the SSE `data` field. This schema is the payload for SDK transform, not the raw HTTP body. Do not run JSON response conformance on stream bodies. A typical wire frame is: + id: 1 + event: RESPONSE_CREATED + data: {"type":"RESPONSE_CREATED","response_id":"resp_e65a0a77-97a2-4c91-be60-eae7f6238015"} + example: + type: RESPONSE_CREATED + response_id: resp_e65a0a77-97a2-4c91-be60-eae7f6238015 + oneOf: + - $ref: "#/components/schemas/PlatformChatStreamResponseCreated" + - $ref: "#/components/schemas/PlatformChatStreamProgress" + - $ref: "#/components/schemas/PlatformChatStreamOutputTextDelta" + - $ref: "#/components/schemas/PlatformChatStreamOutputTextDone" + - $ref: "#/components/schemas/PlatformChatStreamResponseCompleted" + - $ref: "#/components/schemas/PlatformChatStreamResponseFailed" + discriminator: + propertyName: type + mapping: + RESPONSE_CREATED: "#/components/schemas/PlatformChatStreamResponseCreated" + RESPONSE_PROGRESS: "#/components/schemas/PlatformChatStreamProgress" + RESPONSE_OUTPUT_TEXT_DELTA: "#/components/schemas/PlatformChatStreamOutputTextDelta" + RESPONSE_OUTPUT_TEXT_DONE: "#/components/schemas/PlatformChatStreamOutputTextDone" + RESPONSE_COMPLETED: "#/components/schemas/PlatformChatStreamResponseCompleted" + RESPONSE_FAILED: "#/components/schemas/PlatformChatStreamResponseFailed" PlatformSkillStatus: type: string enum: @@ -8834,6 +9059,102 @@ components: minimum: 1 maximum: 100 default: 10 + PlatformChatStreamResponseCreatedServerSentEvent: + type: object + required: + - event + - data + properties: + id: + type: string + event: + type: string + const: RESPONSE_CREATED + data: + $ref: "#/components/schemas/PlatformChatStreamResponseCreated" + PlatformChatStreamProgressServerSentEvent: + type: object + required: + - event + - data + properties: + id: + type: string + event: + type: string + const: RESPONSE_PROGRESS + data: + $ref: "#/components/schemas/PlatformChatStreamProgress" + PlatformChatStreamOutputTextDeltaServerSentEvent: + type: object + required: + - event + - data + properties: + id: + type: string + event: + type: string + const: RESPONSE_OUTPUT_TEXT_DELTA + data: + $ref: "#/components/schemas/PlatformChatStreamOutputTextDelta" + PlatformChatStreamOutputTextDoneServerSentEvent: + type: object + required: + - event + - data + properties: + id: + type: string + event: + type: string + const: RESPONSE_OUTPUT_TEXT_DONE + data: + $ref: "#/components/schemas/PlatformChatStreamOutputTextDone" + PlatformChatStreamResponseCompletedServerSentEvent: + type: object + required: + - event + - data + properties: + id: + type: string + event: + type: string + const: RESPONSE_COMPLETED + data: + $ref: "#/components/schemas/PlatformChatStreamResponseCompleted" + PlatformChatStreamResponseFailedServerSentEvent: + type: object + required: + - event + - data + properties: + id: + type: string + event: + type: string + const: RESPONSE_FAILED + data: + $ref: "#/components/schemas/PlatformChatStreamResponseFailed" + PlatformChatStreamEventServerSentEvent: + description: A typed server-sent event. + oneOf: + - $ref: "#/components/schemas/PlatformChatStreamResponseCreatedServerSentEvent" + - $ref: "#/components/schemas/PlatformChatStreamProgressServerSentEvent" + - $ref: "#/components/schemas/PlatformChatStreamOutputTextDeltaServerSentEvent" + - $ref: "#/components/schemas/PlatformChatStreamOutputTextDoneServerSentEvent" + - $ref: "#/components/schemas/PlatformChatStreamResponseCompletedServerSentEvent" + - $ref: "#/components/schemas/PlatformChatStreamResponseFailedServerSentEvent" + discriminator: + propertyName: event + mapping: + RESPONSE_CREATED: "#/components/schemas/PlatformChatStreamResponseCreatedServerSentEvent" + RESPONSE_PROGRESS: "#/components/schemas/PlatformChatStreamProgressServerSentEvent" + RESPONSE_OUTPUT_TEXT_DELTA: "#/components/schemas/PlatformChatStreamOutputTextDeltaServerSentEvent" + RESPONSE_OUTPUT_TEXT_DONE: "#/components/schemas/PlatformChatStreamOutputTextDoneServerSentEvent" + RESPONSE_COMPLETED: "#/components/schemas/PlatformChatStreamResponseCompletedServerSentEvent" + RESPONSE_FAILED: "#/components/schemas/PlatformChatStreamResponseFailedServerSentEvent" ActivityEventParams: properties: bodyContent: @@ -13109,7 +13430,7 @@ components: serverToolResponse: $ref: '#/components/schemas/ServerToolResponse' description: response corresponding to the server tool request. - description: Represents a part of a ChatMessage that originates from a single action/tool. It is designed to support rich data formats beyond simple text, allowing for a more dynamic and interactive chat experience. Each fragment can include various types of content, such as text, search queries, action information, and more. Also, each ChatMessageFragment should only have one of structuredResults, querySuggestion, writeAction, followupAction, agentRecommendation, followupRoutingSuggestion or file. + description: A typed fragment within a chat message that carries text or structured content such as citations, actions, and tool output. ChatMessage: properties: agentConfig: diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index b7a81452..8805bd03 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,9 +1,9 @@ -speakeasyVersion: 1.796.2 +speakeasyVersion: 1.796.3 sources: Glean API: sourceNamespace: glean-api-specs - sourceRevisionDigest: sha256:faf6216f7af1ea286cda9f5cb3651d558dc113ed8246a5798ada35f1ab2c299b - sourceBlobDigest: sha256:acb7234d6abdf60c49f93ce4c86e1c54458833c9f380dba862e74212a40b626c + sourceRevisionDigest: sha256:c3b4f0e688c6d223d13c83e67e70dc820492ca5fcd414813d666f6fd0f7476f0 + sourceBlobDigest: sha256:bded81b38b07e32713883fe38eb46f3f2f1052ed0d3d8f8e3668f14d950eacd3 tags: - latest Glean Client API: @@ -16,10 +16,10 @@ targets: glean: source: Glean API sourceNamespace: glean-api-specs - sourceRevisionDigest: sha256:faf6216f7af1ea286cda9f5cb3651d558dc113ed8246a5798ada35f1ab2c299b - sourceBlobDigest: sha256:acb7234d6abdf60c49f93ce4c86e1c54458833c9f380dba862e74212a40b626c + sourceRevisionDigest: sha256:c3b4f0e688c6d223d13c83e67e70dc820492ca5fcd414813d666f6fd0f7476f0 + sourceBlobDigest: sha256:bded81b38b07e32713883fe38eb46f3f2f1052ed0d3d8f8e3668f14d950eacd3 codeSamplesNamespace: glean-api-specs-python-code-samples - codeSamplesRevisionDigest: sha256:f07b79841adb49b0b8983613a84ed0ee45993f4416efcd393b96d344f5eb5c64 + codeSamplesRevisionDigest: sha256:c631f899a17bf6ae9a7d7762deee068886d03e83282729e1858cd955c45171b0 workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/README.md b/README.md index 46f90bb0..5e71d9fb 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ Remember that each namespace requires its own authentication token type as descr * [SDK Example Usage](#sdk-example-usage) * [Authentication](#authentication) * [Available Resources and Operations](#available-resources-and-operations) + * [Server-sent event streaming](#server-sent-event-streaming) * [File uploads](#file-uploads) * [Retries](#retries) * [Error Handling](#error-handling) @@ -324,6 +325,7 @@ For more information on obtaining the appropriate token type, please contact you ### [Chat](docs/sdks/chatsdk/README.md) * [create](docs/sdks/chatsdk/README.md#create) - Create a chat response +* [create_stream](docs/sdks/chatsdk/README.md#create_stream) - SDK-only logical operation. HTTP clients must call the base path; the URL fragment is not sent. Create a chat response ### [Client.Activity](docs/sdks/clientactivity/README.md) @@ -590,6 +592,41 @@ For more information on obtaining the appropriate token type, please contact you + +## Server-sent event streaming + +[Server-sent events][mdn-sse] are used to stream content from certain +operations. These operations will expose the stream as [Generator][generator] that +can be consumed using a simple `for` loop. The loop will +terminate when the server no longer has any events to send and closes the +underlying connection. + +The stream is also a [Context Manager][context-manager] and can be used with the `with` statement and will close the +underlying connection when the context is exited. + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.chat.create_stream(input="What is our parental leave policy?", store=True) + + with res as event_stream: + for event in event_stream: + # handle event + print(event, flush=True) + +``` + +[mdn-sse]: https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events +[generator]: https://book.pythontips.com/en/latest/generators.html +[context-manager]: https://book.pythontips.com/en/latest/context_managers.html + + ## File uploads diff --git a/RELEASES.md b/RELEASES.md index e13e992b..7c4e0ed2 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -848,4 +848,14 @@ Based on: ### Generated - [python v0.16.2] . ### Releases -- [PyPI v0.16.2] https://pypi.org/project/glean-api-client/0.16.2 - . \ No newline at end of file +- [PyPI v0.16.2] https://pypi.org/project/glean-api-client/0.16.2 - . + +## 2026-09-02 18:54:08 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.796.3 (2.934.1) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.17.0] . +### Releases +- [PyPI v0.17.0] https://pypi.org/project/glean-api-client/0.17.0 - . \ No newline at end of file diff --git a/docs/models/chatmessagefragment.md b/docs/models/chatmessagefragment.md index 9fbc47f8..b63a3299 100644 --- a/docs/models/chatmessagefragment.md +++ b/docs/models/chatmessagefragment.md @@ -1,6 +1,6 @@ # ChatMessageFragment -Represents a part of a ChatMessage that originates from a single action/tool. It is designed to support rich data formats beyond simple text, allowing for a more dynamic and interactive chat experience. Each fragment can include various types of content, such as text, search queries, action information, and more. Also, each ChatMessageFragment should only have one of structuredResults, querySuggestion, writeAction, followupAction, agentRecommendation, followupRoutingSuggestion or file. +A typed fragment within a chat message that carries text or structured content such as citations, actions, and tool output. ## Fields diff --git a/docs/models/object.md b/docs/models/object.md deleted file mode 100644 index 06f80d51..00000000 --- a/docs/models/object.md +++ /dev/null @@ -1,16 +0,0 @@ -# Object - -## Example Usage - -```python -from glean.api_client.models import Object - -value = Object.RESPONSE -``` - - -## Values - -| Name | Value | -| ---------- | ---------- | -| `RESPONSE` | RESPONSE | \ No newline at end of file diff --git a/docs/models/platformchatcompletedresponse.md b/docs/models/platformchatcompletedresponse.md index 34af8ff1..0bf8bdda 100644 --- a/docs/models/platformchatcompletedresponse.md +++ b/docs/models/platformchatcompletedresponse.md @@ -6,7 +6,7 @@ | Field | Type | Required | Description | | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | *str* | :heavy_check_mark: | Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response.
| -| `object` | [models.Object](../models/object.md) | :heavy_check_mark: | N/A | +| `object` | [models.PlatformChatCompletedResponseObject](../models/platformchatcompletedresponseobject.md) | :heavy_check_mark: | N/A | | `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | RFC 3339 UTC timestamp when the response was created. | | `status` | [models.PlatformChatCompletedResponseStatus](../models/platformchatcompletedresponsestatus.md) | :heavy_check_mark: | N/A | | `output` | List[[models.PlatformChatOutputMessage](../models/platformchatoutputmessage.md)] | :heavy_check_mark: | N/A | diff --git a/docs/models/platformchatcompletedresponseobject.md b/docs/models/platformchatcompletedresponseobject.md new file mode 100644 index 00000000..7629d14c --- /dev/null +++ b/docs/models/platformchatcompletedresponseobject.md @@ -0,0 +1,16 @@ +# PlatformChatCompletedResponseObject + +## Example Usage + +```python +from glean.api_client.models import PlatformChatCompletedResponseObject + +value = PlatformChatCompletedResponseObject.RESPONSE +``` + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `RESPONSE` | RESPONSE | \ No newline at end of file diff --git a/docs/models/input.md b/docs/models/platformchatcreateinput.md similarity index 92% rename from docs/models/input.md rename to docs/models/platformchatcreateinput.md index c54bec05..9ee0df25 100644 --- a/docs/models/input.md +++ b/docs/models/platformchatcreateinput.md @@ -1,4 +1,4 @@ -# Input +# PlatformChatCreateInput Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. diff --git a/docs/models/platformchatcreaterequest.md b/docs/models/platformchatcreaterequest.md index f37f1031..82808d05 100644 --- a/docs/models/platformchatcreaterequest.md +++ b/docs/models/platformchatcreaterequest.md @@ -5,7 +5,7 @@ | Field | Type | Required | Description | | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | -| `input` | [models.Input](../models/input.md) | :heavy_check_mark: | Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`.
| -| `stream` | *Optional[bool]* | :heavy_minus_sign: | When true, respond with `text/event-stream`. When false or omitted, respond with `application/json`.
| +| `input` | [models.PlatformChatCreateInput](../models/platformchatcreateinput.md) | :heavy_check_mark: | Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`.
| +| `stream` | *Optional[Literal[False]]* | :heavy_minus_sign: | N/A | | `store` | *Optional[bool]* | :heavy_minus_sign: | When true (default), persist the interaction and return a `conversation_id`. When false, run ephemerally with no persistence.
| | `conversation_id` | *Optional[str]* | :heavy_minus_sign: | Continue an existing stored conversation. Incompatible with message-array `input` and with `store: false`.
| \ No newline at end of file diff --git a/docs/models/platformchatcreateresponse.md b/docs/models/platformchatcreateresponse.md deleted file mode 100644 index 8cf9edc1..00000000 --- a/docs/models/platformchatcreateresponse.md +++ /dev/null @@ -1,17 +0,0 @@ -# PlatformChatCreateResponse - - -## Supported Types - -### `models.PlatformChatCompletedResponse` - -```python -value: models.PlatformChatCompletedResponse = /* values here */ -``` - -### `str` - -```python -value: str = /* values here */ -``` - diff --git a/docs/models/platformchatcreatestreaminput.md b/docs/models/platformchatcreatestreaminput.md new file mode 100644 index 00000000..250ba3f9 --- /dev/null +++ b/docs/models/platformchatcreatestreaminput.md @@ -0,0 +1,20 @@ +# PlatformChatCreateStreamInput + +Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. + + + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `List[models.PlatformChatInputMessage]` + +```python +value: List[models.PlatformChatInputMessage] = /* values here */ +``` + diff --git a/docs/models/platformchatcreatestreamrequest.md b/docs/models/platformchatcreatestreamrequest.md new file mode 100644 index 00000000..484d017f --- /dev/null +++ b/docs/models/platformchatcreatestreamrequest.md @@ -0,0 +1,11 @@ +# PlatformChatCreateStreamRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | +| `input` | [models.PlatformChatCreateStreamInput](../models/platformchatcreatestreaminput.md) | :heavy_check_mark: | Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`.
| +| `stream` | *Optional[Literal[True]]* | :heavy_minus_sign: | N/A | +| `store` | *Optional[bool]* | :heavy_minus_sign: | When true (default), persist the interaction and return a `conversation_id`. When false, run ephemerally with no persistence.
| +| `conversation_id` | *Optional[str]* | :heavy_minus_sign: | Continue an existing stored conversation. Incompatible with message-array `input` and with `store: false`.
| \ No newline at end of file diff --git a/docs/models/platformchatfailedresponse.md b/docs/models/platformchatfailedresponse.md new file mode 100644 index 00000000..544d0f89 --- /dev/null +++ b/docs/models/platformchatfailedresponse.md @@ -0,0 +1,16 @@ +# PlatformChatFailedResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response.
| +| `object` | [models.PlatformChatFailedResponseObject](../models/platformchatfailedresponseobject.md) | :heavy_check_mark: | N/A | +| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | RFC 3339 UTC timestamp when the response was created. | +| `status` | [models.PlatformChatFailedResponseStatus](../models/platformchatfailedresponsestatus.md) | :heavy_check_mark: | N/A | +| `output` | List[[models.PlatformChatOutputMessage](../models/platformchatoutputmessage.md)] | :heavy_check_mark: | N/A | +| `store` | *bool* | :heavy_check_mark: | N/A | +| `conversation_id` | *OptionalNullable[str]* | :heavy_minus_sign: | Present when the interaction was persisted. | +| `request_id` | *str* | :heavy_check_mark: | N/A | +| `error` | [models.PlatformChatResponseError](../models/platformchatresponseerror.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformchatfailedresponseobject.md b/docs/models/platformchatfailedresponseobject.md new file mode 100644 index 00000000..4749698b --- /dev/null +++ b/docs/models/platformchatfailedresponseobject.md @@ -0,0 +1,16 @@ +# PlatformChatFailedResponseObject + +## Example Usage + +```python +from glean.api_client.models import PlatformChatFailedResponseObject + +value = PlatformChatFailedResponseObject.RESPONSE +``` + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `RESPONSE` | RESPONSE | \ No newline at end of file diff --git a/docs/models/platformchatfailedresponsestatus.md b/docs/models/platformchatfailedresponsestatus.md new file mode 100644 index 00000000..752dc109 --- /dev/null +++ b/docs/models/platformchatfailedresponsestatus.md @@ -0,0 +1,16 @@ +# PlatformChatFailedResponseStatus + +## Example Usage + +```python +from glean.api_client.models import PlatformChatFailedResponseStatus + +value = PlatformChatFailedResponseStatus.FAILED +``` + + +## Values + +| Name | Value | +| -------- | -------- | +| `FAILED` | FAILED | \ No newline at end of file diff --git a/docs/models/platformchatresponseerror.md b/docs/models/platformchatresponseerror.md new file mode 100644 index 00000000..ca5bddbd --- /dev/null +++ b/docs/models/platformchatresponseerror.md @@ -0,0 +1,9 @@ +# PlatformChatResponseError + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `code` | *OptionalNullable[str]* | :heavy_minus_sign: | Open snake_case error code aligned with ProblemDetail codes when present. Clients must tolerate unknown values; the set of codes is not a closed enum. Limit failures use `spend_limit_exceeded` (billing spend limit) and `token_limit_exceeded` (model context/token limit).
| spend_limit_exceeded | +| `message` | *str* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/platformchatstreameventserversentevent.md b/docs/models/platformchatstreameventserversentevent.md new file mode 100644 index 00000000..6879d646 --- /dev/null +++ b/docs/models/platformchatstreameventserversentevent.md @@ -0,0 +1,43 @@ +# PlatformChatStreamEventServerSentEvent + +A typed server-sent event. + + +## Supported Types + +### `models.PlatformChatStreamResponseCreatedServerSentEvent` + +```python +value: models.PlatformChatStreamResponseCreatedServerSentEvent = /* values here */ +``` + +### `models.PlatformChatStreamProgressServerSentEvent` + +```python +value: models.PlatformChatStreamProgressServerSentEvent = /* values here */ +``` + +### `models.PlatformChatStreamOutputTextDeltaServerSentEvent` + +```python +value: models.PlatformChatStreamOutputTextDeltaServerSentEvent = /* values here */ +``` + +### `models.PlatformChatStreamOutputTextDoneServerSentEvent` + +```python +value: models.PlatformChatStreamOutputTextDoneServerSentEvent = /* values here */ +``` + +### `models.PlatformChatStreamResponseCompletedServerSentEvent` + +```python +value: models.PlatformChatStreamResponseCompletedServerSentEvent = /* values here */ +``` + +### `models.PlatformChatStreamResponseFailedServerSentEvent` + +```python +value: models.PlatformChatStreamResponseFailedServerSentEvent = /* values here */ +``` + diff --git a/docs/models/platformchatstreamoutputtextdelta.md b/docs/models/platformchatstreamoutputtextdelta.md new file mode 100644 index 00000000..a29201e0 --- /dev/null +++ b/docs/models/platformchatstreamoutputtextdelta.md @@ -0,0 +1,10 @@ +# PlatformChatStreamOutputTextDelta + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.PlatformChatStreamOutputTextDeltaType](../models/platformchatstreamoutputtextdeltatype.md) | :heavy_check_mark: | N/A | +| `response_id` | *str* | :heavy_check_mark: | Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response.
| +| `delta` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformchatstreamoutputtextdeltaserversentevent.md b/docs/models/platformchatstreamoutputtextdeltaserversentevent.md new file mode 100644 index 00000000..7fad1b07 --- /dev/null +++ b/docs/models/platformchatstreamoutputtextdeltaserversentevent.md @@ -0,0 +1,10 @@ +# PlatformChatStreamOutputTextDeltaServerSentEvent + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `event` | *Literal["RESPONSE_OUTPUT_TEXT_DELTA"]* | :heavy_check_mark: | N/A | +| `data` | [models.PlatformChatStreamOutputTextDelta](../models/platformchatstreamoutputtextdelta.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformchatstreamoutputtextdeltatype.md b/docs/models/platformchatstreamoutputtextdeltatype.md new file mode 100644 index 00000000..6b682ee9 --- /dev/null +++ b/docs/models/platformchatstreamoutputtextdeltatype.md @@ -0,0 +1,16 @@ +# PlatformChatStreamOutputTextDeltaType + +## Example Usage + +```python +from glean.api_client.models import PlatformChatStreamOutputTextDeltaType + +value = PlatformChatStreamOutputTextDeltaType.RESPONSE_OUTPUT_TEXT_DELTA +``` + + +## Values + +| Name | Value | +| ---------------------------- | ---------------------------- | +| `RESPONSE_OUTPUT_TEXT_DELTA` | RESPONSE_OUTPUT_TEXT_DELTA | \ No newline at end of file diff --git a/docs/models/platformchatstreamoutputtextdone.md b/docs/models/platformchatstreamoutputtextdone.md new file mode 100644 index 00000000..6b973068 --- /dev/null +++ b/docs/models/platformchatstreamoutputtextdone.md @@ -0,0 +1,10 @@ +# PlatformChatStreamOutputTextDone + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.PlatformChatStreamOutputTextDoneType](../models/platformchatstreamoutputtextdonetype.md) | :heavy_check_mark: | N/A | +| `response_id` | *str* | :heavy_check_mark: | Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response.
| +| `text` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformchatstreamoutputtextdoneserversentevent.md b/docs/models/platformchatstreamoutputtextdoneserversentevent.md new file mode 100644 index 00000000..56aa4f6c --- /dev/null +++ b/docs/models/platformchatstreamoutputtextdoneserversentevent.md @@ -0,0 +1,10 @@ +# PlatformChatStreamOutputTextDoneServerSentEvent + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `event` | *Literal["RESPONSE_OUTPUT_TEXT_DONE"]* | :heavy_check_mark: | N/A | +| `data` | [models.PlatformChatStreamOutputTextDone](../models/platformchatstreamoutputtextdone.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformchatstreamoutputtextdonetype.md b/docs/models/platformchatstreamoutputtextdonetype.md new file mode 100644 index 00000000..2acc83ea --- /dev/null +++ b/docs/models/platformchatstreamoutputtextdonetype.md @@ -0,0 +1,16 @@ +# PlatformChatStreamOutputTextDoneType + +## Example Usage + +```python +from glean.api_client.models import PlatformChatStreamOutputTextDoneType + +value = PlatformChatStreamOutputTextDoneType.RESPONSE_OUTPUT_TEXT_DONE +``` + + +## Values + +| Name | Value | +| --------------------------- | --------------------------- | +| `RESPONSE_OUTPUT_TEXT_DONE` | RESPONSE_OUTPUT_TEXT_DONE | \ No newline at end of file diff --git a/docs/models/platformchatstreamprogress.md b/docs/models/platformchatstreamprogress.md new file mode 100644 index 00000000..ff966e3f --- /dev/null +++ b/docs/models/platformchatstreamprogress.md @@ -0,0 +1,10 @@ +# PlatformChatStreamProgress + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.PlatformChatStreamProgressType](../models/platformchatstreamprogresstype.md) | :heavy_check_mark: | N/A | +| `response_id` | *str* | :heavy_check_mark: | Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response.
| +| `text` | *str* | :heavy_check_mark: | Verbatim concatenated fragment text from an assistant UPDATE wire message. Display-oriented passthrough only; not part of the final answer and not present on terminal response snapshots.
| \ No newline at end of file diff --git a/docs/models/platformchatstreamprogressserversentevent.md b/docs/models/platformchatstreamprogressserversentevent.md new file mode 100644 index 00000000..99cf822f --- /dev/null +++ b/docs/models/platformchatstreamprogressserversentevent.md @@ -0,0 +1,10 @@ +# PlatformChatStreamProgressServerSentEvent + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `event` | *Literal["RESPONSE_PROGRESS"]* | :heavy_check_mark: | N/A | +| `data` | [models.PlatformChatStreamProgress](../models/platformchatstreamprogress.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformchatstreamprogresstype.md b/docs/models/platformchatstreamprogresstype.md new file mode 100644 index 00000000..004a13e0 --- /dev/null +++ b/docs/models/platformchatstreamprogresstype.md @@ -0,0 +1,16 @@ +# PlatformChatStreamProgressType + +## Example Usage + +```python +from glean.api_client.models import PlatformChatStreamProgressType + +value = PlatformChatStreamProgressType.RESPONSE_PROGRESS +``` + + +## Values + +| Name | Value | +| ------------------- | ------------------- | +| `RESPONSE_PROGRESS` | RESPONSE_PROGRESS | \ No newline at end of file diff --git a/docs/models/platformchatstreamresponsecompleted.md b/docs/models/platformchatstreamresponsecompleted.md new file mode 100644 index 00000000..ae6b71d3 --- /dev/null +++ b/docs/models/platformchatstreamresponsecompleted.md @@ -0,0 +1,10 @@ +# PlatformChatStreamResponseCompleted + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.PlatformChatStreamResponseCompletedType](../models/platformchatstreamresponsecompletedtype.md) | :heavy_check_mark: | N/A | +| `response_id` | *str* | :heavy_check_mark: | Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response.
| +| `response` | [models.PlatformChatCompletedResponse](../models/platformchatcompletedresponse.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformchatstreamresponsecompletedserversentevent.md b/docs/models/platformchatstreamresponsecompletedserversentevent.md new file mode 100644 index 00000000..70c516c8 --- /dev/null +++ b/docs/models/platformchatstreamresponsecompletedserversentevent.md @@ -0,0 +1,10 @@ +# PlatformChatStreamResponseCompletedServerSentEvent + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `event` | *Literal["RESPONSE_COMPLETED"]* | :heavy_check_mark: | N/A | +| `data` | [models.PlatformChatStreamResponseCompleted](../models/platformchatstreamresponsecompleted.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformchatstreamresponsecompletedtype.md b/docs/models/platformchatstreamresponsecompletedtype.md new file mode 100644 index 00000000..593e30a6 --- /dev/null +++ b/docs/models/platformchatstreamresponsecompletedtype.md @@ -0,0 +1,16 @@ +# PlatformChatStreamResponseCompletedType + +## Example Usage + +```python +from glean.api_client.models import PlatformChatStreamResponseCompletedType + +value = PlatformChatStreamResponseCompletedType.RESPONSE_COMPLETED +``` + + +## Values + +| Name | Value | +| -------------------- | -------------------- | +| `RESPONSE_COMPLETED` | RESPONSE_COMPLETED | \ No newline at end of file diff --git a/docs/models/platformchatstreamresponsecreated.md b/docs/models/platformchatstreamresponsecreated.md new file mode 100644 index 00000000..b2c693c7 --- /dev/null +++ b/docs/models/platformchatstreamresponsecreated.md @@ -0,0 +1,9 @@ +# PlatformChatStreamResponseCreated + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.PlatformChatStreamResponseCreatedType](../models/platformchatstreamresponsecreatedtype.md) | :heavy_check_mark: | N/A | +| `response_id` | *str* | :heavy_check_mark: | Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response.
| \ No newline at end of file diff --git a/docs/models/platformchatstreamresponsecreatedserversentevent.md b/docs/models/platformchatstreamresponsecreatedserversentevent.md new file mode 100644 index 00000000..4e612bbf --- /dev/null +++ b/docs/models/platformchatstreamresponsecreatedserversentevent.md @@ -0,0 +1,10 @@ +# PlatformChatStreamResponseCreatedServerSentEvent + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `event` | *Literal["RESPONSE_CREATED"]* | :heavy_check_mark: | N/A | +| `data` | [models.PlatformChatStreamResponseCreated](../models/platformchatstreamresponsecreated.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformchatstreamresponsecreatedtype.md b/docs/models/platformchatstreamresponsecreatedtype.md new file mode 100644 index 00000000..f1762178 --- /dev/null +++ b/docs/models/platformchatstreamresponsecreatedtype.md @@ -0,0 +1,16 @@ +# PlatformChatStreamResponseCreatedType + +## Example Usage + +```python +from glean.api_client.models import PlatformChatStreamResponseCreatedType + +value = PlatformChatStreamResponseCreatedType.RESPONSE_CREATED +``` + + +## Values + +| Name | Value | +| ------------------ | ------------------ | +| `RESPONSE_CREATED` | RESPONSE_CREATED | \ No newline at end of file diff --git a/docs/models/platformchatstreamresponsefailed.md b/docs/models/platformchatstreamresponsefailed.md new file mode 100644 index 00000000..979cf487 --- /dev/null +++ b/docs/models/platformchatstreamresponsefailed.md @@ -0,0 +1,10 @@ +# PlatformChatStreamResponseFailed + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.PlatformChatStreamResponseFailedType](../models/platformchatstreamresponsefailedtype.md) | :heavy_check_mark: | N/A | +| `response_id` | *str* | :heavy_check_mark: | Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response.
| +| `response` | [models.PlatformChatFailedResponse](../models/platformchatfailedresponse.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformchatstreamresponsefailedserversentevent.md b/docs/models/platformchatstreamresponsefailedserversentevent.md new file mode 100644 index 00000000..13304646 --- /dev/null +++ b/docs/models/platformchatstreamresponsefailedserversentevent.md @@ -0,0 +1,10 @@ +# PlatformChatStreamResponseFailedServerSentEvent + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `event` | *Literal["RESPONSE_FAILED"]* | :heavy_check_mark: | N/A | +| `data` | [models.PlatformChatStreamResponseFailed](../models/platformchatstreamresponsefailed.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformchatstreamresponsefailedtype.md b/docs/models/platformchatstreamresponsefailedtype.md new file mode 100644 index 00000000..d878152e --- /dev/null +++ b/docs/models/platformchatstreamresponsefailedtype.md @@ -0,0 +1,16 @@ +# PlatformChatStreamResponseFailedType + +## Example Usage + +```python +from glean.api_client.models import PlatformChatStreamResponseFailedType + +value = PlatformChatStreamResponseFailedType.RESPONSE_FAILED +``` + + +## Values + +| Name | Value | +| ----------------- | ----------------- | +| `RESPONSE_FAILED` | RESPONSE_FAILED | \ No newline at end of file diff --git a/docs/sdks/chatsdk/README.md b/docs/sdks/chatsdk/README.md index f541f724..58f9aea3 100644 --- a/docs/sdks/chatsdk/README.md +++ b/docs/sdks/chatsdk/README.md @@ -5,6 +5,7 @@ ### Available Operations * [create](#create) - Create a chat response +* [create_stream](#create_stream) - SDK-only logical operation. HTTP clients must call the base path; the URL fragment is not sent. Create a chat response ## create @@ -23,7 +24,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.chat.create(input="What is our parental leave policy?", stream=False, store=True) + res = glean.chat.create(input="What is our parental leave policy?", store=True) # Handle response print(res) @@ -34,15 +35,61 @@ with Glean( | Parameter | Type | Required | Description | | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | -| `input` | [models.Input](../../models/input.md) | :heavy_check_mark: | Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`.
| -| `stream` | *Optional[bool]* | :heavy_minus_sign: | When true, respond with `text/event-stream`. When false or omitted, respond with `application/json`.
| +| `input` | [models.PlatformChatCreateInput](../../models/platformchatcreateinput.md) | :heavy_check_mark: | Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`.
| | `store` | *Optional[bool]* | :heavy_minus_sign: | When true (default), persist the interaction and return a `conversation_id`. When false, run ephemerally with no persistence.
| | `conversation_id` | *Optional[str]* | :heavy_minus_sign: | Continue an existing stored conversation. Incompatible with message-array `input` and with `store: false`.
| | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[models.PlatformChatCreateResponse](../../models/platformchatcreateresponse.md)** +**[models.PlatformChatCompletedResponse](../../models/platformchatcompletedresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 413, 422, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## create_stream + +SDK-only logical operation. HTTP clients must call the base path; the URL fragment is not sent. Run an assistant turn. Set `stream` to true to receive server-sent events; otherwise the response is a typed JSON response object. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.chat.create_stream(input="What is our parental leave policy?", store=True) + + with res as event_stream: + for event in event_stream: + # handle event + print(event, flush=True) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | +| `input` | [models.PlatformChatCreateStreamInput](../../models/platformchatcreatestreaminput.md) | :heavy_check_mark: | Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`.
| +| `store` | *Optional[bool]* | :heavy_minus_sign: | When true (default), persist the interaction and return a `conversation_id`. When false, run ephemerally with no persistence.
| +| `conversation_id` | *Optional[str]* | :heavy_minus_sign: | Continue an existing stored conversation. Incompatible with message-array `input` and with `store: false`.
| +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[Union[eventstreaming.EventStream[models.PlatformChatStreamEventServerSentEvent], eventstreaming.EventStreamAsync[models.PlatformChatStreamEventServerSentEvent]]](../../models/.md)** ### Errors diff --git a/pyproject.toml b/pyproject.toml index fbc50d45..c4dcc6eb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "glean-api-client" -version = "0.16.2" +version = "0.17.0" description = "Python Client SDK Generated by Speakeasy." authors = [{ name = "Glean Technologies, Inc." },] readme = "README-PYPI.md" diff --git a/src/glean/api_client/_version.py b/src/glean/api_client/_version.py index f1e4b679..6ac9bc6e 100644 --- a/src/glean/api_client/_version.py +++ b/src/glean/api_client/_version.py @@ -3,10 +3,10 @@ import importlib.metadata __title__: str = "glean-api-client" -__version__: str = "0.16.2" +__version__: str = "0.17.0" __openapi_doc_version__: str = "0.9.0" -__gen_version__: str = "2.933.0" -__user_agent__: str = "speakeasy-sdk/python 0.16.2 2.933.0 0.9.0 glean-api-client" +__gen_version__: str = "2.934.1" +__user_agent__: str = "speakeasy-sdk/python 0.17.0 2.934.1 0.9.0 glean-api-client" try: if __package__ is not None: diff --git a/src/glean/api_client/chat_sdk.py b/src/glean/api_client/chat_sdk.py index 8d63acc6..80bd36d3 100644 --- a/src/glean/api_client/chat_sdk.py +++ b/src/glean/api_client/chat_sdk.py @@ -1,34 +1,28 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from .basesdk import BaseSDK -from enum import Enum from glean.api_client import errors, models, utils from glean.api_client._hooks import HookContext from glean.api_client.types import OptionalNullable, UNSET -from glean.api_client.utils import get_security_from_env +from glean.api_client.utils import eventstreaming, get_security_from_env from glean.api_client.utils.unmarshal_json_response import unmarshal_json_response from typing import Any, Mapping, Optional, Union -class CreateAcceptEnum(str, Enum): - APPLICATION_JSON = "application/json" - TEXT_EVENT_STREAM = "text/event-stream" - - class ChatSDK(BaseSDK): def create( self, *, - input: Union[models.Input, models.InputTypedDict], - stream: Optional[bool] = False, + input: Union[ + models.PlatformChatCreateInput, models.PlatformChatCreateInputTypedDict + ], store: Optional[bool] = True, conversation_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, - accept_header_override: Optional[CreateAcceptEnum] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.PlatformChatCreateResponse: + ) -> models.PlatformChatCompletedResponse: r"""Create a chat response Run an assistant turn. Set `stream` to true to receive server-sent events; otherwise the response is a typed JSON response object. @@ -36,8 +30,6 @@ def create( :param input: Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. - :param stream: When true, respond with `text/event-stream`. When false or omitted, respond with `application/json`. - :param store: When true (default), persist the interaction and return a `conversation_id`. When false, run ephemerally with no persistence. :param conversation_id: Continue an existing stored conversation. Incompatible with message-array `input` and with `store: false`. @@ -45,7 +37,6 @@ def create( :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param accept_header_override: Override the default accept header for this method :param http_headers: Additional headers to set or replace on requests. """ base_url = None @@ -59,8 +50,7 @@ def create( base_url = self._get_url(base_url, url_variables) request = models.PlatformChatCreateRequest( - input=utils.get_pydantic_model(input, models.Input), - stream=stream, + input=utils.get_pydantic_model(input, models.PlatformChatCreateInput), store=store, conversation_id=conversation_id, ) @@ -75,9 +65,7 @@ def create( request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value=accept_header_override.value - if accept_header_override is not None - else "application/json;q=1, text/event-stream;q=0", + accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( @@ -124,8 +112,6 @@ def create( return unmarshal_json_response( models.PlatformChatCompletedResponse, http_res ) - if utils.match_response(http_res, "200", "text/event-stream"): - return http_res.text if utils.match_response( http_res, ["400", "401", "403", "404", "408", "413", "422", "429"], @@ -152,16 +138,16 @@ def create( async def create_async( self, *, - input: Union[models.Input, models.InputTypedDict], - stream: Optional[bool] = False, + input: Union[ + models.PlatformChatCreateInput, models.PlatformChatCreateInputTypedDict + ], store: Optional[bool] = True, conversation_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, - accept_header_override: Optional[CreateAcceptEnum] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.PlatformChatCreateResponse: + ) -> models.PlatformChatCompletedResponse: r"""Create a chat response Run an assistant turn. Set `stream` to true to receive server-sent events; otherwise the response is a typed JSON response object. @@ -169,8 +155,6 @@ async def create_async( :param input: Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. - :param stream: When true, respond with `text/event-stream`. When false or omitted, respond with `application/json`. - :param store: When true (default), persist the interaction and return a `conversation_id`. When false, run ephemerally with no persistence. :param conversation_id: Continue an existing stored conversation. Incompatible with message-array `input` and with `store: false`. @@ -178,7 +162,6 @@ async def create_async( :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param accept_header_override: Override the default accept header for this method :param http_headers: Additional headers to set or replace on requests. """ base_url = None @@ -192,8 +175,7 @@ async def create_async( base_url = self._get_url(base_url, url_variables) request = models.PlatformChatCreateRequest( - input=utils.get_pydantic_model(input, models.Input), - stream=stream, + input=utils.get_pydantic_model(input, models.PlatformChatCreateInput), store=store, conversation_id=conversation_id, ) @@ -208,9 +190,7 @@ async def create_async( request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value=accept_header_override.value - if accept_header_override is not None - else "application/json;q=1, text/event-stream;q=0", + accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( @@ -257,8 +237,6 @@ async def create_async( return unmarshal_json_response( models.PlatformChatCompletedResponse, http_res ) - if utils.match_response(http_res, "200", "text/event-stream"): - return http_res.text if utils.match_response( http_res, ["400", "401", "403", "404", "408", "413", "422", "429"], @@ -281,3 +259,279 @@ async def create_async( raise errors.GleanError("API error occurred", http_res, http_res_text) raise errors.GleanError("Unexpected response received", http_res) + + def create_stream( + self, + *, + input: Union[ + models.PlatformChatCreateStreamInput, + models.PlatformChatCreateStreamInputTypedDict, + ], + store: Optional[bool] = True, + conversation_id: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> eventstreaming.EventStream[models.PlatformChatStreamEventServerSentEvent]: + r"""SDK-only logical operation. HTTP clients must call the base path; the URL fragment is not sent. Create a chat response + + SDK-only logical operation. HTTP clients must call the base path; the URL fragment is not sent. Run an assistant turn. Set `stream` to true to receive server-sent events; otherwise the response is a typed JSON response object. + + + :param input: Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. + + :param store: When true (default), persist the interaction and return a `conversation_id`. When false, run ephemerally with no persistence. + + :param conversation_id: Continue an existing stored conversation. Incompatible with message-array `input` and with `store: false`. + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.PlatformChatCreateStreamRequest( + input=utils.get_pydantic_model(input, models.PlatformChatCreateStreamInput), + store=store, + conversation_id=conversation_id, + ) + + req = self._build_request( + method="POST", + path="/api/chat#stream", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="text/event-stream", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.PlatformChatCreateStreamRequest + ), + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="platform-chat-create-stream", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Chat"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-glean-experimental": { + "id": "e65a0a77-97a2-4c91-be60-eae7f6238015", + "introduced": "2026-07-14", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + stream=True, + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "text/event-stream"): + return eventstreaming.EventStream( + http_res, + lambda raw: unmarshal_json_response( + models.PlatformChatStreamEventServerSentEvent, http_res, raw + ), + client_ref=self, + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "413", "422", "429"], + "application/problem+json", + ): + http_res_text = utils.stream_to_text(http_res) + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res, http_res_text + ) + raise errors.PlatformProblemDetailError( + response_data, http_res, http_res_text + ) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + http_res_text = utils.stream_to_text(http_res) + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res, http_res_text + ) + raise errors.PlatformProblemDetailError( + response_data, http_res, http_res_text + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("Unexpected response received", http_res, http_res_text) + + async def create_stream_async( + self, + *, + input: Union[ + models.PlatformChatCreateStreamInput, + models.PlatformChatCreateStreamInputTypedDict, + ], + store: Optional[bool] = True, + conversation_id: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> eventstreaming.EventStreamAsync[models.PlatformChatStreamEventServerSentEvent]: + r"""SDK-only logical operation. HTTP clients must call the base path; the URL fragment is not sent. Create a chat response + + SDK-only logical operation. HTTP clients must call the base path; the URL fragment is not sent. Run an assistant turn. Set `stream` to true to receive server-sent events; otherwise the response is a typed JSON response object. + + + :param input: Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. + + :param store: When true (default), persist the interaction and return a `conversation_id`. When false, run ephemerally with no persistence. + + :param conversation_id: Continue an existing stored conversation. Incompatible with message-array `input` and with `store: false`. + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.PlatformChatCreateStreamRequest( + input=utils.get_pydantic_model(input, models.PlatformChatCreateStreamInput), + store=store, + conversation_id=conversation_id, + ) + + req = self._build_request_async( + method="POST", + path="/api/chat#stream", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="text/event-stream", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.PlatformChatCreateStreamRequest + ), + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="platform-chat-create-stream", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Chat"], + extensions={ + "x-codegen-request-body-name": "payload", + "x-glean-experimental": { + "id": "e65a0a77-97a2-4c91-be60-eae7f6238015", + "introduced": "2026-07-14", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + stream=True, + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "text/event-stream"): + return eventstreaming.EventStreamAsync( + http_res, + lambda raw: unmarshal_json_response( + models.PlatformChatStreamEventServerSentEvent, http_res, raw + ), + client_ref=self, + ) + if utils.match_response( + http_res, + ["400", "401", "403", "404", "408", "413", "422", "429"], + "application/problem+json", + ): + http_res_text = await utils.stream_to_text_async(http_res) + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res, http_res_text + ) + raise errors.PlatformProblemDetailError( + response_data, http_res, http_res_text + ) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + http_res_text = await utils.stream_to_text_async(http_res) + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res, http_res_text + ) + raise errors.PlatformProblemDetailError( + response_data, http_res, http_res_text + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("Unexpected response received", http_res, http_res_text) diff --git a/src/glean/api_client/models/__init__.py b/src/glean/api_client/models/__init__.py index ebcfa532..573adfa6 100644 --- a/src/glean/api_client/models/__init__.py +++ b/src/glean/api_client/models/__init__.py @@ -1254,9 +1254,17 @@ PlatformAgentsGetRequest, PlatformAgentsGetRequestTypedDict, ) + from .platform_chat_create_streamop import ( + PlatformChatCreateStreamInput, + PlatformChatCreateStreamInputTypedDict, + PlatformChatCreateStreamRequest, + PlatformChatCreateStreamRequestTypedDict, + ) from .platform_chat_createop import ( - PlatformChatCreateResponse, - PlatformChatCreateResponseTypedDict, + PlatformChatCreateInput, + PlatformChatCreateInputTypedDict, + PlatformChatCreateRequest, + PlatformChatCreateRequestTypedDict, ) from .platform_search_filtersop import ( PlatformSearchFiltersRequest, @@ -1405,17 +1413,11 @@ PlatformChatCitationSourceTypedDict, ) from .platformchatcompletedresponse import ( - Object, PlatformChatCompletedResponse, + PlatformChatCompletedResponseObject, PlatformChatCompletedResponseStatus, PlatformChatCompletedResponseTypedDict, ) - from .platformchatcreaterequest import ( - Input, - InputTypedDict, - PlatformChatCreateRequest, - PlatformChatCreateRequestTypedDict, - ) from .platformchatcustomentitysource import ( PlatformChatCustomEntitySource, PlatformChatCustomEntitySourceType, @@ -1431,6 +1433,12 @@ PlatformChatDocumentSourceType2, PlatformChatDocumentSourceTypedDict, ) + from .platformchatfailedresponse import ( + PlatformChatFailedResponse, + PlatformChatFailedResponseObject, + PlatformChatFailedResponseStatus, + PlatformChatFailedResponseTypedDict, + ) from .platformchatfilesource import ( PlatformChatFileSource, PlatformChatFileSourceType, @@ -1457,6 +1465,68 @@ PlatformChatPersonSourceType, PlatformChatPersonSourceTypedDict, ) + from .platformchatresponseerror import ( + PlatformChatResponseError, + PlatformChatResponseErrorTypedDict, + ) + from .platformchatstreameventserversentevent import ( + PlatformChatStreamEventServerSentEvent, + PlatformChatStreamEventServerSentEventTypedDict, + ) + from .platformchatstreamoutputtextdelta import ( + PlatformChatStreamOutputTextDelta, + PlatformChatStreamOutputTextDeltaType, + PlatformChatStreamOutputTextDeltaTypedDict, + ) + from .platformchatstreamoutputtextdeltaserversentevent import ( + PlatformChatStreamOutputTextDeltaServerSentEvent, + PlatformChatStreamOutputTextDeltaServerSentEventTypedDict, + ) + from .platformchatstreamoutputtextdone import ( + PlatformChatStreamOutputTextDone, + PlatformChatStreamOutputTextDoneType, + PlatformChatStreamOutputTextDoneTypedDict, + ) + from .platformchatstreamoutputtextdoneserversentevent import ( + PlatformChatStreamOutputTextDoneServerSentEvent, + PlatformChatStreamOutputTextDoneServerSentEventTypedDict, + ) + from .platformchatstreamprogress import ( + PlatformChatStreamProgress, + PlatformChatStreamProgressType, + PlatformChatStreamProgressTypedDict, + ) + from .platformchatstreamprogressserversentevent import ( + PlatformChatStreamProgressServerSentEvent, + PlatformChatStreamProgressServerSentEventTypedDict, + ) + from .platformchatstreamresponsecompleted import ( + PlatformChatStreamResponseCompleted, + PlatformChatStreamResponseCompletedType, + PlatformChatStreamResponseCompletedTypedDict, + ) + from .platformchatstreamresponsecompletedserversentevent import ( + PlatformChatStreamResponseCompletedServerSentEvent, + PlatformChatStreamResponseCompletedServerSentEventTypedDict, + ) + from .platformchatstreamresponsecreated import ( + PlatformChatStreamResponseCreated, + PlatformChatStreamResponseCreatedType, + PlatformChatStreamResponseCreatedTypedDict, + ) + from .platformchatstreamresponsecreatedserversentevent import ( + PlatformChatStreamResponseCreatedServerSentEvent, + PlatformChatStreamResponseCreatedServerSentEventTypedDict, + ) + from .platformchatstreamresponsefailed import ( + PlatformChatStreamResponseFailed, + PlatformChatStreamResponseFailedType, + PlatformChatStreamResponseFailedTypedDict, + ) + from .platformchatstreamresponsefailedserversentevent import ( + PlatformChatStreamResponseFailedServerSentEvent, + PlatformChatStreamResponseFailedServerSentEventTypedDict, + ) from .platformcontentschedulewebhookevent import ( PlatformContentScheduleWebhookEvent, PlatformContentScheduleWebhookEventTypedDict, @@ -2891,13 +2961,11 @@ "IndexUserRequestTypedDict", "IndexingShortcut", "IndexingShortcutTypedDict", - "Input", "InputOptions", "InputOptionsTimePeriodType", "InputOptionsTypedDict", "InputSchema", "InputSchemaTypedDict", - "InputTypedDict", "InsightsAssistantRequest", "InsightsAssistantRequestTypedDict", "InsightsChatSummary", @@ -3011,7 +3079,6 @@ "MessagesResponse", "MessagesResponseTypedDict", "Mode", - "Object", "ObjectDefinition", "ObjectDefinitionTypedDict", "ObjectPermissions", @@ -3107,12 +3174,17 @@ "PlatformChatCitationSource", "PlatformChatCitationSourceTypedDict", "PlatformChatCompletedResponse", + "PlatformChatCompletedResponseObject", "PlatformChatCompletedResponseStatus", "PlatformChatCompletedResponseTypedDict", + "PlatformChatCreateInput", + "PlatformChatCreateInputTypedDict", "PlatformChatCreateRequest", "PlatformChatCreateRequestTypedDict", - "PlatformChatCreateResponse", - "PlatformChatCreateResponseTypedDict", + "PlatformChatCreateStreamInput", + "PlatformChatCreateStreamInputTypedDict", + "PlatformChatCreateStreamRequest", + "PlatformChatCreateStreamRequestTypedDict", "PlatformChatCustomEntitySource", "PlatformChatCustomEntitySourceType", "PlatformChatCustomEntitySourceTypedDict", @@ -3124,6 +3196,10 @@ "PlatformChatDocumentSourceType1", "PlatformChatDocumentSourceType2", "PlatformChatDocumentSourceTypedDict", + "PlatformChatFailedResponse", + "PlatformChatFailedResponseObject", + "PlatformChatFailedResponseStatus", + "PlatformChatFailedResponseTypedDict", "PlatformChatFileSource", "PlatformChatFileSourceType", "PlatformChatFileSourceTypedDict", @@ -3140,6 +3216,40 @@ "PlatformChatPersonSource", "PlatformChatPersonSourceType", "PlatformChatPersonSourceTypedDict", + "PlatformChatResponseError", + "PlatformChatResponseErrorTypedDict", + "PlatformChatStreamEventServerSentEvent", + "PlatformChatStreamEventServerSentEventTypedDict", + "PlatformChatStreamOutputTextDelta", + "PlatformChatStreamOutputTextDeltaServerSentEvent", + "PlatformChatStreamOutputTextDeltaServerSentEventTypedDict", + "PlatformChatStreamOutputTextDeltaType", + "PlatformChatStreamOutputTextDeltaTypedDict", + "PlatformChatStreamOutputTextDone", + "PlatformChatStreamOutputTextDoneServerSentEvent", + "PlatformChatStreamOutputTextDoneServerSentEventTypedDict", + "PlatformChatStreamOutputTextDoneType", + "PlatformChatStreamOutputTextDoneTypedDict", + "PlatformChatStreamProgress", + "PlatformChatStreamProgressServerSentEvent", + "PlatformChatStreamProgressServerSentEventTypedDict", + "PlatformChatStreamProgressType", + "PlatformChatStreamProgressTypedDict", + "PlatformChatStreamResponseCompleted", + "PlatformChatStreamResponseCompletedServerSentEvent", + "PlatformChatStreamResponseCompletedServerSentEventTypedDict", + "PlatformChatStreamResponseCompletedType", + "PlatformChatStreamResponseCompletedTypedDict", + "PlatformChatStreamResponseCreated", + "PlatformChatStreamResponseCreatedServerSentEvent", + "PlatformChatStreamResponseCreatedServerSentEventTypedDict", + "PlatformChatStreamResponseCreatedType", + "PlatformChatStreamResponseCreatedTypedDict", + "PlatformChatStreamResponseFailed", + "PlatformChatStreamResponseFailedServerSentEvent", + "PlatformChatStreamResponseFailedServerSentEventTypedDict", + "PlatformChatStreamResponseFailedType", + "PlatformChatStreamResponseFailedTypedDict", "PlatformContentScheduleWebhookEvent", "PlatformContentScheduleWebhookEventTypedDict", "PlatformContentType", @@ -4582,8 +4692,14 @@ "PlatformAgentsGetSchemasRequestTypedDict": ".platform_agents_get_schemasop", "PlatformAgentsGetRequest": ".platform_agents_getop", "PlatformAgentsGetRequestTypedDict": ".platform_agents_getop", - "PlatformChatCreateResponse": ".platform_chat_createop", - "PlatformChatCreateResponseTypedDict": ".platform_chat_createop", + "PlatformChatCreateStreamInput": ".platform_chat_create_streamop", + "PlatformChatCreateStreamInputTypedDict": ".platform_chat_create_streamop", + "PlatformChatCreateStreamRequest": ".platform_chat_create_streamop", + "PlatformChatCreateStreamRequestTypedDict": ".platform_chat_create_streamop", + "PlatformChatCreateInput": ".platform_chat_createop", + "PlatformChatCreateInputTypedDict": ".platform_chat_createop", + "PlatformChatCreateRequest": ".platform_chat_createop", + "PlatformChatCreateRequestTypedDict": ".platform_chat_createop", "PlatformSearchFiltersRequest": ".platform_search_filtersop", "PlatformSearchFiltersRequestTypedDict": ".platform_search_filtersop", "PlatformSearchFiltersResponseResponse": ".platform_search_filtersop", @@ -4664,14 +4780,10 @@ "PlatformChatCitationSnippetTypedDict": ".platformchatcitationsnippet", "PlatformChatCitationSource": ".platformchatcitationsource", "PlatformChatCitationSourceTypedDict": ".platformchatcitationsource", - "Object": ".platformchatcompletedresponse", "PlatformChatCompletedResponse": ".platformchatcompletedresponse", + "PlatformChatCompletedResponseObject": ".platformchatcompletedresponse", "PlatformChatCompletedResponseStatus": ".platformchatcompletedresponse", "PlatformChatCompletedResponseTypedDict": ".platformchatcompletedresponse", - "Input": ".platformchatcreaterequest", - "InputTypedDict": ".platformchatcreaterequest", - "PlatformChatCreateRequest": ".platformchatcreaterequest", - "PlatformChatCreateRequestTypedDict": ".platformchatcreaterequest", "PlatformChatCustomEntitySource": ".platformchatcustomentitysource", "PlatformChatCustomEntitySourceType": ".platformchatcustomentitysource", "PlatformChatCustomEntitySourceTypedDict": ".platformchatcustomentitysource", @@ -4683,6 +4795,10 @@ "PlatformChatDocumentSourceType1": ".platformchatdocumentsource", "PlatformChatDocumentSourceType2": ".platformchatdocumentsource", "PlatformChatDocumentSourceTypedDict": ".platformchatdocumentsource", + "PlatformChatFailedResponse": ".platformchatfailedresponse", + "PlatformChatFailedResponseObject": ".platformchatfailedresponse", + "PlatformChatFailedResponseStatus": ".platformchatfailedresponse", + "PlatformChatFailedResponseTypedDict": ".platformchatfailedresponse", "PlatformChatFileSource": ".platformchatfilesource", "PlatformChatFileSourceType": ".platformchatfilesource", "PlatformChatFileSourceTypedDict": ".platformchatfilesource", @@ -4699,6 +4815,40 @@ "PlatformChatPersonSource": ".platformchatpersonsource", "PlatformChatPersonSourceType": ".platformchatpersonsource", "PlatformChatPersonSourceTypedDict": ".platformchatpersonsource", + "PlatformChatResponseError": ".platformchatresponseerror", + "PlatformChatResponseErrorTypedDict": ".platformchatresponseerror", + "PlatformChatStreamEventServerSentEvent": ".platformchatstreameventserversentevent", + "PlatformChatStreamEventServerSentEventTypedDict": ".platformchatstreameventserversentevent", + "PlatformChatStreamOutputTextDelta": ".platformchatstreamoutputtextdelta", + "PlatformChatStreamOutputTextDeltaType": ".platformchatstreamoutputtextdelta", + "PlatformChatStreamOutputTextDeltaTypedDict": ".platformchatstreamoutputtextdelta", + "PlatformChatStreamOutputTextDeltaServerSentEvent": ".platformchatstreamoutputtextdeltaserversentevent", + "PlatformChatStreamOutputTextDeltaServerSentEventTypedDict": ".platformchatstreamoutputtextdeltaserversentevent", + "PlatformChatStreamOutputTextDone": ".platformchatstreamoutputtextdone", + "PlatformChatStreamOutputTextDoneType": ".platformchatstreamoutputtextdone", + "PlatformChatStreamOutputTextDoneTypedDict": ".platformchatstreamoutputtextdone", + "PlatformChatStreamOutputTextDoneServerSentEvent": ".platformchatstreamoutputtextdoneserversentevent", + "PlatformChatStreamOutputTextDoneServerSentEventTypedDict": ".platformchatstreamoutputtextdoneserversentevent", + "PlatformChatStreamProgress": ".platformchatstreamprogress", + "PlatformChatStreamProgressType": ".platformchatstreamprogress", + "PlatformChatStreamProgressTypedDict": ".platformchatstreamprogress", + "PlatformChatStreamProgressServerSentEvent": ".platformchatstreamprogressserversentevent", + "PlatformChatStreamProgressServerSentEventTypedDict": ".platformchatstreamprogressserversentevent", + "PlatformChatStreamResponseCompleted": ".platformchatstreamresponsecompleted", + "PlatformChatStreamResponseCompletedType": ".platformchatstreamresponsecompleted", + "PlatformChatStreamResponseCompletedTypedDict": ".platformchatstreamresponsecompleted", + "PlatformChatStreamResponseCompletedServerSentEvent": ".platformchatstreamresponsecompletedserversentevent", + "PlatformChatStreamResponseCompletedServerSentEventTypedDict": ".platformchatstreamresponsecompletedserversentevent", + "PlatformChatStreamResponseCreated": ".platformchatstreamresponsecreated", + "PlatformChatStreamResponseCreatedType": ".platformchatstreamresponsecreated", + "PlatformChatStreamResponseCreatedTypedDict": ".platformchatstreamresponsecreated", + "PlatformChatStreamResponseCreatedServerSentEvent": ".platformchatstreamresponsecreatedserversentevent", + "PlatformChatStreamResponseCreatedServerSentEventTypedDict": ".platformchatstreamresponsecreatedserversentevent", + "PlatformChatStreamResponseFailed": ".platformchatstreamresponsefailed", + "PlatformChatStreamResponseFailedType": ".platformchatstreamresponsefailed", + "PlatformChatStreamResponseFailedTypedDict": ".platformchatstreamresponsefailed", + "PlatformChatStreamResponseFailedServerSentEvent": ".platformchatstreamresponsefailedserversentevent", + "PlatformChatStreamResponseFailedServerSentEventTypedDict": ".platformchatstreamresponsefailedserversentevent", "PlatformContentScheduleWebhookEvent": ".platformcontentschedulewebhookevent", "PlatformContentScheduleWebhookEventTypedDict": ".platformcontentschedulewebhookevent", "PlatformContentType": ".platformcontenttype", diff --git a/src/glean/api_client/models/chatmessagefragment.py b/src/glean/api_client/models/chatmessagefragment.py index 48632a88..844224bb 100644 --- a/src/glean/api_client/models/chatmessagefragment.py +++ b/src/glean/api_client/models/chatmessagefragment.py @@ -16,7 +16,7 @@ class ChatMessageFragmentTypedDict(TypedDict): - r"""Represents a part of a ChatMessage that originates from a single action/tool. It is designed to support rich data formats beyond simple text, allowing for a more dynamic and interactive chat experience. Each fragment can include various types of content, such as text, search queries, action information, and more. Also, each ChatMessageFragment should only have one of structuredResults, querySuggestion, writeAction, followupAction, agentRecommendation, followupRoutingSuggestion or file.""" + r"""A typed fragment within a chat message that carries text or structured content such as citations, actions, and tool output.""" structured_results: NotRequired[List[StructuredResultTypedDict]] r"""An array of entities in the work graph retrieved via a data request.""" @@ -52,7 +52,7 @@ class ChatMessageFragmentTypedDict(TypedDict): class ChatMessageFragment(BaseModel): - r"""Represents a part of a ChatMessage that originates from a single action/tool. It is designed to support rich data formats beyond simple text, allowing for a more dynamic and interactive chat experience. Each fragment can include various types of content, such as text, search queries, action information, and more. Also, each ChatMessageFragment should only have one of structuredResults, querySuggestion, writeAction, followupAction, agentRecommendation, followupRoutingSuggestion or file.""" + r"""A typed fragment within a chat message that carries text or structured content such as citations, actions, and tool output.""" structured_results: Annotated[ Optional[List[StructuredResult]], pydantic.Field(alias="structuredResults") diff --git a/src/glean/api_client/models/platformchatcreaterequest.py b/src/glean/api_client/models/platform_chat_create_streamop.py similarity index 67% rename from src/glean/api_client/models/platformchatcreaterequest.py rename to src/glean/api_client/models/platform_chat_create_streamop.py index b596efc5..7e6268b7 100644 --- a/src/glean/api_client/models/platformchatcreaterequest.py +++ b/src/glean/api_client/models/platform_chat_create_streamop.py @@ -6,34 +6,37 @@ PlatformChatInputMessageTypedDict, ) from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import validate_const +import pydantic from pydantic import model_serializer -from typing import List, Optional, Union -from typing_extensions import NotRequired, TypeAliasType, TypedDict +from pydantic.functional_validators import AfterValidator +from typing import List, Literal, Optional, Union +from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict -InputTypedDict = TypeAliasType( - "InputTypedDict", Union[str, List[PlatformChatInputMessageTypedDict]] +PlatformChatCreateStreamInputTypedDict = TypeAliasType( + "PlatformChatCreateStreamInputTypedDict", + Union[str, List[PlatformChatInputMessageTypedDict]], ) r"""Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. """ -Input = TypeAliasType("Input", Union[str, List[PlatformChatInputMessage]]) +PlatformChatCreateStreamInput = TypeAliasType( + "PlatformChatCreateStreamInput", Union[str, List[PlatformChatInputMessage]] +) r"""Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. """ -class PlatformChatCreateRequestTypedDict(TypedDict): - input: InputTypedDict +class PlatformChatCreateStreamRequestTypedDict(TypedDict): + input: PlatformChatCreateStreamInputTypedDict r"""Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. """ - stream: NotRequired[bool] - r"""When true, respond with `text/event-stream`. When false or omitted, respond with `application/json`. - - """ + stream: Literal[True] store: NotRequired[bool] r"""When true (default), persist the interaction and return a `conversation_id`. When false, run ephemerally with no persistence. @@ -44,16 +47,16 @@ class PlatformChatCreateRequestTypedDict(TypedDict): """ -class PlatformChatCreateRequest(BaseModel): - input: Input +class PlatformChatCreateStreamRequest(BaseModel): + input: PlatformChatCreateStreamInput r"""Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. """ - stream: Optional[bool] = False - r"""When true, respond with `text/event-stream`. When false or omitted, respond with `application/json`. - - """ + STREAM: Annotated[ + Annotated[Optional[Literal[True]], AfterValidator(validate_const(True))], + pydantic.Field(alias="stream"), + ] = True store: Optional[bool] = True r"""When true (default), persist the interaction and return a `conversation_id`. When false, run ephemerally with no persistence. @@ -80,3 +83,9 @@ def serialize_model(self, handler): m[k] = val return m + + +try: + PlatformChatCreateStreamRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/platform_chat_createop.py b/src/glean/api_client/models/platform_chat_createop.py index 03ee7209..4069a990 100644 --- a/src/glean/api_client/models/platform_chat_createop.py +++ b/src/glean/api_client/models/platform_chat_createop.py @@ -1,20 +1,91 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from .platformchatcompletedresponse import ( - PlatformChatCompletedResponse, - PlatformChatCompletedResponseTypedDict, +from .platformchatinputmessage import ( + PlatformChatInputMessage, + PlatformChatInputMessageTypedDict, ) -from typing import Union -from typing_extensions import TypeAliasType +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import validate_const +import pydantic +from pydantic import model_serializer +from pydantic.functional_validators import AfterValidator +from typing import List, Literal, Optional, Union +from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict -PlatformChatCreateResponseTypedDict = TypeAliasType( - "PlatformChatCreateResponseTypedDict", - Union[PlatformChatCompletedResponseTypedDict, str], +PlatformChatCreateInputTypedDict = TypeAliasType( + "PlatformChatCreateInputTypedDict", + Union[str, List[PlatformChatInputMessageTypedDict]], ) +r"""Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. +""" -PlatformChatCreateResponse = TypeAliasType( - "PlatformChatCreateResponse", Union[PlatformChatCompletedResponse, str] + +PlatformChatCreateInput = TypeAliasType( + "PlatformChatCreateInput", Union[str, List[PlatformChatInputMessage]] ) +r"""Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. + +""" + + +class PlatformChatCreateRequestTypedDict(TypedDict): + input: PlatformChatCreateInputTypedDict + r"""Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. + + """ + stream: Literal[False] + store: NotRequired[bool] + r"""When true (default), persist the interaction and return a `conversation_id`. When false, run ephemerally with no persistence. + + """ + conversation_id: NotRequired[str] + r"""Continue an existing stored conversation. Incompatible with message-array `input` and with `store: false`. + + """ + + +class PlatformChatCreateRequest(BaseModel): + input: PlatformChatCreateInput + r"""Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. + + """ + + STREAM: Annotated[ + Annotated[Optional[Literal[False]], AfterValidator(validate_const(False))], + pydantic.Field(alias="stream"), + ] = False + + store: Optional[bool] = True + r"""When true (default), persist the interaction and return a `conversation_id`. When false, run ephemerally with no persistence. + + """ + + conversation_id: Optional[str] = None + r"""Continue an existing stored conversation. Incompatible with message-array `input` and with `store: false`. + + """ + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["stream", "store", "conversation_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +try: + PlatformChatCreateRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/platformchatcompletedresponse.py b/src/glean/api_client/models/platformchatcompletedresponse.py index 4b32c84b..9c0061da 100644 --- a/src/glean/api_client/models/platformchatcompletedresponse.py +++ b/src/glean/api_client/models/platformchatcompletedresponse.py @@ -19,7 +19,7 @@ from typing_extensions import NotRequired, TypedDict -class Object(str, Enum): +class PlatformChatCompletedResponseObject(str, Enum): RESPONSE = "RESPONSE" @@ -32,7 +32,7 @@ class PlatformChatCompletedResponseTypedDict(TypedDict): r"""Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. """ - object: Object + object: PlatformChatCompletedResponseObject created_at: datetime r"""RFC 3339 UTC timestamp when the response was created.""" status: PlatformChatCompletedResponseStatus @@ -49,7 +49,7 @@ class PlatformChatCompletedResponse(BaseModel): """ - object: Object + object: PlatformChatCompletedResponseObject created_at: datetime r"""RFC 3339 UTC timestamp when the response was created.""" diff --git a/src/glean/api_client/models/platformchatfailedresponse.py b/src/glean/api_client/models/platformchatfailedresponse.py new file mode 100644 index 00000000..7c34fe7f --- /dev/null +++ b/src/glean/api_client/models/platformchatfailedresponse.py @@ -0,0 +1,98 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformchatoutputmessage import ( + PlatformChatOutputMessage, + PlatformChatOutputMessageTypedDict, +) +from .platformchatresponseerror import ( + PlatformChatResponseError, + PlatformChatResponseErrorTypedDict, +) +from datetime import datetime +from enum import Enum +from glean.api_client.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from pydantic import model_serializer +from typing import List +from typing_extensions import NotRequired, TypedDict + + +class PlatformChatFailedResponseObject(str, Enum): + RESPONSE = "RESPONSE" + + +class PlatformChatFailedResponseStatus(str, Enum): + FAILED = "FAILED" + + +class PlatformChatFailedResponseTypedDict(TypedDict): + id: str + r"""Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + + """ + object: PlatformChatFailedResponseObject + created_at: datetime + r"""RFC 3339 UTC timestamp when the response was created.""" + status: PlatformChatFailedResponseStatus + output: List[PlatformChatOutputMessageTypedDict] + store: bool + request_id: str + error: PlatformChatResponseErrorTypedDict + conversation_id: NotRequired[Nullable[str]] + r"""Present when the interaction was persisted.""" + + +class PlatformChatFailedResponse(BaseModel): + id: str + r"""Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + + """ + + object: PlatformChatFailedResponseObject + + created_at: datetime + r"""RFC 3339 UTC timestamp when the response was created.""" + + status: PlatformChatFailedResponseStatus + + output: List[PlatformChatOutputMessage] + + store: bool + + request_id: str + + error: PlatformChatResponseError + + conversation_id: OptionalNullable[str] = UNSET + r"""Present when the interaction was persisted.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["conversation_id"]) + nullable_fields = set(["conversation_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/src/glean/api_client/models/platformchatresponseerror.py b/src/glean/api_client/models/platformchatresponseerror.py new file mode 100644 index 00000000..ef73e944 --- /dev/null +++ b/src/glean/api_client/models/platformchatresponseerror.py @@ -0,0 +1,54 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from pydantic import model_serializer +from typing_extensions import NotRequired, TypedDict + + +class PlatformChatResponseErrorTypedDict(TypedDict): + message: str + code: NotRequired[Nullable[str]] + r"""Open snake_case error code aligned with ProblemDetail codes when present. Clients must tolerate unknown values; the set of codes is not a closed enum. Limit failures use `spend_limit_exceeded` (billing spend limit) and `token_limit_exceeded` (model context/token limit). + + """ + + +class PlatformChatResponseError(BaseModel): + message: str + + code: OptionalNullable[str] = UNSET + r"""Open snake_case error code aligned with ProblemDetail codes when present. Clients must tolerate unknown values; the set of codes is not a closed enum. Limit failures use `spend_limit_exceeded` (billing spend limit) and `token_limit_exceeded` (model context/token limit). + + """ + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["code"]) + nullable_fields = set(["code"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/src/glean/api_client/models/platformchatstreameventserversentevent.py b/src/glean/api_client/models/platformchatstreameventserversentevent.py new file mode 100644 index 00000000..25374f3f --- /dev/null +++ b/src/glean/api_client/models/platformchatstreameventserversentevent.py @@ -0,0 +1,58 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformchatstreamoutputtextdeltaserversentevent import ( + PlatformChatStreamOutputTextDeltaServerSentEvent, + PlatformChatStreamOutputTextDeltaServerSentEventTypedDict, +) +from .platformchatstreamoutputtextdoneserversentevent import ( + PlatformChatStreamOutputTextDoneServerSentEvent, + PlatformChatStreamOutputTextDoneServerSentEventTypedDict, +) +from .platformchatstreamprogressserversentevent import ( + PlatformChatStreamProgressServerSentEvent, + PlatformChatStreamProgressServerSentEventTypedDict, +) +from .platformchatstreamresponsecompletedserversentevent import ( + PlatformChatStreamResponseCompletedServerSentEvent, + PlatformChatStreamResponseCompletedServerSentEventTypedDict, +) +from .platformchatstreamresponsecreatedserversentevent import ( + PlatformChatStreamResponseCreatedServerSentEvent, + PlatformChatStreamResponseCreatedServerSentEventTypedDict, +) +from .platformchatstreamresponsefailedserversentevent import ( + PlatformChatStreamResponseFailedServerSentEvent, + PlatformChatStreamResponseFailedServerSentEventTypedDict, +) +from pydantic import Field +from typing import Union +from typing_extensions import Annotated, TypeAliasType + + +PlatformChatStreamEventServerSentEventTypedDict = TypeAliasType( + "PlatformChatStreamEventServerSentEventTypedDict", + Union[ + PlatformChatStreamResponseCreatedServerSentEventTypedDict, + PlatformChatStreamProgressServerSentEventTypedDict, + PlatformChatStreamOutputTextDeltaServerSentEventTypedDict, + PlatformChatStreamOutputTextDoneServerSentEventTypedDict, + PlatformChatStreamResponseCompletedServerSentEventTypedDict, + PlatformChatStreamResponseFailedServerSentEventTypedDict, + ], +) +r"""A typed server-sent event.""" + + +PlatformChatStreamEventServerSentEvent = Annotated[ + Union[ + PlatformChatStreamResponseCreatedServerSentEvent, + PlatformChatStreamProgressServerSentEvent, + PlatformChatStreamOutputTextDeltaServerSentEvent, + PlatformChatStreamOutputTextDoneServerSentEvent, + PlatformChatStreamResponseCompletedServerSentEvent, + PlatformChatStreamResponseFailedServerSentEvent, + ], + Field(discriminator="EVENT"), +] +r"""A typed server-sent event.""" diff --git a/src/glean/api_client/models/platformchatstreamoutputtextdelta.py b/src/glean/api_client/models/platformchatstreamoutputtextdelta.py new file mode 100644 index 00000000..0163838f --- /dev/null +++ b/src/glean/api_client/models/platformchatstreamoutputtextdelta.py @@ -0,0 +1,30 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformChatStreamOutputTextDeltaType(str, Enum): + RESPONSE_OUTPUT_TEXT_DELTA = "RESPONSE_OUTPUT_TEXT_DELTA" + + +class PlatformChatStreamOutputTextDeltaTypedDict(TypedDict): + type: PlatformChatStreamOutputTextDeltaType + response_id: str + r"""Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + + """ + delta: str + + +class PlatformChatStreamOutputTextDelta(BaseModel): + type: PlatformChatStreamOutputTextDeltaType + + response_id: str + r"""Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + + """ + + delta: str diff --git a/src/glean/api_client/models/platformchatstreamoutputtextdeltaserversentevent.py b/src/glean/api_client/models/platformchatstreamoutputtextdeltaserversentevent.py new file mode 100644 index 00000000..1d7e6a4c --- /dev/null +++ b/src/glean/api_client/models/platformchatstreamoutputtextdeltaserversentevent.py @@ -0,0 +1,56 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformchatstreamoutputtextdelta import ( + PlatformChatStreamOutputTextDelta, + PlatformChatStreamOutputTextDeltaTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import validate_const +import pydantic +from pydantic import model_serializer +from pydantic.functional_validators import AfterValidator +from typing import Literal, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformChatStreamOutputTextDeltaServerSentEventTypedDict(TypedDict): + data: PlatformChatStreamOutputTextDeltaTypedDict + id: NotRequired[str] + event: Literal["RESPONSE_OUTPUT_TEXT_DELTA"] + + +class PlatformChatStreamOutputTextDeltaServerSentEvent(BaseModel): + data: PlatformChatStreamOutputTextDelta + + id: Optional[str] = None + + EVENT: Annotated[ + Annotated[ + Literal["RESPONSE_OUTPUT_TEXT_DELTA"], + AfterValidator(validate_const("RESPONSE_OUTPUT_TEXT_DELTA")), + ], + pydantic.Field(alias="event"), + ] = "RESPONSE_OUTPUT_TEXT_DELTA" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +try: + PlatformChatStreamOutputTextDeltaServerSentEvent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/platformchatstreamoutputtextdone.py b/src/glean/api_client/models/platformchatstreamoutputtextdone.py new file mode 100644 index 00000000..e427df20 --- /dev/null +++ b/src/glean/api_client/models/platformchatstreamoutputtextdone.py @@ -0,0 +1,30 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformChatStreamOutputTextDoneType(str, Enum): + RESPONSE_OUTPUT_TEXT_DONE = "RESPONSE_OUTPUT_TEXT_DONE" + + +class PlatformChatStreamOutputTextDoneTypedDict(TypedDict): + type: PlatformChatStreamOutputTextDoneType + response_id: str + r"""Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + + """ + text: str + + +class PlatformChatStreamOutputTextDone(BaseModel): + type: PlatformChatStreamOutputTextDoneType + + response_id: str + r"""Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + + """ + + text: str diff --git a/src/glean/api_client/models/platformchatstreamoutputtextdoneserversentevent.py b/src/glean/api_client/models/platformchatstreamoutputtextdoneserversentevent.py new file mode 100644 index 00000000..f56d5aef --- /dev/null +++ b/src/glean/api_client/models/platformchatstreamoutputtextdoneserversentevent.py @@ -0,0 +1,56 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformchatstreamoutputtextdone import ( + PlatformChatStreamOutputTextDone, + PlatformChatStreamOutputTextDoneTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import validate_const +import pydantic +from pydantic import model_serializer +from pydantic.functional_validators import AfterValidator +from typing import Literal, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformChatStreamOutputTextDoneServerSentEventTypedDict(TypedDict): + data: PlatformChatStreamOutputTextDoneTypedDict + id: NotRequired[str] + event: Literal["RESPONSE_OUTPUT_TEXT_DONE"] + + +class PlatformChatStreamOutputTextDoneServerSentEvent(BaseModel): + data: PlatformChatStreamOutputTextDone + + id: Optional[str] = None + + EVENT: Annotated[ + Annotated[ + Literal["RESPONSE_OUTPUT_TEXT_DONE"], + AfterValidator(validate_const("RESPONSE_OUTPUT_TEXT_DONE")), + ], + pydantic.Field(alias="event"), + ] = "RESPONSE_OUTPUT_TEXT_DONE" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +try: + PlatformChatStreamOutputTextDoneServerSentEvent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/platformchatstreamprogress.py b/src/glean/api_client/models/platformchatstreamprogress.py new file mode 100644 index 00000000..e29fde8c --- /dev/null +++ b/src/glean/api_client/models/platformchatstreamprogress.py @@ -0,0 +1,36 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformChatStreamProgressType(str, Enum): + RESPONSE_PROGRESS = "RESPONSE_PROGRESS" + + +class PlatformChatStreamProgressTypedDict(TypedDict): + type: PlatformChatStreamProgressType + response_id: str + r"""Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + + """ + text: str + r"""Verbatim concatenated fragment text from an assistant UPDATE wire message. Display-oriented passthrough only; not part of the final answer and not present on terminal response snapshots. + + """ + + +class PlatformChatStreamProgress(BaseModel): + type: PlatformChatStreamProgressType + + response_id: str + r"""Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + + """ + + text: str + r"""Verbatim concatenated fragment text from an assistant UPDATE wire message. Display-oriented passthrough only; not part of the final answer and not present on terminal response snapshots. + + """ diff --git a/src/glean/api_client/models/platformchatstreamprogressserversentevent.py b/src/glean/api_client/models/platformchatstreamprogressserversentevent.py new file mode 100644 index 00000000..d6b76035 --- /dev/null +++ b/src/glean/api_client/models/platformchatstreamprogressserversentevent.py @@ -0,0 +1,56 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformchatstreamprogress import ( + PlatformChatStreamProgress, + PlatformChatStreamProgressTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import validate_const +import pydantic +from pydantic import model_serializer +from pydantic.functional_validators import AfterValidator +from typing import Literal, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformChatStreamProgressServerSentEventTypedDict(TypedDict): + data: PlatformChatStreamProgressTypedDict + id: NotRequired[str] + event: Literal["RESPONSE_PROGRESS"] + + +class PlatformChatStreamProgressServerSentEvent(BaseModel): + data: PlatformChatStreamProgress + + id: Optional[str] = None + + EVENT: Annotated[ + Annotated[ + Literal["RESPONSE_PROGRESS"], + AfterValidator(validate_const("RESPONSE_PROGRESS")), + ], + pydantic.Field(alias="event"), + ] = "RESPONSE_PROGRESS" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +try: + PlatformChatStreamProgressServerSentEvent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/platformchatstreamresponsecompleted.py b/src/glean/api_client/models/platformchatstreamresponsecompleted.py new file mode 100644 index 00000000..32e505c9 --- /dev/null +++ b/src/glean/api_client/models/platformchatstreamresponsecompleted.py @@ -0,0 +1,34 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformchatcompletedresponse import ( + PlatformChatCompletedResponse, + PlatformChatCompletedResponseTypedDict, +) +from enum import Enum +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformChatStreamResponseCompletedType(str, Enum): + RESPONSE_COMPLETED = "RESPONSE_COMPLETED" + + +class PlatformChatStreamResponseCompletedTypedDict(TypedDict): + type: PlatformChatStreamResponseCompletedType + response_id: str + r"""Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + + """ + response: PlatformChatCompletedResponseTypedDict + + +class PlatformChatStreamResponseCompleted(BaseModel): + type: PlatformChatStreamResponseCompletedType + + response_id: str + r"""Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + + """ + + response: PlatformChatCompletedResponse diff --git a/src/glean/api_client/models/platformchatstreamresponsecompletedserversentevent.py b/src/glean/api_client/models/platformchatstreamresponsecompletedserversentevent.py new file mode 100644 index 00000000..143aa870 --- /dev/null +++ b/src/glean/api_client/models/platformchatstreamresponsecompletedserversentevent.py @@ -0,0 +1,56 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformchatstreamresponsecompleted import ( + PlatformChatStreamResponseCompleted, + PlatformChatStreamResponseCompletedTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import validate_const +import pydantic +from pydantic import model_serializer +from pydantic.functional_validators import AfterValidator +from typing import Literal, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformChatStreamResponseCompletedServerSentEventTypedDict(TypedDict): + data: PlatformChatStreamResponseCompletedTypedDict + id: NotRequired[str] + event: Literal["RESPONSE_COMPLETED"] + + +class PlatformChatStreamResponseCompletedServerSentEvent(BaseModel): + data: PlatformChatStreamResponseCompleted + + id: Optional[str] = None + + EVENT: Annotated[ + Annotated[ + Literal["RESPONSE_COMPLETED"], + AfterValidator(validate_const("RESPONSE_COMPLETED")), + ], + pydantic.Field(alias="event"), + ] = "RESPONSE_COMPLETED" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +try: + PlatformChatStreamResponseCompletedServerSentEvent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/platformchatstreamresponsecreated.py b/src/glean/api_client/models/platformchatstreamresponsecreated.py new file mode 100644 index 00000000..d4afad87 --- /dev/null +++ b/src/glean/api_client/models/platformchatstreamresponsecreated.py @@ -0,0 +1,27 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformChatStreamResponseCreatedType(str, Enum): + RESPONSE_CREATED = "RESPONSE_CREATED" + + +class PlatformChatStreamResponseCreatedTypedDict(TypedDict): + type: PlatformChatStreamResponseCreatedType + response_id: str + r"""Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + + """ + + +class PlatformChatStreamResponseCreated(BaseModel): + type: PlatformChatStreamResponseCreatedType + + response_id: str + r"""Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + + """ diff --git a/src/glean/api_client/models/platformchatstreamresponsecreatedserversentevent.py b/src/glean/api_client/models/platformchatstreamresponsecreatedserversentevent.py new file mode 100644 index 00000000..bc55a9e2 --- /dev/null +++ b/src/glean/api_client/models/platformchatstreamresponsecreatedserversentevent.py @@ -0,0 +1,56 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformchatstreamresponsecreated import ( + PlatformChatStreamResponseCreated, + PlatformChatStreamResponseCreatedTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import validate_const +import pydantic +from pydantic import model_serializer +from pydantic.functional_validators import AfterValidator +from typing import Literal, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformChatStreamResponseCreatedServerSentEventTypedDict(TypedDict): + data: PlatformChatStreamResponseCreatedTypedDict + id: NotRequired[str] + event: Literal["RESPONSE_CREATED"] + + +class PlatformChatStreamResponseCreatedServerSentEvent(BaseModel): + data: PlatformChatStreamResponseCreated + + id: Optional[str] = None + + EVENT: Annotated[ + Annotated[ + Literal["RESPONSE_CREATED"], + AfterValidator(validate_const("RESPONSE_CREATED")), + ], + pydantic.Field(alias="event"), + ] = "RESPONSE_CREATED" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +try: + PlatformChatStreamResponseCreatedServerSentEvent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/platformchatstreamresponsefailed.py b/src/glean/api_client/models/platformchatstreamresponsefailed.py new file mode 100644 index 00000000..b4908b62 --- /dev/null +++ b/src/glean/api_client/models/platformchatstreamresponsefailed.py @@ -0,0 +1,34 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformchatfailedresponse import ( + PlatformChatFailedResponse, + PlatformChatFailedResponseTypedDict, +) +from enum import Enum +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformChatStreamResponseFailedType(str, Enum): + RESPONSE_FAILED = "RESPONSE_FAILED" + + +class PlatformChatStreamResponseFailedTypedDict(TypedDict): + type: PlatformChatStreamResponseFailedType + response_id: str + r"""Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + + """ + response: PlatformChatFailedResponseTypedDict + + +class PlatformChatStreamResponseFailed(BaseModel): + type: PlatformChatStreamResponseFailedType + + response_id: str + r"""Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + + """ + + response: PlatformChatFailedResponse diff --git a/src/glean/api_client/models/platformchatstreamresponsefailedserversentevent.py b/src/glean/api_client/models/platformchatstreamresponsefailedserversentevent.py new file mode 100644 index 00000000..c4c16ab8 --- /dev/null +++ b/src/glean/api_client/models/platformchatstreamresponsefailedserversentevent.py @@ -0,0 +1,56 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformchatstreamresponsefailed import ( + PlatformChatStreamResponseFailed, + PlatformChatStreamResponseFailedTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import validate_const +import pydantic +from pydantic import model_serializer +from pydantic.functional_validators import AfterValidator +from typing import Literal, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformChatStreamResponseFailedServerSentEventTypedDict(TypedDict): + data: PlatformChatStreamResponseFailedTypedDict + id: NotRequired[str] + event: Literal["RESPONSE_FAILED"] + + +class PlatformChatStreamResponseFailedServerSentEvent(BaseModel): + data: PlatformChatStreamResponseFailed + + id: Optional[str] = None + + EVENT: Annotated[ + Annotated[ + Literal["RESPONSE_FAILED"], + AfterValidator(validate_const("RESPONSE_FAILED")), + ], + pydantic.Field(alias="event"), + ] = "RESPONSE_FAILED" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +try: + PlatformChatStreamResponseFailedServerSentEvent.model_rebuild() +except NameError: + pass diff --git a/tests/mockserver/internal/handler/pathpostapichat.go b/tests/mockserver/internal/handler/pathpostapichat.go index 7a5ec745..337189e9 100644 --- a/tests/mockserver/internal/handler/pathpostapichat.go +++ b/tests/mockserver/internal/handler/pathpostapichat.go @@ -41,7 +41,7 @@ func testPlatformChatCreatePlatformChatCreate0(w http.ResponseWriter, req *http. http.Error(w, err.Error(), http.StatusBadRequest) return } - if err := assert.AcceptHeader(req, []string{"application/json;q=1", "text/event-stream;q=0"}); err != nil { + if err := assert.AcceptHeader(req, []string{"application/json"}); err != nil { log.Printf("assertion error: %s\n", err) http.Error(w, err.Error(), http.StatusBadRequest) return @@ -53,7 +53,7 @@ func testPlatformChatCreatePlatformChatCreate0(w http.ResponseWriter, req *http. } var respBody *components.PlatformChatCompletedResponse = &components.PlatformChatCompletedResponse{ ID: "", - Object: components.ObjectResponse, + Object: components.PlatformChatCompletedResponseObjectResponse, CreatedAt: types.MustTimeFromString("2026-05-19T05:32:52.505Z"), Status: components.PlatformChatCompletedResponseStatusCompleted, Output: []components.PlatformChatOutputMessage{ diff --git a/tests/mockserver/internal/sdk/models/components/chatmessagefragment.go b/tests/mockserver/internal/sdk/models/components/chatmessagefragment.go index 99f8ed7d..5125ebb8 100644 --- a/tests/mockserver/internal/sdk/models/components/chatmessagefragment.go +++ b/tests/mockserver/internal/sdk/models/components/chatmessagefragment.go @@ -2,7 +2,7 @@ package components -// ChatMessageFragment - Represents a part of a ChatMessage that originates from a single action/tool. It is designed to support rich data formats beyond simple text, allowing for a more dynamic and interactive chat experience. Each fragment can include various types of content, such as text, search queries, action information, and more. Also, each ChatMessageFragment should only have one of structuredResults, querySuggestion, writeAction, followupAction, agentRecommendation, followupRoutingSuggestion or file. +// ChatMessageFragment - A typed fragment within a chat message that carries text or structured content such as citations, actions, and tool output. type ChatMessageFragment struct { // An array of entities in the work graph retrieved via a data request. StructuredResults []StructuredResult `json:"structuredResults,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/platformchatcitationannotation.go b/tests/mockserver/internal/sdk/models/components/platformchatcitationannotation.go index 64b253ab..a8be5265 100644 --- a/tests/mockserver/internal/sdk/models/components/platformchatcitationannotation.go +++ b/tests/mockserver/internal/sdk/models/components/platformchatcitationannotation.go @@ -6,6 +6,7 @@ import ( "encoding/json" "fmt" "mockserver/internal/sdk/optionalnullable" + "mockserver/internal/sdk/utils" ) type PlatformChatCitationAnnotationType string @@ -39,6 +40,17 @@ type PlatformChatCitationAnnotation struct { Snippets optionalnullable.OptionalNullable[[]PlatformChatCitationSnippet] `json:"snippets,omitempty"` } +func (p PlatformChatCitationAnnotation) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatCitationAnnotation) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "sources"}); err != nil { + return err + } + return nil +} + func (o *PlatformChatCitationAnnotation) GetType() PlatformChatCitationAnnotationType { if o == nil { return PlatformChatCitationAnnotationType("") diff --git a/tests/mockserver/internal/sdk/models/components/platformchatcitationsnippet.go b/tests/mockserver/internal/sdk/models/components/platformchatcitationsnippet.go index def72755..0a61eb36 100644 --- a/tests/mockserver/internal/sdk/models/components/platformchatcitationsnippet.go +++ b/tests/mockserver/internal/sdk/models/components/platformchatcitationsnippet.go @@ -4,6 +4,7 @@ package components import ( "mockserver/internal/sdk/optionalnullable" + "mockserver/internal/sdk/utils" ) type PlatformChatCitationSnippet struct { @@ -11,6 +12,17 @@ type PlatformChatCitationSnippet struct { PageNumber optionalnullable.OptionalNullable[int64] `json:"page_number,omitempty"` } +func (p PlatformChatCitationSnippet) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatCitationSnippet) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"text"}); err != nil { + return err + } + return nil +} + func (o *PlatformChatCitationSnippet) GetText() string { if o == nil { return "" diff --git a/tests/mockserver/internal/sdk/models/components/platformchatcompletedresponse.go b/tests/mockserver/internal/sdk/models/components/platformchatcompletedresponse.go index be4e3712..df973046 100644 --- a/tests/mockserver/internal/sdk/models/components/platformchatcompletedresponse.go +++ b/tests/mockserver/internal/sdk/models/components/platformchatcompletedresponse.go @@ -10,26 +10,26 @@ import ( "time" ) -type Object string +type PlatformChatCompletedResponseObject string const ( - ObjectResponse Object = "RESPONSE" + PlatformChatCompletedResponseObjectResponse PlatformChatCompletedResponseObject = "RESPONSE" ) -func (e Object) ToPointer() *Object { +func (e PlatformChatCompletedResponseObject) ToPointer() *PlatformChatCompletedResponseObject { return &e } -func (e *Object) UnmarshalJSON(data []byte) error { +func (e *PlatformChatCompletedResponseObject) UnmarshalJSON(data []byte) error { var v string if err := json.Unmarshal(data, &v); err != nil { return err } switch v { case "RESPONSE": - *e = Object(v) + *e = PlatformChatCompletedResponseObject(v) return nil default: - return fmt.Errorf("invalid value for Object: %v", v) + return fmt.Errorf("invalid value for PlatformChatCompletedResponseObject: %v", v) } } @@ -59,8 +59,8 @@ func (e *PlatformChatCompletedResponseStatus) UnmarshalJSON(data []byte) error { type PlatformChatCompletedResponse struct { // Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. // - ID string `json:"id"` - Object Object `json:"object"` + ID string `json:"id"` + Object PlatformChatCompletedResponseObject `json:"object"` // RFC 3339 UTC timestamp when the response was created. CreatedAt time.Time `json:"created_at"` Status PlatformChatCompletedResponseStatus `json:"status"` @@ -89,9 +89,9 @@ func (o *PlatformChatCompletedResponse) GetID() string { return o.ID } -func (o *PlatformChatCompletedResponse) GetObject() Object { +func (o *PlatformChatCompletedResponse) GetObject() PlatformChatCompletedResponseObject { if o == nil { - return Object("") + return PlatformChatCompletedResponseObject("") } return o.Object } diff --git a/tests/mockserver/internal/sdk/models/components/platformchatcreaterequest.go b/tests/mockserver/internal/sdk/models/components/platformchatcreaterequest.go deleted file mode 100644 index a5b50b89..00000000 --- a/tests/mockserver/internal/sdk/models/components/platformchatcreaterequest.go +++ /dev/null @@ -1,127 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -import ( - "errors" - "fmt" - "mockserver/internal/sdk/utils" -) - -type InputType string - -const ( - InputTypeStr InputType = "str" - InputTypeArrayOfPlatformChatInputMessage InputType = "arrayOfPlatformChatInputMessage" -) - -// Input - Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. -type Input struct { - Str *string `queryParam:"inline"` - ArrayOfPlatformChatInputMessage []PlatformChatInputMessage `queryParam:"inline"` - - Type InputType -} - -func CreateInputStr(str string) Input { - typ := InputTypeStr - - return Input{ - Str: &str, - Type: typ, - } -} - -func CreateInputArrayOfPlatformChatInputMessage(arrayOfPlatformChatInputMessage []PlatformChatInputMessage) Input { - typ := InputTypeArrayOfPlatformChatInputMessage - - return Input{ - ArrayOfPlatformChatInputMessage: arrayOfPlatformChatInputMessage, - Type: typ, - } -} - -func (u *Input) UnmarshalJSON(data []byte) error { - - var str string = "" - if err := utils.UnmarshalJSON(data, &str, "", true, nil); err == nil { - u.Str = &str - u.Type = InputTypeStr - return nil - } - - var arrayOfPlatformChatInputMessage []PlatformChatInputMessage = []PlatformChatInputMessage{} - if err := utils.UnmarshalJSON(data, &arrayOfPlatformChatInputMessage, "", true, nil); err == nil { - u.ArrayOfPlatformChatInputMessage = arrayOfPlatformChatInputMessage - u.Type = InputTypeArrayOfPlatformChatInputMessage - return nil - } - - return fmt.Errorf("could not unmarshal `%s` into any supported union types for Input", string(data)) -} - -func (u Input) MarshalJSON() ([]byte, error) { - if u.Str != nil { - return utils.MarshalJSON(u.Str, "", true) - } - - if u.ArrayOfPlatformChatInputMessage != nil { - return utils.MarshalJSON(u.ArrayOfPlatformChatInputMessage, "", true) - } - - return nil, errors.New("could not marshal union type Input: all fields are null") -} - -type PlatformChatCreateRequest struct { - // Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. - // - Input Input `json:"input"` - // When true, respond with `text/event-stream`. When false or omitted, respond with `application/json`. - // - Stream *bool `default:"false" json:"stream"` - // When true (default), persist the interaction and return a `conversation_id`. When false, run ephemerally with no persistence. - // - Store *bool `default:"true" json:"store"` - // Continue an existing stored conversation. Incompatible with message-array `input` and with `store: false`. - // - ConversationID *string `json:"conversation_id,omitempty"` -} - -func (p PlatformChatCreateRequest) MarshalJSON() ([]byte, error) { - return utils.MarshalJSON(p, "", false) -} - -func (p *PlatformChatCreateRequest) UnmarshalJSON(data []byte) error { - if err := utils.UnmarshalJSON(data, &p, "", false, []string{"input"}); err != nil { - return err - } - return nil -} - -func (o *PlatformChatCreateRequest) GetInput() Input { - if o == nil { - return Input{} - } - return o.Input -} - -func (o *PlatformChatCreateRequest) GetStream() *bool { - if o == nil { - return nil - } - return o.Stream -} - -func (o *PlatformChatCreateRequest) GetStore() *bool { - if o == nil { - return nil - } - return o.Store -} - -func (o *PlatformChatCreateRequest) GetConversationID() *string { - if o == nil { - return nil - } - return o.ConversationID -} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatfailedresponse.go b/tests/mockserver/internal/sdk/models/components/platformchatfailedresponse.go new file mode 100644 index 00000000..1c7df613 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatfailedresponse.go @@ -0,0 +1,147 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "mockserver/internal/sdk/optionalnullable" + "mockserver/internal/sdk/utils" + "time" +) + +type PlatformChatFailedResponseObject string + +const ( + PlatformChatFailedResponseObjectResponse PlatformChatFailedResponseObject = "RESPONSE" +) + +func (e PlatformChatFailedResponseObject) ToPointer() *PlatformChatFailedResponseObject { + return &e +} +func (e *PlatformChatFailedResponseObject) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "RESPONSE": + *e = PlatformChatFailedResponseObject(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformChatFailedResponseObject: %v", v) + } +} + +type PlatformChatFailedResponseStatus string + +const ( + PlatformChatFailedResponseStatusFailed PlatformChatFailedResponseStatus = "FAILED" +) + +func (e PlatformChatFailedResponseStatus) ToPointer() *PlatformChatFailedResponseStatus { + return &e +} +func (e *PlatformChatFailedResponseStatus) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "FAILED": + *e = PlatformChatFailedResponseStatus(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformChatFailedResponseStatus: %v", v) + } +} + +type PlatformChatFailedResponse struct { + // Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + // + ID string `json:"id"` + Object PlatformChatFailedResponseObject `json:"object"` + // RFC 3339 UTC timestamp when the response was created. + CreatedAt time.Time `json:"created_at"` + Status PlatformChatFailedResponseStatus `json:"status"` + Output []PlatformChatOutputMessage `json:"output"` + Store bool `json:"store"` + // Present when the interaction was persisted. + ConversationID optionalnullable.OptionalNullable[string] `json:"conversation_id,omitempty"` + RequestID string `json:"request_id"` + Error PlatformChatResponseError `json:"error"` +} + +func (p PlatformChatFailedResponse) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatFailedResponse) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"id", "object", "created_at", "status", "output", "store", "request_id", "error"}); err != nil { + return err + } + return nil +} + +func (o *PlatformChatFailedResponse) GetID() string { + if o == nil { + return "" + } + return o.ID +} + +func (o *PlatformChatFailedResponse) GetObject() PlatformChatFailedResponseObject { + if o == nil { + return PlatformChatFailedResponseObject("") + } + return o.Object +} + +func (o *PlatformChatFailedResponse) GetCreatedAt() time.Time { + if o == nil { + return time.Time{} + } + return o.CreatedAt +} + +func (o *PlatformChatFailedResponse) GetStatus() PlatformChatFailedResponseStatus { + if o == nil { + return PlatformChatFailedResponseStatus("") + } + return o.Status +} + +func (o *PlatformChatFailedResponse) GetOutput() []PlatformChatOutputMessage { + if o == nil { + return []PlatformChatOutputMessage{} + } + return o.Output +} + +func (o *PlatformChatFailedResponse) GetStore() bool { + if o == nil { + return false + } + return o.Store +} + +func (o *PlatformChatFailedResponse) GetConversationID() optionalnullable.OptionalNullable[string] { + if o == nil { + return nil + } + return o.ConversationID +} + +func (o *PlatformChatFailedResponse) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} + +func (o *PlatformChatFailedResponse) GetError() PlatformChatResponseError { + if o == nil { + return PlatformChatResponseError{} + } + return o.Error +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatoutputmessage.go b/tests/mockserver/internal/sdk/models/components/platformchatoutputmessage.go index 69218f0e..e8c60120 100644 --- a/tests/mockserver/internal/sdk/models/components/platformchatoutputmessage.go +++ b/tests/mockserver/internal/sdk/models/components/platformchatoutputmessage.go @@ -5,6 +5,7 @@ package components import ( "encoding/json" "fmt" + "mockserver/internal/sdk/utils" ) type PlatformChatOutputMessageType string @@ -59,6 +60,17 @@ type PlatformChatOutputMessage struct { Content []PlatformChatOutputTextContent `json:"content"` } +func (p PlatformChatOutputMessage) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatOutputMessage) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "role", "content"}); err != nil { + return err + } + return nil +} + func (o *PlatformChatOutputMessage) GetType() PlatformChatOutputMessageType { if o == nil { return PlatformChatOutputMessageType("") diff --git a/tests/mockserver/internal/sdk/models/components/platformchatoutputtextcontent.go b/tests/mockserver/internal/sdk/models/components/platformchatoutputtextcontent.go index d5020f5c..f3be4768 100644 --- a/tests/mockserver/internal/sdk/models/components/platformchatoutputtextcontent.go +++ b/tests/mockserver/internal/sdk/models/components/platformchatoutputtextcontent.go @@ -5,6 +5,7 @@ package components import ( "encoding/json" "fmt" + "mockserver/internal/sdk/utils" ) type PlatformChatOutputTextContentType string @@ -36,6 +37,17 @@ type PlatformChatOutputTextContent struct { Annotations []PlatformChatCitationAnnotation `json:"annotations,omitempty"` } +func (p PlatformChatOutputTextContent) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatOutputTextContent) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "text"}); err != nil { + return err + } + return nil +} + func (o *PlatformChatOutputTextContent) GetType() PlatformChatOutputTextContentType { if o == nil { return PlatformChatOutputTextContentType("") diff --git a/tests/mockserver/internal/sdk/models/components/platformchatresponseerror.go b/tests/mockserver/internal/sdk/models/components/platformchatresponseerror.go new file mode 100644 index 00000000..4fb41392 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatresponseerror.go @@ -0,0 +1,40 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/optionalnullable" + "mockserver/internal/sdk/utils" +) + +type PlatformChatResponseError struct { + // Open snake_case error code aligned with ProblemDetail codes when present. Clients must tolerate unknown values; the set of codes is not a closed enum. Limit failures use `spend_limit_exceeded` (billing spend limit) and `token_limit_exceeded` (model context/token limit). + // + Code optionalnullable.OptionalNullable[string] `json:"code,omitempty"` + Message string `json:"message"` +} + +func (p PlatformChatResponseError) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatResponseError) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"message"}); err != nil { + return err + } + return nil +} + +func (o *PlatformChatResponseError) GetCode() optionalnullable.OptionalNullable[string] { + if o == nil { + return nil + } + return o.Code +} + +func (o *PlatformChatResponseError) GetMessage() string { + if o == nil { + return "" + } + return o.Message +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatstreameventserversentevent.go b/tests/mockserver/internal/sdk/models/components/platformchatstreameventserversentevent.go new file mode 100644 index 00000000..41154665 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatstreameventserversentevent.go @@ -0,0 +1,204 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "errors" + "fmt" + "mockserver/internal/sdk/utils" +) + +type PlatformChatStreamEventServerSentEventType string + +const ( + PlatformChatStreamEventServerSentEventTypeResponseCreated PlatformChatStreamEventServerSentEventType = "RESPONSE_CREATED" + PlatformChatStreamEventServerSentEventTypeResponseProgress PlatformChatStreamEventServerSentEventType = "RESPONSE_PROGRESS" + PlatformChatStreamEventServerSentEventTypeResponseOutputTextDelta PlatformChatStreamEventServerSentEventType = "RESPONSE_OUTPUT_TEXT_DELTA" + PlatformChatStreamEventServerSentEventTypeResponseOutputTextDone PlatformChatStreamEventServerSentEventType = "RESPONSE_OUTPUT_TEXT_DONE" + PlatformChatStreamEventServerSentEventTypeResponseCompleted PlatformChatStreamEventServerSentEventType = "RESPONSE_COMPLETED" + PlatformChatStreamEventServerSentEventTypeResponseFailed PlatformChatStreamEventServerSentEventType = "RESPONSE_FAILED" +) + +// PlatformChatStreamEventServerSentEvent - A typed server-sent event. +type PlatformChatStreamEventServerSentEvent struct { + PlatformChatStreamResponseCreatedServerSentEvent *PlatformChatStreamResponseCreatedServerSentEvent `queryParam:"inline"` + PlatformChatStreamProgressServerSentEvent *PlatformChatStreamProgressServerSentEvent `queryParam:"inline"` + PlatformChatStreamOutputTextDeltaServerSentEvent *PlatformChatStreamOutputTextDeltaServerSentEvent `queryParam:"inline"` + PlatformChatStreamOutputTextDoneServerSentEvent *PlatformChatStreamOutputTextDoneServerSentEvent `queryParam:"inline"` + PlatformChatStreamResponseCompletedServerSentEvent *PlatformChatStreamResponseCompletedServerSentEvent `queryParam:"inline"` + PlatformChatStreamResponseFailedServerSentEvent *PlatformChatStreamResponseFailedServerSentEvent `queryParam:"inline"` + + Type PlatformChatStreamEventServerSentEventType +} + +func CreatePlatformChatStreamEventServerSentEventResponseCreated(responseCreated PlatformChatStreamResponseCreatedServerSentEvent) PlatformChatStreamEventServerSentEvent { + typ := PlatformChatStreamEventServerSentEventTypeResponseCreated + + return PlatformChatStreamEventServerSentEvent{ + PlatformChatStreamResponseCreatedServerSentEvent: &responseCreated, + Type: typ, + } +} + +func CreatePlatformChatStreamEventServerSentEventResponseProgress(responseProgress PlatformChatStreamProgressServerSentEvent) PlatformChatStreamEventServerSentEvent { + typ := PlatformChatStreamEventServerSentEventTypeResponseProgress + + return PlatformChatStreamEventServerSentEvent{ + PlatformChatStreamProgressServerSentEvent: &responseProgress, + Type: typ, + } +} + +func CreatePlatformChatStreamEventServerSentEventResponseOutputTextDelta(responseOutputTextDelta PlatformChatStreamOutputTextDeltaServerSentEvent) PlatformChatStreamEventServerSentEvent { + typ := PlatformChatStreamEventServerSentEventTypeResponseOutputTextDelta + + return PlatformChatStreamEventServerSentEvent{ + PlatformChatStreamOutputTextDeltaServerSentEvent: &responseOutputTextDelta, + Type: typ, + } +} + +func CreatePlatformChatStreamEventServerSentEventResponseOutputTextDone(responseOutputTextDone PlatformChatStreamOutputTextDoneServerSentEvent) PlatformChatStreamEventServerSentEvent { + typ := PlatformChatStreamEventServerSentEventTypeResponseOutputTextDone + + return PlatformChatStreamEventServerSentEvent{ + PlatformChatStreamOutputTextDoneServerSentEvent: &responseOutputTextDone, + Type: typ, + } +} + +func CreatePlatformChatStreamEventServerSentEventResponseCompleted(responseCompleted PlatformChatStreamResponseCompletedServerSentEvent) PlatformChatStreamEventServerSentEvent { + typ := PlatformChatStreamEventServerSentEventTypeResponseCompleted + + return PlatformChatStreamEventServerSentEvent{ + PlatformChatStreamResponseCompletedServerSentEvent: &responseCompleted, + Type: typ, + } +} + +func CreatePlatformChatStreamEventServerSentEventResponseFailed(responseFailed PlatformChatStreamResponseFailedServerSentEvent) PlatformChatStreamEventServerSentEvent { + typ := PlatformChatStreamEventServerSentEventTypeResponseFailed + + return PlatformChatStreamEventServerSentEvent{ + PlatformChatStreamResponseFailedServerSentEvent: &responseFailed, + Type: typ, + } +} + +func (u *PlatformChatStreamEventServerSentEvent) UnmarshalJSON(data []byte) error { + + type discriminator struct { + Event string `json:"event"` + } + + dis := new(discriminator) + if err := json.Unmarshal(data, &dis); err != nil { + return fmt.Errorf("could not unmarshal discriminator: %w", err) + } + + switch dis.Event { + case "RESPONSE_CREATED": + platformChatStreamResponseCreatedServerSentEvent := new(PlatformChatStreamResponseCreatedServerSentEvent) + if err := utils.UnmarshalJSON(data, &platformChatStreamResponseCreatedServerSentEvent, "", true, nil); err != nil { + return fmt.Errorf("could not unmarshal `%s` into expected (Event == RESPONSE_CREATED) type PlatformChatStreamResponseCreatedServerSentEvent within PlatformChatStreamEventServerSentEvent: %w", string(data), err) + } + + u.PlatformChatStreamResponseCreatedServerSentEvent = platformChatStreamResponseCreatedServerSentEvent + u.Type = PlatformChatStreamEventServerSentEventTypeResponseCreated + return nil + case "RESPONSE_PROGRESS": + platformChatStreamProgressServerSentEvent := new(PlatformChatStreamProgressServerSentEvent) + if err := utils.UnmarshalJSON(data, &platformChatStreamProgressServerSentEvent, "", true, nil); err != nil { + return fmt.Errorf("could not unmarshal `%s` into expected (Event == RESPONSE_PROGRESS) type PlatformChatStreamProgressServerSentEvent within PlatformChatStreamEventServerSentEvent: %w", string(data), err) + } + + u.PlatformChatStreamProgressServerSentEvent = platformChatStreamProgressServerSentEvent + u.Type = PlatformChatStreamEventServerSentEventTypeResponseProgress + return nil + case "RESPONSE_OUTPUT_TEXT_DELTA": + platformChatStreamOutputTextDeltaServerSentEvent := new(PlatformChatStreamOutputTextDeltaServerSentEvent) + if err := utils.UnmarshalJSON(data, &platformChatStreamOutputTextDeltaServerSentEvent, "", true, nil); err != nil { + return fmt.Errorf("could not unmarshal `%s` into expected (Event == RESPONSE_OUTPUT_TEXT_DELTA) type PlatformChatStreamOutputTextDeltaServerSentEvent within PlatformChatStreamEventServerSentEvent: %w", string(data), err) + } + + u.PlatformChatStreamOutputTextDeltaServerSentEvent = platformChatStreamOutputTextDeltaServerSentEvent + u.Type = PlatformChatStreamEventServerSentEventTypeResponseOutputTextDelta + return nil + case "RESPONSE_OUTPUT_TEXT_DONE": + platformChatStreamOutputTextDoneServerSentEvent := new(PlatformChatStreamOutputTextDoneServerSentEvent) + if err := utils.UnmarshalJSON(data, &platformChatStreamOutputTextDoneServerSentEvent, "", true, nil); err != nil { + return fmt.Errorf("could not unmarshal `%s` into expected (Event == RESPONSE_OUTPUT_TEXT_DONE) type PlatformChatStreamOutputTextDoneServerSentEvent within PlatformChatStreamEventServerSentEvent: %w", string(data), err) + } + + u.PlatformChatStreamOutputTextDoneServerSentEvent = platformChatStreamOutputTextDoneServerSentEvent + u.Type = PlatformChatStreamEventServerSentEventTypeResponseOutputTextDone + return nil + case "RESPONSE_COMPLETED": + platformChatStreamResponseCompletedServerSentEvent := new(PlatformChatStreamResponseCompletedServerSentEvent) + if err := utils.UnmarshalJSON(data, &platformChatStreamResponseCompletedServerSentEvent, "", true, nil); err != nil { + return fmt.Errorf("could not unmarshal `%s` into expected (Event == RESPONSE_COMPLETED) type PlatformChatStreamResponseCompletedServerSentEvent within PlatformChatStreamEventServerSentEvent: %w", string(data), err) + } + + u.PlatformChatStreamResponseCompletedServerSentEvent = platformChatStreamResponseCompletedServerSentEvent + u.Type = PlatformChatStreamEventServerSentEventTypeResponseCompleted + return nil + case "RESPONSE_FAILED": + platformChatStreamResponseFailedServerSentEvent := new(PlatformChatStreamResponseFailedServerSentEvent) + if err := utils.UnmarshalJSON(data, &platformChatStreamResponseFailedServerSentEvent, "", true, nil); err != nil { + return fmt.Errorf("could not unmarshal `%s` into expected (Event == RESPONSE_FAILED) type PlatformChatStreamResponseFailedServerSentEvent within PlatformChatStreamEventServerSentEvent: %w", string(data), err) + } + + u.PlatformChatStreamResponseFailedServerSentEvent = platformChatStreamResponseFailedServerSentEvent + u.Type = PlatformChatStreamEventServerSentEventTypeResponseFailed + return nil + } + + return fmt.Errorf("could not unmarshal `%s` into any supported union types for PlatformChatStreamEventServerSentEvent", string(data)) +} + +func (u PlatformChatStreamEventServerSentEvent) MarshalJSON() ([]byte, error) { + if u.PlatformChatStreamResponseCreatedServerSentEvent != nil { + return utils.MarshalJSON(u.PlatformChatStreamResponseCreatedServerSentEvent, "", true) + } + + if u.PlatformChatStreamProgressServerSentEvent != nil { + return utils.MarshalJSON(u.PlatformChatStreamProgressServerSentEvent, "", true) + } + + if u.PlatformChatStreamOutputTextDeltaServerSentEvent != nil { + return utils.MarshalJSON(u.PlatformChatStreamOutputTextDeltaServerSentEvent, "", true) + } + + if u.PlatformChatStreamOutputTextDoneServerSentEvent != nil { + return utils.MarshalJSON(u.PlatformChatStreamOutputTextDoneServerSentEvent, "", true) + } + + if u.PlatformChatStreamResponseCompletedServerSentEvent != nil { + return utils.MarshalJSON(u.PlatformChatStreamResponseCompletedServerSentEvent, "", true) + } + + if u.PlatformChatStreamResponseFailedServerSentEvent != nil { + return utils.MarshalJSON(u.PlatformChatStreamResponseFailedServerSentEvent, "", true) + } + + return nil, errors.New("could not marshal union type PlatformChatStreamEventServerSentEvent: all fields are null") +} + +func (o PlatformChatStreamEventServerSentEvent) GetEventEncoding(event string) (string, error) { + switch event { + case "RESPONSE_CREATED": + return "application/json", nil + case "RESPONSE_PROGRESS": + return "application/json", nil + case "RESPONSE_OUTPUT_TEXT_DELTA": + return "application/json", nil + case "RESPONSE_OUTPUT_TEXT_DONE": + return "application/json", nil + case "RESPONSE_COMPLETED": + return "application/json", nil + case "RESPONSE_FAILED": + return "application/json", nil + } + return "string", nil +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatstreamoutputtextdelta.go b/tests/mockserver/internal/sdk/models/components/platformchatstreamoutputtextdelta.go new file mode 100644 index 00000000..fdac7c40 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatstreamoutputtextdelta.go @@ -0,0 +1,72 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "mockserver/internal/sdk/utils" +) + +type PlatformChatStreamOutputTextDeltaType string + +const ( + PlatformChatStreamOutputTextDeltaTypeResponseOutputTextDelta PlatformChatStreamOutputTextDeltaType = "RESPONSE_OUTPUT_TEXT_DELTA" +) + +func (e PlatformChatStreamOutputTextDeltaType) ToPointer() *PlatformChatStreamOutputTextDeltaType { + return &e +} +func (e *PlatformChatStreamOutputTextDeltaType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "RESPONSE_OUTPUT_TEXT_DELTA": + *e = PlatformChatStreamOutputTextDeltaType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformChatStreamOutputTextDeltaType: %v", v) + } +} + +type PlatformChatStreamOutputTextDelta struct { + Type PlatformChatStreamOutputTextDeltaType `json:"type"` + // Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + // + ResponseID string `json:"response_id"` + Delta string `json:"delta"` +} + +func (p PlatformChatStreamOutputTextDelta) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatStreamOutputTextDelta) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "response_id", "delta"}); err != nil { + return err + } + return nil +} + +func (o *PlatformChatStreamOutputTextDelta) GetType() PlatformChatStreamOutputTextDeltaType { + if o == nil { + return PlatformChatStreamOutputTextDeltaType("") + } + return o.Type +} + +func (o *PlatformChatStreamOutputTextDelta) GetResponseID() string { + if o == nil { + return "" + } + return o.ResponseID +} + +func (o *PlatformChatStreamOutputTextDelta) GetDelta() string { + if o == nil { + return "" + } + return o.Delta +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatstreamoutputtextdeltaserversentevent.go b/tests/mockserver/internal/sdk/models/components/platformchatstreamoutputtextdeltaserversentevent.go new file mode 100644 index 00000000..3841278b --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatstreamoutputtextdeltaserversentevent.go @@ -0,0 +1,42 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" +) + +type PlatformChatStreamOutputTextDeltaServerSentEvent struct { + ID *string `json:"id,omitempty"` + event string `const:"RESPONSE_OUTPUT_TEXT_DELTA" json:"event"` + Data PlatformChatStreamOutputTextDelta `json:"data"` +} + +func (p PlatformChatStreamOutputTextDeltaServerSentEvent) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatStreamOutputTextDeltaServerSentEvent) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"event", "data"}); err != nil { + return err + } + return nil +} + +func (o *PlatformChatStreamOutputTextDeltaServerSentEvent) GetID() *string { + if o == nil { + return nil + } + return o.ID +} + +func (o *PlatformChatStreamOutputTextDeltaServerSentEvent) GetEvent() string { + return "RESPONSE_OUTPUT_TEXT_DELTA" +} + +func (o *PlatformChatStreamOutputTextDeltaServerSentEvent) GetData() PlatformChatStreamOutputTextDelta { + if o == nil { + return PlatformChatStreamOutputTextDelta{} + } + return o.Data +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatstreamoutputtextdone.go b/tests/mockserver/internal/sdk/models/components/platformchatstreamoutputtextdone.go new file mode 100644 index 00000000..8037a279 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatstreamoutputtextdone.go @@ -0,0 +1,72 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "mockserver/internal/sdk/utils" +) + +type PlatformChatStreamOutputTextDoneType string + +const ( + PlatformChatStreamOutputTextDoneTypeResponseOutputTextDone PlatformChatStreamOutputTextDoneType = "RESPONSE_OUTPUT_TEXT_DONE" +) + +func (e PlatformChatStreamOutputTextDoneType) ToPointer() *PlatformChatStreamOutputTextDoneType { + return &e +} +func (e *PlatformChatStreamOutputTextDoneType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "RESPONSE_OUTPUT_TEXT_DONE": + *e = PlatformChatStreamOutputTextDoneType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformChatStreamOutputTextDoneType: %v", v) + } +} + +type PlatformChatStreamOutputTextDone struct { + Type PlatformChatStreamOutputTextDoneType `json:"type"` + // Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + // + ResponseID string `json:"response_id"` + Text string `json:"text"` +} + +func (p PlatformChatStreamOutputTextDone) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatStreamOutputTextDone) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "response_id", "text"}); err != nil { + return err + } + return nil +} + +func (o *PlatformChatStreamOutputTextDone) GetType() PlatformChatStreamOutputTextDoneType { + if o == nil { + return PlatformChatStreamOutputTextDoneType("") + } + return o.Type +} + +func (o *PlatformChatStreamOutputTextDone) GetResponseID() string { + if o == nil { + return "" + } + return o.ResponseID +} + +func (o *PlatformChatStreamOutputTextDone) GetText() string { + if o == nil { + return "" + } + return o.Text +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatstreamoutputtextdoneserversentevent.go b/tests/mockserver/internal/sdk/models/components/platformchatstreamoutputtextdoneserversentevent.go new file mode 100644 index 00000000..4421d666 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatstreamoutputtextdoneserversentevent.go @@ -0,0 +1,42 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" +) + +type PlatformChatStreamOutputTextDoneServerSentEvent struct { + ID *string `json:"id,omitempty"` + event string `const:"RESPONSE_OUTPUT_TEXT_DONE" json:"event"` + Data PlatformChatStreamOutputTextDone `json:"data"` +} + +func (p PlatformChatStreamOutputTextDoneServerSentEvent) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatStreamOutputTextDoneServerSentEvent) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"event", "data"}); err != nil { + return err + } + return nil +} + +func (o *PlatformChatStreamOutputTextDoneServerSentEvent) GetID() *string { + if o == nil { + return nil + } + return o.ID +} + +func (o *PlatformChatStreamOutputTextDoneServerSentEvent) GetEvent() string { + return "RESPONSE_OUTPUT_TEXT_DONE" +} + +func (o *PlatformChatStreamOutputTextDoneServerSentEvent) GetData() PlatformChatStreamOutputTextDone { + if o == nil { + return PlatformChatStreamOutputTextDone{} + } + return o.Data +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatstreamprogress.go b/tests/mockserver/internal/sdk/models/components/platformchatstreamprogress.go new file mode 100644 index 00000000..e59c586b --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatstreamprogress.go @@ -0,0 +1,74 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "mockserver/internal/sdk/utils" +) + +type PlatformChatStreamProgressType string + +const ( + PlatformChatStreamProgressTypeResponseProgress PlatformChatStreamProgressType = "RESPONSE_PROGRESS" +) + +func (e PlatformChatStreamProgressType) ToPointer() *PlatformChatStreamProgressType { + return &e +} +func (e *PlatformChatStreamProgressType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "RESPONSE_PROGRESS": + *e = PlatformChatStreamProgressType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformChatStreamProgressType: %v", v) + } +} + +type PlatformChatStreamProgress struct { + Type PlatformChatStreamProgressType `json:"type"` + // Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + // + ResponseID string `json:"response_id"` + // Verbatim concatenated fragment text from an assistant UPDATE wire message. Display-oriented passthrough only; not part of the final answer and not present on terminal response snapshots. + // + Text string `json:"text"` +} + +func (p PlatformChatStreamProgress) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatStreamProgress) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "response_id", "text"}); err != nil { + return err + } + return nil +} + +func (o *PlatformChatStreamProgress) GetType() PlatformChatStreamProgressType { + if o == nil { + return PlatformChatStreamProgressType("") + } + return o.Type +} + +func (o *PlatformChatStreamProgress) GetResponseID() string { + if o == nil { + return "" + } + return o.ResponseID +} + +func (o *PlatformChatStreamProgress) GetText() string { + if o == nil { + return "" + } + return o.Text +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatstreamprogressserversentevent.go b/tests/mockserver/internal/sdk/models/components/platformchatstreamprogressserversentevent.go new file mode 100644 index 00000000..3b1a876d --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatstreamprogressserversentevent.go @@ -0,0 +1,42 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" +) + +type PlatformChatStreamProgressServerSentEvent struct { + ID *string `json:"id,omitempty"` + event string `const:"RESPONSE_PROGRESS" json:"event"` + Data PlatformChatStreamProgress `json:"data"` +} + +func (p PlatformChatStreamProgressServerSentEvent) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatStreamProgressServerSentEvent) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"event", "data"}); err != nil { + return err + } + return nil +} + +func (o *PlatformChatStreamProgressServerSentEvent) GetID() *string { + if o == nil { + return nil + } + return o.ID +} + +func (o *PlatformChatStreamProgressServerSentEvent) GetEvent() string { + return "RESPONSE_PROGRESS" +} + +func (o *PlatformChatStreamProgressServerSentEvent) GetData() PlatformChatStreamProgress { + if o == nil { + return PlatformChatStreamProgress{} + } + return o.Data +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatstreamresponsecompleted.go b/tests/mockserver/internal/sdk/models/components/platformchatstreamresponsecompleted.go new file mode 100644 index 00000000..9f439b99 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatstreamresponsecompleted.go @@ -0,0 +1,72 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "mockserver/internal/sdk/utils" +) + +type PlatformChatStreamResponseCompletedType string + +const ( + PlatformChatStreamResponseCompletedTypeResponseCompleted PlatformChatStreamResponseCompletedType = "RESPONSE_COMPLETED" +) + +func (e PlatformChatStreamResponseCompletedType) ToPointer() *PlatformChatStreamResponseCompletedType { + return &e +} +func (e *PlatformChatStreamResponseCompletedType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "RESPONSE_COMPLETED": + *e = PlatformChatStreamResponseCompletedType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformChatStreamResponseCompletedType: %v", v) + } +} + +type PlatformChatStreamResponseCompleted struct { + Type PlatformChatStreamResponseCompletedType `json:"type"` + // Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + // + ResponseID string `json:"response_id"` + Response PlatformChatCompletedResponse `json:"response"` +} + +func (p PlatformChatStreamResponseCompleted) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatStreamResponseCompleted) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "response_id", "response"}); err != nil { + return err + } + return nil +} + +func (o *PlatformChatStreamResponseCompleted) GetType() PlatformChatStreamResponseCompletedType { + if o == nil { + return PlatformChatStreamResponseCompletedType("") + } + return o.Type +} + +func (o *PlatformChatStreamResponseCompleted) GetResponseID() string { + if o == nil { + return "" + } + return o.ResponseID +} + +func (o *PlatformChatStreamResponseCompleted) GetResponse() PlatformChatCompletedResponse { + if o == nil { + return PlatformChatCompletedResponse{} + } + return o.Response +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatstreamresponsecompletedserversentevent.go b/tests/mockserver/internal/sdk/models/components/platformchatstreamresponsecompletedserversentevent.go new file mode 100644 index 00000000..87196e33 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatstreamresponsecompletedserversentevent.go @@ -0,0 +1,42 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" +) + +type PlatformChatStreamResponseCompletedServerSentEvent struct { + ID *string `json:"id,omitempty"` + event string `const:"RESPONSE_COMPLETED" json:"event"` + Data PlatformChatStreamResponseCompleted `json:"data"` +} + +func (p PlatformChatStreamResponseCompletedServerSentEvent) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatStreamResponseCompletedServerSentEvent) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"event", "data"}); err != nil { + return err + } + return nil +} + +func (o *PlatformChatStreamResponseCompletedServerSentEvent) GetID() *string { + if o == nil { + return nil + } + return o.ID +} + +func (o *PlatformChatStreamResponseCompletedServerSentEvent) GetEvent() string { + return "RESPONSE_COMPLETED" +} + +func (o *PlatformChatStreamResponseCompletedServerSentEvent) GetData() PlatformChatStreamResponseCompleted { + if o == nil { + return PlatformChatStreamResponseCompleted{} + } + return o.Data +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatstreamresponsecreated.go b/tests/mockserver/internal/sdk/models/components/platformchatstreamresponsecreated.go new file mode 100644 index 00000000..94632f0e --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatstreamresponsecreated.go @@ -0,0 +1,64 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "mockserver/internal/sdk/utils" +) + +type PlatformChatStreamResponseCreatedType string + +const ( + PlatformChatStreamResponseCreatedTypeResponseCreated PlatformChatStreamResponseCreatedType = "RESPONSE_CREATED" +) + +func (e PlatformChatStreamResponseCreatedType) ToPointer() *PlatformChatStreamResponseCreatedType { + return &e +} +func (e *PlatformChatStreamResponseCreatedType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "RESPONSE_CREATED": + *e = PlatformChatStreamResponseCreatedType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformChatStreamResponseCreatedType: %v", v) + } +} + +type PlatformChatStreamResponseCreated struct { + Type PlatformChatStreamResponseCreatedType `json:"type"` + // Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + // + ResponseID string `json:"response_id"` +} + +func (p PlatformChatStreamResponseCreated) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatStreamResponseCreated) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "response_id"}); err != nil { + return err + } + return nil +} + +func (o *PlatformChatStreamResponseCreated) GetType() PlatformChatStreamResponseCreatedType { + if o == nil { + return PlatformChatStreamResponseCreatedType("") + } + return o.Type +} + +func (o *PlatformChatStreamResponseCreated) GetResponseID() string { + if o == nil { + return "" + } + return o.ResponseID +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatstreamresponsecreatedserversentevent.go b/tests/mockserver/internal/sdk/models/components/platformchatstreamresponsecreatedserversentevent.go new file mode 100644 index 00000000..445ab015 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatstreamresponsecreatedserversentevent.go @@ -0,0 +1,42 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" +) + +type PlatformChatStreamResponseCreatedServerSentEvent struct { + ID *string `json:"id,omitempty"` + event string `const:"RESPONSE_CREATED" json:"event"` + Data PlatformChatStreamResponseCreated `json:"data"` +} + +func (p PlatformChatStreamResponseCreatedServerSentEvent) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatStreamResponseCreatedServerSentEvent) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"event", "data"}); err != nil { + return err + } + return nil +} + +func (o *PlatformChatStreamResponseCreatedServerSentEvent) GetID() *string { + if o == nil { + return nil + } + return o.ID +} + +func (o *PlatformChatStreamResponseCreatedServerSentEvent) GetEvent() string { + return "RESPONSE_CREATED" +} + +func (o *PlatformChatStreamResponseCreatedServerSentEvent) GetData() PlatformChatStreamResponseCreated { + if o == nil { + return PlatformChatStreamResponseCreated{} + } + return o.Data +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatstreamresponsefailed.go b/tests/mockserver/internal/sdk/models/components/platformchatstreamresponsefailed.go new file mode 100644 index 00000000..4f558c38 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatstreamresponsefailed.go @@ -0,0 +1,72 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "mockserver/internal/sdk/utils" +) + +type PlatformChatStreamResponseFailedType string + +const ( + PlatformChatStreamResponseFailedTypeResponseFailed PlatformChatStreamResponseFailedType = "RESPONSE_FAILED" +) + +func (e PlatformChatStreamResponseFailedType) ToPointer() *PlatformChatStreamResponseFailedType { + return &e +} +func (e *PlatformChatStreamResponseFailedType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "RESPONSE_FAILED": + *e = PlatformChatStreamResponseFailedType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformChatStreamResponseFailedType: %v", v) + } +} + +type PlatformChatStreamResponseFailed struct { + Type PlatformChatStreamResponseFailedType `json:"type"` + // Platform-owned, non-persisted response envelope identifier in `resp_` form. The same identifier is used for every event in one streamed response. + // + ResponseID string `json:"response_id"` + Response PlatformChatFailedResponse `json:"response"` +} + +func (p PlatformChatStreamResponseFailed) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatStreamResponseFailed) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "response_id", "response"}); err != nil { + return err + } + return nil +} + +func (o *PlatformChatStreamResponseFailed) GetType() PlatformChatStreamResponseFailedType { + if o == nil { + return PlatformChatStreamResponseFailedType("") + } + return o.Type +} + +func (o *PlatformChatStreamResponseFailed) GetResponseID() string { + if o == nil { + return "" + } + return o.ResponseID +} + +func (o *PlatformChatStreamResponseFailed) GetResponse() PlatformChatFailedResponse { + if o == nil { + return PlatformChatFailedResponse{} + } + return o.Response +} diff --git a/tests/mockserver/internal/sdk/models/components/platformchatstreamresponsefailedserversentevent.go b/tests/mockserver/internal/sdk/models/components/platformchatstreamresponsefailedserversentevent.go new file mode 100644 index 00000000..8aeae900 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformchatstreamresponsefailedserversentevent.go @@ -0,0 +1,42 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" +) + +type PlatformChatStreamResponseFailedServerSentEvent struct { + ID *string `json:"id,omitempty"` + event string `const:"RESPONSE_FAILED" json:"event"` + Data PlatformChatStreamResponseFailed `json:"data"` +} + +func (p PlatformChatStreamResponseFailedServerSentEvent) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatStreamResponseFailedServerSentEvent) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"event", "data"}); err != nil { + return err + } + return nil +} + +func (o *PlatformChatStreamResponseFailedServerSentEvent) GetID() *string { + if o == nil { + return nil + } + return o.ID +} + +func (o *PlatformChatStreamResponseFailedServerSentEvent) GetEvent() string { + return "RESPONSE_FAILED" +} + +func (o *PlatformChatStreamResponseFailedServerSentEvent) GetData() PlatformChatStreamResponseFailed { + if o == nil { + return PlatformChatStreamResponseFailed{} + } + return o.Data +} diff --git a/tests/mockserver/internal/sdk/models/operations/platformchatcreate.go b/tests/mockserver/internal/sdk/models/operations/platformchatcreate.go index 1676f643..c9dbd053 100644 --- a/tests/mockserver/internal/sdk/models/operations/platformchatcreate.go +++ b/tests/mockserver/internal/sdk/models/operations/platformchatcreate.go @@ -3,15 +3,130 @@ package operations import ( + "errors" + "fmt" "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" ) +type PlatformChatCreateInputType string + +const ( + PlatformChatCreateInputTypeStr PlatformChatCreateInputType = "str" + PlatformChatCreateInputTypeArrayOfPlatformChatInputMessage PlatformChatCreateInputType = "arrayOfPlatformChatInputMessage" +) + +// PlatformChatCreateInput - Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. +type PlatformChatCreateInput struct { + Str *string `queryParam:"inline"` + ArrayOfPlatformChatInputMessage []components.PlatformChatInputMessage `queryParam:"inline"` + + Type PlatformChatCreateInputType +} + +func CreatePlatformChatCreateInputStr(str string) PlatformChatCreateInput { + typ := PlatformChatCreateInputTypeStr + + return PlatformChatCreateInput{ + Str: &str, + Type: typ, + } +} + +func CreatePlatformChatCreateInputArrayOfPlatformChatInputMessage(arrayOfPlatformChatInputMessage []components.PlatformChatInputMessage) PlatformChatCreateInput { + typ := PlatformChatCreateInputTypeArrayOfPlatformChatInputMessage + + return PlatformChatCreateInput{ + ArrayOfPlatformChatInputMessage: arrayOfPlatformChatInputMessage, + Type: typ, + } +} + +func (u *PlatformChatCreateInput) UnmarshalJSON(data []byte) error { + + var str string = "" + if err := utils.UnmarshalJSON(data, &str, "", true, nil); err == nil { + u.Str = &str + u.Type = PlatformChatCreateInputTypeStr + return nil + } + + var arrayOfPlatformChatInputMessage []components.PlatformChatInputMessage = []components.PlatformChatInputMessage{} + if err := utils.UnmarshalJSON(data, &arrayOfPlatformChatInputMessage, "", true, nil); err == nil { + u.ArrayOfPlatformChatInputMessage = arrayOfPlatformChatInputMessage + u.Type = PlatformChatCreateInputTypeArrayOfPlatformChatInputMessage + return nil + } + + return fmt.Errorf("could not unmarshal `%s` into any supported union types for PlatformChatCreateInput", string(data)) +} + +func (u PlatformChatCreateInput) MarshalJSON() ([]byte, error) { + if u.Str != nil { + return utils.MarshalJSON(u.Str, "", true) + } + + if u.ArrayOfPlatformChatInputMessage != nil { + return utils.MarshalJSON(u.ArrayOfPlatformChatInputMessage, "", true) + } + + return nil, errors.New("could not marshal union type PlatformChatCreateInput: all fields are null") +} + +type PlatformChatCreateRequest struct { + // Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. + // + Input PlatformChatCreateInput `json:"input"` + stream *bool `const:"false" json:"stream"` + // When true (default), persist the interaction and return a `conversation_id`. When false, run ephemerally with no persistence. + // + Store *bool `default:"true" json:"store"` + // Continue an existing stored conversation. Incompatible with message-array `input` and with `store: false`. + // + ConversationID *string `json:"conversation_id,omitempty"` +} + +func (p PlatformChatCreateRequest) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatCreateRequest) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"input"}); err != nil { + return err + } + return nil +} + +func (o *PlatformChatCreateRequest) GetInput() PlatformChatCreateInput { + if o == nil { + return PlatformChatCreateInput{} + } + return o.Input +} + +func (o *PlatformChatCreateRequest) GetStream() *bool { + return types.Bool(false) +} + +func (o *PlatformChatCreateRequest) GetStore() *bool { + if o == nil { + return nil + } + return o.Store +} + +func (o *PlatformChatCreateRequest) GetConversationID() *string { + if o == nil { + return nil + } + return o.ConversationID +} + type PlatformChatCreateResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // Successful response. PlatformChatCompletedResponse *components.PlatformChatCompletedResponse - // Successful response. - Res *string } func (o *PlatformChatCreateResponse) GetHTTPMeta() components.HTTPMetadata { @@ -27,10 +142,3 @@ func (o *PlatformChatCreateResponse) GetPlatformChatCompletedResponse() *compone } return o.PlatformChatCompletedResponse } - -func (o *PlatformChatCreateResponse) GetRes() *string { - if o == nil { - return nil - } - return o.Res -} diff --git a/tests/mockserver/internal/sdk/models/operations/platformchatcreatestream.go b/tests/mockserver/internal/sdk/models/operations/platformchatcreatestream.go new file mode 100644 index 00000000..d94a54b7 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformchatcreatestream.go @@ -0,0 +1,145 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "errors" + "fmt" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/types/stream" + "mockserver/internal/sdk/utils" +) + +type PlatformChatCreateStreamInputType string + +const ( + PlatformChatCreateStreamInputTypeStr PlatformChatCreateStreamInputType = "str" + PlatformChatCreateStreamInputTypeArrayOfPlatformChatInputMessage PlatformChatCreateStreamInputType = "arrayOfPlatformChatInputMessage" +) + +// PlatformChatCreateStreamInput - Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. +type PlatformChatCreateStreamInput struct { + Str *string `queryParam:"inline"` + ArrayOfPlatformChatInputMessage []components.PlatformChatInputMessage `queryParam:"inline"` + + Type PlatformChatCreateStreamInputType +} + +func CreatePlatformChatCreateStreamInputStr(str string) PlatformChatCreateStreamInput { + typ := PlatformChatCreateStreamInputTypeStr + + return PlatformChatCreateStreamInput{ + Str: &str, + Type: typ, + } +} + +func CreatePlatformChatCreateStreamInputArrayOfPlatformChatInputMessage(arrayOfPlatformChatInputMessage []components.PlatformChatInputMessage) PlatformChatCreateStreamInput { + typ := PlatformChatCreateStreamInputTypeArrayOfPlatformChatInputMessage + + return PlatformChatCreateStreamInput{ + ArrayOfPlatformChatInputMessage: arrayOfPlatformChatInputMessage, + Type: typ, + } +} + +func (u *PlatformChatCreateStreamInput) UnmarshalJSON(data []byte) error { + + var str string = "" + if err := utils.UnmarshalJSON(data, &str, "", true, nil); err == nil { + u.Str = &str + u.Type = PlatformChatCreateStreamInputTypeStr + return nil + } + + var arrayOfPlatformChatInputMessage []components.PlatformChatInputMessage = []components.PlatformChatInputMessage{} + if err := utils.UnmarshalJSON(data, &arrayOfPlatformChatInputMessage, "", true, nil); err == nil { + u.ArrayOfPlatformChatInputMessage = arrayOfPlatformChatInputMessage + u.Type = PlatformChatCreateStreamInputTypeArrayOfPlatformChatInputMessage + return nil + } + + return fmt.Errorf("could not unmarshal `%s` into any supported union types for PlatformChatCreateStreamInput", string(data)) +} + +func (u PlatformChatCreateStreamInput) MarshalJSON() ([]byte, error) { + if u.Str != nil { + return utils.MarshalJSON(u.Str, "", true) + } + + if u.ArrayOfPlatformChatInputMessage != nil { + return utils.MarshalJSON(u.ArrayOfPlatformChatInputMessage, "", true) + } + + return nil, errors.New("could not marshal union type PlatformChatCreateStreamInput: all fields are null") +} + +type PlatformChatCreateStreamRequest struct { + // Either a plain string (single user turn) or a chronological array of `USER`/`ASSISTANT` messages. The final array message must be `USER`. + // + Input PlatformChatCreateStreamInput `json:"input"` + stream *bool `const:"true" json:"stream"` + // When true (default), persist the interaction and return a `conversation_id`. When false, run ephemerally with no persistence. + // + Store *bool `default:"true" json:"store"` + // Continue an existing stored conversation. Incompatible with message-array `input` and with `store: false`. + // + ConversationID *string `json:"conversation_id,omitempty"` +} + +func (p PlatformChatCreateStreamRequest) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformChatCreateStreamRequest) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"input"}); err != nil { + return err + } + return nil +} + +func (o *PlatformChatCreateStreamRequest) GetInput() PlatformChatCreateStreamInput { + if o == nil { + return PlatformChatCreateStreamInput{} + } + return o.Input +} + +func (o *PlatformChatCreateStreamRequest) GetStream() *bool { + return types.Bool(true) +} + +func (o *PlatformChatCreateStreamRequest) GetStore() *bool { + if o == nil { + return nil + } + return o.Store +} + +func (o *PlatformChatCreateStreamRequest) GetConversationID() *string { + if o == nil { + return nil + } + return o.ConversationID +} + +type PlatformChatCreateStreamResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformChatStreamEventServerSentEvent *stream.EventStream[components.PlatformChatStreamEventServerSentEvent] +} + +func (o *PlatformChatCreateStreamResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformChatCreateStreamResponse) GetPlatformChatStreamEventServerSentEvent() *stream.EventStream[components.PlatformChatStreamEventServerSentEvent] { + if o == nil { + return nil + } + return o.PlatformChatStreamEventServerSentEvent +} diff --git a/tests/mockserver/internal/sdk/types/stream/stream.go b/tests/mockserver/internal/sdk/types/stream/stream.go new file mode 100644 index 00000000..365d8cff --- /dev/null +++ b/tests/mockserver/internal/sdk/types/stream/stream.go @@ -0,0 +1,218 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package stream + +import ( + "bufio" + "bytes" + "encoding/json" + "fmt" + "io" + "regexp" + "strconv" + "strings" +) + +type ServerEvent struct { + ID *string `json:"id,omitempty"` + Event *string `json:"event,omitempty"` + Data json.RawMessage `json:"data,omitempty"` + Retry *int64 `json:"retry,omitempty"` +} + +var ( + boundary = regexp.MustCompile(`\r\n\r\n|\r\r|\n\n`) + lineEnding = regexp.MustCompile(`\r?\n|\r`) +) + +func scanServerEvents(data []byte, atEOF bool) (advance int, token []byte, err error) { + if atEOF && len(data) == 0 { + return 0, nil, nil + } + + result := boundary.FindIndex(data) + if result != nil { + return result[1], data[:result[0]], nil + } + + if atEOF { + return len(data), bytes.TrimRight(data, "\r\n"), nil + } + + return 0, nil, nil +} + +type EventType interface { + GetEventEncoding(event string) (string, error) +} + +type EventStream[T any] struct { + r io.ReadCloser + scanner *bufio.Scanner + unmarshaller func(se []byte) (T, error) + sentinel string + + finished bool + err error + val *T +} + +func NewEventStream[T any]( + source io.Reader, + unmarshaller func(se []byte) (T, error), + sentinel string, +) *EventStream[T] { + scanner := bufio.NewScanner(source) + scanner.Split(scanServerEvents) + + var src io.ReadCloser + if s, ok := source.(io.ReadCloser); ok { + src = s + } else { + src = io.NopCloser(source) + } + + return &EventStream[T]{ + r: src, + scanner: scanner, + unmarshaller: unmarshaller, + sentinel: sentinel, + } +} + +// Next waits for the next event from a stream which will be available +// through the Value() method. It returns false when the stream is done or +// an error occurred. After this method returns false, the Err method is used +// to check for any errors that occurred while parsing the stream. +func (es *EventStream[T]) Next() bool { + if es.err != nil || es.finished { + return false + } + + if !es.scanner.Scan() { + return false + } + + es.err = es.scanner.Err() + if es.err != nil { + return false + } + + b := es.scanner.Bytes() + + var event ServerEvent + lines := lineEnding.Split(string(b), -1) + publish := false + data := "" + for _, line := range lines { + if line == "" { + continue + } + + delim := strings.Index(line, ":") + if delim == 0 { + continue + } + + field := "" + value := "" + if delim > 0 { + field = line[:delim] + } + if delim > 0 && delim < len(line)-1 { + value = line[delim+1:] + } + value = strings.TrimPrefix(value, " ") + + switch field { + case "id": + publish = true + event.ID = &value + case "event": + publish = true + event.Event = &value + case "retry": + retry, err := strconv.ParseInt(value, 10, 64) + if err == nil { + publish = true + event.Retry = &retry + } + case "data": + publish = true + data += value + "\n" + } + } + + if es.sentinel != "" && data == es.sentinel+"\n" { + es.finished = true + return false + } + + if len(data) > 0 { + data = data[:len(data)-1] + } + + encoding := "application/json" + + var t T + if et, ok := any(t).(EventType); ok { + ev := "" + if event.Event != nil { + ev = *event.Event + } + + var err error + encoding, err = et.GetEventEncoding(ev) + if err != nil { + es.err = err + return false + } + } else { + var a interface{} + if err := json.Unmarshal([]byte(data), &a); err != nil { + encoding = "string" + } + } + + if encoding == "string" { + data = fmt.Sprintf("%q", data) + } + + event.Data = []byte(data) + + e, err := json.Marshal(event) + if err != nil { + es.err = err + return false + } + + parsedEvent, err := es.unmarshaller(e) + if err != nil { + es.err = err + return false + } + + if publish { + es.val = &parsedEvent + } else { + es.val = nil + } + + return true +} + +// Value returns the most recent event that was generated from a call to Next +func (es *EventStream[T]) Value() *T { + return es.val +} + +// Err returns the first non-EOF error that was encountered +func (es *EventStream[T]) Err() error { + return es.err +} + +// Close will release underlying resources held by an event stream. It must +// always be called. +func (es *EventStream[T]) Close() error { + return es.r.Close() +} diff --git a/tests/test_chat_sdk.py b/tests/test_chat_sdk.py index 0ea26010..80a92728 100644 --- a/tests/test_chat_sdk.py +++ b/tests/test_chat_sdk.py @@ -15,7 +15,5 @@ def test_chat_sdk_platform_chat_create(): ) as glean: assert glean is not None - res = glean.chat.create( - input="What is our parental leave policy?", stream=False, store=True - ) + res = glean.chat.create(input="What is our parental leave policy?", store=True) assert res is not None diff --git a/tests/test_messages.py b/tests/test_messages.py index dfdc1864..132005ec 100644 --- a/tests/test_messages.py +++ b/tests/test_messages.py @@ -18,7 +18,7 @@ def test_messages_messages(): res = glean.client.messages.retrieve( id_type=models.IDType.CONVERSATION_ID, id="", - datasource=models.Datasource.SLACKENTGRID, + datasource=models.Datasource.FACEBOOKWORKPLACE, timestamp_millis=558834, ) assert res is not None diff --git a/tests/test_summarize.py b/tests/test_summarize.py index f9c494d5..449a8966 100644 --- a/tests/test_summarize.py +++ b/tests/test_summarize.py @@ -1,6 +1,6 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" -from glean.api_client import Glean +from glean.api_client import Glean, models import os from tests.test_client import create_test_http_client @@ -18,10 +18,12 @@ def test_summarize_summarize(): res = glean.client.documents.summarize( document_specs=[ { - "id": "", + "ugc_type": models.DocumentSpecUgcType1.ANNOUNCEMENTS, + "content_id": 150932, }, { - "id": "", + "ugc_type": models.DocumentSpecUgcType1.ANNOUNCEMENTS, + "content_id": 150932, }, ] ) From 8df02d32de193cf9c6165e16b6f372570970d704 Mon Sep 17 00:00:00 2001 From: "speakeasy-github[bot]" <128539517+speakeasy-github[bot]@users.noreply.github.com> Date: Wed, 2 Sep 2026 18:58:16 +0000 Subject: [PATCH 2/2] empty commit to trigger [run-tests] workflow