session.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package service
  2. import (
  3. "errors"
  4. "github.com/langgenius/dify-plugin-daemon/internal/core/plugin_daemon/access_types"
  5. "github.com/langgenius/dify-plugin-daemon/internal/core/plugin_manager"
  6. "github.com/langgenius/dify-plugin-daemon/internal/core/session_manager"
  7. "github.com/langgenius/dify-plugin-daemon/internal/types/entities/plugin_entities"
  8. )
  9. func createSession[T any](
  10. r *plugin_entities.InvokePluginRequest[T],
  11. access_type access_types.PluginAccessType,
  12. access_action access_types.PluginAccessAction,
  13. cluster_id string,
  14. ) (*session_manager.Session, error) {
  15. manager := plugin_manager.Manager()
  16. if manager == nil {
  17. return nil, errors.New("failed to get plugin manager")
  18. }
  19. // try fetch plugin identifier from plugin id
  20. runtime, err := manager.Get(r.UniqueIdentifier)
  21. if err != nil {
  22. return nil, errors.New("failed to get plugin runtime")
  23. }
  24. session := session_manager.NewSession(
  25. session_manager.NewSessionPayload{
  26. TenantID: r.TenantId,
  27. UserID: r.UserId,
  28. PluginUniqueIdentifier: r.UniqueIdentifier,
  29. ClusterID: cluster_id,
  30. InvokeFrom: access_type,
  31. Action: access_action,
  32. Declaration: runtime.Configuration(),
  33. BackwardsInvocation: manager.BackwardsInvocation(),
  34. IgnoreCache: false,
  35. ConversationID: r.ConversationID,
  36. MessageID: r.MessageID,
  37. AppID: r.AppID,
  38. EndpointID: r.EndpointID,
  39. },
  40. )
  41. session.BindRuntime(runtime)
  42. return session, nil
  43. }