@epam/ai-dial-chat-hooks 1.1.0-dev.277 → 1.1.0-dev.279

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 (120) 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/deployment-endpoint-url.d.ts +19 -0
  11. package/catalog/deployment-endpoint-url.d.ts.map +1 -0
  12. package/catalog/deployment-id.d.ts +21 -0
  13. package/catalog/deployment-id.d.ts.map +1 -0
  14. package/catalog/entity-details.d.ts +132 -0
  15. package/catalog/entity-details.d.ts.map +1 -0
  16. package/catalog/map-deployment-limits-to-input.d.ts +15 -0
  17. package/catalog/map-deployment-limits-to-input.d.ts.map +1 -0
  18. package/catalog/map-deployment-to-catalog-item.d.ts +60 -0
  19. package/catalog/map-deployment-to-catalog-item.d.ts.map +1 -0
  20. package/catalog/map-entity-details-to-catalog.d.ts +23 -0
  21. package/catalog/map-entity-details-to-catalog.d.ts.map +1 -0
  22. package/catalog/map-prompt-to-catalog-item.d.ts +45 -0
  23. package/catalog/map-prompt-to-catalog-item.d.ts.map +1 -0
  24. package/catalog/map-skill-to-catalog-item.d.ts +87 -0
  25. package/catalog/map-skill-to-catalog-item.d.ts.map +1 -0
  26. package/catalog/mcp-endpoint-url.d.ts +18 -0
  27. package/catalog/mcp-endpoint-url.d.ts.map +1 -0
  28. package/catalog/publish.d.ts +17 -0
  29. package/catalog/publish.d.ts.map +1 -0
  30. package/conversation/announcement-message.d.ts +28 -0
  31. package/conversation/announcement-message.d.ts.map +1 -0
  32. package/conversation/create-chat-stream-api.d.ts +38 -0
  33. package/conversation/create-chat-stream-api.d.ts.map +1 -0
  34. package/conversation/display-name-watch.d.ts +4 -0
  35. package/conversation/display-name-watch.d.ts.map +1 -0
  36. package/conversation/footer-message.d.ts +10 -0
  37. package/conversation/footer-message.d.ts.map +1 -0
  38. package/conversation/get-model-id-from-conversation-id.d.ts +27 -0
  39. package/conversation/get-model-id-from-conversation-id.d.ts.map +1 -0
  40. package/conversation/greeting.d.ts +18 -0
  41. package/conversation/greeting.d.ts.map +1 -0
  42. package/conversation/message-factory.d.ts +7 -0
  43. package/conversation/message-factory.d.ts.map +1 -0
  44. package/conversation/message-utils.d.ts +27 -0
  45. package/conversation/message-utils.d.ts.map +1 -0
  46. package/conversation/overlay-messages.d.ts +5 -0
  47. package/conversation/overlay-messages.d.ts.map +1 -0
  48. package/conversation/quick-app-conversation-starters.d.ts +10 -0
  49. package/conversation/quick-app-conversation-starters.d.ts.map +1 -0
  50. package/conversation/starter-option.d.ts +21 -0
  51. package/conversation/starter-option.d.ts.map +1 -0
  52. package/conversation/useConversationHandlers/starter-option.d.ts.map +1 -1
  53. package/conversation/useConversationStream/conversation-path.d.ts +0 -2
  54. package/conversation/useConversationStream/conversation-path.d.ts.map +1 -1
  55. package/conversation/useConversationStream/useConversationStream.d.ts.map +1 -1
  56. package/files/annotation.d.ts +10 -0
  57. package/files/annotation.d.ts.map +1 -0
  58. package/files/attachment-canvas.d.ts +90 -0
  59. package/files/attachment-canvas.d.ts.map +1 -0
  60. package/files/attachment-dto-to-display.d.ts +10 -0
  61. package/files/attachment-dto-to-display.d.ts.map +1 -0
  62. package/files/attachment-types.d.ts +14 -0
  63. package/files/attachment-types.d.ts.map +1 -0
  64. package/files/create-files-api.d.ts +52 -0
  65. package/files/create-files-api.d.ts.map +1 -0
  66. package/files/create-upload-file-with-progress.d.ts +24 -0
  67. package/files/create-upload-file-with-progress.d.ts.map +1 -0
  68. package/files/dial-file-manager-mapping.util.d.ts.map +1 -1
  69. package/files/dial-file-manager-path.util.d.ts.map +1 -1
  70. package/files/dial-file-to-attachment.d.ts +26 -0
  71. package/files/dial-file-to-attachment.d.ts.map +1 -0
  72. package/files/dial-file.d.ts +17 -0
  73. package/files/dial-file.d.ts.map +1 -0
  74. package/files/file-path.d.ts +3 -0
  75. package/files/file-path.d.ts.map +1 -0
  76. package/files/prepare-download-destination.d.ts +8 -0
  77. package/files/prepare-download-destination.d.ts.map +1 -0
  78. package/files/useDialFileListing/useDialFileListing.d.ts.map +1 -1
  79. package/index.d.ts +54 -1
  80. package/index.d.ts.map +1 -1
  81. package/index.js +15717 -1054
  82. package/package.json +20 -8
  83. package/prompt/export-prompt.d.ts +31 -0
  84. package/prompt/export-prompt.d.ts.map +1 -0
  85. package/prompt/prompt-resource.d.ts +31 -0
  86. package/prompt/prompt-resource.d.ts.map +1 -0
  87. package/prompt/prompt.d.ts +34 -0
  88. package/prompt/prompt.d.ts.map +1 -0
  89. package/scheduled-task/scheduled-task-mapping.d.ts +19 -0
  90. package/scheduled-task/scheduled-task-mapping.d.ts.map +1 -0
  91. package/scheduled-task/scheduled-task-trigger.d.ts +27 -0
  92. package/scheduled-task/scheduled-task-trigger.d.ts.map +1 -0
  93. package/shared/application-schema.d.ts +10 -0
  94. package/shared/application-schema.d.ts.map +1 -0
  95. package/shared/browser-timezone.d.ts +7 -0
  96. package/shared/browser-timezone.d.ts.map +1 -0
  97. package/shared/cron-weekday.d.ts +5 -0
  98. package/shared/cron-weekday.d.ts.map +1 -0
  99. package/shared/custom-apps.d.ts +7 -0
  100. package/shared/custom-apps.d.ts.map +1 -0
  101. package/shared/external-services.d.ts +16 -0
  102. package/shared/external-services.d.ts.map +1 -0
  103. package/shared/formatting.d.ts +5 -0
  104. package/shared/formatting.d.ts.map +1 -0
  105. package/shared/locale.d.ts +45 -0
  106. package/shared/locale.d.ts.map +1 -0
  107. package/shared/string-utils.d.ts +17 -0
  108. package/shared/string-utils.d.ts.map +1 -0
  109. package/shared/toolset-login-events.d.ts +15 -0
  110. package/shared/toolset-login-events.d.ts.map +1 -0
  111. package/skill/skill-file-preview.d.ts +25 -0
  112. package/skill/skill-file-preview.d.ts.map +1 -0
  113. package/skill/skill-manifest.d.ts +28 -0
  114. package/skill/skill-manifest.d.ts.map +1 -0
  115. package/skill/skill-types.d.ts +42 -0
  116. package/skill/skill-types.d.ts.map +1 -0
  117. package/skill/skill.d.ts +88 -0
  118. package/skill/skill.d.ts.map +1 -0
  119. package/files/string-utils.d.ts +0 -3
  120. package/files/string-utils.d.ts.map +0 -1
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.277",
4
+ "version": "1.1.0-dev.279",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "main": "./index.js",
@@ -15,16 +15,28 @@
15
15
  "default": "./index.js"
16
16
  }
17
17
  },
18
+ "dependencies": {
19
+ "dompurify": "3.4.13",
20
+ "lru-cache": "^10.4.3",
21
+ "mime-types": "^3.0.2",
22
+ "yaml": "2.8.3"
23
+ },
18
24
  "peerDependencies": {
19
25
  "react": "^19.2.6",
20
- "@epam/ai-dial-attachment-canvas": "1.1.0-dev.277",
21
- "@epam/ai-dial-attachment-input": "1.1.0-dev.277",
22
- "@epam/ai-dial-chat-api-client": "1.1.0-dev.277",
23
- "@epam/ai-dial-chat-shared": "1.1.0-dev.277",
24
- "@epam/ai-dial-quotations": "1.1.0-dev.277",
26
+ "@epam/ai-dial-attachment-canvas": "1.1.0-dev.279",
27
+ "@epam/ai-dial-attachment-input": "1.1.0-dev.279",
28
+ "@epam/ai-dial-catalog": "1.1.0-dev.279",
29
+ "@epam/ai-dial-chat-api-client": "1.1.0-dev.279",
30
+ "@epam/ai-dial-chat-overlay": "1.1.0-dev.279",
31
+ "@epam/ai-dial-chat-shared": "1.1.0-dev.279",
32
+ "@epam/ai-dial-deployment-creation-form": "1.1.0-dev.279",
33
+ "@epam/ai-dial-publish-panel": "1.1.0-dev.279",
34
+ "@epam/ai-dial-quotations": "1.1.0-dev.279",
25
35
  "@epam/ai-dial-react-file-manager": "*",
26
- "@epam/ai-dial-share": "1.1.0-dev.277",
27
- "@epam/ai-dial-source-panel": "1.1.0-dev.277",
36
+ "@epam/ai-dial-scheduled-tasks": "1.1.0-dev.279",
37
+ "@epam/ai-dial-share": "1.1.0-dev.279",
38
+ "@epam/ai-dial-skill-editor": "1.1.0-dev.279",
39
+ "@epam/ai-dial-source-panel": "1.1.0-dev.279",
28
40
  "@epam/ai-dial-ui-kit": "*",
29
41
  "ag-grid-community": "^35.3.0",
30
42
  "fflate": "^0.8.3"
@@ -0,0 +1,31 @@
1
+ import { PromptResponseDto } from '@epam/ai-dial-chat-api-client';
2
+ import { ExportFolder } from '@epam/ai-dial-chat-shared';
3
+ /** A prompt record as it appears inside a downloaded prompt file. */
4
+ export interface ExportedPrompt {
5
+ /** Prompt path within the prompts namespace, doubling as its stable id. */
6
+ id: string;
7
+ /** Display name. */
8
+ name: string;
9
+ /** Description, empty when the prompt has none. */
10
+ description: string;
11
+ /** Prompt text, `{{variable}}` placeholders included verbatim. */
12
+ content: string;
13
+ /** Parent folder path; absent for a root-level prompt. */
14
+ folderId?: string;
15
+ }
16
+ /** Versioned JSON envelope produced by a prompt download. */
17
+ export interface PromptExportFormat {
18
+ /** Format version discriminator, shared with the conversation export envelope. */
19
+ version: 5;
20
+ /** Exported prompts. */
21
+ prompts: ExportedPrompt[];
22
+ /** Folders the exported prompts belong to, outermost first. */
23
+ folders: ExportFolder[];
24
+ }
25
+ /** Builds the download envelope for a single prompt, including its folder chain. */
26
+ export declare const buildPromptExportEnvelope: (prompt: PromptResponseDto) => PromptExportFormat;
27
+ /** Serializes a prompt export envelope into a pretty-printed JSON blob. */
28
+ export declare const serializePromptExport: (envelope: PromptExportFormat) => Blob;
29
+ /** Builds a prompt's download file name, e.g. `2026-08-12_ai_dial_prompt_summarize.json`. */
30
+ export declare const buildPromptExportFileName: (promptName: string, appName: string, date?: Date) => string;
31
+ //# sourceMappingURL=export-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-prompt.d.ts","sourceRoot":"","sources":["../../src/prompt/export-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAG9D,qEAAqE;AACrE,MAAM,WAAW,cAAc;IAC7B,2EAA2E;IAC3E,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,6DAA6D;AAC7D,MAAM,WAAW,kBAAkB;IACjC,kFAAkF;IAClF,OAAO,EAAE,CAAC,CAAC;IACX,wBAAwB;IACxB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,+DAA+D;IAC/D,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAmBD,oFAAoF;AACpF,eAAO,MAAM,yBAAyB,GACpC,QAAQ,iBAAiB,KACxB,kBAYD,CAAC;AAEH,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,GAAI,UAAU,kBAAkB,KAAG,IACQ,CAAC;AAK9E,6FAA6F;AAC7F,eAAO,MAAM,yBAAyB,GACpC,YAAY,MAAM,EAClB,SAAS,MAAM,EACf,OAAM,IAAiB,KACtB,MAGF,CAAC"}
@@ -0,0 +1,31 @@
1
+ /** Which prompt namespace a catalog prompt item came from. */
2
+ export declare enum PromptSource {
3
+ /** The caller's own prompt, editable and deletable by them. */
4
+ Personal = "personal",
5
+ /** Shared with the caller by another user; permissions determine editability. */
6
+ SharedWithMe = "sharedWithMe",
7
+ /** Organisation-wide prompt; read-only for every user. */
8
+ Public = "public"
9
+ }
10
+ /** A prompt resource URL split into the bucket and the path within it. */
11
+ export interface ParsedPromptResourceUrl {
12
+ /** DIAL Core bucket name. */
13
+ bucket: string;
14
+ /** Path to the prompt within that bucket. */
15
+ path: string;
16
+ }
17
+ /**
18
+ * Qualifies a bucket-relative prompt path into a `prompts/{bucket}/{path}`
19
+ * resource URL. A path alone is ambiguous once prompts from more than one
20
+ * bucket share a list: the prompts endpoints resolve a bare path against the
21
+ * caller's own bucket, so a prompt shared out of someone else's bucket needs
22
+ * the bucket carried alongside it.
23
+ */
24
+ export declare const buildPromptResourceUrl: ({ bucket, path, }: ParsedPromptResourceUrl) => string;
25
+ /**
26
+ * Splits a `prompts/{bucket}/{path}` resource URL into its parts, mirroring the
27
+ * backend's parser. Returns `null` for a different prefix, an empty bucket, or
28
+ * an empty path, so callers can treat "a bare bucket-relative path" as one case.
29
+ */
30
+ export declare const parsePromptResourceUrl: (url: string) => ParsedPromptResourceUrl | null;
31
+ //# sourceMappingURL=prompt-resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-resource.d.ts","sourceRoot":"","sources":["../../src/prompt/prompt-resource.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,oBAAY,YAAY;IACtB,+DAA+D;IAC/D,QAAQ,aAAa;IACrB,iFAAiF;IACjF,YAAY,iBAAiB;IAC7B,0DAA0D;IAC1D,MAAM,WAAW;CAClB;AAKD,0EAA0E;AAC1E,MAAM,WAAW,uBAAuB;IACtC,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,GAAI,mBAGpC,uBAAuB,KAAG,MACiB,CAAC;AAE/C;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GACjC,KAAK,MAAM,KACV,uBAAuB,GAAG,IAS5B,CAAC"}
@@ -0,0 +1,34 @@
1
+ /** Why a prompt-editor field failed client-side validation. */
2
+ export declare enum PromptFieldError {
3
+ /** The field is required and was left empty. */
4
+ Required = "required",
5
+ /** The value exceeds the backend's length limit for the field. */
6
+ TooLong = "tooLong",
7
+ /** The name contains characters the backend's allowlist rejects. */
8
+ InvalidName = "invalidName",
9
+ /** The backend reported an existing prompt or folder at the target path. */
10
+ Conflict = "conflict"
11
+ }
12
+ /** Maximum name length accepted by `CreatePromptDto.name`. */
13
+ export declare const PROMPT_NAME_MAX_LENGTH = 256;
14
+ /** Maximum description length accepted by `CreatePromptDto.description`. */
15
+ export declare const PROMPT_DESCRIPTION_MAX_LENGTH = 2000;
16
+ /** Maximum body length accepted by `CreatePromptDto.content`. */
17
+ export declare const PROMPT_CONTENT_MAX_LENGTH = 50000;
18
+ /** How close to a length limit the remaining-characters counter starts announcing. */
19
+ export declare const PROMPT_COUNTER_ANNOUNCE_THRESHOLD = 10;
20
+ /** Validates a prompt or folder name against the backend's own rules. */
21
+ export declare const validatePromptName: (name: string) => PromptFieldError | null;
22
+ /** Validates a prompt description; an empty description is valid. */
23
+ export declare const validatePromptDescription: (description: string) => PromptFieldError | null;
24
+ /** Validates a prompt body: required, and within the backend's length limit. */
25
+ export declare const validatePromptContent: (content: string) => PromptFieldError | null;
26
+ /**
27
+ * Returns the characters left before a limit, or `null` while still further
28
+ * away than the announce threshold — a counter that fires on every keystroke
29
+ * is unusable noise in a live region.
30
+ */
31
+ export declare const getRemainingCharacters: (value: string, maxLength: number) => number | null;
32
+ /** Joins a folder path and a prompt name into the DIAL prompt path used as an id. */
33
+ export declare const buildPromptPath: (folderId: string, name: string) => string;
34
+ //# sourceMappingURL=prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/prompt/prompt.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,oBAAY,gBAAgB;IAC1B,gDAAgD;IAChD,QAAQ,aAAa;IACrB,kEAAkE;IAClE,OAAO,YAAY;IACnB,oEAAoE;IACpE,WAAW,gBAAgB;IAC3B,4EAA4E;IAC5E,QAAQ,aAAa;CACtB;AAUD,8DAA8D;AAC9D,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C,4EAA4E;AAC5E,eAAO,MAAM,6BAA6B,OAAO,CAAC;AAElD,iEAAiE;AACjE,eAAO,MAAM,yBAAyB,QAAQ,CAAC;AAE/C,sFAAsF;AACtF,eAAO,MAAM,iCAAiC,KAAK,CAAC;AAEpD,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,KAAG,gBAAgB,GAAG,IAMpE,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,yBAAyB,GACpC,aAAa,MAAM,KAClB,gBAAgB,GAAG,IAGZ,CAAC;AAEX,gFAAgF;AAChF,eAAO,MAAM,qBAAqB,GAChC,SAAS,MAAM,KACd,gBAAgB,GAAG,IAMrB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GACjC,OAAO,MAAM,EACb,WAAW,MAAM,KAChB,MAAM,GAAG,IAGX,CAAC;AAEF,qFAAqF;AACrF,eAAO,MAAM,eAAe,GAAI,UAAU,MAAM,EAAE,MAAM,MAAM,KAAG,MACxB,CAAC"}
@@ -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,17 @@
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;
9
+ /** Case-insensitive substring match. */
10
+ export declare const includesIgnoreCase: (str: string, query: string) => boolean;
11
+ /** Decodes a URI-encoded path segment, returning the original string if decoding fails. */
12
+ export declare const safeDecodeURI: (path: string) => string;
13
+ /** Alias of {@link safeDecodeURI} for call sites decoding a URI component rather than a path. */
14
+ export declare const safeDecodeURIComponent: (path: string) => string;
15
+ /** Strips leading and trailing slashes from a path segment. */
16
+ export declare const stripSurroundingSlashes: (path: string) => string;
17
+ //# 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,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"}
@@ -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,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,88 @@
1
+ /** 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
+ export declare const SKILL_MANIFEST_FILE = "SKILL.md";
3
+ /**
4
+ * Client-side mirror of the backend's default `SKILL_FILE_UPLOAD_MAX_BYTES`
5
+ * (`apps/chat-api/src/config/environment.config.ts`), used only for
6
+ * immediate inline feedback when a user picks a file to upload — the server
7
+ * remains authoritative and enforces its own configured limit regardless.
8
+ */
9
+ export declare const SKILL_FILE_UPLOAD_MAX_BYTES = 1048576;
10
+ /**
11
+ * Client-side mirror of the backend's default `SKILL_UPLOAD_MAX_TOTAL_BYTES`
12
+ * (`apps/chat-api/src/config/environment.config.ts`), used only for
13
+ * immediate inline feedback on the projected total package size — the server
14
+ * remains authoritative and enforces its own configured limit regardless.
15
+ */
16
+ export declare const SKILL_UPLOAD_MAX_TOTAL_BYTES = 16777216;
17
+ /**
18
+ * Client-side mirror of the backend's default `SKILL_UPLOAD_MAX_FILES`
19
+ * (`apps/chat-api/src/config/environment.config.ts`), used only for
20
+ * immediate inline feedback on the projected total file count (including the
21
+ * root `SKILL.md`) — the server remains authoritative regardless.
22
+ */
23
+ export declare const SKILL_UPLOAD_MAX_FILES = 100;
24
+ /**
25
+ * Client-side mirror of the backend's `isValidSkillRelativePath`
26
+ * (`apps/chat-api/src/skills/utils/skill-path.util.ts`), used only for
27
+ * immediate inline feedback — the server remains authoritative and may still
28
+ * reject a path this function accepts.
29
+ */
30
+ export declare const isValidSkillRelativePath: (relativePath: string) => boolean;
31
+ /**
32
+ * Normalizes a user-entered skill name to the DIAL naming convention
33
+ * (lowercase letters, digits, and hyphens; no spaces): lowercases the input,
34
+ * replaces every run of whitespace/invalid characters with a single hyphen,
35
+ * and trims leading/trailing hyphens.
36
+ */
37
+ export declare const normalizeSkillName: (input: string) => string;
38
+ /** Skill fields serialized into the `SKILL.md` manifest. */
39
+ export interface SkillManifestValues {
40
+ /** Normalized skill name. */
41
+ name: string;
42
+ /** Short description of what the skill does. */
43
+ description: string;
44
+ /** The skill's instructions body (Markdown). */
45
+ instructions: string;
46
+ }
47
+ /**
48
+ * Builds `SKILL.md`'s content: a YAML frontmatter block (`name`/`description`,
49
+ * serialized with the `yaml` package so special characters are always
50
+ * correctly escaped) followed by the raw instructions body.
51
+ */
52
+ export declare const buildSkillManifest: ({ name, description, instructions, }: SkillManifestValues) => string;
53
+ /**
54
+ * Builds `SKILL.md`'s content for an edit save: reassigns only `name`/
55
+ * `description` onto the *loaded* frontmatter object (mutating a shallow
56
+ * copy, never the original) so unrecognized fields (e.g. `version`) survive
57
+ * re-serialization unchanged, then appends the (possibly edited)
58
+ * instructions body.
59
+ */
60
+ export declare const buildSkillManifestFromFrontmatter: (baseFrontmatter: Record<string, unknown>, name: string, description: string, instructions: string) => string;
61
+ /** A skill's `SKILL.md` split into its parsed frontmatter object and the raw instructions body. */
62
+ export interface ParsedSkillManifest {
63
+ /** The full parsed frontmatter object, including fields this app never renders. */
64
+ frontmatter: Record<string, unknown>;
65
+ /** The instructions body following the closing `---` delimiter. */
66
+ instructions: string;
67
+ }
68
+ /**
69
+ * Parses a `SKILL.md`'s YAML frontmatter and instructions body — the inverse
70
+ * of `buildSkillManifest`/`buildSkillManifestFromFrontmatter`. Throws if the
71
+ * manifest has no `---`-delimited frontmatter block.
72
+ */
73
+ export declare const parseSkillManifest: (manifestText: string) => ParsedSkillManifest;
74
+ /** A skill archive unpacked into its manifest text and a relative-path → bytes map of every other entry. */
75
+ export interface UnpackedSkillArchive {
76
+ /** The root `SKILL.md` entry's decoded text content. */
77
+ manifestText: string;
78
+ /** Every non-manifest entry, keyed by relative path. */
79
+ files: Map<string, Uint8Array>;
80
+ }
81
+ /**
82
+ * Unpacks a whole-skill ZIP (as downloaded from `GET /api/v1/skills/download`
83
+ * — DIAL Core's whole-resource `GET` is the one place this contract still
84
+ * uses a ZIP, per design.md) into its manifest text and every other entry's
85
+ * bytes. Throws if the archive has no root `SKILL.md` entry.
86
+ */
87
+ export declare const unpackSkillArchive: (bytes: Uint8Array) => UnpackedSkillArchive;
88
+ //# sourceMappingURL=skill.d.ts.map
@@ -0,0 +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,3 +0,0 @@
1
- /** Decodes a URI-encoded path segment, returning the original string if decoding fails. */
2
- export declare const safeDecodeURI: (path: string) => string;
3
- //# sourceMappingURL=string-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"string-utils.d.ts","sourceRoot":"","sources":["../../src/files/string-utils.ts"],"names":[],"mappings":"AAOA,2FAA2F;AAC3F,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,MAM5C,CAAC"}