@epam/ai-dial-chat-hooks 1.0.0 → 1.0.2

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 (203) hide show
  1. package/api-error/api-error.d.ts +18 -0
  2. package/api-error/api-error.d.ts.map +1 -0
  3. package/api-transport/create-csrf-middleware.d.ts +15 -0
  4. package/api-transport/create-csrf-middleware.d.ts.map +1 -0
  5. package/api-transport/create-unauthorized-middleware.d.ts +40 -0
  6. package/api-transport/create-unauthorized-middleware.d.ts.map +1 -0
  7. package/attachment/useAttachmentAction/useAttachmentAction.d.ts +0 -2
  8. package/attachment/useAttachmentAction/useAttachmentAction.d.ts.map +1 -1
  9. package/attachment/useAttachmentValidation/useAttachmentValidation.d.ts.map +1 -1
  10. package/catalog/catalog-derivations.d.ts +27 -0
  11. package/catalog/catalog-derivations.d.ts.map +1 -0
  12. package/catalog/catalog-primary-action.d.ts +47 -0
  13. package/catalog/catalog-primary-action.d.ts.map +1 -0
  14. package/catalog/create-publish-api.d.ts +32 -0
  15. package/catalog/create-publish-api.d.ts.map +1 -0
  16. package/catalog/deployment-endpoint-url.d.ts +19 -0
  17. package/catalog/deployment-endpoint-url.d.ts.map +1 -0
  18. package/catalog/deployment-id.d.ts +21 -0
  19. package/catalog/deployment-id.d.ts.map +1 -0
  20. package/catalog/entity-details.d.ts +132 -0
  21. package/catalog/entity-details.d.ts.map +1 -0
  22. package/catalog/map-deployment-limits-to-catalog.d.ts +33 -0
  23. package/catalog/map-deployment-limits-to-catalog.d.ts.map +1 -0
  24. package/catalog/map-deployment-limits-to-input.d.ts +15 -0
  25. package/catalog/map-deployment-limits-to-input.d.ts.map +1 -0
  26. package/catalog/map-deployment-to-catalog-item.d.ts +60 -0
  27. package/catalog/map-deployment-to-catalog-item.d.ts.map +1 -0
  28. package/catalog/map-entity-details-to-catalog.d.ts +23 -0
  29. package/catalog/map-entity-details-to-catalog.d.ts.map +1 -0
  30. package/catalog/map-prompt-to-catalog-item.d.ts +43 -0
  31. package/catalog/map-prompt-to-catalog-item.d.ts.map +1 -0
  32. package/catalog/map-skill-to-catalog-item.d.ts +87 -0
  33. package/catalog/map-skill-to-catalog-item.d.ts.map +1 -0
  34. package/catalog/mcp-endpoint-url.d.ts +18 -0
  35. package/catalog/mcp-endpoint-url.d.ts.map +1 -0
  36. package/catalog/publish.d.ts +17 -0
  37. package/catalog/publish.d.ts.map +1 -0
  38. package/catalog/useCatalogItemDetails.d.ts +73 -0
  39. package/catalog/useCatalogItemDetails.d.ts.map +1 -0
  40. package/catalog/useFavoriteEntitiesState/useFavoriteEntitiesState.d.ts +37 -0
  41. package/catalog/useFavoriteEntitiesState/useFavoriteEntitiesState.d.ts.map +1 -0
  42. package/catalog/usePublishFolders/usePublishFolders.d.ts +71 -0
  43. package/catalog/usePublishFolders/usePublishFolders.d.ts.map +1 -0
  44. package/conversation/announcement-message.d.ts +34 -0
  45. package/conversation/announcement-message.d.ts.map +1 -0
  46. package/conversation/conversation-transfer/import-conversation.d.ts.map +1 -1
  47. package/conversation/conversation-transfer/queue.d.ts +1 -1
  48. package/conversation/conversation-transfer/queue.d.ts.map +1 -1
  49. package/conversation/conversation-transfer/types.d.ts +0 -27
  50. package/conversation/conversation-transfer/types.d.ts.map +1 -1
  51. package/conversation/create-chat-stream-api.d.ts +38 -0
  52. package/conversation/create-chat-stream-api.d.ts.map +1 -0
  53. package/conversation/deriveConversationRowActionState/deriveConversationRowActionState.d.ts +39 -0
  54. package/conversation/deriveConversationRowActionState/deriveConversationRowActionState.d.ts.map +1 -0
  55. package/conversation/display-name-watch.d.ts +4 -0
  56. package/conversation/display-name-watch.d.ts.map +1 -0
  57. package/conversation/footer-message.d.ts +10 -0
  58. package/conversation/footer-message.d.ts.map +1 -0
  59. package/conversation/get-model-id-from-conversation-id.d.ts +27 -0
  60. package/conversation/get-model-id-from-conversation-id.d.ts.map +1 -0
  61. package/conversation/greeting.d.ts +18 -0
  62. package/conversation/greeting.d.ts.map +1 -0
  63. package/conversation/message-factory.d.ts +7 -0
  64. package/conversation/message-factory.d.ts.map +1 -0
  65. package/conversation/message-utils.d.ts +27 -0
  66. package/conversation/message-utils.d.ts.map +1 -0
  67. package/conversation/overlay-messages.d.ts +5 -0
  68. package/conversation/overlay-messages.d.ts.map +1 -0
  69. package/conversation/quick-app-conversation-starters.d.ts +10 -0
  70. package/conversation/quick-app-conversation-starters.d.ts.map +1 -0
  71. package/conversation/starter-option.d.ts +21 -0
  72. package/conversation/starter-option.d.ts.map +1 -0
  73. package/conversation/useActiveConversationSync/useActiveConversationSync.d.ts +34 -0
  74. package/conversation/useActiveConversationSync/useActiveConversationSync.d.ts.map +1 -0
  75. package/conversation/useAsyncConfirmDialog/useAsyncConfirmDialog.d.ts +37 -0
  76. package/conversation/useAsyncConfirmDialog/useAsyncConfirmDialog.d.ts.map +1 -0
  77. package/conversation/useConversationExport/useConversationExport.d.ts +2 -1
  78. package/conversation/useConversationExport/useConversationExport.d.ts.map +1 -1
  79. package/conversation/useConversationHandlers/starter-option.d.ts.map +1 -1
  80. package/conversation/useConversationHandlers/useConversationHandlers.d.ts.map +1 -1
  81. package/conversation/useConversationImport/useConversationImport.d.ts +2 -1
  82. package/conversation/useConversationImport/useConversationImport.d.ts.map +1 -1
  83. package/conversation/useConversationLookupMaps/useConversationLookupMaps.d.ts +24 -0
  84. package/conversation/useConversationLookupMaps/useConversationLookupMaps.d.ts.map +1 -0
  85. package/conversation/useConversationPanelItems/useConversationPanelItems.d.ts +58 -0
  86. package/conversation/useConversationPanelItems/useConversationPanelItems.d.ts.map +1 -0
  87. package/conversation/useConversationStream/conversation-path.d.ts +0 -2
  88. package/conversation/useConversationStream/conversation-path.d.ts.map +1 -1
  89. package/conversation/useConversationStream/useConversationStream.d.ts.map +1 -1
  90. package/conversation/useImportFilePicker/useImportFilePicker.d.ts +32 -0
  91. package/conversation/useImportFilePicker/useImportFilePicker.d.ts.map +1 -0
  92. package/files/annotation.d.ts +10 -0
  93. package/files/annotation.d.ts.map +1 -0
  94. package/files/attachment-canvas.d.ts +90 -0
  95. package/files/attachment-canvas.d.ts.map +1 -0
  96. package/files/attachment-dto-to-display.d.ts +10 -0
  97. package/files/attachment-dto-to-display.d.ts.map +1 -0
  98. package/files/attachment-types.d.ts +14 -0
  99. package/files/attachment-types.d.ts.map +1 -0
  100. package/files/create-files-api.d.ts +52 -0
  101. package/files/create-files-api.d.ts.map +1 -0
  102. package/files/create-upload-file-with-progress.d.ts +24 -0
  103. package/files/create-upload-file-with-progress.d.ts.map +1 -0
  104. package/files/dial-file-manager-mapping.util.d.ts +1 -1
  105. package/files/dial-file-manager-mapping.util.d.ts.map +1 -1
  106. package/files/dial-file-manager-path.util.d.ts.map +1 -1
  107. package/files/dial-file-manager.types.d.ts +2 -5
  108. package/files/dial-file-manager.types.d.ts.map +1 -1
  109. package/files/dial-file-to-attachment.d.ts +26 -0
  110. package/files/dial-file-to-attachment.d.ts.map +1 -0
  111. package/files/dial-file.d.ts +17 -0
  112. package/files/dial-file.d.ts.map +1 -0
  113. package/files/file-manager-variant.d.ts +2 -20
  114. package/files/file-manager-variant.d.ts.map +1 -1
  115. package/files/prepare-download-destination.d.ts +8 -0
  116. package/files/prepare-download-destination.d.ts.map +1 -0
  117. package/files/resolve-dial-file-api-path.d.ts +1 -5
  118. package/files/resolve-dial-file-api-path.d.ts.map +1 -1
  119. package/files/useDialFileListing/useDialFileListing.d.ts.map +1 -1
  120. package/files/useDialFileUploadBatch/useDialFileUploadBatch.d.ts +1 -1
  121. package/files/useDialFileUploadBatch/useDialFileUploadBatch.d.ts.map +1 -1
  122. package/index.d.ts +82 -3
  123. package/index.d.ts.map +1 -1
  124. package/index.js +17933 -2128
  125. package/oauth/authorize-url.d.ts +16 -0
  126. package/oauth/authorize-url.d.ts.map +1 -0
  127. package/oauth/handshake.d.ts +30 -0
  128. package/oauth/handshake.d.ts.map +1 -0
  129. package/oauth/models.d.ts +74 -0
  130. package/oauth/models.d.ts.map +1 -0
  131. package/oauth/popup.d.ts +30 -0
  132. package/oauth/popup.d.ts.map +1 -0
  133. package/oauth/toolset-id.d.ts +23 -0
  134. package/oauth/toolset-id.d.ts.map +1 -0
  135. package/oauth/types.d.ts +84 -0
  136. package/oauth/types.d.ts.map +1 -0
  137. package/oauth/useOAuthCallbackCompletion/useOAuthCallbackCompletion.d.ts +54 -0
  138. package/oauth/useOAuthCallbackCompletion/useOAuthCallbackCompletion.d.ts.map +1 -0
  139. package/oauth/useToolsetLogin/useToolsetLogin.d.ts +72 -0
  140. package/oauth/useToolsetLogin/useToolsetLogin.d.ts.map +1 -0
  141. package/package.json +20 -9
  142. package/prompt/export-prompt.d.ts +31 -0
  143. package/prompt/export-prompt.d.ts.map +1 -0
  144. package/prompt/prompt-resource.d.ts +30 -0
  145. package/prompt/prompt-resource.d.ts.map +1 -0
  146. package/prompt/prompt.d.ts +34 -0
  147. package/prompt/prompt.d.ts.map +1 -0
  148. package/prompt/usePromptsState/usePromptsState.d.ts +34 -0
  149. package/prompt/usePromptsState/usePromptsState.d.ts.map +1 -0
  150. package/scheduled-task/scheduled-task-mapping.d.ts +19 -0
  151. package/scheduled-task/scheduled-task-mapping.d.ts.map +1 -0
  152. package/scheduled-task/scheduled-task-trigger.d.ts +27 -0
  153. package/scheduled-task/scheduled-task-trigger.d.ts.map +1 -0
  154. package/shared/application-schema.d.ts +10 -0
  155. package/shared/application-schema.d.ts.map +1 -0
  156. package/shared/browser-timezone.d.ts +7 -0
  157. package/shared/browser-timezone.d.ts.map +1 -0
  158. package/shared/cron-weekday.d.ts +5 -0
  159. package/shared/cron-weekday.d.ts.map +1 -0
  160. package/shared/custom-apps.d.ts +7 -0
  161. package/shared/custom-apps.d.ts.map +1 -0
  162. package/shared/external-services.d.ts +16 -0
  163. package/shared/external-services.d.ts.map +1 -0
  164. package/shared/formatting.d.ts +5 -0
  165. package/shared/formatting.d.ts.map +1 -0
  166. package/shared/locale.d.ts +45 -0
  167. package/shared/locale.d.ts.map +1 -0
  168. package/shared/string-utils.d.ts +9 -0
  169. package/shared/string-utils.d.ts.map +1 -0
  170. package/shared/toolset-login-events.d.ts +15 -0
  171. package/shared/toolset-login-events.d.ts.map +1 -0
  172. package/skill/skill-file-batch-validation.d.ts +70 -0
  173. package/skill/skill-file-batch-validation.d.ts.map +1 -0
  174. package/skill/skill-file-preview.d.ts +25 -0
  175. package/skill/skill-file-preview.d.ts.map +1 -0
  176. package/skill/skill-manifest.d.ts +28 -0
  177. package/skill/skill-manifest.d.ts.map +1 -0
  178. package/skill/skill-types.d.ts +42 -0
  179. package/skill/skill-types.d.ts.map +1 -0
  180. package/skill/skill.d.ts +114 -0
  181. package/skill/skill.d.ts.map +1 -0
  182. package/skill/useSkillEditorLoad.d.ts +74 -0
  183. package/skill/useSkillEditorLoad.d.ts.map +1 -0
  184. package/skill/useSkillEditorSubmit.d.ts +105 -0
  185. package/skill/useSkillEditorSubmit.d.ts.map +1 -0
  186. package/skill/useSkillFileActions.d.ts +53 -0
  187. package/skill/useSkillFileActions.d.ts.map +1 -0
  188. package/skill/useSkillFilePreview.d.ts +38 -0
  189. package/skill/useSkillFilePreview.d.ts.map +1 -0
  190. package/skill/useSkillsState/useSkillsState.d.ts +35 -0
  191. package/skill/useSkillsState/useSkillsState.d.ts.map +1 -0
  192. package/usage/useUsageData/useUsageData.d.ts +20 -0
  193. package/usage/useUsageData/useUsageData.d.ts.map +1 -0
  194. package/useShareLink/useShareLink.d.ts +2 -2
  195. package/useShareLink/useShareLink.d.ts.map +1 -1
  196. package/useToolsMenu/useToolsMenu.d.ts +7 -16
  197. package/useToolsMenu/useToolsMenu.d.ts.map +1 -1
  198. package/files/string-utils.d.ts +0 -3
  199. package/files/string-utils.d.ts.map +0 -1
  200. package/files/upload-batch.types.d.ts +0 -22
  201. package/files/upload-batch.types.d.ts.map +0 -1
  202. package/files/useGridEditingScroll/useGridEditingScroll.d.ts +0 -27
  203. package/files/useGridEditingScroll/useGridEditingScroll.d.ts.map +0 -1
@@ -0,0 +1,19 @@
1
+ import { ScheduledTaskCreateFormValues } from '@epam/ai-dial-scheduled-tasks';
2
+ /** Why a scheduled task DTO could not be mapped back to editable form values. */
3
+ export declare enum UnsupportedTriggerReason {
4
+ /** `trigger.cron.fields` uses a shape (extra keys, or both `day_of_week` and `day`) the editor's schedule controls cannot represent. */
5
+ UnsupportedCronShape = "unsupportedCronShape",
6
+ /** Neither or both of `trigger.date`/`trigger.cron` are set, so the schedule type cannot be determined. */
7
+ UnsupportedTriggerType = "unsupportedTriggerType",
8
+ /** The task is missing `model` or `prompt`, so it cannot be represented as a valid update payload. */
9
+ MissingRequiredFields = "missingRequiredFields"
10
+ }
11
+ /** Result of mapping a scheduled task DTO back to editable form values. */
12
+ export type ScheduledTaskDtoMappingResult = {
13
+ ok: true;
14
+ values: ScheduledTaskCreateFormValues;
15
+ } | {
16
+ ok: false;
17
+ reason: UnsupportedTriggerReason;
18
+ };
19
+ //# sourceMappingURL=scheduled-task-mapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduled-task-mapping.d.ts","sourceRoot":"","sources":["../../src/scheduled-task/scheduled-task-mapping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAEnF,iFAAiF;AACjF,oBAAY,wBAAwB;IAClC,wIAAwI;IACxI,oBAAoB,yBAAyB;IAC7C,2GAA2G;IAC3G,sBAAsB,2BAA2B;IACjD,sGAAsG;IACtG,qBAAqB,0BAA0B;CAChD;AAED,2EAA2E;AAC3E,MAAM,MAAM,6BAA6B,GACrC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,6BAA6B,CAAA;CAAE,GACnD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,wBAAwB,CAAA;CAAE,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { CreateScheduledTaskBodyDto, ScheduledTaskDto, UpdateScheduledTaskBodyDto } from '@epam/ai-dial-chat-api-client';
2
+ import { ScheduledTaskCreateFormValues } from '@epam/ai-dial-scheduled-tasks';
3
+ import { ScheduledTaskDtoMappingResult } from './scheduled-task-mapping';
4
+ /**
5
+ * Maps validated create-form values to the `POST /api/v1/scheduled-tasks`
6
+ * request body, building `trigger.date` for a one-shot schedule or
7
+ * `trigger.cron.fields` for a recurring one. Assumes the caller has already
8
+ * validated required fields (name, model, prompt, and the active schedule
9
+ * section's fields) — this function does not re-validate.
10
+ */
11
+ export declare const mapFormValuesToCreateBody: (values: ScheduledTaskCreateFormValues) => CreateScheduledTaskBodyDto;
12
+ /**
13
+ * Maps validated edit-form values to the `PUT /api/v1/scheduled-tasks/:scheduleId`
14
+ * request body. `UpdateScheduledTaskBodyDto` has the same shape as
15
+ * `CreateScheduledTaskBodyDto`, so this reuses the same trigger-building logic.
16
+ */
17
+ export declare const mapFormValuesToUpdateBody: (values: ScheduledTaskCreateFormValues) => UpdateScheduledTaskBodyDto;
18
+ /**
19
+ * Attempts to map a {@link ScheduledTaskDto} back to editable
20
+ * {@link ScheduledTaskCreateFormValues}, inverting {@link buildCronFields}/
21
+ * {@link buildCronWindowBoundary}. Fails closed — returning a reason instead
22
+ * of a value — whenever the task's trigger or required fields cannot be
23
+ * represented losslessly by the editor, so an unsupported schedule is never
24
+ * silently coerced and re-submitted.
25
+ */
26
+ export declare const mapScheduledTaskDtoToFormValues: (dto: ScheduledTaskDto) => ScheduledTaskDtoMappingResult;
27
+ //# sourceMappingURL=scheduled-task-trigger.d.ts.map
@@ -0,0 +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;AAMvC,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,0BAA0B,CAAC;AAmGlC;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,GACpC,QAAQ,6BAA6B,KACpC,0BAmCF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GACpC,QAAQ,6BAA6B,KACpC,0BAA+D,CAAC;AAqHnE;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,GAC1C,KAAK,gBAAgB,KACpB,6BAyFF,CAAC"}
@@ -0,0 +1,10 @@
1
+ /** Shape of an application schema sufficient to classify it. */
2
+ export interface QuickAppSchemaLike {
3
+ id?: string;
4
+ displayName?: string;
5
+ }
6
+ /** True when `schema` is the custom-app (code app) schema. */
7
+ export declare const isCustomAppSchema: (schema?: QuickAppSchemaLike) => boolean;
8
+ /** True when `schema` is a Quick App 2.0 schema. */
9
+ export declare const isQuickAppSchema: (schema?: QuickAppSchemaLike) => boolean;
10
+ //# sourceMappingURL=application-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application-schema.d.ts","sourceRoot":"","sources":["../../src/shared/application-schema.ts"],"names":[],"mappings":"AAMA,gEAAgE;AAChE,MAAM,WAAW,kBAAkB;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,8DAA8D;AAC9D,eAAO,MAAM,iBAAiB,GAAI,SAAS,kBAAkB,KAAG,OAChB,CAAC;AAQjD,oDAAoD;AACpD,eAAO,MAAM,gBAAgB,GAAI,SAAS,kBAAkB,KAAG,OAGpB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Resolves the browser's current IANA timezone for request-scoped downstream
3
+ * context. Detection is best-effort because embedded or restricted runtimes
4
+ * may expose an incomplete `Intl` implementation.
5
+ */
6
+ export declare const getBrowserTimezone: () => string | undefined;
7
+ //# sourceMappingURL=browser-timezone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-timezone.d.ts","sourceRoot":"","sources":["../../src/shared/browser-timezone.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAAM,GAAG,SAM9C,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** Converts an APScheduler weekday (Monday=0..Sunday=6) to a JS `Date` weekday (Sunday=0..Saturday=6). */
2
+ export declare const apSchedulerDayToJsDay: (apSchedulerDay: number) => number;
3
+ /** Converts a JS `Date` weekday (Sunday=0..Saturday=6) to an APScheduler weekday (Monday=0..Sunday=6). */
4
+ export declare const jsDayToApSchedulerDay: (jsDay: number) => number;
5
+ //# sourceMappingURL=cron-weekday.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron-weekday.d.ts","sourceRoot":"","sources":["../../src/shared/cron-weekday.ts"],"names":[],"mappings":"AAMA,0GAA0G;AAC1G,eAAO,MAAM,qBAAqB,GAAI,gBAAgB,MAAM,KAAG,MACrC,CAAC;AAE3B,0GAA0G;AAC1G,eAAO,MAAM,qBAAqB,GAAI,OAAO,MAAM,KAAG,MAAyB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /** True when `value` is a well-formed absolute `http(s)://` URL. */
2
+ export declare const isValidAbsoluteUrl: (value: string) => boolean;
3
+ /** Parses a custom app's `featuresData` JSON string, or `undefined` if it is empty or invalid. */
4
+ export declare const parseFeaturesData: (value: string) => Record<string, unknown> | undefined;
5
+ /** True when `value` is empty, or a JSON object containing only the allowed `featuresData` keys. */
6
+ export declare const isValidFeaturesData: (value: string) => boolean;
7
+ //# sourceMappingURL=custom-apps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-apps.d.ts","sourceRoot":"","sources":["../../src/shared/custom-apps.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,KAAG,OASlD,CAAC;AAEF,kGAAkG;AAClG,eAAO,MAAM,iBAAiB,GAC5B,OAAO,MAAM,KACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAQ5B,CAAC;AAIF,oGAAoG;AACpG,eAAO,MAAM,mBAAmB,GAAI,OAAO,MAAM,KAAG,OAenD,CAAC"}
@@ -0,0 +1,16 @@
1
+ export interface ParsedExternalServiceUrl {
2
+ /** The application's own resource id — used for `GET /api/v1/deployments/{appId}/details`. */
3
+ appId: string;
4
+ /** Key into `applicationDetails.externalServices` for this specific dependency. */
5
+ serviceName: string;
6
+ }
7
+ export declare const parseExternalServiceUrl: (url: string) => ParsedExternalServiceUrl | null;
8
+ /** Reconstructs the exact scope id Core expects as `ResourceSignInRequest`/`ResourceSignOutRequest`'s `url` field. */
9
+ export declare const buildExternalServiceScopeId: (appId: string, serviceName: string) => string;
10
+ /**
11
+ * Derives a human-readable fallback label from an external service's raw
12
+ * `serviceName` when metadata hasn't resolved yet — mirrors
13
+ * `getToolsetFallbackName`'s percent-decoding behavior.
14
+ */
15
+ export declare const getExternalServiceFallbackName: (serviceName: string) => string;
16
+ //# sourceMappingURL=external-services.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-services.d.ts","sourceRoot":"","sources":["../../src/shared/external-services.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,wBAAwB;IACvC,8FAA8F;IAC9F,KAAK,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,uBAAuB,GAClC,KAAK,MAAM,KACV,wBAAwB,GAAG,IAS7B,CAAC;AAEF,sHAAsH;AACtH,eAAO,MAAM,2BAA2B,GACtC,OAAO,MAAM,EACb,aAAa,MAAM,KAClB,MAAiE,CAAC;AAErE;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,GAAI,aAAa,MAAM,KAAG,MAMpE,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** Pads a number or numeric string to at least 2 digits with a leading zero (e.g. `9` / `'9'` → `'09'`). */
2
+ export declare const padTwoDigits: (value: number | string) => string;
3
+ /** Formats a Unix timestamp (ms) as a locale-formatted calendar date, e.g. `'22/7/2026'`. */
4
+ export declare const formatCalendarDate: (timestampMs: number) => string;
5
+ //# sourceMappingURL=formatting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatting.d.ts","sourceRoot":"","sources":["../../src/shared/formatting.ts"],"names":[],"mappings":"AAAA,4GAA4G;AAC5G,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,GAAG,MAAM,KAAG,MACtB,CAAC;AAEjC,6FAA6F;AAC7F,eAAO,MAAM,kBAAkB,GAAI,aAAa,MAAM,KAAG,MACb,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { LocaleTextEntryDto } from '@epam/ai-dial-chat-api-client';
2
+ import { DeploymentCreationFormLocaleEntry, DeploymentCreationFormLocaleOption } from '@epam/ai-dial-deployment-creation-form';
3
+ /** Lowercased base language of a BCP-47 tag, e.g. `'en-US'` -> `'en'`. */
4
+ export declare const toBaseLocale: (locale: string) => string;
5
+ /**
6
+ * DIAL Core's shape for a user-facing text field: either a plain string (no
7
+ * localized variants — displayed identically for every locale) or a map of
8
+ * locale code to translated value.
9
+ */
10
+ export type LocalizedText = string | Record<string, string>;
11
+ /**
12
+ * Resolves a `LocalizedText` value to a single display string for
13
+ * `activeLocale`: exact locale match, then base-language match, then
14
+ * `primaryLocale`, then the first defined value in the map, then `''`. A
15
+ * plain string is returned unchanged — it has no locale variants.
16
+ */
17
+ export declare const resolveLocalizedText: (value: LocalizedText | undefined | null, activeLocale: string, primaryLocale: string) => string;
18
+ /** Appends a locale's uppercased code to a field label, e.g. `'Name [EN]'`. */
19
+ export declare const appendLocaleCode: (label: string, locale: string) => string;
20
+ /**
21
+ * Composes the "Add locale" popup's entries into the write-payload shape:
22
+ * strips the popup's client-only `id`, drops rows with no `language`, drops
23
+ * rows with neither `name` nor `description`, drops rows colliding with
24
+ * `primaryLocale` (that content belongs in the primary field, not here), and
25
+ * dedupes by `language` (last row for a given language wins). Returns
26
+ * `undefined` (not `[]`) when nothing remains, so a request untouched by
27
+ * this feature stays byte-identical to today.
28
+ */
29
+ export declare const composeLocalePayload: (otherLocales: DeploymentCreationFormLocaleEntry[], primaryLocale: string) => LocaleTextEntryDto[] | undefined;
30
+ /**
31
+ * Inverse of {@link composeLocalePayload}: builds the popup's `otherLocales`
32
+ * entries from a `displayName`/`description` pair as read from DIAL Core.
33
+ * A plain string on both (or both absent) means no additional locales exist
34
+ * yet, so this returns `[]`. Otherwise one entry is built per locale key
35
+ * present in either map, excluding `primaryLocale` — that key is already the
36
+ * primary Name/Description field, not a row in the popup.
37
+ */
38
+ export declare const decomposeLocalizedFields: (displayName: LocalizedText | undefined, description: LocalizedText | undefined, primaryLocale: string) => DeploymentCreationFormLocaleEntry[];
39
+ /**
40
+ * Selectable additional-locale options for a locale-picker popup, drawn from
41
+ * `additionalLocaleCodes` and excluding whichever code is already the
42
+ * primary Name/Description field.
43
+ */
44
+ export declare const buildAdditionalLocaleOptions: (additionalLocaleCodes: string[], primaryLocale: string) => DeploymentCreationFormLocaleOption[];
45
+ //# sourceMappingURL=locale.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../src/shared/locale.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,KAAK,EACV,iCAAiC,EACjC,kCAAkC,EACnC,MAAM,wCAAwC,CAAC;AAEhD,0EAA0E;AAC1E,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,KAAG,MACV,CAAC;AAErC;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE5D;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,aAAa,GAAG,SAAS,GAAG,IAAI,EACvC,cAAc,MAAM,EACpB,eAAe,MAAM,KACpB,MAWF,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,EAAE,QAAQ,MAAM,KAAG,MACb,CAAC;AAErD;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,GAC/B,cAAc,iCAAiC,EAAE,EACjD,eAAe,MAAM,KACpB,kBAAkB,EAAE,GAAG,SAczB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,GACnC,aAAa,aAAa,GAAG,SAAS,EACtC,aAAa,aAAa,GAAG,SAAS,EACtC,eAAe,MAAM,KACpB,iCAAiC,EAgBnC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,GACvC,uBAAuB,MAAM,EAAE,EAC/B,eAAe,MAAM,KACpB,kCAAkC,EAGoB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /** Case-insensitive substring match. */
2
+ export declare const includesIgnoreCase: (str: string, query: string) => boolean;
3
+ /** Decodes a URI-encoded path segment, returning the original string if decoding fails. */
4
+ export declare const safeDecodeURI: (path: string) => string;
5
+ /** Alias of {@link safeDecodeURI} for call sites decoding a URI component rather than a path. */
6
+ export declare const safeDecodeURIComponent: (path: string) => string;
7
+ /** Strips leading and trailing slashes from a path segment. */
8
+ export declare const stripSurroundingSlashes: (path: string) => string;
9
+ //# sourceMappingURL=string-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-utils.d.ts","sourceRoot":"","sources":["../../src/shared/string-utils.ts"],"names":[],"mappings":"AAAA,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,15 @@
1
+ /** Detail payload for a successful toolset login, generic over the app's own credentials-level type. */
2
+ export interface ToolsetLoginSuccessDetail<T> {
3
+ /** Already-encoded toolset id/url, as passed into `useToolsetLogin`'s `login`. */
4
+ toolsetId: string;
5
+ credentialsLevel: T;
6
+ }
7
+ /**
8
+ * Broadcasts a successful toolset login to any listener within the current
9
+ * window — host-to-host, not `postMessage`, since this notifies other React
10
+ * trees in the same document (e.g. a mounted `AppEditorIframe`), not an
11
+ * embedded cross-origin iframe.
12
+ */
13
+ export declare const emitToolsetLoginSuccess: <T>(detail: ToolsetLoginSuccessDetail<T>) => void;
14
+ export declare const subscribeToolsetLoginSuccess: <T>(listener: (detail: ToolsetLoginSuccessDetail<T>) => void) => (() => void);
15
+ //# sourceMappingURL=toolset-login-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolset-login-events.d.ts","sourceRoot":"","sources":["../../src/shared/toolset-login-events.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,MAAM,WAAW,yBAAyB,CAAC,CAAC;IAC1C,kFAAkF;IAClF,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,CAAC,CAAC;CACrB;AAMD;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,GAAI,CAAC,EACvC,QAAQ,yBAAyB,CAAC,CAAC,CAAC,KACnC,IAMF,CAAC;AAMF,eAAO,MAAM,4BAA4B,GAAI,CAAC,EAC5C,UAAU,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAAC,KAAK,IAAI,KACvD,CAAC,MAAM,IAAI,CAcb,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"}
@@ -0,0 +1,25 @@
1
+ import { Attachment } from '@epam/ai-dial-chat-shared';
2
+ import { SkillFileTreeNode } from '@epam/ai-dial-skill-editor';
3
+ /**
4
+ * In-memory bytes for a Skill supporting file, plus its MIME type when known
5
+ * (e.g. from a browser upload's `File.type`).
6
+ */
7
+ export interface SkillFileContent {
8
+ /** The file's raw bytes. */
9
+ bytes: Uint8Array;
10
+ /**
11
+ * MIME type from the original browser `File.type`. Omit for edit-mode ZIP
12
+ * entries, which carry no MIME metadata — the type is then inferred from
13
+ * the file's path.
14
+ */
15
+ mimeType?: string;
16
+ }
17
+ /**
18
+ * Converts a Skill supporting file's in-memory bytes into the `Attachment`
19
+ * shape the chat attachment-canvas pipeline expects, so it can be previewed
20
+ * with `useOpenAttachmentCanvas` exactly like a chat attachment. The id is
21
+ * the file's full relative path (not its basename), so two files with the
22
+ * same name in different folders never collide.
23
+ */
24
+ export declare const skillFileToAttachment: (node: SkillFileTreeNode, content: SkillFileContent) => Attachment;
25
+ //# sourceMappingURL=skill-file-preview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-file-preview.d.ts","sourceRoot":"","sources":["../../src/skill/skill-file-preview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAM5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEpE;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B;IAC5B,KAAK,EAAE,UAAU,CAAC;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAM,iBAAiB,EACvB,SAAS,gBAAgB,KACxB,UAiBF,CAAC"}
@@ -0,0 +1,28 @@
1
+ /** Structured fields lifted from a skill manifest's frontmatter. */
2
+ export interface SkillAboutDetails {
3
+ whenToUse?: string;
4
+ allowedTools?: string[];
5
+ bundledResources?: string[];
6
+ skillPrompt?: string;
7
+ }
8
+ /** A `SKILL.md` split into its frontmatter fields and its prose body. */
9
+ export interface SkillManifestDocument {
10
+ /** `name` frontmatter field, when present and a string. */
11
+ name?: string;
12
+ /** `description` frontmatter field, when present and a string. */
13
+ description?: string;
14
+ /** Recognised `about.*` frontmatter fields. Absent when none resolved. */
15
+ about?: SkillAboutDetails;
16
+ /** Everything after the frontmatter fence, or the whole file when there is none. */
17
+ body: string;
18
+ }
19
+ /**
20
+ * Splits a `SKILL.md` into its YAML frontmatter fields and its prose body.
21
+ *
22
+ * Never throws: a file with no opening fence, no closing fence, or frontmatter
23
+ * that fails to parse resolves to the whole input as `body` with no
24
+ * frontmatter fields. Parse failure is strictly weaker than fetch failure —
25
+ * the manifest text is still returned so the Content tab can render it.
26
+ */
27
+ export declare const parseSkillManifestDocument: (raw: string) => SkillManifestDocument;
28
+ //# sourceMappingURL=skill-manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-manifest.d.ts","sourceRoot":"","sources":["../../src/skill/skill-manifest.ts"],"names":[],"mappings":"AAEA,oEAAoE;AACpE,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,yEAAyE;AACzE,MAAM,WAAW,qBAAqB;IACpC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,oFAAoF;IACpF,IAAI,EAAE,MAAM,CAAC;CACd;AAmFD;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,GACrC,KAAK,MAAM,KACV,qBAiDF,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { SkillAboutDetails } from './skill-manifest';
2
+ /** Which skill namespace a catalog skill item came from. */
3
+ export declare enum SkillSource {
4
+ /** A skill in the caller's own bucket. */
5
+ Personal = "personal",
6
+ /** A skill another user shared with the caller. */
7
+ SharedWithMe = "sharedWithMe",
8
+ /** An organisation-wide skill; read-only for every user. */
9
+ Public = "public"
10
+ }
11
+ /** DIAL Core bucket holding organisation-wide skills. */
12
+ export declare const PUBLIC_SKILL_BUCKET = "public";
13
+ /**
14
+ * Largest manifest the details panel will decode. A `SKILL.md` past this is
15
+ * treated as unreadable rather than rendered.
16
+ */
17
+ export declare const SKILL_MANIFEST_MAX_BYTES: number;
18
+ /** Items requested per skill-listing page. */
19
+ export declare const SKILL_LISTING_PAGE_SIZE = 1000;
20
+ /**
21
+ * Upper bound on `nextToken` follow-ups per listing, so a pathological bucket
22
+ * cannot spin the client forever.
23
+ */
24
+ export declare const SKILL_LISTING_MAX_PAGES = 10;
25
+ /** A skill's parsed manifest details. */
26
+ export interface SkillEntityDetails {
27
+ about?: SkillAboutDetails;
28
+ }
29
+ /** A skill resource URL split into the bucket and the path within it. */
30
+ export interface ParsedSkillResourceUrl {
31
+ /** DIAL Core bucket name. */
32
+ bucket: string;
33
+ /** Path to the skill within that bucket. */
34
+ path: string;
35
+ }
36
+ /**
37
+ * Splits a `skills/{bucket}/{path}` resource URL into its parts, mirroring the
38
+ * backend's parser. Returns `null` for a different prefix, an empty bucket, or
39
+ * an empty path, so callers can treat "not a skill URL" as one case.
40
+ */
41
+ export declare const parseSkillResourceUrl: (url: string) => ParsedSkillResourceUrl | null;
42
+ //# sourceMappingURL=skill-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-types.d.ts","sourceRoot":"","sources":["../../src/skill/skill-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,4DAA4D;AAC5D,oBAAY,WAAW;IACrB,0CAA0C;IAC1C,QAAQ,aAAa;IACrB,mDAAmD;IACnD,YAAY,iBAAiB;IAC7B,4DAA4D;IAC5D,MAAM,WAAW;CAClB;AAED,yDAAyD;AACzD,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAK5C;;;GAGG;AACH,eAAO,MAAM,wBAAwB,QAAa,CAAC;AAEnD,8CAA8C;AAC9C,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C,yCAAyC;AACzC,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,iBAAiB,CAAC;CAC3B;AAED,yEAAyE;AACzE,MAAM,WAAW,sBAAsB;IACrC,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,GAChC,KAAK,MAAM,KACV,sBAAsB,GAAG,IAS3B,CAAC"}
@@ -0,0 +1,114 @@
1
+ import { SkillFileTreeNode } from '@epam/ai-dial-skill-editor';
2
+ import { SkillFileContent } from './skill-file-preview';
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`). */
4
+ export declare const SKILL_MANIFEST_FILE = "SKILL.md";
5
+ /**
6
+ * Client-side mirror of the backend's default `SKILL_FILE_UPLOAD_MAX_BYTES`
7
+ * (`apps/chat-api/src/config/environment.config.ts`), used only for
8
+ * immediate inline feedback when a user picks a file to upload — the server
9
+ * remains authoritative and enforces its own configured limit regardless.
10
+ */
11
+ export declare const SKILL_FILE_UPLOAD_MAX_BYTES = 1048576;
12
+ /**
13
+ * Client-side mirror of the backend's default `SKILL_UPLOAD_MAX_TOTAL_BYTES`
14
+ * (`apps/chat-api/src/config/environment.config.ts`), used only for
15
+ * immediate inline feedback on the projected total package size — the server
16
+ * remains authoritative and enforces its own configured limit regardless.
17
+ */
18
+ export declare const SKILL_UPLOAD_MAX_TOTAL_BYTES = 16777216;
19
+ /**
20
+ * Client-side mirror of the backend's default `SKILL_UPLOAD_MAX_FILES`
21
+ * (`apps/chat-api/src/config/environment.config.ts`), used only for
22
+ * immediate inline feedback on the projected total file count (including the
23
+ * root `SKILL.md`) — the server remains authoritative regardless.
24
+ */
25
+ export declare const SKILL_UPLOAD_MAX_FILES = 100;
26
+ /**
27
+ * Client-side mirror of the backend's `isValidSkillRelativePath`
28
+ * (`apps/chat-api/src/skills/utils/skill-path.util.ts`), used only for
29
+ * immediate inline feedback — the server remains authoritative and may still
30
+ * reject a path this function accepts.
31
+ */
32
+ export declare const isValidSkillRelativePath: (relativePath: string) => boolean;
33
+ /**
34
+ * Normalizes a user-entered skill name to the DIAL naming convention
35
+ * (lowercase letters, digits, and hyphens; no spaces): lowercases the input,
36
+ * replaces every run of whitespace/invalid characters with a single hyphen,
37
+ * and trims leading/trailing hyphens.
38
+ */
39
+ export declare const normalizeSkillName: (input: string) => string;
40
+ /** Skill fields serialized into the `SKILL.md` manifest. */
41
+ export interface SkillManifestValues {
42
+ /** Normalized skill name. */
43
+ name: string;
44
+ /** Short description of what the skill does. */
45
+ description: string;
46
+ /** The skill's instructions body (Markdown). */
47
+ instructions: string;
48
+ }
49
+ /**
50
+ * Builds `SKILL.md`'s content: a YAML frontmatter block (`name`/`description`,
51
+ * serialized with the `yaml` package so special characters are always
52
+ * correctly escaped) followed by the raw instructions body.
53
+ */
54
+ export declare const buildSkillManifest: ({ name, description, instructions, }: SkillManifestValues) => string;
55
+ /**
56
+ * Builds `SKILL.md`'s content for an edit save: reassigns only `name`/
57
+ * `description` onto the *loaded* frontmatter object (mutating a shallow
58
+ * copy, never the original) so unrecognized fields (e.g. `version`) survive
59
+ * re-serialization unchanged, then appends the (possibly edited)
60
+ * instructions body.
61
+ */
62
+ export declare const buildSkillManifestFromFrontmatter: (baseFrontmatter: Record<string, unknown>, name: string, description: string, instructions: string) => string;
63
+ /** A skill's `SKILL.md` split into its parsed frontmatter object and the raw instructions body. */
64
+ export interface ParsedSkillManifest {
65
+ /** The full parsed frontmatter object, including fields this app never renders. */
66
+ frontmatter: Record<string, unknown>;
67
+ /** The instructions body following the closing `---` delimiter. */
68
+ instructions: string;
69
+ }
70
+ /**
71
+ * Parses a `SKILL.md`'s YAML frontmatter and instructions body — the inverse
72
+ * of `buildSkillManifest`/`buildSkillManifestFromFrontmatter`. Throws if the
73
+ * manifest has no `---`-delimited frontmatter block.
74
+ */
75
+ export declare const parseSkillManifest: (manifestText: string) => ParsedSkillManifest;
76
+ /** A skill archive unpacked into its manifest text and a relative-path → bytes map of every other entry. */
77
+ export interface UnpackedSkillArchive {
78
+ /** The root `SKILL.md` entry's decoded text content. */
79
+ manifestText: string;
80
+ /** Every non-manifest entry, keyed by relative path. */
81
+ files: Map<string, Uint8Array>;
82
+ }
83
+ /**
84
+ * Unpacks a whole-skill ZIP (as downloaded from `GET /api/v1/skills/download`
85
+ * — DIAL Core's whole-resource `GET` is the one place this contract still
86
+ * uses a ZIP, per design.md) into its manifest text and every other entry's
87
+ * bytes. Throws if the archive has no root `SKILL.md` entry.
88
+ */
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;
114
+ //# sourceMappingURL=skill.d.ts.map
@@ -0,0 +1 @@
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"}