@epam/ai-dial-chat-hooks 1.3.0-dev.246 → 1.3.0-dev.249
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.
- package/conversation/generation-registry.d.ts +30 -0
- package/conversation/generation-registry.d.ts.map +1 -0
- package/conversation/generation-registry.js +33 -0
- package/conversation/useConversationTitleEnrichmentController.d.ts +64 -0
- package/conversation/useConversationTitleEnrichmentController.d.ts.map +1 -0
- package/conversation/useConversationTitleEnrichmentController.js +155 -0
- package/conversation/useDeploymentChangeTracking.d.ts +14 -0
- package/conversation/useDeploymentChangeTracking.d.ts.map +1 -0
- package/conversation/useDeploymentChangeTracking.js +23 -0
- package/conversation/useTranscribeAudio/useTranscribeAudio.d.ts +8 -1
- package/conversation/useTranscribeAudio/useTranscribeAudio.d.ts.map +1 -1
- package/conversation/useTranscribeAudio/useTranscribeAudio.js +23 -17
- package/conversation.js +19 -16
- package/entry-points/conversation.d.ts +3 -0
- package/entry-points/conversation.d.ts.map +1 -1
- package/entry-points/external-services.d.ts +2 -0
- package/entry-points/external-services.d.ts.map +1 -0
- package/entry-points/scheduled-tasks.d.ts +2 -0
- package/entry-points/scheduled-tasks.d.ts.map +1 -1
- package/entry-points/skill-editor.d.ts +1 -0
- package/entry-points/skill-editor.d.ts.map +1 -1
- package/external-services/useExternalServiceLogin.d.ts +103 -0
- package/external-services/useExternalServiceLogin.d.ts.map +1 -0
- package/external-services/useExternalServiceLogin.js +100 -0
- package/external-services.d.ts +2 -0
- package/external-services.js +1 -0
- package/index.d.ts +7 -0
- package/index.d.ts.map +1 -1
- package/index.js +84 -77
- package/package.json +22 -17
- package/scheduled-task/active-scheduled-task.d.ts +58 -0
- package/scheduled-task/active-scheduled-task.d.ts.map +1 -0
- package/scheduled-task/active-scheduled-task.js +18 -0
- package/scheduled-task/useActiveScheduledTaskDetails.d.ts +18 -0
- package/scheduled-task/useActiveScheduledTaskDetails.d.ts.map +1 -0
- package/scheduled-task/useActiveScheduledTaskDetails.js +40 -0
- package/scheduled-tasks.js +3 -1
- package/skill-editor/useSkillFilePreviewSyncController.d.ts +41 -0
- package/skill-editor/useSkillFilePreviewSyncController.d.ts.map +1 -0
- package/skill-editor/useSkillFilePreviewSyncController.js +58 -0
- package/skill-editor.js +2 -1
- package/usage/usage-reset-time.d.ts +10 -1
- package/usage/usage-reset-time.d.ts.map +1 -1
- package/usage/usage-reset-time.js +12 -10
- package/usage-limits.js +6 -6
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/** Resolution status of scheduler metadata for the currently routed conversation. */
|
|
2
|
+
export declare enum ActiveScheduledTaskStatus {
|
|
3
|
+
Resolving = "resolving",
|
|
4
|
+
NotATaskConversation = "not-a-task-conversation",
|
|
5
|
+
TaskConversation = "task-conversation"
|
|
6
|
+
}
|
|
7
|
+
/** Fetch status of the active task's own details (separate from its run history). */
|
|
8
|
+
export declare enum ActiveScheduledTaskDetailState {
|
|
9
|
+
Idle = "idle",
|
|
10
|
+
Loading = "loading",
|
|
11
|
+
Error = "error",
|
|
12
|
+
Unavailable = "unavailable",
|
|
13
|
+
Success = "success"
|
|
14
|
+
}
|
|
15
|
+
/** Minimal scheduler metadata supplied by the host. */
|
|
16
|
+
export interface ActiveScheduledTaskCandidate {
|
|
17
|
+
/** Opaque conversation identity. */
|
|
18
|
+
id: string;
|
|
19
|
+
/** Whether the scheduler created this conversation. */
|
|
20
|
+
isScheduledTask?: boolean;
|
|
21
|
+
/** Schedule identity. */
|
|
22
|
+
scheduleId?: string;
|
|
23
|
+
/** Run identity. */
|
|
24
|
+
runId?: string;
|
|
25
|
+
/** Conversation update epoch. */
|
|
26
|
+
updatedAt?: number;
|
|
27
|
+
/** Conversation display title. */
|
|
28
|
+
title?: string;
|
|
29
|
+
}
|
|
30
|
+
/** Inputs for resolving scheduler metadata without routing knowledge. */
|
|
31
|
+
export interface ResolveActiveScheduledTaskOptions {
|
|
32
|
+
/** Guarded route identity, or null outside a conversation. */
|
|
33
|
+
routeConversationId: string | null;
|
|
34
|
+
/** Host feature decision. */
|
|
35
|
+
enabled: boolean;
|
|
36
|
+
/** Whether the conversation list is loading. */
|
|
37
|
+
isLoading: boolean;
|
|
38
|
+
/** Current conversation candidates. */
|
|
39
|
+
items: readonly ActiveScheduledTaskCandidate[];
|
|
40
|
+
/** Host identity matching policy. */
|
|
41
|
+
matches: (candidateId: string, routeId: string) => boolean;
|
|
42
|
+
}
|
|
43
|
+
/** Resolved active-task metadata. */
|
|
44
|
+
export interface ActiveScheduledTaskResolution {
|
|
45
|
+
/** Classification of the supplied conversation. */
|
|
46
|
+
status: ActiveScheduledTaskStatus;
|
|
47
|
+
/** Matched schedule identity. */
|
|
48
|
+
scheduleId?: string;
|
|
49
|
+
/** Matched run identity. */
|
|
50
|
+
runId?: string;
|
|
51
|
+
/** Matched conversation update epoch. */
|
|
52
|
+
conversationUpdatedAt?: number;
|
|
53
|
+
/** Matched conversation title. */
|
|
54
|
+
conversationTitle?: string;
|
|
55
|
+
}
|
|
56
|
+
/** Resolves scheduler metadata using the caller's identity policy. */
|
|
57
|
+
export declare const resolveActiveScheduledTask: ({ routeConversationId, enabled, isLoading, items, matches, }: ResolveActiveScheduledTaskOptions) => ActiveScheduledTaskResolution;
|
|
58
|
+
//# sourceMappingURL=active-scheduled-task.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"active-scheduled-task.d.ts","sourceRoot":"","sources":["../../src/scheduled-task/active-scheduled-task.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,oBAAY,yBAAyB;IACnC,SAAS,cAAc;IACvB,oBAAoB,4BAA4B;IAChD,gBAAgB,sBAAsB;CACvC;AAED,qFAAqF;AACrF,oBAAY,8BAA8B;IACxC,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,WAAW,gBAAgB;IAC3B,OAAO,YAAY;CACpB;AAED,uDAAuD;AACvD,MAAM,WAAW,4BAA4B;IAC3C,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,uDAAuD;IACvD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,yBAAyB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AACD,yEAAyE;AACzE,MAAM,WAAW,iCAAiC;IAChD,8DAA8D;IAC9D,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,6BAA6B;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,SAAS,EAAE,OAAO,CAAC;IACnB,uCAAuC;IACvC,KAAK,EAAE,SAAS,4BAA4B,EAAE,CAAC;IAC/C,qCAAqC;IACrC,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;CAC5D;AACD,qCAAqC;AACrC,MAAM,WAAW,6BAA6B;IAC5C,mDAAmD;IACnD,MAAM,EAAE,yBAAyB,CAAC;IAClC,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kCAAkC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AACD,sEAAsE;AACtE,eAAO,MAAM,0BAA0B,GAAI,8DAMxC,iCAAiC,KAAG,6BAmBtC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/scheduled-task/active-scheduled-task.ts
|
|
2
|
+
var e = /* @__PURE__ */ function(e) {
|
|
3
|
+
return e.Resolving = "resolving", e.NotATaskConversation = "not-a-task-conversation", e.TaskConversation = "task-conversation", e;
|
|
4
|
+
}({}), t = /* @__PURE__ */ function(e) {
|
|
5
|
+
return e.Idle = "idle", e.Loading = "loading", e.Error = "error", e.Unavailable = "unavailable", e.Success = "success", e;
|
|
6
|
+
}({}), n = ({ routeConversationId: e, enabled: t, isLoading: n, items: r, matches: i }) => {
|
|
7
|
+
if (!e || !t) return { status: "not-a-task-conversation" };
|
|
8
|
+
let a = r.find((t) => i(t.id, e));
|
|
9
|
+
return a ? !a.isScheduledTask || !a.scheduleId || !a.runId ? { status: "not-a-task-conversation" } : {
|
|
10
|
+
status: "task-conversation",
|
|
11
|
+
scheduleId: a.scheduleId,
|
|
12
|
+
runId: a.runId,
|
|
13
|
+
conversationUpdatedAt: a.updatedAt,
|
|
14
|
+
conversationTitle: a.title
|
|
15
|
+
} : { status: n ? "resolving" : "not-a-task-conversation" };
|
|
16
|
+
};
|
|
17
|
+
//#endregion
|
|
18
|
+
export { t as ActiveScheduledTaskDetailState, e as ActiveScheduledTaskStatus, n as resolveActiveScheduledTask };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ScheduledTaskDto } from '@epam/ai-dial-chat-api-client';
|
|
2
|
+
import { ActiveScheduledTaskDetailState } from './active-scheduled-task';
|
|
3
|
+
/** Host-supplied cancellable task loader. */
|
|
4
|
+
export type ActiveScheduledTaskLoader = (id: string, signal: AbortSignal) => Promise<ScheduledTaskDto>;
|
|
5
|
+
/** Current details and retry operation for one active schedule. */
|
|
6
|
+
export interface ActiveScheduledTaskDetails {
|
|
7
|
+
/** Current request lifecycle. */
|
|
8
|
+
taskState: ActiveScheduledTaskDetailState;
|
|
9
|
+
/** Loaded details, or null before success. */
|
|
10
|
+
task: ScheduledTaskDto | null;
|
|
11
|
+
/** Failure other than an unavailable task. */
|
|
12
|
+
taskError: Error | null;
|
|
13
|
+
/** Starts another request for the current schedule. */
|
|
14
|
+
retryTask: () => void;
|
|
15
|
+
}
|
|
16
|
+
/** Loads task details independently of run identity, ignoring superseded responses. */
|
|
17
|
+
export declare const useActiveScheduledTaskDetails: (scheduleId: string | undefined, getTask: ActiveScheduledTaskLoader) => ActiveScheduledTaskDetails;
|
|
18
|
+
//# sourceMappingURL=useActiveScheduledTaskDetails.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useActiveScheduledTaskDetails.d.ts","sourceRoot":"","sources":["../../src/scheduled-task/useActiveScheduledTaskDetails.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,6CAA6C;AAC7C,MAAM,MAAM,yBAAyB,GAAG,CACtC,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC/B,mEAAmE;AACnE,MAAM,WAAW,0BAA0B;IACzC,iCAAiC;IACjC,SAAS,EAAE,8BAA8B,CAAC;IAC1C,8CAA8C;IAC9C,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC9B,8CAA8C;IAC9C,SAAS,EAAE,KAAK,GAAG,IAAI,CAAC;IACxB,uDAAuD;IACvD,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AACD,uFAAuF;AACvF,eAAO,MAAM,6BAA6B,GACxC,YAAY,MAAM,GAAG,SAAS,EAC9B,SAAS,yBAAyB,KACjC,0BAyDF,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { getApiErrorStatus as e } from "../api-error/api-error.js";
|
|
2
|
+
import { ActiveScheduledTaskDetailState as t } from "./active-scheduled-task.js";
|
|
3
|
+
import { useCallback as n, useEffect as r, useState as i } from "react";
|
|
4
|
+
//#region src/scheduled-task/useActiveScheduledTaskDetails.ts
|
|
5
|
+
var a = (a, o) => {
|
|
6
|
+
let [s, c] = i(t.Idle), [l, u] = i(null), [d, f] = i(null), [p, m] = i(0);
|
|
7
|
+
return r(() => {
|
|
8
|
+
if (!a) {
|
|
9
|
+
c(t.Idle), u(null), f(null);
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
c(t.Loading), u(null), f(null);
|
|
13
|
+
let n = { value: !1 }, r = new AbortController();
|
|
14
|
+
return (async () => {
|
|
15
|
+
try {
|
|
16
|
+
let e = await o(a, r.signal);
|
|
17
|
+
if (n.value) return;
|
|
18
|
+
u(e), c(t.Success);
|
|
19
|
+
} catch (r) {
|
|
20
|
+
if (n.value) return;
|
|
21
|
+
e(r) === 404 ? c(t.Unavailable) : (f(r instanceof Error ? r : /* @__PURE__ */ Error("Failed to load the scheduled task")), c(t.Error));
|
|
22
|
+
}
|
|
23
|
+
})(), () => {
|
|
24
|
+
n.value = !0, r.abort();
|
|
25
|
+
};
|
|
26
|
+
}, [
|
|
27
|
+
a,
|
|
28
|
+
p,
|
|
29
|
+
o
|
|
30
|
+
]), {
|
|
31
|
+
taskState: s,
|
|
32
|
+
task: l,
|
|
33
|
+
taskError: d,
|
|
34
|
+
retryTask: n(() => {
|
|
35
|
+
m((e) => e + 1);
|
|
36
|
+
}, [])
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
//#endregion
|
|
40
|
+
export { a as useActiveScheduledTaskDetails };
|
package/scheduled-tasks.js
CHANGED
|
@@ -7,4 +7,6 @@ import { useScheduledTasks as l } from "./scheduled-task/use-scheduled-tasks.js"
|
|
|
7
7
|
import { mergeRunsById as u, useScheduledTaskRuns as d } from "./scheduled-task/use-scheduled-task-runs.js";
|
|
8
8
|
import { checkScheduledTaskAuthSessionError as f } from "./scheduled-task/check-scheduled-task-auth-session-error.js";
|
|
9
9
|
import { useScheduledTaskSkillDisplayNames as p } from "./scheduled-task/useScheduledTaskSkillDisplayNames/useScheduledTaskSkillDisplayNames.js";
|
|
10
|
-
|
|
10
|
+
import { ActiveScheduledTaskDetailState as m, ActiveScheduledTaskStatus as h, resolveActiveScheduledTask as g } from "./scheduled-task/active-scheduled-task.js";
|
|
11
|
+
import { useActiveScheduledTaskDetails as _ } from "./scheduled-task/useActiveScheduledTaskDetails.js";
|
|
12
|
+
export { m as ActiveScheduledTaskDetailState, h as ActiveScheduledTaskStatus, t as ScheduledTaskTriggerDescriptionKind, e as UnsupportedTriggerReason, f as checkScheduledTaskAuthSessionError, c as createScheduledTasksApiClient, n as describeScheduledTaskTrigger, r as mapFormValuesToCreateBody, i as mapFormValuesToUpdateBody, a as mapScheduledTaskDtoToFormValues, u as mergeRunsById, o as prepareScheduledTaskCreateBody, s as prepareScheduledTaskUpdateBody, g as resolveActiveScheduledTask, _ as useActiveScheduledTaskDetails, d as useScheduledTaskRuns, p as useScheduledTaskSkillDisplayNames, l as useScheduledTasks };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { DisplayAttachment } from '@epam/ai-dial-chat-shared';
|
|
2
|
+
import { SkillFileTreeNode } from '@epam/ai-dial-skill-editor';
|
|
3
|
+
import { SkillFileContent } from '../skill/skill-file-preview';
|
|
4
|
+
/** Presentation state of a supporting-file preview. */
|
|
5
|
+
export declare enum SkillFilePreviewState {
|
|
6
|
+
Idle = "idle",
|
|
7
|
+
Loading = "loading",
|
|
8
|
+
Ready = "ready",
|
|
9
|
+
Error = "error"
|
|
10
|
+
}
|
|
11
|
+
/** Resolved selection and host canvas operations. */
|
|
12
|
+
export interface SkillFilePreviewSyncOptions {
|
|
13
|
+
/** Selected file; absent for manifest or folder views. */
|
|
14
|
+
node?: SkillFileTreeNode;
|
|
15
|
+
/** Already loaded file bytes. */
|
|
16
|
+
content?: SkillFileContent;
|
|
17
|
+
/** Reads already-loaded bytes during reconciliation; never fetches. */
|
|
18
|
+
getContent?: () => SkillFileContent | undefined;
|
|
19
|
+
/** Opaque host resource key. */
|
|
20
|
+
canvasAttachmentId?: string;
|
|
21
|
+
/** Content replacement revision. */
|
|
22
|
+
contentRevision: number;
|
|
23
|
+
/** Currently displayed canvas identity. */
|
|
24
|
+
currentCanvasId?: string;
|
|
25
|
+
/** Whether canvas content is visible. */
|
|
26
|
+
isCanvasOpen: boolean;
|
|
27
|
+
/** Whether canvas content is loading. */
|
|
28
|
+
isCanvasLoading: boolean;
|
|
29
|
+
/** Provider-scoped request authority. */
|
|
30
|
+
beginRequest: () => () => boolean;
|
|
31
|
+
/** Opens content, consulting the predicate before asynchronous writes. */
|
|
32
|
+
openAttachmentCanvas: (attachment: DisplayAttachment, id: string, shouldCommit: () => boolean) => Promise<boolean>;
|
|
33
|
+
/** Closes the currently owned canvas. */
|
|
34
|
+
closeCanvas: () => void;
|
|
35
|
+
}
|
|
36
|
+
/** Synchronizes resolved file selection while preserving shared canvas ownership. */
|
|
37
|
+
export declare const useSkillFilePreviewSyncController: ({ node, content, getContent, canvasAttachmentId, contentRevision, currentCanvasId, isCanvasOpen, isCanvasLoading, beginRequest, openAttachmentCanvas, closeCanvas, }: SkillFilePreviewSyncOptions) => {
|
|
38
|
+
state: SkillFilePreviewState;
|
|
39
|
+
retry: () => void;
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=useSkillFilePreviewSyncController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSkillFilePreviewSyncController.d.ts","sourceRoot":"","sources":["../../src/skill-editor/useSkillFilePreviewSyncController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAQpE,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,6BAA6B,CAAC;AACrC,uDAAuD;AACvD,oBAAY,qBAAqB;IAC/B,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AACD,qDAAqD;AACrD,MAAM,WAAW,2BAA2B;IAC1C,0DAA0D;IAC1D,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,iCAAiC;IACjC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,gBAAgB,GAAG,SAAS,CAAC;IAChD,gCAAgC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oCAAoC;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,2CAA2C;IAC3C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yCAAyC;IACzC,YAAY,EAAE,OAAO,CAAC;IACtB,yCAAyC;IACzC,eAAe,EAAE,OAAO,CAAC;IACzB,yCAAyC;IACzC,YAAY,EAAE,MAAM,MAAM,OAAO,CAAC;IAClC,0EAA0E;IAC1E,oBAAoB,EAAE,CACpB,UAAU,EAAE,iBAAiB,EAC7B,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,MAAM,OAAO,KACxB,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,yCAAyC;IACzC,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AACD,qFAAqF;AACrF,eAAO,MAAM,iCAAiC,GAAI,sKAY/C,2BAA2B;;;CA0F7B,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { skillFileToAttachment as e } from "../skill/skill-file-preview.js";
|
|
2
|
+
import { useCallback as t, useEffect as n, useLayoutEffect as r, useRef as i, useState as a } from "react";
|
|
3
|
+
//#region src/skill-editor/useSkillFilePreviewSyncController.ts
|
|
4
|
+
var o = /* @__PURE__ */ function(e) {
|
|
5
|
+
return e.Idle = "idle", e.Loading = "loading", e.Ready = "ready", e.Error = "error", e;
|
|
6
|
+
}({}), s = ({ node: o, content: s, getContent: c, canvasAttachmentId: l, contentRevision: u, currentCanvasId: d, isCanvasOpen: f, isCanvasLoading: p, beginRequest: m, openAttachmentCanvas: h, closeCanvas: g }) => {
|
|
7
|
+
let [_, v] = a(), [y, b] = a(0), x = i(void 0);
|
|
8
|
+
r(() => () => {
|
|
9
|
+
let e = x.current;
|
|
10
|
+
e && (e.valid = !1, e.owns() && g(), x.current = void 0);
|
|
11
|
+
}, [g]), n(() => {
|
|
12
|
+
let t = x.current, n = c ? c() : s;
|
|
13
|
+
if (!o || !n || !l) {
|
|
14
|
+
t && (t.valid = !1, t.owns() && g(), x.current = void 0);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (t?.id === l && t.revision === u && t.retry === y) return;
|
|
18
|
+
t && (t.valid = !1);
|
|
19
|
+
let r = {
|
|
20
|
+
id: l,
|
|
21
|
+
revision: u,
|
|
22
|
+
retry: y,
|
|
23
|
+
valid: !0,
|
|
24
|
+
owns: m()
|
|
25
|
+
};
|
|
26
|
+
x.current = r, v(void 0);
|
|
27
|
+
let i = () => r.valid && r.owns();
|
|
28
|
+
(async () => {
|
|
29
|
+
let t = !1;
|
|
30
|
+
try {
|
|
31
|
+
t = await h(e(o, n), l, i);
|
|
32
|
+
} catch {
|
|
33
|
+
t = !1;
|
|
34
|
+
}
|
|
35
|
+
i() && !t && v({
|
|
36
|
+
id: l,
|
|
37
|
+
revision: u
|
|
38
|
+
});
|
|
39
|
+
})();
|
|
40
|
+
}, [
|
|
41
|
+
o,
|
|
42
|
+
s,
|
|
43
|
+
c,
|
|
44
|
+
l,
|
|
45
|
+
u,
|
|
46
|
+
y,
|
|
47
|
+
m,
|
|
48
|
+
h,
|
|
49
|
+
g
|
|
50
|
+
]);
|
|
51
|
+
let S = t(() => b((e) => e + 1), []);
|
|
52
|
+
return {
|
|
53
|
+
state: !o || !s && !c || !l ? "idle" : _?.id === l && _.revision === u ? "error" : d === l && f && !p ? "ready" : "loading",
|
|
54
|
+
retry: S
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
//#endregion
|
|
58
|
+
export { o as SkillFilePreviewState, s as useSkillFilePreviewSyncController };
|
package/skill-editor.js
CHANGED
|
@@ -7,4 +7,5 @@ import { useSkillEditorSubmit as T } from "./skill/useSkillEditorSubmit.js";
|
|
|
7
7
|
import { useSkillFileActions as E } from "./skill/useSkillFileActions.js";
|
|
8
8
|
import { SkillArchiveImportErrorKind as D, SkillArchiveImportStatus as O, SkillArchiveSelectionRejectionReason as k, classifySkillArchiveImportError as A, useSkillArchiveImport as j } from "./skill/useSkillArchiveImport/useSkillArchiveImport.js";
|
|
9
9
|
import { useSkillFileSystemPicker as M } from "./skill-editor/useSkillFileSystemPicker/useSkillFileSystemPicker.js";
|
|
10
|
-
|
|
10
|
+
import { SkillFilePreviewState as N, useSkillFilePreviewSyncController as P } from "./skill-editor/useSkillFilePreviewSyncController.js";
|
|
11
|
+
export { e as SKILL_FILE_UPLOAD_MAX_BYTES, t as SKILL_FOLDER_MARKER, n as SKILL_MANIFEST_FILE, r as SKILL_TEXT_FIELD_MAX_LENGTHS, i as SKILL_UPLOAD_MAX_FILES, a as SKILL_UPLOAD_MAX_TOTAL_BYTES, D as SkillArchiveImportErrorKind, O as SkillArchiveImportStatus, k as SkillArchiveSelectionRejectionReason, C as SkillEditorLoadState, N as SkillFilePreviewState, o as buildSkillFilesPayload, s as buildSkillManifest, c as buildSkillManifestForSubmit, l as buildSkillManifestFromFrontmatter, A as classifySkillArchiveImportError, u as getSkillFieldLengthViolations, d as isSkillFolderMarkerPath, f as isValidSkillRelativePath, p as nameFromPath, m as normalizeSkillName, h as parseSkillManifest, b as parseSkillManifestDocument, g as skillFileBytesToBlob, S as skillFileToAttachment, _ as skillFolderMarkerParent, v as startsWithFrontmatterBlock, y as unpackSkillArchive, j as useSkillArchiveImport, w as useSkillEditorLoad, T as useSkillEditorSubmit, E as useSkillFileActions, P as useSkillFilePreviewSyncController, M as useSkillFileSystemPicker, x as validateSkillFileBatch };
|
|
@@ -32,6 +32,15 @@ export interface ResetTimeDisplay {
|
|
|
32
32
|
}
|
|
33
33
|
/** A translate function compatible with i18next's `TFunction`. */
|
|
34
34
|
export type TranslateFn = (key: string, options?: Record<string, unknown>) => string;
|
|
35
|
+
/** Offset reference used to format an unchanged reset boundary. */
|
|
36
|
+
export declare enum UsageResetOffsetPolicy {
|
|
37
|
+
CurrentOffset = "current-offset",
|
|
38
|
+
ResetInstant = "reset-instant"
|
|
39
|
+
}
|
|
40
|
+
/** Optional host reset-display policy. */
|
|
41
|
+
export interface UsageResetTimeOptions {
|
|
42
|
+
/** Defaults to current-offset. */ offsetPolicy?: UsageResetOffsetPolicy;
|
|
43
|
+
}
|
|
35
44
|
/**
|
|
36
45
|
* Formats DIAL Core's `resetsAt` for display in the viewer's locale and
|
|
37
46
|
* timezone, at the viewer's current UTC offset, always stating that offset so
|
|
@@ -47,7 +56,7 @@ export type TranslateFn = (key: string, options?: Record<string, unknown>) => st
|
|
|
47
56
|
* The boundary is never derived from the browser's own calendar — no local
|
|
48
57
|
* midnight, no start-of-week, no arithmetic on `new Date()`.
|
|
49
58
|
*/
|
|
50
|
-
export declare const formatUsageResetTime: (resetsAt: string | undefined, activeLocale: string, t: TranslateFn) => ResetTimeDisplay | undefined;
|
|
59
|
+
export declare const formatUsageResetTime: (resetsAt: string | undefined, activeLocale: string, t: TranslateFn, options?: UsageResetTimeOptions) => ResetTimeDisplay | undefined;
|
|
51
60
|
/** A `resetsAt` instant as the one-sentence reset notice the composer usage banner renders. */
|
|
52
61
|
export interface ShortResetTimeDisplay {
|
|
53
62
|
/** Machine-readable instant for a `<time dateTime>` attribute, e.g. '2026-10-13T00:00:00Z'. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-reset-time.d.ts","sourceRoot":"","sources":["../../src/usage/usage-reset-time.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;GAIG;AACH,eAAO,MAAM,qBAAqB;IAChC,4EAA4E;;IAE5E,2EAA2E;;IAE3E,+DAA+D;;IAE/D,wEAAwE;;CAEhE,CAAC;AAEX;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAC;IACnB,+FAA+F;IAC/F,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,kIAAkI;IAClI,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,kEAAkE;AAClE,MAAM,MAAM,WAAW,GAAG,CACxB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,MAAM,CAAC;AAmEZ;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB,GAC/B,UAAU,MAAM,GAAG,SAAS,EAC5B,cAAc,MAAM,EACpB,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"usage-reset-time.d.ts","sourceRoot":"","sources":["../../src/usage/usage-reset-time.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;GAIG;AACH,eAAO,MAAM,qBAAqB;IAChC,4EAA4E;;IAE5E,2EAA2E;;IAE3E,+DAA+D;;IAE/D,wEAAwE;;CAEhE,CAAC;AAEX;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAC;IACnB,+FAA+F;IAC/F,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,kIAAkI;IAClI,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,kEAAkE;AAClE,MAAM,MAAM,WAAW,GAAG,CACxB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,MAAM,CAAC;AAmEZ,mEAAmE;AACnE,oBAAY,sBAAsB;IAChC,aAAa,mBAAmB;IAChC,YAAY,kBAAkB;CAC/B;AACD,0CAA0C;AAC1C,MAAM,WAAW,qBAAqB;IACpC,kCAAkC,CAAC,YAAY,CAAC,EAAE,sBAAsB,CAAC;CAC1E;AACD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB,GAC/B,UAAU,MAAM,GAAG,SAAS,EAC5B,cAAc,MAAM,EACpB,GAAG,WAAW,EACd,UAAS,qBAA0B,KAClC,gBAAgB,GAAG,SAmErB,CAAC;AAEF,+FAA+F;AAC/F,MAAM,WAAW,qBAAqB;IACpC,+FAA+F;IAC/F,QAAQ,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,gGAAgG;IAChG,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,GAChC,UAAU,MAAM,GAAG,SAAS,EAC5B,QAAQ,WAAW,EACnB,cAAc,MAAM,EACpB,GAAG,WAAW,KACb,qBAAqB,GAAG,SAiD1B,CAAC"}
|
|
@@ -27,22 +27,24 @@ var t = {
|
|
|
27
27
|
timeZoneName: o,
|
|
28
28
|
timeZone: "UTC"
|
|
29
29
|
}).formatToParts(l).map((e) => e.type === "timeZoneName" ? c : e.value).join("").replace(i, " ");
|
|
30
|
-
}, s = (e
|
|
30
|
+
}, s = /* @__PURE__ */ function(e) {
|
|
31
|
+
return e.CurrentOffset = "current-offset", e.ResetInstant = "reset-instant", e;
|
|
32
|
+
}({}), c = (e, n, r, i = {}) => {
|
|
31
33
|
if (!e) return;
|
|
32
|
-
let
|
|
33
|
-
if (!Number.isNaN(
|
|
34
|
-
let
|
|
34
|
+
let a = Date.parse(e);
|
|
35
|
+
if (!Number.isNaN(a)) try {
|
|
36
|
+
let s = Intl.DateTimeFormat().resolvedOptions().timeZone, c = s ? { timeZone: s } : {}, l = i.offsetPolicy === "reset-instant" ? new Date(a) : /* @__PURE__ */ new Date(), u = o(a, l, n, "shortOffset", c), d = o(a, l, n, "long", c);
|
|
35
37
|
return {
|
|
36
|
-
resetsAtMs:
|
|
38
|
+
resetsAtMs: a,
|
|
37
39
|
isoValue: e,
|
|
38
|
-
label: r(t.resetsAtLabel, { dateTime:
|
|
39
|
-
ariaLabel: r(t.resetsAtAriaLabel, { dateTime:
|
|
40
|
+
label: r(t.resetsAtLabel, { dateTime: u }),
|
|
41
|
+
ariaLabel: r(t.resetsAtAriaLabel, { dateTime: d })
|
|
40
42
|
};
|
|
41
43
|
} catch {
|
|
42
44
|
return;
|
|
43
45
|
}
|
|
44
|
-
},
|
|
45
|
-
let o =
|
|
46
|
+
}, l = (n, r, i, a) => {
|
|
47
|
+
let o = c(n, i, a);
|
|
46
48
|
if (o != null) try {
|
|
47
49
|
let n = Intl.DateTimeFormat().resolvedOptions().timeZone, s = n ? { timeZone: n } : {}, c = new Date(o.resetsAtMs);
|
|
48
50
|
if (r === e.Day) {
|
|
@@ -77,4 +79,4 @@ var t = {
|
|
|
77
79
|
}
|
|
78
80
|
};
|
|
79
81
|
//#endregion
|
|
80
|
-
export { t as USAGE_RESET_I18N_KEYS,
|
|
82
|
+
export { t as USAGE_RESET_I18N_KEYS, s as UsageResetOffsetPolicy, l as formatUsageResetShort, c as formatUsageResetTime };
|
package/usage-limits.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { UsagePeriod as e } from "./usage/usage-period.js";
|
|
2
2
|
import { isCappedStat as t, selectUsageBannerSource as n } from "./usage/usage-banner-source.js";
|
|
3
|
-
import { USAGE_RESET_I18N_KEYS as r,
|
|
4
|
-
import { useDeploymentUsageLimits as
|
|
5
|
-
import { useRefreshUsageAfterGeneration as
|
|
6
|
-
import { resetUsageLimitBannerDismissals as
|
|
7
|
-
import { USAGE_BANNER_I18N_KEYS as
|
|
8
|
-
export {
|
|
3
|
+
import { USAGE_RESET_I18N_KEYS as r, UsageResetOffsetPolicy as i, formatUsageResetShort as a, formatUsageResetTime as o } from "./usage/usage-reset-time.js";
|
|
4
|
+
import { useDeploymentUsageLimits as s } from "./usage/useDeploymentUsageLimits/useDeploymentUsageLimits.js";
|
|
5
|
+
import { useRefreshUsageAfterGeneration as c } from "./usage/useRefreshUsageAfterGeneration/useRefreshUsageAfterGeneration.js";
|
|
6
|
+
import { resetUsageLimitBannerDismissals as l, useUsageLimitBannerDismissal as u } from "./usage/useUsageLimitBannerDismissal/useUsageLimitBannerDismissal.js";
|
|
7
|
+
import { USAGE_BANNER_I18N_KEYS as d, useUsageLimitBanner as f } from "./usage/useUsageLimitBanner/useUsageLimitBanner.js";
|
|
8
|
+
export { d as USAGE_BANNER_I18N_KEYS, r as USAGE_RESET_I18N_KEYS, e as UsagePeriod, i as UsageResetOffsetPolicy, a as formatUsageResetShort, o as formatUsageResetTime, t as isCappedStat, l as resetUsageLimitBannerDismissals, n as selectUsageBannerSource, s as useDeploymentUsageLimits, c as useRefreshUsageAfterGeneration, f as useUsageLimitBanner, u as useUsageLimitBannerDismissal };
|