@epam/ai-dial-chat-hooks 1.1.0-dev.287 → 1.1.0-dev.293

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 (40) hide show
  1. package/catalog/map-deployment-limits-to-catalog.d.ts +38 -0
  2. package/catalog/map-deployment-limits-to-catalog.d.ts.map +1 -0
  3. package/catalog/useFavoriteEntitiesState/useFavoriteEntitiesState.d.ts +37 -0
  4. package/catalog/useFavoriteEntitiesState/useFavoriteEntitiesState.d.ts.map +1 -0
  5. package/conversation/conversation-transfer/queue.d.ts +1 -1
  6. package/conversation/conversation-transfer/queue.d.ts.map +1 -1
  7. package/conversation/conversation-transfer/types.d.ts +1 -27
  8. package/conversation/conversation-transfer/types.d.ts.map +1 -1
  9. package/conversation/deriveConversationRowActionState/deriveConversationRowActionState.d.ts +39 -0
  10. package/conversation/deriveConversationRowActionState/deriveConversationRowActionState.d.ts.map +1 -0
  11. package/conversation/useActiveConversationSync/useActiveConversationSync.d.ts +34 -0
  12. package/conversation/useActiveConversationSync/useActiveConversationSync.d.ts.map +1 -0
  13. package/conversation/useAsyncConfirmDialog/useAsyncConfirmDialog.d.ts +37 -0
  14. package/conversation/useAsyncConfirmDialog/useAsyncConfirmDialog.d.ts.map +1 -0
  15. package/conversation/useConversationLookupMaps/useConversationLookupMaps.d.ts +24 -0
  16. package/conversation/useConversationLookupMaps/useConversationLookupMaps.d.ts.map +1 -0
  17. package/conversation/useConversationPanelItems/useConversationPanelItems.d.ts +58 -0
  18. package/conversation/useConversationPanelItems/useConversationPanelItems.d.ts.map +1 -0
  19. package/conversation/useImportFilePicker/useImportFilePicker.d.ts +32 -0
  20. package/conversation/useImportFilePicker/useImportFilePicker.d.ts.map +1 -0
  21. package/index.d.ts +14 -0
  22. package/index.d.ts.map +1 -1
  23. package/index.js +2948 -2287
  24. package/package.json +14 -14
  25. package/prompt/usePromptsState/usePromptsState.d.ts +34 -0
  26. package/prompt/usePromptsState/usePromptsState.d.ts.map +1 -0
  27. package/shared/string-utils.d.ts +1 -8
  28. package/shared/string-utils.d.ts.map +1 -1
  29. package/skill/skill-file-batch-validation.d.ts +70 -0
  30. package/skill/skill-file-batch-validation.d.ts.map +1 -0
  31. package/skill/skill.d.ts +26 -0
  32. package/skill/skill.d.ts.map +1 -1
  33. package/skill/useSkillEditorLoad.d.ts +74 -0
  34. package/skill/useSkillEditorLoad.d.ts.map +1 -0
  35. package/skill/useSkillEditorSubmit.d.ts +105 -0
  36. package/skill/useSkillEditorSubmit.d.ts.map +1 -0
  37. package/skill/useSkillFileActions.d.ts +53 -0
  38. package/skill/useSkillFileActions.d.ts.map +1 -0
  39. package/skill/useSkillsState/useSkillsState.d.ts +35 -0
  40. package/skill/useSkillsState/useSkillsState.d.ts.map +1 -0
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.1.0-dev.287",
4
+ "version": "1.1.0-dev.293",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "main": "./index.js",
@@ -23,20 +23,20 @@
23
23
  },
24
24
  "peerDependencies": {
25
25
  "react": "^19.2.6",
26
- "@epam/ai-dial-attachment-canvas": "1.1.0-dev.287",
27
- "@epam/ai-dial-attachment-input": "1.1.0-dev.287",
28
- "@epam/ai-dial-catalog": "1.1.0-dev.287",
29
- "@epam/ai-dial-chat-api-client": "1.1.0-dev.287",
30
- "@epam/ai-dial-chat-overlay": "1.1.0-dev.287",
31
- "@epam/ai-dial-chat-shared": "1.1.0-dev.287",
32
- "@epam/ai-dial-deployment-creation-form": "1.1.0-dev.287",
33
- "@epam/ai-dial-publish-panel": "1.1.0-dev.287",
34
- "@epam/ai-dial-quotations": "1.1.0-dev.287",
26
+ "@epam/ai-dial-attachment-canvas": "1.1.0-dev.293",
27
+ "@epam/ai-dial-attachment-input": "1.1.0-dev.293",
28
+ "@epam/ai-dial-catalog": "1.1.0-dev.293",
29
+ "@epam/ai-dial-chat-api-client": "1.1.0-dev.293",
30
+ "@epam/ai-dial-chat-overlay": "1.1.0-dev.293",
31
+ "@epam/ai-dial-chat-shared": "1.1.0-dev.293",
32
+ "@epam/ai-dial-deployment-creation-form": "1.1.0-dev.293",
33
+ "@epam/ai-dial-publish-panel": "1.1.0-dev.293",
34
+ "@epam/ai-dial-quotations": "1.1.0-dev.293",
35
35
  "@epam/ai-dial-react-file-manager": "*",
36
- "@epam/ai-dial-scheduled-tasks": "1.1.0-dev.287",
37
- "@epam/ai-dial-share": "1.1.0-dev.287",
38
- "@epam/ai-dial-skill-editor": "1.1.0-dev.287",
39
- "@epam/ai-dial-source-panel": "1.1.0-dev.287",
36
+ "@epam/ai-dial-scheduled-tasks": "1.1.0-dev.293",
37
+ "@epam/ai-dial-share": "1.1.0-dev.293",
38
+ "@epam/ai-dial-skill-editor": "1.1.0-dev.293",
39
+ "@epam/ai-dial-source-panel": "1.1.0-dev.293",
40
40
  "@epam/ai-dial-ui-kit": "*",
41
41
  "ag-grid-community": "^35.3.0",
42
42
  "fflate": "^0.8.3"
@@ -0,0 +1,34 @@
1
+ import { PromptFolderResponseDto, PromptListResponseDto, PromptResponseDto } from '@epam/ai-dial-chat-api-client';
2
+ /** Parameters for {@link usePromptsState}. */
3
+ export interface UsePromptsStateParams {
4
+ /** Fetches the aggregate prompt listing from the server. */
5
+ listPrompts: () => Promise<PromptListResponseDto>;
6
+ }
7
+ /** Result returned by {@link usePromptsState}. */
8
+ export interface UsePromptsStateResult {
9
+ /** The caller's own prompts. */
10
+ prompts: PromptResponseDto[];
11
+ /** Folders in the caller's own prompt namespace. */
12
+ folders: PromptFolderResponseDto[];
13
+ /** Prompts other users have shared with the caller. */
14
+ sharedWithMe: PromptResponseDto[];
15
+ /** Organisation-wide (public) prompts, read-only for every user. */
16
+ publicPrompts: PromptResponseDto[];
17
+ /** Folders in the organisation prompt namespace. */
18
+ publicFolders: PromptFolderResponseDto[];
19
+ /** True until the aggregate prompt listing has settled. */
20
+ isLoading: boolean;
21
+ /** Rejection reason of the most recent failed list request, or `null`. */
22
+ error: unknown;
23
+ /** Re-reads personal, shared-with-me, and organisation prompts. */
24
+ refetch: () => Promise<void>;
25
+ /** Compatibility alias for the aggregate refetch — same function reference as `refetch`. */
26
+ refetchPublicPrompts: () => Promise<void>;
27
+ }
28
+ /**
29
+ * Fetches all prompt namespaces (personal, shared, public) with a single
30
+ * aggregate request. Exposes `refetch` / `refetchPublicPrompts` for
31
+ * manual refresh. Does not import any app context, routing, or i18n.
32
+ */
33
+ export declare const usePromptsState: ({ listPrompts, }: UsePromptsStateParams) => UsePromptsStateResult;
34
+ //# sourceMappingURL=usePromptsState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePromptsState.d.ts","sourceRoot":"","sources":["../../../src/prompt/usePromptsState/usePromptsState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AAGvC,8CAA8C;AAC9C,MAAM,WAAW,qBAAqB;IACpC,4DAA4D;IAC5D,WAAW,EAAE,MAAM,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnD;AAED,kDAAkD;AAClD,MAAM,WAAW,qBAAqB;IACpC,gCAAgC;IAChC,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,oDAAoD;IACpD,OAAO,EAAE,uBAAuB,EAAE,CAAC;IACnC,uDAAuD;IACvD,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,oEAAoE;IACpE,aAAa,EAAE,iBAAiB,EAAE,CAAC;IACnC,oDAAoD;IACpD,aAAa,EAAE,uBAAuB,EAAE,CAAC;IACzC,2DAA2D;IAC3D,SAAS,EAAE,OAAO,CAAC;IACnB,0EAA0E;IAC1E,KAAK,EAAE,OAAO,CAAC;IACf,mEAAmE;IACnE,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,4FAA4F;IAC5F,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,kBAE7B,qBAAqB,KAAG,qBA6E1B,CAAC"}
@@ -1,11 +1,4 @@
1
- /** Characters prohibited in conversation names: tab, ", :, ;, /, \, ,, =, {, }, %, & */
2
- export declare const PROHIBITED_CONVERSATION_NAME_CHARS_RE: RegExp;
3
- /** Strips characters DIAL Core rejects in a conversation name. */
4
- export declare const sanitizeConversationName: (name: string) => string;
5
- /** Strips trailing `.` characters from a name. */
6
- export declare const stripTrailingDots: (name: string) => string;
7
- /** Returns the UTF-8 byte length of a string (may exceed its character/code-unit length). */
8
- export declare const getUtf8ByteLength: (str: string) => number;
1
+ export { getUtf8ByteLength, sanitizeConversationName, stripTrailingDots, PROHIBITED_CONVERSATION_NAME_CHARS_RE, } from '@epam/ai-dial-chat-shared';
9
2
  /** Case-insensitive substring match. */
10
3
  export declare const includesIgnoreCase: (str: string, query: string) => boolean;
11
4
  /** Decodes a URI-encoded path segment, returning the original string if decoding fails. */
@@ -1 +1 @@
1
- {"version":3,"file":"string-utils.d.ts","sourceRoot":"","sources":["../../src/shared/string-utils.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,eAAO,MAAM,qCAAqC,QAAsB,CAAC;AAEzE,kEAAkE;AAClE,eAAO,MAAM,wBAAwB,GAAI,MAAM,MAAM,KAAG,MACC,CAAC;AAE1D,kDAAkD;AAClD,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,MACvB,CAAC;AAE3B,6FAA6F;AAC7F,eAAO,MAAM,iBAAiB,GAAI,KAAK,MAAM,KAAG,MACN,CAAC;AAE3C,wCAAwC;AACxC,eAAO,MAAM,kBAAkB,GAAI,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,OACf,CAAC;AAElD,2FAA2F;AAC3F,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,MAM5C,CAAC;AAEF,iGAAiG;AACjG,eAAO,MAAM,sBAAsB,SATC,MAAM,KAAG,MASM,CAAC;AAEpD,+DAA+D;AAC/D,eAAO,MAAM,uBAAuB,GAAI,MAAM,MAAM,KAAG,MACvB,CAAC"}
1
+ {"version":3,"file":"string-utils.d.ts","sourceRoot":"","sources":["../../src/shared/string-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,EACjB,qCAAqC,GACtC,MAAM,2BAA2B,CAAC;AAEnC,wCAAwC;AACxC,eAAO,MAAM,kBAAkB,GAAI,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,OACf,CAAC;AAElD,2FAA2F;AAC3F,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,MAM5C,CAAC;AAEF,iGAAiG;AACjG,eAAO,MAAM,sBAAsB,SATC,MAAM,KAAG,MASM,CAAC;AAEpD,+DAA+D;AAC/D,eAAO,MAAM,uBAAuB,GAAI,MAAM,MAAM,KAAG,MACvB,CAAC"}
@@ -0,0 +1,70 @@
1
+ import { SkillFileBatchError, SkillFileUploadCandidate, SkillFileValidationResult } from '@epam/ai-dial-skill-editor';
2
+ /** A recognized, structurally valid manifest candidate from a staged batch. */
3
+ export interface SkillManifestImportCandidate {
4
+ /** The `SkillFileUploadCandidate.id` this manifest came from. */
5
+ candidateId: string;
6
+ /** The imported manifest's `name` field. */
7
+ name: string;
8
+ /** The imported manifest's `description` field. */
9
+ description: string;
10
+ /** The imported manifest's full parsed frontmatter, including unknown fields. */
11
+ frontmatter: Record<string, unknown>;
12
+ /** The imported manifest's instructions body. */
13
+ instructions: string;
14
+ }
15
+ /** Localized messages the batch validator needs, resolved by the caller. */
16
+ export interface SkillFileBatchValidationMessages {
17
+ /** Shown when a required field (e.g. a candidate's path) is empty. */
18
+ required: string;
19
+ /** Shown when a candidate's path collides with a reserved entry name. */
20
+ pathReserved: string;
21
+ /** Shown when a candidate's path fails DIAL's relative-path rules. */
22
+ pathInvalid: string;
23
+ /** Shown when a candidate's path duplicates another candidate or an existing file. */
24
+ pathDuplicate: string;
25
+ /** Shown when a candidate exceeds the per-file size limit; receives the formatted limit. */
26
+ fileTooLarge: (maxSize: string) => string;
27
+ /** Shown when a root-level `SKILL.md`-like path has the wrong casing. */
28
+ manifestCasingInvalid: string;
29
+ /** Shown when the batch stages more than one root `SKILL.md`. */
30
+ manifestDuplicate: string;
31
+ /** Shown when a root `SKILL.md`'s bytes are not valid UTF-8. */
32
+ manifestInvalidUtf8: string;
33
+ /** Shown when a root `SKILL.md`'s frontmatter is missing or missing `name`/`description`. */
34
+ manifestInvalidFrontmatter: string;
35
+ /** Shown when the batch's projected total package size exceeds the limit. */
36
+ totalSizeExceeded: string;
37
+ /** Shown when the batch's projected total file count exceeds the limit. */
38
+ totalCountExceeded: string;
39
+ }
40
+ /** Snapshot of editor state the batch validator projects new totals against. */
41
+ export interface SkillFileBatchValidationContext {
42
+ /** Paths already present in the editor's supporting-file tree. */
43
+ existingPaths: string[];
44
+ /** Sum of the bytes already held for existing supporting files. */
45
+ existingTotalBytes: number;
46
+ /** UTF-8 byte length of the currently generated/loaded root `SKILL.md`. */
47
+ manifestByteLength: number;
48
+ /** Localized messages. */
49
+ messages: SkillFileBatchValidationMessages;
50
+ }
51
+ /** Result of validating a whole staged batch. */
52
+ export interface SkillFileBatchValidationOutcome {
53
+ /** One result per candidate, in the same order as the input. */
54
+ results: SkillFileValidationResult[];
55
+ /** Batch-level errors (projected total size/count, multiple manifests). */
56
+ batchErrors: SkillFileBatchError[];
57
+ /** The single accepted manifest import, when the batch has exactly one valid `SKILL.md`. */
58
+ manifestCandidate?: SkillManifestImportCandidate;
59
+ }
60
+ /**
61
+ * Validates a whole staged upload batch against per-file limits, path
62
+ * safety, in-batch/against-existing duplicates, and projected total
63
+ * size/count — mirroring the BFF's authoritative `SkillsPackageService`
64
+ * limits for immediate feedback (the server remains the final gate). Reads
65
+ * each candidate's bytes only where required (the root `SKILL.md` manifest,
66
+ * to decode and parse its frontmatter) — never for an ordinary supporting
67
+ * file, whose size is checked via `File.size` alone.
68
+ */
69
+ export declare const validateSkillFileBatch: (candidates: SkillFileUploadCandidate[], context: SkillFileBatchValidationContext) => Promise<SkillFileBatchValidationOutcome>;
70
+ //# sourceMappingURL=skill-file-batch-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-file-batch-validation.d.ts","sourceRoot":"","sources":["../../src/skill/skill-file-batch-validation.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC/B,MAAM,4BAA4B,CAAC;AAUpC,+EAA+E;AAC/E,MAAM,WAAW,4BAA4B;IAC3C,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,iDAAiD;IACjD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,4EAA4E;AAC5E,MAAM,WAAW,gCAAgC;IAC/C,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC;IACpB,sFAAsF;IACtF,aAAa,EAAE,MAAM,CAAC;IACtB,4FAA4F;IAC5F,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,yEAAyE;IACzE,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iEAAiE;IACjE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gEAAgE;IAChE,mBAAmB,EAAE,MAAM,CAAC;IAC5B,6FAA6F;IAC7F,0BAA0B,EAAE,MAAM,CAAC;IACnC,6EAA6E;IAC7E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,2EAA2E;IAC3E,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,gFAAgF;AAChF,MAAM,WAAW,+BAA+B;IAC9C,kEAAkE;IAClE,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,mEAAmE;IACnE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2EAA2E;IAC3E,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0BAA0B;IAC1B,QAAQ,EAAE,gCAAgC,CAAC;CAC5C;AAED,iDAAiD;AACjD,MAAM,WAAW,+BAA+B;IAC9C,gEAAgE;IAChE,OAAO,EAAE,yBAAyB,EAAE,CAAC;IACrC,2EAA2E;IAC3E,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,4FAA4F;IAC5F,iBAAiB,CAAC,EAAE,4BAA4B,CAAC;CAClD;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,GACjC,YAAY,wBAAwB,EAAE,EACtC,SAAS,+BAA+B,KACvC,OAAO,CAAC,+BAA+B,CA6HzC,CAAC"}
package/skill/skill.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import { SkillFileTreeNode } from '@epam/ai-dial-skill-editor';
2
+ import { SkillFileContent } from './skill-file-preview';
1
3
  /** Root manifest filename required at the top of every skill archive (mirrors `SKILL_MANIFEST_FILE` in `apps/chat-api/src/skills/utils/skill-path.util.ts`). */
2
4
  export declare const SKILL_MANIFEST_FILE = "SKILL.md";
3
5
  /**
@@ -85,4 +87,28 @@ export interface UnpackedSkillArchive {
85
87
  * bytes. Throws if the archive has no root `SKILL.md` entry.
86
88
  */
87
89
  export declare const unpackSkillArchive: (bytes: Uint8Array) => UnpackedSkillArchive;
90
+ /** Returns a skill relative path's final segment (its display name in the file tree). */
91
+ export declare const nameFromPath: (path: string) => string;
92
+ /** Wraps raw bytes in a `Blob`, copying them so the source buffer can be reused. */
93
+ export declare const skillFileBytesToBlob: (bytes: Uint8Array) => Blob;
94
+ /**
95
+ * Builds `SKILL.md`'s content for a create or edit submission: reassigns
96
+ * onto the loaded/imported frontmatter when one exists (so unrecognized
97
+ * fields survive), otherwise builds a fresh manifest from just `name`/
98
+ * `description`/`instructions`.
99
+ */
100
+ export declare const buildSkillManifestForSubmit: (frontmatter: Record<string, unknown>, name: string, description: string, instructions: string) => string;
101
+ /** The ordered supporting-file paths and `Blob` payload `createSkill`/`updateSkill` expect. */
102
+ export interface SkillFilesPayload {
103
+ /** Relative paths, positionally paired with `files`. */
104
+ filePaths: string[];
105
+ /** File contents, positionally paired with `filePaths`. */
106
+ files: Blob[];
107
+ }
108
+ /**
109
+ * Builds the ordered supporting-file paths and `Blob` payload
110
+ * `createSkill`/`updateSkill` expect from the editor's file tree and
111
+ * in-memory content map.
112
+ */
113
+ export declare const buildSkillFilesPayload: (files: SkillFileTreeNode[], filesContent: Map<string, SkillFileContent>) => SkillFilesPayload;
88
114
  //# sourceMappingURL=skill.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/skill/skill.ts"],"names":[],"mappings":"AAGA,gKAAgK;AAChK,eAAO,MAAM,mBAAmB,aAAa,CAAC;AAE9C;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,UAAY,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,WAAa,CAAC;AAEvD;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAQ1C;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GAAI,cAAc,MAAM,KAAG,OAsB/D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,KAAG,MAIvB,CAAC;AAE7B,4DAA4D;AAC5D,MAAM,WAAW,mBAAmB;IAClC,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,sCAIhC,mBAAmB,KAAG,MAGxB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC,GAC5C,iBAAiB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxC,MAAM,MAAM,EACZ,aAAa,MAAM,EACnB,cAAc,MAAM,KACnB,MAIF,CAAC;AAEF,mGAAmG;AACnG,MAAM,WAAW,mBAAmB;IAClC,mFAAmF;IACnF,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAC;CACtB;AAMD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAC7B,cAAc,MAAM,KACnB,mBASF,CAAC;AAEF,4GAA4G;AAC5G,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CAChC;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,UAAU,KAAG,oBAmBtD,CAAC"}
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/skill/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,gKAAgK;AAChK,eAAO,MAAM,mBAAmB,aAAa,CAAC;AAE9C;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,UAAY,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,WAAa,CAAC;AAEvD;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAQ1C;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GAAI,cAAc,MAAM,KAAG,OAsB/D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,KAAG,MAIvB,CAAC;AAE7B,4DAA4D;AAC5D,MAAM,WAAW,mBAAmB;IAClC,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,sCAIhC,mBAAmB,KAAG,MAGxB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC,GAC5C,iBAAiB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxC,MAAM,MAAM,EACZ,aAAa,MAAM,EACnB,cAAc,MAAM,KACnB,MAIF,CAAC;AAEF,mGAAmG;AACnG,MAAM,WAAW,mBAAmB;IAClC,mFAAmF;IACnF,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAC;CACtB;AAMD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAC7B,cAAc,MAAM,KACnB,mBASF,CAAC;AAEF,4GAA4G;AAC5G,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CAChC;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,UAAU,KAAG,oBAmBtD,CAAC;AAEF,yFAAyF;AACzF,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,MAG3C,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,GAAI,OAAO,UAAU,KAAG,IACtB,CAAC;AAEpC;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,GACtC,aAAa,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,MAAM,MAAM,EACZ,aAAa,MAAM,EACnB,cAAc,MAAM,KACnB,MAQ0D,CAAC;AAE9D,+FAA+F;AAC/F,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,2DAA2D;IAC3D,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GACjC,OAAO,iBAAiB,EAAE,EAC1B,cAAc,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,KAC1C,iBAYF,CAAC"}
@@ -0,0 +1,74 @@
1
+ import { SkillFileListResponseDto } from '@epam/ai-dial-chat-api-client';
2
+ import { SkillEditorValues, SkillFileTreeNode } from '@epam/ai-dial-skill-editor';
3
+ import { Dispatch, SetStateAction } from 'react';
4
+ import { SkillFileContent } from './skill-file-preview';
5
+ /** Edit-mode load state for a skill-authoring form; create mode never leaves `Loaded`. */
6
+ export declare enum SkillEditorLoadState {
7
+ /** The edit-mode download/parse flow is in flight. */
8
+ Loading = "loading",
9
+ /** The skill loaded successfully (or create mode, which starts here). */
10
+ Loaded = "loaded",
11
+ /** The download/parse flow failed for a reason other than 403/404. */
12
+ Error = "error",
13
+ /** The caller lacks permission to read the skill. */
14
+ Forbidden = "forbidden",
15
+ /** The skill no longer exists at the given path. */
16
+ NotFound = "not-found"
17
+ }
18
+ /** Already-configured DIAL Core download operations `useSkillEditorLoad` needs. */
19
+ export interface SkillEditorLoadClient {
20
+ /** Downloads the whole-skill ZIP archive. */
21
+ downloadSkill: (bucket: string, path: string) => Promise<Response>;
22
+ /** Downloads one file within the skill (the manifest or a supporting file). */
23
+ downloadSkillFile: (bucket: string, path: string, filePath: string) => Promise<Response>;
24
+ /** Lists the skill's files when the whole-skill ZIP route is unusable. */
25
+ listSkillFiles: (params: {
26
+ bucket: string;
27
+ path?: string;
28
+ filePath: string;
29
+ recursive?: boolean;
30
+ }) => Promise<SkillFileListResponseDto>;
31
+ }
32
+ /** Parameters accepted by {@link useSkillEditorLoad}. */
33
+ export interface UseSkillEditorLoadParams {
34
+ /** Whether the form is editing an existing skill rather than creating a new one. */
35
+ isEditMode: boolean;
36
+ /** DIAL Core bucket holding the skill. Load is skipped until this resolves. */
37
+ bucket: string | undefined;
38
+ /** Path to the skill within `bucket`. */
39
+ skillPath: string | null | undefined;
40
+ /** Already-configured download operations. */
41
+ client: SkillEditorLoadClient;
42
+ }
43
+ /** Return value of {@link useSkillEditorLoad}. */
44
+ export interface UseSkillEditorLoadResult {
45
+ /** Current load-state machine value driving the form's presentation. */
46
+ loadState: SkillEditorLoadState;
47
+ /** The loaded (or, in create mode, seeded) manifest values. */
48
+ loadedValues: SkillEditorValues | undefined;
49
+ /** Updates `loadedValues`, e.g. after a manifest import. */
50
+ setLoadedValues: Dispatch<SetStateAction<SkillEditorValues | undefined>>;
51
+ /** The loaded supporting-file tree. */
52
+ files: SkillFileTreeNode[];
53
+ /** Updates `files`, e.g. after a batch commit or node removal. */
54
+ setFiles: Dispatch<SetStateAction<SkillFileTreeNode[]>>;
55
+ /** In-memory bytes for every supporting file, keyed by relative path. */
56
+ filesContentRef: React.MutableRefObject<Map<string, SkillFileContent>>;
57
+ /** The loaded manifest's full parsed frontmatter, including fields the form never renders. */
58
+ frontmatterRef: React.MutableRefObject<Record<string, unknown>>;
59
+ /** The concurrency ETag from the load, sent back as `If-Match` on save. */
60
+ etagRef: React.MutableRefObject<string | undefined>;
61
+ /** The skill path the currently loaded state belongs to. */
62
+ loadedPathRef: React.MutableRefObject<string | undefined>;
63
+ /** Re-attempts the edit-mode download (load-error retry or post-conflict reload). */
64
+ retryLoad: () => void;
65
+ }
66
+ /**
67
+ * Owns the edit-mode skill download/unpack/parse flow: the in-memory
68
+ * supporting-file map, the loaded manifest values and frontmatter, the
69
+ * concurrency ETag, and the load-state machine driving the form's
70
+ * loading/error/forbidden/not-found presentation. Create mode never leaves
71
+ * `'loaded'` and starts with empty state.
72
+ */
73
+ export declare const useSkillEditorLoad: ({ isEditMode, bucket, skillPath, client, }: UseSkillEditorLoadParams) => UseSkillEditorLoadResult;
74
+ //# sourceMappingURL=useSkillEditorLoad.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSkillEditorLoad.d.ts","sourceRoot":"","sources":["../../src/skill/useSkillEditorLoad.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EAEzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAUtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,0FAA0F;AAC1F,oBAAY,oBAAoB;IAC9B,sDAAsD;IACtD,OAAO,YAAY;IACnB,yEAAyE;IACzE,MAAM,WAAW;IACjB,sEAAsE;IACtE,KAAK,UAAU;IACf,qDAAqD;IACrD,SAAS,cAAc;IACvB,oDAAoD;IACpD,QAAQ,cAAc;CACvB;AAED,mFAAmF;AACnF,MAAM,WAAW,qBAAqB;IACpC,6CAA6C;IAC7C,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnE,+EAA+E;IAC/E,iBAAiB,EAAE,CACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvB,0EAA0E;IAC1E,cAAc,EAAE,CAAC,MAAM,EAAE;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAAC;CACzC;AA8FD,yDAAyD;AACzD,MAAM,WAAW,wBAAwB;IACvC,oFAAoF;IACpF,UAAU,EAAE,OAAO,CAAC;IACpB,+EAA+E;IAC/E,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,yCAAyC;IACzC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrC,8CAA8C;IAC9C,MAAM,EAAE,qBAAqB,CAAC;CAC/B;AAED,kDAAkD;AAClD,MAAM,WAAW,wBAAwB;IACvC,wEAAwE;IACxE,SAAS,EAAE,oBAAoB,CAAC;IAChC,+DAA+D;IAC/D,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC5C,4DAA4D;IAC5D,eAAe,EAAE,QAAQ,CAAC,cAAc,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC,CAAC;IACzE,uCAAuC;IACvC,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,kEAAkE;IAClE,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;IACxD,yEAAyE;IACzE,eAAe,EAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACvE,8FAA8F;IAC9F,cAAc,EAAE,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAChE,2EAA2E;IAC3E,OAAO,EAAE,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACpD,4DAA4D;IAC5D,aAAa,EAAE,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC1D,qFAAqF;IACrF,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,GAAI,4CAKhC,wBAAwB,KAAG,wBAwG7B,CAAC"}
@@ -0,0 +1,105 @@
1
+ import { SkillUploadResponseDto } from '@epam/ai-dial-chat-api-client';
2
+ import { SkillEditorErrors, SkillEditorValues, SkillFileTreeNode } from '@epam/ai-dial-skill-editor';
3
+ import { NotificationVariant } from '@epam/ai-dial-ui-kit';
4
+ import { SkillFileContent } from './skill-file-preview';
5
+ type SubmitPhase = 'idle' | 'submitting' | 'success' | 'failure';
6
+ /** Already-configured DIAL Core write operations `useSkillEditorSubmit` needs. */
7
+ export interface SkillEditorSubmitClient {
8
+ /** Creates a new skill. */
9
+ createSkill: (bucket: string, path: string, skillManifest: string, filePaths: string[], files: Blob[]) => Promise<SkillUploadResponseDto>;
10
+ /** Updates an existing skill, sending `ifMatch` as the concurrency guard. */
11
+ updateSkill: (bucket: string, path: string, skillManifest: string, filePaths: string[], files: Blob[], ifMatch: string) => Promise<SkillUploadResponseDto>;
12
+ }
13
+ /** Localized messages `useSkillEditorSubmit` needs. */
14
+ export interface SkillEditorSubmitMessages {
15
+ /** Shown when a required field is empty. */
16
+ required: string;
17
+ /** Shown when the normalized skill name fails DIAL's naming rules. */
18
+ nameInvalid: string;
19
+ /** Shown when the skill name already exists (409), or defensively on an unreachable create-mode 412. */
20
+ nameConflict: string;
21
+ /** Shown when the submitted package exceeds the server's size limit (413). */
22
+ archiveTooLarge: string;
23
+ /** Shown when the backend is temporarily unavailable (503). */
24
+ serviceUnavailable: string;
25
+ /** Fallback shown for a 400 whose response body carries no message. */
26
+ pathInvalid: string;
27
+ /** Generic fallback shown for any other error status. */
28
+ saveError: string;
29
+ /** Notification title on a successful create. */
30
+ saveSuccessTitle: string;
31
+ /** Notification message on a successful create, given the created name. */
32
+ createSuccess: (name: string) => string;
33
+ /** Notification title on a successful update. */
34
+ updateSuccessTitle: string;
35
+ /** Notification message on a successful update, given the skill's name. */
36
+ updateSuccess: (name: string) => string;
37
+ /** Shown when a save hits a stale-ETag conflict (412) in edit mode. */
38
+ conflictMessage: string;
39
+ }
40
+ /** A host notification `useSkillEditorSubmit` asks to be shown. */
41
+ export interface SkillEditorSubmitNotification {
42
+ /** Notification style. */
43
+ variant: NotificationVariant;
44
+ /** Optional heading. */
45
+ title?: string;
46
+ /** Body text. */
47
+ message: string;
48
+ /** W3C trace ID, when the triggering error carried one. */
49
+ requestId?: string;
50
+ }
51
+ /** Parameters accepted by {@link useSkillEditorSubmit}. */
52
+ export interface UseSkillEditorSubmitParams {
53
+ /** DIAL Core bucket the skill is saved to. */
54
+ bucket: string | undefined;
55
+ /** Whether the form is editing an existing skill rather than creating a new one. */
56
+ isEditMode: boolean;
57
+ /** The editor's current supporting-file tree. */
58
+ files: SkillFileTreeNode[];
59
+ /** In-memory bytes for every supporting file, keyed by relative path. */
60
+ filesContentRef: React.MutableRefObject<Map<string, SkillFileContent>>;
61
+ /** The loaded (or imported) manifest's full parsed frontmatter. */
62
+ frontmatterRef: React.MutableRefObject<Record<string, unknown>>;
63
+ /** The path the currently loaded edit-mode state belongs to. */
64
+ loadedPathRef: React.MutableRefObject<string | undefined>;
65
+ /** The concurrency ETag from the load, sent back as `If-Match` on save. */
66
+ etagRef: React.MutableRefObject<string | undefined>;
67
+ /** Where to navigate on a successful save. */
68
+ returnUrl: string;
69
+ /** Refetches the host's skill listing after a successful save. */
70
+ refetchSkills: () => Promise<void>;
71
+ /** Already-configured create/update operations. */
72
+ client: SkillEditorSubmitClient;
73
+ /** Localized messages, resolved by the host. */
74
+ messages: SkillEditorSubmitMessages;
75
+ /** Called with `returnUrl` after a successful save. */
76
+ onNavigate: (url: string) => void;
77
+ /** Called to surface a host notification (success toast or unexpected-error toast). */
78
+ onNotify: (notification: SkillEditorSubmitNotification) => void;
79
+ }
80
+ /** Return value of {@link useSkillEditorSubmit}. */
81
+ export interface UseSkillEditorSubmitResult {
82
+ /** Current submit-phase. */
83
+ phase: SubmitPhase;
84
+ /** Inline field validation errors. */
85
+ errors: SkillEditorErrors;
86
+ /** General submit-time error, distinct from a stale-edit `conflict`. */
87
+ submitError: string | undefined;
88
+ /** Present when the last save hit a stale-ETag conflict. */
89
+ conflict: {
90
+ message: string;
91
+ } | undefined;
92
+ /** Clears `conflict`, e.g. once the host has reloaded the latest skill. */
93
+ clearConflict: () => void;
94
+ /** Validates and submits the given form values. */
95
+ handleSubmit: (values: SkillEditorValues) => Promise<void>;
96
+ }
97
+ /**
98
+ * Owns the Skill Editor's create/edit submission flow: field validation,
99
+ * building and (in edit mode) merging the `SKILL.md` manifest, calling
100
+ * `client.createSkill`/`client.updateSkill`, and mapping the resulting
101
+ * success/error/conflict outcomes to presentable state.
102
+ */
103
+ export declare const useSkillEditorSubmit: ({ bucket, isEditMode, files, filesContentRef, frontmatterRef, loadedPathRef, etagRef, returnUrl, refetchSkills, client, messages, onNavigate, onNotify, }: UseSkillEditorSubmitParams) => UseSkillEditorSubmitResult;
104
+ export {};
105
+ //# sourceMappingURL=useSkillEditorSubmit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSkillEditorSubmit.d.ts","sourceRoot":"","sources":["../../src/skill/useSkillEditorSubmit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { SkillEditorFileActions, SkillEditorValues, SkillFileTreeNode } from '@epam/ai-dial-skill-editor';
2
+ import { Dispatch, SetStateAction } from 'react';
3
+ import { SkillFileBatchValidationMessages } from './skill-file-batch-validation';
4
+ import { SkillFileContent } from './skill-file-preview';
5
+ /** Localized messages `useSkillFileActions` needs beyond per-candidate batch validation. */
6
+ export interface SkillFileActionsMessages extends SkillFileBatchValidationMessages {
7
+ /** Returned as the commit error when an imported manifest's `name` doesn't match the skill being edited. */
8
+ manifestNameMismatch: string;
9
+ /** Returned as the commit error when the user declines the manifest-import confirmation. */
10
+ manifestImportDeclined: string;
11
+ /** Generic fallback commit error for a batch with invalid candidates but no specific batch error. */
12
+ saveError: string;
13
+ }
14
+ /** Parameters accepted by {@link useSkillFileActions}. */
15
+ export interface UseSkillFileActionsParams {
16
+ /** The editor's current supporting-file tree. */
17
+ files: SkillFileTreeNode[];
18
+ /** Updates `files`. */
19
+ setFiles: Dispatch<SetStateAction<SkillFileTreeNode[]>>;
20
+ /** In-memory bytes for every supporting file, keyed by relative path. */
21
+ filesContentRef: React.MutableRefObject<Map<string, SkillFileContent>>;
22
+ /** The loaded (or imported) manifest's full parsed frontmatter. */
23
+ frontmatterRef: React.MutableRefObject<Record<string, unknown>>;
24
+ /** The seeded baseline manifest values, used to approximate the projected total size. */
25
+ loadedValues: SkillEditorValues | undefined;
26
+ /** Updates `loadedValues` after a manifest import. */
27
+ setLoadedValues: Dispatch<SetStateAction<SkillEditorValues | undefined>>;
28
+ /** Whether the form is editing an existing skill rather than creating a new one. */
29
+ isEditMode: boolean;
30
+ /** Whether the form currently diverges from its seeded baseline. */
31
+ isDirty: boolean;
32
+ /** Updates the currently selected file-tree node path. */
33
+ setSelectedPath: Dispatch<SetStateAction<string>>;
34
+ /** Localized messages, resolved by the host. */
35
+ messages: SkillFileActionsMessages;
36
+ }
37
+ /** Return value of {@link useSkillFileActions}. */
38
+ export interface UseSkillFileActionsResult {
39
+ /** File-tree mutation operations, passed straight to `SkillEditor`'s `fileActions` prop. */
40
+ fileActions: SkillEditorFileActions;
41
+ /** Whether the "replace Skill metadata?" confirmation prompt should be shown. */
42
+ pendingManifestImport: boolean;
43
+ /** Resolves the in-flight manifest-import confirmation with the user's choice. */
44
+ resolveManifestImport: (accepted: boolean) => void;
45
+ }
46
+ /**
47
+ * Owns the Skill Editor's batch file upload workflow: validating a staged
48
+ * batch, committing it atomically (supporting files plus an optional
49
+ * `SKILL.md` manifest import, with a confirmation gate), and removing
50
+ * already-committed nodes.
51
+ */
52
+ export declare const useSkillFileActions: ({ files, setFiles, filesContentRef, frontmatterRef, loadedValues, setLoadedValues, isEditMode, isDirty, setSelectedPath, messages, }: UseSkillFileActionsParams) => UseSkillFileActionsResult;
53
+ //# sourceMappingURL=useSkillFileActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSkillFileActions.d.ts","sourceRoot":"","sources":["../../src/skill/useSkillFileActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EAEvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAStD,OAAO,EAEL,KAAK,gCAAgC,EACtC,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,4FAA4F;AAC5F,MAAM,WAAW,wBAAyB,SAAQ,gCAAgC;IAChF,4GAA4G;IAC5G,oBAAoB,EAAE,MAAM,CAAC;IAC7B,4FAA4F;IAC5F,sBAAsB,EAAE,MAAM,CAAC;IAC/B,qGAAqG;IACrG,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,0DAA0D;AAC1D,MAAM,WAAW,yBAAyB;IACxC,iDAAiD;IACjD,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,uBAAuB;IACvB,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;IACxD,yEAAyE;IACzE,eAAe,EAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACvE,mEAAmE;IACnE,cAAc,EAAE,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAChE,yFAAyF;IACzF,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC5C,sDAAsD;IACtD,eAAe,EAAE,QAAQ,CAAC,cAAc,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC,CAAC;IACzE,oFAAoF;IACpF,UAAU,EAAE,OAAO,CAAC;IACpB,oEAAoE;IACpE,OAAO,EAAE,OAAO,CAAC;IACjB,0DAA0D;IAC1D,eAAe,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAClD,gDAAgD;IAChD,QAAQ,EAAE,wBAAwB,CAAC;CACpC;AAED,mDAAmD;AACnD,MAAM,WAAW,yBAAyB;IACxC,4FAA4F;IAC5F,WAAW,EAAE,sBAAsB,CAAC;IACpC,iFAAiF;IACjF,qBAAqB,EAAE,OAAO,CAAC;IAC/B,kFAAkF;IAClF,qBAAqB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CACpD;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAAI,sIAWjC,yBAAyB,KAAG,yBAsL9B,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { SkillCatalogListResponseDto, SkillMetadataItemDto } from '@epam/ai-dial-chat-api-client';
2
+ /** Parameters for {@link useSkillsState}. */
3
+ export interface UseSkillsStateParams {
4
+ /** Fetches the aggregate skill listing from the server. */
5
+ listSkills: () => Promise<SkillCatalogListResponseDto>;
6
+ /** Whether the Skills feature is enabled in the current overlay/tenant config. */
7
+ enabled: boolean;
8
+ /** Whether the user session is ready for API calls (auth has settled). */
9
+ ready: boolean;
10
+ }
11
+ /** Result returned by {@link useSkillsState}. */
12
+ export interface UseSkillsStateResult {
13
+ /** Skills in the caller's own bucket. */
14
+ skills: SkillMetadataItemDto[];
15
+ /** Skills in the organisation bucket. */
16
+ publicSkills: SkillMetadataItemDto[];
17
+ /** Skills other users shared with the caller. */
18
+ sharedWithMe: SkillMetadataItemDto[];
19
+ /** True until the aggregate listing has settled. */
20
+ isLoading: boolean;
21
+ /** Rejection reason of the most recent failed listing, or `null`. */
22
+ error: unknown;
23
+ /** Re-reads personal, shared, and organisation skills. */
24
+ refetch: () => Promise<void>;
25
+ /** Upserts a single skill into the shared-with-me list by URL identity. */
26
+ mergeSharedSkill: (item: SkillMetadataItemDto) => void;
27
+ }
28
+ /**
29
+ * Fetches all skill namespaces with a gated single request: clears state
30
+ * immediately when `enabled` is false, defers the fetch until `ready` is true,
31
+ * and exposes `refetch` / `mergeSharedSkill` for manual updates.
32
+ * Does not import any feature-flag hook, auth enum, or app context.
33
+ */
34
+ export declare const useSkillsState: ({ listSkills, enabled, ready, }: UseSkillsStateParams) => UseSkillsStateResult;
35
+ //# sourceMappingURL=useSkillsState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSkillsState.d.ts","sourceRoot":"","sources":["../../../src/skill/useSkillsState/useSkillsState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,2BAA2B,EAC3B,oBAAoB,EACrB,MAAM,+BAA+B,CAAC;AAGvC,6CAA6C;AAC7C,MAAM,WAAW,oBAAoB;IACnC,2DAA2D;IAC3D,UAAU,EAAE,MAAM,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACvD,kFAAkF;IAClF,OAAO,EAAE,OAAO,CAAC;IACjB,0EAA0E;IAC1E,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,iDAAiD;AACjD,MAAM,WAAW,oBAAoB;IACnC,yCAAyC;IACzC,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,yCAAyC;IACzC,YAAY,EAAE,oBAAoB,EAAE,CAAC;IACrC,iDAAiD;IACjD,YAAY,EAAE,oBAAoB,EAAE,CAAC;IACrC,oDAAoD;IACpD,SAAS,EAAE,OAAO,CAAC;IACnB,qEAAqE;IACrE,KAAK,EAAE,OAAO,CAAC;IACf,0DAA0D;IAC1D,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,2EAA2E;IAC3E,gBAAgB,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;CACxD;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,iCAI5B,oBAAoB,KAAG,oBAqFzB,CAAC"}