@epam/ai-dial-chat-hooks 1.3.0-dev.326 → 1.3.0-dev.331

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 (76) hide show
  1. package/catalog/resource-folder.d.ts +8 -0
  2. package/catalog/resource-folder.d.ts.map +1 -0
  3. package/catalog/resource-folder.js +13 -0
  4. package/catalog/resource-save-adapter.d.ts +36 -0
  5. package/catalog/resource-save-adapter.d.ts.map +1 -0
  6. package/catalog/resource-save-adapter.js +4 -0
  7. package/catalog/resource-save-adapters.d.ts +93 -0
  8. package/catalog/resource-save-adapters.d.ts.map +1 -0
  9. package/catalog/resource-save-adapters.js +116 -0
  10. package/catalog/resource-save.d.ts +76 -0
  11. package/catalog/resource-save.d.ts.map +1 -0
  12. package/catalog/resource-save.js +52 -0
  13. package/catalog/useApplicationCredentialActions/useApplicationCredentialActions.d.ts +57 -0
  14. package/catalog/useApplicationCredentialActions/useApplicationCredentialActions.d.ts.map +1 -0
  15. package/catalog/useApplicationCredentialActions/useApplicationCredentialActions.js +67 -0
  16. package/catalog/useResourceFolders/useResourceFolders.d.ts +33 -0
  17. package/catalog/useResourceFolders/useResourceFolders.d.ts.map +1 -0
  18. package/catalog/useResourceFolders/useResourceFolders.js +58 -0
  19. package/catalog/useResourceSavePanel/useResourceSavePanel.d.ts +64 -0
  20. package/catalog/useResourceSavePanel/useResourceSavePanel.d.ts.map +1 -0
  21. package/catalog/useResourceSavePanel/useResourceSavePanel.js +173 -0
  22. package/catalog.js +11 -4
  23. package/entry-points/catalog.d.ts +6 -0
  24. package/entry-points/catalog.d.ts.map +1 -1
  25. package/entry-points/external-services.d.ts +4 -0
  26. package/entry-points/external-services.d.ts.map +1 -1
  27. package/entry-points/oauth.d.ts +1 -0
  28. package/entry-points/oauth.d.ts.map +1 -1
  29. package/entry-points/sharing.d.ts +4 -0
  30. package/entry-points/sharing.d.ts.map +1 -1
  31. package/external-services.js +5 -1
  32. package/index.d.ts +15 -0
  33. package/index.d.ts.map +1 -1
  34. package/index.js +183 -169
  35. package/oauth/callback-exchange.d.ts +49 -0
  36. package/oauth/callback-exchange.d.ts.map +1 -0
  37. package/oauth/callback-exchange.js +29 -0
  38. package/oauth.js +3 -2
  39. package/package.json +17 -17
  40. package/scheduled-task/scheduled-task-description.d.ts +2 -3
  41. package/scheduled-task/scheduled-task-description.d.ts.map +1 -1
  42. package/scheduled-task/scheduled-task-description.js +26 -26
  43. package/scheduled-task/scheduled-task-display.d.ts +1 -3
  44. package/scheduled-task/scheduled-task-display.d.ts.map +1 -1
  45. package/scheduled-task/scheduled-task-display.js +16 -17
  46. package/scheduled-task/scheduled-task-next-occurrence.d.ts +3 -3
  47. package/scheduled-task/scheduled-task-next-occurrence.d.ts.map +1 -1
  48. package/scheduled-task/scheduled-task-next-occurrence.js +2 -2
  49. package/scheduled-task/scheduled-task-trigger.d.ts.map +1 -1
  50. package/scheduled-task/scheduled-task-trigger.js +67 -70
  51. package/share-invitation/models.d.ts +46 -0
  52. package/share-invitation/models.d.ts.map +1 -0
  53. package/share-invitation/share-invitation-error.d.ts +6 -0
  54. package/share-invitation/share-invitation-error.d.ts.map +1 -0
  55. package/share-invitation/share-invitation-error.js +37 -0
  56. package/share-invitation/types.d.ts +10 -0
  57. package/share-invitation/types.d.ts.map +1 -0
  58. package/share-invitation/types.js +6 -0
  59. package/share-invitation/useAcceptShareInvitation/useAcceptShareInvitation.d.ts +9 -0
  60. package/share-invitation/useAcceptShareInvitation/useAcceptShareInvitation.d.ts.map +1 -0
  61. package/share-invitation/useAcceptShareInvitation/useAcceptShareInvitation.js +26 -0
  62. package/sharing.js +5 -2
  63. package/signin-interrupt/models.d.ts +48 -0
  64. package/signin-interrupt/models.d.ts.map +1 -0
  65. package/signin-interrupt/signin-row-info.d.ts +10 -0
  66. package/signin-interrupt/signin-row-info.d.ts.map +1 -0
  67. package/signin-interrupt/signin-row-info.js +21 -0
  68. package/signin-interrupt/types.d.ts +28 -0
  69. package/signin-interrupt/types.d.ts.map +1 -0
  70. package/signin-interrupt/types.js +10 -0
  71. package/signin-interrupt/useSigninInterrupt/useSigninInterrupt.d.ts +52 -0
  72. package/signin-interrupt/useSigninInterrupt/useSigninInterrupt.d.ts.map +1 -0
  73. package/signin-interrupt/useSigninInterrupt/useSigninInterrupt.js +270 -0
  74. package/skill/useSkillEditorSubmit.d.ts +13 -1
  75. package/skill/useSkillEditorSubmit.d.ts.map +1 -1
  76. package/skill/useSkillEditorSubmit.js +158 -79
@@ -0,0 +1,29 @@
1
+ import { OAuthResourceKind as e, ToolsetAuthTypes as t, ToolsetOAuthFailureReason as n } from "./types.js";
2
+ import { parseExternalServiceUrl as r } from "../shared/external-services.js";
3
+ import { ExternalServiceAuthType as i } from "../external-services/useExternalServiceLogin.js";
4
+ //#region src/oauth/callback-exchange.ts
5
+ var a = ({ loginToolset: a, signInExternalService: o, signInOfflineCredentials: s }) => async ({ code: c, redirectUri: l, credentialsLevel: u, redirectState: d }) => {
6
+ if (d.resourceKind === e.ExternalService) {
7
+ let e = r(d.toolsetId);
8
+ return e ? (await o(e.appId, e.serviceName, {
9
+ credentialsLevel: u,
10
+ authenticationType: i.OAuth,
11
+ code: c,
12
+ redirectUri: l,
13
+ offlineUsageConsent: d.offlineUsageConsent
14
+ }), null) : n.MissingRedirectState;
15
+ }
16
+ return d.resourceKind === e.OfflineCredentials ? (await s({
17
+ code: c,
18
+ redirectUri: l
19
+ }), null) : (await a(d.toolsetId, {
20
+ url: d.toolsetId,
21
+ credentialsLevel: u,
22
+ authenticationType: t.OAuth,
23
+ code: c,
24
+ redirectUri: l,
25
+ offlineUsageConsent: d.offlineUsageConsent
26
+ }), null);
27
+ };
28
+ //#endregion
29
+ export { a as createOAuthCallbackExchange };
package/oauth.js CHANGED
@@ -5,5 +5,6 @@ import { emitToolsetLoginSuccess as x, subscribeToolsetLoginSuccess as S } from
5
5
  import { getToolsetOAuthChannelName as C, waitForToolsetOAuthResult as w } from "./oauth/handshake.js";
6
6
  import { initiateOAuthLogin as T, navigateToolsetOAuthPopup as E, openToolsetOAuthPopup as D } from "./oauth/popup.js";
7
7
  import { ToolsetLoginOutcomeType as O, useToolsetLogin as k } from "./oauth/useToolsetLogin/useToolsetLogin.js";
8
- import { useOAuthCallbackCompletion as A } from "./oauth/useOAuthCallbackCompletion/useOAuthCallbackCompletion.js";
9
- export { e as OAuthResourceKind, t as TOOLSET_REDIRECT_STATE_KEY, n as ToolsetAuthStatus, r as ToolsetAuthTypes, i as ToolsetCredentialsLevel, O as ToolsetLoginOutcomeType, a as ToolsetOAuthCallbackQuery, o as ToolsetOAuthChannelControlType, s as ToolsetOAuthFailureReason, c as ToolsetOAuthInitiationResultType, l as ToolsetOAuthResultType, u as WithLogin, v as buildToolsetAuthorizeUrl, d as decodeToolsetId, x as emitToolsetLoginSuccess, f as encodeToolsetId, p as getToolsetFallbackName, C as getToolsetOAuthChannelName, y as getToolsetRedirectUri, T as initiateOAuthLogin, m as isPublicToolsetId, E as navigateToolsetOAuthPopup, h as normalizeToolsetId, D as openToolsetOAuthPopup, g as resolveToolsetCredentialsLevel, _ as selectToolsetAuthStatus, S as subscribeToolsetLoginSuccess, b as toToolsetOAuthSettings, A as useOAuthCallbackCompletion, k as useToolsetLogin, w as waitForToolsetOAuthResult };
8
+ import { createOAuthCallbackExchange as A } from "./oauth/callback-exchange.js";
9
+ import { useOAuthCallbackCompletion as j } from "./oauth/useOAuthCallbackCompletion/useOAuthCallbackCompletion.js";
10
+ export { e as OAuthResourceKind, t as TOOLSET_REDIRECT_STATE_KEY, n as ToolsetAuthStatus, r as ToolsetAuthTypes, i as ToolsetCredentialsLevel, O as ToolsetLoginOutcomeType, a as ToolsetOAuthCallbackQuery, o as ToolsetOAuthChannelControlType, s as ToolsetOAuthFailureReason, c as ToolsetOAuthInitiationResultType, l as ToolsetOAuthResultType, u as WithLogin, v as buildToolsetAuthorizeUrl, A as createOAuthCallbackExchange, d as decodeToolsetId, x as emitToolsetLoginSuccess, f as encodeToolsetId, p as getToolsetFallbackName, C as getToolsetOAuthChannelName, y as getToolsetRedirectUri, T as initiateOAuthLogin, m as isPublicToolsetId, E as navigateToolsetOAuthPopup, h as normalizeToolsetId, D as openToolsetOAuthPopup, g as resolveToolsetCredentialsLevel, _ as selectToolsetAuthStatus, S as subscribeToolsetLoginSuccess, b as toToolsetOAuthSettings, j as useOAuthCallbackCompletion, k as useToolsetLogin, w as waitForToolsetOAuthResult };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@epam/ai-dial-chat-hooks",
3
3
  "description": "Framework-level React hooks extracted from AI DIAL Chat for building custom chat interfaces",
4
- "version": "1.3.0-dev.326",
4
+ "version": "1.3.0-dev.331",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "main": "./index.js",
@@ -131,7 +131,7 @@
131
131
  }
132
132
  },
133
133
  "dependencies": {
134
- "@epam/ai-dial-chat-api-client": "1.3.0-dev.326",
134
+ "@epam/ai-dial-chat-api-client": "1.3.0-dev.331",
135
135
  "dompurify": "3.4.17",
136
136
  "fflate": "^0.8.3",
137
137
  "lru-cache": "^10.4.3",
@@ -140,23 +140,23 @@
140
140
  },
141
141
  "peerDependencies": {
142
142
  "react": "^19.2.8",
143
- "@epam/ai-dial-attachment-canvas": "1.3.0-dev.326",
144
- "@epam/ai-dial-attachment-input": "1.3.0-dev.326",
145
- "@epam/ai-dial-catalog": "1.3.0-dev.326",
146
- "@epam/ai-dial-chat-overlay": "1.3.0-dev.326",
147
- "@epam/ai-dial-chat-shared": "1.3.0-dev.326",
148
- "@epam/ai-dial-conversation-input": "1.3.0-dev.326",
149
- "@epam/ai-dial-mcp-apps": "1.3.0-dev.326",
150
- "@epam/ai-dial-projects": "1.3.0-dev.326",
151
- "@epam/ai-dial-publish-panel": "1.3.0-dev.326",
152
- "@epam/ai-dial-quotations": "1.3.0-dev.326",
143
+ "@epam/ai-dial-attachment-canvas": "1.3.0-dev.331",
144
+ "@epam/ai-dial-attachment-input": "1.3.0-dev.331",
145
+ "@epam/ai-dial-catalog": "1.3.0-dev.331",
146
+ "@epam/ai-dial-chat-overlay": "1.3.0-dev.331",
147
+ "@epam/ai-dial-chat-shared": "1.3.0-dev.331",
148
+ "@epam/ai-dial-conversation-input": "1.3.0-dev.331",
149
+ "@epam/ai-dial-mcp-apps": "1.3.0-dev.331",
150
+ "@epam/ai-dial-projects": "1.3.0-dev.331",
151
+ "@epam/ai-dial-publish-panel": "1.3.0-dev.331",
152
+ "@epam/ai-dial-quotations": "1.3.0-dev.331",
153
153
  "@epam/ai-dial-react-file-manager": "^0.4.0-dev.25",
154
- "@epam/ai-dial-scheduled-tasks": "1.3.0-dev.326",
155
- "@epam/ai-dial-share": "1.3.0-dev.326",
156
- "@epam/ai-dial-skill-editor": "1.3.0-dev.326",
157
- "@epam/ai-dial-source-panel": "1.3.0-dev.326",
154
+ "@epam/ai-dial-scheduled-tasks": "1.3.0-dev.331",
155
+ "@epam/ai-dial-share": "1.3.0-dev.331",
156
+ "@epam/ai-dial-skill-editor": "1.3.0-dev.331",
157
+ "@epam/ai-dial-source-panel": "1.3.0-dev.331",
158
158
  "@epam/ai-dial-ui-kit": "^0.16.0-dev.72",
159
- "@epam/ai-dial-usage-dashboard": "1.3.0-dev.326",
159
+ "@epam/ai-dial-usage-dashboard": "1.3.0-dev.331",
160
160
  "@modelcontextprotocol/sdk": "^1.32.2",
161
161
  "@epam/pdf-highlighter-kit": "^0.0.19"
162
162
  },
@@ -4,7 +4,6 @@ export declare enum ScheduledTaskTriggerDescriptionKind {
4
4
  OneTime = "oneTime",
5
5
  Hourly = "hourly",
6
6
  EveryNMinutes = "everyNMinutes",
7
- EveryNWeeks = "everyNWeeks",
8
7
  Daily = "daily",
9
8
  Weekly = "weekly",
10
9
  Monthly = "monthly",
@@ -15,10 +14,10 @@ export interface ScheduledTaskTriggerDescription {
15
14
  kind: ScheduledTaskTriggerDescriptionKind;
16
15
  time?: string;
17
16
  dayOfWeek?: string;
17
+ /** Every display-timezone weekday of a `Weekly` description, Monday first; `dayOfWeek` is its first entry. */
18
+ daysOfWeek?: string[];
18
19
  dayOfMonth?: string;
19
20
  intervalMinutes?: number;
20
- /** Week count of an `EveryNWeeks` description (the cron `week` step). */
21
- intervalWeeks?: number;
22
21
  date?: Date;
23
22
  expression?: string;
24
23
  sourceTimezone: 'utc';
@@ -1 +1 @@
1
- {"version":3,"file":"scheduled-task-description.d.ts","sourceRoot":"","sources":["../../src/scheduled-task/scheduled-task-description.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGxE,8DAA8D;AAC9D,oBAAY,mCAAmC;IAC7C,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,aAAa,kBAAkB;IAC/B,WAAW,gBAAgB;IAC3B,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,mCAAmC,CAAC;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,KAAK,CAAC;CACvB;AAED,MAAM,WAAW,sCAAsC;IACrD,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6FAA6F;IAC7F,aAAa,CAAC,EAAE,IAAI,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,GACvC,SAAS,kBAAkB,EAC3B,+BAGG,sCAA2C,KAC7C,+BAkLF,CAAC"}
1
+ {"version":3,"file":"scheduled-task-description.d.ts","sourceRoot":"","sources":["../../src/scheduled-task/scheduled-task-description.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGxE,8DAA8D;AAC9D,oBAAY,mCAAmC;IAC7C,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,aAAa,kBAAkB;IAC/B,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,mCAAmC,CAAC;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8GAA8G;IAC9G,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,KAAK,CAAC;CACvB;AAED,MAAM,WAAW,sCAAsC;IACrD,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6FAA6F;IAC7F,aAAa,CAAC,EAAE,IAAI,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,GACvC,SAAS,kBAAkB,EAC3B,+BAGG,sCAA2C,KAC7C,+BAuKF,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { CRON_LAST_DAY_OF_MONTH as e } from "../shared/cron-day-of-month.js";
2
2
  //#region src/scheduled-task/scheduled-task-description.ts
3
3
  var t = /* @__PURE__ */ function(e) {
4
- return e.OneTime = "oneTime", e.Hourly = "hourly", e.EveryNMinutes = "everyNMinutes", e.EveryNWeeks = "everyNWeeks", e.Daily = "daily", e.Weekly = "weekly", e.Monthly = "monthly", e.Custom = "custom", e.Invalid = "invalid", e;
4
+ return e.OneTime = "oneTime", e.Hourly = "hourly", e.EveryNMinutes = "everyNMinutes", e.Daily = "daily", e.Weekly = "weekly", e.Monthly = "monthly", e.Custom = "custom", e.Invalid = "invalid", e;
5
5
  }({}), n = (t, { timeZone: n = "UTC", referenceDate: r = /* @__PURE__ */ new Date() } = {}) => {
6
6
  let i = (e, t = {}) => ({
7
7
  kind: e,
@@ -15,7 +15,7 @@ var t = /* @__PURE__ */ function(e) {
15
15
  }
16
16
  let a = t.cron?.fields;
17
17
  if (!a || Object.keys(a).length === 0) return i("invalid");
18
- let o = () => i("custom", { expression: JSON.stringify(a) }), s = a.week?.match(/^\*\/(10|[1-9])$/), c = {
18
+ let o = () => i("custom", { expression: JSON.stringify(a) }), s = {
19
19
  hour: [0, 23],
20
20
  minute: [0, 59],
21
21
  day: [1, 31],
@@ -26,19 +26,16 @@ var t = /* @__PURE__ */ function(e) {
26
26
  for (let [e, t] of Object.entries(a)) {
27
27
  if (t == null) continue;
28
28
  if (!t.trim()) return i("invalid");
29
- let n = c[e];
29
+ let n = s[e];
30
30
  if (n && /^-?\d+$/.test(t) && (Number(t) < n[0] || Number(t) > n[1])) return i("invalid");
31
- if (e === "second" && t !== "0") return o();
32
- if (e === "week") {
33
- if (!s) return o();
34
- } else if (![
31
+ if (e === "second" && t !== "0" || ![
35
32
  "hour",
36
33
  "minute",
37
34
  "day",
38
35
  "day_of_week"
39
36
  ].includes(e) && t !== "*" && (e !== "second" || t !== "0")) return o();
40
37
  }
41
- let l = a.hour, u = a.minute, d = a.day === "*" ? void 0 : a.day, f = d === e, p = a.day_of_week === "*" ? void 0 : a.day_of_week, m = p ? [
38
+ let c = a.hour, l = a.minute, u = a.day === "*" ? void 0 : a.day, d = u === e, f = a.day_of_week === "*" ? void 0 : a.day_of_week, p = [
42
39
  "monday",
43
40
  "tuesday",
44
41
  "wednesday",
@@ -46,19 +43,20 @@ var t = /* @__PURE__ */ function(e) {
46
43
  "friday",
47
44
  "saturday",
48
45
  "sunday"
49
- ].findIndex((e) => e === p.toLowerCase() || e.slice(0, 3) === p.toLowerCase()) : -1, h = m >= 0 ? String(m) : p;
50
- if (d && h || d && !f && !/^\d+$/.test(d) || h && !/^\d+$/.test(h)) return o();
51
- let g = l == null || l === "*";
52
- if (s && (g || !h || d)) return o();
53
- let _ = u?.match(/^\*\/(\d+)$/);
54
- if (g && _ && !d && !h) {
46
+ ], m = (f?.split(",") ?? []).map((e) => {
47
+ let t = p.findIndex((t) => t === e.toLowerCase() || t.slice(0, 3) === e.toLowerCase());
48
+ return t >= 0 ? String(t) : e;
49
+ }), h = m[0];
50
+ if (u && h || u && !d && !/^\d+$/.test(u) || m.some((e) => !/^[0-6]$/.test(e)) || new Set(m).size !== m.length) return o();
51
+ let g = c == null || c === "*", _ = l?.match(/^\*\/(\d+)$/);
52
+ if (g && _ && !u && !h) {
55
53
  let e = Number(_[1]);
56
54
  return e > 0 && e <= 59 ? i("everyNMinutes", { intervalMinutes: e }) : i("invalid");
57
55
  }
58
- if (!u || !/^\d+$/.test(u) || !g && !/^\d+$/.test(l) || g && (d || h)) return o();
56
+ if (!l || !/^\d+$/.test(l) || !g && !/^\d+$/.test(c) || g && (u || h)) return o();
59
57
  let v = new Date(r);
60
58
  if (Number.isNaN(v.getTime())) return i("invalid");
61
- if (v.setUTCHours(g ? 0 : Number(l), Number(u), 0, 0), h) {
59
+ if (v.setUTCHours(g ? 0 : Number(c), Number(l), 0, 0), h) {
62
60
  let e = (Number(h) + 1) % 7;
63
61
  v.setUTCDate(v.getUTCDate() + (e - v.getUTCDay() + 7) % 7);
64
62
  }
@@ -71,19 +69,21 @@ var t = /* @__PURE__ */ function(e) {
71
69
  hour: "2-digit",
72
70
  minute: "2-digit"
73
71
  }).formatToParts(v), b = (e) => y.find((t) => t.type === e)?.value ?? "", x = new Date(Date.UTC(Number(b("year")), Number(b("month")) - 1, Number(b("day")))), S = Date.UTC(v.getUTCFullYear(), v.getUTCMonth(), v.getUTCDate()), C = Math.round((x.getTime() - S) / 864e5), w = b("hour") + ":" + b("minute");
74
- return s ? i("everyNWeeks", {
75
- intervalWeeks: Number(s[1]),
76
- time: w,
77
- dayOfWeek: String((Number(h) + C + 7) % 7)
78
- }) : g ? i("hourly", { time: b("minute") }) : h ? i("weekly", {
79
- time: w,
80
- dayOfWeek: String((Number(h) + C + 7) % 7)
81
- }) : f ? C === 1 ? i("monthly", {
72
+ if (g) return i("hourly", { time: b("minute") });
73
+ if (h) {
74
+ let e = m.map((e) => String((Number(e) + C + 7) % 7)).sort((e, t) => Number(e) - Number(t));
75
+ return i("weekly", {
76
+ time: w,
77
+ dayOfWeek: e[0],
78
+ daysOfWeek: e
79
+ });
80
+ }
81
+ return d ? C === 1 ? i("monthly", {
82
82
  time: w,
83
83
  dayOfMonth: "1"
84
- }) : o() : d ? C === 0 || Number(d) <= 28 && Number(d) + C >= 1 && Number(d) + C <= 28 ? i("monthly", {
84
+ }) : o() : u ? C === 0 || Number(u) <= 28 && Number(u) + C >= 1 && Number(u) + C <= 28 ? i("monthly", {
85
85
  time: w,
86
- dayOfMonth: String(Number(d) + C)
86
+ dayOfMonth: String(Number(u) + C)
87
87
  }) : o() : i("daily", { time: w });
88
88
  };
89
89
  //#endregion
@@ -11,10 +11,8 @@ export interface ScheduledTaskScheduleLabels {
11
11
  hourlyAt: (minute: string) => string;
12
12
  /** A daily run at `time` (`HH:mm`). */
13
13
  dailyAt: (time: string) => string;
14
- /** A weekly run on the weekday name `day` at `time`. */
14
+ /** A weekly run on `day` — one weekday name, or several joined as a locale list — at `time`. */
15
15
  weeklyAt: (day: string, time: string) => string;
16
- /** A run every `count` weeks on the weekday name `day` at `time`. */
17
- everyNWeeks: (count: number, day: string, time: string) => string;
18
16
  /** A monthly run on day-of-month `day` at `time`. */
19
17
  monthlyAt: (day: string, time: string) => string;
20
18
  /** Label for a trigger that cannot be read. */
@@ -1 +1 @@
1
- {"version":3,"file":"scheduled-task-display.d.ts","sourceRoot":"","sources":["../../src/scheduled-task/scheduled-task-display.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scheduled-task-display.d.ts","sourceRoot":"","sources":["../../src/scheduled-task/scheduled-task-display.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ var a = /* @__PURE__ */ function(e) {
7
7
  }({}), o = 60, s = 3600, c = (e, t) => new Intl.DateTimeFormat(t, {
8
8
  weekday: "long",
9
9
  timeZone: "UTC"
10
- }).format(new Date(Date.UTC(2023, 0, 2 + Number(e)))), l = (e, t) => e.getFullYear() === t.getFullYear() && e.getMonth() === t.getMonth() && e.getDate() === t.getDate(), u = (n, r, { locale: i, timeZone: a = Intl.DateTimeFormat().resolvedOptions().timeZone } = {}) => {
10
+ }).format(new Date(Date.UTC(2023, 0, 2 + Number(e)))), l = (e, t) => new Intl.ListFormat(t, { type: "conjunction" }).format(e.map((e) => c(e, t))), u = (e, t) => e.getFullYear() === t.getFullYear() && e.getMonth() === t.getMonth() && e.getDate() === t.getDate(), d = (n, r, { locale: i, timeZone: a = Intl.DateTimeFormat().resolvedOptions().timeZone } = {}) => {
11
11
  let o = t(n.trigger, { timeZone: a }), s = o.time ?? "";
12
12
  switch (o.kind) {
13
13
  case e.OneTime: return r.onceAt(new Intl.DateTimeFormat(i, {
@@ -17,20 +17,19 @@ var a = /* @__PURE__ */ function(e) {
17
17
  case e.EveryNMinutes: return r.everyNMinutes(o.intervalMinutes ?? 0);
18
18
  case e.Hourly: return r.hourlyAt(s);
19
19
  case e.Daily: return r.dailyAt(s);
20
- case e.Weekly: return r.weeklyAt(c(o.dayOfWeek, i), s);
21
- case e.EveryNWeeks: return r.everyNWeeks(o.intervalWeeks ?? 0, c(o.dayOfWeek, i), s);
20
+ case e.Weekly: return r.weeklyAt(l(o.daysOfWeek ?? [o.dayOfWeek ?? ""], i), s);
22
21
  case e.Monthly: return r.monthlyAt(o.dayOfMonth ?? "", s);
23
22
  case e.Invalid: return r.invalid;
24
23
  default: return r.recurringFallback;
25
24
  }
26
- }, d = (e, t, n) => ({
25
+ }, f = (e, t, n) => ({
27
26
  id: e.id,
28
27
  displayName: e.displayName,
29
28
  descriptionPreview: e.description,
30
- scheduleLabel: u(e, t, n),
29
+ scheduleLabel: d(e, t, n),
31
30
  isActive: e.isActive,
32
31
  isCompleted: e.isCompleted
33
- }), f = (e, t, n) => e.map((e) => d(e, t, n)), p = (e, t) => {
32
+ }), p = (e, t, n) => e.map((e) => f(e, t, n)), m = (e, t) => {
34
33
  if (e == null) return;
35
34
  let n = [
36
35
  [Math.floor(e / s), t.hours],
@@ -38,33 +37,33 @@ var a = /* @__PURE__ */ function(e) {
38
37
  [e % o, t.seconds]
39
38
  ].filter(([e]) => e > 0).map(([e, t]) => t(e));
40
39
  return t.suffix(n.length ? n.join(" ") : t.seconds(0));
41
- }, m = (e, t, n, { durationLabels: r, locale: i, now: a = /* @__PURE__ */ new Date() } = {}) => {
42
- let o = new Date(e), s = new Intl.DateTimeFormat(i, { timeStyle: "short" }).format(o), c = l(o, a) ? n.todayAt(s) : n.dateAt(new Intl.DateTimeFormat(i, {
40
+ }, h = (e, t, n, { durationLabels: r, locale: i, now: a = /* @__PURE__ */ new Date() } = {}) => {
41
+ let o = new Date(e), s = new Intl.DateTimeFormat(i, { timeStyle: "short" }).format(o), c = u(o, a) ? n.todayAt(s) : n.dateAt(new Intl.DateTimeFormat(i, {
43
42
  month: "short",
44
43
  day: "numeric"
45
- }).format(o), s), u = r ? p(t, r) : void 0;
46
- return u ? `${c} ${u}` : c;
47
- }, h = (e) => {
44
+ }).format(o), s), l = r ? m(t, r) : void 0;
45
+ return l ? `${c} ${l}` : c;
46
+ }, g = (e) => {
48
47
  switch (e) {
49
48
  case r.Success: return i.Success;
50
49
  case r.Error: return i.Error;
51
50
  case r.InProgress: return i.InProgress;
52
51
  default: return i.Missed;
53
52
  }
54
- }, g = (e, { timestampLabels: t, durationLabels: n, conversations: r, conversationIdsMatch: i, locale: a, now: o }) => {
53
+ }, _ = (e, { timestampLabels: t, durationLabels: n, conversations: r, conversationIdsMatch: i, locale: a, now: o }) => {
55
54
  let { conversationId: s } = e, c = s ? r.find((e) => i(e.id, s)) : void 0;
56
55
  return {
57
56
  id: e.id,
58
- status: h(e.status),
59
- timestampLabel: m(e.startTime, void 0, t, {
57
+ status: g(e.status),
58
+ timestampLabel: h(e.startTime, void 0, t, {
60
59
  locale: a,
61
60
  now: o
62
61
  }),
63
- durationLabel: p(e.durationSeconds, n),
62
+ durationLabel: m(e.durationSeconds, n),
64
63
  conversationId: s,
65
64
  isUnread: c?.isUnread === !0,
66
65
  errorText: e.errorText
67
66
  };
68
- }, _ = (e, t) => e.map((e) => g(e, t)), v = (e) => e === 404 || e === 409 ? "notFound" : e === 502 ? "retryable" : "generic", y = (e, { adminConsentRequired: t, fallback: r }) => e.code === n.ScheduledTaskAdminConsentRequired ? t : e.upstreamMessage?.trim() || r;
67
+ }, v = (e, t) => e.map((e) => _(e, t)), y = (e) => e === 404 || e === 409 ? "notFound" : e === 502 ? "retryable" : "generic", b = (e, { adminConsentRequired: t, fallback: r }) => e.code === n.ScheduledTaskAdminConsentRequired ? t : e.upstreamMessage?.trim() || r;
69
68
  //#endregion
70
- export { a as ScheduledTaskDeleteErrorKind, v as classifyScheduledTaskDeleteError, p as formatScheduledTaskRunDuration, m as formatScheduledTaskRunTimestamp, u as formatScheduledTaskScheduleLabel, y as selectScheduledTaskErrorMessage, d as toScheduledTaskItem, f as toScheduledTaskItems, g as toScheduledTaskRunItem, _ as toScheduledTaskRunItems };
69
+ export { a as ScheduledTaskDeleteErrorKind, y as classifyScheduledTaskDeleteError, m as formatScheduledTaskRunDuration, h as formatScheduledTaskRunTimestamp, d as formatScheduledTaskScheduleLabel, b as selectScheduledTaskErrorMessage, f as toScheduledTaskItem, p as toScheduledTaskItems, _ as toScheduledTaskRunItem, v as toScheduledTaskRunItems };
@@ -1,9 +1,9 @@
1
1
  import { ScheduleCronDto } from '@epam/ai-dial-chat-api-client';
2
2
  /**
3
3
  * Returns the next UTC time at which a cron trigger with a fixed
4
- * `hour`/`minute` fires, honouring its `day_of_week` (Weekly) or `day`
5
- * (Monthly) constraint. Returns `undefined` when the fields are not plain
6
- * values this helper can evaluate.
4
+ * `hour`/`minute` fires, honouring its `day_of_week` (a weekday or a comma
5
+ * list of weekdays) or `day` (Monthly) constraint. Returns `undefined` when
6
+ * the fields are not plain values this helper can evaluate.
7
7
  */
8
8
  export declare const getNextCronOccurrence: (cron: ScheduleCronDto, from?: Date) => Date | undefined;
9
9
  //# sourceMappingURL=scheduled-task-next-occurrence.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scheduled-task-next-occurrence.d.ts","sourceRoot":"","sources":["../../src/scheduled-task/scheduled-task-next-occurrence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AA2BrE;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAM,eAAe,EACrB,OAAM,IAAiB,KACtB,IAAI,GAAG,SA4BT,CAAC"}
1
+ {"version":3,"file":"scheduled-task-next-occurrence.d.ts","sourceRoot":"","sources":["../../src/scheduled-task/scheduled-task-next-occurrence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AA6BrE;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAM,eAAe,EACrB,OAAM,IAAiB,KACtB,IAAI,GAAG,SA4BT,CAAC"}
@@ -1,6 +1,6 @@
1
1
  //#region src/scheduled-task/scheduled-task-next-occurrence.ts
2
2
  var e = "last", t = /^\d+$/, n = (t, n, r) => {
3
- if (n != null) return (Number(n) + 1) % 7 === t.getUTCDay();
3
+ if (n != null) return n.split(",").some((e) => (Number(e) + 1) % 7 === t.getUTCDay());
4
4
  if (r === e) {
5
5
  let e = new Date(t);
6
6
  return e.setUTCDate(t.getUTCDate() + 1), e.getUTCDate() === 1;
@@ -8,7 +8,7 @@ var e = "last", t = /^\d+$/, n = (t, n, r) => {
8
8
  return r == null || Number(r) === t.getUTCDate();
9
9
  }, r = (r, i = /* @__PURE__ */ new Date()) => {
10
10
  let { hour: a, minute: o, day_of_week: s, day: c } = r.fields;
11
- if (!a || !o || !t.test(a) || !t.test(o) || s != null && !/^[0-6]$/.test(s) || c != null && c !== e && !t.test(c)) return;
11
+ if (!a || !o || !t.test(a) || !t.test(o) || s != null && !/^[0-6](?:,[0-6])*$/.test(s) || c != null && c !== e && !t.test(c)) return;
12
12
  let l = new Date(i);
13
13
  l.setUTCHours(Number(a), Number(o), 0, 0);
14
14
  for (let e = 0; e <= 366; e++) {
@@ -1 +1 @@
1
- {"version":3,"file":"scheduled-task-trigger.d.ts","sourceRoot":"","sources":["../../src/scheduled-task/scheduled-task-trigger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,gBAAgB,EAEhB,0BAA0B,EAC3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,6BAA6B,EAE9B,MAAM,+BAA+B,CAAC;AAWvC,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,0BAA0B,CAAC;AAuHlC;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,GACpC,QAAQ,6BAA6B,KACpC,0BAwCF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,GACpC,QAAQ,6BAA6B,KACpC,0BAGD,CAAC;AAsKH;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,GAC1C,KAAK,gBAAgB,KACpB,6BAoHF,CAAC"}
1
+ {"version":3,"file":"scheduled-task-trigger.d.ts","sourceRoot":"","sources":["../../src/scheduled-task/scheduled-task-trigger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,gBAAgB,EAEhB,0BAA0B,EAC3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,6BAA6B,EAE9B,MAAM,+BAA+B,CAAC;AAWvC,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,0BAA0B,CAAC;AAgIlC;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,GACpC,QAAQ,6BAA6B,KACpC,0BAsCF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,GACpC,QAAQ,6BAA6B,KACpC,0BAGD,CAAC;AAoJH;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,GAC1C,KAAK,gBAAgB,KACpB,6BA8GF,CAAC"}
@@ -9,7 +9,7 @@ var c = /* @__PURE__ */ new Set([
9
9
  "minute",
10
10
  "day_of_week",
11
11
  "day"
12
- ]), l = /^\*\/(10|[1-9])$/, u = "09:00", d = (e) => {
12
+ ]), l = /^[0-6]$/, u = (e) => [...e].sort((e, t) => Number(e) - Number(t)), d = "09:00", f = (e) => {
13
13
  if (e.repeat === s.Hourly) {
14
14
  let t = /* @__PURE__ */ new Date();
15
15
  return t.setHours(0, Number(e.minute), 0, 0), {
@@ -17,26 +17,30 @@ var c = /* @__PURE__ */ new Set([
17
17
  minute: String(t.getUTCMinutes())
18
18
  };
19
19
  }
20
- let [t, r] = e.time.split(":"), c = Number(t), l = Number(r), u = /* @__PURE__ */ new Date();
21
- u.setHours(c, l, 0, 0);
22
- let d = (e.repeat === s.Weekly || e.repeat === s.Custom) && !!e.dayOfWeek, f = e.repeat === s.Monthly && !!e.dayOfMonth;
23
- if (d) {
24
- let t = (a(Number(e.dayOfWeek)) - u.getDay() + 7) % 7;
25
- u.setDate(u.getDate() + t);
20
+ let [t, r] = e.time.split(":"), c = Number(t), l = Number(r), d = /* @__PURE__ */ new Date();
21
+ d.setHours(c, l, 0, 0);
22
+ let f = e.repeat === s.Weekly && !!e.dayOfWeek, p = e.repeat === s.Custom ? u(e.daysOfWeek ?? []) : [], m = e.repeat === s.Monthly && !!e.dayOfMonth, h = f ? e.dayOfWeek : p[0];
23
+ if (h !== void 0) {
24
+ let e = (a(Number(h)) - d.getDay() + 7) % 7;
25
+ d.setDate(d.getDate() + e);
26
26
  }
27
- let p = {
28
- hour: String(u.getUTCHours()),
29
- minute: String(u.getUTCMinutes())
27
+ let g = {
28
+ hour: String(d.getUTCHours()),
29
+ minute: String(d.getUTCMinutes())
30
30
  };
31
- return d && (p.day_of_week = String(o(u.getUTCDay()))), f && (p.day = i(Number(e.dayOfMonth), n(u))), e.repeat === s.Custom && (p.week = `*/${e.everyWeeks ?? "1"}`), p;
32
- }, f = (e, t) => {
31
+ if (f && (g.day_of_week = String(o(d.getUTCDay()))), m && (g.day = i(Number(e.dayOfMonth), n(d))), p.length) {
32
+ let e = n(d);
33
+ g.day_of_week = u(p.map((t) => String((Number(t) + e + 7) % 7))).join(",");
34
+ }
35
+ return g;
36
+ }, p = (e, t) => {
33
37
  let [n, r, i] = e.split("-").map(Number), a = new Date(n, r - 1, i);
34
38
  return t === "start" ? a.setHours(0, 0, 0, 0) : a.setHours(23, 59, 59, 999), a.toISOString();
35
- }, p = (e) => {
39
+ }, m = (e) => {
36
40
  let t = e.repeat === s.OneTime ? { date: new Date(e.runAt ?? "").toISOString() } : { cron: {
37
- fields: d(e),
38
- ...e.repeat !== s.Custom && e.startDate ? { startDate: f(e.startDate, "start") } : {},
39
- ...e.repeat !== s.Custom && e.endDate ? { endDate: f(e.endDate, "end") } : {}
41
+ fields: f(e),
42
+ ...e.startDate ? { startDate: p(e.startDate, "start") } : {},
43
+ ...e.endDate ? { endDate: p(e.endDate, "end") } : {}
40
44
  } }, n = e.description?.trim();
41
45
  return {
42
46
  displayName: e.displayName.trim(),
@@ -46,36 +50,19 @@ var c = /* @__PURE__ */ new Set([
46
50
  ...e.skillUrls?.length ? { skillUrls: [...new Set(e.skillUrls)] } : {},
47
51
  ...n ? { description: n } : {}
48
52
  };
49
- }, m = (e) => ({
50
- ...p(e),
53
+ }, h = (e) => ({
54
+ ...m(e),
51
55
  skillUrls: [...new Set(e.skillUrls ?? [])]
52
- }), h = (t) => {
56
+ }), g = (t) => {
53
57
  let n = new Date(t);
54
58
  return `${n.getFullYear()}-${e(n.getMonth() + 1)}-${e(n.getDate())}T${e(n.getHours())}:${e(n.getMinutes())}`;
55
- }, g = (t) => {
59
+ }, _ = (t) => {
56
60
  let n = new Date(t);
57
61
  return `${n.getFullYear()}-${e(n.getMonth() + 1)}-${e(n.getDate())}`;
58
- }, _ = (t) => {
59
- let i = new Set(Object.entries(t).filter(([, e]) => e != null).map(([e]) => e)), s = [...i].filter((e) => !c.has(e)), u = i.has("day_of_week"), d = i.has("day");
60
- if (i.has("week")) {
61
- let n = t.week?.match(l);
62
- if (n && s.every((e) => e === "week") && u && !d && /^\d+$/.test(String(t.day_of_week)) && /^\d+$/.test(String(t.hour)) && /^\d+$/.test(String(t.minute))) {
63
- let r = Number(t.hour), i = Number(t.minute), s = Number(t.day_of_week), c = /* @__PURE__ */ new Date();
64
- c.setUTCHours(r, i, 0, 0);
65
- let l = (a(s) - c.getUTCDay() + 7) % 7;
66
- return c.setUTCDate(c.getUTCDate() + l), {
67
- ok: !0,
68
- isHourly: !1,
69
- isCustom: !0,
70
- everyWeeks: n[1],
71
- time: `${e(c.getHours())}:${e(c.getMinutes())}`,
72
- dayOfWeek: String(o(c.getDay()))
73
- };
74
- }
75
- return { ok: !1 };
76
- }
77
- if (s.length > 0 || u && d || !i.has("hour") || !i.has("minute")) return { ok: !1 };
78
- if (t.hour === "*" && /^\d+$/.test(String(t.minute)) && !u && !d) {
62
+ }, v = (t) => {
63
+ let i = new Set(Object.entries(t).filter(([, e]) => e != null).map(([e]) => e)), s = [...i].filter((e) => !c.has(e)), d = i.has("day_of_week"), f = i.has("day");
64
+ if (s.length > 0 || d && f || !i.has("hour") || !i.has("minute")) return { ok: !1 };
65
+ if (t.hour === "*" && /^\d+$/.test(String(t.minute)) && !d && !f) {
79
66
  let e = /* @__PURE__ */ new Date();
80
67
  return e.setUTCHours(0, Number(t.minute), 0, 0), {
81
68
  ok: !0,
@@ -83,24 +70,36 @@ var c = /* @__PURE__ */ new Set([
83
70
  minute: String(e.getMinutes())
84
71
  };
85
72
  }
86
- let f = Number(t.hour), p = Number(t.minute);
87
- if (Number.isNaN(f) || Number.isNaN(p)) return { ok: !1 };
88
- let m = /* @__PURE__ */ new Date();
89
- if (m.setUTCHours(f, p, 0, 0), u) {
90
- let e = Number(t.day_of_week);
91
- if (Number.isNaN(e)) return { ok: !1 };
92
- let n = (a(e) - m.getUTCDay() + 7) % 7;
93
- m.setUTCDate(m.getUTCDate() + n);
73
+ let p = Number(t.hour), m = Number(t.minute);
74
+ if (Number.isNaN(p) || Number.isNaN(m)) return { ok: !1 };
75
+ let h = /* @__PURE__ */ new Date();
76
+ h.setUTCHours(p, m, 0, 0);
77
+ let g = d ? String(t.day_of_week).split(",") : [];
78
+ if (g.some((e) => !l.test(e)) || new Set(g).size !== g.length) return { ok: !1 };
79
+ if (g.length) {
80
+ let e = (a(Number(g[0])) - h.getUTCDay() + 7) % 7;
81
+ h.setUTCDate(h.getUTCDate() + e);
94
82
  }
95
- let h = d ? r(String(t.day), n(m)) : void 0;
96
- return d && !h ? { ok: !1 } : {
83
+ let _ = `${e(h.getHours())}:${e(h.getMinutes())}`;
84
+ if (g.length > 1) {
85
+ let e = n(h);
86
+ return {
87
+ ok: !0,
88
+ isHourly: !1,
89
+ isCustom: !0,
90
+ time: _,
91
+ daysOfWeek: u(g.map((t) => String((Number(t) - e + 7) % 7)))
92
+ };
93
+ }
94
+ let v = f ? r(String(t.day), n(h)) : void 0;
95
+ return f && !v ? { ok: !1 } : {
97
96
  ok: !0,
98
97
  isHourly: !1,
99
- time: `${e(m.getHours())}:${e(m.getMinutes())}`,
100
- ...u ? { dayOfWeek: String(o(m.getDay())) } : {},
101
- ...h ? { dayOfMonth: h } : {}
98
+ time: _,
99
+ ...d ? { dayOfWeek: String(o(h.getDay())) } : {},
100
+ ...v ? { dayOfMonth: v } : {}
102
101
  };
103
- }, v = (e) => {
102
+ }, y = (e) => {
104
103
  if (!e.model || typeof e.prompt != "string" || !e.prompt.trim() && !e.skillUrls?.length) return {
105
104
  ok: !1,
106
105
  reason: t.MissingRequiredFields
@@ -122,15 +121,15 @@ var c = /* @__PURE__ */ new Set([
122
121
  values: {
123
122
  ...a,
124
123
  repeat: s.OneTime,
125
- runAt: h(n),
126
- time: u
124
+ runAt: g(n),
125
+ time: d
127
126
  }
128
127
  };
129
128
  if (!r) return {
130
129
  ok: !1,
131
130
  reason: t.UnsupportedTriggerType
132
131
  };
133
- let o = _(r.fields);
132
+ let o = v(r.fields);
134
133
  if (!o.ok) return {
135
134
  ok: !1,
136
135
  reason: t.UnsupportedCronShape
@@ -140,23 +139,21 @@ var c = /* @__PURE__ */ new Set([
140
139
  values: {
141
140
  ...a,
142
141
  repeat: s.Hourly,
143
- time: u,
142
+ time: d,
144
143
  minute: o.minute,
145
- ...r.startDate ? { startDate: g(r.startDate) } : {},
146
- ...r.endDate ? { endDate: g(r.endDate) } : {}
144
+ ...r.startDate ? { startDate: _(r.startDate) } : {},
145
+ ...r.endDate ? { endDate: _(r.endDate) } : {}
147
146
  }
148
147
  };
149
- if (o.isCustom) return r.startDate || r.endDate ? {
150
- ok: !1,
151
- reason: t.UnsupportedCronShape
152
- } : {
148
+ if (o.isCustom) return {
153
149
  ok: !0,
154
150
  values: {
155
151
  ...a,
156
152
  repeat: s.Custom,
157
153
  time: o.time,
158
- everyWeeks: o.everyWeeks,
159
- dayOfWeek: o.dayOfWeek
154
+ daysOfWeek: o.daysOfWeek,
155
+ ...r.startDate ? { startDate: _(r.startDate) } : {},
156
+ ...r.endDate ? { endDate: _(r.endDate) } : {}
160
157
  }
161
158
  };
162
159
  let c = s.Daily;
@@ -168,10 +165,10 @@ var c = /* @__PURE__ */ new Set([
168
165
  time: o.time,
169
166
  ...o.dayOfWeek ? { dayOfWeek: o.dayOfWeek } : {},
170
167
  ...o.dayOfMonth ? { dayOfMonth: o.dayOfMonth } : {},
171
- ...r.startDate ? { startDate: g(r.startDate) } : {},
172
- ...r.endDate ? { endDate: g(r.endDate) } : {}
168
+ ...r.startDate ? { startDate: _(r.startDate) } : {},
169
+ ...r.endDate ? { endDate: _(r.endDate) } : {}
173
170
  }
174
171
  };
175
172
  };
176
173
  //#endregion
177
- export { p as mapFormValuesToCreateBody, m as mapFormValuesToUpdateBody, v as mapScheduledTaskDtoToFormValues };
174
+ export { m as mapFormValuesToCreateBody, h as mapFormValuesToUpdateBody, y as mapScheduledTaskDtoToFormValues };