@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,414 @@
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, SfError } from '@salesforce/core';
10
+ import { CuneiformCommand, createAdapterStack } from '../../../base/cuneiform-command.js';
11
+ import { createConnectionFacade } from '../../../adapters/connection-facade.js';
12
+ import { UserReadinessService, REQUIRED_PERMISSION_SETS, REQUIRED_PERMISSION_SET_LABELS, } from '../../../services/UserReadinessService.js';
13
+ import { UserConfigurationService } from '../../../services/UserConfigurationService.js';
14
+ import { OrgInfoService } from '../../../services/OrgInfoService.js';
15
+ import { ProfilingRestClient } from '../../../adapters/rest/profiling-rest-client.js';
16
+ import { ServiceErrorCodes } from '../../../adapters/errors.js';
17
+ import { CUNEIFORM_NAMESPACE } from '../../../services/namespace-constants.js';
18
+ import { displayOutput } from '../../../utils/formatting/user-details-display.js';
19
+ Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
20
+ const messages = Messages.loadMessages('@peernova/cuneiform-sf', 'user.details');
21
+ const accessMessages = Messages.loadMessages('@peernova/cuneiform-sf', 'cuneiform.access');
22
+ /**
23
+ * Displays authenticated user context and Cuneiform readiness status.
24
+ *
25
+ * Use this command to:
26
+ * - Verify user identity (ID, username, email, profile, role)
27
+ * - Check required Cuneiform permission set assignments
28
+ * - Validate Configuration Profile settings for API-only profiling
29
+ * - Diagnose readiness issues before running other Cuneiform commands
30
+ *
31
+ * @example
32
+ * ```bash
33
+ * # Display user details and readiness status
34
+ * sf cuneiform user details --target-org myOrg
35
+ *
36
+ * # Output as JSON for programmatic use
37
+ * sf cuneiform user details --target-org myOrg --json
38
+ * ```
39
+ */
40
+ // eslint-disable-next-line sf-plugin/only-extend-SfCommand -- CuneiformCommand extends SfCommand with shared access gate logic
41
+ export default class Details extends CuneiformCommand {
42
+ static summary = messages.getMessage('summary');
43
+ static description = messages.getMessage('description');
44
+ static examples = messages.getMessages('examples');
45
+ // eslint-disable-next-line sf-plugin/spread-base-flags -- CuneiformCommand has no additional flags to spread
46
+ static flags = {
47
+ 'target-org': Flags.requiredOrg({
48
+ summary: messages.getMessage('flags.target-org.summary'),
49
+ char: 'o',
50
+ required: true,
51
+ }),
52
+ 'api-version': Flags.orgApiVersion({
53
+ summary: messages.getMessage('flags.api-version.summary'),
54
+ }),
55
+ configure: Flags.boolean({
56
+ summary: messages.getMessage('flags.configure.summary'),
57
+ char: 'c',
58
+ default: false,
59
+ exclusive: ['unconfigure'],
60
+ }),
61
+ unconfigure: Flags.boolean({
62
+ summary: messages.getMessage('flags.unconfigure.summary'),
63
+ hidden: true,
64
+ default: false,
65
+ exclusive: ['configure', 'dry-run'],
66
+ }),
67
+ 'dry-run': Flags.boolean({
68
+ summary: messages.getMessage('flags.dry-run.summary'),
69
+ char: 'd',
70
+ default: false,
71
+ }),
72
+ };
73
+ static skipAccessGate = true;
74
+ /**
75
+ * Builds the command result from service data.
76
+ */
77
+ static buildResult(userInfo, readiness, orgIdentity, instanceUrl) {
78
+ const ADMIN_PS = REQUIRED_PERMISSION_SETS[0];
79
+ const adminAssignment = readiness.permissionSets.assignments.find((a) => a.name === ADMIN_PS);
80
+ const hasAdminAccess = readiness.isCuneiformInstalled && (adminAssignment?.isAssigned ?? false);
81
+ // Build permission set results. `isRequired` reflects the static fact
82
+ // that this permset is required for the feature — not whether it is
83
+ // currently missing. Use `!isAssigned` to identify unmet action items.
84
+ const permissionSets = REQUIRED_PERMISSION_SETS.map((name) => {
85
+ const assignment = readiness.permissionSets.assignments.find((a) => a.name === name);
86
+ return {
87
+ apiName: `${CUNEIFORM_NAMESPACE}__${name}`,
88
+ label: assignment?.label ?? REQUIRED_PERMISSION_SET_LABELS[name] ?? name,
89
+ isAssigned: assignment?.isAssigned ?? false,
90
+ isRequired: true,
91
+ };
92
+ });
93
+ // Build config profile result
94
+ const configProfile = {
95
+ isConfigured: readiness.configProfile.isConfigured,
96
+ profileLabel: readiness.configProfile.profileLabel ?? null,
97
+ apiOnlyProfilingEnabled: readiness.configProfile.isConfigured
98
+ ? readiness.configProfile.apiOnlyProfilingEnabled ?? null
99
+ : null,
100
+ selfRegistrationEnabled: readiness.configProfile.isConfigured
101
+ ? readiness.configProfile.selfRegistrationEnabled ?? null
102
+ : null,
103
+ };
104
+ // Build structured resolution guidance (extracted to reduce buildResult complexity)
105
+ const resolutionGuidance = Details.buildResolutionGuidance(readiness);
106
+ // Append no-config-profile guidance last (after permission and config checks)
107
+ if (readiness.isCuneiformInstalled && !readiness.configProfile.isConfigured) {
108
+ resolutionGuidance.push({
109
+ issue: messages.getMessage('guidance.noConfigProfile'),
110
+ action: messages.getMessage('guidance.noConfigProfileAction'),
111
+ persona: 'admin',
112
+ });
113
+ }
114
+ // Build org context
115
+ const orgContext = {
116
+ orgName: orgIdentity?.organizationName ?? '(unknown)',
117
+ orgId: orgIdentity?.organizationId ?? '(unknown)',
118
+ instanceUrl,
119
+ isSandbox: orgIdentity?.isSandbox ?? false,
120
+ orgType: orgIdentity?.organizationType ?? '(unknown)',
121
+ };
122
+ // Build links
123
+ const links = {
124
+ installationGuide: messages.getMessage('links.installationGuideUrl'),
125
+ documentation: messages.getMessage('links.verificationDocsUrl'),
126
+ };
127
+ return {
128
+ orgContext,
129
+ user: {
130
+ id: userInfo.id,
131
+ username: userInfo.username,
132
+ email: userInfo.email,
133
+ profileName: userInfo.profileName,
134
+ roleName: userInfo.roleName,
135
+ },
136
+ prerequisites: {
137
+ cuneiformInstalled: readiness.isCuneiformInstalled,
138
+ adminAccessAssigned: hasAdminAccess,
139
+ allPassed: readiness.isCuneiformInstalled && hasAdminAccess,
140
+ },
141
+ readiness: {
142
+ isReady: readiness.isReady,
143
+ permissionSets,
144
+ configProfile,
145
+ },
146
+ resolutionGuidance,
147
+ links,
148
+ };
149
+ }
150
+ /**
151
+ * Builds resolution guidance items from readiness state.
152
+ * Extracted from buildResult to reduce cyclomatic complexity.
153
+ */
154
+ static buildResolutionGuidance(readiness) {
155
+ const guidance = [];
156
+ if (!readiness.isCuneiformInstalled) {
157
+ guidance.push({
158
+ issue: messages.getMessage('guidance.cuneiformNotInstalled'),
159
+ action: messages.getMessage('guidance.cuneiformNotInstalledAction'),
160
+ persona: 'admin',
161
+ });
162
+ return guidance;
163
+ }
164
+ if (readiness.permissionSets.missingRequired.length > 0) {
165
+ // Prefer the canonical label from the assignments array (queried live
166
+ // from PermissionSet), falling back to the static constant when the
167
+ // assignment record is unavailable — keeps guidance text aligned with
168
+ // the permission-set display block.
169
+ const labels = readiness.permissionSets.missingRequired.map((name) => {
170
+ const assignment = readiness.permissionSets.assignments.find((a) => a.name === name);
171
+ return assignment?.label ?? REQUIRED_PERMISSION_SET_LABELS[name] ?? name;
172
+ });
173
+ if (labels.length === 1) {
174
+ guidance.push({
175
+ issue: messages.getMessage('guidance.missingPermissionSet', [labels[0]]),
176
+ action: messages.getMessage('guidance.missingPermissionSetAction'),
177
+ persona: 'admin',
178
+ });
179
+ }
180
+ else {
181
+ guidance.push({
182
+ issue: messages.getMessage('guidance.missingPermissionSets'),
183
+ detail: labels,
184
+ action: messages.getMessage('guidance.missingPermissionSetsAction'),
185
+ persona: 'admin',
186
+ });
187
+ }
188
+ }
189
+ if (readiness.configProfile.isConfigured && readiness.configProfile.apiOnlyProfilingEnabled === false) {
190
+ guidance.push({
191
+ issue: messages.getMessage('guidance.apiOnlyProfilingDisabled'),
192
+ action: messages.getMessage('guidance.apiOnlyProfilingDisabledAction'),
193
+ persona: 'admin',
194
+ });
195
+ }
196
+ // Only surface self-registration guidance when Admin PS is assigned —
197
+ // if the user isn't an administrator, self-registration isn't relevant yet.
198
+ const hasAdminPSAssigned = readiness.permissionSets.assignments.some((a) => a.name === 'Cuneiform_for_CRM_PRO_Administrative_User' && a.isAssigned);
199
+ if (hasAdminPSAssigned &&
200
+ readiness.configProfile.isConfigured &&
201
+ readiness.configProfile.selfRegistrationEnabled === false) {
202
+ guidance.push({
203
+ issue: messages.getMessage('guidance.selfRegistrationDisabled'),
204
+ action: messages.getMessage('guidance.selfRegistrationDisabledAction'),
205
+ persona: 'admin',
206
+ });
207
+ }
208
+ return guidance;
209
+ }
210
+ /**
211
+ * Maps the service-level UserConfigurationResult to the command-level ConfigurationResult.
212
+ */
213
+ static mapConfigurationResult(serviceResult, isDryRun) {
214
+ const actions = serviceResult.actions.map((action) => ({
215
+ type: action.type,
216
+ target: action.target,
217
+ targetLabel: action.targetLabel ?? action.target,
218
+ status: isDryRun ? 'planned' : action.status,
219
+ message: action.message,
220
+ }));
221
+ // Extract deployment job ID from action details
222
+ const deployAction = serviceResult.actions.find((a) => a.type === 'enableApiOnlyProfiling' && a.details?.jobId);
223
+ return {
224
+ dryRun: isDryRun,
225
+ // CLI-3624: surface the service-layer previousState so consumers (and the
226
+ // NUT phase 6 agreement assertion) can verify the CLI-3418 readiness-threading
227
+ // contract through the command JSON output. userId/username are intentionally
228
+ // not surfaced — they already live on UserDetailsResult.user.
229
+ previousState: {
230
+ hasRequiredPermissionSets: serviceResult.previousState.hasRequiredPermissionSets,
231
+ missingPermissionSets: serviceResult.previousState.missingPermissionSets,
232
+ apiOnlyProfilingEnabled: serviceResult.previousState.apiOnlyProfilingEnabled,
233
+ profileDeveloperName: serviceResult.previousState.profileDeveloperName,
234
+ },
235
+ actions,
236
+ summary: {
237
+ changesRequired: serviceResult.summary.changesRequired,
238
+ changesApplied: serviceResult.summary.changesApplied,
239
+ changesFailed: serviceResult.summary.changesFailed,
240
+ },
241
+ deploymentJobId: deployAction?.details?.jobId,
242
+ };
243
+ }
244
+ /**
245
+ * Executes the user details command.
246
+ *
247
+ * @returns UserDetailsResult with user identity and readiness status
248
+ */
249
+ async run() {
250
+ const { flags } = await this.parse(Details);
251
+ // --dry-run implies --configure
252
+ const shouldConfigure = flags.configure || flags['dry-run'];
253
+ const shouldUnconfigure = flags.unconfigure;
254
+ const isDryRun = flags['dry-run'];
255
+ const connection = flags['target-org'].getConnection(flags['api-version']);
256
+ const orgIdentifier = flags['target-org'].getUsername() ?? 'unknown';
257
+ const facade = createConnectionFacade(connection);
258
+ const userId = await this.connectToOrg(facade, orgIdentifier);
259
+ const { soqlAdapter, restAdapter } = createAdapterStack(facade);
260
+ const restClient = new ProfilingRestClient(restAdapter);
261
+ const userReadinessService = new UserReadinessService({ soqlAdapter, restClient });
262
+ const orgData = await this.fetchOrgData(facade, soqlAdapter, userReadinessService, userId, orgIdentifier);
263
+ const { userInfo, orgIdentity } = orgData;
264
+ let { readiness } = orgData;
265
+ // Build diagnostic result
266
+ const result = Details.buildResult(userInfo, readiness, orgIdentity, facade.instanceUrl ?? '');
267
+ // Environment gate: block configure/unconfigure in production orgs
268
+ if ((shouldConfigure || shouldUnconfigure) && orgIdentity) {
269
+ const orgType = OrgInfoService.classifyOrgType(orgIdentity.isSandbox, orgIdentity.organizationType);
270
+ if (!UserReadinessService.isConfigureAllowed(orgType)) {
271
+ const sfError = new SfError(accessMessages.getMessage('error.environmentConfigureBlocked'));
272
+ sfError.code = ServiceErrorCodes.ENVIRONMENT_CONFIGURE_BLOCKED;
273
+ throw sfError;
274
+ }
275
+ }
276
+ // Run configuration or unconfiguration if requested
277
+ if (shouldConfigure) {
278
+ const configData = await this.runConfigurePhase(result, facade, soqlAdapter, restAdapter, userReadinessService, userId, isDryRun, readiness);
279
+ result.configuration = Details.mapConfigurationResult(configData, isDryRun);
280
+ if (!isDryRun && configData.summary.changesApplied > 0) {
281
+ // Refetch readiness to show post-change state (Rec #1)
282
+ const updatedReadiness = await userReadinessService.checkReadiness(userId);
283
+ if (updatedReadiness.success) {
284
+ readiness = updatedReadiness.data;
285
+ const updatedResult = Details.buildResult(userInfo, readiness, orgIdentity, facade.instanceUrl ?? '');
286
+ result.readiness = updatedResult.readiness;
287
+ result.resolutionGuidance = updatedResult.resolutionGuidance;
288
+ result.links = updatedResult.links;
289
+ }
290
+ }
291
+ }
292
+ if (shouldUnconfigure) {
293
+ const unconfigData = await this.runUnconfigurePhase(result, facade, soqlAdapter, restAdapter, userReadinessService, userId);
294
+ result.configuration = Details.mapConfigurationResult(unconfigData, false);
295
+ if (unconfigData.summary.changesApplied > 0) {
296
+ // Refetch readiness to show post-change state (Rec #1)
297
+ const updatedReadiness = await userReadinessService.checkReadiness(userId);
298
+ if (updatedReadiness.success) {
299
+ readiness = updatedReadiness.data;
300
+ const updatedResult = Details.buildResult(userInfo, readiness, orgIdentity, facade.instanceUrl ?? '');
301
+ result.readiness = updatedResult.readiness;
302
+ result.resolutionGuidance = updatedResult.resolutionGuidance;
303
+ result.links = updatedResult.links;
304
+ }
305
+ }
306
+ }
307
+ // Display human-readable output (delegated to display module)
308
+ displayOutput(this.log.bind(this), userInfo, readiness, result);
309
+ return result;
310
+ }
311
+ /**
312
+ * Establishes connection to the Salesforce org and retrieves the current user ID.
313
+ * Wraps the identity call with a user-friendly error message on failure.
314
+ */
315
+ async connectToOrg(facade, orgIdentifier) {
316
+ try {
317
+ const identity = await facade.identity();
318
+ return identity.user_id;
319
+ }
320
+ catch (error) {
321
+ const detail = error instanceof Error ? error.message : String(error);
322
+ this.error(messages.getMessage('errors.orgConnectionFailed', [orgIdentifier, orgIdentifier]) + `\n\nDetail: ${detail}`, { code: 'E2001' });
323
+ }
324
+ }
325
+ /**
326
+ * Fetches org identity, user info, and readiness in parallel.
327
+ * Wraps the API calls with a user-friendly error message on failure.
328
+ */
329
+ async fetchOrgData(facade, soqlAdapter, userReadinessService, userId, orgIdentifier) {
330
+ const orgInfoService = new OrgInfoService({ connectionFacade: facade, soqlAdapter });
331
+ this.spinner.start(messages.getMessage('info.fetchingOrgData'));
332
+ let orgIdentityResult;
333
+ let userInfoResult;
334
+ let readinessResult;
335
+ try {
336
+ [orgIdentityResult, userInfoResult, readinessResult] = await Promise.all([
337
+ orgInfoService.getOrgIdentity(),
338
+ userReadinessService.getUserInfo(userId),
339
+ userReadinessService.checkReadiness(userId),
340
+ ]);
341
+ }
342
+ catch (error) {
343
+ this.spinner.stop();
344
+ const detail = error instanceof Error ? error.message : String(error);
345
+ this.error(messages.getMessage('errors.orgApiFailed', [orgIdentifier, orgIdentifier, orgIdentifier]) +
346
+ `\n\nDetail: ${detail}`, { code: 'E3001' });
347
+ }
348
+ this.spinner.stop();
349
+ if (!userInfoResult.success) {
350
+ this.error(userInfoResult.message ?? messages.getMessage('errors.userInfoFailed'), {
351
+ code: userInfoResult.errorCode,
352
+ });
353
+ }
354
+ if (!readinessResult.success) {
355
+ this.error(readinessResult.message ?? messages.getMessage('errors.readinessFailed'), {
356
+ code: readinessResult.errorCode,
357
+ });
358
+ }
359
+ return {
360
+ userInfo: userInfoResult.data,
361
+ readiness: readinessResult.data,
362
+ orgIdentity: orgIdentityResult.success ? orgIdentityResult.data : undefined,
363
+ };
364
+ }
365
+ /**
366
+ * Runs the --configure phase: assigns permission sets and enables API-only profiling.
367
+ *
368
+ * Threads the outer-fetched `readiness` snapshot into `configure()` so the displayed
369
+ * readiness block and the configure `previousState` block report the same
370
+ * `apiOnlyProfilingEnabled` value (CLI-3418).
371
+ */
372
+ async runConfigurePhase(result, _facade, soqlAdapter, restAdapter, userReadinessService, userId, isDryRun, readiness) {
373
+ if (!result.prerequisites.cuneiformInstalled) {
374
+ this.error(messages.getMessage('errors.cuneiformNotInstalled'));
375
+ }
376
+ const configService = new UserConfigurationService({
377
+ soqlAdapter,
378
+ restApiAdapter: restAdapter,
379
+ userReadinessService,
380
+ });
381
+ this.spinner.start(isDryRun ? messages.getMessage('info.dryRunStart') : messages.getMessage('info.configureStart'));
382
+ const configResult = await configService.configure(userId, { dryRun: isDryRun, readiness });
383
+ this.spinner.stop();
384
+ if (!configResult.success) {
385
+ this.error(configResult.message ?? messages.getMessage('errors.configurationFailed'), {
386
+ code: configResult.errorCode,
387
+ });
388
+ }
389
+ return configResult.data;
390
+ }
391
+ /**
392
+ * Runs the --unconfigure phase: unassigns permission sets and disables API-only profiling.
393
+ */
394
+ async runUnconfigurePhase(result, _facade, soqlAdapter, restAdapter, userReadinessService, userId) {
395
+ if (!result.prerequisites.cuneiformInstalled) {
396
+ this.error(messages.getMessage('errors.cuneiformNotInstalled'));
397
+ }
398
+ const configService = new UserConfigurationService({
399
+ soqlAdapter,
400
+ restApiAdapter: restAdapter,
401
+ userReadinessService,
402
+ });
403
+ this.spinner.start(messages.getMessage('info.unconfigureStart'));
404
+ const unconfigResult = await configService.unconfigure(userId);
405
+ this.spinner.stop();
406
+ if (!unconfigResult.success) {
407
+ this.error(unconfigResult.message ?? messages.getMessage('errors.configurationFailed'), {
408
+ code: unconfigResult.errorCode,
409
+ });
410
+ }
411
+ return unconfigResult.data;
412
+ }
413
+ }
414
+ //# sourceMappingURL=details.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"details.js","sourceRoot":"","sources":["../../../../src/commands/cuneiform/user/details.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Mapping of Salesforce namespace prefixes to product names.
3
+ *
4
+ * This map enables identification of installed Salesforce products by their
5
+ * namespace prefix. Managed packages use namespace prefixes on custom objects
6
+ * (e.g., `SBQQ__Quote__c` indicates Salesforce CPQ is installed).
7
+ *
8
+ * @see docs/knowledge/salesforce/namespaces.md for comprehensive documentation
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const namespace = 'SBQQ__';
13
+ * const product = NAMESPACE_PRODUCT_MAP[namespace];
14
+ * console.log(product); // 'Salesforce CPQ'
15
+ * ```
16
+ */
17
+ export declare const NAMESPACE_PRODUCT_MAP: Readonly<Record<string, string>>;
18
+ /**
19
+ * Namespace-to-cloud name mapping for package-based cloud detection.
20
+ * Keys are namespace prefixes without trailing underscores.
21
+ */
22
+ export declare const CLOUD_NAMESPACE_MAP: Readonly<Record<string, string>>;
23
+ /**
24
+ * The namespace prefix used by Cuneiform for CRM.
25
+ */
26
+ export declare const CUNEIFORM_NAMESPACE: "pnova";
27
+ /**
28
+ * The namespace prefix with trailing underscores (for object/field references).
29
+ */
30
+ export declare const CUNEIFORM_NAMESPACE_PREFIX: "pnova__";
31
+ /**
32
+ * Canonical Subscriber Package names for the main Cuneiform managed package.
33
+ *
34
+ * Used to disambiguate the main package from extension packages that share the
35
+ * `pnova` namespace (e.g., 'Cuneiform for CRM: Data Health Reports'). Extension
36
+ * packages follow a `Main: Subtitle` naming convention.
37
+ *
38
+ * Includes the current marketing name and historical labels so orgs upgraded
39
+ * across renames continue to resolve correctly.
40
+ */
41
+ export declare const CUNEIFORM_MAIN_PACKAGE_NAMES: readonly string[];
42
+ /**
43
+ * Gets the product name for a given namespace prefix.
44
+ *
45
+ * @param namespace - The namespace prefix (with or without trailing underscores)
46
+ * @returns The product name or undefined if not found
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * getProductName('SBQQ__'); // 'Salesforce CPQ'
51
+ * getProductName('SBQQ'); // 'Salesforce CPQ' (normalizes input)
52
+ * getProductName('Unknown__'); // undefined
53
+ * ```
54
+ */
55
+ export declare function getProductName(namespace: string): string | undefined;
56
+ /**
57
+ * Checks if a namespace belongs to Cuneiform.
58
+ *
59
+ * @param namespace - The namespace to check
60
+ * @returns True if the namespace is Cuneiform's namespace
61
+ */
62
+ export declare function isCuneiformNamespace(namespace: string): boolean;
63
+ /**
64
+ * Extracts unique namespaces from a list of object API names.
65
+ *
66
+ * @param objectNames - Array of Salesforce object API names
67
+ * @returns Array of unique namespace prefixes found
68
+ *
69
+ * @example
70
+ * ```typescript
71
+ * extractNamespaces(['SBQQ__Quote__c', 'Account', 'npsp__Donation__c']);
72
+ * // Returns: ['SBQQ__', 'npsp__']
73
+ * ```
74
+ */
75
+ export declare function extractNamespaces(objectNames: string[]): string[];
76
+ /**
77
+ * Classification categories for Salesforce namespace prefixes.
78
+ *
79
+ * - `standard` - No namespace (platform-native objects like Account, Contact)
80
+ * - `industry` - Salesforce Industry Cloud namespaces (Health Cloud, FSC, etc.)
81
+ * - `managed` - Known managed packages (CPQ, NPSP, Cuneiform, etc.)
82
+ * - `custom` - Unknown/unrecognized namespace prefixes
83
+ */
84
+ export type NamespaceCategory = 'standard' | 'industry' | 'managed' | 'custom';
85
+ /**
86
+ * Categorizes a Salesforce namespace prefix into one of four categories:
87
+ * standard, industry, managed, or custom.
88
+ *
89
+ * @param namespace - The namespace prefix (with or without trailing underscores).
90
+ * Null, undefined, or empty string indicates a standard (platform-native) object.
91
+ * @returns The category classification for the namespace
92
+ *
93
+ * @example
94
+ * ```typescript
95
+ * categorizeNamespace(null); // 'standard'
96
+ * categorizeNamespace(''); // 'standard'
97
+ * categorizeNamespace('FinServ__'); // 'industry'
98
+ * categorizeNamespace('SBQQ__'); // 'managed'
99
+ * categorizeNamespace('MyCustomPkg__'); // 'custom'
100
+ * ```
101
+ */
102
+ export declare function categorizeNamespace(namespace: string | null | undefined): NamespaceCategory;