@peernova/cuneiform-sf 1.0.3-beta.0 → 1.0.4-beta.8

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 (494) hide show
  1. package/LICENSE +81 -30
  2. package/README.md +59 -95
  3. package/lib/adapters/connection-facade.d.ts +458 -0
  4. package/lib/adapters/connection-facade.js +379 -0
  5. package/lib/adapters/connection-facade.js.map +1 -0
  6. package/lib/adapters/errors.d.ts +547 -0
  7. package/lib/adapters/errors.js +937 -0
  8. package/lib/adapters/errors.js.map +1 -0
  9. package/lib/adapters/index.d.ts +33 -0
  10. package/lib/adapters/index.js +50 -0
  11. package/lib/adapters/index.js.map +1 -0
  12. package/lib/adapters/lifecycle.d.ts +119 -0
  13. package/lib/adapters/lifecycle.js +94 -0
  14. package/lib/adapters/lifecycle.js.map +1 -0
  15. package/lib/adapters/rest/cache.d.ts +69 -0
  16. package/lib/adapters/rest/cache.js +133 -0
  17. package/lib/adapters/rest/cache.js.map +1 -0
  18. package/lib/adapters/rest/index.d.ts +11 -0
  19. package/lib/adapters/rest/index.js +18 -0
  20. package/lib/adapters/rest/index.js.map +1 -0
  21. package/lib/adapters/rest/profiling-rest-client.d.ts +137 -0
  22. package/lib/adapters/rest/profiling-rest-client.js +115 -0
  23. package/lib/adapters/rest/profiling-rest-client.js.map +1 -0
  24. package/lib/adapters/rest/rest-api-adapter.d.ts +389 -0
  25. package/lib/adapters/rest/rest-api-adapter.js +747 -0
  26. package/lib/adapters/rest/rest-api-adapter.js.map +1 -0
  27. package/lib/adapters/rest/types.d.ts +34 -0
  28. package/lib/adapters/rest/types.js +9 -0
  29. package/lib/adapters/rest/types.js.map +1 -0
  30. package/lib/adapters/retry.d.ts +91 -0
  31. package/lib/adapters/retry.js +215 -0
  32. package/lib/adapters/retry.js.map +1 -0
  33. package/lib/adapters/soql/cuneiform-query-builder.d.ts +391 -0
  34. package/lib/adapters/soql/cuneiform-query-builder.js +559 -0
  35. package/lib/adapters/soql/cuneiform-query-builder.js.map +1 -0
  36. package/lib/adapters/soql/index.d.ts +13 -0
  37. package/lib/adapters/soql/index.js +21 -0
  38. package/lib/adapters/soql/index.js.map +1 -0
  39. package/lib/adapters/soql/soql-query-adapter.d.ts +141 -0
  40. package/lib/adapters/soql/soql-query-adapter.js +259 -0
  41. package/lib/adapters/soql/soql-query-adapter.js.map +1 -0
  42. package/lib/adapters/soql/types.d.ts +37 -0
  43. package/lib/adapters/soql/types.js +19 -0
  44. package/lib/adapters/soql/types.js.map +1 -0
  45. package/lib/adapters/testing/index.d.ts +37 -0
  46. package/lib/adapters/testing/index.js +20 -0
  47. package/lib/adapters/testing/index.js.map +1 -0
  48. package/lib/adapters/testing/mock-connection.d.ts +77 -0
  49. package/lib/adapters/testing/mock-connection.js +207 -0
  50. package/lib/adapters/testing/mock-connection.js.map +1 -0
  51. package/lib/adapters/testing/mock-logger.d.ts +29 -0
  52. package/lib/adapters/testing/mock-logger.js +57 -0
  53. package/lib/adapters/testing/mock-logger.js.map +1 -0
  54. package/lib/adapters/testing/mock-mcp-adapters.d.ts +32 -0
  55. package/lib/adapters/testing/mock-mcp-adapters.js +52 -0
  56. package/lib/adapters/testing/mock-mcp-adapters.js.map +1 -0
  57. package/lib/adapters/testing/mock-oclif-config.d.ts +22 -0
  58. package/lib/adapters/testing/mock-oclif-config.js +90 -0
  59. package/lib/adapters/testing/mock-oclif-config.js.map +1 -0
  60. package/lib/adapters/testing/mock-rest-adapter.d.ts +26 -0
  61. package/lib/adapters/testing/mock-rest-adapter.js +243 -0
  62. package/lib/adapters/testing/mock-rest-adapter.js.map +1 -0
  63. package/lib/adapters/testing/mock-salesforce-connection.d.ts +40 -0
  64. package/lib/adapters/testing/mock-salesforce-connection.js +61 -0
  65. package/lib/adapters/testing/mock-salesforce-connection.js.map +1 -0
  66. package/lib/adapters/testing/mock-soql-adapter.d.ts +30 -0
  67. package/lib/adapters/testing/mock-soql-adapter.js +120 -0
  68. package/lib/adapters/testing/mock-soql-adapter.js.map +1 -0
  69. package/lib/adapters/testing/mock-tooling-adapter.d.ts +24 -0
  70. package/lib/adapters/testing/mock-tooling-adapter.js +163 -0
  71. package/lib/adapters/testing/mock-tooling-adapter.js.map +1 -0
  72. package/lib/adapters/testing/stub-connection.d.ts +93 -0
  73. package/lib/adapters/testing/stub-connection.js +97 -0
  74. package/lib/adapters/testing/stub-connection.js.map +1 -0
  75. package/lib/adapters/testing/stub-rest-adapter.d.ts +52 -0
  76. package/lib/adapters/testing/stub-rest-adapter.js +58 -0
  77. package/lib/adapters/testing/stub-rest-adapter.js.map +1 -0
  78. package/lib/adapters/testing/stub-soql-adapter.d.ts +56 -0
  79. package/lib/adapters/testing/stub-soql-adapter.js +50 -0
  80. package/lib/adapters/testing/stub-soql-adapter.js.map +1 -0
  81. package/lib/adapters/testing/types.d.ts +71 -0
  82. package/lib/adapters/testing/types.js +9 -0
  83. package/lib/adapters/testing/types.js.map +1 -0
  84. package/lib/adapters/tooling/index.d.ts +10 -0
  85. package/lib/adapters/tooling/index.js +17 -0
  86. package/lib/adapters/tooling/index.js.map +1 -0
  87. package/lib/adapters/tooling/tooling-api-adapter.d.ts +157 -0
  88. package/lib/adapters/tooling/tooling-api-adapter.js +339 -0
  89. package/lib/adapters/tooling/tooling-api-adapter.js.map +1 -0
  90. package/lib/adapters/tooling/types.d.ts +81 -0
  91. package/lib/adapters/tooling/types.js +9 -0
  92. package/lib/adapters/tooling/types.js.map +1 -0
  93. package/lib/adapters/types.d.ts +112 -0
  94. package/lib/adapters/types.js +169 -0
  95. package/lib/adapters/types.js.map +1 -0
  96. package/lib/base/cuneiform-command.d.ts +152 -0
  97. package/lib/base/cuneiform-command.js +243 -0
  98. package/lib/base/cuneiform-command.js.map +1 -0
  99. package/lib/commands/cuneiform/compatibility/check.d.ts +43 -0
  100. package/lib/commands/cuneiform/compatibility/check.js +114 -0
  101. package/lib/commands/cuneiform/compatibility/check.js.map +1 -0
  102. package/lib/commands/cuneiform/definition/create.d.ts +119 -0
  103. package/lib/commands/cuneiform/definition/create.js +693 -0
  104. package/lib/commands/cuneiform/definition/create.js.map +1 -0
  105. package/lib/commands/cuneiform/definition/export.d.ts +11 -2
  106. package/lib/commands/cuneiform/definition/export.js +56 -20
  107. package/lib/commands/cuneiform/definition/export.js.map +1 -1
  108. package/lib/commands/cuneiform/definition/get.d.ts +86 -0
  109. package/lib/commands/cuneiform/definition/get.js +270 -0
  110. package/lib/commands/cuneiform/definition/get.js.map +1 -0
  111. package/lib/commands/cuneiform/definition/import.d.ts +12 -7
  112. package/lib/commands/cuneiform/definition/import.js +30 -19
  113. package/lib/commands/cuneiform/definition/import.js.map +1 -1
  114. package/lib/commands/cuneiform/definition/list.d.ts +110 -0
  115. package/lib/commands/cuneiform/definition/list.js +344 -0
  116. package/lib/commands/cuneiform/definition/list.js.map +1 -0
  117. package/lib/commands/cuneiform/definition/purge.d.ts +105 -0
  118. package/lib/commands/cuneiform/definition/purge.js +533 -0
  119. package/lib/commands/cuneiform/definition/purge.js.map +1 -0
  120. package/lib/commands/cuneiform/definition/update.d.ts +58 -0
  121. package/lib/commands/cuneiform/definition/update.js +206 -0
  122. package/lib/commands/cuneiform/definition/update.js.map +1 -0
  123. package/lib/commands/cuneiform/mcp/serve.d.ts +56 -0
  124. package/lib/commands/cuneiform/mcp/serve.js +109 -0
  125. package/lib/commands/cuneiform/mcp/serve.js.map +1 -0
  126. package/lib/commands/cuneiform/object/describe.d.ts +61 -0
  127. package/lib/commands/cuneiform/object/describe.js +461 -0
  128. package/lib/commands/cuneiform/object/describe.js.map +1 -0
  129. package/lib/commands/cuneiform/object/list.d.ts +111 -0
  130. package/lib/commands/cuneiform/object/list.js +239 -0
  131. package/lib/commands/cuneiform/object/list.js.map +1 -0
  132. package/lib/commands/cuneiform/org/details.d.ts +99 -0
  133. package/lib/commands/cuneiform/org/details.js +521 -0
  134. package/lib/commands/cuneiform/org/details.js.map +1 -0
  135. package/lib/commands/cuneiform/org/reset.d.ts +46 -0
  136. package/lib/commands/cuneiform/org/reset.js +135 -0
  137. package/lib/commands/cuneiform/org/reset.js.map +1 -0
  138. package/lib/commands/cuneiform/profile/request/cancel.d.ts +59 -0
  139. package/lib/commands/cuneiform/profile/request/cancel.js +202 -0
  140. package/lib/commands/cuneiform/profile/request/cancel.js.map +1 -0
  141. package/lib/commands/cuneiform/profile/request/delete.d.ts +59 -0
  142. package/lib/commands/cuneiform/profile/request/delete.js +223 -0
  143. package/lib/commands/cuneiform/profile/request/delete.js.map +1 -0
  144. package/lib/commands/cuneiform/profile/request/list.d.ts +35 -0
  145. package/lib/commands/cuneiform/profile/request/list.js +102 -0
  146. package/lib/commands/cuneiform/profile/request/list.js.map +1 -0
  147. package/lib/commands/cuneiform/profile.d.ts +90 -0
  148. package/lib/commands/cuneiform/profile.js +322 -0
  149. package/lib/commands/cuneiform/profile.js.map +1 -0
  150. package/lib/commands/cuneiform/summary/purge.d.ts +77 -0
  151. package/lib/commands/cuneiform/summary/purge.js +429 -0
  152. package/lib/commands/cuneiform/summary/purge.js.map +1 -0
  153. package/lib/commands/cuneiform/summary/reprofile.d.ts +60 -0
  154. package/lib/commands/cuneiform/summary/reprofile.js +236 -0
  155. package/lib/commands/cuneiform/summary/reprofile.js.map +1 -0
  156. package/lib/commands/cuneiform/summary/stop.d.ts +59 -0
  157. package/lib/commands/cuneiform/summary/stop.js +234 -0
  158. package/lib/commands/cuneiform/summary/stop.js.map +1 -0
  159. package/lib/commands/cuneiform/user/details.d.ts +73 -0
  160. package/lib/commands/cuneiform/user/details.js +391 -0
  161. package/lib/commands/cuneiform/user/details.js.map +1 -0
  162. package/lib/constants/index.d.ts +8 -0
  163. package/lib/constants/index.js +16 -0
  164. package/lib/constants/index.js.map +1 -0
  165. package/lib/constants/namespace-constants.d.ts +91 -0
  166. package/lib/constants/namespace-constants.js +211 -0
  167. package/lib/constants/namespace-constants.js.map +1 -0
  168. package/lib/debug/command-debug-proxy.d.ts +101 -0
  169. package/lib/debug/command-debug-proxy.js +171 -0
  170. package/lib/debug/command-debug-proxy.js.map +1 -0
  171. package/lib/debug/debug-logger.d.ts +85 -0
  172. package/lib/debug/debug-logger.js +133 -0
  173. package/lib/debug/debug-logger.js.map +1 -0
  174. package/lib/debug/index.d.ts +12 -0
  175. package/lib/debug/index.js +20 -0
  176. package/lib/debug/index.js.map +1 -0
  177. package/lib/debug/service-debug-proxy.d.ts +30 -0
  178. package/lib/debug/service-debug-proxy.js +102 -0
  179. package/lib/debug/service-debug-proxy.js.map +1 -0
  180. package/lib/hooks/prerun.d.ts +25 -0
  181. package/lib/hooks/prerun.js +47 -0
  182. package/lib/hooks/prerun.js.map +1 -0
  183. package/lib/mcp/config/mcp-config.d.ts +55 -0
  184. package/lib/mcp/config/mcp-config.js +51 -0
  185. package/lib/mcp/config/mcp-config.js.map +1 -0
  186. package/lib/mcp/config/pagination.d.ts +96 -0
  187. package/lib/mcp/config/pagination.js +108 -0
  188. package/lib/mcp/config/pagination.js.map +1 -0
  189. package/lib/mcp/config/system-prompts.d.ts +18 -0
  190. package/lib/mcp/config/system-prompts.js +92 -0
  191. package/lib/mcp/config/system-prompts.js.map +1 -0
  192. package/lib/mcp/errors.d.ts +23 -0
  193. package/lib/mcp/errors.js +27 -0
  194. package/lib/mcp/errors.js.map +1 -0
  195. package/lib/mcp/schemas/input-schemas.d.ts +327 -0
  196. package/lib/mcp/schemas/input-schemas.js +302 -0
  197. package/lib/mcp/schemas/input-schemas.js.map +1 -0
  198. package/lib/mcp/server.d.ts +40 -0
  199. package/lib/mcp/server.js +316 -0
  200. package/lib/mcp/server.js.map +1 -0
  201. package/lib/mcp/tools/contactpoint-tools.d.ts +14 -0
  202. package/lib/mcp/tools/contactpoint-tools.js +34 -0
  203. package/lib/mcp/tools/contactpoint-tools.js.map +1 -0
  204. package/lib/mcp/tools/definition-io-tools.d.ts +19 -0
  205. package/lib/mcp/tools/definition-io-tools.js +152 -0
  206. package/lib/mcp/tools/definition-io-tools.js.map +1 -0
  207. package/lib/mcp/tools/definition-tools.d.ts +51 -0
  208. package/lib/mcp/tools/definition-tools.js +199 -0
  209. package/lib/mcp/tools/definition-tools.js.map +1 -0
  210. package/lib/mcp/tools/index.d.ts +37 -0
  211. package/lib/mcp/tools/index.js +88 -0
  212. package/lib/mcp/tools/index.js.map +1 -0
  213. package/lib/mcp/tools/object-tools.d.ts +22 -0
  214. package/lib/mcp/tools/object-tools.js +306 -0
  215. package/lib/mcp/tools/object-tools.js.map +1 -0
  216. package/lib/mcp/tools/org-tools.d.ts +14 -0
  217. package/lib/mcp/tools/org-tools.js +177 -0
  218. package/lib/mcp/tools/org-tools.js.map +1 -0
  219. package/lib/mcp/tools/profile-tools.d.ts +59 -0
  220. package/lib/mcp/tools/profile-tools.js +213 -0
  221. package/lib/mcp/tools/profile-tools.js.map +1 -0
  222. package/lib/mcp/tools/summary-tools.d.ts +14 -0
  223. package/lib/mcp/tools/summary-tools.js +38 -0
  224. package/lib/mcp/tools/summary-tools.js.map +1 -0
  225. package/lib/mcp/tools/tool-factory.d.ts +63 -0
  226. package/lib/mcp/tools/tool-factory.js +146 -0
  227. package/lib/mcp/tools/tool-factory.js.map +1 -0
  228. package/lib/mcp/tools/user-tools.d.ts +25 -0
  229. package/lib/mcp/tools/user-tools.js +167 -0
  230. package/lib/mcp/tools/user-tools.js.map +1 -0
  231. package/lib/models/date-literal.d.ts +211 -0
  232. package/lib/models/date-literal.js +615 -0
  233. package/lib/models/date-literal.js.map +1 -0
  234. package/lib/models/object-describe-types.d.ts +173 -0
  235. package/lib/models/object-describe-types.js +9 -0
  236. package/lib/models/object-describe-types.js.map +1 -0
  237. package/lib/models/profile-request-types.d.ts +118 -0
  238. package/lib/models/profile-request-types.js +23 -0
  239. package/lib/models/profile-request-types.js.map +1 -0
  240. package/lib/models/profiling-execution-types.d.ts +154 -0
  241. package/lib/models/profiling-execution-types.js +14 -0
  242. package/lib/models/profiling-execution-types.js.map +1 -0
  243. package/lib/models/service-result.d.ts +114 -0
  244. package/lib/models/service-result.js +81 -0
  245. package/lib/models/service-result.js.map +1 -0
  246. package/lib/models/sfdmu-types.d.ts +4 -25
  247. package/lib/models/sfdmu-types.js +7 -3
  248. package/lib/models/sfdmu-types.js.map +1 -1
  249. package/lib/models/status-types.d.ts +38 -0
  250. package/lib/models/status-types.js +12 -0
  251. package/lib/models/status-types.js.map +1 -0
  252. package/lib/models/summary-bulk-types.d.ts +61 -0
  253. package/lib/models/summary-bulk-types.js +23 -0
  254. package/lib/models/summary-bulk-types.js.map +1 -0
  255. package/lib/models/user-details-types.d.ts +163 -0
  256. package/lib/models/user-details-types.js +9 -0
  257. package/lib/models/user-details-types.js.map +1 -0
  258. package/lib/models/year-range.d.ts +78 -0
  259. package/lib/models/year-range.js +153 -0
  260. package/lib/models/year-range.js.map +1 -0
  261. package/lib/operations/CompatibilityCheckOperation.d.ts +62 -0
  262. package/lib/operations/CompatibilityCheckOperation.js +102 -0
  263. package/lib/operations/CompatibilityCheckOperation.js.map +1 -0
  264. package/lib/operations/DefinitionCreateOperation.d.ts +411 -0
  265. package/lib/operations/DefinitionCreateOperation.js +1121 -0
  266. package/lib/operations/DefinitionCreateOperation.js.map +1 -0
  267. package/lib/operations/DefinitionExportOperation.d.ts +65 -2
  268. package/lib/operations/DefinitionExportOperation.js +94 -10
  269. package/lib/operations/DefinitionExportOperation.js.map +1 -1
  270. package/lib/operations/DefinitionImportOperation.d.ts +61 -11
  271. package/lib/operations/DefinitionImportOperation.js +194 -31
  272. package/lib/operations/DefinitionImportOperation.js.map +1 -1
  273. package/lib/operations/DefinitionListOperation.d.ts +66 -0
  274. package/lib/operations/DefinitionListOperation.js +108 -0
  275. package/lib/operations/DefinitionListOperation.js.map +1 -0
  276. package/lib/operations/DefinitionPurgeOperation.d.ts +199 -0
  277. package/lib/operations/DefinitionPurgeOperation.js +465 -0
  278. package/lib/operations/DefinitionPurgeOperation.js.map +1 -0
  279. package/lib/operations/DefinitionUpdateOperation.d.ts +78 -0
  280. package/lib/operations/DefinitionUpdateOperation.js +142 -0
  281. package/lib/operations/DefinitionUpdateOperation.js.map +1 -0
  282. package/lib/operations/OrgDetailsOperation.d.ts +253 -0
  283. package/lib/operations/OrgDetailsOperation.js +456 -0
  284. package/lib/operations/OrgDetailsOperation.js.map +1 -0
  285. package/lib/operations/OrgResetOperation.d.ts +114 -0
  286. package/lib/operations/OrgResetOperation.js +209 -0
  287. package/lib/operations/OrgResetOperation.js.map +1 -0
  288. package/lib/operations/ProfileOperation.d.ts +187 -0
  289. package/lib/operations/ProfileOperation.js +373 -0
  290. package/lib/operations/ProfileOperation.js.map +1 -0
  291. package/lib/operations/ProfileRequestCancelOperation.d.ts +59 -0
  292. package/lib/operations/ProfileRequestCancelOperation.js +137 -0
  293. package/lib/operations/ProfileRequestCancelOperation.js.map +1 -0
  294. package/lib/operations/ProfileRequestDeleteOperation.d.ts +64 -0
  295. package/lib/operations/ProfileRequestDeleteOperation.js +134 -0
  296. package/lib/operations/ProfileRequestDeleteOperation.js.map +1 -0
  297. package/lib/operations/ProfileRequestListOperation.d.ts +39 -0
  298. package/lib/operations/ProfileRequestListOperation.js +61 -0
  299. package/lib/operations/ProfileRequestListOperation.js.map +1 -0
  300. package/lib/operations/SummaryPurgeOperation.d.ts +134 -0
  301. package/lib/operations/SummaryPurgeOperation.js +257 -0
  302. package/lib/operations/SummaryPurgeOperation.js.map +1 -0
  303. package/lib/operations/SummaryReprofileOperation.d.ts +88 -0
  304. package/lib/operations/SummaryReprofileOperation.js +174 -0
  305. package/lib/operations/SummaryReprofileOperation.js.map +1 -0
  306. package/lib/operations/SummaryStopOperation.d.ts +87 -0
  307. package/lib/operations/SummaryStopOperation.js +175 -0
  308. package/lib/operations/SummaryStopOperation.js.map +1 -0
  309. package/lib/services/BulkExecutionService.d.ts +120 -0
  310. package/lib/services/BulkExecutionService.js +535 -0
  311. package/lib/services/BulkExecutionService.js.map +1 -0
  312. package/lib/services/CompatibilityService.d.ts +81 -0
  313. package/lib/services/CompatibilityService.js +118 -0
  314. package/lib/services/CompatibilityService.js.map +1 -0
  315. package/lib/services/ConfigureMode.d.ts +85 -0
  316. package/lib/services/ConfigureMode.js +390 -0
  317. package/lib/services/ConfigureMode.js.map +1 -0
  318. package/lib/services/ContactPointService.d.ts +111 -0
  319. package/lib/services/ContactPointService.js +286 -0
  320. package/lib/services/ContactPointService.js.map +1 -0
  321. package/lib/services/DataAvailabilityService.d.ts +81 -0
  322. package/lib/services/DataAvailabilityService.js +128 -0
  323. package/lib/services/DataAvailabilityService.js.map +1 -0
  324. package/lib/services/DefinitionFieldGenerationService.d.ts +309 -0
  325. package/lib/services/DefinitionFieldGenerationService.js +795 -0
  326. package/lib/services/DefinitionFieldGenerationService.js.map +1 -0
  327. package/lib/services/DefinitionQueryBuilder.d.ts +59 -0
  328. package/lib/services/DefinitionQueryBuilder.js +234 -0
  329. package/lib/services/DefinitionQueryBuilder.js.map +1 -0
  330. package/lib/services/ObjectDescribeService.d.ts +436 -0
  331. package/lib/services/ObjectDescribeService.js +869 -0
  332. package/lib/services/ObjectDescribeService.js.map +1 -0
  333. package/lib/services/ObjectFilteringService.d.ts +400 -0
  334. package/lib/services/ObjectFilteringService.js +878 -0
  335. package/lib/services/ObjectFilteringService.js.map +1 -0
  336. package/lib/services/ObjectListCommandService.d.ts +429 -0
  337. package/lib/services/ObjectListCommandService.js +873 -0
  338. package/lib/services/ObjectListCommandService.js.map +1 -0
  339. package/lib/services/ObjectListService.d.ts +201 -0
  340. package/lib/services/ObjectListService.js +345 -0
  341. package/lib/services/ObjectListService.js.map +1 -0
  342. package/lib/services/OrgInfoService.d.ts +485 -0
  343. package/lib/services/OrgInfoService.js +1122 -0
  344. package/lib/services/OrgInfoService.js.map +1 -0
  345. package/lib/services/PollingService.d.ts +105 -0
  346. package/lib/services/PollingService.js +117 -0
  347. package/lib/services/PollingService.js.map +1 -0
  348. package/lib/services/ProfileRequestService.d.ts +186 -0
  349. package/lib/services/ProfileRequestService.js +555 -0
  350. package/lib/services/ProfileRequestService.js.map +1 -0
  351. package/lib/services/ProfilingDefinitionService.d.ts +535 -0
  352. package/lib/services/ProfilingDefinitionService.js +981 -0
  353. package/lib/services/ProfilingDefinitionService.js.map +1 -0
  354. package/lib/services/ProfilingExecutionService.d.ts +122 -0
  355. package/lib/services/ProfilingExecutionService.js +320 -0
  356. package/lib/services/ProfilingExecutionService.js.map +1 -0
  357. package/lib/services/ProfilingSummaryService.d.ts +292 -0
  358. package/lib/services/ProfilingSummaryService.js +685 -0
  359. package/lib/services/ProfilingSummaryService.js.map +1 -0
  360. package/lib/services/RecordTypeService.d.ts +129 -0
  361. package/lib/services/RecordTypeService.js +284 -0
  362. package/lib/services/RecordTypeService.js.map +1 -0
  363. package/lib/services/SFDMUService.d.ts +17 -3
  364. package/lib/services/SFDMUService.js +49 -16
  365. package/lib/services/SFDMUService.js.map +1 -1
  366. package/lib/services/TabDetectionService.d.ts +105 -0
  367. package/lib/services/TabDetectionService.js +206 -0
  368. package/lib/services/TabDetectionService.js.map +1 -0
  369. package/lib/services/UnconfigureMode.d.ts +74 -0
  370. package/lib/services/UnconfigureMode.js +378 -0
  371. package/lib/services/UnconfigureMode.js.map +1 -0
  372. package/lib/services/UserConfigurationService.d.ts +155 -0
  373. package/lib/services/UserConfigurationService.js +573 -0
  374. package/lib/services/UserConfigurationService.js.map +1 -0
  375. package/lib/services/UserConfigurationTypes.d.ts +181 -0
  376. package/lib/services/UserConfigurationTypes.js +14 -0
  377. package/lib/services/UserConfigurationTypes.js.map +1 -0
  378. package/lib/services/UserReadinessService.d.ts +330 -0
  379. package/lib/services/UserReadinessService.js +831 -0
  380. package/lib/services/UserReadinessService.js.map +1 -0
  381. package/lib/services/constants.d.ts +53 -0
  382. package/lib/services/constants.js +71 -0
  383. package/lib/services/constants.js.map +1 -0
  384. package/lib/services/namespace-constants.d.ts +1 -0
  385. package/lib/services/namespace-constants.js +11 -0
  386. package/lib/services/namespace-constants.js.map +1 -0
  387. package/lib/services/validation.d.ts +47 -0
  388. package/lib/services/validation.js +119 -0
  389. package/lib/services/validation.js.map +1 -0
  390. package/lib/utils/batch-processor.d.ts +13 -0
  391. package/lib/utils/batch-processor.js +39 -0
  392. package/lib/utils/batch-processor.js.map +1 -0
  393. package/lib/utils/formatting/availability-grid.d.ts +81 -0
  394. package/lib/utils/formatting/availability-grid.js +94 -0
  395. package/lib/utils/formatting/availability-grid.js.map +1 -0
  396. package/lib/utils/formatting/business-process-grid.d.ts +51 -0
  397. package/lib/utils/formatting/business-process-grid.js +58 -0
  398. package/lib/utils/formatting/business-process-grid.js.map +1 -0
  399. package/lib/utils/formatting/command-display.d.ts +154 -0
  400. package/lib/utils/formatting/command-display.js +154 -0
  401. package/lib/utils/formatting/command-display.js.map +1 -0
  402. package/lib/utils/formatting/definition-create-display.d.ts +118 -0
  403. package/lib/utils/formatting/definition-create-display.js +231 -0
  404. package/lib/utils/formatting/definition-create-display.js.map +1 -0
  405. package/lib/utils/formatting/empty-states.d.ts +35 -0
  406. package/lib/utils/formatting/empty-states.js +70 -0
  407. package/lib/utils/formatting/empty-states.js.map +1 -0
  408. package/lib/utils/formatting/errors.d.ts +33 -0
  409. package/lib/utils/formatting/errors.js +72 -0
  410. package/lib/utils/formatting/errors.js.map +1 -0
  411. package/lib/utils/formatting/field-types.d.ts +32 -0
  412. package/lib/utils/formatting/field-types.js +88 -0
  413. package/lib/utils/formatting/field-types.js.map +1 -0
  414. package/lib/utils/formatting/index.d.ts +29 -0
  415. package/lib/utils/formatting/index.js +28 -0
  416. package/lib/utils/formatting/index.js.map +1 -0
  417. package/lib/utils/formatting/indicators.d.ts +113 -0
  418. package/lib/utils/formatting/indicators.js +161 -0
  419. package/lib/utils/formatting/indicators.js.map +1 -0
  420. package/lib/utils/formatting/loading-messages.d.ts +37 -0
  421. package/lib/utils/formatting/loading-messages.js +50 -0
  422. package/lib/utils/formatting/loading-messages.js.map +1 -0
  423. package/lib/utils/formatting/namespace-display.d.ts +31 -0
  424. package/lib/utils/formatting/namespace-display.js +64 -0
  425. package/lib/utils/formatting/namespace-display.js.map +1 -0
  426. package/lib/utils/formatting/numbers.d.ts +73 -0
  427. package/lib/utils/formatting/numbers.js +187 -0
  428. package/lib/utils/formatting/numbers.js.map +1 -0
  429. package/lib/utils/formatting/object-describe-display.d.ts +114 -0
  430. package/lib/utils/formatting/object-describe-display.js +440 -0
  431. package/lib/utils/formatting/object-describe-display.js.map +1 -0
  432. package/lib/utils/formatting/object-list-display.d.ts +213 -0
  433. package/lib/utils/formatting/object-list-display.js +672 -0
  434. package/lib/utils/formatting/object-list-display.js.map +1 -0
  435. package/lib/utils/formatting/org-identity.d.ts +15 -0
  436. package/lib/utils/formatting/org-identity.js +28 -0
  437. package/lib/utils/formatting/org-identity.js.map +1 -0
  438. package/lib/utils/formatting/record-age-grid.d.ts +41 -0
  439. package/lib/utils/formatting/record-age-grid.js +56 -0
  440. package/lib/utils/formatting/record-age-grid.js.map +1 -0
  441. package/lib/utils/formatting/sections.d.ts +108 -0
  442. package/lib/utils/formatting/sections.js +150 -0
  443. package/lib/utils/formatting/sections.js.map +1 -0
  444. package/lib/utils/formatting/tables.d.ts +90 -0
  445. package/lib/utils/formatting/tables.js +113 -0
  446. package/lib/utils/formatting/tables.js.map +1 -0
  447. package/lib/utils/formatting/user-details-display.d.ts +101 -0
  448. package/lib/utils/formatting/user-details-display.js +425 -0
  449. package/lib/utils/formatting/user-details-display.js.map +1 -0
  450. package/lib/utils/pagination/index.d.ts +11 -0
  451. package/lib/utils/pagination/index.js +18 -0
  452. package/lib/utils/pagination/index.js.map +1 -0
  453. package/lib/utils/pagination/keypress-reader.d.ts +20 -0
  454. package/lib/utils/pagination/keypress-reader.js +63 -0
  455. package/lib/utils/pagination/keypress-reader.js.map +1 -0
  456. package/lib/utils/pagination/paginate-output.d.ts +48 -0
  457. package/lib/utils/pagination/paginate-output.js +136 -0
  458. package/lib/utils/pagination/paginate-output.js.map +1 -0
  459. package/messages/compatibility.check.md +71 -0
  460. package/messages/cuneiform.access.md +138 -0
  461. package/messages/definition.create.md +511 -0
  462. package/messages/definition.export.md +56 -13
  463. package/messages/definition.get.md +147 -0
  464. package/messages/definition.import.md +35 -18
  465. package/messages/definition.list.md +264 -0
  466. package/messages/definition.purge.md +318 -0
  467. package/messages/definition.update.md +118 -0
  468. package/messages/mcp.serve.md +66 -0
  469. package/messages/object.describe.md +201 -0
  470. package/messages/object.list.md +443 -0
  471. package/messages/org.details.md +386 -0
  472. package/messages/org.reset.md +71 -0
  473. package/messages/profile.md +231 -0
  474. package/messages/profile.request.cancel.md +143 -0
  475. package/messages/profile.request.delete.md +139 -0
  476. package/messages/profile.request.list.md +89 -0
  477. package/messages/summary.purge.md +218 -0
  478. package/messages/summary.reprofile.md +150 -0
  479. package/messages/summary.stop.md +157 -0
  480. package/messages/user.details.md +501 -0
  481. package/oclif.lock +1954 -4859
  482. package/oclif.manifest.json +2697 -82
  483. package/package.json +89 -18
  484. package/lib/commands/cuneiform/about.d.ts +0 -13
  485. package/lib/commands/cuneiform/about.js +0 -26
  486. package/lib/commands/cuneiform/about.js.map +0 -1
  487. package/lib/commands/hello/world.d.ts +0 -14
  488. package/lib/commands/hello/world.js +0 -27
  489. package/lib/commands/hello/world.js.map +0 -1
  490. package/lib/index.d.ts +0 -2
  491. package/lib/index.js +0 -2
  492. package/lib/index.js.map +0 -1
  493. package/messages/cuneiform.about.md +0 -19
  494. package/messages/hello.world.md +0 -29
@@ -0,0 +1,199 @@
1
+ import { type ServiceResult } from '../models/service-result.js';
2
+ import { ProfilingDefinitionService, type DefinitionType, type ProfilingStatus, type DeleteSkipReason, type DeleteFailure, type DeleteProgressEvent } from '../services/ProfilingDefinitionService.js';
3
+ /**
4
+ * Options for the definition purge operation.
5
+ *
6
+ * Selection modes:
7
+ * - `keys` — delete specific definitions by key (exclusive, all other flags ignored)
8
+ * - `all` — fetch all definitions (optionally narrowed by filters)
9
+ * - Filters alone — fetch matching definitions via inclusive AND logic
10
+ *
11
+ * Filters that map to SOQL (server-side): objectNames, pattern, category, status, isActive, method (as type)
12
+ * Filters applied client-side after fetch: filter (standard/custom — derived from __c suffix), namespace (string-prefix on objectName)
13
+ */
14
+ /** Canonical message returned when the user declines the purge confirmation prompt. */
15
+ export declare const PURGE_CANCELLED_MESSAGE = "Purge cancelled by user.";
16
+ export type PurgeOptions = {
17
+ /** Target org username or alias */
18
+ targetOrg: string;
19
+ /** Definition keys to delete (e.g., PD-0001) — exclusive mode, all other flags ignored */
20
+ keys?: string[];
21
+ /** Purge all definitions (can be combined with filter flags to narrow) */
22
+ all?: boolean;
23
+ /** Filter by target object API names (comma-delimited from CLI) */
24
+ objectNames?: string[];
25
+ /** Filter by object type: standard or custom (client-side) */
26
+ filter?: 'standard' | 'custom';
27
+ /** Filter by definition name pattern with SOQL LIKE (e.g., Account%) */
28
+ pattern?: string;
29
+ /** Filter by definition method/type: metadata, historical, or comparative (client-side) */
30
+ method?: DefinitionType;
31
+ /** Filter by category */
32
+ category?: string;
33
+ /** Filter by profiling status */
34
+ status?: ProfilingStatus;
35
+ /** Filter by object namespace prefix (client-side) */
36
+ namespace?: string;
37
+ /** Maximum number of definitions to process */
38
+ limit?: number;
39
+ /** Filter by active status */
40
+ isActive?: boolean;
41
+ /** Preview mode — categorize without deleting */
42
+ dryRun?: boolean;
43
+ /** Skip interactive confirmation prompt */
44
+ noPrompt?: boolean;
45
+ /** Progress callback for per-definition status updates */
46
+ onProgress?: (event: DeleteProgressEvent) => void;
47
+ /** Callback invoked after definitions are retrieved, reporting count and max label length */
48
+ onDefinitionsFound?: (count: number, maxLabelLength: number) => void;
49
+ /**
50
+ * Callback invoked after categorization but before deletion.
51
+ * Receives the categorized preview data and returns whether to proceed with deletion.
52
+ * If not provided or returns true, deletion proceeds. If returns false, operation aborts.
53
+ */
54
+ onPreviewReady?: (preview: PreviewData) => Promise<boolean>;
55
+ /** Optional logger for debug output */
56
+ logger?: Console;
57
+ };
58
+ /**
59
+ * Preview entry for a single definition in dry-run mode.
60
+ */
61
+ export type PurgePreviewEntry = {
62
+ id: string;
63
+ key: string;
64
+ name: string;
65
+ objectName: string;
66
+ status: string;
67
+ action: 'delete' | 'skip';
68
+ reason?: string;
69
+ };
70
+ /**
71
+ * Dry-run preview summary.
72
+ */
73
+ export type PurgePreview = {
74
+ deletable: number;
75
+ blockedBySummaries: number;
76
+ definitions: PurgePreviewEntry[];
77
+ };
78
+ /**
79
+ * Data passed to the onPreviewReady callback for user confirmation.
80
+ */
81
+ export type PreviewData = {
82
+ /** Definitions eligible for deletion */
83
+ deletable: BlockedDefinition[];
84
+ /** Definitions blocked by related summaries */
85
+ blockedBySummaries: BlockedDefinition[];
86
+ /** Total definitions matched by filters */
87
+ total: number;
88
+ };
89
+ /**
90
+ * Blocked definition info for display.
91
+ */
92
+ export type BlockedDefinition = {
93
+ id: string;
94
+ key: string;
95
+ name: string;
96
+ objectName: string;
97
+ objectLabel?: string;
98
+ category?: string;
99
+ timeCategory?: string;
100
+ segmentCategory?: string;
101
+ status: string;
102
+ };
103
+ /**
104
+ * Result of a definition purge operation.
105
+ */
106
+ export type PurgeResult = {
107
+ /** Number of definitions successfully deleted */
108
+ deleted: number;
109
+ /** Number of definitions skipped (has summaries or other reasons) */
110
+ skipped: number;
111
+ /** Number of definitions that failed to delete */
112
+ failed: number;
113
+ /** Total number of definitions processed (including blocked) */
114
+ total: number;
115
+ /** Details about why each definition was skipped */
116
+ skipReasons: DeleteSkipReason[];
117
+ /** Details about each deletion failure */
118
+ failures: DeleteFailure[];
119
+ /** Definitions blocked by related summaries (pre-categorized) */
120
+ blockedBySummaries: BlockedDefinition[];
121
+ /** Whether this was a dry-run (no deletions performed) */
122
+ dryRun?: boolean;
123
+ /** Dry-run preview (only present when dryRun is true) */
124
+ preview?: PurgePreview;
125
+ };
126
+ /**
127
+ * Error codes specific to purge operations.
128
+ */
129
+ export declare const PurgeErrorCodes: {
130
+ /** No selection criteria provided (no --all, --keys, or filters) */
131
+ readonly NO_SELECTION_CRITERIA: "PURGE_NO_SELECTION_CRITERIA";
132
+ /** Query for definitions failed */
133
+ readonly QUERY_FAILED: "PURGE_QUERY_FAILED";
134
+ /** No eligible definitions found */
135
+ readonly NO_ELIGIBLE_DEFINITIONS: "PURGE_NO_ELIGIBLE_DEFINITIONS";
136
+ /** Delete operation failed */
137
+ readonly DELETE_FAILED: "PURGE_DELETE_FAILED";
138
+ /** User cancelled the operation */
139
+ readonly USER_CANCELLED: "PURGE_USER_CANCELLED";
140
+ /** Operation failed unexpectedly */
141
+ readonly OPERATION_FAILED: "PURGE_OPERATION_FAILED";
142
+ };
143
+ /**
144
+ * Orchestrates purging of profiling definitions.
145
+ *
146
+ * Follows the 4-layer architecture: Command → Operation → Service → API
147
+ * This operation layer handles:
148
+ * 1. Validates selection mode (IDs, --all, or filters)
149
+ * 2. Fetches definitions using getAllDefinitions() with inclusive AND filters
150
+ * 3. Pre-categorizes into deletable vs blocked (by summaries)
151
+ * 4. Applies client-side filters (object type, method)
152
+ * 5. Optionally previews (dry-run) or executes deletion
153
+ * 6. Reports per-definition progress and statistics
154
+ */
155
+ export declare class DefinitionPurgeOperation {
156
+ private readonly definitionService;
157
+ private readonly logger?;
158
+ constructor(definitionService: ProfilingDefinitionService, logger?: Console | undefined);
159
+ /**
160
+ * Checks if any filter flags are specified.
161
+ */
162
+ private static hasFilterFlags;
163
+ /**
164
+ * Builds GetDefinitionsOptions from purge options (server-side filters only).
165
+ */
166
+ private static buildQueryOptions;
167
+ /**
168
+ * Applies client-side filters that can't be expressed in SOQL.
169
+ */
170
+ private static applyClientFilters;
171
+ /**
172
+ * Categorizes definitions into deletable and blocked-by-summaries.
173
+ *
174
+ * Definitions can be deleted regardless of profiling status as long as
175
+ * they have no associated summaries.
176
+ */
177
+ private static categorize;
178
+ /**
179
+ * Maps a definition to a BlockedDefinition for display.
180
+ */
181
+ private static toBlockedDefinition;
182
+ /**
183
+ * Creates the empty result structure.
184
+ */
185
+ private static emptyResult;
186
+ /**
187
+ * Executes the definition purge operation.
188
+ */
189
+ execute(options: PurgeOptions): Promise<ServiceResult<PurgeResult>>;
190
+ /**
191
+ * Executes purge in key-list mode.
192
+ * Fetches all definitions, matches by key, ignores all other flags.
193
+ */
194
+ private executeKeyMode;
195
+ /**
196
+ * Executes purge in filter mode (--all or filter flags).
197
+ */
198
+ private executeFilterMode;
199
+ }
@@ -0,0 +1,465 @@
1
+ /*
2
+ * Copyright (c) 2026, PeerNova, Inc. All Rights Reserved.
3
+ * PROPRIETARY AND CONFIDENTIAL. Unauthorized copying, modification,
4
+ * or distribution is strictly prohibited. Use is governed by the
5
+ * Master Subscription Agreement (MSA) between PeerNova, Inc. and the
6
+ * licensee. See LICENSE file in the repo root.
7
+ */
8
+ import { createSuccessResult, createFailureResult } from '../models/service-result.js';
9
+ /**
10
+ * Options for the definition purge operation.
11
+ *
12
+ * Selection modes:
13
+ * - `keys` — delete specific definitions by key (exclusive, all other flags ignored)
14
+ * - `all` — fetch all definitions (optionally narrowed by filters)
15
+ * - Filters alone — fetch matching definitions via inclusive AND logic
16
+ *
17
+ * Filters that map to SOQL (server-side): objectNames, pattern, category, status, isActive, method (as type)
18
+ * Filters applied client-side after fetch: filter (standard/custom — derived from __c suffix), namespace (string-prefix on objectName)
19
+ */
20
+ /** Canonical message returned when the user declines the purge confirmation prompt. */
21
+ export const PURGE_CANCELLED_MESSAGE = 'Purge cancelled by user.';
22
+ /**
23
+ * Error codes specific to purge operations.
24
+ */
25
+ export const PurgeErrorCodes = {
26
+ /** No selection criteria provided (no --all, --keys, or filters) */
27
+ NO_SELECTION_CRITERIA: 'PURGE_NO_SELECTION_CRITERIA',
28
+ /** Query for definitions failed */
29
+ QUERY_FAILED: 'PURGE_QUERY_FAILED',
30
+ /** No eligible definitions found */
31
+ NO_ELIGIBLE_DEFINITIONS: 'PURGE_NO_ELIGIBLE_DEFINITIONS',
32
+ /** Delete operation failed */
33
+ DELETE_FAILED: 'PURGE_DELETE_FAILED',
34
+ /** User cancelled the operation */
35
+ USER_CANCELLED: 'PURGE_USER_CANCELLED',
36
+ /** Operation failed unexpectedly */
37
+ OPERATION_FAILED: 'PURGE_OPERATION_FAILED',
38
+ };
39
+ /**
40
+ * Orchestrates purging of profiling definitions.
41
+ *
42
+ * Follows the 4-layer architecture: Command → Operation → Service → API
43
+ * This operation layer handles:
44
+ * 1. Validates selection mode (IDs, --all, or filters)
45
+ * 2. Fetches definitions using getAllDefinitions() with inclusive AND filters
46
+ * 3. Pre-categorizes into deletable vs blocked (by summaries)
47
+ * 4. Applies client-side filters (object type, method)
48
+ * 5. Optionally previews (dry-run) or executes deletion
49
+ * 6. Reports per-definition progress and statistics
50
+ */
51
+ export class DefinitionPurgeOperation {
52
+ definitionService;
53
+ logger;
54
+ constructor(definitionService, logger) {
55
+ this.definitionService = definitionService;
56
+ this.logger = logger;
57
+ }
58
+ /**
59
+ * Checks if any filter flags are specified.
60
+ */
61
+ static hasFilterFlags(options) {
62
+ return (options.objectNames !== undefined ||
63
+ options.filter !== undefined ||
64
+ options.pattern !== undefined ||
65
+ options.method !== undefined ||
66
+ options.category !== undefined ||
67
+ options.status !== undefined ||
68
+ options.namespace !== undefined ||
69
+ options.isActive !== undefined);
70
+ }
71
+ /**
72
+ * Builds GetDefinitionsOptions from purge options (server-side filters only).
73
+ */
74
+ static buildQueryOptions(options) {
75
+ const queryOptions = {};
76
+ if (options.objectNames !== undefined) {
77
+ queryOptions.objectNames = options.objectNames;
78
+ }
79
+ if (options.pattern !== undefined) {
80
+ queryOptions.namePattern = options.pattern;
81
+ }
82
+ if (options.category !== undefined) {
83
+ queryOptions.category = options.category;
84
+ }
85
+ if (options.status !== undefined) {
86
+ queryOptions.status = options.status;
87
+ }
88
+ if (options.isActive !== undefined) {
89
+ queryOptions.isActive = options.isActive;
90
+ }
91
+ if (options.method !== undefined) {
92
+ queryOptions.type = options.method;
93
+ }
94
+ return queryOptions;
95
+ }
96
+ /**
97
+ * Applies client-side filters that can't be expressed in SOQL.
98
+ */
99
+ static applyClientFilters(definitions, options) {
100
+ let filtered = definitions;
101
+ // Filter by object type (standard vs custom)
102
+ if (options.filter !== undefined) {
103
+ filtered = filtered.filter((def) => {
104
+ const isCustom = def.objectName.endsWith('__c');
105
+ return options.filter === 'custom' ? isCustom : !isCustom;
106
+ });
107
+ }
108
+ // Filter by object namespace prefix
109
+ if (options.namespace !== undefined) {
110
+ const nsPrefix = options.namespace.endsWith('__') ? options.namespace : `${options.namespace}__`;
111
+ filtered = filtered.filter((def) => def.objectName.startsWith(nsPrefix));
112
+ }
113
+ // Apply limit (bypassed when --all is specified)
114
+ if (options.limit !== undefined && options.limit > 0 && !options.all) {
115
+ filtered = filtered.slice(0, options.limit);
116
+ }
117
+ return filtered;
118
+ }
119
+ /**
120
+ * Categorizes definitions into deletable and blocked-by-summaries.
121
+ *
122
+ * Definitions can be deleted regardless of profiling status as long as
123
+ * they have no associated summaries.
124
+ */
125
+ static categorize(definitions) {
126
+ const deletable = [];
127
+ const blockedBySummaries = [];
128
+ for (const def of definitions) {
129
+ if (def.hasRelatedSummaries) {
130
+ blockedBySummaries.push(def);
131
+ }
132
+ else {
133
+ deletable.push(def);
134
+ }
135
+ }
136
+ return { deletable, blockedBySummaries };
137
+ }
138
+ /**
139
+ * Maps a definition to a BlockedDefinition for display.
140
+ */
141
+ static toBlockedDefinition(def) {
142
+ return {
143
+ id: def.id,
144
+ key: def.key,
145
+ name: def.name,
146
+ objectName: def.objectName,
147
+ objectLabel: def.objectLabel,
148
+ category: def.category,
149
+ timeCategory: def.timeCategory,
150
+ segmentCategory: def.segmentCategory,
151
+ status: def.status,
152
+ };
153
+ }
154
+ /**
155
+ * Creates the empty result structure.
156
+ */
157
+ static emptyResult() {
158
+ return {
159
+ deleted: 0,
160
+ skipped: 0,
161
+ failed: 0,
162
+ total: 0,
163
+ skipReasons: [],
164
+ failures: [],
165
+ blockedBySummaries: [],
166
+ };
167
+ }
168
+ /**
169
+ * Executes the definition purge operation.
170
+ */
171
+ async execute(options) {
172
+ const startTime = Date.now();
173
+ const emptyResult = DefinitionPurgeOperation.emptyResult();
174
+ try {
175
+ this.logger?.log('Starting definition purge operation');
176
+ const hasKeys = options.keys !== undefined && options.keys.length > 0;
177
+ const hasAll = options.all === true;
178
+ const hasFilters = DefinitionPurgeOperation.hasFilterFlags(options);
179
+ // Key-list mode: exclusive — fetch all, match by key, delete matched
180
+ if (hasKeys) {
181
+ return await this.executeKeyMode(options, startTime);
182
+ }
183
+ // Validation: Must have at least one selection criterion
184
+ if (!hasAll && !hasFilters) {
185
+ return createFailureResult(emptyResult, PurgeErrorCodes.NO_SELECTION_CRITERIA, 'No selection criteria specified. Provide --all, --keys, or filter flags.', { metadata: { duration: Date.now() - startTime } });
186
+ }
187
+ // Filter mode (--all or filter flags)
188
+ return await this.executeFilterMode(options, startTime);
189
+ }
190
+ catch (error) {
191
+ const errorMessage = error instanceof Error ? error.message : String(error);
192
+ this.logger?.log(`Definition purge operation failed: ${errorMessage}`);
193
+ return createFailureResult(emptyResult, PurgeErrorCodes.OPERATION_FAILED, errorMessage, {
194
+ metadata: { duration: Date.now() - startTime },
195
+ });
196
+ }
197
+ }
198
+ /**
199
+ * Executes purge in key-list mode.
200
+ * Fetches all definitions, matches by key, ignores all other flags.
201
+ */
202
+ async executeKeyMode(options, startTime) {
203
+ const keys = options.keys;
204
+ const keySet = new Set(keys);
205
+ this.logger?.log(`Fetching definitions to match keys: ${keys.join(', ')}`);
206
+ const queryResult = await this.definitionService.getAllDefinitions({});
207
+ if (!queryResult.success) {
208
+ return createFailureResult(DefinitionPurgeOperation.emptyResult(), PurgeErrorCodes.QUERY_FAILED, queryResult.message, { metadata: { duration: Date.now() - startTime } });
209
+ }
210
+ const matched = queryResult.data.filter((def) => keySet.has(def.key));
211
+ const matchedKeys = new Set(matched.map((def) => def.key));
212
+ const unmatchedKeys = keys.filter((k) => !matchedKeys.has(k));
213
+ const maxMatchedLabel = matched.reduce((max, def) => Math.max(max, def.name.length), 0);
214
+ options.onDefinitionsFound?.(matched.length, maxMatchedLabel);
215
+ if (matched.length === 0) {
216
+ return createFailureResult(DefinitionPurgeOperation.emptyResult(), PurgeErrorCodes.NO_ELIGIBLE_DEFINITIONS, `No definitions found matching keys: ${keys.join(', ')}`, { metadata: { duration: Date.now() - startTime } });
217
+ }
218
+ const warnings = unmatchedKeys.length > 0 ? [`Keys not found: ${unmatchedKeys.join(', ')}`] : undefined;
219
+ // Pre-categorize matched definitions
220
+ const { deletable, blockedBySummaries } = DefinitionPurgeOperation.categorize(matched);
221
+ const deletableInfo = deletable.map((def) => DefinitionPurgeOperation.toBlockedDefinition(def));
222
+ const blockedBySummariesInfo = blockedBySummaries.map((def) => DefinitionPurgeOperation.toBlockedDefinition(def));
223
+ // Invoke preview callback for user confirmation (unless dry-run or no-prompt)
224
+ if (options.onPreviewReady && !options.dryRun && !options.noPrompt) {
225
+ const proceed = await options.onPreviewReady({
226
+ deletable: deletableInfo,
227
+ blockedBySummaries: blockedBySummariesInfo,
228
+ total: matched.length,
229
+ });
230
+ if (!proceed) {
231
+ return createSuccessResult({
232
+ ...DefinitionPurgeOperation.emptyResult(),
233
+ total: matched.length,
234
+ blockedBySummaries: blockedBySummariesInfo,
235
+ }, {
236
+ message: PURGE_CANCELLED_MESSAGE,
237
+ warnings,
238
+ metadata: { duration: Date.now() - startTime },
239
+ });
240
+ }
241
+ }
242
+ // Dry-run mode
243
+ if (options.dryRun) {
244
+ const preview = {
245
+ deletable: deletable.length,
246
+ blockedBySummaries: blockedBySummaries.length,
247
+ definitions: [
248
+ ...deletable.map((def) => ({
249
+ id: def.id,
250
+ key: def.key,
251
+ name: def.name,
252
+ objectName: def.objectName,
253
+ status: def.status,
254
+ action: 'delete',
255
+ })),
256
+ ...blockedBySummaries.map((def) => ({
257
+ id: def.id,
258
+ key: def.key,
259
+ name: def.name,
260
+ objectName: def.objectName,
261
+ status: def.status,
262
+ action: 'skip',
263
+ reason: 'has_summaries',
264
+ })),
265
+ ],
266
+ };
267
+ return createSuccessResult({
268
+ ...DefinitionPurgeOperation.emptyResult(),
269
+ deleted: deletable.length,
270
+ total: matched.length,
271
+ dryRun: true,
272
+ preview,
273
+ blockedBySummaries: blockedBySummariesInfo,
274
+ }, {
275
+ message: `Dry-run: ${deletable.length} deletable, ${blockedBySummaries.length} blocked by summaries`,
276
+ warnings,
277
+ metadata: { duration: Date.now() - startTime },
278
+ });
279
+ }
280
+ // No deletable definitions
281
+ if (deletable.length === 0) {
282
+ return createSuccessResult({
283
+ ...DefinitionPurgeOperation.emptyResult(),
284
+ total: matched.length,
285
+ skipped: matched.length,
286
+ blockedBySummaries: blockedBySummariesInfo,
287
+ }, {
288
+ message: 'Purged 0 profiling definitions',
289
+ warnings,
290
+ metadata: { duration: Date.now() - startTime },
291
+ });
292
+ }
293
+ // Execute deletion
294
+ const idsToDelete = deletable.map((def) => def.id);
295
+ const deleteResult = await this.definitionService.deleteDefinitions(idsToDelete, {
296
+ onProgress: options.onProgress,
297
+ });
298
+ if (!deleteResult.success) {
299
+ return createFailureResult(DefinitionPurgeOperation.emptyResult(), PurgeErrorCodes.DELETE_FAILED, deleteResult.message, { metadata: { duration: Date.now() - startTime } });
300
+ }
301
+ const { deleted, skipped, failed, skipReasons, failures } = deleteResult.data;
302
+ return createSuccessResult({
303
+ deleted,
304
+ skipped: skipped + blockedBySummaries.length,
305
+ failed,
306
+ total: matched.length,
307
+ skipReasons,
308
+ failures,
309
+ blockedBySummaries: blockedBySummariesInfo,
310
+ }, {
311
+ message: `Purged ${deleted} profiling definitions`,
312
+ warnings,
313
+ metadata: { duration: Date.now() - startTime },
314
+ });
315
+ }
316
+ /**
317
+ * Executes purge in filter mode (--all or filter flags).
318
+ */
319
+ async executeFilterMode(options, startTime) {
320
+ // Build server-side query options
321
+ const queryOptions = DefinitionPurgeOperation.buildQueryOptions(options);
322
+ this.logger?.log('Fetching definitions with filters...');
323
+ const queryResult = await this.definitionService.getAllDefinitions(queryOptions);
324
+ if (!queryResult.success) {
325
+ this.logger?.log(`Definition query failed: ${queryResult.message}`);
326
+ return createFailureResult(DefinitionPurgeOperation.emptyResult(), PurgeErrorCodes.QUERY_FAILED, queryResult.message, { metadata: { duration: Date.now() - startTime } });
327
+ }
328
+ // Apply client-side filters
329
+ const filtered = DefinitionPurgeOperation.applyClientFilters(queryResult.data, options);
330
+ const maxFilteredLabel = filtered.reduce((max, def) => Math.max(max, def.name.length), 0);
331
+ options.onDefinitionsFound?.(filtered.length, maxFilteredLabel);
332
+ if (filtered.length === 0) {
333
+ return createFailureResult(DefinitionPurgeOperation.emptyResult(), PurgeErrorCodes.NO_ELIGIBLE_DEFINITIONS, 'No definitions found matching the specified criteria.', { metadata: { duration: Date.now() - startTime } });
334
+ }
335
+ // Pre-categorize
336
+ const { deletable, blockedBySummaries } = DefinitionPurgeOperation.categorize(filtered);
337
+ const deletableInfo = deletable.map((def) => DefinitionPurgeOperation.toBlockedDefinition(def));
338
+ const blockedBySummariesInfo = blockedBySummaries.map((def) => DefinitionPurgeOperation.toBlockedDefinition(def));
339
+ // Invoke preview callback for user confirmation (unless dry-run or no-prompt)
340
+ if (options.onPreviewReady && !options.dryRun && !options.noPrompt) {
341
+ const proceed = await options.onPreviewReady({
342
+ deletable: deletableInfo,
343
+ blockedBySummaries: blockedBySummariesInfo,
344
+ total: filtered.length,
345
+ });
346
+ if (!proceed) {
347
+ return createSuccessResult({
348
+ ...DefinitionPurgeOperation.emptyResult(),
349
+ total: filtered.length,
350
+ blockedBySummaries: blockedBySummariesInfo,
351
+ }, {
352
+ message: PURGE_CANCELLED_MESSAGE,
353
+ metadata: { duration: Date.now() - startTime },
354
+ });
355
+ }
356
+ }
357
+ // Dry-run mode: return preview without deleting
358
+ if (options.dryRun) {
359
+ const preview = {
360
+ deletable: deletable.length,
361
+ blockedBySummaries: blockedBySummaries.length,
362
+ definitions: [
363
+ ...deletable.map((def) => ({
364
+ id: def.id,
365
+ key: def.key,
366
+ name: def.name,
367
+ objectName: def.objectName,
368
+ status: def.status,
369
+ action: 'delete',
370
+ })),
371
+ ...blockedBySummaries.map((def) => ({
372
+ id: def.id,
373
+ key: def.key,
374
+ name: def.name,
375
+ objectName: def.objectName,
376
+ status: def.status,
377
+ action: 'skip',
378
+ reason: 'has_summaries',
379
+ })),
380
+ ],
381
+ };
382
+ const result = {
383
+ ...DefinitionPurgeOperation.emptyResult(),
384
+ deleted: deletable.length,
385
+ total: filtered.length,
386
+ dryRun: true,
387
+ preview,
388
+ blockedBySummaries: blockedBySummariesInfo,
389
+ };
390
+ return createSuccessResult(result, {
391
+ message: `Dry-run: ${deletable.length} deletable, ${blockedBySummaries.length} blocked by summaries`,
392
+ metadata: { duration: Date.now() - startTime },
393
+ });
394
+ }
395
+ // Emit progress events for pre-categorized blocked definitions
396
+ const totalForProgress = filtered.length;
397
+ let progressIndex = 0;
398
+ for (const def of blockedBySummaries) {
399
+ progressIndex++;
400
+ options.onProgress?.({
401
+ id: def.id,
402
+ key: def.key,
403
+ name: def.name,
404
+ objectName: def.objectName,
405
+ category: def.category,
406
+ timeCategory: def.timeCategory,
407
+ segmentCategory: def.segmentCategory,
408
+ profilingStatus: def.status,
409
+ status: 'skipped',
410
+ reason: 'has_summaries',
411
+ current: progressIndex,
412
+ total: totalForProgress,
413
+ });
414
+ }
415
+ // If no deletable definitions, return early
416
+ if (deletable.length === 0) {
417
+ const result = {
418
+ deleted: 0,
419
+ skipped: blockedBySummaries.length,
420
+ failed: 0,
421
+ total: filtered.length,
422
+ skipReasons: [],
423
+ failures: [],
424
+ blockedBySummaries: blockedBySummariesInfo,
425
+ };
426
+ return createSuccessResult(result, {
427
+ message: 'Purged 0 profiling definitions',
428
+ metadata: { duration: Date.now() - startTime },
429
+ });
430
+ }
431
+ // Execute deletion for eligible definitions
432
+ const idsToDelete = deletable.map((def) => def.id);
433
+ const deleteResult = await this.definitionService.deleteDefinitions(idsToDelete, {
434
+ onProgress: options.onProgress
435
+ ? (event) => {
436
+ // Adjust progress index to account for pre-categorized skips
437
+ options.onProgress({
438
+ ...event,
439
+ current: progressIndex + event.current,
440
+ total: totalForProgress,
441
+ });
442
+ }
443
+ : undefined,
444
+ });
445
+ if (!deleteResult.success) {
446
+ this.logger?.log(`Delete operation failed: ${deleteResult.message}`);
447
+ return createFailureResult(DefinitionPurgeOperation.emptyResult(), PurgeErrorCodes.DELETE_FAILED, deleteResult.message, { metadata: { duration: Date.now() - startTime } });
448
+ }
449
+ const { deleted, skipped, failed, skipReasons, failures } = deleteResult.data;
450
+ const result = {
451
+ deleted,
452
+ skipped: skipped + blockedBySummaries.length,
453
+ failed,
454
+ total: filtered.length,
455
+ skipReasons,
456
+ failures,
457
+ blockedBySummaries: blockedBySummariesInfo,
458
+ };
459
+ return createSuccessResult(result, {
460
+ message: `Purged ${result.deleted} profiling definitions`,
461
+ metadata: { duration: Date.now() - startTime },
462
+ });
463
+ }
464
+ }
465
+ //# sourceMappingURL=DefinitionPurgeOperation.js.map