@peernova/cuneiform-sf 1.0.2 → 1.0.4-beta.10

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 (488) hide show
  1. package/LICENSE +81 -30
  2. package/README.md +168 -134
  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/lifecycle.d.ts +112 -0
  10. package/lib/adapters/lifecycle.js +94 -0
  11. package/lib/adapters/lifecycle.js.map +1 -0
  12. package/lib/adapters/rest/cache.d.ts +69 -0
  13. package/lib/adapters/rest/cache.js +133 -0
  14. package/lib/adapters/rest/cache.js.map +1 -0
  15. package/lib/adapters/rest/index.d.ts +11 -0
  16. package/lib/adapters/rest/index.js +18 -0
  17. package/lib/adapters/rest/index.js.map +1 -0
  18. package/lib/adapters/rest/profiling-rest-client.d.ts +137 -0
  19. package/lib/adapters/rest/profiling-rest-client.js +115 -0
  20. package/lib/adapters/rest/profiling-rest-client.js.map +1 -0
  21. package/lib/adapters/rest/rest-api-adapter.d.ts +393 -0
  22. package/lib/adapters/rest/rest-api-adapter.js +764 -0
  23. package/lib/adapters/rest/rest-api-adapter.js.map +1 -0
  24. package/lib/adapters/rest/types.d.ts +34 -0
  25. package/lib/adapters/rest/types.js +9 -0
  26. package/lib/adapters/rest/types.js.map +1 -0
  27. package/lib/adapters/retry.d.ts +91 -0
  28. package/lib/adapters/retry.js +215 -0
  29. package/lib/adapters/retry.js.map +1 -0
  30. package/lib/adapters/soql/cuneiform-query-builder.d.ts +418 -0
  31. package/lib/adapters/soql/cuneiform-query-builder.js +606 -0
  32. package/lib/adapters/soql/cuneiform-query-builder.js.map +1 -0
  33. package/lib/adapters/soql/soql-query-adapter.d.ts +141 -0
  34. package/lib/adapters/soql/soql-query-adapter.js +259 -0
  35. package/lib/adapters/soql/soql-query-adapter.js.map +1 -0
  36. package/lib/adapters/soql/types.d.ts +37 -0
  37. package/lib/adapters/soql/types.js +19 -0
  38. package/lib/adapters/soql/types.js.map +1 -0
  39. package/lib/adapters/testing/index.d.ts +37 -0
  40. package/lib/adapters/testing/index.js +20 -0
  41. package/lib/adapters/testing/index.js.map +1 -0
  42. package/lib/adapters/testing/mock-connection.d.ts +77 -0
  43. package/lib/adapters/testing/mock-connection.js +207 -0
  44. package/lib/adapters/testing/mock-connection.js.map +1 -0
  45. package/lib/adapters/testing/mock-logger.d.ts +29 -0
  46. package/lib/adapters/testing/mock-logger.js +57 -0
  47. package/lib/adapters/testing/mock-logger.js.map +1 -0
  48. package/lib/adapters/testing/mock-mcp-adapters.d.ts +32 -0
  49. package/lib/adapters/testing/mock-mcp-adapters.js +52 -0
  50. package/lib/adapters/testing/mock-mcp-adapters.js.map +1 -0
  51. package/lib/adapters/testing/mock-oclif-config.d.ts +22 -0
  52. package/lib/adapters/testing/mock-oclif-config.js +90 -0
  53. package/lib/adapters/testing/mock-oclif-config.js.map +1 -0
  54. package/lib/adapters/testing/mock-rest-adapter.d.ts +26 -0
  55. package/lib/adapters/testing/mock-rest-adapter.js +243 -0
  56. package/lib/adapters/testing/mock-rest-adapter.js.map +1 -0
  57. package/lib/adapters/testing/mock-salesforce-connection.d.ts +40 -0
  58. package/lib/adapters/testing/mock-salesforce-connection.js +61 -0
  59. package/lib/adapters/testing/mock-salesforce-connection.js.map +1 -0
  60. package/lib/adapters/testing/mock-soql-adapter.d.ts +30 -0
  61. package/lib/adapters/testing/mock-soql-adapter.js +120 -0
  62. package/lib/adapters/testing/mock-soql-adapter.js.map +1 -0
  63. package/lib/adapters/testing/mock-tooling-adapter.d.ts +24 -0
  64. package/lib/adapters/testing/mock-tooling-adapter.js +163 -0
  65. package/lib/adapters/testing/mock-tooling-adapter.js.map +1 -0
  66. package/lib/adapters/testing/stub-connection.d.ts +93 -0
  67. package/lib/adapters/testing/stub-connection.js +97 -0
  68. package/lib/adapters/testing/stub-connection.js.map +1 -0
  69. package/lib/adapters/testing/stub-rest-adapter.d.ts +52 -0
  70. package/lib/adapters/testing/stub-rest-adapter.js +58 -0
  71. package/lib/adapters/testing/stub-rest-adapter.js.map +1 -0
  72. package/lib/adapters/testing/stub-soql-adapter.d.ts +56 -0
  73. package/lib/adapters/testing/stub-soql-adapter.js +50 -0
  74. package/lib/adapters/testing/stub-soql-adapter.js.map +1 -0
  75. package/lib/adapters/testing/types.d.ts +71 -0
  76. package/lib/adapters/testing/types.js +9 -0
  77. package/lib/adapters/testing/types.js.map +1 -0
  78. package/lib/adapters/tooling/index.d.ts +10 -0
  79. package/lib/adapters/tooling/index.js +17 -0
  80. package/lib/adapters/tooling/index.js.map +1 -0
  81. package/lib/adapters/tooling/tooling-api-adapter.d.ts +157 -0
  82. package/lib/adapters/tooling/tooling-api-adapter.js +339 -0
  83. package/lib/adapters/tooling/tooling-api-adapter.js.map +1 -0
  84. package/lib/adapters/tooling/types.d.ts +81 -0
  85. package/lib/adapters/tooling/types.js +9 -0
  86. package/lib/adapters/tooling/types.js.map +1 -0
  87. package/lib/adapters/types.d.ts +112 -0
  88. package/lib/adapters/types.js +169 -0
  89. package/lib/adapters/types.js.map +1 -0
  90. package/lib/base/cuneiform-command.d.ts +175 -0
  91. package/lib/base/cuneiform-command.js +326 -0
  92. package/lib/base/cuneiform-command.js.map +1 -0
  93. package/lib/commands/cuneiform/compatibility/check.d.ts +43 -0
  94. package/lib/commands/cuneiform/compatibility/check.js +114 -0
  95. package/lib/commands/cuneiform/compatibility/check.js.map +1 -0
  96. package/lib/commands/cuneiform/definition/create.d.ts +120 -0
  97. package/lib/commands/cuneiform/definition/create.js +737 -0
  98. package/lib/commands/cuneiform/definition/create.js.map +1 -0
  99. package/lib/commands/cuneiform/definition/export.d.ts +57 -0
  100. package/lib/commands/cuneiform/definition/export.js +133 -0
  101. package/lib/commands/cuneiform/definition/export.js.map +1 -0
  102. package/lib/commands/cuneiform/definition/get.d.ts +86 -0
  103. package/lib/commands/cuneiform/definition/get.js +277 -0
  104. package/lib/commands/cuneiform/definition/get.js.map +1 -0
  105. package/lib/commands/cuneiform/definition/import.d.ts +54 -0
  106. package/lib/commands/cuneiform/definition/import.js +118 -0
  107. package/lib/commands/cuneiform/definition/import.js.map +1 -0
  108. package/lib/commands/cuneiform/definition/list.d.ts +110 -0
  109. package/lib/commands/cuneiform/definition/list.js +351 -0
  110. package/lib/commands/cuneiform/definition/list.js.map +1 -0
  111. package/lib/commands/cuneiform/definition/purge.d.ts +109 -0
  112. package/lib/commands/cuneiform/definition/purge.js +578 -0
  113. package/lib/commands/cuneiform/definition/purge.js.map +1 -0
  114. package/lib/commands/cuneiform/definition/update.d.ts +58 -0
  115. package/lib/commands/cuneiform/definition/update.js +209 -0
  116. package/lib/commands/cuneiform/definition/update.js.map +1 -0
  117. package/lib/commands/cuneiform/mcp/serve.d.ts +56 -0
  118. package/lib/commands/cuneiform/mcp/serve.js +109 -0
  119. package/lib/commands/cuneiform/mcp/serve.js.map +1 -0
  120. package/lib/commands/cuneiform/object/describe.d.ts +61 -0
  121. package/lib/commands/cuneiform/object/describe.js +461 -0
  122. package/lib/commands/cuneiform/object/describe.js.map +1 -0
  123. package/lib/commands/cuneiform/object/list.d.ts +123 -0
  124. package/lib/commands/cuneiform/object/list.js +264 -0
  125. package/lib/commands/cuneiform/object/list.js.map +1 -0
  126. package/lib/commands/cuneiform/org/details.d.ts +99 -0
  127. package/lib/commands/cuneiform/org/details.js +521 -0
  128. package/lib/commands/cuneiform/org/details.js.map +1 -0
  129. package/lib/commands/cuneiform/org/reset.d.ts +46 -0
  130. package/lib/commands/cuneiform/org/reset.js +135 -0
  131. package/lib/commands/cuneiform/org/reset.js.map +1 -0
  132. package/lib/commands/cuneiform/profile/request/cancel.d.ts +59 -0
  133. package/lib/commands/cuneiform/profile/request/cancel.js +202 -0
  134. package/lib/commands/cuneiform/profile/request/cancel.js.map +1 -0
  135. package/lib/commands/cuneiform/profile/request/delete.d.ts +59 -0
  136. package/lib/commands/cuneiform/profile/request/delete.js +223 -0
  137. package/lib/commands/cuneiform/profile/request/delete.js.map +1 -0
  138. package/lib/commands/cuneiform/profile/request/list.d.ts +35 -0
  139. package/lib/commands/cuneiform/profile/request/list.js +102 -0
  140. package/lib/commands/cuneiform/profile/request/list.js.map +1 -0
  141. package/lib/commands/cuneiform/profile.d.ts +93 -0
  142. package/lib/commands/cuneiform/profile.js +353 -0
  143. package/lib/commands/cuneiform/profile.js.map +1 -0
  144. package/lib/commands/cuneiform/summary/purge.d.ts +80 -0
  145. package/lib/commands/cuneiform/summary/purge.js +467 -0
  146. package/lib/commands/cuneiform/summary/purge.js.map +1 -0
  147. package/lib/commands/cuneiform/summary/reprofile.d.ts +60 -0
  148. package/lib/commands/cuneiform/summary/reprofile.js +236 -0
  149. package/lib/commands/cuneiform/summary/reprofile.js.map +1 -0
  150. package/lib/commands/cuneiform/summary/stop.d.ts +59 -0
  151. package/lib/commands/cuneiform/summary/stop.js +234 -0
  152. package/lib/commands/cuneiform/summary/stop.js.map +1 -0
  153. package/lib/commands/cuneiform/user/details.d.ts +77 -0
  154. package/lib/commands/cuneiform/user/details.js +414 -0
  155. package/lib/commands/cuneiform/user/details.js.map +1 -0
  156. package/lib/constants/namespace-constants.d.ts +102 -0
  157. package/lib/constants/namespace-constants.js +225 -0
  158. package/lib/constants/namespace-constants.js.map +1 -0
  159. package/lib/debug/command-debug-proxy.d.ts +101 -0
  160. package/lib/debug/command-debug-proxy.js +171 -0
  161. package/lib/debug/command-debug-proxy.js.map +1 -0
  162. package/lib/debug/debug-logger.d.ts +85 -0
  163. package/lib/debug/debug-logger.js +133 -0
  164. package/lib/debug/debug-logger.js.map +1 -0
  165. package/lib/debug/service-debug-proxy.d.ts +30 -0
  166. package/lib/debug/service-debug-proxy.js +102 -0
  167. package/lib/debug/service-debug-proxy.js.map +1 -0
  168. package/lib/hooks/prerun.d.ts +25 -0
  169. package/lib/hooks/prerun.js +47 -0
  170. package/lib/hooks/prerun.js.map +1 -0
  171. package/lib/mcp/config/mcp-config.d.ts +55 -0
  172. package/lib/mcp/config/mcp-config.js +51 -0
  173. package/lib/mcp/config/mcp-config.js.map +1 -0
  174. package/lib/mcp/config/pagination.d.ts +96 -0
  175. package/lib/mcp/config/pagination.js +108 -0
  176. package/lib/mcp/config/pagination.js.map +1 -0
  177. package/lib/mcp/config/system-prompts.d.ts +18 -0
  178. package/lib/mcp/config/system-prompts.js +92 -0
  179. package/lib/mcp/config/system-prompts.js.map +1 -0
  180. package/lib/mcp/errors.d.ts +23 -0
  181. package/lib/mcp/errors.js +27 -0
  182. package/lib/mcp/errors.js.map +1 -0
  183. package/lib/mcp/schemas/input-schemas.d.ts +327 -0
  184. package/lib/mcp/schemas/input-schemas.js +310 -0
  185. package/lib/mcp/schemas/input-schemas.js.map +1 -0
  186. package/lib/mcp/server.d.ts +40 -0
  187. package/lib/mcp/server.js +316 -0
  188. package/lib/mcp/server.js.map +1 -0
  189. package/lib/mcp/tools/contactpoint-tools.d.ts +14 -0
  190. package/lib/mcp/tools/contactpoint-tools.js +34 -0
  191. package/lib/mcp/tools/contactpoint-tools.js.map +1 -0
  192. package/lib/mcp/tools/definition-io-tools.d.ts +19 -0
  193. package/lib/mcp/tools/definition-io-tools.js +152 -0
  194. package/lib/mcp/tools/definition-io-tools.js.map +1 -0
  195. package/lib/mcp/tools/definition-tools.d.ts +51 -0
  196. package/lib/mcp/tools/definition-tools.js +220 -0
  197. package/lib/mcp/tools/definition-tools.js.map +1 -0
  198. package/lib/mcp/tools/index.d.ts +37 -0
  199. package/lib/mcp/tools/index.js +88 -0
  200. package/lib/mcp/tools/index.js.map +1 -0
  201. package/lib/mcp/tools/object-tools.d.ts +22 -0
  202. package/lib/mcp/tools/object-tools.js +327 -0
  203. package/lib/mcp/tools/object-tools.js.map +1 -0
  204. package/lib/mcp/tools/org-tools.d.ts +14 -0
  205. package/lib/mcp/tools/org-tools.js +177 -0
  206. package/lib/mcp/tools/org-tools.js.map +1 -0
  207. package/lib/mcp/tools/profile-tools.d.ts +59 -0
  208. package/lib/mcp/tools/profile-tools.js +213 -0
  209. package/lib/mcp/tools/profile-tools.js.map +1 -0
  210. package/lib/mcp/tools/summary-tools.d.ts +14 -0
  211. package/lib/mcp/tools/summary-tools.js +38 -0
  212. package/lib/mcp/tools/summary-tools.js.map +1 -0
  213. package/lib/mcp/tools/tool-factory.d.ts +63 -0
  214. package/lib/mcp/tools/tool-factory.js +146 -0
  215. package/lib/mcp/tools/tool-factory.js.map +1 -0
  216. package/lib/mcp/tools/user-tools.d.ts +25 -0
  217. package/lib/mcp/tools/user-tools.js +167 -0
  218. package/lib/mcp/tools/user-tools.js.map +1 -0
  219. package/lib/models/cascade-skip-accumulator.d.ts +25 -0
  220. package/lib/models/cascade-skip-accumulator.js +9 -0
  221. package/lib/models/cascade-skip-accumulator.js.map +1 -0
  222. package/lib/models/date-literal.d.ts +280 -0
  223. package/lib/models/date-literal.js +1164 -0
  224. package/lib/models/date-literal.js.map +1 -0
  225. package/lib/models/object-describe-types.d.ts +173 -0
  226. package/lib/models/object-describe-types.js +9 -0
  227. package/lib/models/object-describe-types.js.map +1 -0
  228. package/lib/models/portability-recipe.d.ts +35 -0
  229. package/lib/models/portability-recipe.js +113 -0
  230. package/lib/models/portability-recipe.js.map +1 -0
  231. package/lib/models/profile-request-types.d.ts +118 -0
  232. package/lib/models/profile-request-types.js +23 -0
  233. package/lib/models/profile-request-types.js.map +1 -0
  234. package/lib/models/profiling-execution-types.d.ts +154 -0
  235. package/lib/models/profiling-execution-types.js +14 -0
  236. package/lib/models/profiling-execution-types.js.map +1 -0
  237. package/lib/models/service-result.d.ts +114 -0
  238. package/lib/models/service-result.js +81 -0
  239. package/lib/models/service-result.js.map +1 -0
  240. package/lib/models/sfdmu-types.d.ts +49 -0
  241. package/lib/models/sfdmu-types.js +23 -0
  242. package/lib/models/sfdmu-types.js.map +1 -0
  243. package/lib/models/status-types.d.ts +38 -0
  244. package/lib/models/status-types.js +12 -0
  245. package/lib/models/status-types.js.map +1 -0
  246. package/lib/models/summary-bulk-types.d.ts +61 -0
  247. package/lib/models/summary-bulk-types.js +23 -0
  248. package/lib/models/summary-bulk-types.js.map +1 -0
  249. package/lib/models/user-details-types.d.ts +188 -0
  250. package/lib/models/user-details-types.js +9 -0
  251. package/lib/models/user-details-types.js.map +1 -0
  252. package/lib/models/year-range.d.ts +78 -0
  253. package/lib/models/year-range.js +153 -0
  254. package/lib/models/year-range.js.map +1 -0
  255. package/lib/operations/CompatibilityCheckOperation.d.ts +62 -0
  256. package/lib/operations/CompatibilityCheckOperation.js +102 -0
  257. package/lib/operations/CompatibilityCheckOperation.js.map +1 -0
  258. package/lib/operations/DefinitionCreateOperation.d.ts +427 -0
  259. package/lib/operations/DefinitionCreateOperation.js +1270 -0
  260. package/lib/operations/DefinitionCreateOperation.js.map +1 -0
  261. package/lib/operations/DefinitionExportOperation.d.ts +155 -0
  262. package/lib/operations/DefinitionExportOperation.js +281 -0
  263. package/lib/operations/DefinitionExportOperation.js.map +1 -0
  264. package/lib/operations/DefinitionImportOperation.d.ts +144 -0
  265. package/lib/operations/DefinitionImportOperation.js +357 -0
  266. package/lib/operations/DefinitionImportOperation.js.map +1 -0
  267. package/lib/operations/DefinitionListOperation.d.ts +66 -0
  268. package/lib/operations/DefinitionListOperation.js +108 -0
  269. package/lib/operations/DefinitionListOperation.js.map +1 -0
  270. package/lib/operations/DefinitionPurgeOperation.d.ts +203 -0
  271. package/lib/operations/DefinitionPurgeOperation.js +465 -0
  272. package/lib/operations/DefinitionPurgeOperation.js.map +1 -0
  273. package/lib/operations/DefinitionUpdateOperation.d.ts +78 -0
  274. package/lib/operations/DefinitionUpdateOperation.js +142 -0
  275. package/lib/operations/DefinitionUpdateOperation.js.map +1 -0
  276. package/lib/operations/OrgDetailsOperation.d.ts +253 -0
  277. package/lib/operations/OrgDetailsOperation.js +456 -0
  278. package/lib/operations/OrgDetailsOperation.js.map +1 -0
  279. package/lib/operations/OrgResetOperation.d.ts +114 -0
  280. package/lib/operations/OrgResetOperation.js +209 -0
  281. package/lib/operations/OrgResetOperation.js.map +1 -0
  282. package/lib/operations/ProfileOperation.d.ts +192 -0
  283. package/lib/operations/ProfileOperation.js +371 -0
  284. package/lib/operations/ProfileOperation.js.map +1 -0
  285. package/lib/operations/ProfileRequestCancelOperation.d.ts +59 -0
  286. package/lib/operations/ProfileRequestCancelOperation.js +137 -0
  287. package/lib/operations/ProfileRequestCancelOperation.js.map +1 -0
  288. package/lib/operations/ProfileRequestDeleteOperation.d.ts +64 -0
  289. package/lib/operations/ProfileRequestDeleteOperation.js +134 -0
  290. package/lib/operations/ProfileRequestDeleteOperation.js.map +1 -0
  291. package/lib/operations/ProfileRequestListOperation.d.ts +39 -0
  292. package/lib/operations/ProfileRequestListOperation.js +61 -0
  293. package/lib/operations/ProfileRequestListOperation.js.map +1 -0
  294. package/lib/operations/SummaryPurgeOperation.d.ts +134 -0
  295. package/lib/operations/SummaryPurgeOperation.js +257 -0
  296. package/lib/operations/SummaryPurgeOperation.js.map +1 -0
  297. package/lib/operations/SummaryReprofileOperation.d.ts +88 -0
  298. package/lib/operations/SummaryReprofileOperation.js +174 -0
  299. package/lib/operations/SummaryReprofileOperation.js.map +1 -0
  300. package/lib/operations/SummaryStopOperation.d.ts +87 -0
  301. package/lib/operations/SummaryStopOperation.js +175 -0
  302. package/lib/operations/SummaryStopOperation.js.map +1 -0
  303. package/lib/services/BulkExecutionService.d.ts +120 -0
  304. package/lib/services/BulkExecutionService.js +535 -0
  305. package/lib/services/BulkExecutionService.js.map +1 -0
  306. package/lib/services/CompatibilityService.d.ts +81 -0
  307. package/lib/services/CompatibilityService.js +118 -0
  308. package/lib/services/CompatibilityService.js.map +1 -0
  309. package/lib/services/ConfigureMode.d.ts +98 -0
  310. package/lib/services/ConfigureMode.js +413 -0
  311. package/lib/services/ConfigureMode.js.map +1 -0
  312. package/lib/services/ContactPointService.d.ts +111 -0
  313. package/lib/services/ContactPointService.js +286 -0
  314. package/lib/services/ContactPointService.js.map +1 -0
  315. package/lib/services/DataAvailabilityService.d.ts +81 -0
  316. package/lib/services/DataAvailabilityService.js +128 -0
  317. package/lib/services/DataAvailabilityService.js.map +1 -0
  318. package/lib/services/DefinitionFieldGenerationService.d.ts +357 -0
  319. package/lib/services/DefinitionFieldGenerationService.js +899 -0
  320. package/lib/services/DefinitionFieldGenerationService.js.map +1 -0
  321. package/lib/services/DefinitionQueryBuilder.d.ts +92 -0
  322. package/lib/services/DefinitionQueryBuilder.js +328 -0
  323. package/lib/services/DefinitionQueryBuilder.js.map +1 -0
  324. package/lib/services/ObjectDescribeService.d.ts +436 -0
  325. package/lib/services/ObjectDescribeService.js +881 -0
  326. package/lib/services/ObjectDescribeService.js.map +1 -0
  327. package/lib/services/ObjectFilteringService.d.ts +484 -0
  328. package/lib/services/ObjectFilteringService.js +1080 -0
  329. package/lib/services/ObjectFilteringService.js.map +1 -0
  330. package/lib/services/ObjectListCommandService.d.ts +467 -0
  331. package/lib/services/ObjectListCommandService.js +904 -0
  332. package/lib/services/ObjectListCommandService.js.map +1 -0
  333. package/lib/services/ObjectListService.d.ts +201 -0
  334. package/lib/services/ObjectListService.js +350 -0
  335. package/lib/services/ObjectListService.js.map +1 -0
  336. package/lib/services/OrgInfoService.d.ts +493 -0
  337. package/lib/services/OrgInfoService.js +1142 -0
  338. package/lib/services/OrgInfoService.js.map +1 -0
  339. package/lib/services/PollingService.d.ts +105 -0
  340. package/lib/services/PollingService.js +117 -0
  341. package/lib/services/PollingService.js.map +1 -0
  342. package/lib/services/ProfileRequestService.d.ts +186 -0
  343. package/lib/services/ProfileRequestService.js +555 -0
  344. package/lib/services/ProfileRequestService.js.map +1 -0
  345. package/lib/services/ProfilingDefinitionService.d.ts +575 -0
  346. package/lib/services/ProfilingDefinitionService.js +1029 -0
  347. package/lib/services/ProfilingDefinitionService.js.map +1 -0
  348. package/lib/services/ProfilingExecutionService.d.ts +122 -0
  349. package/lib/services/ProfilingExecutionService.js +320 -0
  350. package/lib/services/ProfilingExecutionService.js.map +1 -0
  351. package/lib/services/ProfilingSummaryService.d.ts +292 -0
  352. package/lib/services/ProfilingSummaryService.js +688 -0
  353. package/lib/services/ProfilingSummaryService.js.map +1 -0
  354. package/lib/services/RecordTypeService.d.ts +129 -0
  355. package/lib/services/RecordTypeService.js +284 -0
  356. package/lib/services/RecordTypeService.js.map +1 -0
  357. package/lib/services/SFDMUService.d.ts +146 -0
  358. package/lib/services/SFDMUService.js +323 -0
  359. package/lib/services/SFDMUService.js.map +1 -0
  360. package/lib/services/TabDetectionService.d.ts +105 -0
  361. package/lib/services/TabDetectionService.js +206 -0
  362. package/lib/services/TabDetectionService.js.map +1 -0
  363. package/lib/services/UnconfigureMode.d.ts +74 -0
  364. package/lib/services/UnconfigureMode.js +378 -0
  365. package/lib/services/UnconfigureMode.js.map +1 -0
  366. package/lib/services/UserConfigurationService.d.ts +158 -0
  367. package/lib/services/UserConfigurationService.js +574 -0
  368. package/lib/services/UserConfigurationService.js.map +1 -0
  369. package/lib/services/UserConfigurationTypes.d.ts +181 -0
  370. package/lib/services/UserConfigurationTypes.js +14 -0
  371. package/lib/services/UserConfigurationTypes.js.map +1 -0
  372. package/lib/services/UserReadinessService.d.ts +347 -0
  373. package/lib/services/UserReadinessService.js +891 -0
  374. package/lib/services/UserReadinessService.js.map +1 -0
  375. package/lib/services/constants.d.ts +54 -0
  376. package/lib/services/constants.js +71 -0
  377. package/lib/services/constants.js.map +1 -0
  378. package/lib/services/namespace-constants.d.ts +1 -0
  379. package/lib/services/namespace-constants.js +11 -0
  380. package/lib/services/namespace-constants.js.map +1 -0
  381. package/lib/services/namespace-filter.d.ts +36 -0
  382. package/lib/services/namespace-filter.js +109 -0
  383. package/lib/services/namespace-filter.js.map +1 -0
  384. package/lib/services/validation.d.ts +47 -0
  385. package/lib/services/validation.js +119 -0
  386. package/lib/services/validation.js.map +1 -0
  387. package/lib/utils/batch-processor.d.ts +13 -0
  388. package/lib/utils/batch-processor.js +39 -0
  389. package/lib/utils/batch-processor.js.map +1 -0
  390. package/lib/utils/formatting/availability-grid.d.ts +81 -0
  391. package/lib/utils/formatting/availability-grid.js +94 -0
  392. package/lib/utils/formatting/availability-grid.js.map +1 -0
  393. package/lib/utils/formatting/business-process-grid.d.ts +51 -0
  394. package/lib/utils/formatting/business-process-grid.js +58 -0
  395. package/lib/utils/formatting/business-process-grid.js.map +1 -0
  396. package/lib/utils/formatting/command-display.d.ts +154 -0
  397. package/lib/utils/formatting/command-display.js +154 -0
  398. package/lib/utils/formatting/command-display.js.map +1 -0
  399. package/lib/utils/formatting/definition-create-display.d.ts +118 -0
  400. package/lib/utils/formatting/definition-create-display.js +230 -0
  401. package/lib/utils/formatting/definition-create-display.js.map +1 -0
  402. package/lib/utils/formatting/empty-states.d.ts +35 -0
  403. package/lib/utils/formatting/empty-states.js +70 -0
  404. package/lib/utils/formatting/empty-states.js.map +1 -0
  405. package/lib/utils/formatting/errors.d.ts +33 -0
  406. package/lib/utils/formatting/errors.js +72 -0
  407. package/lib/utils/formatting/errors.js.map +1 -0
  408. package/lib/utils/formatting/field-types.d.ts +32 -0
  409. package/lib/utils/formatting/field-types.js +88 -0
  410. package/lib/utils/formatting/field-types.js.map +1 -0
  411. package/lib/utils/formatting/index.d.ts +29 -0
  412. package/lib/utils/formatting/index.js +28 -0
  413. package/lib/utils/formatting/index.js.map +1 -0
  414. package/lib/utils/formatting/indicators.d.ts +113 -0
  415. package/lib/utils/formatting/indicators.js +161 -0
  416. package/lib/utils/formatting/indicators.js.map +1 -0
  417. package/lib/utils/formatting/loading-messages.d.ts +37 -0
  418. package/lib/utils/formatting/loading-messages.js +50 -0
  419. package/lib/utils/formatting/loading-messages.js.map +1 -0
  420. package/lib/utils/formatting/namespace-display.d.ts +31 -0
  421. package/lib/utils/formatting/namespace-display.js +64 -0
  422. package/lib/utils/formatting/namespace-display.js.map +1 -0
  423. package/lib/utils/formatting/numbers.d.ts +73 -0
  424. package/lib/utils/formatting/numbers.js +187 -0
  425. package/lib/utils/formatting/numbers.js.map +1 -0
  426. package/lib/utils/formatting/object-describe-display.d.ts +117 -0
  427. package/lib/utils/formatting/object-describe-display.js +447 -0
  428. package/lib/utils/formatting/object-describe-display.js.map +1 -0
  429. package/lib/utils/formatting/object-list-display.d.ts +225 -0
  430. package/lib/utils/formatting/object-list-display.js +718 -0
  431. package/lib/utils/formatting/object-list-display.js.map +1 -0
  432. package/lib/utils/formatting/org-identity.d.ts +15 -0
  433. package/lib/utils/formatting/org-identity.js +28 -0
  434. package/lib/utils/formatting/org-identity.js.map +1 -0
  435. package/lib/utils/formatting/record-age-grid.d.ts +41 -0
  436. package/lib/utils/formatting/record-age-grid.js +56 -0
  437. package/lib/utils/formatting/record-age-grid.js.map +1 -0
  438. package/lib/utils/formatting/sections.d.ts +108 -0
  439. package/lib/utils/formatting/sections.js +150 -0
  440. package/lib/utils/formatting/sections.js.map +1 -0
  441. package/lib/utils/formatting/tables.d.ts +90 -0
  442. package/lib/utils/formatting/tables.js +113 -0
  443. package/lib/utils/formatting/tables.js.map +1 -0
  444. package/lib/utils/formatting/user-details-display.d.ts +101 -0
  445. package/lib/utils/formatting/user-details-display.js +425 -0
  446. package/lib/utils/formatting/user-details-display.js.map +1 -0
  447. package/lib/utils/pagination/keypress-reader.d.ts +20 -0
  448. package/lib/utils/pagination/keypress-reader.js +63 -0
  449. package/lib/utils/pagination/keypress-reader.js.map +1 -0
  450. package/lib/utils/pagination/paginate-output.d.ts +48 -0
  451. package/lib/utils/pagination/paginate-output.js +136 -0
  452. package/lib/utils/pagination/paginate-output.js.map +1 -0
  453. package/messages/compatibility.check.md +71 -0
  454. package/messages/cuneiform.access.md +138 -0
  455. package/messages/definition.create.md +525 -0
  456. package/messages/definition.export.md +84 -0
  457. package/messages/definition.get.md +147 -0
  458. package/messages/definition.import.md +65 -0
  459. package/messages/definition.list.md +264 -0
  460. package/messages/definition.purge.md +330 -0
  461. package/messages/definition.update.md +118 -0
  462. package/messages/mcp.serve.md +66 -0
  463. package/messages/object.describe.md +205 -0
  464. package/messages/object.list.md +463 -0
  465. package/messages/org.details.md +386 -0
  466. package/messages/org.reset.md +71 -0
  467. package/messages/profile.md +243 -0
  468. package/messages/profile.request.cancel.md +143 -0
  469. package/messages/profile.request.delete.md +139 -0
  470. package/messages/profile.request.list.md +89 -0
  471. package/messages/summary.purge.md +218 -0
  472. package/messages/summary.reprofile.md +150 -0
  473. package/messages/summary.stop.md +157 -0
  474. package/messages/user.details.md +501 -0
  475. package/oclif.lock +3267 -2148
  476. package/oclif.manifest.json +2829 -31
  477. package/package.json +104 -18
  478. package/lib/commands/cuneiform/about.d.ts +0 -13
  479. package/lib/commands/cuneiform/about.js +0 -26
  480. package/lib/commands/cuneiform/about.js.map +0 -1
  481. package/lib/commands/hello/world.d.ts +0 -14
  482. package/lib/commands/hello/world.js +0 -27
  483. package/lib/commands/hello/world.js.map +0 -1
  484. package/lib/index.d.ts +0 -2
  485. package/lib/index.js +0 -2
  486. package/lib/index.js.map +0 -1
  487. package/messages/cuneiform.about.md +0 -19
  488. package/messages/hello.world.md +0 -29
@@ -0,0 +1,54 @@
1
+ import { CuneiformCommand } from '../../../base/cuneiform-command.js';
2
+ /**
3
+ * Command result type for JSON output.
4
+ */
5
+ export type DefinitionImportResult = {
6
+ /** Whether the import was successful */
7
+ success: boolean;
8
+ /** Number of definitions imported */
9
+ definitionsImported: number;
10
+ /** Source directory used */
11
+ sourceDir: string;
12
+ /** Whether this was a simulation (no data modified) */
13
+ simulation: boolean;
14
+ /** Error message if failed */
15
+ error?: string;
16
+ };
17
+ /**
18
+ * Imports profiling definitions from SFDMU-compatible CSV files.
19
+ *
20
+ * Use this command to:
21
+ * - Restore definitions from backup
22
+ * - Migrate definitions to a new environment
23
+ * - Deploy standardized definition templates
24
+ * - Sync definitions across orgs
25
+ *
26
+ * @example
27
+ * ```bash
28
+ * # Import definitions from a backup directory
29
+ * sf cuneiform definition import --target-org myOrg --source ./backup
30
+ *
31
+ * # Import with upsert (update existing, insert new)
32
+ * sf cuneiform definition import --target-org myOrg --source ./backup --operation Upsert
33
+ *
34
+ * # Simulate import (preview changes without modifying data)
35
+ * sf cuneiform definition import --target-org myOrg --source ./backup --simulation
36
+ * ```
37
+ */
38
+ export default class DefinitionImport extends CuneiformCommand<DefinitionImportResult> {
39
+ static readonly summary: string;
40
+ static readonly description: string;
41
+ static readonly examples: string[];
42
+ static readonly flags: {
43
+ 'target-org': import("@oclif/core/interfaces").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/interfaces").CustomOptions>;
44
+ source: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
45
+ operation: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
46
+ simulation: import("@oclif/core/interfaces").BooleanFlag<boolean>;
47
+ };
48
+ /**
49
+ * Executes the import command.
50
+ *
51
+ * @returns DefinitionImportResult with success status, count, source path, and simulation flag
52
+ */
53
+ run(): Promise<DefinitionImportResult>;
54
+ }
@@ -0,0 +1,118 @@
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 { Flags } from '@salesforce/sf-plugins-core';
9
+ import { Messages } from '@salesforce/core';
10
+ import { CuneiformCommand } from '../../../base/cuneiform-command.js';
11
+ import { SFDMUService } from '../../../services/SFDMUService.js';
12
+ import { DefinitionImportOperation } from '../../../operations/DefinitionImportOperation.js';
13
+ import { renderWarningBlock } from '../../../utils/formatting/command-display.js';
14
+ Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
15
+ const messages = Messages.loadMessages('@peernova/cuneiform-sf', 'definition.import');
16
+ /**
17
+ * Imports profiling definitions from SFDMU-compatible CSV files.
18
+ *
19
+ * Use this command to:
20
+ * - Restore definitions from backup
21
+ * - Migrate definitions to a new environment
22
+ * - Deploy standardized definition templates
23
+ * - Sync definitions across orgs
24
+ *
25
+ * @example
26
+ * ```bash
27
+ * # Import definitions from a backup directory
28
+ * sf cuneiform definition import --target-org myOrg --source ./backup
29
+ *
30
+ * # Import with upsert (update existing, insert new)
31
+ * sf cuneiform definition import --target-org myOrg --source ./backup --operation Upsert
32
+ *
33
+ * # Simulate import (preview changes without modifying data)
34
+ * sf cuneiform definition import --target-org myOrg --source ./backup --simulation
35
+ * ```
36
+ */
37
+ // eslint-disable-next-line sf-plugin/only-extend-SfCommand -- CuneiformCommand extends SfCommand with shared access gate logic
38
+ export default class DefinitionImport extends CuneiformCommand {
39
+ static summary = messages.getMessage('summary');
40
+ static description = messages.getMessage('description');
41
+ static examples = messages.getMessages('examples');
42
+ // eslint-disable-next-line sf-plugin/spread-base-flags -- CuneiformCommand has no additional flags to spread
43
+ static flags = {
44
+ 'target-org': Flags.requiredOrg({
45
+ summary: messages.getMessage('flags.target-org.summary'),
46
+ char: 'o',
47
+ required: true,
48
+ }),
49
+ source: Flags.directory({
50
+ summary: messages.getMessage('flags.source.summary'),
51
+ char: 's',
52
+ required: true,
53
+ exists: true,
54
+ }),
55
+ operation: Flags.string({
56
+ summary: messages.getMessage('flags.operation.summary'),
57
+ options: ['Insert', 'Upsert'],
58
+ default: 'Insert',
59
+ }),
60
+ simulation: Flags.boolean({
61
+ summary: messages.getMessage('flags.simulation.summary'),
62
+ char: 'm',
63
+ default: false,
64
+ }),
65
+ };
66
+ /**
67
+ * Executes the import command.
68
+ *
69
+ * @returns DefinitionImportResult with success status, count, source path, and simulation flag
70
+ */
71
+ async run() {
72
+ const { flags } = await this.parse(DefinitionImport);
73
+ const targetOrg = flags['target-org'].getUsername();
74
+ if (!targetOrg) {
75
+ this.error('Could not determine target org username');
76
+ }
77
+ // Access gate check
78
+ await this.initConnection(flags);
79
+ // Initialize service and operation
80
+ const sfdmuService = new SFDMUService();
81
+ const importOperation = new DefinitionImportOperation(sfdmuService);
82
+ // Display start message
83
+ const simulationLabel = flags.simulation ? ' (SIMULATION)' : '';
84
+ this.log(`Importing profiling definitions to ${targetOrg}${simulationLabel}...`);
85
+ this.log(` Source: ${flags.source}`);
86
+ this.log(` Operation: ${flags.operation}`);
87
+ // Execute import
88
+ const result = await importOperation.execute({
89
+ targetOrg,
90
+ sourceDir: flags.source,
91
+ operation: flags.operation,
92
+ simulation: flags.simulation,
93
+ });
94
+ if (!result.success) {
95
+ this.error(result.message ?? 'Import failed', { code: result.errorCode });
96
+ }
97
+ // Display success output
98
+ this.log('');
99
+ if (flags.simulation) {
100
+ this.log('Simulation completed - no changes were made.');
101
+ }
102
+ else {
103
+ this.log('Import completed successfully!');
104
+ }
105
+ this.log(` Definitions imported: ${result.data.definitionsImported}`);
106
+ if (result.warnings && result.warnings.length > 0) {
107
+ this.log('');
108
+ this.log(renderWarningBlock({ title: messages.getMessage('warnings.title'), items: result.warnings }));
109
+ }
110
+ return {
111
+ success: true,
112
+ definitionsImported: result.data.definitionsImported,
113
+ sourceDir: result.data.sourceDir,
114
+ simulation: result.data.simulation,
115
+ };
116
+ }
117
+ }
118
+ //# sourceMappingURL=import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../../../src/commands/cuneiform/definition/import.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ import { type ProfilingDefinition, type ListSummary } from '../../../services/ProfilingDefinitionService.js';
2
+ import { CuneiformCommand } from '../../../base/cuneiform-command.js';
3
+ /**
4
+ * Command result type for JSON output.
5
+ */
6
+ export type DefinitionListCommandResult = {
7
+ /** Whether the command was successful */
8
+ success: boolean;
9
+ /** Total count of definitions matching filters (ignoring pagination) */
10
+ totalCount: number;
11
+ /** The definitions on this page */
12
+ definitions: ProfilingDefinition[];
13
+ /**
14
+ * Aggregate bucket counts across the full filtered set (ignoring pagination).
15
+ * Counts are computed server-side via SOQL GROUP BY — see ListSummary.
16
+ */
17
+ summary: ListSummary;
18
+ /** Applied filters */
19
+ filters?: {
20
+ status?: string;
21
+ method?: string;
22
+ objects?: string[];
23
+ pattern?: string;
24
+ category?: string;
25
+ namespace?: string;
26
+ };
27
+ /** Pagination info */
28
+ pagination?: {
29
+ limit: number;
30
+ offset: number;
31
+ };
32
+ /** Error message if failed */
33
+ error?: string;
34
+ };
35
+ /**
36
+ * Lists profiling definitions in a Salesforce org with filtering, sorting, and pagination.
37
+ *
38
+ * Use this command to:
39
+ * - List all definitions with key, name, object, method, category, status, and last profiled date
40
+ * - Filter by object, status, method, category, namespace, or name pattern
41
+ * - Sort results by key, name, object name, or last profiled date
42
+ * - Paginate results with --limit and --offset
43
+ *
44
+ * @example
45
+ * ```bash
46
+ * # List all definitions
47
+ * sf cuneiform definition list --target-org myOrg
48
+ *
49
+ * # List active definitions only
50
+ * sf cuneiform definition list --target-org myOrg --status active
51
+ *
52
+ * # List definitions for a specific object
53
+ * sf cuneiform definition list --target-org myOrg --objects Account
54
+ * ```
55
+ */
56
+ export default class DefinitionList extends CuneiformCommand<DefinitionListCommandResult> {
57
+ static readonly summary: string;
58
+ static readonly description: string;
59
+ static readonly examples: string[];
60
+ static readonly flags: {
61
+ 'target-org': import("@oclif/core/interfaces").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/interfaces").CustomOptions>;
62
+ 'api-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
63
+ status: import("@oclif/core/interfaces").OptionFlag<"all" | "active" | "inactive", import("@oclif/core/interfaces").CustomOptions>;
64
+ method: import("@oclif/core/interfaces").OptionFlag<"metadata" | "historical" | "comparative" | undefined, import("@oclif/core/interfaces").CustomOptions>;
65
+ objects: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
66
+ pattern: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
67
+ category: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
68
+ namespace: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
69
+ limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
70
+ offset: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
71
+ sort: import("@oclif/core/interfaces").OptionFlag<"name" | "objectName" | "key" | "lastProfiledDate", import("@oclif/core/interfaces").CustomOptions>;
72
+ };
73
+ /**
74
+ * Displays the summary statistics section.
75
+ *
76
+ * Bucket counts come from the service-provided ListSummary (computed via SOQL
77
+ * GROUP BY across the full filtered set). The command must NOT derive bucket
78
+ * counts from the paginated `definitions` array — that was the CLI-3084 bug
79
+ * where Active/Inactive/Profiled/Not Profiled silently reflected only the
80
+ * current page instead of the org-wide totals.
81
+ *
82
+ * Static because it consumes pre-aggregated values; no instance state needed.
83
+ */
84
+ private static displaySummary;
85
+ /**
86
+ * Executes the definition list command.
87
+ *
88
+ * @returns DefinitionListCommandResult with definitions, count, and pagination info
89
+ */
90
+ run(): Promise<DefinitionListCommandResult>;
91
+ /**
92
+ * Displays the full command output following UX guidelines.
93
+ *
94
+ * Renders: contextual header -> Org Identity -> Active Filters ->
95
+ * Definitions table -> Summary -> Limit notice -> Next Steps.
96
+ */
97
+ private displayOutput;
98
+ /**
99
+ * Builds a list of human-readable descriptions for active filters.
100
+ */
101
+ private getActiveFilters;
102
+ /**
103
+ * Returns active filters as flag strings for empty state display.
104
+ */
105
+ private getSelectiveFilters;
106
+ /**
107
+ * Displays contextual next steps based on the listed definitions.
108
+ */
109
+ private displayNextSteps;
110
+ }
@@ -0,0 +1,351 @@
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 { makeTable } from '@oclif/table';
9
+ import { Messages } from '@salesforce/core';
10
+ import { Flags } from '@salesforce/sf-plugins-core';
11
+ import { OrgInfoService } from '../../../services/OrgInfoService.js';
12
+ import { ProfilingDefinitionService, } from '../../../services/ProfilingDefinitionService.js';
13
+ import { DefinitionListOperation } from '../../../operations/DefinitionListOperation.js';
14
+ import { parseNamespaceFilter } from '../../../services/namespace-filter.js';
15
+ import { renderSummaryBox, renderContextualHeader, sectionHeaderWithCount, logSectionGap, formatEmptyState, } from '../../../utils/formatting/index.js';
16
+ import { CuneiformCommand } from '../../../base/cuneiform-command.js';
17
+ const TABLE_BORDER_STYLE = 'headers-only';
18
+ Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
19
+ const messages = Messages.loadMessages('@peernova/cuneiform-sf', 'definition.list');
20
+ /**
21
+ * Lists profiling definitions in a Salesforce org with filtering, sorting, and pagination.
22
+ *
23
+ * Use this command to:
24
+ * - List all definitions with key, name, object, method, category, status, and last profiled date
25
+ * - Filter by object, status, method, category, namespace, or name pattern
26
+ * - Sort results by key, name, object name, or last profiled date
27
+ * - Paginate results with --limit and --offset
28
+ *
29
+ * @example
30
+ * ```bash
31
+ * # List all definitions
32
+ * sf cuneiform definition list --target-org myOrg
33
+ *
34
+ * # List active definitions only
35
+ * sf cuneiform definition list --target-org myOrg --status active
36
+ *
37
+ * # List definitions for a specific object
38
+ * sf cuneiform definition list --target-org myOrg --objects Account
39
+ * ```
40
+ */
41
+ // eslint-disable-next-line sf-plugin/only-extend-SfCommand -- CuneiformCommand extends SfCommand with shared access gate logic
42
+ export default class DefinitionList extends CuneiformCommand {
43
+ static summary = messages.getMessage('summary');
44
+ static description = messages.getMessage('description');
45
+ static examples = messages.getMessages('examples');
46
+ // eslint-disable-next-line sf-plugin/spread-base-flags -- CuneiformCommand has no additional flags to spread
47
+ static flags = {
48
+ 'target-org': Flags.requiredOrg({
49
+ summary: messages.getMessage('flags.target-org.summary'),
50
+ char: 'o',
51
+ required: true,
52
+ }),
53
+ 'api-version': Flags.orgApiVersion(),
54
+ status: Flags.option({
55
+ summary: messages.getMessage('flags.status.summary'),
56
+ options: ['active', 'inactive', 'all'],
57
+ default: 'all',
58
+ })(),
59
+ method: Flags.option({
60
+ summary: messages.getMessage('flags.method.summary'),
61
+ options: ['metadata', 'historical', 'comparative'],
62
+ })(),
63
+ objects: Flags.string({
64
+ summary: messages.getMessage('flags.objects.summary'),
65
+ }),
66
+ pattern: Flags.string({
67
+ summary: messages.getMessage('flags.pattern.summary'),
68
+ }),
69
+ category: Flags.string({
70
+ summary: messages.getMessage('flags.category.summary'),
71
+ }),
72
+ namespace: Flags.string({
73
+ summary: messages.getMessage('flags.namespace.summary'),
74
+ }),
75
+ limit: Flags.integer({
76
+ summary: messages.getMessage('flags.limit.summary'),
77
+ default: 25,
78
+ min: 1,
79
+ max: 200,
80
+ }),
81
+ offset: Flags.integer({
82
+ summary: messages.getMessage('flags.offset.summary'),
83
+ default: 0,
84
+ min: 0,
85
+ }),
86
+ sort: Flags.option({
87
+ summary: messages.getMessage('flags.sort.summary'),
88
+ options: ['key', 'name', 'objectName', 'lastProfiledDate'],
89
+ default: 'name',
90
+ })(),
91
+ };
92
+ /**
93
+ * Displays the summary statistics section.
94
+ *
95
+ * Bucket counts come from the service-provided ListSummary (computed via SOQL
96
+ * GROUP BY across the full filtered set). The command must NOT derive bucket
97
+ * counts from the paginated `definitions` array — that was the CLI-3084 bug
98
+ * where Active/Inactive/Profiled/Not Profiled silently reflected only the
99
+ * current page instead of the org-wide totals.
100
+ *
101
+ * Static because it consumes pre-aggregated values; no instance state needed.
102
+ */
103
+ static displaySummary(log, totalCount, summary) {
104
+ logSectionGap(log);
105
+ log(renderSummaryBox({
106
+ title: messages.getMessage('output.summary.header'),
107
+ entries: [
108
+ { key: messages.getMessage('output.summary.totalDefinitions'), value: String(totalCount) },
109
+ { key: messages.getMessage('output.summary.active'), value: String(summary.activeCount) },
110
+ { key: messages.getMessage('output.summary.inactive'), value: String(summary.inactiveCount) },
111
+ { key: messages.getMessage('output.summary.profiled'), value: String(summary.profiledCount) },
112
+ { key: messages.getMessage('output.summary.notProfiled'), value: String(summary.notProfiledCount) },
113
+ ],
114
+ }));
115
+ }
116
+ /**
117
+ * Executes the definition list command.
118
+ *
119
+ * @returns DefinitionListCommandResult with definitions, count, and pagination info
120
+ */
121
+ async run() {
122
+ const { flags } = await this.parse(DefinitionList);
123
+ const targetOrg = flags['target-org'].getUsername();
124
+ if (!targetOrg) {
125
+ this.error(messages.getMessage('errors.noTargetOrg'));
126
+ }
127
+ // Parse --namespace at the command boundary into the typed NamespaceFilter
128
+ // discriminated union consumed by operation/service/adapter layers (CLI-3801).
129
+ const namespaceResult = parseNamespaceFilter(flags.namespace);
130
+ if (namespaceResult.error) {
131
+ this.error(namespaceResult.error, { code: 'INVALID_NAMESPACE' });
132
+ }
133
+ // Initialize services
134
+ const { facade, soqlAdapter } = await this.initConnection(flags);
135
+ const definitionService = new ProfilingDefinitionService({ soqlAdapter });
136
+ const orgInfoService = new OrgInfoService({ connectionFacade: facade, soqlAdapter });
137
+ // Build operation options from flags
138
+ const options = {
139
+ filter: {
140
+ status: flags.status,
141
+ method: flags.method,
142
+ objects: flags.objects ? flags.objects.split(',').map((o) => o.trim()) : undefined,
143
+ pattern: flags.pattern,
144
+ category: flags.category,
145
+ namespace: namespaceResult.value,
146
+ },
147
+ pagination: {
148
+ limit: flags.limit,
149
+ offset: flags.offset,
150
+ },
151
+ sort: {
152
+ field: flags.sort,
153
+ direction: 'asc',
154
+ },
155
+ };
156
+ // Execute operation and org identity fetch in parallel
157
+ const operation = new DefinitionListOperation(definitionService);
158
+ const [result, orgIdentityResult] = await Promise.all([
159
+ operation.execute(options),
160
+ orgInfoService.getOrgIdentity(),
161
+ ]);
162
+ if (!result.success) {
163
+ this.error(result.message ?? messages.getMessage('errors.queryFailed', ['unknown error']), {
164
+ code: result.errorCode,
165
+ });
166
+ }
167
+ const { definitions, totalCount, summary } = result.data;
168
+ // Display output
169
+ this.displayOutput(orgIdentityResult, facade.instanceUrl ?? '', targetOrg, definitions, totalCount, summary, flags);
170
+ return {
171
+ success: true,
172
+ totalCount,
173
+ definitions,
174
+ summary,
175
+ filters: {
176
+ status: flags.status !== 'all' ? flags.status : undefined,
177
+ method: flags.method,
178
+ objects: flags.objects ? flags.objects.split(',').map((o) => o.trim()) : undefined,
179
+ pattern: flags.pattern,
180
+ category: flags.category,
181
+ namespace: flags.namespace,
182
+ },
183
+ pagination: {
184
+ limit: flags.limit,
185
+ offset: flags.offset,
186
+ },
187
+ };
188
+ }
189
+ /**
190
+ * Displays the full command output following UX guidelines.
191
+ *
192
+ * Renders: contextual header -> Org Identity -> Active Filters ->
193
+ * Definitions table -> Summary -> Limit notice -> Next Steps.
194
+ */
195
+ displayOutput(orgIdentityResult, instanceUrl, targetOrg, definitions, totalCount, summary, flags) {
196
+ const identity = orgIdentityResult.data;
197
+ const orgName = identity?.organizationName ?? '(unknown)';
198
+ const orgType = identity?.isSandbox ? 'Sandbox' : 'Production';
199
+ // R-01: Contextual header
200
+ this.log('');
201
+ this.log(renderContextualHeader({
202
+ commandTitle: messages.getMessage('output.headerTitle'),
203
+ username: orgName,
204
+ orgName: orgType,
205
+ }));
206
+ // R-02: Org Identity (7-field component)
207
+ if (orgIdentityResult.success && identity?.organizationId) {
208
+ logSectionGap(this.log.bind(this));
209
+ this.log(renderSummaryBox({
210
+ title: messages.getMessage('output.identity.header'),
211
+ entries: [
212
+ { key: messages.getMessage('output.identity.orgName'), value: orgName },
213
+ { key: messages.getMessage('output.identity.orgId'), value: identity.organizationId },
214
+ { key: messages.getMessage('output.identity.instanceUrl'), value: instanceUrl },
215
+ { key: messages.getMessage('output.identity.orgType'), value: orgType },
216
+ { key: messages.getMessage('output.identity.edition'), value: identity.organizationType ?? '(unknown)' },
217
+ { key: messages.getMessage('output.identity.namespace'), value: identity.namespacePrefix ?? 'None' },
218
+ { key: messages.getMessage('output.identity.username'), value: identity.username },
219
+ ],
220
+ }));
221
+ }
222
+ // R-03: Active filters
223
+ const activeFilters = this.getActiveFilters(flags);
224
+ if (activeFilters.length > 0) {
225
+ logSectionGap(this.log.bind(this));
226
+ for (const filter of activeFilters) {
227
+ this.log(` ${filter}`);
228
+ }
229
+ }
230
+ // R-04: Definitions table or empty state
231
+ if (definitions.length > 0) {
232
+ logSectionGap(this.log.bind(this));
233
+ this.log(sectionHeaderWithCount(messages.getMessage('output.definitions.header'), definitions.length));
234
+ this.log(makeTable({
235
+ data: definitions.map((def) => ({
236
+ key: def.key,
237
+ name: def.name,
238
+ object: def.objectName,
239
+ method: def.type,
240
+ category: def.category ?? '--',
241
+ status: def.status,
242
+ lastProfiled: def.lastProfiledDate ? new Date(def.lastProfiledDate).toLocaleDateString() : '--',
243
+ })),
244
+ columns: [
245
+ { key: 'key', name: messages.getMessage('table.header.key') },
246
+ { key: 'name', name: messages.getMessage('table.header.name') },
247
+ { key: 'object', name: messages.getMessage('table.header.object') },
248
+ { key: 'method', name: messages.getMessage('table.header.method') },
249
+ { key: 'category', name: messages.getMessage('table.header.category') },
250
+ { key: 'status', name: messages.getMessage('table.header.status') },
251
+ { key: 'lastProfiled', name: messages.getMessage('table.header.lastProfiled') },
252
+ ],
253
+ borderStyle: TABLE_BORDER_STYLE,
254
+ }).trimEnd());
255
+ }
256
+ else {
257
+ logSectionGap(this.log.bind(this));
258
+ const emptyLines = formatEmptyState({
259
+ entityType: messages.getMessage('output.entityType'),
260
+ appliedFilters: this.getSelectiveFilters(flags),
261
+ suggestions: [messages.getMessage('output.noResults.suggestion')],
262
+ });
263
+ for (const line of emptyLines) {
264
+ this.log(` ${line}`);
265
+ }
266
+ }
267
+ // R-05: Summary section
268
+ DefinitionList.displaySummary(this.log.bind(this), totalCount, summary);
269
+ // R-06: Limit notice when results are paginated
270
+ if (definitions.length < totalCount) {
271
+ this.log('');
272
+ this.log(` ${messages.getMessage('output.limitNotice', [String(definitions.length), String(totalCount)])}`);
273
+ }
274
+ // R-07: Next Steps
275
+ logSectionGap(this.log.bind(this));
276
+ this.displayNextSteps(targetOrg, definitions);
277
+ // Trailing blank line for terminal prompt separation
278
+ this.log('');
279
+ }
280
+ /**
281
+ * Builds a list of human-readable descriptions for active filters.
282
+ */
283
+ // eslint-disable-next-line class-methods-use-this
284
+ getActiveFilters(flags) {
285
+ const active = [];
286
+ if (flags.status && flags.status !== 'all') {
287
+ active.push(messages.getMessage('output.filters.status', [flags.status]));
288
+ }
289
+ if (flags.method) {
290
+ active.push(messages.getMessage('output.filters.method', [flags.method]));
291
+ }
292
+ if (flags.objects) {
293
+ active.push(messages.getMessage('output.filters.objects', [flags.objects]));
294
+ }
295
+ if (flags.pattern) {
296
+ active.push(messages.getMessage('output.filters.pattern', [flags.pattern]));
297
+ }
298
+ if (flags.category) {
299
+ active.push(messages.getMessage('output.filters.category', [flags.category]));
300
+ }
301
+ if (flags.namespace) {
302
+ active.push(messages.getMessage('output.filters.namespace', [flags.namespace]));
303
+ }
304
+ return active;
305
+ }
306
+ /**
307
+ * Returns active filters as flag strings for empty state display.
308
+ */
309
+ // eslint-disable-next-line class-methods-use-this
310
+ getSelectiveFilters(flags) {
311
+ const selective = [];
312
+ if (flags.pattern)
313
+ selective.push(`--pattern ${flags.pattern}`);
314
+ if (flags.namespace)
315
+ selective.push(`--namespace ${flags.namespace}`);
316
+ if (flags.objects)
317
+ selective.push(`--objects ${flags.objects}`);
318
+ if (flags.category)
319
+ selective.push(`--category ${flags.category}`);
320
+ if (flags.method)
321
+ selective.push(`--method ${flags.method}`);
322
+ if (flags.status && flags.status !== 'all')
323
+ selective.push(`--status ${flags.status}`);
324
+ return selective;
325
+ }
326
+ /**
327
+ * Displays contextual next steps based on the listed definitions.
328
+ */
329
+ displayNextSteps(targetOrg, definitions) {
330
+ this.log(messages.getMessage('output.nextSteps.header'));
331
+ this.log('');
332
+ // Suggest definition get for the first definition if any exist
333
+ if (definitions.length > 0) {
334
+ const firstKey = definitions[0].key;
335
+ this.log(` ${messages.getMessage('output.nextSteps.getLabel')}`);
336
+ this.log(` ${messages.getMessage('output.nextSteps.getCommand', [targetOrg, firstKey])}`);
337
+ this.log('');
338
+ }
339
+ // Always suggest definition create
340
+ this.log(` ${messages.getMessage('output.nextSteps.createLabel')}`);
341
+ this.log(` ${messages.getMessage('output.nextSteps.createCommand')}`);
342
+ this.log('');
343
+ // Suggest profiling if definitions exist
344
+ if (definitions.length > 0) {
345
+ const firstKey = definitions[0].key;
346
+ this.log(` ${messages.getMessage('output.nextSteps.profileLabel')}`);
347
+ this.log(` ${messages.getMessage('output.nextSteps.profileCommand', [targetOrg, firstKey])}`);
348
+ }
349
+ }
350
+ }
351
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/cuneiform/definition/list.ts"],"names":[],"mappings":"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"}