@epam/ai-dial-chat-hooks 1.3.0-dev.204 → 1.3.0-dev.209

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.
@@ -19,7 +19,7 @@ export interface MapSkillToCatalogItemOptions {
19
19
  * relative path can exist in both.
20
20
  */
21
21
  export declare const mapSkillToCatalogItem: (skill: SkillMetadataItemDto, { folderLabels, source, favoriteIds }: MapSkillToCatalogItemOptions) => CatalogItem;
22
- /** Translated labels for the skill Overview tab's Specification/Details sections. */
22
+ /** Translated labels for the skill Overview tab's Specification section. */
23
23
  export interface SkillOverviewLabels {
24
24
  whenToUseLabel: string;
25
25
  allowedToolsLabel: string;
@@ -28,7 +28,6 @@ export interface SkillOverviewLabels {
28
28
  authorLabel: string;
29
29
  updatedLabel: string;
30
30
  fileCountLabel: string;
31
- detailsSectionTitle: string;
32
31
  }
33
32
  /**
34
33
  * Resolves the manifest file's opaque listing id across DIAL Core versions.
@@ -45,9 +44,9 @@ export declare const resolveSkillManifestFileId: (files: SkillMetadataItemDto[],
45
44
  */
46
45
  export declare const resolveSkillFileDownloadPath: (fileId: string, skillPath: string) => string | null;
47
46
  /**
48
- * Builds the Overview tab data for a skill: a Specification section from its
49
- * parsed manifest frontmatter, followed by a Details section covering who
50
- * authored it, when it last changed, and its file inventory. Grouping folders
47
+ * Builds the Overview tab data for a skill: a single Specification section
48
+ * listing its parsed manifest frontmatter, followed by who authored it, when
49
+ * it last changed, and its file inventory. Grouping folders
51
50
  * in the file listing are excluded from both the count and the rows. Sizes are
52
51
  * not shown — the skill metadata carries no content-length field.
53
52
  *
@@ -1 +1 @@
1
- {"version":3,"file":"map-skill-to-catalog-item.d.ts","sourceRoot":"","sources":["../../src/catalog/map-skill-to-catalog-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAGzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,+BAA+B,CAAC;AAQvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAA4B,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAuC/E,oDAAoD;AACpD,MAAM,WAAW,4BAA4B;IAC3C,wEAAwE;IACxE,YAAY,EAAE,sBAAsB,CAAC;IACrC,mFAAmF;IACnF,MAAM,EAAE,WAAW,CAAC;IACpB,gFAAgF;IAChF,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAClC;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,OAAO,oBAAoB,EAC3B,uCAAuC,4BAA4B,KAClE,WAgCF,CAAC;AAKF,qFAAqF;AACrF,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,yBAAyB,EAAE,MAAM,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AA2CD;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,GACrC,OAAO,oBAAoB,EAAE,EAC7B,WAAW,MAAM,KAChB,MAeF,CAAC;AAuCF;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,GACvC,QAAQ,MAAM,EACd,WAAW,MAAM,KAChB,MAAM,GAAG,IAA+C,CAAC;AAE5D;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,oBAAoB,GAAG,SAAS,EACvC,OAAO,oBAAoB,EAAE,EAC7B,OAAO,iBAAiB,GAAG,SAAS,EACpC,QAAQ,mBAAmB,KAC1B,mBAyBF,CAAC;AA4DF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,qBAAqB,GAChC,OAAO,oBAAoB,EAAE,EAC7B,WAAW,MAAM,KAChB,sBAAsB,EAiCxB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAC7B,UAAU,QAAQ,KACjB,OAAO,CAAC,UAAU,GAAG,IAAI,CAa3B,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,yBAAyB,GACpC,UAAU,QAAQ,KACjB,OAAO,CAAC,UAAU,CAAiD,CAAC;AAEvE;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,QAAQ,KACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAKvB,CAAC"}
1
+ {"version":3,"file":"map-skill-to-catalog-item.d.ts","sourceRoot":"","sources":["../../src/catalog/map-skill-to-catalog-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAEzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,+BAA+B,CAAC;AAQvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAA4B,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAuC/E,oDAAoD;AACpD,MAAM,WAAW,4BAA4B;IAC3C,wEAAwE;IACxE,YAAY,EAAE,sBAAsB,CAAC;IACrC,mFAAmF;IACnF,MAAM,EAAE,WAAW,CAAC;IACpB,gFAAgF;IAChF,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAClC;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,OAAO,oBAAoB,EAC3B,uCAAuC,4BAA4B,KAClE,WAgCF,CAAC;AAKF,4EAA4E;AAC5E,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,yBAAyB,EAAE,MAAM,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAyCD;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,GACrC,OAAO,oBAAoB,EAAE,EAC7B,WAAW,MAAM,KAChB,MAeF,CAAC;AAuCF;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,GACvC,QAAQ,MAAM,EACd,WAAW,MAAM,KAChB,MAAM,GAAG,IAA+C,CAAC;AAE5D;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,oBAAoB,GAAG,SAAS,EACvC,OAAO,oBAAoB,EAAE,EAC7B,OAAO,iBAAiB,GAAG,SAAS,EACpC,QAAQ,mBAAmB,KAC1B,mBAkBF,CAAC;AA4DF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,qBAAqB,GAChC,OAAO,oBAAoB,EAAE,EAC7B,WAAW,MAAM,KAChB,sBAAsB,EAiCxB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAC7B,UAAU,QAAQ,KACjB,OAAO,CAAC,UAAU,GAAG,IAAI,CAa3B,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,yBAAyB,GACpC,UAAU,QAAQ,KACjB,OAAO,CAAC,UAAU,CAAiD,CAAC;AAEvE;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,QAAQ,KACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAKvB,CAAC"}
@@ -35,7 +35,7 @@ var l = {
35
35
  folder: d(e, n, t)
36
36
  };
37
37
  }, p = (e) => e.join(" · "), m = (e, t) => {
38
- if (e == null) return null;
38
+ if (e == null) return [];
39
39
  let n = [];
40
40
  return e.whenToUse != null && n.push({
41
41
  label: t.whenToUseLabel,
@@ -46,10 +46,7 @@ var l = {
46
46
  }), e.bundledResources?.length && n.push({
47
47
  label: t.bundledResourcesLabel,
48
48
  value: p(e.bundledResources)
49
- }), n.length === 0 ? null : {
50
- title: t.specificationSectionTitle,
51
- specs: n
52
- };
49
+ }), n;
53
50
  }, h = (e) => e.filter((e) => e.nodeType === c.Item), g = (e, n) => {
54
51
  let r = t(n), i = r ? `${r}/files` : "files";
55
52
  return h(e).find((e) => {
@@ -60,22 +57,20 @@ var l = {
60
57
  let r = t(e), i = t(n), a = i ? `${i}/files` : "files";
61
58
  return r === "" || r === "files" || r === a ? null : r.startsWith(`${a}/`) ? r.slice(a.length + 1) : r.startsWith("files/") ? r.slice(6) : r;
62
59
  }, v = (e, t) => _(e, t), y = (e, t, r, i) => {
63
- let a = [], o = m(r, i);
64
- o != null && a.push(o);
65
- let s = [];
66
- return e?.author && s.push({
60
+ let a = m(r, i);
61
+ return e?.author && a.push({
67
62
  label: i.authorLabel,
68
63
  value: e.author
69
- }), s.push({
64
+ }), a.push({
70
65
  label: i.updatedLabel,
71
66
  value: e?.updatedAt ? n(e.updatedAt) : ""
72
- }), s.push({
67
+ }), a.push({
73
68
  label: i.fileCountLabel,
74
69
  value: String(h(t).length)
75
- }), a.push({
76
- title: i.detailsSectionTitle,
77
- specs: s
78
- }), { sections: a };
70
+ }), { sections: [{
71
+ title: i.specificationSectionTitle,
72
+ specs: a
73
+ }] };
79
74
  }, b = (e, t, n) => {
80
75
  if (e === "") return n;
81
76
  let r = t.get(e);
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.204",
4
+ "version": "1.3.0-dev.209",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "main": "./index.js",
@@ -121,7 +121,7 @@
121
121
  }
122
122
  },
123
123
  "dependencies": {
124
- "@epam/ai-dial-chat-api-client": "1.3.0-dev.204",
124
+ "@epam/ai-dial-chat-api-client": "1.3.0-dev.209",
125
125
  "dompurify": "3.4.17",
126
126
  "fflate": "^0.8.3",
127
127
  "lru-cache": "^10.4.3",
@@ -130,22 +130,22 @@
130
130
  },
131
131
  "peerDependencies": {
132
132
  "react": "^19.2.8",
133
- "@epam/ai-dial-attachment-canvas": "1.3.0-dev.204",
134
- "@epam/ai-dial-attachment-input": "1.3.0-dev.204",
135
- "@epam/ai-dial-catalog": "1.3.0-dev.204",
136
- "@epam/ai-dial-chat-overlay": "1.3.0-dev.204",
137
- "@epam/ai-dial-chat-shared": "1.3.0-dev.204",
138
- "@epam/ai-dial-conversation-input": "1.3.0-dev.204",
139
- "@epam/ai-dial-mcp-apps": "1.3.0-dev.204",
140
- "@epam/ai-dial-publish-panel": "1.3.0-dev.204",
141
- "@epam/ai-dial-quotations": "1.3.0-dev.204",
133
+ "@epam/ai-dial-attachment-canvas": "1.3.0-dev.209",
134
+ "@epam/ai-dial-attachment-input": "1.3.0-dev.209",
135
+ "@epam/ai-dial-catalog": "1.3.0-dev.209",
136
+ "@epam/ai-dial-chat-overlay": "1.3.0-dev.209",
137
+ "@epam/ai-dial-chat-shared": "1.3.0-dev.209",
138
+ "@epam/ai-dial-conversation-input": "1.3.0-dev.209",
139
+ "@epam/ai-dial-mcp-apps": "1.3.0-dev.209",
140
+ "@epam/ai-dial-publish-panel": "1.3.0-dev.209",
141
+ "@epam/ai-dial-quotations": "1.3.0-dev.209",
142
142
  "@epam/ai-dial-react-file-manager": "^0.4.0-dev.19",
143
- "@epam/ai-dial-scheduled-tasks": "1.3.0-dev.204",
144
- "@epam/ai-dial-share": "1.3.0-dev.204",
145
- "@epam/ai-dial-skill-editor": "1.3.0-dev.204",
146
- "@epam/ai-dial-source-panel": "1.3.0-dev.204",
143
+ "@epam/ai-dial-scheduled-tasks": "1.3.0-dev.209",
144
+ "@epam/ai-dial-share": "1.3.0-dev.209",
145
+ "@epam/ai-dial-skill-editor": "1.3.0-dev.209",
146
+ "@epam/ai-dial-source-panel": "1.3.0-dev.209",
147
147
  "@epam/ai-dial-ui-kit": "^0.16.0-dev.45",
148
- "@epam/ai-dial-usage-dashboard": "1.3.0-dev.204",
148
+ "@epam/ai-dial-usage-dashboard": "1.3.0-dev.209",
149
149
  "@modelcontextprotocol/sdk": "^1.32.1",
150
150
  "@epam/pdf-highlighter-kit": "^0.0.19",
151
151
  "@mcp-ui/client": "^7.1.1"
@@ -4,6 +4,7 @@ export declare enum ScheduledTaskTriggerDescriptionKind {
4
4
  OneTime = "oneTime",
5
5
  Hourly = "hourly",
6
6
  EveryNMinutes = "everyNMinutes",
7
+ EveryNWeeks = "everyNWeeks",
7
8
  Daily = "daily",
8
9
  Weekly = "weekly",
9
10
  Monthly = "monthly",
@@ -16,6 +17,8 @@ export interface ScheduledTaskTriggerDescription {
16
17
  dayOfWeek?: string;
17
18
  dayOfMonth?: string;
18
19
  intervalMinutes?: number;
20
+ /** Week count of an `EveryNWeeks` description (the cron `week` step). */
21
+ intervalWeeks?: number;
19
22
  date?: Date;
20
23
  expression?: string;
21
24
  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,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,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,+BA8JF,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,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,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.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.EveryNWeeks = "everyNWeeks", 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 = {
18
+ let o = () => i("custom", { expression: JSON.stringify(a) }), s = a.week?.match(/^\*\/(10|[1-9])$/), c = {
19
19
  hour: [0, 23],
20
20
  minute: [0, 59],
21
21
  day: [1, 31],
@@ -26,16 +26,19 @@ 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 = s[e];
29
+ let n = c[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" || ![
31
+ if (e === "second" && t !== "0") return o();
32
+ if (e === "week") {
33
+ if (!s) return o();
34
+ } else if (![
32
35
  "hour",
33
36
  "minute",
34
37
  "day",
35
38
  "day_of_week"
36
39
  ].includes(e) && t !== "*" && (e !== "second" || t !== "0")) return o();
37
40
  }
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 = f ? [
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 ? [
39
42
  "monday",
40
43
  "tuesday",
41
44
  "wednesday",
@@ -43,21 +46,23 @@ var t = /* @__PURE__ */ function(e) {
43
46
  "friday",
44
47
  "saturday",
45
48
  "sunday"
46
- ].findIndex((e) => e === f.toLowerCase() || e.slice(0, 3) === f.toLowerCase()) : -1, m = p >= 0 ? String(p) : f;
47
- if (u && m || u && !d && !/^\d+$/.test(u) || m && !/^\d+$/.test(m)) return o();
48
- let h = c == null || c === "*", g = l?.match(/^\*\/(\d+)$/);
49
- if (h && g && !u && !m) {
50
- let e = Number(g[1]);
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) {
55
+ let e = Number(_[1]);
51
56
  return e > 0 && e <= 59 ? i("everyNMinutes", { intervalMinutes: e }) : i("invalid");
52
57
  }
53
- if (!l || !/^\d+$/.test(l) || !h && !/^\d+$/.test(c) || h && (u || m)) return o();
54
- let _ = new Date(r);
55
- if (Number.isNaN(_.getTime())) return i("invalid");
56
- if (_.setUTCHours(h ? 0 : Number(c), Number(l), 0, 0), m) {
57
- let e = (Number(m) + 1) % 7;
58
- _.setUTCDate(_.getUTCDate() + (e - _.getUTCDay() + 7) % 7);
58
+ if (!u || !/^\d+$/.test(u) || !g && !/^\d+$/.test(l) || g && (d || h)) return o();
59
+ let v = new Date(r);
60
+ if (Number.isNaN(v.getTime())) return i("invalid");
61
+ if (v.setUTCHours(g ? 0 : Number(l), Number(u), 0, 0), h) {
62
+ let e = (Number(h) + 1) % 7;
63
+ v.setUTCDate(v.getUTCDate() + (e - v.getUTCDay() + 7) % 7);
59
64
  }
60
- let v = new Intl.DateTimeFormat("en-GB", {
65
+ let y = new Intl.DateTimeFormat("en-GB", {
61
66
  timeZone: n,
62
67
  hourCycle: "h23",
63
68
  year: "numeric",
@@ -65,17 +70,21 @@ var t = /* @__PURE__ */ function(e) {
65
70
  day: "2-digit",
66
71
  hour: "2-digit",
67
72
  minute: "2-digit"
68
- }).formatToParts(_), y = (e) => v.find((t) => t.type === e)?.value ?? "", b = new Date(Date.UTC(Number(y("year")), Number(y("month")) - 1, Number(y("day")))), x = Date.UTC(_.getUTCFullYear(), _.getUTCMonth(), _.getUTCDate()), S = Math.round((b.getTime() - x) / 864e5), C = y("hour") + ":" + y("minute");
69
- return h ? i("hourly", { time: y("minute") }) : m ? i("weekly", {
70
- time: C,
71
- dayOfWeek: String((Number(m) + S + 7) % 7)
72
- }) : d ? S === 1 ? i("monthly", {
73
- time: C,
73
+ }).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", {
82
+ time: w,
74
83
  dayOfMonth: "1"
75
- }) : o() : u ? S === 0 || Number(u) <= 28 && Number(u) + S >= 1 && Number(u) + S <= 28 ? i("monthly", {
76
- time: C,
77
- dayOfMonth: String(Number(u) + S)
78
- }) : o() : i("daily", { time: C });
84
+ }) : o() : d ? C === 0 || Number(d) <= 28 && Number(d) + C >= 1 && Number(d) + C <= 28 ? i("monthly", {
85
+ time: w,
86
+ dayOfMonth: String(Number(d) + C)
87
+ }) : o() : i("daily", { time: w });
79
88
  };
80
89
  //#endregion
81
90
  export { t as ScheduledTaskTriggerDescriptionKind, n as describeScheduledTaskTrigger };
@@ -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;AAiHlC;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,GACpC,QAAQ,6BAA6B,KACpC,0BAwCF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,GACpC,QAAQ,6BAA6B,KACpC,0BAGD,CAAC;AAqHH;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,GAC1C,KAAK,gBAAgB,KACpB,6BAgGF,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,0BA0CF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,GACpC,QAAQ,6BAA6B,KACpC,0BAGD,CAAC;AAsKH;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,GAC1C,KAAK,gBAAgB,KACpB,6BAsHF,CAAC"}
@@ -9,7 +9,7 @@ var c = /* @__PURE__ */ new Set([
9
9
  "minute",
10
10
  "day_of_week",
11
11
  "day"
12
- ]), l = "09:00", u = (e) => {
12
+ ]), l = /^\*\/(10|[1-9])$/, u = "09:00", d = (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), {
@@ -19,7 +19,7 @@ var c = /* @__PURE__ */ new Set([
19
19
  }
20
20
  let [t, r] = e.time.split(":"), c = Number(t), l = Number(r), u = /* @__PURE__ */ new Date();
21
21
  u.setHours(c, l, 0, 0);
22
- let d = e.repeat === s.Weekly && !!e.dayOfWeek, f = e.repeat === s.Monthly && !!e.dayOfMonth;
22
+ let d = (e.repeat === s.Weekly || e.repeat === s.Custom) && !!e.dayOfWeek, f = e.repeat === s.Monthly && !!e.dayOfMonth;
23
23
  if (d) {
24
24
  let t = (a(Number(e.dayOfWeek)) - u.getDay() + 7) % 7;
25
25
  u.setDate(u.getDate() + t);
@@ -28,16 +28,16 @@ var c = /* @__PURE__ */ new Set([
28
28
  hour: String(u.getUTCHours()),
29
29
  minute: String(u.getUTCMinutes())
30
30
  };
31
- return d && (p.day_of_week = String(o(u.getUTCDay()))), f && (p.day = i(Number(e.dayOfMonth), n(u))), p;
32
- }, d = (e, t, n) => {
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, n) => {
33
33
  if (e === s.Hourly) return new Date(t).toISOString();
34
34
  let [r, i, a] = t.split("-").map(Number), o = new Date(r, i - 1, a);
35
35
  return n === "start" ? o.setHours(0, 0, 0, 0) : o.setHours(23, 59, 59, 999), o.toISOString();
36
- }, f = (e) => {
36
+ }, p = (e) => {
37
37
  let t = e.repeat === s.OneTime ? { date: new Date(e.runAt ?? "").toISOString() } : { cron: {
38
- fields: u(e),
39
- ...e.startDate ? { startDate: d(e.repeat, e.startDate, "start") } : {},
40
- ...e.endDate ? { endDate: d(e.repeat, e.endDate, "end") } : {}
38
+ fields: d(e),
39
+ ...e.repeat !== s.Custom && e.startDate ? { startDate: f(e.repeat, e.startDate, "start") } : {},
40
+ ...e.repeat !== s.Custom && e.endDate ? { endDate: f(e.repeat, e.endDate, "end") } : {}
41
41
  } }, n = e.description?.trim();
42
42
  return {
43
43
  displayName: e.displayName.trim(),
@@ -47,19 +47,36 @@ var c = /* @__PURE__ */ new Set([
47
47
  ...e.skillUrls?.length ? { skillUrls: [...new Set(e.skillUrls)] } : {},
48
48
  ...n ? { description: n } : {}
49
49
  };
50
- }, p = (e) => ({
51
- ...f(e),
50
+ }, m = (e) => ({
51
+ ...p(e),
52
52
  skillUrls: [...new Set(e.skillUrls ?? [])]
53
- }), m = (t) => {
53
+ }), h = (t) => {
54
54
  let n = new Date(t);
55
55
  return `${n.getFullYear()}-${e(n.getMonth() + 1)}-${e(n.getDate())}T${e(n.getHours())}:${e(n.getMinutes())}`;
56
- }, h = (t) => {
56
+ }, g = (t) => {
57
57
  let n = new Date(t);
58
58
  return `${n.getFullYear()}-${e(n.getMonth() + 1)}-${e(n.getDate())}`;
59
- }, g = (t) => {
60
- let i = new Set(Object.entries(t).filter(([, e]) => e != null).map(([e]) => e)), s = [...i].filter((e) => !c.has(e)), l = i.has("day_of_week"), u = i.has("day");
61
- if (s.length > 0 || l && u || !i.has("hour") || !i.has("minute")) return { ok: !1 };
62
- if (t.hour === "*" && /^\d+$/.test(String(t.minute)) && !l && !u) {
59
+ }, _ = (t) => {
60
+ 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");
61
+ if (i.has("week")) {
62
+ let n = t.week?.match(l);
63
+ 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))) {
64
+ let r = Number(t.hour), i = Number(t.minute), s = Number(t.day_of_week), c = /* @__PURE__ */ new Date();
65
+ c.setUTCHours(r, i, 0, 0);
66
+ let l = (a(s) - c.getUTCDay() + 7) % 7;
67
+ return c.setUTCDate(c.getUTCDate() + l), {
68
+ ok: !0,
69
+ isHourly: !1,
70
+ isCustom: !0,
71
+ everyWeeks: n[1],
72
+ time: `${e(c.getHours())}:${e(c.getMinutes())}`,
73
+ dayOfWeek: String(o(c.getDay()))
74
+ };
75
+ }
76
+ return { ok: !1 };
77
+ }
78
+ if (s.length > 0 || u && d || !i.has("hour") || !i.has("minute")) return { ok: !1 };
79
+ if (t.hour === "*" && /^\d+$/.test(String(t.minute)) && !u && !d) {
63
80
  let e = /* @__PURE__ */ new Date();
64
81
  return e.setUTCHours(0, Number(t.minute), 0, 0), {
65
82
  ok: !0,
@@ -67,24 +84,24 @@ var c = /* @__PURE__ */ new Set([
67
84
  minute: String(e.getMinutes())
68
85
  };
69
86
  }
70
- let d = Number(t.hour), f = Number(t.minute);
71
- if (Number.isNaN(d) || Number.isNaN(f)) return { ok: !1 };
72
- let p = /* @__PURE__ */ new Date();
73
- if (p.setUTCHours(d, f, 0, 0), l) {
87
+ let f = Number(t.hour), p = Number(t.minute);
88
+ if (Number.isNaN(f) || Number.isNaN(p)) return { ok: !1 };
89
+ let m = /* @__PURE__ */ new Date();
90
+ if (m.setUTCHours(f, p, 0, 0), u) {
74
91
  let e = Number(t.day_of_week);
75
92
  if (Number.isNaN(e)) return { ok: !1 };
76
- let n = (a(e) - p.getUTCDay() + 7) % 7;
77
- p.setUTCDate(p.getUTCDate() + n);
93
+ let n = (a(e) - m.getUTCDay() + 7) % 7;
94
+ m.setUTCDate(m.getUTCDate() + n);
78
95
  }
79
- let m = u ? r(String(t.day), n(p)) : void 0;
80
- return u && !m ? { ok: !1 } : {
96
+ let h = d ? r(String(t.day), n(m)) : void 0;
97
+ return d && !h ? { ok: !1 } : {
81
98
  ok: !0,
82
99
  isHourly: !1,
83
- time: `${e(p.getHours())}:${e(p.getMinutes())}`,
84
- ...l ? { dayOfWeek: String(o(p.getDay())) } : {},
85
- ...m ? { dayOfMonth: m } : {}
100
+ time: `${e(m.getHours())}:${e(m.getMinutes())}`,
101
+ ...u ? { dayOfWeek: String(o(m.getDay())) } : {},
102
+ ...h ? { dayOfMonth: h } : {}
86
103
  };
87
- }, _ = (e) => {
104
+ }, v = (e) => {
88
105
  if (!e.model || typeof e.prompt != "string" || !e.prompt.trim() && !e.skillUrls?.length) return {
89
106
  ok: !1,
90
107
  reason: t.MissingRequiredFields
@@ -106,15 +123,15 @@ var c = /* @__PURE__ */ new Set([
106
123
  values: {
107
124
  ...a,
108
125
  repeat: s.OneTime,
109
- runAt: m(n),
110
- time: l
126
+ runAt: h(n),
127
+ time: u
111
128
  }
112
129
  };
113
130
  if (!r) return {
114
131
  ok: !1,
115
132
  reason: t.UnsupportedTriggerType
116
133
  };
117
- let o = g(r.fields);
134
+ let o = _(r.fields);
118
135
  if (!o.ok) return {
119
136
  ok: !1,
120
137
  reason: t.UnsupportedCronShape
@@ -124,10 +141,23 @@ var c = /* @__PURE__ */ new Set([
124
141
  values: {
125
142
  ...a,
126
143
  repeat: s.Hourly,
127
- time: l,
144
+ time: u,
128
145
  minute: o.minute,
129
- ...r.startDate ? { startDate: m(r.startDate) } : {},
130
- ...r.endDate ? { endDate: m(r.endDate) } : {}
146
+ ...r.startDate ? { startDate: h(r.startDate) } : {},
147
+ ...r.endDate ? { endDate: h(r.endDate) } : {}
148
+ }
149
+ };
150
+ if (o.isCustom) return r.startDate || r.endDate ? {
151
+ ok: !1,
152
+ reason: t.UnsupportedCronShape
153
+ } : {
154
+ ok: !0,
155
+ values: {
156
+ ...a,
157
+ repeat: s.Custom,
158
+ time: o.time,
159
+ everyWeeks: o.everyWeeks,
160
+ dayOfWeek: o.dayOfWeek
131
161
  }
132
162
  };
133
163
  let c = s.Daily;
@@ -139,10 +169,10 @@ var c = /* @__PURE__ */ new Set([
139
169
  time: o.time,
140
170
  ...o.dayOfWeek ? { dayOfWeek: o.dayOfWeek } : {},
141
171
  ...o.dayOfMonth ? { dayOfMonth: o.dayOfMonth } : {},
142
- ...r.startDate ? { startDate: h(r.startDate) } : {},
143
- ...r.endDate ? { endDate: h(r.endDate) } : {}
172
+ ...r.startDate ? { startDate: g(r.startDate) } : {},
173
+ ...r.endDate ? { endDate: g(r.endDate) } : {}
144
174
  }
145
175
  };
146
176
  };
147
177
  //#endregion
148
- export { f as mapFormValuesToCreateBody, p as mapFormValuesToUpdateBody, _ as mapScheduledTaskDtoToFormValues };
178
+ export { p as mapFormValuesToCreateBody, m as mapFormValuesToUpdateBody, v as mapScheduledTaskDtoToFormValues };