@codee-sh/medusa-plugin-automations 1.0.0 → 1.0.1

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 (36) hide show
  1. package/.medusa/server/src/admin/_chunks/__admin-extensions__-CQZdTnuf +10091 -0
  2. package/.medusa/server/src/admin/_chunks/__admin-extensions__-DIUFmida +10089 -0
  3. package/.medusa/server/src/admin/_chunks/base-config-0lbnQWYz +7875 -0
  4. package/.medusa/server/src/admin/_chunks/base-config-DsBoNoxD +7892 -0
  5. package/.medusa/server/src/admin/index.js +2 -9930
  6. package/.medusa/server/src/admin/index.mjs +2 -9927
  7. package/.medusa/server/src/api/admin/mpn/automations/route.js +9 -11
  8. package/.medusa/server/src/api/middlewares.js +4 -2
  9. package/.medusa/server/src/hooks/api/available-actions/actions.js +1 -1
  10. package/.medusa/server/src/modules/mpn-automation/actions-handlers/base-action-handler.js +32 -0
  11. package/.medusa/server/src/modules/mpn-automation/actions-handlers/email-action-handler.js +71 -0
  12. package/.medusa/server/src/modules/mpn-automation/actions-handlers/index.js +10 -0
  13. package/.medusa/server/src/modules/mpn-automation/actions-handlers/slack-action-handler.js +43 -0
  14. package/.medusa/server/src/modules/mpn-automation/migrations/Migration20251207172856.js +24 -0
  15. package/.medusa/server/src/modules/mpn-automation/models/mpn_automation_trigger.js +4 -2
  16. package/.medusa/server/src/modules/mpn-automation/services/service.js +71 -15
  17. package/.medusa/server/src/modules/mpn-automation/types/action-handler.js +3 -0
  18. package/.medusa/server/src/modules/mpn-automation/types/index.js +20 -0
  19. package/.medusa/server/src/modules/mpn-automation/{interfaces.js → types/interfaces.js} +1 -1
  20. package/.medusa/server/src/modules/mpn-automation/{types.js → types/types.js} +1 -1
  21. package/.medusa/server/src/providers/slack/index.js +8 -0
  22. package/.medusa/server/src/providers/slack/service.js +99 -0
  23. package/.medusa/server/src/subscribers/mpn.automation.action.email.executed.js +5 -4
  24. package/.medusa/server/src/subscribers/mpn.automation.action.slack.executed.js +56 -0
  25. package/.medusa/server/src/utils/types/index.js +3 -3
  26. package/.medusa/server/src/workflows/mpn-automation/delete-automation.js +14 -0
  27. package/.medusa/server/src/workflows/mpn-automation/index.js +2 -1
  28. package/.medusa/server/src/workflows/mpn-automation/send-slack-action.js +69 -0
  29. package/.medusa/server/src/workflows/mpn-automation/steps/delete-automation.js +12 -0
  30. package/.medusa/server/src/workflows/mpn-automation/steps/index.js +2 -1
  31. package/.medusa/server/src/workflows/mpn-automation/steps/run-automation-actions.js +26 -33
  32. package/.medusa/server/src/workflows/notifications/index.js +1 -1
  33. package/.medusa/server/src/workflows/notifications/send-slack.js +44 -0
  34. package/.medusa/server/src/workflows/notifications/steps/send-slack.js +74 -0
  35. package/README.md +4 -4
  36. package/package.json +1 -1
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.config = void 0;
4
+ exports.default = mpnAutomationActionSlackExecutedHandler;
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const send_slack_action_1 = require("../workflows/mpn-automation/send-slack-action");
7
+ /**
8
+ * Event name for the MPN automation action slack executed event.
9
+ */
10
+ const eventName = "mpn.automation.action.slack.executed";
11
+ /**
12
+ * Subscriber that runs the slack action workflow for the MPN automation system.
13
+ *
14
+ * This subscriber is triggered when an slack action is executed by the MPN automation system.
15
+ * It runs the slack action workflow to send a slack notification.
16
+ *
17
+ * @param event - The event data containing the action and context.
18
+ * @param container - The container instance.
19
+ */
20
+ async function mpnAutomationActionSlackExecutedHandler({ event: { data }, container, }) {
21
+ const notificationModuleService = container.resolve(utils_1.Modules.NOTIFICATION);
22
+ const { action, context, eventName } = data;
23
+ console.log("mpnAutomationActionSlackExecutedHandler", data);
24
+ // const notificationResult = await notificationModuleService.createNotifications({
25
+ // to: "slack-channel", // This will be configured in the Slack app
26
+ // channel: "slack",
27
+ // template: action.config.templateName,
28
+ // trigger_type: "mpn",
29
+ // resource_id: "123",
30
+ // resource_type: eventName,
31
+ // data: {
32
+ // ...context
33
+ // }
34
+ // })
35
+ // Execute email action workflow
36
+ const { result } = await (0, send_slack_action_1.sendSlackActionWorkflow)(container).run({
37
+ input: {
38
+ action: {
39
+ ...action,
40
+ config: {
41
+ ...action.config,
42
+ template: action.config.templateName ?? "inventory-level",
43
+ },
44
+ },
45
+ context: context,
46
+ eventName: eventName,
47
+ },
48
+ });
49
+ if (!result.success) {
50
+ console.error(`Failed to send email action ${action?.id}:`, result.error);
51
+ }
52
+ }
53
+ exports.config = {
54
+ event: eventName,
55
+ };
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXBuLmF1dG9tYXRpb24uYWN0aW9uLnNsYWNrLmV4ZWN1dGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N1YnNjcmliZXJzL21wbi5hdXRvbWF0aW9uLmFjdGlvbi5zbGFjay5leGVjdXRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFrQkEsMERBd0NDO0FBekRELHFEQUFvRDtBQUNwRCxxRkFBd0Y7QUFFeEY7O0dBRUc7QUFDSCxNQUFNLFNBQVMsR0FBRyxzQ0FBc0MsQ0FBQTtBQUV4RDs7Ozs7Ozs7R0FRRztBQUNZLEtBQUssVUFBVSx1Q0FBdUMsQ0FBQyxFQUNwRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFDZixTQUFTLEdBQ1c7SUFDcEIsTUFBTSx5QkFBeUIsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUV6RSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFFNUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5Q0FBeUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUU3RCxtRkFBbUY7SUFDbkYscUVBQXFFO0lBQ3JFLHNCQUFzQjtJQUN0QiwwQ0FBMEM7SUFDMUMseUJBQXlCO0lBQ3pCLHdCQUF3QjtJQUN4Qiw4QkFBOEI7SUFDOUIsWUFBWTtJQUNaLGlCQUFpQjtJQUNqQixNQUFNO0lBQ04sT0FBTztJQUVQLGdDQUFnQztJQUNoQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFBLDJDQUF1QixFQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUM5RCxLQUFLLEVBQUU7WUFDTCxNQUFNLEVBQUU7Z0JBQ04sR0FBRyxNQUFNO2dCQUNULE1BQU0sRUFBRTtvQkFDTixHQUFHLE1BQU0sQ0FBQyxNQUFNO29CQUNoQixRQUFRLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLElBQUksaUJBQWlCO2lCQUMxRDthQUNGO1lBQ0QsT0FBTyxFQUFFLE9BQU87WUFDaEIsU0FBUyxFQUFFLFNBQVM7U0FDckI7S0FDRixDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxLQUFLLENBQUMsK0JBQStCLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUUsQ0FBQztBQUNILENBQUM7QUFFWSxRQUFBLE1BQU0sR0FBcUI7SUFDdEMsS0FBSyxFQUFFLFNBQVM7Q0FDakIsQ0FBQyJ9
@@ -14,6 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("../../modules/mpn-automation/types"), exports);
18
- __exportStar(require("../../modules/mpn-automation/interfaces"), exports);
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdXRpbHMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFFQUFrRDtBQUNsRCwwRUFBdUQifQ==
17
+ __exportStar(require("../../modules/mpn-automation/types/types"), exports);
18
+ __exportStar(require("../../modules/mpn-automation/types/interfaces"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdXRpbHMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJFQUF3RDtBQUN4RCxnRkFBNkQifQ==
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deleteAutomationWorkflow = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const delete_automation_1 = require("./steps/delete-automation");
6
+ exports.deleteAutomationWorkflow = (0, workflows_sdk_1.createWorkflow)("delete-automation", ({ id }) => {
7
+ const result = (0, delete_automation_1.deleteAutomationStep)({
8
+ id: id,
9
+ });
10
+ return new workflows_sdk_1.WorkflowResponse({
11
+ result,
12
+ });
13
+ });
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLWF1dG9tYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL21wbi1hdXRvbWF0aW9uL2RlbGV0ZS1hdXRvbWF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUFvRjtBQUNwRixpRUFBZ0U7QUFNbkQsUUFBQSx3QkFBd0IsR0FBRyxJQUFBLDhCQUFjLEVBQ3BELG1CQUFtQixFQUNuQixDQUFDLEVBQUUsRUFBRSxFQUFpQyxFQUFFLEVBQUU7SUFDeEMsTUFBTSxNQUFNLEdBQUcsSUFBQSx3Q0FBb0IsRUFBQztRQUNsQyxFQUFFLEVBQUUsRUFBRTtLQUNQLENBQUMsQ0FBQTtJQUVGLE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQztRQUMxQixNQUFNO0tBQ1AsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUNGLENBQUEifQ==
@@ -21,4 +21,5 @@ __exportStar(require("./create-automation"), exports);
21
21
  __exportStar(require("./edit-automation"), exports);
22
22
  __exportStar(require("./edit-automation-rules"), exports);
23
23
  __exportStar(require("./edit-automation-actions"), exports);
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL21wbi1hdXRvbWF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwRUFBdUQ7QUFDdkQsbURBQWdDO0FBQ2hDLHNEQUFtQztBQUNuQyxzREFBbUM7QUFDbkMsb0RBQWlDO0FBQ2pDLDBEQUF1QztBQUN2Qyw0REFBeUMifQ==
24
+ __exportStar(require("./delete-automation"), exports);
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL21wbi1hdXRvbWF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwRUFBdUQ7QUFDdkQsbURBQWdDO0FBQ2hDLHNEQUFtQztBQUNuQyxzREFBbUM7QUFDbkMsb0RBQWlDO0FBQ2pDLDBEQUF1QztBQUN2Qyw0REFBeUM7QUFDekMsc0RBQW1DIn0=
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sendSlackActionWorkflow = exports.sendSlackActionWorkflowId = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const send_slack_1 = require("../notifications/send-slack");
6
+ exports.sendSlackActionWorkflowId = "send-slack-action";
7
+ /**
8
+ * Workflow wrapper for automation system that sends an email notification.
9
+ *
10
+ * This is a convenience wrapper around the universal sendEmailWorkflow,
11
+ * specifically designed for use with automation actions.
12
+ *
13
+ * It extracts configuration from action.config and context, then calls
14
+ * the universal sendEmailWorkflow.
15
+ *
16
+ * Configuration is stored in action.config:
17
+ * - templateName: Required - Name of the email template
18
+ * - to: Required - Recipient email address
19
+ * - locale: Optional - Locale for translations (default: "pl")
20
+ * - customTemplate: Optional - Path to custom template function
21
+ * - subject: Optional - Custom subject (otherwise uses template default)
22
+ * - template: Optional - Template identifier for notification (defaults to templateName)
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const { result } = await sendEmailActionWorkflow(container).run({
27
+ * input: {
28
+ * action: {
29
+ * id: "action_123",
30
+ * action_type: "email",
31
+ * config: {
32
+ * templateName: "inventory-level",
33
+ * to: "admin@example.com",
34
+ * locale: "pl"
35
+ * }
36
+ * },
37
+ * context: {
38
+ * inventory_level: {
39
+ * id: "il_123",
40
+ * stocked_quantity: 5
41
+ * }
42
+ * }
43
+ * }
44
+ * })
45
+ * ```
46
+ */
47
+ exports.sendSlackActionWorkflow = (0, workflows_sdk_1.createWorkflow)(exports.sendSlackActionWorkflowId, (input) => {
48
+ // Transform automation action format for sendEmailWorkflow
49
+ const settings = (0, workflows_sdk_1.transform)({ action: input.action, eventName: input.eventName }, (data) => {
50
+ const actionConfig = data?.action?.config || {};
51
+ const eventName = data?.eventName;
52
+ return {
53
+ template: actionConfig?.template,
54
+ resourceId: data?.action?.id,
55
+ resourceType: eventName,
56
+ channel: actionConfig?.channel,
57
+ triggerType: "mpn",
58
+ };
59
+ });
60
+ const result = send_slack_1.sendSlackWorkflow.runAsStep({
61
+ input: {
62
+ settings: settings,
63
+ context: input.context,
64
+ eventName: input.eventName,
65
+ },
66
+ });
67
+ return new workflows_sdk_1.WorkflowResponse(result);
68
+ });
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1zbGFjay1hY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL21wbi1hdXRvbWF0aW9uL3NlbmQtc2xhY2stYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE2RztBQUM3Ryw0REFBK0Q7QUFlbEQsUUFBQSx5QkFBeUIsR0FBRyxtQkFBbUIsQ0FBQTtBQUU1RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUNHO0FBQ1UsUUFBQSx1QkFBdUIsR0FBRyxJQUFBLDhCQUFjLEVBQ25ELGlDQUF5QixFQUN6QixDQUFDLEtBQWlELEVBQUUsRUFBRTtJQUNwRCwyREFBMkQ7SUFDM0QsTUFBTSxRQUFRLEdBQUcsSUFBQSx5QkFBUyxFQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ3hGLE1BQU0sWUFBWSxHQUFHLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQTtRQUMvQyxNQUFNLFNBQVMsR0FBRyxJQUFJLEVBQUUsU0FBUyxDQUFBO1FBRWpDLE9BQU87WUFDTCxRQUFRLEVBQUUsWUFBWSxFQUFFLFFBQVE7WUFDaEMsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUM1QixZQUFZLEVBQUUsU0FBUztZQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU87WUFDOUIsV0FBVyxFQUFFLEtBQUs7U0FDbkIsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0lBRUYsTUFBTSxNQUFNLEdBQUcsOEJBQWlCLENBQUMsU0FBUyxDQUFDO1FBQ3pDLEtBQUssRUFBRTtZQUNMLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztZQUN0QixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7U0FDM0I7S0FDRixDQUFDLENBQUE7SUFFRixPQUFPLElBQUksZ0NBQWdCLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDckMsQ0FBQyxDQUNGLENBQUEifQ==
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deleteAutomationStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const mpn_automation_1 = require("../../../modules/mpn-automation");
6
+ exports.deleteAutomationStep = (0, workflows_sdk_1.createStep)("delete-automation", async ({ id }, { container }) => {
7
+ const mpnAutomationService = container.resolve(mpn_automation_1.MPN_AUTOMATION_MODULE);
8
+ // Delete the trigger (cascade delete will handle related rules, states, and actions)
9
+ await mpnAutomationService.deleteMpnAutomationTriggers([id]);
10
+ return new workflows_sdk_1.StepResponse({ id, deleted: true }, { id, deleted: true });
11
+ });
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLWF1dG9tYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL21wbi1hdXRvbWF0aW9uL3N0ZXBzL2RlbGV0ZS1hdXRvbWF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE0RTtBQUU1RSxvRUFBdUU7QUFNMUQsUUFBQSxvQkFBb0IsR0FBRyxJQUFBLDBCQUFVLEVBQzVDLG1CQUFtQixFQUNuQixLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQTZCLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQ3pELE1BQU0sb0JBQW9CLEdBQXlCLFNBQVMsQ0FBQyxPQUFPLENBQUMsc0NBQXFCLENBQUMsQ0FBQTtJQUUzRixxRkFBcUY7SUFDckYsTUFBTSxvQkFBb0IsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFFNUQsT0FBTyxJQUFJLDRCQUFZLENBQUMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0FBQ3ZFLENBQUMsQ0FDRixDQUFBIn0=
@@ -21,4 +21,5 @@ __exportStar(require("./create-automation"), exports);
21
21
  __exportStar(require("./edit-automation"), exports);
22
22
  __exportStar(require("./edit-automation-rules"), exports);
23
23
  __exportStar(require("./edit-automation-actions"), exports);
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL21wbi1hdXRvbWF0aW9uL3N0ZXBzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwRUFBdUQ7QUFDdkQsaUVBQThDO0FBQzlDLDJEQUF3QztBQUN4QyxzREFBbUM7QUFDbkMsb0RBQWlDO0FBQ2pDLDBEQUF1QztBQUN2Qyw0REFBeUMifQ==
24
+ __exportStar(require("./delete-automation"), exports);
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL21wbi1hdXRvbWF0aW9uL3N0ZXBzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwRUFBdUQ7QUFDdkQsaUVBQThDO0FBQzlDLDJEQUF3QztBQUN4QyxzREFBbUM7QUFDbkMsb0RBQWlDO0FBQ2pDLDBEQUF1QztBQUN2Qyw0REFBeUM7QUFDekMsc0RBQW1DIn0=
@@ -2,7 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.runAutomationActionsStep = exports.runAutomationActionsStepId = void 0;
4
4
  const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
- const utils_1 = require("@medusajs/framework/utils");
5
+ const utils_1 = require("@medusajs/utils");
6
+ const utils_2 = require("@medusajs/framework/utils");
6
7
  exports.runAutomationActionsStepId = "run-automation-actions";
7
8
  /**
8
9
  * This step runs automation actions for all validated triggers by emitting events for each action type.
@@ -20,7 +21,8 @@ exports.runAutomationActionsStepId = "run-automation-actions";
20
21
  * })
21
22
  */
22
23
  exports.runAutomationActionsStep = (0, workflows_sdk_1.createStep)(exports.runAutomationActionsStepId, async (input, { container }) => {
23
- const eventBusService = container.resolve(utils_1.Modules.EVENT_BUS);
24
+ const mpnAutomationService = container.resolve("mpnAutomation");
25
+ const logger = container.resolve(utils_2.ContainerRegistrationKeys.LOGGER);
24
26
  const { validated, context } = input;
25
27
  if (!validated || validated.length === 0) {
26
28
  return new workflows_sdk_1.StepResponse({
@@ -40,46 +42,37 @@ exports.runAutomationActionsStep = (0, workflows_sdk_1.createStep)(exports.runAu
40
42
  }
41
43
  const executedActions = await Promise.all(result.actions.map(async (action) => {
42
44
  try {
43
- const actionType = action.action_type;
44
- if (!actionType) {
45
- console.warn(`Action ${action.id} has no action_type, skipping`);
46
- return {
47
- actionId: action.id,
48
- actionType: actionType,
49
- success: false,
50
- };
45
+ if (!action.action_type) {
46
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Action type is required");
51
47
  }
52
- // Emit event based on action type
53
- const eventName = `mpn.automation.action.${actionType}.executed`;
54
- await eventBusService.emit({
55
- name: eventName,
56
- data: {
57
- eventName: eventName,
58
- action: action,
59
- triggerId: result.trigger.id || result.trigger.trigger_id,
60
- context: context,
61
- },
48
+ const actionHandler = mpnAutomationService.getActionHandler(action.action_type);
49
+ const handler = actionHandler?.handler;
50
+ const enabled = actionHandler?.enabled;
51
+ if (!handler) {
52
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Action handler for "${action.action_type}" not found`);
53
+ }
54
+ if (!enabled) {
55
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Action handler for "${action.action_type}" is disabled`);
56
+ }
57
+ return await handler.executeAction({
58
+ action,
59
+ context,
60
+ result,
61
+ container,
62
+ eventName: `mpn.automation.action.${action.action_type}.executed`,
63
+ triggerId: result.trigger.id || result.trigger.trigger_id || "",
62
64
  });
63
- return {
64
- actionId: action.id,
65
- actionType: actionType,
66
- success: true,
67
- };
68
65
  }
69
66
  catch (error) {
70
- console.error(`Failed to execute action ${action.id}:`, error);
71
- return {
72
- actionId: action.id,
73
- actionType: action.action_type,
74
- success: false,
75
- };
67
+ logger.info(error.message);
68
+ return error;
76
69
  }
77
70
  }));
78
71
  return {
79
72
  triggerId: result.trigger.id || result.trigger.trigger_id,
80
73
  isValid: result.isValid,
81
- actionsExecuted: executedActions.filter(a => a.success).length,
82
74
  actions: executedActions,
75
+ actionsExecuted: executedActions.filter((a) => a.success).length,
83
76
  };
84
77
  }));
85
78
  const totalActionsExecuted = results.reduce((sum, r) => sum + r.actionsExecuted, 0);
@@ -89,4 +82,4 @@ exports.runAutomationActionsStep = (0, workflows_sdk_1.createStep)(exports.runAu
89
82
  totalActionsExecuted,
90
83
  });
91
84
  });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLWF1dG9tYXRpb24tYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvbXBuLWF1dG9tYXRpb24vc3RlcHMvcnVuLWF1dG9tYXRpb24tYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBNEU7QUFDNUUscURBQW1EO0FBMkJ0QyxRQUFBLDBCQUEwQixHQUFHLHdCQUF3QixDQUFBO0FBRWxFOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ1UsUUFBQSx3QkFBd0IsR0FBRyxJQUFBLDBCQUFVLEVBQ2hELGtDQUEwQixFQUMxQixLQUFLLEVBQ0gsS0FBb0MsRUFDcEMsRUFBRSxTQUFTLEVBQUUsRUFDMEMsRUFBRTtJQUN6RCxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUM1RCxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUVwQyxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekMsT0FBTyxJQUFJLDRCQUFZLENBQUM7WUFDdEIsT0FBTyxFQUFFLEVBQUU7WUFDWCxhQUFhLEVBQUUsQ0FBQztZQUNoQixvQkFBb0IsRUFBRSxDQUFDO1NBQ3hCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQy9CLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0RSxPQUFPO2dCQUNMLFNBQVMsRUFBRSxNQUFNLENBQUMsT0FB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
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLWF1dG9tYXRpb24tYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvbXBuLWF1dG9tYXRpb24vc3RlcHMvcnVuLWF1dG9tYXRpb24tYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBNkU7QUFNN0UsMkNBQThDO0FBQzlDLHFEQUFzRTtBQTBCekQsUUFBQSwwQkFBMEIsR0FBRyx3QkFBd0IsQ0FBQztBQUVuRTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNVLFFBQUEsd0JBQXdCLEdBQUcsSUFBQSwwQkFBVSxFQUNoRCxrQ0FBMEIsRUFDMUIsS0FBSyxFQUNILEtBQW9DLEVBQ3BDLEVBQUUsU0FBUyxFQUFFLEVBQzBDLEVBQUU7SUFDekQsTUFBTSxvQkFBb0IsR0FDeEIsU0FBUyxDQUFDLE9BQU8sQ0FBdUIsZUFBZSxDQUFDLENBQUM7SUFDM0QsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVuRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQztJQUVyQyxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekMsT0FBTyxJQUFJLDRCQUFZLENBQUM7WUFDdEIsT0FBTyxFQUFFLEVBQUU7WUFDWCxhQUFhLEVBQUUsQ0FBQztZQUNoQixvQkFBb0IsRUFBRSxDQUFDO1NBQ3hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQy9CLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMs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
@@ -14,5 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./send-email"), exports);
17
+ __exportStar(require("./send-slack"), exports);
18
18
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL25vdGlmaWNhdGlvbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUE0QiJ9
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sendSlackWorkflow = exports.sendSlackWorkflowId = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const send_slack_1 = require("./steps/send-slack");
6
+ exports.sendSlackWorkflowId = "send-slack";
7
+ /**
8
+ * Universal workflow that sends a slack notification.
9
+ *
10
+ * This workflow can be used independently or as part of automation workflows.
11
+ * It's not tied to automation system and can be used anywhere in the application.
12
+ *
13
+ * Configuration:
14
+ * - templateName: Required - Name of the slack template
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * // Standalone usage
19
+ * const { result } = await sendSlackWorkflow(container).run({
20
+ * input: {
21
+ * settings: {
22
+ * templateName: "inventory-level",
23
+ * to: "admin@example.com",
24
+ * locale: "pl"
25
+ * },
26
+ * templateData: {
27
+ * inventory_level: {
28
+ * id: "il_123",
29
+ * stocked_quantity: 5
30
+ * }
31
+ * }
32
+ * }
33
+ * })
34
+ * ```
35
+ */
36
+ exports.sendSlackWorkflow = (0, workflows_sdk_1.createWorkflow)(exports.sendSlackWorkflowId, (input) => {
37
+ const result = (0, send_slack_1.sendSlackStep)({
38
+ settings: input.settings,
39
+ context: input.context,
40
+ eventName: input.eventName,
41
+ });
42
+ return new workflows_sdk_1.WorkflowResponse(result);
43
+ });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1zbGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvbm90aWZpY2F0aW9ucy9zZW5kLXNsYWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUFrRztBQUNsRyxtREFBa0Q7QUFjckMsUUFBQSxtQkFBbUIsR0FBRyxZQUFZLENBQUE7QUFFL0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Qkc7QUFDVSxRQUFBLGlCQUFpQixHQUFHLElBQUEsOEJBQWMsRUFDN0MsMkJBQW1CLEVBQ25CLENBQUMsS0FBMkMsRUFBRSxFQUFFO0lBQzlDLE1BQU0sTUFBTSxHQUFHLElBQUEsMEJBQWEsRUFBQztRQUMzQixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7UUFDeEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztLQUMzQixDQUFDLENBQUE7SUFFRixPQUFPLElBQUksZ0NBQWdCLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDckMsQ0FBQyxDQUNGLENBQUEifQ==
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sendSlackStep = exports.sendSlackStepId = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ exports.sendSlackStepId = "send-slack";
7
+ /**
8
+ * Universal step that sends a slack notification.
9
+ *
10
+ * This step can be used independently or as part of automation workflows.
11
+ *
12
+ * Configuration:
13
+ * - templateName: Required - Name of the slack template to use
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * // Standalone usage
18
+ * const result = await sendSlackStep({
19
+ * settings: {
20
+ * templateName: "inventory-level",
21
+ * to: "admin@example.com",
22
+ * locale: "pl"
23
+ * },
24
+ * templateData: {
25
+ * inventory_level: { ... }
26
+ * }
27
+ * })
28
+ * ```
29
+ */
30
+ exports.sendSlackStep = (0, workflows_sdk_1.createStep)(exports.sendSlackStepId, async (input, { container }) => {
31
+ const { settings, context, eventName } = input;
32
+ // Validate required config
33
+ if (!settings.template) {
34
+ return new workflows_sdk_1.StepResponse({
35
+ success: false,
36
+ error: "template is required in config",
37
+ });
38
+ }
39
+ try {
40
+ const notificationModuleService = container.resolve(utils_1.Modules.NOTIFICATION);
41
+ const template = settings.template;
42
+ const to = settings.to || "slack-channel";
43
+ const locale = settings.locale || "pl";
44
+ const customSubject = settings.subject;
45
+ const resourceId = settings.resourceId || "unknown";
46
+ const resourceType = settings.resourceType || "email.notification";
47
+ const channel = settings.channel || "slack";
48
+ const triggerType = settings.triggerType || "system";
49
+ // Send notification
50
+ const notificationResult = await notificationModuleService.createNotifications({
51
+ to: to,
52
+ channel: channel,
53
+ template: template,
54
+ trigger_type: triggerType,
55
+ resource_id: resourceId,
56
+ resource_type: eventName,
57
+ data: {
58
+ ...context,
59
+ },
60
+ });
61
+ return new workflows_sdk_1.StepResponse({
62
+ success: true,
63
+ notificationId: notificationResult?.id,
64
+ });
65
+ }
66
+ catch (error) {
67
+ console.error(`Failed to send slack:`, error);
68
+ return new workflows_sdk_1.StepResponse({
69
+ success: false,
70
+ error: error?.message || "Unknown error occurred",
71
+ });
72
+ }
73
+ });
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1zbGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvbm90aWZpY2F0aW9ucy9zdGVwcy9zZW5kLXNsYWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE2RTtBQUM3RSxxREFBb0Q7QUF1QnZDLFFBQUEsZUFBZSxHQUFHLFlBQVksQ0FBQztBQUU1Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNVLFFBQUEsYUFBYSxHQUFHLElBQUEsMEJBQVUsRUFDckMsdUJBQWUsRUFDZixLQUFLLEVBQ0gsS0FBeUIsRUFDekIsRUFBRSxTQUFTLEVBQUUsRUFDK0IsRUFBRTtJQUM5QyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFL0MsMkJBQTJCO0lBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkIsT0FBTyxJQUFJLDRCQUFZLENBQUM7WUFDdEIsT0FBTyxFQUFFLEtBQUs7WUFDZCxLQUFLLEVBQUUsZ0NBQWdDO1NBQ3hDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxNQUFNLHlCQUF5QixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTFFLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDbkMsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLEVBQUUsSUFBSSxlQUFlLENBQUM7UUFDMUMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUM7UUFDdkMsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUN2QyxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsVUFBVSxJQUFJLFNBQVMsQ0FBQztRQUNwRCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxJQUFJLG9CQUFvQixDQUFDO1FBQ25FLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDO1FBQzVDLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDO1FBRXJELG9CQUFvQjtRQUNwQixNQUFNLGtCQUFrQixHQUN0QixNQUFNLHlCQUF5QixDQUFDLG1CQUFtQixDQUFDO1lBQ2xELEVBQUUsRUFBRSxFQUFFO1lBQ04sT0FBTyxFQUFFLE9BQU87WUFDaEIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsWUFBWSxFQUFFLFdBQVc7WUFDekIsV0FBVyxFQUFFLFVBQVU7WUFDdkIsYUFBYSxFQUFFLFNBQVM7WUFDeEIsSUFBSSxFQUFFO2dCQUNKLEdBQUcsT0FBTzthQUNYO1NBQ0YsQ0FBQyxDQUFDO1FBRUwsT0FBTyxJQUFJLDRCQUFZLENBQUM7WUFDdEIsT0FBTyxFQUFFLElBQUk7WUFDYixjQUFjLEVBQUUsa0JBQWtCLEVBQUUsRUFBRTtTQUN2QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztRQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlDLE9BQU8sSUFBSSw0QkFBWSxDQUFDO1lBQ3RCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLElBQUksd0JBQXdCO1NBQ2xELENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDLENBQ0YsQ0FBQyJ9
package/README.md CHANGED
@@ -87,13 +87,13 @@ Access the automations management interface in Medusa Admin at `/app/notificatio
87
87
 
88
88
  The plugin exports the following:
89
89
 
90
- - `@codee-sh/medusa-plugin-notification/workflows` - Workflow functions for automation management
91
- - `@codee-sh/medusa-plugin-notification/modules/mpn-automation` - Automation module service
92
- - `@codee-sh/medusa-plugin-notification/utils` - Utility functions
90
+ - `@codee-sh/medusa-plugin-automations/workflows` - Workflow functions for automation management
91
+ - `@codee-sh/medusa-plugin-automations/modules/mpn-automation` - Automation module service
92
+ - `@codee-sh/medusa-plugin-automations/utils` - Utility functions
93
93
 
94
94
  ## Related Plugins
95
95
 
96
- For email templates and rendering functionality, see [@codee-sh/medusa-plugin-notification-emails](https://github.com/codee-sh/medusa-plugin-notification-emails).
96
+ For email templates and rendering functionality, see [@codee-sh/medusa-plugin-automations-emails](https://github.com/codee-sh/medusa-plugin-notification-emails).
97
97
 
98
98
  ## License
99
99
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codee-sh/medusa-plugin-automations",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Medusa plugin for automations.",
5
5
  "author": "Codee (https://codee.dev)",
6
6
  "license": "MIT",