install.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package plugin_manager
  2. import (
  3. "github.com/langgenius/dify-plugin-daemon/internal/core/plugin_manager/serverless"
  4. "github.com/langgenius/dify-plugin-daemon/internal/core/plugin_packager/decoder"
  5. "github.com/langgenius/dify-plugin-daemon/internal/utils/routine"
  6. "github.com/langgenius/dify-plugin-daemon/internal/utils/stream"
  7. )
  8. type PluginInstallEvent string
  9. const (
  10. PluginInstallEventInfo PluginInstallEvent = "info"
  11. PluginInstallEventDone PluginInstallEvent = "done"
  12. PluginInstallEventError PluginInstallEvent = "error"
  13. )
  14. type PluginInstallResponse struct {
  15. Event PluginInstallEvent `json:"event"`
  16. Data string `json:"data"`
  17. }
  18. // InstallToAWSFromPkg installs a plugin to AWS Lambda
  19. func (p *PluginManager) InstallToAWSFromPkg(decoder decoder.PluginDecoder) (
  20. *stream.Stream[PluginInstallResponse], error,
  21. ) {
  22. response, err := serverless.UploadPlugin(decoder)
  23. if err != nil {
  24. return nil, err
  25. }
  26. new_response := stream.NewStream[PluginInstallResponse](2)
  27. routine.Submit(func() {
  28. response.Async(func(r serverless.LaunchAWSLambdaFunctionResponse) {
  29. if r.Event == serverless.Info {
  30. new_response.Write(PluginInstallResponse{
  31. Event: PluginInstallEventInfo,
  32. Data: "Installing...",
  33. })
  34. } else if r.Event == serverless.Done {
  35. new_response.Write(PluginInstallResponse{
  36. Event: PluginInstallEventDone,
  37. Data: "Installed",
  38. })
  39. } else if r.Event == serverless.Error {
  40. new_response.Write(PluginInstallResponse{
  41. Event: PluginInstallEventError,
  42. })
  43. }
  44. })
  45. })
  46. return new_response, nil
  47. }
  48. // InstallToLocal installs a plugin to local
  49. func (p *PluginManager) InstallToLocal(decoder decoder.PluginDecoder) (
  50. *stream.Stream[PluginInstallResponse], error,
  51. ) {
  52. return nil, nil
  53. }