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.
- package/README.md +2 -5
- package/dist/assistant-events.d.ts +1 -0
- package/dist/assistant-events.js +25 -3
- package/dist/browser/lemma-client.js +1082 -296
- package/dist/client.d.ts +8 -0
- package/dist/client.js +13 -1
- package/dist/index.d.ts +4 -0
- package/dist/namespaces/agent-runtime.d.ts +28 -0
- package/dist/namespaces/agent-runtime.js +34 -0
- package/dist/namespaces/agents.d.ts +8 -3
- package/dist/namespaces/agents.js +4 -0
- package/dist/namespaces/conversations.d.ts +35 -7
- package/dist/namespaces/conversations.js +103 -22
- package/dist/namespaces/desks.d.ts +3 -3
- package/dist/namespaces/files.d.ts +12 -5
- package/dist/namespaces/files.js +12 -3
- package/dist/namespaces/functions.d.ts +8 -3
- package/dist/namespaces/functions.js +4 -0
- package/dist/namespaces/integrations.d.ts +54 -12
- package/dist/namespaces/integrations.js +52 -16
- package/dist/namespaces/pod-members.d.ts +1 -0
- package/dist/namespaces/pod-members.js +4 -1
- package/dist/namespaces/pod-permissions.d.ts +14 -0
- package/dist/namespaces/pod-permissions.js +18 -0
- package/dist/namespaces/pod-roles.d.ts +16 -0
- package/dist/namespaces/pod-roles.js +25 -0
- package/dist/namespaces/resource-access.d.ts +11 -0
- package/dist/namespaces/resource-access.js +18 -0
- package/dist/namespaces/schedules.d.ts +3 -3
- package/dist/namespaces/tables.d.ts +4 -4
- package/dist/namespaces/workflows.d.ts +4 -4
- package/dist/openapi_client/index.d.ts +76 -30
- package/dist/openapi_client/index.js +20 -7
- package/dist/openapi_client/models/AccountCreateSchema.d.ts +18 -0
- package/dist/openapi_client/models/AccountResponseSchema.d.ts +3 -0
- package/dist/openapi_client/models/AgentActionResponse.d.ts +20 -0
- package/dist/openapi_client/models/AgentDetailResponse.d.ts +22 -0
- package/dist/openapi_client/models/AgentHarnessInfo.d.ts +9 -0
- package/dist/openapi_client/models/AgentHarnessListResponse.d.ts +4 -0
- package/dist/openapi_client/models/AgentListResponse.d.ts +2 -2
- package/dist/openapi_client/models/AgentPermissionsReplaceRequest.d.ts +4 -0
- package/dist/openapi_client/models/AgentPermissionsResponse.d.ts +6 -0
- package/dist/openapi_client/models/AgentResourcePermissionRequest.d.ts +6 -0
- package/dist/openapi_client/models/AgentResourcePermissionResponse.d.ts +6 -0
- package/dist/openapi_client/models/AgentRunApprovalDecision.d.ts +8 -0
- package/dist/openapi_client/models/AgentRunApprovalDecision.js +13 -0
- package/dist/openapi_client/models/AgentRuntimeConfig.d.ts +7 -0
- package/dist/openapi_client/models/AgentRuntimeProfileListResponse.d.ts +6 -0
- package/dist/openapi_client/models/AgentRuntimeProfileResponse.d.ts +22 -0
- package/dist/openapi_client/models/AgentSurfaceResponse.d.ts +11 -4
- package/dist/openapi_client/models/ApplicationDetailResponseSchema.d.ts +3 -3
- package/dist/openapi_client/models/ApplicationResponseSchema.d.ts +3 -3
- package/dist/openapi_client/models/AuthConfigCreateSchema.d.ts +7 -0
- package/dist/openapi_client/models/AuthConfigListResponseSchema.d.ts +6 -0
- package/dist/openapi_client/models/AuthConfigResponseSchema.d.ts +13 -0
- package/dist/openapi_client/models/AuthScheme.d.ts +5 -0
- package/dist/openapi_client/models/AuthScheme.js +10 -0
- package/dist/openapi_client/models/BillingInterval.d.ts +2 -2
- package/dist/openapi_client/models/BillingInterval.js +2 -2
- package/dist/openapi_client/models/BillingInvoiceResponse.d.ts +0 -2
- package/dist/openapi_client/models/ComposioProviderCapabilityResponseSchema.d.ts +9 -0
- package/dist/openapi_client/models/ConnectRequestInitiateSchema.d.ts +5 -1
- package/dist/openapi_client/models/ConnectRequestResponseSchema.d.ts +2 -0
- package/dist/openapi_client/models/ConversationResponse.d.ts +2 -2
- package/dist/openapi_client/models/ConvertedArtifactResponse.d.ts +1 -0
- package/dist/openapi_client/models/ConvertedFileResponse.d.ts +4 -0
- package/dist/openapi_client/models/ConvertedPageResponse.d.ts +8 -0
- package/dist/openapi_client/models/CreateAgentRequest.d.ts +4 -12
- package/dist/openapi_client/models/CreateAnthropicCompatibleRuntimeProfileRequest.d.ts +11 -0
- package/dist/openapi_client/models/CreateConversationRequest.d.ts +2 -2
- package/dist/openapi_client/models/CreateDeskRequest.d.ts +1 -1
- package/dist/openapi_client/models/CreateFolderRequest.d.ts +1 -1
- package/dist/openapi_client/models/CreateFunctionRequest.d.ts +2 -6
- package/dist/openapi_client/models/CreateOpenAICompatibleRuntimeProfileRequest.d.ts +11 -0
- package/dist/openapi_client/models/CreateScheduleRequest.d.ts +13 -1
- package/dist/openapi_client/models/CreateSurfaceRequest.d.ts +12 -14
- package/dist/openapi_client/models/CreateTableRequest.d.ts +1 -1
- package/dist/openapi_client/models/CreateUserDaemonRuntimeProfileRequest.d.ts +9 -0
- package/dist/openapi_client/models/DatastoreFileUploadRequest.d.ts +1 -1
- package/dist/openapi_client/models/DeskBundleUploadResponse.d.ts +2 -2
- package/dist/openapi_client/models/{DeskResponse.d.ts → DeskDetailResponse.d.ts} +2 -2
- package/dist/openapi_client/models/DeskListResponse.d.ts +2 -2
- package/dist/openapi_client/models/DeskServingConfigResponse.d.ts +11 -0
- package/dist/openapi_client/models/DeskServingConfigResponse.js +8 -0
- package/dist/openapi_client/models/EventFlowStartInput.d.ts +0 -8
- package/dist/openapi_client/models/EventFlowStartOutput.d.ts +0 -8
- package/dist/openapi_client/models/{FileResponse.d.ts → FileDetailResponse.d.ts} +2 -2
- package/dist/openapi_client/models/FileListResponse.d.ts +2 -2
- package/dist/openapi_client/models/{FlowResponse.d.ts → FlowDetailResponse.d.ts} +2 -2
- package/dist/openapi_client/models/{FunctionResponse.d.ts → FunctionActionResponse.d.ts} +3 -10
- package/dist/openapi_client/models/FunctionActionResponse.js +1 -0
- package/dist/openapi_client/models/FunctionDetailResponse.d.ts +34 -0
- package/dist/openapi_client/models/FunctionDetailResponse.js +1 -0
- package/dist/openapi_client/models/FunctionListResponse.d.ts +2 -2
- package/dist/openapi_client/models/FunctionPermissionsReplaceRequest.d.ts +4 -0
- package/dist/openapi_client/models/FunctionPermissionsReplaceRequest.js +1 -0
- package/dist/openapi_client/models/FunctionPermissionsResponse.d.ts +6 -0
- package/dist/openapi_client/models/FunctionPermissionsResponse.js +1 -0
- package/dist/openapi_client/models/FunctionResourcePermissionRequest.d.ts +6 -0
- package/dist/openapi_client/models/FunctionResourcePermissionRequest.js +1 -0
- package/dist/openapi_client/models/FunctionResourcePermissionResponse.d.ts +6 -0
- package/dist/openapi_client/models/FunctionResourcePermissionResponse.js +1 -0
- package/dist/openapi_client/models/FunctionRunListResponse.d.ts +2 -2
- package/dist/openapi_client/models/FunctionRunSummaryResponse.d.ts +13 -0
- package/dist/openapi_client/models/FunctionRunSummaryResponse.js +1 -0
- package/dist/openapi_client/models/GmailSurfaceConfig.d.ts +1 -1
- package/dist/openapi_client/models/HarnessKind.d.ts +4 -2
- package/dist/openapi_client/models/HarnessKind.js +4 -2
- package/dist/openapi_client/models/LemmaProviderCapabilityResponseSchema.d.ts +12 -0
- package/dist/openapi_client/models/LemmaProviderCapabilityResponseSchema.js +1 -0
- package/dist/openapi_client/models/OAuth2DefaultsResponseSchema.d.ts +10 -0
- package/dist/openapi_client/models/OAuth2DefaultsResponseSchema.js +1 -0
- package/dist/openapi_client/models/OperationSummary.d.ts +4 -0
- package/dist/openapi_client/models/OutlookSurfaceConfig.d.ts +1 -1
- package/dist/openapi_client/models/PlanResponse.d.ts +3 -2
- package/dist/openapi_client/models/PlanType.d.ts +7 -0
- package/dist/openapi_client/models/PlanType.js +12 -0
- package/dist/openapi_client/models/PodConfig.d.ts +6 -0
- package/dist/openapi_client/models/PodConfig.js +1 -0
- package/dist/openapi_client/models/PodCreateRequest.d.ts +2 -0
- package/dist/openapi_client/models/PodEffectivePermissionsResponse.d.ts +4 -0
- package/dist/openapi_client/models/PodEffectivePermissionsResponse.js +1 -0
- package/dist/openapi_client/models/PodPermissionCatalogResponse.d.ts +4 -0
- package/dist/openapi_client/models/PodPermissionCatalogResponse.js +1 -0
- package/dist/openapi_client/models/PodPermissionResponse.d.ts +7 -0
- package/dist/openapi_client/models/PodPermissionResponse.js +1 -0
- package/dist/openapi_client/models/PodResponse.d.ts +2 -0
- package/dist/openapi_client/models/PodRoleCreateRequest.d.ts +2 -0
- package/dist/openapi_client/models/PodRolePermissionsReplaceRequest.d.ts +4 -0
- package/dist/openapi_client/models/PodRolePermissionsReplaceRequest.js +1 -0
- package/dist/openapi_client/models/PodRolePermissionsResponse.d.ts +6 -0
- package/dist/openapi_client/models/PodRolePermissionsResponse.js +1 -0
- package/dist/openapi_client/models/PodRoleResourcePermissionRequest.d.ts +6 -0
- package/dist/openapi_client/models/PodRoleResourcePermissionRequest.js +1 -0
- package/dist/openapi_client/models/PodRoleResourcePermissionResponse.d.ts +6 -0
- package/dist/openapi_client/models/PodRoleResourcePermissionResponse.js +1 -0
- package/dist/openapi_client/models/PodRoleResponse.d.ts +3 -0
- package/dist/openapi_client/models/PodUpdateRequest.d.ts +2 -0
- package/dist/openapi_client/models/ResolveUserApprovalRequest.d.ts +5 -0
- package/dist/openapi_client/models/ResolveUserApprovalRequest.js +1 -0
- package/dist/openapi_client/models/ResourceAccessGrantRequest.d.ts +3 -0
- package/dist/openapi_client/models/ResourceAccessGrantRequest.js +1 -0
- package/dist/openapi_client/models/ResourceAccessGrantResponse.d.ts +12 -0
- package/dist/openapi_client/models/ResourceAccessGrantResponse.js +1 -0
- package/dist/openapi_client/models/ResourceAccessResponse.d.ts +7 -0
- package/dist/openapi_client/models/ResourceAccessResponse.js +1 -0
- package/dist/openapi_client/models/ResourceType.d.ts +19 -0
- package/dist/openapi_client/models/ResourceType.js +24 -0
- package/dist/openapi_client/models/ResourceVisibility.d.ts +6 -0
- package/dist/openapi_client/models/ResourceVisibility.js +11 -0
- package/dist/openapi_client/models/RuntimeModelCapability.d.ts +8 -0
- package/dist/openapi_client/models/RuntimeModelCapability.js +13 -0
- package/dist/openapi_client/models/RuntimeModelCatalogEntry.d.ts +9 -0
- package/dist/openapi_client/models/RuntimeModelCatalogEntry.js +1 -0
- package/dist/openapi_client/models/RuntimeProfileKind.d.ts +4 -0
- package/dist/openapi_client/models/RuntimeProfileKind.js +9 -0
- package/dist/openapi_client/models/RuntimeProfileProtocol.d.ts +9 -0
- package/dist/openapi_client/models/RuntimeProfileProtocol.js +14 -0
- package/dist/openapi_client/models/RuntimeProfileScope.d.ts +4 -0
- package/dist/openapi_client/models/RuntimeProfileScope.js +9 -0
- package/dist/openapi_client/models/RuntimeProfileStatus.d.ts +5 -0
- package/dist/openapi_client/models/RuntimeProfileStatus.js +10 -0
- package/dist/openapi_client/models/{ScheduleResponse.d.ts → ScheduleDetailResponse.d.ts} +3 -3
- package/dist/openapi_client/models/ScheduleDetailResponse.js +1 -0
- package/dist/openapi_client/models/ScheduleListResponse.d.ts +2 -2
- package/dist/openapi_client/models/SlackSurfaceConfig.d.ts +1 -4
- package/dist/openapi_client/models/SubscriptionResponse.d.ts +2 -2
- package/dist/openapi_client/models/SubscriptionWithPlanResponse.d.ts +2 -2
- package/dist/openapi_client/models/SurfaceBehaviorConfigInput.d.ts +3 -0
- package/dist/openapi_client/models/SurfaceBehaviorConfigInput.js +1 -0
- package/dist/openapi_client/models/SurfaceEventMode.d.ts +6 -0
- package/dist/openapi_client/models/SurfaceEventMode.js +11 -0
- package/dist/openapi_client/models/SurfaceMode.d.ts +5 -0
- package/dist/openapi_client/models/SurfaceMode.js +10 -0
- package/dist/openapi_client/models/SurfaceSetupMode.d.ts +2 -3
- package/dist/openapi_client/models/SurfaceSetupMode.js +1 -2
- package/dist/openapi_client/models/{TableResponse.d.ts → TableDetailResponse.d.ts} +3 -3
- package/dist/openapi_client/models/TableDetailResponse.js +1 -0
- package/dist/openapi_client/models/TableListResponse.d.ts +2 -2
- package/dist/openapi_client/models/TeamsSurfaceConfig.d.ts +1 -3
- package/dist/openapi_client/models/TelegramSurfaceConfig.d.ts +1 -0
- package/dist/openapi_client/models/UpdateAgentRequest.d.ts +4 -12
- package/dist/openapi_client/models/UpdateConversationRequest.d.ts +2 -2
- package/dist/openapi_client/models/UpdateDeskRequest.d.ts +0 -1
- package/dist/openapi_client/models/UpdateFunctionRequest.d.ts +2 -6
- package/dist/openapi_client/models/UpdateScheduleRequest.d.ts +1 -1
- package/dist/openapi_client/models/UpdateSurfaceRequest.d.ts +11 -14
- package/dist/openapi_client/models/UpdateTableRequest.d.ts +1 -1
- package/dist/openapi_client/models/UsageLimitScopeResponse.d.ts +2 -3
- package/dist/openapi_client/models/UsageLimitsResponse.d.ts +1 -4
- package/dist/openapi_client/models/UsageListResponse.d.ts +0 -3
- package/dist/openapi_client/models/UsageRecordResponse.d.ts +10 -14
- package/dist/openapi_client/models/UsageStatsBucketResponse.d.ts +1 -4
- package/dist/openapi_client/models/UsageStatsResponse.d.ts +0 -3
- package/dist/openapi_client/models/UsageSummaryResponse.d.ts +4 -6
- package/dist/openapi_client/models/UserApprovalListResponse.d.ts +4 -0
- package/dist/openapi_client/models/UserApprovalListResponse.js +1 -0
- package/dist/openapi_client/models/VerifyTokenResponse.d.ts +5 -0
- package/dist/openapi_client/models/WhatsAppSurfaceConfig.d.ts +1 -0
- package/dist/openapi_client/models/WorkflowCreateRequest.d.ts +2 -1
- package/dist/openapi_client/models/WorkflowListResponse.d.ts +2 -2
- package/dist/openapi_client/models/WorkflowRunListResponse.d.ts +2 -2
- package/dist/openapi_client/models/WorkflowRunSummaryResponse.d.ts +18 -0
- package/dist/openapi_client/models/WorkflowRunSummaryResponse.js +1 -0
- package/dist/openapi_client/models/WorkflowUpdateRequest.d.ts +2 -1
- package/dist/openapi_client/models/WorkspaceAppAccessRequest.d.ts +6 -0
- package/dist/openapi_client/models/WorkspaceAppAccessRequest.js +1 -0
- package/dist/openapi_client/models/WorkspaceAppAccessResponse.d.ts +5 -0
- package/dist/openapi_client/models/WorkspaceAppAccessResponse.js +1 -0
- package/dist/openapi_client/models/WorkspaceMeApp.d.ts +5 -0
- package/dist/openapi_client/models/WorkspaceMeApp.js +1 -0
- package/dist/openapi_client/models/WorkspaceMeResponse.d.ts +9 -0
- package/dist/openapi_client/models/WorkspaceMeResponse.js +1 -0
- package/dist/openapi_client/models/WorkspaceMeSandbox.d.ts +10 -0
- package/dist/openapi_client/models/WorkspaceMeSandbox.js +1 -0
- package/dist/openapi_client/models/WorkspaceMeSession.d.ts +6 -0
- package/dist/openapi_client/models/WorkspaceMeSession.js +1 -0
- package/dist/openapi_client/models/update.d.ts +1 -1
- package/dist/openapi_client/services/AgentConversationsService.d.ts +28 -3
- package/dist/openapi_client/services/AgentConversationsService.js +54 -3
- package/dist/openapi_client/services/AgentRuntimeService.d.ts +30 -0
- package/dist/openapi_client/services/AgentRuntimeService.js +54 -0
- package/dist/openapi_client/services/AgentSurfacesIngressService.d.ts +15 -20
- package/dist/openapi_client/services/AgentSurfacesIngressService.js +23 -28
- package/dist/openapi_client/services/AgentSurfacesService.d.ts +8 -8
- package/dist/openapi_client/services/AgentSurfacesService.js +20 -20
- package/dist/openapi_client/services/AgentToolsService.d.ts +0 -10
- package/dist/openapi_client/services/AgentToolsService.js +0 -18
- package/dist/openapi_client/services/AgentsService.d.ts +31 -9
- package/dist/openapi_client/services/AgentsService.js +50 -5
- package/dist/openapi_client/services/ApplicationsService.d.ts +12 -8
- package/dist/openapi_client/services/ApplicationsService.js +24 -16
- package/dist/openapi_client/services/BillingSubscriptionsService.d.ts +3 -2
- package/dist/openapi_client/services/BillingSubscriptionsService.js +3 -3
- package/dist/openapi_client/services/DesksService.d.ts +7 -7
- package/dist/openapi_client/services/DesksService.js +3 -3
- package/dist/openapi_client/services/FilesService.d.ts +18 -9
- package/dist/openapi_client/services/FilesService.js +28 -4
- package/dist/openapi_client/services/FunctionsService.d.ts +29 -7
- package/dist/openapi_client/services/FunctionsService.js +48 -3
- package/dist/openapi_client/services/IntegrationsService.d.ts +65 -14
- package/dist/openapi_client/services/IntegrationsService.js +144 -23
- package/dist/openapi_client/services/OrganizationsService.d.ts +8 -0
- package/dist/openapi_client/services/OrganizationsService.js +19 -0
- package/dist/openapi_client/services/PodMembersService.d.ts +0 -10
- package/dist/openapi_client/services/PodMembersService.js +0 -24
- package/dist/openapi_client/services/PodPermissionsService.d.ts +19 -0
- package/dist/openapi_client/services/PodPermissionsService.js +40 -0
- package/dist/openapi_client/services/PodResourceAccessService.d.ts +38 -0
- package/dist/openapi_client/services/PodResourceAccessService.js +81 -0
- package/dist/openapi_client/services/PodRolesService.d.ts +28 -0
- package/dist/openapi_client/services/PodRolesService.js +66 -0
- package/dist/openapi_client/services/PublicDesksService.d.ts +10 -0
- package/dist/openapi_client/services/PublicDesksService.js +15 -0
- package/dist/openapi_client/services/SchedulesService.d.ts +7 -7
- package/dist/openapi_client/services/SchedulesService.js +3 -3
- package/dist/openapi_client/services/TablesService.d.ts +9 -9
- package/dist/openapi_client/services/TablesService.js +4 -4
- package/dist/openapi_client/services/UsageService.d.ts +96 -0
- package/dist/openapi_client/services/UsageService.js +210 -0
- package/dist/openapi_client/services/WorkflowsService.d.ts +9 -9
- package/dist/openapi_client/services/WorkflowsService.js +4 -4
- package/dist/openapi_client/services/WorkspaceAppsService.d.ts +12 -0
- package/dist/openapi_client/services/WorkspaceAppsService.js +21 -0
- package/dist/openapi_client/services/WorkspaceService.d.ts +10 -0
- package/dist/openapi_client/services/WorkspaceService.js +15 -0
- package/dist/react/AuthGuard.d.ts +16 -2
- package/dist/react/AuthGuard.js +169 -130
- package/dist/react/index.d.ts +1 -1
- package/dist/react/useAssistantController.d.ts +26 -3
- package/dist/react/useAssistantController.js +187 -69
- package/dist/react/useAssistantSession.d.ts +10 -7
- package/dist/react/useAssistantSession.js +106 -5
- package/dist/react/useConversations.d.ts +1 -7
- package/dist/react/useConversations.js +4 -10
- package/dist/react/useFlowRunHistory.d.ts +4 -4
- package/dist/react/useFlowRunHistory.js +9 -4
- package/dist/react/useFlowSession.d.ts +2 -2
- package/dist/react/useFunctionRun.d.ts +2 -2
- package/dist/react/useFunctionRuns.d.ts +5 -5
- package/dist/react/useFunctionSession.d.ts +2 -2
- package/dist/react/useWorkflowRun.d.ts +2 -2
- package/dist/react/useWorkflowRuns.d.ts +5 -5
- package/dist/react/useWorkflowStart.d.ts +2 -2
- package/dist/types.d.ts +45 -8
- package/package.json +2 -2
- package/dist/openapi_client/models/AgentModelName.d.ts +0 -13
- package/dist/openapi_client/models/AgentModelName.js +0 -18
- package/dist/openapi_client/models/AgentResponse.d.ts +0 -29
- package/dist/openapi_client/models/ApplicationAccessConfig.d.ts +0 -18
- package/dist/openapi_client/models/ApplicationMode.d.ts +0 -7
- package/dist/openapi_client/models/ApplicationMode.js +0 -12
- package/dist/openapi_client/models/BillingScope.d.ts +0 -7
- package/dist/openapi_client/models/BillingScope.js +0 -12
- package/dist/openapi_client/models/FunctionTableAccessEntry.d.ts +0 -5
- package/dist/openapi_client/models/GmailSurfaceConfigInput.d.ts +0 -4
- package/dist/openapi_client/models/OutlookSurfaceConfigInput.d.ts +0 -4
- package/dist/openapi_client/models/RecentUsageResponse.d.ts +0 -9
- package/dist/openapi_client/models/SlackCredentialsInput.d.ts +0 -5
- package/dist/openapi_client/models/SlackSurfaceConfigInput.d.ts +0 -6
- package/dist/openapi_client/models/SurfaceCredentialMode.d.ts +0 -4
- package/dist/openapi_client/models/SurfaceCredentialMode.js +0 -9
- package/dist/openapi_client/models/SurfaceWebhookMode.d.ts +0 -4
- package/dist/openapi_client/models/SurfaceWebhookMode.js +0 -9
- package/dist/openapi_client/models/TableAccessEntry.d.ts +0 -8
- package/dist/openapi_client/models/TableAccessMode.d.ts +0 -7
- package/dist/openapi_client/models/TableAccessMode.js +0 -12
- package/dist/openapi_client/models/TeamsCredentialsInput.d.ts +0 -6
- package/dist/openapi_client/models/TeamsSurfaceConfigInput.d.ts +0 -6
- package/dist/openapi_client/models/TelegramCredentialsInput.d.ts +0 -5
- package/dist/openapi_client/models/TelegramSurfaceConfigInput.d.ts +0 -6
- package/dist/openapi_client/models/WebSearchAgentRequest.d.ts +0 -9
- package/dist/openapi_client/models/WebSearchAgentResponse.d.ts +0 -25
- package/dist/openapi_client/models/WhatsAppCredentialsInput.d.ts +0 -8
- package/dist/openapi_client/models/WhatsAppSurfaceConfigInput.d.ts +0 -6
- package/dist/openapi_client/services/BillingUsageService.d.ts +0 -138
- package/dist/openapi_client/services/BillingUsageService.js +0 -302
- /package/dist/openapi_client/models/{AgentResponse.js → AccountCreateSchema.js} +0 -0
- /package/dist/openapi_client/models/{ApplicationAccessConfig.js → AgentActionResponse.js} +0 -0
- /package/dist/openapi_client/models/{DeskResponse.js → AgentDetailResponse.js} +0 -0
- /package/dist/openapi_client/models/{FileResponse.js → AgentHarnessInfo.js} +0 -0
- /package/dist/openapi_client/models/{FlowResponse.js → AgentHarnessListResponse.js} +0 -0
- /package/dist/openapi_client/models/{FunctionResponse.js → AgentPermissionsReplaceRequest.js} +0 -0
- /package/dist/openapi_client/models/{FunctionTableAccessEntry.js → AgentPermissionsResponse.js} +0 -0
- /package/dist/openapi_client/models/{GmailSurfaceConfigInput.js → AgentResourcePermissionRequest.js} +0 -0
- /package/dist/openapi_client/models/{OutlookSurfaceConfigInput.js → AgentResourcePermissionResponse.js} +0 -0
- /package/dist/openapi_client/models/{RecentUsageResponse.js → AgentRuntimeConfig.js} +0 -0
- /package/dist/openapi_client/models/{ScheduleResponse.js → AgentRuntimeProfileListResponse.js} +0 -0
- /package/dist/openapi_client/models/{SlackCredentialsInput.js → AgentRuntimeProfileResponse.js} +0 -0
- /package/dist/openapi_client/models/{SlackSurfaceConfigInput.js → AuthConfigCreateSchema.js} +0 -0
- /package/dist/openapi_client/models/{TableAccessEntry.js → AuthConfigListResponseSchema.js} +0 -0
- /package/dist/openapi_client/models/{TableResponse.js → AuthConfigResponseSchema.js} +0 -0
- /package/dist/openapi_client/models/{TeamsCredentialsInput.js → ComposioProviderCapabilityResponseSchema.js} +0 -0
- /package/dist/openapi_client/models/{TeamsSurfaceConfigInput.js → ConvertedPageResponse.js} +0 -0
- /package/dist/openapi_client/models/{TelegramCredentialsInput.js → CreateAnthropicCompatibleRuntimeProfileRequest.js} +0 -0
- /package/dist/openapi_client/models/{TelegramSurfaceConfigInput.js → CreateOpenAICompatibleRuntimeProfileRequest.js} +0 -0
- /package/dist/openapi_client/models/{WebSearchAgentRequest.js → CreateUserDaemonRuntimeProfileRequest.js} +0 -0
- /package/dist/openapi_client/models/{WebSearchAgentResponse.js → DeskDetailResponse.js} +0 -0
- /package/dist/openapi_client/models/{WhatsAppCredentialsInput.js → FileDetailResponse.js} +0 -0
- /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 (
|
|
182
|
+
if ("tool_output" in content) {
|
|
183
183
|
return {
|
|
184
|
-
kind: "
|
|
184
|
+
kind: "result",
|
|
185
185
|
toolCallId,
|
|
186
186
|
toolName,
|
|
187
|
-
|
|
187
|
+
result: normalizeToolResult(content.tool_output),
|
|
188
188
|
};
|
|
189
189
|
}
|
|
190
|
-
if ("
|
|
190
|
+
if (typeof content.tool_name === "string") {
|
|
191
191
|
return {
|
|
192
|
-
kind: "
|
|
192
|
+
kind: "call",
|
|
193
193
|
toolCallId,
|
|
194
194
|
toolName,
|
|
195
|
-
|
|
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
|
-
|
|
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
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
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 [
|
|
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
|
|
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
|
-
|
|
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,
|
|
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, {
|
|
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
|
-
|
|
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
|
-
|
|
1101
|
+
setPendingFileUploads((prev) => {
|
|
1011
1102
|
const byKey = new Map();
|
|
1012
|
-
prev.forEach((
|
|
1013
|
-
files.forEach((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
|
-
|
|
1116
|
+
setPendingFileUploads((prev) => prev.filter((upload) => upload.key !== fileKey));
|
|
1019
1117
|
}, []);
|
|
1020
1118
|
const clearPendingFiles = useCallback(() => {
|
|
1021
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1047
|
-
messageContent = appendPersonalFileReferences(
|
|
1048
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
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
|
|
1236
|
+
setLocalError(err instanceof Error ? err.message : "Failed to resolve approval");
|
|
1113
1237
|
throw err;
|
|
1114
1238
|
}
|
|
1115
|
-
|
|
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>;
|