@pega/custom-dx-components 26.1.11 → 26.1.12-alpha.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 (323) hide show
  1. package/README.md +6 -2
  2. package/package.json +48 -64
  3. package/src/ai/README.md +44 -0
  4. package/src/ai/catalog/README.md +133 -0
  5. package/src/ai/catalog/best-practices/README.md +24 -0
  6. package/src/ai/catalog/best-practices/accessibility-for-async-components.md +53 -0
  7. package/src/ai/catalog/best-practices/error-handling-and-resiliency.md +116 -0
  8. package/src/ai/catalog/best-practices/genai-assistant-integration-patterns.md +49 -0
  9. package/src/ai/catalog/best-practices/performance-and-efficiency.md +109 -0
  10. package/src/ai/catalog/best-practices/security-considerations.md +93 -0
  11. package/src/ai/catalog/best-practices/testing-pconnect-components.md +245 -0
  12. package/src/ai/catalog/best-practices/troubleshooting-common-pitfalls.md +132 -0
  13. package/src/ai/catalog/pconnect-assignment-lifecycle/SKILL.md +44 -0
  14. package/src/ai/catalog/pconnect-assignment-lifecycle/cookbooks/README.md +39 -0
  15. package/src/ai/catalog/pconnect-assignment-lifecycle/cookbooks/approval-workflow-decision.md +47 -0
  16. package/src/ai/catalog/pconnect-assignment-lifecycle/cookbooks/attachment-upload.md +45 -0
  17. package/src/ai/catalog/pconnect-assignment-lifecycle/cookbooks/bulk-action-submit.md +50 -0
  18. package/src/ai/catalog/pconnect-assignment-lifecycle/cookbooks/confirm-before-destructive-action.md +43 -0
  19. package/src/ai/catalog/pconnect-assignment-lifecycle/cookbooks/create-and-stage-new-case.md +45 -0
  20. package/src/ai/catalog/pconnect-assignment-lifecycle/cookbooks/graceful-submit-failure.md +39 -0
  21. package/src/ai/catalog/pconnect-assignment-lifecycle/cookbooks/modal-assignment-submit.md +58 -0
  22. package/src/ai/catalog/pconnect-assignment-lifecycle/cookbooks/multi-step-wizard.md +44 -0
  23. package/src/ai/catalog/pconnect-assignment-lifecycle/cookbooks/resolve-or-ignore-duplicate.md +47 -0
  24. package/src/ai/catalog/pconnect-assignment-lifecycle/cookbooks/safe-case-deletion.md +36 -0
  25. package/src/ai/catalog/pconnect-case-collaboration/SKILL.md +42 -0
  26. package/src/ai/catalog/pconnect-case-collaboration/cookbooks/README.md +36 -0
  27. package/src/ai/catalog/pconnect-case-collaboration/cookbooks/look-up-user-details.md +43 -0
  28. package/src/ai/catalog/pconnect-case-collaboration/cookbooks/manage-case-attachments.md +51 -0
  29. package/src/ai/catalog/pconnect-case-collaboration/cookbooks/manage-case-participants.md +52 -0
  30. package/src/ai/catalog/pconnect-case-collaboration/cookbooks/participant-and-follower.md +40 -0
  31. package/src/ai/catalog/pconnect-case-collaboration/cookbooks/post-and-manage-feed.md +50 -0
  32. package/src/ai/catalog/pconnect-case-collaboration/cookbooks/relate-cases.md +35 -0
  33. package/src/ai/catalog/pconnect-case-collaboration/cookbooks/tag-case-and-find-related.md +44 -0
  34. package/src/ai/catalog/pconnect-data-subscriptions/SKILL.md +42 -0
  35. package/src/ai/catalog/pconnect-data-subscriptions/cookbooks/README.md +35 -0
  36. package/src/ai/catalog/pconnect-data-subscriptions/cookbooks/data-page-subscription-cleanup.md +41 -0
  37. package/src/ai/catalog/pconnect-data-subscriptions/cookbooks/publish-and-subscribe-events.md +40 -0
  38. package/src/ai/catalog/pconnect-data-subscriptions/cookbooks/pubsub-cleanup.md +38 -0
  39. package/src/ai/catalog/pconnect-data-subscriptions/cookbooks/query-paginated-list-data.md +44 -0
  40. package/src/ai/catalog/pconnect-data-subscriptions/cookbooks/realtime-case-subscription.md +46 -0
  41. package/src/ai/catalog/pconnect-data-subscriptions/cookbooks/refresh-and-update-data.md +41 -0
  42. package/src/ai/catalog/pconnect-forms-and-fields/SKILL.md +44 -0
  43. package/src/ai/catalog/pconnect-forms-and-fields/cookbooks/README.md +36 -0
  44. package/src/ai/catalog/pconnect-forms-and-fields/cookbooks/autosave-tracking.md +45 -0
  45. package/src/ai/catalog/pconnect-forms-and-fields/cookbooks/cascading-dependent-fields.md +51 -0
  46. package/src/ai/catalog/pconnect-forms-and-fields/cookbooks/collect-form-changes-for-manual-save.md +45 -0
  47. package/src/ai/catalog/pconnect-forms-and-fields/cookbooks/custom-field-validators.md +44 -0
  48. package/src/ai/catalog/pconnect-forms-and-fields/cookbooks/discard-changes-and-reset-form.md +41 -0
  49. package/src/ai/catalog/pconnect-forms-and-fields/cookbooks/full-form-validation.md +38 -0
  50. package/src/ai/catalog/pconnect-forms-and-fields/cookbooks/persist-widget-ui-state.md +41 -0
  51. package/src/ai/catalog/pconnect-lists-and-views/SKILL.md +44 -0
  52. package/src/ai/catalog/pconnect-lists-and-views/cookbooks/README.md +35 -0
  53. package/src/ai/catalog/pconnect-lists-and-views/cookbooks/activate-and-switch-container-items.md +52 -0
  54. package/src/ai/catalog/pconnect-lists-and-views/cookbooks/container-item-lifecycle.md +61 -0
  55. package/src/ai/catalog/pconnect-lists-and-views/cookbooks/insert-delete-list-rows.md +40 -0
  56. package/src/ai/catalog/pconnect-lists-and-views/cookbooks/reorder-list-rows.md +39 -0
  57. package/src/ai/catalog/pconnect-lists-and-views/cookbooks/repeating-row-edit.md +39 -0
  58. package/src/ai/catalog/pconnect-lists-and-views/cookbooks/view-personalization.md +60 -0
  59. package/src/ai/catalog/pconnect-navigation-locale-genai/SKILL.md +45 -0
  60. package/src/ai/catalog/pconnect-navigation-locale-genai/cookbooks/README.md +35 -0
  61. package/src/ai/catalog/pconnect-navigation-locale-genai/cookbooks/agent-conversation-for-tasks.md +54 -0
  62. package/src/ai/catalog/pconnect-navigation-locale-genai/cookbooks/bookmarkable-filter-state.md +40 -0
  63. package/src/ai/catalog/pconnect-navigation-locale-genai/cookbooks/deep-link-semantic-url.md +39 -0
  64. package/src/ai/catalog/pconnect-navigation-locale-genai/cookbooks/genai-assistant-conversation.md +43 -0
  65. package/src/ai/catalog/pconnect-navigation-locale-genai/cookbooks/locale-switch-and-relocalize.md +38 -0
  66. package/src/ai/catalog/pconnect-navigation-locale-genai/cookbooks/persist-operator-preferences.md +40 -0
  67. package/src/ai/catalog/references/architecture-overview.md +52 -0
  68. package/src/ai/catalog/references/pconnect-actions-api.md +948 -0
  69. package/src/ai/catalog/references/pconnect-case-info-data-info-localization.md +618 -0
  70. package/src/ai/catalog/references/pconnect-case-validation-utilities.md +238 -0
  71. package/src/ai/catalog/references/pconnect-container-manager.md +215 -0
  72. package/src/ai/catalog/references/pconnect-list-actions.md +250 -0
  73. package/src/ai/catalog/references/pconnect-misc-suggestions-creation.md +231 -0
  74. package/src/ai/catalog/references/pconnect-reference-context-component.md +471 -0
  75. package/src/ai/catalog/references/pconnect-state-config.md +316 -0
  76. package/src/ai/catalog/references/pconnect-validation-api.md +45 -0
  77. package/src/ai/catalog/references/pcore-analytics-genai-details.md +50 -0
  78. package/src/ai/catalog/references/pcore-bootstrap-init-details.md +121 -0
  79. package/src/ai/catalog/references/pcore-bootstrap-registry-routing.md +253 -0
  80. package/src/ai/catalog/references/pcore-case-collaboration-details.md +191 -0
  81. package/src/ai/catalog/references/pcore-case-collaboration-genai.md +264 -0
  82. package/src/ai/catalog/references/pcore-environment-info-details.md +96 -0
  83. package/src/ai/catalog/references/pcore-environment-locale-namespace.md +175 -0
  84. package/src/ai/catalog/references/pcore-messaging-details.md +99 -0
  85. package/src/ai/catalog/references/pcore-misc-details.md +207 -0
  86. package/src/ai/catalog/references/pcore-misc-utilities.md +325 -0
  87. package/src/ai/catalog/references/pcore-rest-data-details.md +164 -0
  88. package/src/ai/catalog/references/pcore-rest-data-messaging.md +308 -0
  89. package/src/ai/catalog/references/pcore-store-context-details.md +40 -0
  90. package/src/ai/catalog/references/pcore-store-context-state.md +130 -0
  91. package/src/ai/index.js +154 -0
  92. package/src/ai/project/.claude/skills/boolean/SKILL.md +43 -0
  93. package/src/ai/project/.claude/skills/case/SKILL.md +58 -0
  94. package/src/ai/project/.claude/skills/create-dx-component/SKILL.md +98 -0
  95. package/src/ai/project/.claude/skills/create-dx-component/assets/PConnProps.d.ts +24 -0
  96. package/src/ai/project/.claude/skills/create-dx-component/assets/create-nonce.ts +5 -0
  97. package/src/ai/project/.claude/skills/create-dx-component/assets/event-utils.ts +18 -0
  98. package/src/ai/project/.claude/skills/create-dx-component/assets/styles.ts +7 -0
  99. package/src/ai/project/.claude/skills/create-dx-component/cookbooks/README.md +28 -0
  100. package/src/ai/project/.claude/skills/create-dx-component/cookbooks/build-a-data-widget.md +281 -0
  101. package/src/ai/project/.claude/skills/create-dx-component/cookbooks/field-with-limits-and-validation.md +156 -0
  102. package/src/ai/project/.claude/skills/create-dx-component/cookbooks/status-badge-field.md +97 -0
  103. package/src/ai/project/.claude/skills/create-dx-component/references/accessibility.md +71 -0
  104. package/src/ai/project/.claude/skills/create-dx-component/references/choosing-type-and-subtype.md +79 -0
  105. package/src/ai/project/.claude/skills/create-dx-component/references/cli-workflow.md +125 -0
  106. package/src/ai/project/.claude/skills/create-dx-component/references/component-patterns.md +241 -0
  107. package/src/ai/project/.claude/skills/create-dx-component/references/config-schema.md +296 -0
  108. package/src/ai/project/.claude/skills/create-dx-component/references/cosmos-components.md +137 -0
  109. package/src/ai/project/.claude/skills/create-dx-component/references/field-behavior.md +155 -0
  110. package/src/ai/project/.claude/skills/create-dx-component/references/field-essentials.md +90 -0
  111. package/src/ai/project/.claude/skills/create-dx-component/references/field-subtypes-extra.md +68 -0
  112. package/src/ai/project/.claude/skills/create-dx-component/references/localization.md +30 -0
  113. package/src/ai/project/.claude/skills/create-dx-component/references/pcore-pconnect-apis.md +77 -0
  114. package/src/ai/project/.claude/skills/create-dx-component/references/presentation-essentials.md +57 -0
  115. package/src/ai/project/.claude/skills/create-dx-component/references/props-contract.md +182 -0
  116. package/src/ai/project/.claude/skills/create-dx-component/references/state-matrix.md +102 -0
  117. package/src/ai/project/.claude/skills/create-dx-component/references/storybook-pattern.md +262 -0
  118. package/src/ai/project/.claude/skills/create-dx-component/references/styles-pattern.md +54 -0
  119. package/src/ai/project/.claude/skills/create-dx-component/references/template-essentials.md +87 -0
  120. package/src/ai/project/.claude/skills/create-dx-component/references/template-patterns.md +131 -0
  121. package/src/ai/project/.claude/skills/create-dx-component/references/test-pattern.md +215 -0
  122. package/src/ai/project/.claude/skills/create-dx-component/references/ui-gallery-reuse.md +93 -0
  123. package/src/ai/project/.claude/skills/create-dx-component/references/widget-essentials.md +84 -0
  124. package/src/ai/project/.claude/skills/create-dx-component/references/widget-patterns.md +164 -0
  125. package/src/ai/project/.claude/skills/currency/SKILL.md +46 -0
  126. package/src/ai/project/.claude/skills/date/SKILL.md +46 -0
  127. package/src/ai/project/.claude/skills/decimal/SKILL.md +49 -0
  128. package/src/ai/project/.claude/skills/details/SKILL.md +60 -0
  129. package/src/ai/project/.claude/skills/email/SKILL.md +42 -0
  130. package/src/ai/project/.claude/skills/field/SKILL.md +68 -0
  131. package/src/ai/project/.claude/skills/form/SKILL.md +51 -0
  132. package/src/ai/project/.claude/skills/generate-component-set/SKILL.md +80 -0
  133. package/src/ai/project/.claude/skills/generate-component-set/component-manifest.json +161 -0
  134. package/src/ai/project/.claude/skills/identify-components/SKILL.md +76 -0
  135. package/src/ai/project/.claude/skills/integer/SKILL.md +45 -0
  136. package/src/ai/project/.claude/skills/page/SKILL.md +60 -0
  137. package/src/ai/project/.claude/skills/page-widget/SKILL.md +55 -0
  138. package/src/ai/project/.claude/skills/percentage/SKILL.md +52 -0
  139. package/src/ai/project/.claude/skills/phone/SKILL.md +44 -0
  140. package/src/ai/project/.claude/skills/picklist/SKILL.md +50 -0
  141. package/src/ai/project/.claude/skills/plan-dx-component/SKILL.md +51 -0
  142. package/src/ai/project/.claude/skills/plan-dx-component/references/design-system-mapping.md +108 -0
  143. package/src/ai/project/.claude/skills/plan-dx-component/references/intake.md +146 -0
  144. package/src/ai/project/.claude/skills/plan-dx-component/references/plan-template.md +76 -0
  145. package/src/ai/project/.claude/skills/plan-dx-component/references/requirements-template.md +88 -0
  146. package/src/ai/project/.claude/skills/presentation/SKILL.md +61 -0
  147. package/src/ai/project/.claude/skills/publish-library/SKILL.md +106 -0
  148. package/src/ai/project/.claude/skills/radiobuttons/SKILL.md +51 -0
  149. package/src/ai/project/.claude/skills/review-component/SKILL.md +49 -0
  150. package/src/ai/project/.claude/skills/review-component/references/checklist.md +77 -0
  151. package/src/ai/project/.claude/skills/template/SKILL.md +60 -0
  152. package/src/ai/project/.claude/skills/text/SKILL.md +45 -0
  153. package/src/ai/project/.claude/skills/update-dx-component/SKILL.md +56 -0
  154. package/src/ai/project/.claude/skills/update-dx-component/references/maintenance.md +43 -0
  155. package/src/ai/project/.claude/skills/url/SKILL.md +46 -0
  156. package/src/ai/project/.claude/skills/validate-component/SKILL.md +78 -0
  157. package/src/ai/project/.claude/skills/validate-component/references/runtime-troubleshooting.md +56 -0
  158. package/src/ai/project/.claude/skills/validate-component/scripts/check-component.mjs +327 -0
  159. package/src/ai/project/.claude/skills/widget/SKILL.md +59 -0
  160. package/src/ai/project/.gemini/settings.json +5 -0
  161. package/src/ai/project/AGENTS.md +74 -0
  162. package/src/ai/readme-section.md +91 -0
  163. package/src/cli.js +48 -7
  164. package/src/constants.js +54 -53
  165. package/src/internal-tests.js +27 -0
  166. package/src/tasks/ai-toggle/index.js +46 -0
  167. package/src/tasks/authenticate/helper.js +38 -38
  168. package/src/tasks/authenticate/index.js +17 -15
  169. package/src/tasks/build-all/helper.js +4 -4
  170. package/src/tasks/build-all/index.js +7 -7
  171. package/src/tasks/build-comp/helper.js +17 -17
  172. package/src/tasks/build-comp/index.js +10 -10
  173. package/src/tasks/build-jest-assets/index.js +7 -9
  174. package/src/tasks/build-lib/helper.js +8 -8
  175. package/src/tasks/build-lib/index.js +8 -8
  176. package/src/tasks/bundle/builder/index.js +9 -12
  177. package/src/tasks/bundle/builder/modules.js +8 -9
  178. package/src/tasks/bundle/builder/paths.js +2 -19
  179. package/src/tasks/bundle/builder/webpack.config.js +60 -77
  180. package/src/tasks/bundle/index.js +8 -8
  181. package/src/tasks/create/index.js +35 -35
  182. package/src/tasks/create/templates/Constellation/Field/Boolean/index.tsx.mustache +1 -36
  183. package/src/tasks/create/templates/Constellation/Field/Date/date.ts.mustache +2 -2
  184. package/src/tasks/create/templates/Constellation/Field/Date/index.tsx.mustache +2 -27
  185. package/src/tasks/create/templates/Constellation/Field/DateTime/date-utils.ts.mustache +2 -2
  186. package/src/tasks/create/templates/Constellation/Field/DateTime/date.ts.mustache +2 -2
  187. package/src/tasks/create/templates/Constellation/Field/DateTime/index.tsx.mustache +2 -35
  188. package/src/tasks/create/templates/Constellation/Field/Decimal/index.tsx.mustache +3 -36
  189. package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/index.tsx.mustache +4 -39
  190. package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/index.tsx.mustache +4 -53
  191. package/src/tasks/create/templates/Constellation/Field/Icon-Button-URL/index.tsx.mustache +5 -5
  192. package/src/tasks/create/templates/Constellation/Field/Integer/index.tsx.mustache +3 -36
  193. package/src/tasks/create/templates/Constellation/Field/Picklist/index.tsx.mustache +7 -42
  194. package/src/tasks/create/templates/Constellation/Field/Picklist-Autocomplete/component-constants.ts +1 -1
  195. package/src/tasks/create/templates/Constellation/Field/Picklist-Autocomplete/date.ts.mustache +0 -2
  196. package/src/tasks/create/templates/Constellation/Field/Picklist-Autocomplete/embed-utils.ts.mustache +1 -1
  197. package/src/tasks/create/templates/Constellation/Field/Picklist-Autocomplete/index.tsx.mustache +11 -11
  198. package/src/tasks/create/templates/Constellation/Field/Picklist-Autocomplete/repeat-utils.ts.mustache +3 -13
  199. package/src/tasks/create/templates/Constellation/Field/Picklist-Autocomplete/textformat-utils.tsx.mustache +2 -3
  200. package/src/tasks/create/templates/Constellation/Field/Picklist-Autocomplete/utils.ts.mustache +28 -28
  201. package/src/tasks/create/templates/Constellation/Field/Picklist-RadioButtons/index.tsx.mustache +2 -2
  202. package/src/tasks/create/templates/Constellation/Field/Picklist-RadioButtons/textformat-utils.tsx.mustache +2 -3
  203. package/src/tasks/create/templates/Constellation/Field/Text/index.tsx.mustache +4 -33
  204. package/src/tasks/create/templates/Constellation/Field/Text-Email/index.tsx.mustache +3 -33
  205. package/src/tasks/create/templates/Constellation/Field/Text-Input/index.tsx.mustache +3 -31
  206. package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/index.tsx.mustache +3 -31
  207. package/src/tasks/create/templates/Constellation/Field/Text-Phone/index.tsx.mustache +3 -35
  208. package/src/tasks/create/templates/Constellation/Field/Text-URL/index.tsx.mustache +3 -33
  209. package/src/tasks/create/templates/Constellation/Field/Text-URL/text-url.tsx.mustache +2 -3
  210. package/src/tasks/create/templates/Constellation/Field/TimeofDay/index.tsx.mustache +2 -35
  211. package/src/tasks/create/templates/Constellation/Field/TimeofDay/time-of-day.ts.mustache +2 -2
  212. package/src/tasks/create/templates/Constellation/Template/DETAILS/Avatar.tsx.mustache +19 -15
  213. package/src/tasks/create/templates/Constellation/Template/DETAILS/Operator.tsx.mustache +6 -6
  214. package/src/tasks/create/templates/Constellation/Template/DETAILS/demo.stories.tsx.mustache +1 -1
  215. package/src/tasks/create/templates/Constellation/Template/DETAILS/index.tsx.mustache +4 -8
  216. package/src/tasks/create/templates/Constellation/Template/DETAILS/mock.ts.mustache +9 -9
  217. package/src/tasks/create/templates/Constellation/Template/DETAILS/utils.js.mustache +4 -8
  218. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/Avatar.tsx.mustache +19 -15
  219. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/Operator.tsx.mustache +6 -6
  220. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/demo.stories.tsx.mustache +1 -1
  221. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/index.tsx.mustache +1 -1
  222. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/mock.ts.mustache +9 -9
  223. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/utils.ts.mustache +4 -8
  224. package/src/tasks/create/templates/Constellation/Template/FORM/demo.stories.tsx.mustache +8 -8
  225. package/src/tasks/create/templates/Constellation/Template/FORM-region/demo.stories.tsx.mustache +8 -8
  226. package/src/tasks/create/templates/Constellation/Template/PAGE/utils.ts.mustache +4 -9
  227. package/src/tasks/create/templates/Constellation/Widget/CASE/demo.test.tsx.mustache +3 -3
  228. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/Avatar.tsx.mustache +19 -14
  229. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/Operator.tsx.mustache +6 -6
  230. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/index.tsx.mustache +1 -1
  231. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/mock.ts.mustache +1 -1
  232. package/src/tasks/create/templates/Launchpad/Field/Icon-Button-URL/index.tsx.mustache +5 -5
  233. package/src/tasks/create/templates/Launchpad/Field/Text-Phone/index.tsx.mustache +3 -35
  234. package/src/tasks/create/templates/Launchpad/Field/__components.md +1 -1
  235. package/src/tasks/create/templates/Launchpad/Template/FORM/demo.stories.tsx.mustache +8 -8
  236. package/src/tasks/create/templates/Launchpad/Template/FORM-region/demo.stories.tsx.mustache +8 -8
  237. package/src/tasks/create/templates/Launchpad/Widget/CASE/demo.test.tsx.mustache +3 -3
  238. package/src/tasks/create/templates/Launchpad/Widget/PAGE-CASE/index.tsx.mustache +1 -1
  239. package/src/tasks/create/templates/Launchpad/Widget/PAGE-CASE/mock.ts.mustache +1 -1
  240. package/src/tasks/create-all/index.js +42 -41
  241. package/src/tasks/create-lib/helper.js +13 -13
  242. package/src/tasks/create-lib/index.js +5 -5
  243. package/src/tasks/create-version/helper.js +10 -10
  244. package/src/tasks/create-version/index.js +3 -4
  245. package/src/tasks/delete/helper.js +20 -19
  246. package/src/tasks/delete/index.js +2 -2
  247. package/src/tasks/delete-all/helper.js +26 -25
  248. package/src/tasks/delete-all/index.js +2 -2
  249. package/src/tasks/delete-lib/helper.js +6 -6
  250. package/src/tasks/delete-lib/index.js +6 -6
  251. package/src/tasks/delete-pub/helper.js +18 -18
  252. package/src/tasks/delete-pub/index.js +8 -8
  253. package/src/tasks/delete-version/index.js +2 -2
  254. package/src/tasks/dev-server/index.js +1 -1
  255. package/src/tasks/export-archive/helper.js +21 -21
  256. package/src/tasks/export-archive/index.js +27 -40
  257. package/src/tasks/export-rc/helper.js +34 -34
  258. package/src/tasks/export-rc/index.js +21 -31
  259. package/src/tasks/import-archive/helper.js +39 -39
  260. package/src/tasks/import-archive/index.js +69 -89
  261. package/src/tasks/import-comp/helper.js +8 -8
  262. package/src/tasks/import-comp/index.js +30 -42
  263. package/src/tasks/index.js +5 -0
  264. package/src/tasks/init/Node.gitignore +149 -0
  265. package/src/tasks/init/helper.js +15 -8
  266. package/src/tasks/init/index.js +115 -35
  267. package/src/tasks/init/template/.prettierrc.json +4 -1
  268. package/src/tasks/init/template/.storybook/main.ts +1 -4
  269. package/src/tasks/init/template/.storybook/manager.ts +1 -1
  270. package/src/tasks/init/template/.storybook/preview.tsx +2 -2
  271. package/src/tasks/init/template/.storybook/theme.js +1 -1
  272. package/src/tasks/init/template/.vscode/extensions.json +0 -1
  273. package/src/tasks/init/template/README.md +2 -2
  274. package/src/tasks/init/template/eslint.config.mjs +13 -155
  275. package/src/tasks/init/template/jest.config.cjs +2 -0
  276. package/src/tasks/init/template/package-lock.json +26864 -0
  277. package/src/tasks/init/template/package.json.mustache +19 -74
  278. package/src/tasks/init/template/setupTests.ts +10 -4
  279. package/src/tasks/init/template/tsconfig.json +14 -6
  280. package/src/tasks/internal-test/index.js +21 -0
  281. package/src/tasks/internal-test-full/index.js +15 -0
  282. package/src/tasks/internal-test-functional/index.js +15 -0
  283. package/src/tasks/internal-test-unit/index.js +13 -0
  284. package/src/tasks/linter/index.js +2 -2
  285. package/src/tasks/list/helper.js +41 -40
  286. package/src/tasks/list/index.js +3 -3
  287. package/src/tasks/list-lib/helper.js +5 -5
  288. package/src/tasks/list-lib/index.js +8 -8
  289. package/src/tasks/list-pub/helper.js +23 -16
  290. package/src/tasks/list-pub/index.js +24 -21
  291. package/src/tasks/move/helper.js +8 -8
  292. package/src/tasks/move/index.js +19 -23
  293. package/src/tasks/promote-webpack/index.js +4 -4
  294. package/src/tasks/promote-webpack/webpack.config.js +62 -93
  295. package/src/tasks/publish/helper.js +21 -21
  296. package/src/tasks/publish/index.js +16 -16
  297. package/src/tasks/publish-all/helper.js +20 -20
  298. package/src/tasks/publish-all/index.js +11 -12
  299. package/src/tasks/publish-archive/helper.js +9 -9
  300. package/src/tasks/publish-archive/index.js +12 -14
  301. package/src/tasks/publish-lib/helper.js +3 -3
  302. package/src/tasks/publish-lib/index.js +28 -34
  303. package/src/tasks/quarantine/index.js +8 -8
  304. package/src/tasks/rename/index.js +26 -30
  305. package/src/tasks/rename-lib/index.js +21 -25
  306. package/src/tasks/restore/index.js +8 -8
  307. package/src/tasks/restore-config/index.js +3 -5
  308. package/src/tasks/set-perm/index.js +8 -8
  309. package/src/tasks/show-help/index.js +17 -9
  310. package/src/tasks/show-status/index.js +2 -2
  311. package/src/tasks/store/index.js +8 -8
  312. package/src/tasks/switch-lib/helper.js +7 -7
  313. package/src/tasks/switch-lib/index.js +7 -7
  314. package/src/tasks/switch-version/helper.js +6 -6
  315. package/src/tasks/switch-version/index.js +7 -7
  316. package/src/tasks/update/index.js +1 -1
  317. package/src/tasks/upgrade/index.js +7 -7
  318. package/src/tasks/validator/index.js +49 -203
  319. package/src/util.js +169 -186
  320. package/src/rules/no-pcore-pconnect-in-presentation.js +0 -103
  321. package/src/tasks/init/template/.stylelintrc.json +0 -4
  322. package/src/tasks/init/template/babel.config.cjs +0 -22
  323. package/src/tasks/init/template/cspell.json +0 -14
@@ -1,10 +1,8 @@
1
1
  import path from 'path';
2
2
  import fs from 'fs';
3
- import { promisify } from 'util';
4
3
  import { join } from 'path';
5
4
 
6
5
  import inquirer from 'inquirer';
7
- import ncp from 'ncp';
8
6
  import chalk from 'chalk';
9
7
 
10
8
  import {
@@ -15,7 +13,7 @@ import {
15
13
  addDebugLog,
16
14
  checkLibraryAndArchives,
17
15
  getConfigDefaults,
18
- getLibraryBased
16
+ getLibraryBased,
19
17
  } from '../../util.js';
20
18
  import { TASKS_CONFIG_JSON_FILENAME, COMPONENTS_DIRECTORY_PATH, COMPONENTS_PATH } from '../../constants.js';
21
19
 
@@ -26,8 +24,6 @@ const pegaConfigJsonPath = join(currentDirectory, TASKS_CONFIG_JSON_FILENAME);
26
24
  import { convertIntoPascalCase, getComponentDirectoryPath, getPegaConfig, sanitize, validateSemver } from '../../util.js';
27
25
  import { COMPONENT_SCHEMA } from '../../constants.js';
28
26
 
29
- const copy = promisify(ncp);
30
-
31
27
  export const updateConfig = async (
32
28
  {
33
29
  oldComponentKey,
@@ -39,10 +35,10 @@ export const updateConfig = async (
39
35
  version,
40
36
  description,
41
37
  allowedApplications,
42
- targetDirectory
38
+ targetDirectory,
43
39
  },
44
40
  options,
45
- onlyCompanion = false
41
+ onlyCompanion = false,
46
42
  ) => {
47
43
  addDebugLog('updateConfig', `oldComponentKey: ${oldComponentKey}, newComponentKey: ${newComponentKey}`, '');
48
44
 
@@ -78,7 +74,7 @@ export const updateFile = async (fileName, oldComponentKeyPC, newComponentKeyPC,
78
74
  addDebugLog(
79
75
  'updateFile',
80
76
  `fileName: ${fileName}, oldComponentKeyPC: ${oldComponentKeyPC}, newComponentKeyPC: ${newComponentKeyPC}, targetDirectory: ${targetDirectory}`,
81
- ''
77
+ '',
82
78
  );
83
79
 
84
80
  let fileData = fs.readFileSync(join(targetDirectory, '/', fileName), { encoding: 'utf8' });
@@ -93,7 +89,7 @@ export const updateFile = async (fileName, oldComponentKeyPC, newComponentKeyPC,
93
89
  export const renameComponent = async (
94
90
  { library, organization, componentKey, componentName, componentLabel, version, description, allowedApplications },
95
91
  options,
96
- onlyCompanion = false
92
+ onlyCompanion = false,
97
93
  ) => {
98
94
  addDebugLog('renameComponent', `library: ${library}, organization: ${organization}, componentKey: ${componentKey}`, '');
99
95
 
@@ -132,9 +128,9 @@ export const renameComponent = async (
132
128
  description,
133
129
  allowedApplications,
134
130
  organization,
135
- targetDirectory
131
+ targetDirectory,
136
132
  },
137
- options
133
+ options,
138
134
  );
139
135
  } else {
140
136
  await updateFile(fileName, oldComponentKeyPC, newComponentKeyPC, targetDirectory);
@@ -144,7 +140,7 @@ export const renameComponent = async (
144
140
  console.log(chalk.green(`Component ${oldComponentKey} renamed to ${newComponentKey}`));
145
141
  };
146
142
 
147
- export default async options => {
143
+ export default async (options) => {
148
144
  await showVersion();
149
145
  await checkLibraryAndArchives();
150
146
 
@@ -190,9 +186,9 @@ export default async options => {
190
186
  version,
191
187
  description,
192
188
  allowedApplications,
193
- organization
189
+ organization,
194
190
  },
195
- options
191
+ options,
196
192
  );
197
193
  } else {
198
194
  // VS Code plugin would send in the component
@@ -208,12 +204,12 @@ export default async options => {
208
204
  pageSize: 15,
209
205
  message: 'Select component to rename',
210
206
  choices: localComponents,
211
- when: () => !paramComponentKey
207
+ when: () => !paramComponentKey,
212
208
  },
213
209
  {
214
210
  name: 'componentName',
215
211
  message: 'Enter new component name (required, no spaces)',
216
- validate: value => {
212
+ validate: (value) => {
217
213
  /* value should not be empty
218
214
  It should not have spaces
219
215
  It should not start with a number
@@ -223,47 +219,47 @@ export default async options => {
223
219
  return true;
224
220
  }
225
221
  return 'Only alphanumeric values are allowed, starting with alphabets';
226
- }
222
+ },
227
223
  },
228
224
  {
229
225
  name: 'componentLabel',
230
226
  message: 'Enter new component label for display (required)',
231
- validate: value => {
227
+ validate: (value) => {
232
228
  if (value) {
233
229
  return true;
234
230
  }
235
231
  return 'Please provide value for label';
236
- }
232
+ },
237
233
  },
238
234
  {
239
235
  name: 'organization',
240
236
  message: 'Enter new component organization',
241
237
  default: organization,
242
- validate: value => {
238
+ validate: (value) => {
243
239
  if (value) {
244
240
  return true;
245
241
  }
246
242
  return 'Please provide value for organization';
247
243
  },
248
- when: () => !isLibraryBased
244
+ when: () => !isLibraryBased,
249
245
  },
250
246
  {
251
247
  name: 'version',
252
248
  message: 'Enter new component version',
253
249
  default: componentDefaults.version,
254
- validate: value => {
250
+ validate: (value) => {
255
251
  if (validateSemver(value)) {
256
252
  return true;
257
253
  }
258
254
  return 'Please provide semver compatible version e.g 0.0.1';
259
255
  },
260
- when: () => !isLibraryBased
256
+ when: () => !isLibraryBased,
261
257
  },
262
258
  {
263
259
  name: 'library',
264
260
  message: 'Enter new library name (required)',
265
261
  default: componentDefaults.library,
266
- validate: value => {
262
+ validate: (value) => {
267
263
  /* value should not be empty
268
264
  It should not have spaces
269
265
  It should not start with a number
@@ -274,7 +270,7 @@ export default async options => {
274
270
  }
275
271
  return 'Only alphanumeric values are allowed, starting with alphabets';
276
272
  },
277
- when: () => !isLibraryBased
273
+ when: () => !isLibraryBased,
278
274
  },
279
275
  // {
280
276
  // name: 'allowedApplications',
@@ -285,13 +281,13 @@ export default async options => {
285
281
  {
286
282
  name: 'description',
287
283
  message: 'Enter new description for the component (defaults to new label)',
288
- default: componentDefaults.description
284
+ default: componentDefaults.description,
289
285
  /* if left blank and no defaults, mustache will use componentLabel, because description is used in app studio and
290
286
  shouldn't be blank */
291
- }
287
+ },
292
288
  ];
293
289
 
294
- await inquirer.prompt(questions).then(async answers => {
290
+ await inquirer.prompt(questions).then(async (answers) => {
295
291
  const { componentKey = paramComponentKey, componentName, componentLabel, description } = answers;
296
292
  let { organization, library, version, allowedApplications } = answers;
297
293
 
@@ -313,9 +309,9 @@ export default async options => {
313
309
  version,
314
310
  description,
315
311
  allowedApplications,
316
- organization
312
+ organization,
317
313
  },
318
- options
314
+ options,
319
315
  );
320
316
  });
321
317
  }
@@ -1,10 +1,8 @@
1
1
  import path from 'path';
2
2
  import fs from 'fs';
3
- import { promisify } from 'util';
4
3
  import { join } from 'path';
5
4
 
6
5
  import inquirer from 'inquirer';
7
- import ncp from 'ncp';
8
6
  import chalk from 'chalk';
9
7
 
10
8
  import {
@@ -20,7 +18,7 @@ import {
20
18
  addDebugLog,
21
19
  checkLibraryAndArchives,
22
20
  getConfigDefaults,
23
- getLibraryBasedCL
21
+ getLibraryBasedCL,
24
22
  } from '../../util.js';
25
23
  import { TASKS_CONFIG_JSON_FILENAME, COMPONENTS_DIRECTORY_PATH, COMPONENTS_PATH } from '../../constants.js';
26
24
 
@@ -32,8 +30,6 @@ const pegaConfigJsonPath = join(currentDirectory, TASKS_CONFIG_JSON_FILENAME);
32
30
 
33
31
  import { convertIntoPascalCase, getComponentDirectoryPath, getComponents, sanitize } from '../../util.js';
34
32
 
35
- const copy = promisify(ncp);
36
-
37
33
  export const updateConfig = async (
38
34
  {
39
35
  oldComponentKey,
@@ -45,10 +41,10 @@ export const updateConfig = async (
45
41
  version,
46
42
  description,
47
43
  allowedApplications,
48
- targetDirectory
44
+ targetDirectory,
49
45
  },
50
46
  options,
51
- onlyCompanion = false
47
+ onlyCompanion = false,
52
48
  ) => {
53
49
  addDebugLog('updateConfig', '', '');
54
50
 
@@ -68,7 +64,7 @@ export const updateConfig = async (
68
64
  // stringify "4", makes the json string look like JSON in the file, formatted instead of a single line
69
65
  fs.writeFileSync(join(targetDirectory, '/config.json'), JSON.stringify(configData, null, 4), {
70
66
  encoding: 'utf8',
71
- flag: 'w'
67
+ flag: 'w',
72
68
  });
73
69
  };
74
70
 
@@ -98,7 +94,7 @@ export const renameLibrary = async ({ library, organization }, options) => {
98
94
 
99
95
  if (tokenAndStaticServer.C11NB2S === undefined) {
100
96
  console.log(
101
- chalk.redBright('Need to authenticate, missing services token.\nBuilding a library requires authentication to acquire a token to build.')
97
+ chalk.redBright('Need to authenticate, missing services token.\nBuilding a library requires authentication to acquire a token to build.'),
102
98
  );
103
99
  process.exit(1);
104
100
  }
@@ -145,9 +141,9 @@ export const renameLibrary = async ({ library, organization }, options) => {
145
141
  componentLabel,
146
142
  version,
147
143
  description,
148
- allowedApplications
144
+ allowedApplications,
149
145
  },
150
- options
146
+ options,
151
147
  );
152
148
  }
153
149
 
@@ -171,7 +167,7 @@ export const renameLibrary = async ({ library, organization }, options) => {
171
167
  export const renameComponent = async (
172
168
  { library, organization, componentKey, componentName, componentLabel, version, description, allowedApplications },
173
169
  options,
174
- onlyCompanion = false
170
+ onlyCompanion = false,
175
171
  ) => {
176
172
  addDebugLog('renameComponent', `library: ${library}, organization: ${organization}, componentKey: ${componentKey}`, '');
177
173
 
@@ -208,9 +204,9 @@ export const renameComponent = async (
208
204
  description,
209
205
  allowedApplications,
210
206
  organization,
211
- targetDirectory
207
+ targetDirectory,
212
208
  },
213
- options
209
+ options,
214
210
  );
215
211
  } else {
216
212
  await updateFile(fileName, oldComponentKeyPC, newComponentKeyPC, targetDirectory);
@@ -220,7 +216,7 @@ export const renameComponent = async (
220
216
  console.log(chalk.green(`Component ${oldComponentKey} renamed to ${newComponentKey}`));
221
217
  };
222
218
 
223
- export default async options => {
219
+ export default async (options) => {
224
220
  const isLibraryBased = getLibraryBased();
225
221
  if (!isLibraryBased) {
226
222
  console.log(`Command only supported for ${chalk.bold.green('library mode')} components.`);
@@ -259,9 +255,9 @@ export default async options => {
259
255
  await renameLibrary(
260
256
  {
261
257
  library,
262
- organization
258
+ organization,
263
259
  },
264
- options
260
+ options,
265
261
  );
266
262
  } else {
267
263
  const questions = [
@@ -269,18 +265,18 @@ export default async options => {
269
265
  name: 'organization',
270
266
  message: 'Enter new component organization',
271
267
  default: organization,
272
- validate: value => {
268
+ validate: (value) => {
273
269
  if (value) {
274
270
  return true;
275
271
  }
276
272
  return 'Please provide value for organization';
277
- }
273
+ },
278
274
  },
279
275
  {
280
276
  name: 'library',
281
277
  message: 'Enter new library name',
282
278
  default: componentDefaults.library,
283
- validate: value => {
279
+ validate: (value) => {
284
280
  /* value should not be empty
285
281
  It should not have spaces
286
282
  It should not start with a number
@@ -290,19 +286,19 @@ export default async options => {
290
286
  return true;
291
287
  }
292
288
  return 'Only alphanumeric values are allowed, starting with alphabets';
293
- }
294
- }
289
+ },
290
+ },
295
291
  ];
296
292
 
297
- await inquirer.prompt(questions).then(async answers => {
293
+ await inquirer.prompt(questions).then(async (answers) => {
298
294
  const { organization, library } = answers;
299
295
 
300
296
  await renameLibrary(
301
297
  {
302
298
  library,
303
- organization
299
+ organization,
304
300
  },
305
- options
301
+ options,
306
302
  );
307
303
  });
308
304
  }
@@ -13,12 +13,12 @@ import {
13
13
  forceDefaultsUpdate,
14
14
  getUseInputConfig,
15
15
  getInputConfigForCommand,
16
- convertYNToBoolean
16
+ convertYNToBoolean,
17
17
  } from '../../util.js';
18
18
 
19
19
  import { showCurrentStatus } from '../show-status/index.js';
20
20
 
21
- export default async options => {
21
+ export default async (options) => {
22
22
  await showVersion();
23
23
  await checkLibraryAndArchives();
24
24
  const useInputConfig = getUseInputConfig();
@@ -59,8 +59,8 @@ export default async options => {
59
59
  name: 'confirmRestore',
60
60
  type: 'confirm',
61
61
  message: `Restoring ${chalk.bold.green(`${confDef.displayLibVersion}`)} from local storage, proceed ?`,
62
- default: true
63
- }
62
+ default: true,
63
+ },
64
64
  ]);
65
65
  }
66
66
  }
@@ -73,13 +73,13 @@ export default async options => {
73
73
  title: `Restoring ${confDef.displayLibVersion}`,
74
74
  task: async () => {
75
75
  await restoreFromArchive(switchToFileName, confDef.currentOrgLib, confDef.version);
76
- }
77
- }
76
+ },
77
+ },
78
78
  ],
79
- { concurrent: false, exitOnError: true }
79
+ { concurrent: false, exitOnError: true },
80
80
  );
81
81
 
82
- await tasks.run().catch(err => {
82
+ await tasks.run().catch((err) => {
83
83
  console.log(chalk.bold.red(err.toString()));
84
84
  addDebugLog('restoreComponent', '', '-');
85
85
  process.exit(1);
@@ -1,15 +1,13 @@
1
1
  import path from 'path';
2
2
  import fs from 'fs';
3
- import { promisify } from 'util';
4
3
  import { join } from 'path';
5
4
 
6
5
  import inquirer from 'inquirer';
7
- import ncp from 'ncp';
8
6
  import chalk from 'chalk';
9
7
 
10
8
  import { restoreTopLevelConfigFilesFromTemplate, restoreDependenciesFromTemplate, getLibraryBased, showVersion, addDebugLog } from '../../util.js';
11
9
 
12
- export default async options => {
10
+ export default async (options) => {
13
11
  addDebugLog('restoreConfig', '', '+');
14
12
  const isLibraryBased = getLibraryBased();
15
13
  if (!isLibraryBased) {
@@ -24,8 +22,8 @@ export default async options => {
24
22
  name: 'restoreDev',
25
23
  type: 'confirm',
26
24
  message: 'Also restore package dependencies/devDependencies ?',
27
- default: false
28
- }
25
+ default: false,
26
+ },
29
27
  ]);
30
28
 
31
29
  await restoreTopLevelConfigFilesFromTemplate(false);
@@ -12,11 +12,11 @@ import {
12
12
  checkLibraryAndArchives,
13
13
  getUseInputConfig,
14
14
  getInputConfigForCommand,
15
- forceDefaultsUpdate
15
+ forceDefaultsUpdate,
16
16
  } from '../../util.js';
17
17
  import { showCurrentStatus } from '../show-status/index.js';
18
18
 
19
- export const updateAllComponentsConfig = async newVersion => {
19
+ export const updateAllComponentsConfig = async (newVersion) => {
20
20
  addDebugLog('updateAllComponentsConfig', `newVersion: ${newVersion}`, '');
21
21
  const componentList = await getComponents();
22
22
  const orgLib = getConfigDefaults();
@@ -29,7 +29,7 @@ export const updateAllComponentsConfig = async newVersion => {
29
29
  }
30
30
  };
31
31
 
32
- export const setPermVersion = async isPerm => {
32
+ export const setPermVersion = async (isPerm) => {
33
33
  addDebugLog('setPermVersion', `isPerm: ${isPerm}`, '');
34
34
  const configDefaults = await getConfigDefaults();
35
35
  const devBuild = !isPerm;
@@ -72,8 +72,8 @@ export const setPermanent = async (inputYN = '') => {
72
72
  name: 'makePerm',
73
73
  type: 'confirm',
74
74
  message: `Make ${chalk.green(`${configDefaults.displayLibVersion}`)} ${chalk.yellow('PERMANENT')} ?`,
75
- default: false
76
- }
75
+ default: false,
76
+ },
77
77
  ]);
78
78
 
79
79
  if (makePermAnswer.makePerm) {
@@ -94,8 +94,8 @@ export const setPermanent = async (inputYN = '') => {
94
94
  name: 'makeNonPerm',
95
95
  type: 'confirm',
96
96
  message: `Make this library/version ${chalk.yellow('NON PERMANENT')} ?`,
97
- default: true
98
- }
97
+ default: true,
98
+ },
99
99
  ]);
100
100
 
101
101
  if (makeNonPermAnswer.makeNonPerm) {
@@ -109,7 +109,7 @@ export const setPermanent = async (inputYN = '') => {
109
109
  }
110
110
  };
111
111
 
112
- export default async options => {
112
+ export default async (options) => {
113
113
  const isLibraryBased = getLibraryBased();
114
114
  const useInputConfig = getUseInputConfig();
115
115
 
@@ -1,5 +1,5 @@
1
1
  import chalk from 'chalk';
2
- import { showVersion, getLibraryBased, getLibraryBasedCL } from '../../util.js';
2
+ import { showVersion, getLibraryBased, getLibraryBasedCL, getConfigDefaults, getComponents } from '../../util.js';
3
3
 
4
4
  export const showCurrentStatus = async () => {
5
5
  const configDefaults = await getConfigDefaults();
@@ -39,6 +39,10 @@ export const showHelpV1 = () => {
39
39
  console.log('');
40
40
  console.log(`${chalk.cyan('npm run startStorybook ')}\tstorybook components for testing`);
41
41
  console.log(`${chalk.cyan('npm run test')}\t\t\trun component unit tests`);
42
+ console.log(
43
+ `${chalk.cyan('npm run enableAi ')}\tturn on AI-assisted development (skills and rules for Copilot, Claude Code, Cursor, Codex, Gemini)`,
44
+ );
45
+ console.log(`${chalk.cyan('npm run disableAi ')}\tturn it off again (add -- --yes to skip the confirmation)`);
42
46
 
43
47
  console.log(`\n${chalk.underline(`Local and Server (needs authentication)`)}`);
44
48
  console.log(`${chalk.cyan('npm run list ')}\tget list of components`);
@@ -52,7 +56,7 @@ export const showHelpV1 = () => {
52
56
  console.log('');
53
57
  console.log(`\n${chalk.underline(`Notes`)}`);
54
58
  console.log(
55
- `${chalk.yellow('>> By choosing to create and use custom components, you agree to keep them up-to-date with every release of Pega Infinity,')}`
59
+ `${chalk.yellow('>> By choosing to create and use custom components, you agree to keep them up-to-date with every release of Pega Infinity,')}`,
56
60
  );
57
61
  console.log(`${chalk.yellow('>> as well as meeting compliance standards for data privacy and accessibility.')}\n`);
58
62
  console.log(`Cannot publish a component with prefix (Org_Lib) that matches a Rule-UI-ComponentLibrary (libraryModeCL) in same ruleset.`);
@@ -60,13 +64,13 @@ export const showHelpV1 = () => {
60
64
  console.log('');
61
65
  };
62
66
 
63
- export const showHelpV2 = isCL => {
67
+ export const showHelpV2 = (isCL) => {
64
68
  console.log('');
65
69
  if (!isCL) {
66
70
  console.log(chalk.yellow('**** Beta capability and subject to change. Developer experimental. Do not use in a Production Deployment. ***\n'));
67
71
  }
68
72
  console.log(
69
- `--> All commands will NOT work until a library is created via ${chalk.cyan(`npm run createLib`)} or ${chalk.cyan(`npm run importLibVersion`)}.`
73
+ `--> All commands will NOT work until a library is created via ${chalk.cyan(`npm run createLib`)} or ${chalk.cyan(`npm run importLibVersion`)}.`,
70
74
  );
71
75
  console.log(`\nnpm run <command>`);
72
76
  console.log(`\nUsage:`);
@@ -89,12 +93,12 @@ export const showHelpV2 = isCL => {
89
93
  console.log(`${chalk.cyan('npm run storeLibVersion ')}\tstore current version to local storage (must SAVE components before)`);
90
94
  if (isCL) {
91
95
  console.log(
92
- `${chalk.cyan('npm run exportLibVersion')}\texport current version as a zip file to a given local path or a server (must SAVE components before)`
96
+ `${chalk.cyan('npm run exportLibVersion')}\texport current version as a zip file to a given local path or a server (must SAVE components before)`,
93
97
  );
94
98
  console.log(`${chalk.cyan('npm run importLibVersion')}\timport a zip file (created by export) from a given local path or a server`);
95
99
  } else {
96
100
  console.log(
97
- `${chalk.cyan('npm run exportLibVersion')}\texport current version as a zip file to a given local path (must SAVE components before)`
101
+ `${chalk.cyan('npm run exportLibVersion')}\texport current version as a zip file to a given local path (must SAVE components before)`,
98
102
  );
99
103
  console.log(`${chalk.cyan('npm run importLibVersion')}\timport a zip file (created by export) from a given local path`);
100
104
  console.log(`${chalk.cyan('npm run setPermanent ')}\tmake current version permanent or non permanent upon publish`);
@@ -120,6 +124,10 @@ export const showHelpV2 = isCL => {
120
124
  console.log('');
121
125
  console.log(`${chalk.cyan('npm run startStorybook')}\t\tstorybook components for testing`);
122
126
  console.log(`${chalk.cyan('npm run test')}\t\t\trun component unit tests`);
127
+ console.log(
128
+ `${chalk.cyan('npm run enableAi ')}\tturn on AI-assisted development (skills and rules for Copilot, Claude Code, Cursor, Codex, Gemini)`,
129
+ );
130
+ console.log(`${chalk.cyan('npm run disableAi ')}\tturn it off again (add -- --yes to skip the confirmation)`);
123
131
  if (isCL) {
124
132
  console.log(`${chalk.cyan('npm run startDevServer')}\t\tdebug runtime with browser break points using a local component server`);
125
133
  }
@@ -128,7 +136,7 @@ export const showHelpV2 = isCL => {
128
136
 
129
137
  console.log(`\n${chalk.underline(`Notes`)}`);
130
138
  console.log(
131
- `${chalk.yellow('>> By choosing to create and use custom components, you agree to keep them up-to-date with every release of Pega Infinity,')}`
139
+ `${chalk.yellow('>> By choosing to create and use custom components, you agree to keep them up-to-date with every release of Pega Infinity,')}`,
132
140
  );
133
141
  console.log(`${chalk.yellow('>> as well as meeting compliance standards for data privacy and accessibility.')}\n`);
134
142
  console.log(`The following commands will store existing version in storage before executing the command:`);
@@ -142,12 +150,12 @@ export const showHelpV2 = isCL => {
142
150
  console.log(`for backup storage.`);
143
151
  }
144
152
  console.log(
145
- `\nIn tasks.config.json, set ${chalk.yellow('libraryModeCL')} to ${chalk.yellow('false')} for original stand alone components or for ${chalk.yellow('Launchpad')} components.`
153
+ `\nIn tasks.config.json, set ${chalk.yellow('libraryModeCL')} to ${chalk.yellow('false')} for original stand alone components or for ${chalk.yellow('Launchpad')} components.`,
146
154
  );
147
155
  console.log('');
148
156
  };
149
157
 
150
- export default async options => {
158
+ export default async () => {
151
159
  const isLibraryBased = getLibraryBased();
152
160
  const isLibraryBasedCL = getLibraryBasedCL();
153
161
 
@@ -8,7 +8,7 @@ import {
8
8
  checkLibraryAndArchives,
9
9
  getPegaServerConfig,
10
10
  getLibraryBasedCL,
11
- getApplicationAndVersionFromToken
11
+ getApplicationAndVersionFromToken,
12
12
  } from '../../util.js';
13
13
 
14
14
  export const showCurrentStatus = async () => {
@@ -56,7 +56,7 @@ export const showCurrentStatus = async () => {
56
56
  }
57
57
  };
58
58
 
59
- export default async options => {
59
+ export default async (options) => {
60
60
  const isLibraryBased = getLibraryBased();
61
61
  if (!isLibraryBased) {
62
62
  console.log(`Command only supported for ${chalk.bold.green('library mode')} components.`);
@@ -12,10 +12,10 @@ import {
12
12
  cleanUpTemp,
13
13
  getUseInputConfig,
14
14
  getInputConfigForCommand,
15
- convertYNToBoolean
15
+ convertYNToBoolean,
16
16
  } from '../../util.js';
17
17
 
18
- export default async options => {
18
+ export default async (options) => {
19
19
  await showVersion();
20
20
  await checkLibraryAndArchives();
21
21
  const useInputConfig = getUseInputConfig();
@@ -55,8 +55,8 @@ export default async options => {
55
55
  name: 'confirmStore',
56
56
  type: 'confirm',
57
57
  message: `Storing ${chalk.green(`${confDef.currentOrgLib}/${confDef.buildVersion}`)} to local storage, proceed ?`,
58
- default: true
59
- }
58
+ default: true,
59
+ },
60
60
  ]);
61
61
  }
62
62
  }
@@ -70,13 +70,13 @@ export default async options => {
70
70
  title: `Store ${confDef.displayLibVersion}`,
71
71
  task: async () => {
72
72
  await zipVersionAndArchive(confDef.currentOrgLib, confDef.buildVersion);
73
- }
74
- }
73
+ },
74
+ },
75
75
  ],
76
- { concurrent: false, exitOnError: true }
76
+ { concurrent: false, exitOnError: true },
77
77
  );
78
78
 
79
- await tasks.run().catch(err => {
79
+ await tasks.run().catch((err) => {
80
80
  console.log(chalk.bold.red(err.toString()));
81
81
  addDebugLog('storeComponents', '', '-');
82
82
  process.exit(1);
@@ -6,7 +6,7 @@ import { getComponents, getPegaServerConfig, updateConfigVersion, getLibraryArch
6
6
 
7
7
  const exec = promisify(LocalExec);
8
8
 
9
- export const updateAllComponentsConfig = async newVersion => {
9
+ export const updateAllComponentsConfig = async (newVersion) => {
10
10
  addDebugLog('updateAllComponentsConfig', `newVersion: ${newVersion}`, '');
11
11
  const componentList = await getComponents();
12
12
  const orgLib = getConfigDefaults();
@@ -31,7 +31,7 @@ export const getSwitchLibraryComponentQuestions = async (archVersionList, inputO
31
31
  name: 'okToContinue',
32
32
  type: 'confirm',
33
33
  message: 'Ok to continue ?',
34
- default: true
34
+ default: true,
35
35
  },
36
36
  {
37
37
  name: 'newOrgLib',
@@ -40,12 +40,12 @@ export const getSwitchLibraryComponentQuestions = async (archVersionList, inputO
40
40
  choices: archVersionList,
41
41
  when(answers) {
42
42
  return answers.okToContinue === true && inputOrgLib === '';
43
- }
44
- }
43
+ },
44
+ },
45
45
  ];
46
46
  };
47
47
 
48
- export const getSwitchVersionComponentQuestions = async newOrgLib => {
48
+ export const getSwitchVersionComponentQuestions = async (newOrgLib) => {
49
49
  addDebugLog('getSwitchVersionComponentQuestions', '', '');
50
50
 
51
51
  const archVersionList = await getLibraryArchivesVersions(newOrgLib, '0.0.0');
@@ -55,8 +55,8 @@ export const getSwitchVersionComponentQuestions = async newOrgLib => {
55
55
  name: 'version',
56
56
  type: 'rawlist',
57
57
  message: `Select a version `,
58
- choices: archVersionList
59
- }
58
+ choices: archVersionList,
59
+ },
60
60
  ];
61
61
  };
62
62