lemma-sdk 0.2.43 → 0.2.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/README.md +2 -5
  2. package/dist/assistant-events.d.ts +1 -0
  3. package/dist/assistant-events.js +25 -3
  4. package/dist/browser/lemma-client.js +1082 -296
  5. package/dist/client.d.ts +8 -0
  6. package/dist/client.js +13 -1
  7. package/dist/index.d.ts +4 -0
  8. package/dist/namespaces/agent-runtime.d.ts +28 -0
  9. package/dist/namespaces/agent-runtime.js +34 -0
  10. package/dist/namespaces/agents.d.ts +8 -3
  11. package/dist/namespaces/agents.js +4 -0
  12. package/dist/namespaces/conversations.d.ts +35 -7
  13. package/dist/namespaces/conversations.js +103 -22
  14. package/dist/namespaces/desks.d.ts +3 -3
  15. package/dist/namespaces/files.d.ts +12 -5
  16. package/dist/namespaces/files.js +12 -3
  17. package/dist/namespaces/functions.d.ts +8 -3
  18. package/dist/namespaces/functions.js +4 -0
  19. package/dist/namespaces/integrations.d.ts +54 -12
  20. package/dist/namespaces/integrations.js +52 -16
  21. package/dist/namespaces/pod-members.d.ts +1 -0
  22. package/dist/namespaces/pod-members.js +4 -1
  23. package/dist/namespaces/pod-permissions.d.ts +14 -0
  24. package/dist/namespaces/pod-permissions.js +18 -0
  25. package/dist/namespaces/pod-roles.d.ts +16 -0
  26. package/dist/namespaces/pod-roles.js +25 -0
  27. package/dist/namespaces/resource-access.d.ts +11 -0
  28. package/dist/namespaces/resource-access.js +18 -0
  29. package/dist/namespaces/schedules.d.ts +3 -3
  30. package/dist/namespaces/tables.d.ts +4 -4
  31. package/dist/namespaces/workflows.d.ts +4 -4
  32. package/dist/openapi_client/index.d.ts +76 -30
  33. package/dist/openapi_client/index.js +20 -7
  34. package/dist/openapi_client/models/AccountCreateSchema.d.ts +18 -0
  35. package/dist/openapi_client/models/AccountResponseSchema.d.ts +3 -0
  36. package/dist/openapi_client/models/AgentActionResponse.d.ts +20 -0
  37. package/dist/openapi_client/models/AgentDetailResponse.d.ts +22 -0
  38. package/dist/openapi_client/models/AgentHarnessInfo.d.ts +9 -0
  39. package/dist/openapi_client/models/AgentHarnessListResponse.d.ts +4 -0
  40. package/dist/openapi_client/models/AgentListResponse.d.ts +2 -2
  41. package/dist/openapi_client/models/AgentPermissionsReplaceRequest.d.ts +4 -0
  42. package/dist/openapi_client/models/AgentPermissionsResponse.d.ts +6 -0
  43. package/dist/openapi_client/models/AgentResourcePermissionRequest.d.ts +6 -0
  44. package/dist/openapi_client/models/AgentResourcePermissionResponse.d.ts +6 -0
  45. package/dist/openapi_client/models/AgentRunApprovalDecision.d.ts +8 -0
  46. package/dist/openapi_client/models/AgentRunApprovalDecision.js +13 -0
  47. package/dist/openapi_client/models/AgentRuntimeConfig.d.ts +7 -0
  48. package/dist/openapi_client/models/AgentRuntimeProfileListResponse.d.ts +6 -0
  49. package/dist/openapi_client/models/AgentRuntimeProfileResponse.d.ts +22 -0
  50. package/dist/openapi_client/models/AgentSurfaceResponse.d.ts +11 -4
  51. package/dist/openapi_client/models/ApplicationDetailResponseSchema.d.ts +3 -3
  52. package/dist/openapi_client/models/ApplicationResponseSchema.d.ts +3 -3
  53. package/dist/openapi_client/models/AuthConfigCreateSchema.d.ts +7 -0
  54. package/dist/openapi_client/models/AuthConfigListResponseSchema.d.ts +6 -0
  55. package/dist/openapi_client/models/AuthConfigResponseSchema.d.ts +13 -0
  56. package/dist/openapi_client/models/AuthScheme.d.ts +5 -0
  57. package/dist/openapi_client/models/AuthScheme.js +10 -0
  58. package/dist/openapi_client/models/BillingInterval.d.ts +2 -2
  59. package/dist/openapi_client/models/BillingInterval.js +2 -2
  60. package/dist/openapi_client/models/BillingInvoiceResponse.d.ts +0 -2
  61. package/dist/openapi_client/models/ComposioProviderCapabilityResponseSchema.d.ts +9 -0
  62. package/dist/openapi_client/models/ConnectRequestInitiateSchema.d.ts +5 -1
  63. package/dist/openapi_client/models/ConnectRequestResponseSchema.d.ts +2 -0
  64. package/dist/openapi_client/models/ConversationResponse.d.ts +2 -2
  65. package/dist/openapi_client/models/ConvertedArtifactResponse.d.ts +1 -0
  66. package/dist/openapi_client/models/ConvertedFileResponse.d.ts +4 -0
  67. package/dist/openapi_client/models/ConvertedPageResponse.d.ts +8 -0
  68. package/dist/openapi_client/models/CreateAgentRequest.d.ts +4 -12
  69. package/dist/openapi_client/models/CreateAnthropicCompatibleRuntimeProfileRequest.d.ts +11 -0
  70. package/dist/openapi_client/models/CreateConversationRequest.d.ts +2 -2
  71. package/dist/openapi_client/models/CreateDeskRequest.d.ts +1 -1
  72. package/dist/openapi_client/models/CreateFolderRequest.d.ts +1 -1
  73. package/dist/openapi_client/models/CreateFunctionRequest.d.ts +2 -6
  74. package/dist/openapi_client/models/CreateOpenAICompatibleRuntimeProfileRequest.d.ts +11 -0
  75. package/dist/openapi_client/models/CreateScheduleRequest.d.ts +13 -1
  76. package/dist/openapi_client/models/CreateSurfaceRequest.d.ts +12 -14
  77. package/dist/openapi_client/models/CreateTableRequest.d.ts +1 -1
  78. package/dist/openapi_client/models/CreateUserDaemonRuntimeProfileRequest.d.ts +9 -0
  79. package/dist/openapi_client/models/DatastoreFileUploadRequest.d.ts +1 -1
  80. package/dist/openapi_client/models/DeskBundleUploadResponse.d.ts +2 -2
  81. package/dist/openapi_client/models/{DeskResponse.d.ts → DeskDetailResponse.d.ts} +2 -2
  82. package/dist/openapi_client/models/DeskListResponse.d.ts +2 -2
  83. package/dist/openapi_client/models/DeskServingConfigResponse.d.ts +11 -0
  84. package/dist/openapi_client/models/DeskServingConfigResponse.js +8 -0
  85. package/dist/openapi_client/models/EventFlowStartInput.d.ts +0 -8
  86. package/dist/openapi_client/models/EventFlowStartOutput.d.ts +0 -8
  87. package/dist/openapi_client/models/{FileResponse.d.ts → FileDetailResponse.d.ts} +2 -2
  88. package/dist/openapi_client/models/FileListResponse.d.ts +2 -2
  89. package/dist/openapi_client/models/{FlowResponse.d.ts → FlowDetailResponse.d.ts} +2 -2
  90. package/dist/openapi_client/models/{FunctionResponse.d.ts → FunctionActionResponse.d.ts} +3 -10
  91. package/dist/openapi_client/models/FunctionActionResponse.js +1 -0
  92. package/dist/openapi_client/models/FunctionDetailResponse.d.ts +34 -0
  93. package/dist/openapi_client/models/FunctionDetailResponse.js +1 -0
  94. package/dist/openapi_client/models/FunctionListResponse.d.ts +2 -2
  95. package/dist/openapi_client/models/FunctionPermissionsReplaceRequest.d.ts +4 -0
  96. package/dist/openapi_client/models/FunctionPermissionsReplaceRequest.js +1 -0
  97. package/dist/openapi_client/models/FunctionPermissionsResponse.d.ts +6 -0
  98. package/dist/openapi_client/models/FunctionPermissionsResponse.js +1 -0
  99. package/dist/openapi_client/models/FunctionResourcePermissionRequest.d.ts +6 -0
  100. package/dist/openapi_client/models/FunctionResourcePermissionRequest.js +1 -0
  101. package/dist/openapi_client/models/FunctionResourcePermissionResponse.d.ts +6 -0
  102. package/dist/openapi_client/models/FunctionResourcePermissionResponse.js +1 -0
  103. package/dist/openapi_client/models/FunctionRunListResponse.d.ts +2 -2
  104. package/dist/openapi_client/models/FunctionRunSummaryResponse.d.ts +13 -0
  105. package/dist/openapi_client/models/FunctionRunSummaryResponse.js +1 -0
  106. package/dist/openapi_client/models/GmailSurfaceConfig.d.ts +1 -1
  107. package/dist/openapi_client/models/HarnessKind.d.ts +4 -2
  108. package/dist/openapi_client/models/HarnessKind.js +4 -2
  109. package/dist/openapi_client/models/LemmaProviderCapabilityResponseSchema.d.ts +12 -0
  110. package/dist/openapi_client/models/LemmaProviderCapabilityResponseSchema.js +1 -0
  111. package/dist/openapi_client/models/OAuth2DefaultsResponseSchema.d.ts +10 -0
  112. package/dist/openapi_client/models/OAuth2DefaultsResponseSchema.js +1 -0
  113. package/dist/openapi_client/models/OperationSummary.d.ts +4 -0
  114. package/dist/openapi_client/models/OutlookSurfaceConfig.d.ts +1 -1
  115. package/dist/openapi_client/models/PlanResponse.d.ts +3 -2
  116. package/dist/openapi_client/models/PlanType.d.ts +7 -0
  117. package/dist/openapi_client/models/PlanType.js +12 -0
  118. package/dist/openapi_client/models/PodConfig.d.ts +6 -0
  119. package/dist/openapi_client/models/PodConfig.js +1 -0
  120. package/dist/openapi_client/models/PodCreateRequest.d.ts +2 -0
  121. package/dist/openapi_client/models/PodEffectivePermissionsResponse.d.ts +4 -0
  122. package/dist/openapi_client/models/PodEffectivePermissionsResponse.js +1 -0
  123. package/dist/openapi_client/models/PodPermissionCatalogResponse.d.ts +4 -0
  124. package/dist/openapi_client/models/PodPermissionCatalogResponse.js +1 -0
  125. package/dist/openapi_client/models/PodPermissionResponse.d.ts +7 -0
  126. package/dist/openapi_client/models/PodPermissionResponse.js +1 -0
  127. package/dist/openapi_client/models/PodResponse.d.ts +2 -0
  128. package/dist/openapi_client/models/PodRoleCreateRequest.d.ts +2 -0
  129. package/dist/openapi_client/models/PodRolePermissionsReplaceRequest.d.ts +4 -0
  130. package/dist/openapi_client/models/PodRolePermissionsReplaceRequest.js +1 -0
  131. package/dist/openapi_client/models/PodRolePermissionsResponse.d.ts +6 -0
  132. package/dist/openapi_client/models/PodRolePermissionsResponse.js +1 -0
  133. package/dist/openapi_client/models/PodRoleResourcePermissionRequest.d.ts +6 -0
  134. package/dist/openapi_client/models/PodRoleResourcePermissionRequest.js +1 -0
  135. package/dist/openapi_client/models/PodRoleResourcePermissionResponse.d.ts +6 -0
  136. package/dist/openapi_client/models/PodRoleResourcePermissionResponse.js +1 -0
  137. package/dist/openapi_client/models/PodRoleResponse.d.ts +3 -0
  138. package/dist/openapi_client/models/PodUpdateRequest.d.ts +2 -0
  139. package/dist/openapi_client/models/ResolveUserApprovalRequest.d.ts +5 -0
  140. package/dist/openapi_client/models/ResolveUserApprovalRequest.js +1 -0
  141. package/dist/openapi_client/models/ResourceAccessGrantRequest.d.ts +3 -0
  142. package/dist/openapi_client/models/ResourceAccessGrantRequest.js +1 -0
  143. package/dist/openapi_client/models/ResourceAccessGrantResponse.d.ts +12 -0
  144. package/dist/openapi_client/models/ResourceAccessGrantResponse.js +1 -0
  145. package/dist/openapi_client/models/ResourceAccessResponse.d.ts +7 -0
  146. package/dist/openapi_client/models/ResourceAccessResponse.js +1 -0
  147. package/dist/openapi_client/models/ResourceType.d.ts +19 -0
  148. package/dist/openapi_client/models/ResourceType.js +24 -0
  149. package/dist/openapi_client/models/ResourceVisibility.d.ts +6 -0
  150. package/dist/openapi_client/models/ResourceVisibility.js +11 -0
  151. package/dist/openapi_client/models/RuntimeModelCapability.d.ts +8 -0
  152. package/dist/openapi_client/models/RuntimeModelCapability.js +13 -0
  153. package/dist/openapi_client/models/RuntimeModelCatalogEntry.d.ts +9 -0
  154. package/dist/openapi_client/models/RuntimeModelCatalogEntry.js +1 -0
  155. package/dist/openapi_client/models/RuntimeProfileKind.d.ts +4 -0
  156. package/dist/openapi_client/models/RuntimeProfileKind.js +9 -0
  157. package/dist/openapi_client/models/RuntimeProfileProtocol.d.ts +9 -0
  158. package/dist/openapi_client/models/RuntimeProfileProtocol.js +14 -0
  159. package/dist/openapi_client/models/RuntimeProfileScope.d.ts +4 -0
  160. package/dist/openapi_client/models/RuntimeProfileScope.js +9 -0
  161. package/dist/openapi_client/models/RuntimeProfileStatus.d.ts +5 -0
  162. package/dist/openapi_client/models/RuntimeProfileStatus.js +10 -0
  163. package/dist/openapi_client/models/{ScheduleResponse.d.ts → ScheduleDetailResponse.d.ts} +3 -3
  164. package/dist/openapi_client/models/ScheduleDetailResponse.js +1 -0
  165. package/dist/openapi_client/models/ScheduleListResponse.d.ts +2 -2
  166. package/dist/openapi_client/models/SlackSurfaceConfig.d.ts +1 -4
  167. package/dist/openapi_client/models/SubscriptionResponse.d.ts +2 -2
  168. package/dist/openapi_client/models/SubscriptionWithPlanResponse.d.ts +2 -2
  169. package/dist/openapi_client/models/SurfaceBehaviorConfigInput.d.ts +3 -0
  170. package/dist/openapi_client/models/SurfaceBehaviorConfigInput.js +1 -0
  171. package/dist/openapi_client/models/SurfaceEventMode.d.ts +6 -0
  172. package/dist/openapi_client/models/SurfaceEventMode.js +11 -0
  173. package/dist/openapi_client/models/SurfaceMode.d.ts +5 -0
  174. package/dist/openapi_client/models/SurfaceMode.js +10 -0
  175. package/dist/openapi_client/models/SurfaceSetupMode.d.ts +2 -3
  176. package/dist/openapi_client/models/SurfaceSetupMode.js +1 -2
  177. package/dist/openapi_client/models/{TableResponse.d.ts → TableDetailResponse.d.ts} +3 -3
  178. package/dist/openapi_client/models/TableDetailResponse.js +1 -0
  179. package/dist/openapi_client/models/TableListResponse.d.ts +2 -2
  180. package/dist/openapi_client/models/TeamsSurfaceConfig.d.ts +1 -3
  181. package/dist/openapi_client/models/TelegramSurfaceConfig.d.ts +1 -0
  182. package/dist/openapi_client/models/UpdateAgentRequest.d.ts +4 -12
  183. package/dist/openapi_client/models/UpdateConversationRequest.d.ts +2 -2
  184. package/dist/openapi_client/models/UpdateDeskRequest.d.ts +0 -1
  185. package/dist/openapi_client/models/UpdateFunctionRequest.d.ts +2 -6
  186. package/dist/openapi_client/models/UpdateScheduleRequest.d.ts +1 -1
  187. package/dist/openapi_client/models/UpdateSurfaceRequest.d.ts +11 -14
  188. package/dist/openapi_client/models/UpdateTableRequest.d.ts +1 -1
  189. package/dist/openapi_client/models/UsageLimitScopeResponse.d.ts +2 -3
  190. package/dist/openapi_client/models/UsageLimitsResponse.d.ts +1 -4
  191. package/dist/openapi_client/models/UsageListResponse.d.ts +0 -3
  192. package/dist/openapi_client/models/UsageRecordResponse.d.ts +10 -14
  193. package/dist/openapi_client/models/UsageStatsBucketResponse.d.ts +1 -4
  194. package/dist/openapi_client/models/UsageStatsResponse.d.ts +0 -3
  195. package/dist/openapi_client/models/UsageSummaryResponse.d.ts +4 -6
  196. package/dist/openapi_client/models/UserApprovalListResponse.d.ts +4 -0
  197. package/dist/openapi_client/models/UserApprovalListResponse.js +1 -0
  198. package/dist/openapi_client/models/VerifyTokenResponse.d.ts +5 -0
  199. package/dist/openapi_client/models/WhatsAppSurfaceConfig.d.ts +1 -0
  200. package/dist/openapi_client/models/WorkflowCreateRequest.d.ts +2 -1
  201. package/dist/openapi_client/models/WorkflowListResponse.d.ts +2 -2
  202. package/dist/openapi_client/models/WorkflowRunListResponse.d.ts +2 -2
  203. package/dist/openapi_client/models/WorkflowRunSummaryResponse.d.ts +18 -0
  204. package/dist/openapi_client/models/WorkflowRunSummaryResponse.js +1 -0
  205. package/dist/openapi_client/models/WorkflowUpdateRequest.d.ts +2 -1
  206. package/dist/openapi_client/models/WorkspaceAppAccessRequest.d.ts +6 -0
  207. package/dist/openapi_client/models/WorkspaceAppAccessRequest.js +1 -0
  208. package/dist/openapi_client/models/WorkspaceAppAccessResponse.d.ts +5 -0
  209. package/dist/openapi_client/models/WorkspaceAppAccessResponse.js +1 -0
  210. package/dist/openapi_client/models/WorkspaceMeApp.d.ts +5 -0
  211. package/dist/openapi_client/models/WorkspaceMeApp.js +1 -0
  212. package/dist/openapi_client/models/WorkspaceMeResponse.d.ts +9 -0
  213. package/dist/openapi_client/models/WorkspaceMeResponse.js +1 -0
  214. package/dist/openapi_client/models/WorkspaceMeSandbox.d.ts +10 -0
  215. package/dist/openapi_client/models/WorkspaceMeSandbox.js +1 -0
  216. package/dist/openapi_client/models/WorkspaceMeSession.d.ts +6 -0
  217. package/dist/openapi_client/models/WorkspaceMeSession.js +1 -0
  218. package/dist/openapi_client/models/update.d.ts +1 -1
  219. package/dist/openapi_client/services/AgentConversationsService.d.ts +28 -3
  220. package/dist/openapi_client/services/AgentConversationsService.js +54 -3
  221. package/dist/openapi_client/services/AgentRuntimeService.d.ts +30 -0
  222. package/dist/openapi_client/services/AgentRuntimeService.js +54 -0
  223. package/dist/openapi_client/services/AgentSurfacesIngressService.d.ts +15 -20
  224. package/dist/openapi_client/services/AgentSurfacesIngressService.js +23 -28
  225. package/dist/openapi_client/services/AgentSurfacesService.d.ts +8 -8
  226. package/dist/openapi_client/services/AgentSurfacesService.js +20 -20
  227. package/dist/openapi_client/services/AgentToolsService.d.ts +0 -10
  228. package/dist/openapi_client/services/AgentToolsService.js +0 -18
  229. package/dist/openapi_client/services/AgentsService.d.ts +31 -9
  230. package/dist/openapi_client/services/AgentsService.js +50 -5
  231. package/dist/openapi_client/services/ApplicationsService.d.ts +12 -8
  232. package/dist/openapi_client/services/ApplicationsService.js +24 -16
  233. package/dist/openapi_client/services/BillingSubscriptionsService.d.ts +3 -2
  234. package/dist/openapi_client/services/BillingSubscriptionsService.js +3 -3
  235. package/dist/openapi_client/services/DesksService.d.ts +7 -7
  236. package/dist/openapi_client/services/DesksService.js +3 -3
  237. package/dist/openapi_client/services/FilesService.d.ts +18 -9
  238. package/dist/openapi_client/services/FilesService.js +28 -4
  239. package/dist/openapi_client/services/FunctionsService.d.ts +29 -7
  240. package/dist/openapi_client/services/FunctionsService.js +48 -3
  241. package/dist/openapi_client/services/IntegrationsService.d.ts +65 -14
  242. package/dist/openapi_client/services/IntegrationsService.js +144 -23
  243. package/dist/openapi_client/services/OrganizationsService.d.ts +8 -0
  244. package/dist/openapi_client/services/OrganizationsService.js +19 -0
  245. package/dist/openapi_client/services/PodMembersService.d.ts +0 -10
  246. package/dist/openapi_client/services/PodMembersService.js +0 -24
  247. package/dist/openapi_client/services/PodPermissionsService.d.ts +19 -0
  248. package/dist/openapi_client/services/PodPermissionsService.js +40 -0
  249. package/dist/openapi_client/services/PodResourceAccessService.d.ts +38 -0
  250. package/dist/openapi_client/services/PodResourceAccessService.js +81 -0
  251. package/dist/openapi_client/services/PodRolesService.d.ts +28 -0
  252. package/dist/openapi_client/services/PodRolesService.js +66 -0
  253. package/dist/openapi_client/services/PublicDesksService.d.ts +10 -0
  254. package/dist/openapi_client/services/PublicDesksService.js +15 -0
  255. package/dist/openapi_client/services/SchedulesService.d.ts +7 -7
  256. package/dist/openapi_client/services/SchedulesService.js +3 -3
  257. package/dist/openapi_client/services/TablesService.d.ts +9 -9
  258. package/dist/openapi_client/services/TablesService.js +4 -4
  259. package/dist/openapi_client/services/UsageService.d.ts +96 -0
  260. package/dist/openapi_client/services/UsageService.js +210 -0
  261. package/dist/openapi_client/services/WorkflowsService.d.ts +9 -9
  262. package/dist/openapi_client/services/WorkflowsService.js +4 -4
  263. package/dist/openapi_client/services/WorkspaceAppsService.d.ts +12 -0
  264. package/dist/openapi_client/services/WorkspaceAppsService.js +21 -0
  265. package/dist/openapi_client/services/WorkspaceService.d.ts +10 -0
  266. package/dist/openapi_client/services/WorkspaceService.js +15 -0
  267. package/dist/react/AuthGuard.d.ts +16 -2
  268. package/dist/react/AuthGuard.js +169 -130
  269. package/dist/react/index.d.ts +1 -1
  270. package/dist/react/useAssistantController.d.ts +26 -3
  271. package/dist/react/useAssistantController.js +187 -69
  272. package/dist/react/useAssistantSession.d.ts +10 -7
  273. package/dist/react/useAssistantSession.js +106 -5
  274. package/dist/react/useConversations.d.ts +1 -7
  275. package/dist/react/useConversations.js +4 -10
  276. package/dist/react/useFlowRunHistory.d.ts +4 -4
  277. package/dist/react/useFlowRunHistory.js +9 -4
  278. package/dist/react/useFlowSession.d.ts +2 -2
  279. package/dist/react/useFunctionRun.d.ts +2 -2
  280. package/dist/react/useFunctionRuns.d.ts +5 -5
  281. package/dist/react/useFunctionSession.d.ts +2 -2
  282. package/dist/react/useWorkflowRun.d.ts +2 -2
  283. package/dist/react/useWorkflowRuns.d.ts +5 -5
  284. package/dist/react/useWorkflowStart.d.ts +2 -2
  285. package/dist/types.d.ts +45 -8
  286. package/package.json +2 -2
  287. package/dist/openapi_client/models/AgentModelName.d.ts +0 -13
  288. package/dist/openapi_client/models/AgentModelName.js +0 -18
  289. package/dist/openapi_client/models/AgentResponse.d.ts +0 -29
  290. package/dist/openapi_client/models/ApplicationAccessConfig.d.ts +0 -18
  291. package/dist/openapi_client/models/ApplicationMode.d.ts +0 -7
  292. package/dist/openapi_client/models/ApplicationMode.js +0 -12
  293. package/dist/openapi_client/models/BillingScope.d.ts +0 -7
  294. package/dist/openapi_client/models/BillingScope.js +0 -12
  295. package/dist/openapi_client/models/FunctionTableAccessEntry.d.ts +0 -5
  296. package/dist/openapi_client/models/GmailSurfaceConfigInput.d.ts +0 -4
  297. package/dist/openapi_client/models/OutlookSurfaceConfigInput.d.ts +0 -4
  298. package/dist/openapi_client/models/RecentUsageResponse.d.ts +0 -9
  299. package/dist/openapi_client/models/SlackCredentialsInput.d.ts +0 -5
  300. package/dist/openapi_client/models/SlackSurfaceConfigInput.d.ts +0 -6
  301. package/dist/openapi_client/models/SurfaceCredentialMode.d.ts +0 -4
  302. package/dist/openapi_client/models/SurfaceCredentialMode.js +0 -9
  303. package/dist/openapi_client/models/SurfaceWebhookMode.d.ts +0 -4
  304. package/dist/openapi_client/models/SurfaceWebhookMode.js +0 -9
  305. package/dist/openapi_client/models/TableAccessEntry.d.ts +0 -8
  306. package/dist/openapi_client/models/TableAccessMode.d.ts +0 -7
  307. package/dist/openapi_client/models/TableAccessMode.js +0 -12
  308. package/dist/openapi_client/models/TeamsCredentialsInput.d.ts +0 -6
  309. package/dist/openapi_client/models/TeamsSurfaceConfigInput.d.ts +0 -6
  310. package/dist/openapi_client/models/TelegramCredentialsInput.d.ts +0 -5
  311. package/dist/openapi_client/models/TelegramSurfaceConfigInput.d.ts +0 -6
  312. package/dist/openapi_client/models/WebSearchAgentRequest.d.ts +0 -9
  313. package/dist/openapi_client/models/WebSearchAgentResponse.d.ts +0 -25
  314. package/dist/openapi_client/models/WhatsAppCredentialsInput.d.ts +0 -8
  315. package/dist/openapi_client/models/WhatsAppSurfaceConfigInput.d.ts +0 -6
  316. package/dist/openapi_client/services/BillingUsageService.d.ts +0 -138
  317. package/dist/openapi_client/services/BillingUsageService.js +0 -302
  318. /package/dist/openapi_client/models/{AgentResponse.js → AccountCreateSchema.js} +0 -0
  319. /package/dist/openapi_client/models/{ApplicationAccessConfig.js → AgentActionResponse.js} +0 -0
  320. /package/dist/openapi_client/models/{DeskResponse.js → AgentDetailResponse.js} +0 -0
  321. /package/dist/openapi_client/models/{FileResponse.js → AgentHarnessInfo.js} +0 -0
  322. /package/dist/openapi_client/models/{FlowResponse.js → AgentHarnessListResponse.js} +0 -0
  323. /package/dist/openapi_client/models/{FunctionResponse.js → AgentPermissionsReplaceRequest.js} +0 -0
  324. /package/dist/openapi_client/models/{FunctionTableAccessEntry.js → AgentPermissionsResponse.js} +0 -0
  325. /package/dist/openapi_client/models/{GmailSurfaceConfigInput.js → AgentResourcePermissionRequest.js} +0 -0
  326. /package/dist/openapi_client/models/{OutlookSurfaceConfigInput.js → AgentResourcePermissionResponse.js} +0 -0
  327. /package/dist/openapi_client/models/{RecentUsageResponse.js → AgentRuntimeConfig.js} +0 -0
  328. /package/dist/openapi_client/models/{ScheduleResponse.js → AgentRuntimeProfileListResponse.js} +0 -0
  329. /package/dist/openapi_client/models/{SlackCredentialsInput.js → AgentRuntimeProfileResponse.js} +0 -0
  330. /package/dist/openapi_client/models/{SlackSurfaceConfigInput.js → AuthConfigCreateSchema.js} +0 -0
  331. /package/dist/openapi_client/models/{TableAccessEntry.js → AuthConfigListResponseSchema.js} +0 -0
  332. /package/dist/openapi_client/models/{TableResponse.js → AuthConfigResponseSchema.js} +0 -0
  333. /package/dist/openapi_client/models/{TeamsCredentialsInput.js → ComposioProviderCapabilityResponseSchema.js} +0 -0
  334. /package/dist/openapi_client/models/{TeamsSurfaceConfigInput.js → ConvertedPageResponse.js} +0 -0
  335. /package/dist/openapi_client/models/{TelegramCredentialsInput.js → CreateAnthropicCompatibleRuntimeProfileRequest.js} +0 -0
  336. /package/dist/openapi_client/models/{TelegramSurfaceConfigInput.js → CreateOpenAICompatibleRuntimeProfileRequest.js} +0 -0
  337. /package/dist/openapi_client/models/{WebSearchAgentRequest.js → CreateUserDaemonRuntimeProfileRequest.js} +0 -0
  338. /package/dist/openapi_client/models/{WebSearchAgentResponse.js → DeskDetailResponse.js} +0 -0
  339. /package/dist/openapi_client/models/{WhatsAppCredentialsInput.js → FileDetailResponse.js} +0 -0
  340. /package/dist/openapi_client/models/{WhatsAppSurfaceConfigInput.js → FlowDetailResponse.js} +0 -0
@@ -179,20 +179,20 @@ function getNativeToolPayload(content) {
179
179
  if (!toolCallId)
180
180
  return null;
181
181
  const toolName = typeof content.tool_name === "string" ? content.tool_name : undefined;
182
- if (typeof content.tool_name === "string") {
182
+ if ("tool_output" in content) {
183
183
  return {
184
- kind: "call",
184
+ kind: "result",
185
185
  toolCallId,
186
186
  toolName,
187
- args: parseMaybeJsonObject(parseMaybeJsonValue(content.tool_input)),
187
+ result: normalizeToolResult(content.tool_output),
188
188
  };
189
189
  }
190
- if ("tool_output" in content) {
190
+ if (typeof content.tool_name === "string") {
191
191
  return {
192
- kind: "result",
192
+ kind: "call",
193
193
  toolCallId,
194
194
  toolName,
195
- result: normalizeToolResult(content.tool_output),
195
+ args: parseMaybeJsonObject(parseMaybeJsonValue(content.tool_input)),
196
196
  };
197
197
  }
198
198
  return null;
@@ -437,6 +437,13 @@ function mapConversationMessage(msg, options) {
437
437
  toolInvocations,
438
438
  parts,
439
439
  createdAt: msg.created_at ? new Date(msg.created_at) : new Date(),
440
+ conversation_id: msg.conversation_id,
441
+ sequence: msg.sequence,
442
+ agent_run_id: msg.agent_run_id,
443
+ metadata: msg.metadata ?? null,
444
+ message_metadata: msg.message_metadata ?? null,
445
+ tool_call_id: msg.tool_call_id ?? null,
446
+ tool_name: msg.tool_name ?? null,
440
447
  };
441
448
  }
442
449
  function mapConversationMessages(messages) {
@@ -545,13 +552,52 @@ function resolveScopedClient(client, podId) {
545
552
  }
546
553
  return client;
547
554
  }
548
- async function uploadPersonalFiles(client, files) {
555
+ function conversationUploadDirectory(conversationId) {
556
+ return `/me/conversations/${conversationId}`;
557
+ }
558
+ function shouldIgnoreFolderEnsureError(error) {
559
+ const message = error instanceof Error ? error.message.toLowerCase() : String(error ?? "").toLowerCase();
560
+ return message.includes("already exists")
561
+ || message.includes("already in use")
562
+ || message.includes("path unavailable")
563
+ || message.includes("path already")
564
+ || message.includes("409");
565
+ }
566
+ async function ensureFolder(client, name, directoryPath) {
567
+ try {
568
+ await client.files.folder.create(name, { directoryPath });
569
+ }
570
+ catch (error) {
571
+ if (!shouldIgnoreFolderEnsureError(error))
572
+ throw error;
573
+ }
574
+ }
575
+ async function ensureConversationUploadDirectory(client, conversationId) {
576
+ await ensureFolder(client, "conversations", "/me");
577
+ await ensureFolder(client, conversationId, "/me/conversations");
578
+ return conversationUploadDirectory(conversationId);
579
+ }
580
+ async function uploadConversationFiles(client, conversationId, uploads, onStatus) {
581
+ const directoryPath = await ensureConversationUploadDirectory(client, conversationId);
549
582
  const uploaded = [];
550
- for (const file of files) {
551
- uploaded.push(await client.files.upload(file, {
552
- name: file.name,
553
- namespace: "PRIVATE",
554
- }));
583
+ for (const upload of uploads) {
584
+ onStatus?.(upload.key, { status: "uploading", error: undefined });
585
+ try {
586
+ const response = await client.files.upload(upload.file, {
587
+ name: upload.file.name,
588
+ directoryPath,
589
+ searchEnabled: true,
590
+ });
591
+ onStatus?.(upload.key, { status: "uploaded", path: response.path, error: undefined });
592
+ uploaded.push(response);
593
+ }
594
+ catch (error) {
595
+ onStatus?.(upload.key, {
596
+ status: "failed",
597
+ error: error instanceof Error ? error.message : "Upload failed",
598
+ });
599
+ throw error;
600
+ }
555
601
  }
556
602
  return uploaded;
557
603
  }
@@ -570,18 +616,19 @@ function appendPersonalFileReferences(content, files) {
570
616
  const references = formatPersonalFileReferences(files);
571
617
  return `${content}\n\nPersonal files available to this run:\n${references}`;
572
618
  }
573
- export function useAssistantController({ client, podId, agentName, assistantName, assistantId, organizationId, enabled = true, instructions, }) {
619
+ export function useAssistantController({ client, podId, agentName, assistantName, assistantId, organizationId, enabled = true, instructions, autoLoadMessages = true, }) {
574
620
  const [localError, setLocalError] = useState(null);
575
621
  const [conversations, setConversations] = useState([]);
576
622
  const [activeConversationId, setActiveConversationId] = useState(null);
577
623
  const [availableModels, setAvailableModels] = useState([]);
578
624
  const [conversationModel, setConversationModelState] = useState(null);
625
+ const [conversationRuntime, setConversationRuntimeState] = useState(null);
579
626
  const [isStreaming, setIsStreaming] = useState(false);
580
627
  const [isLoadingConversations, setIsLoadingConversations] = useState(false);
581
628
  const [isLoadingMessages, setIsLoadingMessages] = useState(false);
582
629
  const [isLoadingOlderMessages, setIsLoadingOlderMessages] = useState(false);
583
630
  const [isUploadingFiles, setIsUploadingFiles] = useState(false);
584
- const [pendingFiles, setPendingFiles] = useState([]);
631
+ const [pendingFileUploads, setPendingFileUploads] = useState([]);
585
632
  const [olderMessagesCursor, setOlderMessagesCursor] = useState(null);
586
633
  const activeConversationIdRef = useRef(null);
587
634
  const conversationsRef = useRef([]);
@@ -600,6 +647,7 @@ export function useAssistantController({ client, podId, agentName, assistantName
600
647
  assistantId: assistantId ?? null,
601
648
  organizationId: organizationId ?? null,
602
649
  }), [agentName, assistantId, assistantName, organizationId, podId]);
650
+ const pendingFiles = useMemo(() => pendingFileUploads.map((upload) => upload.file), [pendingFileUploads]);
603
651
  const scopeKey = useMemo(() => JSON.stringify({
604
652
  podId: scope.podId ?? null,
605
653
  agentName: scope.agentName ?? null,
@@ -622,7 +670,7 @@ export function useAssistantController({ client, podId, agentName, assistantName
622
670
  autoLoad: false,
623
671
  onError: handleAssistantSessionError,
624
672
  });
625
- const { conversationId: sessionConversationId, listConversations: sessionListConversations, loadMessages: sessionLoadMessages, sendMessage: sessionSendMessage, createConversation: sessionCreateConversation, resumeIfRunning: sessionResumeIfRunning, stop: sessionStop, cancel: sessionCancel, isStreaming: sessionIsStreaming, messages: sessionMessages, streamingText: sessionStreamingText, status: sessionStatus, } = assistantSession;
673
+ const { conversationId: sessionConversationId, listConversations: sessionListConversations, loadMessages: sessionLoadMessages, sendMessage: sessionSendMessage, createConversation: sessionCreateConversation, resumeIfRunning: sessionResumeIfRunning, stop: sessionStop, cancel: sessionCancel, isStreaming: sessionIsStreaming, messages: sessionMessages, streamingText: sessionStreamingText, streamingTool: sessionStreamingTool, status: sessionStatus, } = assistantSession;
626
674
  const { runtimeMessages, appendOptimisticUserMessage, replaceLoadedMessages, mergeMessages, clear: clearRuntimeMessages, } = useAssistantRuntime({
627
675
  conversationId: activeConversationId,
628
676
  sessionConversationId,
@@ -641,35 +689,53 @@ export function useAssistantController({ client, podId, agentName, assistantName
641
689
  return {
642
690
  ...conversation,
643
691
  ...updates,
644
- updated_at: updates?.updated_at || now,
692
+ updated_at: typeof updates?.updated_at === "undefined"
693
+ ? conversation.updated_at
694
+ : updates.updated_at || now,
645
695
  };
646
696
  });
647
697
  return found ? sortConversationsByUpdatedAt(next) : next;
648
698
  });
649
699
  }, []);
650
- const setConversationModel = useCallback(async (model) => {
700
+ const setConversationModel = useCallback(async (model, runtime) => {
701
+ const nextRuntime = typeof runtime === "undefined"
702
+ ? availableModels.find((entry) => entry.id === model)?.runtime ?? null
703
+ : runtime;
651
704
  setConversationModelState(model);
705
+ setConversationRuntimeState(nextRuntime);
652
706
  const conversationId = activeConversationIdRef.current;
653
707
  if (!conversationId)
654
708
  return;
655
709
  const knownConversation = conversationsRef.current.find((conversation) => conversation.id === conversationId);
656
710
  const resolvedPodId = knownConversation?.pod_id ?? scope.podId;
657
711
  const previousModel = knownConversation?.model ?? null;
658
- touchConversation(conversationId, { model: model });
712
+ const previousRuntime = knownConversation?.agent_runtime ?? null;
713
+ touchConversation(conversationId, {
714
+ model: model,
715
+ agent_runtime: nextRuntime,
716
+ });
659
717
  try {
660
- const updatedConversation = await client.conversations.update(conversationId, { model: model }, { pod_id: resolvedPodId ?? undefined });
718
+ const updatedConversation = await client.conversations.update(conversationId, model
719
+ ? { model: model, agent_runtime: nextRuntime }
720
+ : { agent_runtime: null }, { pod_id: resolvedPodId ?? undefined });
661
721
  touchConversation(conversationId, {
662
722
  model: (updatedConversation.model ?? model),
723
+ agent_runtime: updatedConversation.agent_runtime ?? nextRuntime,
663
724
  updated_at: updatedConversation.updated_at,
664
725
  });
665
726
  setConversationModelState((updatedConversation.model ?? model));
727
+ setConversationRuntimeState(updatedConversation.agent_runtime ?? nextRuntime);
666
728
  }
667
729
  catch (error) {
668
- touchConversation(conversationId, { model: previousModel });
730
+ touchConversation(conversationId, {
731
+ model: previousModel,
732
+ agent_runtime: previousRuntime,
733
+ });
669
734
  setConversationModelState(previousModel);
735
+ setConversationRuntimeState(previousRuntime);
670
736
  throw error;
671
737
  }
672
- }, [client, scope.podId, touchConversation]);
738
+ }, [availableModels, client, scope.podId, touchConversation]);
673
739
  const loadConversations = useCallback(async () => {
674
740
  setIsLoadingConversations(true);
675
741
  try {
@@ -695,13 +761,15 @@ export function useAssistantController({ client, podId, agentName, assistantName
695
761
  }, [scope, sessionListConversations]);
696
762
  const loadAvailableModels = useCallback(async () => {
697
763
  try {
698
- const response = await client.conversations.listModels();
764
+ const response = await client.conversations.listModels({
765
+ orgId: scope.organizationId ?? undefined,
766
+ });
699
767
  return response.items ?? [];
700
768
  }
701
769
  catch {
702
770
  return [];
703
771
  }
704
- }, [client]);
772
+ }, [client, scope.organizationId]);
705
773
  const loadConversationMessages = useCallback(async (conversationId) => {
706
774
  setIsLoadingMessages(true);
707
775
  try {
@@ -825,6 +893,7 @@ export function useAssistantController({ client, podId, agentName, assistantName
825
893
  if (!activeConversation)
826
894
  return;
827
895
  setConversationModelState(activeConversation.model ?? null);
896
+ setConversationRuntimeState(activeConversation.agent_runtime ?? null);
828
897
  }, [activeConversationId, conversations]);
829
898
  useEffect(() => {
830
899
  if (!enabled) {
@@ -838,6 +907,7 @@ export function useAssistantController({ client, podId, agentName, assistantName
838
907
  setActiveConversationId(null);
839
908
  setAvailableModels([]);
840
909
  setConversationModelState(null);
910
+ setConversationRuntimeState(null);
841
911
  setConversations([]);
842
912
  setLocalError(null);
843
913
  setOlderMessagesCursor(null);
@@ -853,6 +923,7 @@ export function useAssistantController({ client, podId, agentName, assistantName
853
923
  skipInitialLoadConversationIdsRef.current.clear();
854
924
  setActiveConversationId(null);
855
925
  setConversationModelState(null);
926
+ setConversationRuntimeState(null);
856
927
  setConversations([]);
857
928
  setLocalError(null);
858
929
  clearRuntimeMessages();
@@ -867,6 +938,15 @@ export function useAssistantController({ client, podId, agentName, assistantName
867
938
  lastAutoLoadedConversationIdRef.current = null;
868
939
  loadingConversationIdRef.current = null;
869
940
  setOlderMessagesCursor(null);
941
+ setIsLoadingMessages(false);
942
+ return;
943
+ }
944
+ if (!autoLoadMessages) {
945
+ clearRuntimeMessages();
946
+ lastAutoLoadedConversationIdRef.current = null;
947
+ loadingConversationIdRef.current = null;
948
+ setOlderMessagesCursor(null);
949
+ setIsLoadingMessages(false);
870
950
  return;
871
951
  }
872
952
  if (skipInitialLoadConversationIdsRef.current.has(activeConversationId)) {
@@ -905,7 +985,7 @@ export function useAssistantController({ client, podId, agentName, assistantName
905
985
  return () => {
906
986
  cancelled = true;
907
987
  };
908
- }, [activeConversationId, clearRuntimeMessages, enabled]);
988
+ }, [activeConversationId, autoLoadMessages, clearRuntimeMessages, enabled]);
909
989
  const stop = useCallback(() => {
910
990
  const hadActiveStream = sessionIsStreamingRef.current || isStreamingRef.current;
911
991
  sessionCancel();
@@ -931,6 +1011,12 @@ export function useAssistantController({ client, podId, agentName, assistantName
931
1011
  }
932
1012
  const currentConversationId = activeConversationIdRef.current;
933
1013
  if (conversationId && conversationId === currentConversationId) {
1014
+ if (!autoLoadMessages) {
1015
+ setLocalError(null);
1016
+ setOlderMessagesCursor(null);
1017
+ setIsLoadingMessages(false);
1018
+ return;
1019
+ }
934
1020
  if (loadingConversationIdRef.current === conversationId
935
1021
  || lastAutoLoadedConversationIdRef.current === conversationId) {
936
1022
  return;
@@ -938,6 +1024,7 @@ export function useAssistantController({ client, podId, agentName, assistantName
938
1024
  loadingConversationIdRef.current = conversationId;
939
1025
  setLocalError(null);
940
1026
  setOlderMessagesCursor(null);
1027
+ setIsLoadingMessages(true);
941
1028
  void loadConversationMessagesRef.current?.(conversationId)
942
1029
  .then(() => resumeIfRunningRef.current?.(conversationId))
943
1030
  .catch((error) => {
@@ -958,8 +1045,9 @@ export function useAssistantController({ client, podId, agentName, assistantName
958
1045
  loadingConversationIdRef.current = null;
959
1046
  setOlderMessagesCursor(null);
960
1047
  clearRuntimeMessages();
1048
+ setIsLoadingMessages(Boolean(conversationId && autoLoadMessages));
961
1049
  setActiveConversationId(conversationId);
962
- }, [clearRuntimeMessages, sessionCancel]);
1050
+ }, [autoLoadMessages, clearRuntimeMessages, sessionCancel]);
963
1051
  const resetConversationState = useCallback((keepPendingFiles = false) => {
964
1052
  stop();
965
1053
  clearRuntimeMessages();
@@ -971,8 +1059,9 @@ export function useAssistantController({ client, podId, agentName, assistantName
971
1059
  setActiveConversationId(null);
972
1060
  setLocalError(null);
973
1061
  setOlderMessagesCursor(null);
1062
+ setIsLoadingMessages(false);
974
1063
  if (!keepPendingFiles) {
975
- setPendingFiles([]);
1064
+ setPendingFileUploads([]);
976
1065
  }
977
1066
  }, [clearRuntimeMessages, stop]);
978
1067
  const clearMessages = useCallback(() => {
@@ -987,6 +1076,7 @@ export function useAssistantController({ client, podId, agentName, assistantName
987
1076
  title: titleSeed.slice(0, 120),
988
1077
  instructions: typeof options.instructions === "undefined" ? instructions : options.instructions,
989
1078
  model: conversationModel,
1079
+ agentRuntime: conversationRuntime,
990
1080
  ...scope,
991
1081
  });
992
1082
  suppressAutoSelectRef.current = false;
@@ -1000,29 +1090,43 @@ export function useAssistantController({ client, podId, agentName, assistantName
1000
1090
  skipInitialLoadConversationIdsRef.current.add(createdConversation.id);
1001
1091
  setActiveConversationId(createdConversation.id);
1002
1092
  setConversationModelState((createdConversation.model ?? conversationModel ?? null));
1093
+ setConversationRuntimeState(createdConversation.agent_runtime ?? conversationRuntime ?? null);
1003
1094
  clearRuntimeMessages();
1004
1095
  setOlderMessagesCursor(null);
1005
1096
  return createdConversation.id;
1006
- }, [clearRuntimeMessages, conversationModel, instructions, scope, sessionCreateConversation]);
1097
+ }, [clearRuntimeMessages, conversationModel, conversationRuntime, instructions, scope, sessionCreateConversation]);
1007
1098
  const queuePendingFiles = useCallback((files) => {
1008
1099
  if (files.length === 0)
1009
1100
  return;
1010
- setPendingFiles((prev) => {
1101
+ setPendingFileUploads((prev) => {
1011
1102
  const byKey = new Map();
1012
- prev.forEach((file) => byKey.set(getFileKey(file), file));
1013
- files.forEach((file) => byKey.set(getFileKey(file), file));
1103
+ prev.forEach((upload) => byKey.set(upload.key, upload));
1104
+ files.forEach((file) => {
1105
+ const key = getFileKey(file);
1106
+ byKey.set(key, {
1107
+ key,
1108
+ file,
1109
+ status: "queued",
1110
+ });
1111
+ });
1014
1112
  return Array.from(byKey.values());
1015
1113
  });
1016
1114
  }, []);
1017
1115
  const removePendingFile = useCallback((fileKey) => {
1018
- setPendingFiles((prev) => prev.filter((file) => getFileKey(file) !== fileKey));
1116
+ setPendingFileUploads((prev) => prev.filter((upload) => upload.key !== fileKey));
1019
1117
  }, []);
1020
1118
  const clearPendingFiles = useCallback(() => {
1021
- setPendingFiles([]);
1119
+ setPendingFileUploads([]);
1120
+ }, []);
1121
+ const updatePendingFileUpload = useCallback((key, next) => {
1122
+ setPendingFileUploads((prev) => prev.map((upload) => (upload.key === key
1123
+ ? { ...upload, ...next }
1124
+ : upload)));
1022
1125
  }, []);
1023
1126
  const sendMessage = useCallback(async (content, options = {}) => {
1024
1127
  const trimmed = content.trim();
1025
- if (!enabled || !trimmed || isStreaming || sessionIsStreaming)
1128
+ const uploadsToSend = pendingFileUploads.filter((upload) => upload.status !== "uploaded");
1129
+ if (!enabled || (!trimmed && uploadsToSend.length === 0) || isStreaming || sessionIsStreaming)
1026
1130
  return;
1027
1131
  const forceNewConversation = options.forceNewConversation === true;
1028
1132
  setLocalError(null);
@@ -1038,14 +1142,15 @@ export function useAssistantController({ client, podId, agentName, assistantName
1038
1142
  throw new Error("Conversation could not be initialized");
1039
1143
  }
1040
1144
  const finalConversationId = conversationId;
1041
- let messageContent = trimmed;
1042
- if (pendingFiles.length > 0) {
1145
+ let messageContent = trimmed || "Please use the attached files.";
1146
+ let uploadedFiles = [];
1147
+ if (uploadsToSend.length > 0) {
1043
1148
  setIsUploadingFiles(true);
1044
1149
  try {
1045
1150
  const fileClient = resolveScopedClient(client, scope.podId);
1046
- const uploadedFiles = await uploadPersonalFiles(fileClient, pendingFiles);
1047
- messageContent = appendPersonalFileReferences(trimmed, uploadedFiles);
1048
- setPendingFiles([]);
1151
+ uploadedFiles = await uploadConversationFiles(fileClient, finalConversationId, uploadsToSend, updatePendingFileUpload);
1152
+ messageContent = appendPersonalFileReferences(messageContent, uploadedFiles);
1153
+ setPendingFileUploads([]);
1049
1154
  touchConversation(finalConversationId, { updated_at: new Date().toISOString() });
1050
1155
  }
1051
1156
  finally {
@@ -1059,7 +1164,18 @@ export function useAssistantController({ client, podId, agentName, assistantName
1059
1164
  touchConversation(finalConversationId, { status: "running" });
1060
1165
  await sessionSendMessage(messageContent, {
1061
1166
  conversationId: finalConversationId,
1062
- metadata: options.metadata ?? undefined,
1167
+ metadata: uploadedFiles.length > 0
1168
+ ? {
1169
+ ...(options.metadata ?? {}),
1170
+ attachments: uploadedFiles.map((file) => ({
1171
+ id: file.id,
1172
+ name: file.name,
1173
+ path: file.path,
1174
+ namespace: "PERSONAL",
1175
+ mime_type: file.mime_type,
1176
+ })),
1177
+ }
1178
+ : options.metadata ?? undefined,
1063
1179
  });
1064
1180
  touchConversation(finalConversationId, { updated_at: new Date().toISOString() });
1065
1181
  }
@@ -1078,55 +1194,49 @@ export function useAssistantController({ client, podId, agentName, assistantName
1078
1194
  enabled,
1079
1195
  ensureConversation,
1080
1196
  isStreaming,
1081
- pendingFiles,
1197
+ pendingFileUploads,
1082
1198
  resetConversationState,
1083
1199
  scope.podId,
1084
1200
  sessionIsStreaming,
1085
1201
  sessionSendMessage,
1086
1202
  touchConversation,
1203
+ updatePendingFileUpload,
1087
1204
  ]);
1088
1205
  const uploadFiles = useCallback(async (files, options) => {
1089
1206
  const normalizedFiles = files.filter((file) => file instanceof File);
1090
1207
  if (!enabled || normalizedFiles.length === 0 || isLoading || isUploadingFiles)
1091
1208
  return;
1209
+ void options;
1092
1210
  setLocalError(null);
1093
- const activeId = activeConversationIdRef.current;
1094
- const shouldQueueForNextSend = options?.deferUntilSend === true;
1095
- if (!activeId || shouldQueueForNextSend) {
1096
- queuePendingFiles(normalizedFiles);
1211
+ queuePendingFiles(normalizedFiles);
1212
+ }, [
1213
+ enabled,
1214
+ isLoading,
1215
+ isUploadingFiles,
1216
+ queuePendingFiles,
1217
+ ]);
1218
+ const resolveUserApproval = useCallback(async (approvalId, decision, response) => {
1219
+ if (!enabled)
1097
1220
  return;
1221
+ const conversationId = activeConversationIdRef.current;
1222
+ if (!conversationId) {
1223
+ throw new Error("An active conversation is required to resolve this approval.");
1098
1224
  }
1099
- setIsUploadingFiles(true);
1225
+ const knownConversation = conversationsRef.current.find((conversation) => conversation.id === conversationId);
1226
+ const resolvedPodId = knownConversation?.pod_id ?? scope.podId;
1227
+ setLocalError(null);
1100
1228
  try {
1101
- const fileClient = resolveScopedClient(client, scope.podId);
1102
- const uploadedFiles = await uploadPersonalFiles(fileClient, normalizedFiles);
1103
- const fileMessage = `Personal files available to this run:\n${formatPersonalFileReferences(uploadedFiles)}`;
1104
- setIsStreaming(true);
1105
- await sessionSendMessage(fileMessage, {
1106
- conversationId: activeId,
1229
+ await client.conversations.approvals.resolve(conversationId, approvalId, { decision, response: response ?? {} }, { pod_id: resolvedPodId ?? undefined });
1230
+ await loadConversationMessages(conversationId);
1231
+ void sessionResumeIfRunning(conversationId).catch((error) => {
1232
+ setLocalError((prev) => prev || (error instanceof Error ? error.message : "Failed to resume conversation"));
1107
1233
  });
1108
- await loadConversationMessages(activeId);
1109
- touchConversation(activeId, { updated_at: new Date().toISOString() });
1110
1234
  }
1111
1235
  catch (err) {
1112
- setLocalError(err instanceof Error ? err.message : "Failed to upload files");
1236
+ setLocalError(err instanceof Error ? err.message : "Failed to resolve approval");
1113
1237
  throw err;
1114
1238
  }
1115
- finally {
1116
- setIsStreaming(false);
1117
- setIsUploadingFiles(false);
1118
- }
1119
- }, [
1120
- client,
1121
- enabled,
1122
- isLoading,
1123
- isUploadingFiles,
1124
- loadConversationMessages,
1125
- queuePendingFiles,
1126
- scope.podId,
1127
- sessionSendMessage,
1128
- touchConversation,
1129
- ]);
1239
+ }, [client, enabled, loadConversationMessages, scope.podId, sessionResumeIfRunning]);
1130
1240
  const { pendingActions, completedActions } = useMemo(() => {
1131
1241
  const pending = [];
1132
1242
  const completed = [];
@@ -1168,6 +1278,7 @@ export function useAssistantController({ client, podId, agentName, assistantName
1168
1278
  activeConversationId,
1169
1279
  availableModels,
1170
1280
  conversationModel,
1281
+ conversationRuntime,
1171
1282
  isActiveConversationRunning,
1172
1283
  isLoading,
1173
1284
  isLoadingConversations,
@@ -1176,9 +1287,11 @@ export function useAssistantController({ client, podId, agentName, assistantName
1176
1287
  hasOlderMessages: !!olderMessagesCursor,
1177
1288
  isUploadingFiles,
1178
1289
  pendingFiles,
1290
+ pendingFileUploads,
1179
1291
  error,
1180
1292
  pendingActions,
1181
1293
  completedActions,
1294
+ streamingTool: sessionStreamingTool,
1182
1295
  selectConversation,
1183
1296
  setConversationModel,
1184
1297
  sendMessage,
@@ -1186,6 +1299,7 @@ export function useAssistantController({ client, podId, agentName, assistantName
1186
1299
  removePendingFile,
1187
1300
  clearPendingFiles,
1188
1301
  loadOlderMessages,
1302
+ resolveUserApproval,
1189
1303
  clearMessages,
1190
1304
  stop,
1191
1305
  }), [
@@ -1194,6 +1308,7 @@ export function useAssistantController({ client, podId, agentName, assistantName
1194
1308
  clearMessages,
1195
1309
  clearPendingFiles,
1196
1310
  completedActions,
1311
+ conversationRuntime,
1197
1312
  conversationModel,
1198
1313
  conversations,
1199
1314
  error,
@@ -1207,10 +1322,13 @@ export function useAssistantController({ client, podId, agentName, assistantName
1207
1322
  messages,
1208
1323
  olderMessagesCursor,
1209
1324
  pendingActions,
1325
+ pendingFileUploads,
1210
1326
  pendingFiles,
1211
1327
  removePendingFile,
1328
+ resolveUserApproval,
1212
1329
  selectConversation,
1213
1330
  sendMessage,
1331
+ sessionStreamingTool,
1214
1332
  setConversationModel,
1215
1333
  stop,
1216
1334
  uploadFiles,
@@ -1,8 +1,6 @@
1
1
  import type { LemmaClient } from "../client.js";
2
2
  import { type SseRawEvent } from "../streams.js";
3
- import type { Conversation, ConversationMessage, ConversationModel, CursorPage } from "../types.js";
4
- import type { ConversationStatus } from "../openapi_client/models/ConversationStatus.js";
5
- import type { ConversationType } from "../openapi_client/models/ConversationType.js";
3
+ import type { AgentRuntimeConfig, Conversation, ConversationMessage, ConversationModel, CursorPage } from "../types.js";
6
4
  interface ConversationScope {
7
5
  podId?: string | null;
8
6
  agentName?: string | null;
@@ -42,9 +40,8 @@ export interface UseAssistantSessionOptions {
42
40
  export interface CreateConversationInput {
43
41
  title?: string | null;
44
42
  instructions?: string | null;
45
- metadata?: Record<string, unknown> | null;
46
- type?: ConversationType | `${ConversationType}` | null;
47
43
  model?: ConversationModel | null;
44
+ agentRuntime?: AgentRuntimeConfig | null;
48
45
  podId?: string | null;
49
46
  agentName?: string | null;
50
47
  /**
@@ -71,6 +68,13 @@ export interface ResumeAssistantOptions {
71
68
  onlyIfRunning?: boolean;
72
69
  syncOnTurnEnd?: boolean;
73
70
  }
71
+ export interface AssistantStreamingTool {
72
+ toolCallId?: string;
73
+ toolName: string;
74
+ args?: Record<string, unknown>;
75
+ state: "call" | "result";
76
+ result?: Record<string, unknown>;
77
+ }
74
78
  export interface UseAssistantSessionResult {
75
79
  conversationId: string | null;
76
80
  conversation: Conversation | null;
@@ -82,14 +86,13 @@ export interface UseAssistantSessionResult {
82
86
  finalOutput: ConversationMessage["content"] | null;
83
87
  finalOutputText: string;
84
88
  streamingText: string;
89
+ streamingTool: AssistantStreamingTool | null;
85
90
  isStreaming: boolean;
86
91
  error: Error | null;
87
92
  setConversationId: (conversationId: string | null) => void;
88
93
  listConversations: (options?: {
89
94
  limit?: number;
90
95
  pageToken?: string;
91
- status?: ConversationStatus | `${ConversationStatus}` | null;
92
- type?: ConversationType | `${ConversationType}` | null;
93
96
  scope?: ConversationScope;
94
97
  }) => Promise<CursorPage<Conversation>>;
95
98
  createConversation: (input?: CreateConversationInput) => Promise<Conversation>;