powr-sdk-web 4.1.7 → 4.1.9

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 (2) hide show
  1. package/dist/tasks/index.js +320 -10
  2. package/package.json +1 -1
@@ -8,7 +8,7 @@ exports["default"] = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _lucideReact = require("lucide-react");
10
10
  var _auth = require("../utils/auth");
11
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t7 in e) "default" !== _t7 && {}.hasOwnProperty.call(e, _t7) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t7)) && (i.get || i.set) ? o(f, _t7, i) : f[_t7] = e[_t7]); return f; })(e, t); }
11
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t8 in e) "default" !== _t8 && {}.hasOwnProperty.call(e, _t8) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t8)) && (i.get || i.set) ? o(f, _t8, i) : f[_t8] = e[_t8]); return f; })(e, t); }
12
12
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13
13
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
14
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
@@ -218,7 +218,23 @@ var PowrBaseTasks = function PowrBaseTasks(_ref) {
218
218
  _useState10 = _slicedToArray(_useState1, 2),
219
219
  editingTask = _useState10[0],
220
220
  setEditingTask = _useState10[1];
221
- var _useState11 = (0, _react.useState)({
221
+ var _useState11 = (0, _react.useState)(new Set()),
222
+ _useState12 = _slicedToArray(_useState11, 2),
223
+ expandedWorkflows = _useState12[0],
224
+ setExpandedWorkflows = _useState12[1];
225
+ var _useState13 = (0, _react.useState)(false),
226
+ _useState14 = _slicedToArray(_useState13, 2),
227
+ showExecutionHistory = _useState14[0],
228
+ setShowExecutionHistory = _useState14[1];
229
+ var _useState15 = (0, _react.useState)(null),
230
+ _useState16 = _slicedToArray(_useState15, 2),
231
+ selectedTask = _useState16[0],
232
+ setSelectedTask = _useState16[1];
233
+ var _useState17 = (0, _react.useState)([]),
234
+ _useState18 = _slicedToArray(_useState17, 2),
235
+ executionHistory = _useState18[0],
236
+ setExecutionHistory = _useState18[1];
237
+ var _useState19 = (0, _react.useState)({
222
238
  name: '',
223
239
  description: '',
224
240
  cronExpression: '',
@@ -227,9 +243,9 @@ var PowrBaseTasks = function PowrBaseTasks(_ref) {
227
243
  params: {},
228
244
  isActive: true
229
245
  }),
230
- _useState12 = _slicedToArray(_useState11, 2),
231
- formData = _useState12[0],
232
- setFormData = _useState12[1];
246
+ _useState20 = _slicedToArray(_useState19, 2),
247
+ formData = _useState20[0],
248
+ setFormData = _useState20[1];
233
249
  (0, _react.useEffect)(function () {
234
250
  fetchTasks();
235
251
  fetchTools();
@@ -517,6 +533,129 @@ var PowrBaseTasks = function PowrBaseTasks(_ref) {
517
533
  });
518
534
  return (action === null || action === void 0 ? void 0 : action.name) || actionId;
519
535
  };
536
+ var toggleWorkflowExpansion = function toggleWorkflowExpansion(taskId) {
537
+ setExpandedWorkflows(function (prev) {
538
+ var newSet = new Set(prev);
539
+ if (newSet.has(taskId)) {
540
+ newSet["delete"](taskId);
541
+ } else {
542
+ newSet.add(taskId);
543
+ }
544
+ return newSet;
545
+ });
546
+ };
547
+ var fetchExecutionHistory = /*#__PURE__*/function () {
548
+ var _ref8 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7(taskId) {
549
+ var _yield$apiCall7, data, ok, _t7;
550
+ return _regenerator().w(function (_context7) {
551
+ while (1) switch (_context7.n) {
552
+ case 0:
553
+ _context7.p = 0;
554
+ _context7.n = 1;
555
+ return (0, _auth.apiCall)(apiUrl, "/tasks/".concat(taskId, "/executions"), projectId);
556
+ case 1:
557
+ _yield$apiCall7 = _context7.v;
558
+ data = _yield$apiCall7.data;
559
+ ok = _yield$apiCall7.ok;
560
+ if (ok && data.success) {
561
+ setExecutionHistory(data.executions || []);
562
+ setSelectedTask(taskId);
563
+ setShowExecutionHistory(true);
564
+ } else {
565
+ onError && onError(data.message || 'Failed to fetch execution history');
566
+ }
567
+ _context7.n = 3;
568
+ break;
569
+ case 2:
570
+ _context7.p = 2;
571
+ _t7 = _context7.v;
572
+ console.error('Error fetching execution history:', _t7);
573
+ onError && onError('Failed to fetch execution history');
574
+ case 3:
575
+ return _context7.a(2);
576
+ }
577
+ }, _callee7, null, [[0, 2]]);
578
+ }));
579
+ return function fetchExecutionHistory(_x6) {
580
+ return _ref8.apply(this, arguments);
581
+ };
582
+ }();
583
+ var renderWorkflowSteps = function renderWorkflowSteps(task) {
584
+ if (!task.steps || task.steps.length === 0) {
585
+ return /*#__PURE__*/_react["default"].createElement("div", {
586
+ style: {
587
+ color: '#6b7280',
588
+ fontSize: '0.8rem'
589
+ }
590
+ }, "No steps defined");
591
+ }
592
+ return /*#__PURE__*/_react["default"].createElement("div", {
593
+ style: {
594
+ marginTop: '8px',
595
+ padding: '12px',
596
+ background: '#f8fafc',
597
+ borderRadius: '8px',
598
+ border: '1px solid #e2e8f0'
599
+ }
600
+ }, /*#__PURE__*/_react["default"].createElement("div", {
601
+ style: {
602
+ fontSize: '0.75rem',
603
+ fontWeight: '600',
604
+ color: '#374151',
605
+ marginBottom: '8px',
606
+ textTransform: 'uppercase',
607
+ letterSpacing: '0.05em'
608
+ }
609
+ }, "Workflow Steps"), task.steps.map(function (step, index) {
610
+ return /*#__PURE__*/_react["default"].createElement("div", {
611
+ key: step.id || index,
612
+ style: {
613
+ padding: '8px 12px',
614
+ margin: '4px 0',
615
+ background: 'white',
616
+ borderRadius: '6px',
617
+ border: '1px solid #e2e8f0',
618
+ fontSize: '0.8rem'
619
+ }
620
+ }, /*#__PURE__*/_react["default"].createElement("div", {
621
+ style: {
622
+ display: 'flex',
623
+ alignItems: 'center',
624
+ gap: '8px',
625
+ marginBottom: '4px'
626
+ }
627
+ }, /*#__PURE__*/_react["default"].createElement("span", {
628
+ style: {
629
+ padding: '2px 6px',
630
+ borderRadius: '4px',
631
+ fontSize: '0.7rem',
632
+ fontWeight: '600',
633
+ background: step.type === 'condition' ? '#dbeafe' : '#dcfce7',
634
+ color: step.type === 'condition' ? '#1d4ed8' : '#166534'
635
+ }
636
+ }, step.type === 'condition' ? '🔍' : '⚡', " ", step.type), /*#__PURE__*/_react["default"].createElement("span", {
637
+ style: {
638
+ fontWeight: '500',
639
+ color: '#374151'
640
+ }
641
+ }, "Step ", index + 1)), /*#__PURE__*/_react["default"].createElement("div", {
642
+ style: {
643
+ color: '#6b7280',
644
+ marginBottom: '4px'
645
+ }
646
+ }, step.description || "".concat(getToolName(step.toolId), " \u2192 ").concat(getActionName(step.toolId, step.actionId))), step.condition && /*#__PURE__*/_react["default"].createElement("div", {
647
+ style: {
648
+ fontSize: '0.7rem',
649
+ color: '#3b82f6',
650
+ fontStyle: 'italic',
651
+ background: '#eff6ff',
652
+ padding: '2px 6px',
653
+ borderRadius: '3px',
654
+ display: 'inline-block'
655
+ }
656
+ }, "Condition: ", step.condition));
657
+ }));
658
+ };
520
659
  var formatCronExpression = function formatCronExpression(cron) {
521
660
  if (!cron) return 'Manual';
522
661
  var parts = cron.split(' ');
@@ -531,6 +670,27 @@ var PowrBaseTasks = function PowrBaseTasks(_ref) {
531
670
  }
532
671
  return cron;
533
672
  };
673
+ var formatSchedule = function formatSchedule(schedule) {
674
+ if (!schedule) return 'Manual';
675
+
676
+ // Check if it's a cron expression (contains spaces and asterisks)
677
+ if (schedule.includes(' ') && schedule.includes('*')) {
678
+ return formatCronExpression(schedule);
679
+ }
680
+
681
+ // Check if it's an ISO timestamp
682
+ try {
683
+ var date = new Date(schedule);
684
+ if (!isNaN(date.getTime())) {
685
+ return date.toLocaleString();
686
+ }
687
+ } catch (e) {
688
+ // Not a valid date
689
+ }
690
+
691
+ // Fallback to showing the raw schedule
692
+ return schedule;
693
+ };
534
694
  var formatDate = function formatDate(dateString) {
535
695
  if (!dateString) return 'Never';
536
696
  return new Date(dateString).toLocaleString();
@@ -609,7 +769,26 @@ var PowrBaseTasks = function PowrBaseTasks(_ref) {
609
769
  fontSize: '0.8rem',
610
770
  fontWeight: '500'
611
771
  }
612
- }, task.type === 'workflow' ? /*#__PURE__*/_react["default"].createElement("span", null, "\uD83D\uDD04 Workflow (", ((_task$steps = task.steps) === null || _task$steps === void 0 ? void 0 : _task$steps.length) || 0, " steps)") : /*#__PURE__*/_react["default"].createElement("span", null, getToolName(task.toolId || 'Unknown'), " \u2192 ", getActionName(task.toolId || 'unknown', task.actionId || 'unknown'))))), /*#__PURE__*/_react["default"].createElement("td", {
772
+ }, task.type === 'workflow' ? /*#__PURE__*/_react["default"].createElement("div", {
773
+ style: {
774
+ display: 'flex',
775
+ alignItems: 'center',
776
+ gap: '8px'
777
+ }
778
+ }, /*#__PURE__*/_react["default"].createElement("span", null, "\uD83D\uDD04 Workflow (", ((_task$steps = task.steps) === null || _task$steps === void 0 ? void 0 : _task$steps.length) || 0, " steps)"), /*#__PURE__*/_react["default"].createElement("button", {
779
+ onClick: function onClick() {
780
+ return toggleWorkflowExpansion(task._id);
781
+ },
782
+ style: {
783
+ background: 'none',
784
+ border: 'none',
785
+ cursor: 'pointer',
786
+ padding: '2px',
787
+ color: '#3b82f6',
788
+ fontSize: '0.7rem'
789
+ },
790
+ title: expandedWorkflows.has(task._id) ? 'Hide steps' : 'Show steps'
791
+ }, expandedWorkflows.has(task._id) ? '▼' : '▶')) : /*#__PURE__*/_react["default"].createElement("span", null, getToolName(task.toolId || 'Unknown'), " \u2192 ", getActionName(task.toolId || 'unknown', task.actionId || 'unknown'))), task.type === 'workflow' && expandedWorkflows.has(task._id) && renderWorkflowSteps(task))), /*#__PURE__*/_react["default"].createElement("td", {
613
792
  style: styles.tableCell
614
793
  }, /*#__PURE__*/_react["default"].createElement("div", {
615
794
  style: {
@@ -620,14 +799,14 @@ var PowrBaseTasks = function PowrBaseTasks(_ref) {
620
799
  padding: '4px 8px',
621
800
  borderRadius: '4px'
622
801
  }
623
- }, task.type === 'workflow' ? /*#__PURE__*/_react["default"].createElement("span", null, "\uD83D\uDD50 ", task.schedule || 'Manual') : /*#__PURE__*/_react["default"].createElement("span", null, formatCronExpression(task.cronExpression)))), /*#__PURE__*/_react["default"].createElement("td", {
802
+ }, task.type === 'workflow' ? /*#__PURE__*/_react["default"].createElement("span", null, "\uD83D\uDD50 ", formatSchedule(task.scheduledFor || task.schedule)) : /*#__PURE__*/_react["default"].createElement("span", null, formatCronExpression(task.cronExpression)))), /*#__PURE__*/_react["default"].createElement("td", {
624
803
  style: styles.tableCell
625
804
  }, /*#__PURE__*/_react["default"].createElement("span", {
626
805
  style: {
627
806
  color: '#6b7280',
628
807
  fontSize: '0.85rem'
629
808
  }
630
- }, formatDate(task.lastRun || task.updatedAt))), /*#__PURE__*/_react["default"].createElement("td", {
809
+ }, task.lastRun ? formatDate(task.lastRun) : 'Never')), /*#__PURE__*/_react["default"].createElement("td", {
631
810
  style: styles.tableCell
632
811
  }, /*#__PURE__*/_react["default"].createElement("span", {
633
812
  style: _objectSpread(_objectSpread({}, styles.statusBadge), task.isActive !== false ? styles.statusActive : styles.statusInactive)
@@ -661,8 +840,139 @@ var PowrBaseTasks = function PowrBaseTasks(_ref) {
661
840
  }
662
841
  }) : /*#__PURE__*/_react["default"].createElement(_lucideReact.Zap, {
663
842
  size: 16
664
- })))));
665
- }))))), showCreateModal && /*#__PURE__*/_react["default"].createElement("div", {
843
+ })), task.type === 'workflow' && /*#__PURE__*/_react["default"].createElement("button", {
844
+ onClick: function onClick() {
845
+ return fetchExecutionHistory(task._id);
846
+ },
847
+ style: _objectSpread(_objectSpread({}, styles.actionButton), {}, {
848
+ background: '#fef3c7',
849
+ color: '#d97706'
850
+ }),
851
+ title: "View Execution History"
852
+ }, "\uD83D\uDCCA"))));
853
+ }))))), showExecutionHistory && /*#__PURE__*/_react["default"].createElement("div", {
854
+ style: {
855
+ position: 'fixed',
856
+ top: 0,
857
+ left: 0,
858
+ right: 0,
859
+ bottom: 0,
860
+ background: 'rgba(0, 0, 0, 0.5)',
861
+ display: 'flex',
862
+ alignItems: 'center',
863
+ justifyContent: 'center',
864
+ zIndex: 1000
865
+ }
866
+ }, /*#__PURE__*/_react["default"].createElement("div", {
867
+ style: {
868
+ background: 'white',
869
+ borderRadius: '12px',
870
+ padding: '24px',
871
+ width: '90%',
872
+ maxWidth: '800px',
873
+ maxHeight: '90vh',
874
+ overflowY: 'auto'
875
+ }
876
+ }, /*#__PURE__*/_react["default"].createElement("div", {
877
+ style: {
878
+ display: 'flex',
879
+ justifyContent: 'space-between',
880
+ alignItems: 'center',
881
+ marginBottom: '24px'
882
+ }
883
+ }, /*#__PURE__*/_react["default"].createElement("h2", {
884
+ style: {
885
+ margin: 0,
886
+ fontSize: '1.5rem',
887
+ fontWeight: '600'
888
+ }
889
+ }, "Execution History"), /*#__PURE__*/_react["default"].createElement("button", {
890
+ onClick: function onClick() {
891
+ setShowExecutionHistory(false);
892
+ setSelectedTask(null);
893
+ setExecutionHistory([]);
894
+ },
895
+ style: {
896
+ background: 'none',
897
+ border: 'none',
898
+ fontSize: '1.5rem',
899
+ cursor: 'pointer',
900
+ color: '#6b7280'
901
+ }
902
+ }, "\xD7")), executionHistory.length === 0 ? /*#__PURE__*/_react["default"].createElement("div", {
903
+ style: {
904
+ textAlign: 'center',
905
+ padding: '40px',
906
+ color: '#6b7280'
907
+ }
908
+ }, /*#__PURE__*/_react["default"].createElement("div", {
909
+ style: {
910
+ fontSize: '3rem',
911
+ marginBottom: '16px'
912
+ }
913
+ }, "\uD83D\uDCCA"), /*#__PURE__*/_react["default"].createElement("h3", {
914
+ style: {
915
+ margin: '0 0 8px 0'
916
+ }
917
+ }, "No executions yet"), /*#__PURE__*/_react["default"].createElement("p", {
918
+ style: {
919
+ margin: 0
920
+ }
921
+ }, "This workflow hasn't been executed yet.")) : /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
922
+ style: {
923
+ fontSize: '0.75rem',
924
+ fontWeight: '600',
925
+ color: '#374151',
926
+ marginBottom: '16px',
927
+ textTransform: 'uppercase',
928
+ letterSpacing: '0.05em'
929
+ }
930
+ }, "Recent Executions (", executionHistory.length, ")"), executionHistory.map(function (execution, index) {
931
+ return /*#__PURE__*/_react["default"].createElement("div", {
932
+ key: index,
933
+ style: {
934
+ padding: '16px',
935
+ margin: '8px 0',
936
+ background: '#f8fafc',
937
+ borderRadius: '8px',
938
+ border: '1px solid #e2e8f0'
939
+ }
940
+ }, /*#__PURE__*/_react["default"].createElement("div", {
941
+ style: {
942
+ display: 'flex',
943
+ justifyContent: 'space-between',
944
+ alignItems: 'center',
945
+ marginBottom: '8px'
946
+ }
947
+ }, /*#__PURE__*/_react["default"].createElement("span", {
948
+ style: {
949
+ fontWeight: '600',
950
+ color: '#374151'
951
+ }
952
+ }, "Execution #", executionHistory.length - index), /*#__PURE__*/_react["default"].createElement("span", {
953
+ style: {
954
+ fontSize: '0.8rem',
955
+ color: '#6b7280'
956
+ }
957
+ }, formatDate(execution.executedAt))), execution.results && /*#__PURE__*/_react["default"].createElement("div", {
958
+ style: {
959
+ fontSize: '0.8rem',
960
+ color: '#6b7280'
961
+ }
962
+ }, /*#__PURE__*/_react["default"].createElement("div", {
963
+ style: {
964
+ marginBottom: '4px'
965
+ }
966
+ }, /*#__PURE__*/_react["default"].createElement("strong", null, "Status:"), " ", execution.results.success ? '✅ Success' : '❌ Failed'), execution.results.stepsExecuted && /*#__PURE__*/_react["default"].createElement("div", {
967
+ style: {
968
+ marginBottom: '4px'
969
+ }
970
+ }, /*#__PURE__*/_react["default"].createElement("strong", null, "Steps Executed:"), " ", execution.results.stepsExecuted), execution.results.workflowName && /*#__PURE__*/_react["default"].createElement("div", {
971
+ style: {
972
+ marginBottom: '4px'
973
+ }
974
+ }, /*#__PURE__*/_react["default"].createElement("strong", null, "Workflow:"), " ", execution.results.workflowName)));
975
+ })))), showCreateModal && /*#__PURE__*/_react["default"].createElement("div", {
666
976
  style: {
667
977
  position: 'fixed',
668
978
  top: 0,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "powr-sdk-web",
3
- "version": "4.1.7",
3
+ "version": "4.1.9",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "build": "babel src -d dist --copy-files",