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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (494) hide show
  1. package/LICENSE +81 -30
  2. package/README.md +59 -95
  3. package/lib/adapters/connection-facade.d.ts +458 -0
  4. package/lib/adapters/connection-facade.js +379 -0
  5. package/lib/adapters/connection-facade.js.map +1 -0
  6. package/lib/adapters/errors.d.ts +547 -0
  7. package/lib/adapters/errors.js +937 -0
  8. package/lib/adapters/errors.js.map +1 -0
  9. package/lib/adapters/index.d.ts +33 -0
  10. package/lib/adapters/index.js +50 -0
  11. package/lib/adapters/index.js.map +1 -0
  12. package/lib/adapters/lifecycle.d.ts +119 -0
  13. package/lib/adapters/lifecycle.js +94 -0
  14. package/lib/adapters/lifecycle.js.map +1 -0
  15. package/lib/adapters/rest/cache.d.ts +69 -0
  16. package/lib/adapters/rest/cache.js +133 -0
  17. package/lib/adapters/rest/cache.js.map +1 -0
  18. package/lib/adapters/rest/index.d.ts +11 -0
  19. package/lib/adapters/rest/index.js +18 -0
  20. package/lib/adapters/rest/index.js.map +1 -0
  21. package/lib/adapters/rest/profiling-rest-client.d.ts +137 -0
  22. package/lib/adapters/rest/profiling-rest-client.js +115 -0
  23. package/lib/adapters/rest/profiling-rest-client.js.map +1 -0
  24. package/lib/adapters/rest/rest-api-adapter.d.ts +389 -0
  25. package/lib/adapters/rest/rest-api-adapter.js +747 -0
  26. package/lib/adapters/rest/rest-api-adapter.js.map +1 -0
  27. package/lib/adapters/rest/types.d.ts +34 -0
  28. package/lib/adapters/rest/types.js +9 -0
  29. package/lib/adapters/rest/types.js.map +1 -0
  30. package/lib/adapters/retry.d.ts +91 -0
  31. package/lib/adapters/retry.js +215 -0
  32. package/lib/adapters/retry.js.map +1 -0
  33. package/lib/adapters/soql/cuneiform-query-builder.d.ts +391 -0
  34. package/lib/adapters/soql/cuneiform-query-builder.js +559 -0
  35. package/lib/adapters/soql/cuneiform-query-builder.js.map +1 -0
  36. package/lib/adapters/soql/index.d.ts +13 -0
  37. package/lib/adapters/soql/index.js +21 -0
  38. package/lib/adapters/soql/index.js.map +1 -0
  39. package/lib/adapters/soql/soql-query-adapter.d.ts +141 -0
  40. package/lib/adapters/soql/soql-query-adapter.js +259 -0
  41. package/lib/adapters/soql/soql-query-adapter.js.map +1 -0
  42. package/lib/adapters/soql/types.d.ts +37 -0
  43. package/lib/adapters/soql/types.js +19 -0
  44. package/lib/adapters/soql/types.js.map +1 -0
  45. package/lib/adapters/testing/index.d.ts +37 -0
  46. package/lib/adapters/testing/index.js +20 -0
  47. package/lib/adapters/testing/index.js.map +1 -0
  48. package/lib/adapters/testing/mock-connection.d.ts +77 -0
  49. package/lib/adapters/testing/mock-connection.js +207 -0
  50. package/lib/adapters/testing/mock-connection.js.map +1 -0
  51. package/lib/adapters/testing/mock-logger.d.ts +29 -0
  52. package/lib/adapters/testing/mock-logger.js +57 -0
  53. package/lib/adapters/testing/mock-logger.js.map +1 -0
  54. package/lib/adapters/testing/mock-mcp-adapters.d.ts +32 -0
  55. package/lib/adapters/testing/mock-mcp-adapters.js +52 -0
  56. package/lib/adapters/testing/mock-mcp-adapters.js.map +1 -0
  57. package/lib/adapters/testing/mock-oclif-config.d.ts +22 -0
  58. package/lib/adapters/testing/mock-oclif-config.js +90 -0
  59. package/lib/adapters/testing/mock-oclif-config.js.map +1 -0
  60. package/lib/adapters/testing/mock-rest-adapter.d.ts +26 -0
  61. package/lib/adapters/testing/mock-rest-adapter.js +243 -0
  62. package/lib/adapters/testing/mock-rest-adapter.js.map +1 -0
  63. package/lib/adapters/testing/mock-salesforce-connection.d.ts +40 -0
  64. package/lib/adapters/testing/mock-salesforce-connection.js +61 -0
  65. package/lib/adapters/testing/mock-salesforce-connection.js.map +1 -0
  66. package/lib/adapters/testing/mock-soql-adapter.d.ts +30 -0
  67. package/lib/adapters/testing/mock-soql-adapter.js +120 -0
  68. package/lib/adapters/testing/mock-soql-adapter.js.map +1 -0
  69. package/lib/adapters/testing/mock-tooling-adapter.d.ts +24 -0
  70. package/lib/adapters/testing/mock-tooling-adapter.js +163 -0
  71. package/lib/adapters/testing/mock-tooling-adapter.js.map +1 -0
  72. package/lib/adapters/testing/stub-connection.d.ts +93 -0
  73. package/lib/adapters/testing/stub-connection.js +97 -0
  74. package/lib/adapters/testing/stub-connection.js.map +1 -0
  75. package/lib/adapters/testing/stub-rest-adapter.d.ts +52 -0
  76. package/lib/adapters/testing/stub-rest-adapter.js +58 -0
  77. package/lib/adapters/testing/stub-rest-adapter.js.map +1 -0
  78. package/lib/adapters/testing/stub-soql-adapter.d.ts +56 -0
  79. package/lib/adapters/testing/stub-soql-adapter.js +50 -0
  80. package/lib/adapters/testing/stub-soql-adapter.js.map +1 -0
  81. package/lib/adapters/testing/types.d.ts +71 -0
  82. package/lib/adapters/testing/types.js +9 -0
  83. package/lib/adapters/testing/types.js.map +1 -0
  84. package/lib/adapters/tooling/index.d.ts +10 -0
  85. package/lib/adapters/tooling/index.js +17 -0
  86. package/lib/adapters/tooling/index.js.map +1 -0
  87. package/lib/adapters/tooling/tooling-api-adapter.d.ts +157 -0
  88. package/lib/adapters/tooling/tooling-api-adapter.js +339 -0
  89. package/lib/adapters/tooling/tooling-api-adapter.js.map +1 -0
  90. package/lib/adapters/tooling/types.d.ts +81 -0
  91. package/lib/adapters/tooling/types.js +9 -0
  92. package/lib/adapters/tooling/types.js.map +1 -0
  93. package/lib/adapters/types.d.ts +112 -0
  94. package/lib/adapters/types.js +169 -0
  95. package/lib/adapters/types.js.map +1 -0
  96. package/lib/base/cuneiform-command.d.ts +152 -0
  97. package/lib/base/cuneiform-command.js +243 -0
  98. package/lib/base/cuneiform-command.js.map +1 -0
  99. package/lib/commands/cuneiform/compatibility/check.d.ts +43 -0
  100. package/lib/commands/cuneiform/compatibility/check.js +114 -0
  101. package/lib/commands/cuneiform/compatibility/check.js.map +1 -0
  102. package/lib/commands/cuneiform/definition/create.d.ts +119 -0
  103. package/lib/commands/cuneiform/definition/create.js +693 -0
  104. package/lib/commands/cuneiform/definition/create.js.map +1 -0
  105. package/lib/commands/cuneiform/definition/export.d.ts +57 -0
  106. package/lib/commands/cuneiform/definition/export.js +133 -0
  107. package/lib/commands/cuneiform/definition/export.js.map +1 -0
  108. package/lib/commands/cuneiform/definition/get.d.ts +86 -0
  109. package/lib/commands/cuneiform/definition/get.js +270 -0
  110. package/lib/commands/cuneiform/definition/get.js.map +1 -0
  111. package/lib/commands/cuneiform/definition/import.d.ts +54 -0
  112. package/lib/commands/cuneiform/definition/import.js +118 -0
  113. package/lib/commands/cuneiform/definition/import.js.map +1 -0
  114. package/lib/commands/cuneiform/definition/list.d.ts +110 -0
  115. package/lib/commands/cuneiform/definition/list.js +344 -0
  116. package/lib/commands/cuneiform/definition/list.js.map +1 -0
  117. package/lib/commands/cuneiform/definition/purge.d.ts +105 -0
  118. package/lib/commands/cuneiform/definition/purge.js +533 -0
  119. package/lib/commands/cuneiform/definition/purge.js.map +1 -0
  120. package/lib/commands/cuneiform/definition/update.d.ts +58 -0
  121. package/lib/commands/cuneiform/definition/update.js +206 -0
  122. package/lib/commands/cuneiform/definition/update.js.map +1 -0
  123. package/lib/commands/cuneiform/mcp/serve.d.ts +56 -0
  124. package/lib/commands/cuneiform/mcp/serve.js +109 -0
  125. package/lib/commands/cuneiform/mcp/serve.js.map +1 -0
  126. package/lib/commands/cuneiform/object/describe.d.ts +61 -0
  127. package/lib/commands/cuneiform/object/describe.js +461 -0
  128. package/lib/commands/cuneiform/object/describe.js.map +1 -0
  129. package/lib/commands/cuneiform/object/list.d.ts +111 -0
  130. package/lib/commands/cuneiform/object/list.js +239 -0
  131. package/lib/commands/cuneiform/object/list.js.map +1 -0
  132. package/lib/commands/cuneiform/org/details.d.ts +99 -0
  133. package/lib/commands/cuneiform/org/details.js +521 -0
  134. package/lib/commands/cuneiform/org/details.js.map +1 -0
  135. package/lib/commands/cuneiform/org/reset.d.ts +46 -0
  136. package/lib/commands/cuneiform/org/reset.js +135 -0
  137. package/lib/commands/cuneiform/org/reset.js.map +1 -0
  138. package/lib/commands/cuneiform/profile/request/cancel.d.ts +59 -0
  139. package/lib/commands/cuneiform/profile/request/cancel.js +202 -0
  140. package/lib/commands/cuneiform/profile/request/cancel.js.map +1 -0
  141. package/lib/commands/cuneiform/profile/request/delete.d.ts +59 -0
  142. package/lib/commands/cuneiform/profile/request/delete.js +223 -0
  143. package/lib/commands/cuneiform/profile/request/delete.js.map +1 -0
  144. package/lib/commands/cuneiform/profile/request/list.d.ts +35 -0
  145. package/lib/commands/cuneiform/profile/request/list.js +102 -0
  146. package/lib/commands/cuneiform/profile/request/list.js.map +1 -0
  147. package/lib/commands/cuneiform/profile.d.ts +90 -0
  148. package/lib/commands/cuneiform/profile.js +322 -0
  149. package/lib/commands/cuneiform/profile.js.map +1 -0
  150. package/lib/commands/cuneiform/summary/purge.d.ts +77 -0
  151. package/lib/commands/cuneiform/summary/purge.js +429 -0
  152. package/lib/commands/cuneiform/summary/purge.js.map +1 -0
  153. package/lib/commands/cuneiform/summary/reprofile.d.ts +60 -0
  154. package/lib/commands/cuneiform/summary/reprofile.js +236 -0
  155. package/lib/commands/cuneiform/summary/reprofile.js.map +1 -0
  156. package/lib/commands/cuneiform/summary/stop.d.ts +59 -0
  157. package/lib/commands/cuneiform/summary/stop.js +234 -0
  158. package/lib/commands/cuneiform/summary/stop.js.map +1 -0
  159. package/lib/commands/cuneiform/user/details.d.ts +73 -0
  160. package/lib/commands/cuneiform/user/details.js +391 -0
  161. package/lib/commands/cuneiform/user/details.js.map +1 -0
  162. package/lib/constants/index.d.ts +8 -0
  163. package/lib/constants/index.js +16 -0
  164. package/lib/constants/index.js.map +1 -0
  165. package/lib/constants/namespace-constants.d.ts +91 -0
  166. package/lib/constants/namespace-constants.js +211 -0
  167. package/lib/constants/namespace-constants.js.map +1 -0
  168. package/lib/debug/command-debug-proxy.d.ts +101 -0
  169. package/lib/debug/command-debug-proxy.js +171 -0
  170. package/lib/debug/command-debug-proxy.js.map +1 -0
  171. package/lib/debug/debug-logger.d.ts +85 -0
  172. package/lib/debug/debug-logger.js +133 -0
  173. package/lib/debug/debug-logger.js.map +1 -0
  174. package/lib/debug/index.d.ts +12 -0
  175. package/lib/debug/index.js +20 -0
  176. package/lib/debug/index.js.map +1 -0
  177. package/lib/debug/service-debug-proxy.d.ts +30 -0
  178. package/lib/debug/service-debug-proxy.js +102 -0
  179. package/lib/debug/service-debug-proxy.js.map +1 -0
  180. package/lib/hooks/prerun.d.ts +25 -0
  181. package/lib/hooks/prerun.js +47 -0
  182. package/lib/hooks/prerun.js.map +1 -0
  183. package/lib/mcp/config/mcp-config.d.ts +55 -0
  184. package/lib/mcp/config/mcp-config.js +51 -0
  185. package/lib/mcp/config/mcp-config.js.map +1 -0
  186. package/lib/mcp/config/pagination.d.ts +96 -0
  187. package/lib/mcp/config/pagination.js +108 -0
  188. package/lib/mcp/config/pagination.js.map +1 -0
  189. package/lib/mcp/config/system-prompts.d.ts +18 -0
  190. package/lib/mcp/config/system-prompts.js +92 -0
  191. package/lib/mcp/config/system-prompts.js.map +1 -0
  192. package/lib/mcp/errors.d.ts +23 -0
  193. package/lib/mcp/errors.js +27 -0
  194. package/lib/mcp/errors.js.map +1 -0
  195. package/lib/mcp/schemas/input-schemas.d.ts +327 -0
  196. package/lib/mcp/schemas/input-schemas.js +302 -0
  197. package/lib/mcp/schemas/input-schemas.js.map +1 -0
  198. package/lib/mcp/server.d.ts +40 -0
  199. package/lib/mcp/server.js +316 -0
  200. package/lib/mcp/server.js.map +1 -0
  201. package/lib/mcp/tools/contactpoint-tools.d.ts +14 -0
  202. package/lib/mcp/tools/contactpoint-tools.js +34 -0
  203. package/lib/mcp/tools/contactpoint-tools.js.map +1 -0
  204. package/lib/mcp/tools/definition-io-tools.d.ts +19 -0
  205. package/lib/mcp/tools/definition-io-tools.js +152 -0
  206. package/lib/mcp/tools/definition-io-tools.js.map +1 -0
  207. package/lib/mcp/tools/definition-tools.d.ts +51 -0
  208. package/lib/mcp/tools/definition-tools.js +199 -0
  209. package/lib/mcp/tools/definition-tools.js.map +1 -0
  210. package/lib/mcp/tools/index.d.ts +37 -0
  211. package/lib/mcp/tools/index.js +88 -0
  212. package/lib/mcp/tools/index.js.map +1 -0
  213. package/lib/mcp/tools/object-tools.d.ts +22 -0
  214. package/lib/mcp/tools/object-tools.js +306 -0
  215. package/lib/mcp/tools/object-tools.js.map +1 -0
  216. package/lib/mcp/tools/org-tools.d.ts +14 -0
  217. package/lib/mcp/tools/org-tools.js +177 -0
  218. package/lib/mcp/tools/org-tools.js.map +1 -0
  219. package/lib/mcp/tools/profile-tools.d.ts +59 -0
  220. package/lib/mcp/tools/profile-tools.js +213 -0
  221. package/lib/mcp/tools/profile-tools.js.map +1 -0
  222. package/lib/mcp/tools/summary-tools.d.ts +14 -0
  223. package/lib/mcp/tools/summary-tools.js +38 -0
  224. package/lib/mcp/tools/summary-tools.js.map +1 -0
  225. package/lib/mcp/tools/tool-factory.d.ts +63 -0
  226. package/lib/mcp/tools/tool-factory.js +146 -0
  227. package/lib/mcp/tools/tool-factory.js.map +1 -0
  228. package/lib/mcp/tools/user-tools.d.ts +25 -0
  229. package/lib/mcp/tools/user-tools.js +167 -0
  230. package/lib/mcp/tools/user-tools.js.map +1 -0
  231. package/lib/models/date-literal.d.ts +211 -0
  232. package/lib/models/date-literal.js +615 -0
  233. package/lib/models/date-literal.js.map +1 -0
  234. package/lib/models/object-describe-types.d.ts +173 -0
  235. package/lib/models/object-describe-types.js +9 -0
  236. package/lib/models/object-describe-types.js.map +1 -0
  237. package/lib/models/profile-request-types.d.ts +118 -0
  238. package/lib/models/profile-request-types.js +23 -0
  239. package/lib/models/profile-request-types.js.map +1 -0
  240. package/lib/models/profiling-execution-types.d.ts +154 -0
  241. package/lib/models/profiling-execution-types.js +14 -0
  242. package/lib/models/profiling-execution-types.js.map +1 -0
  243. package/lib/models/service-result.d.ts +114 -0
  244. package/lib/models/service-result.js +81 -0
  245. package/lib/models/service-result.js.map +1 -0
  246. package/lib/models/sfdmu-types.d.ts +53 -0
  247. package/lib/models/sfdmu-types.js +23 -0
  248. package/lib/models/sfdmu-types.js.map +1 -0
  249. package/lib/models/status-types.d.ts +38 -0
  250. package/lib/models/status-types.js +12 -0
  251. package/lib/models/status-types.js.map +1 -0
  252. package/lib/models/summary-bulk-types.d.ts +61 -0
  253. package/lib/models/summary-bulk-types.js +23 -0
  254. package/lib/models/summary-bulk-types.js.map +1 -0
  255. package/lib/models/user-details-types.d.ts +163 -0
  256. package/lib/models/user-details-types.js +9 -0
  257. package/lib/models/user-details-types.js.map +1 -0
  258. package/lib/models/year-range.d.ts +78 -0
  259. package/lib/models/year-range.js +153 -0
  260. package/lib/models/year-range.js.map +1 -0
  261. package/lib/operations/CompatibilityCheckOperation.d.ts +62 -0
  262. package/lib/operations/CompatibilityCheckOperation.js +102 -0
  263. package/lib/operations/CompatibilityCheckOperation.js.map +1 -0
  264. package/lib/operations/DefinitionCreateOperation.d.ts +411 -0
  265. package/lib/operations/DefinitionCreateOperation.js +1121 -0
  266. package/lib/operations/DefinitionCreateOperation.js.map +1 -0
  267. package/lib/operations/DefinitionExportOperation.d.ts +155 -0
  268. package/lib/operations/DefinitionExportOperation.js +281 -0
  269. package/lib/operations/DefinitionExportOperation.js.map +1 -0
  270. package/lib/operations/DefinitionImportOperation.d.ts +144 -0
  271. package/lib/operations/DefinitionImportOperation.js +357 -0
  272. package/lib/operations/DefinitionImportOperation.js.map +1 -0
  273. package/lib/operations/DefinitionListOperation.d.ts +66 -0
  274. package/lib/operations/DefinitionListOperation.js +108 -0
  275. package/lib/operations/DefinitionListOperation.js.map +1 -0
  276. package/lib/operations/DefinitionPurgeOperation.d.ts +199 -0
  277. package/lib/operations/DefinitionPurgeOperation.js +465 -0
  278. package/lib/operations/DefinitionPurgeOperation.js.map +1 -0
  279. package/lib/operations/DefinitionUpdateOperation.d.ts +78 -0
  280. package/lib/operations/DefinitionUpdateOperation.js +142 -0
  281. package/lib/operations/DefinitionUpdateOperation.js.map +1 -0
  282. package/lib/operations/OrgDetailsOperation.d.ts +253 -0
  283. package/lib/operations/OrgDetailsOperation.js +456 -0
  284. package/lib/operations/OrgDetailsOperation.js.map +1 -0
  285. package/lib/operations/OrgResetOperation.d.ts +114 -0
  286. package/lib/operations/OrgResetOperation.js +209 -0
  287. package/lib/operations/OrgResetOperation.js.map +1 -0
  288. package/lib/operations/ProfileOperation.d.ts +187 -0
  289. package/lib/operations/ProfileOperation.js +373 -0
  290. package/lib/operations/ProfileOperation.js.map +1 -0
  291. package/lib/operations/ProfileRequestCancelOperation.d.ts +59 -0
  292. package/lib/operations/ProfileRequestCancelOperation.js +137 -0
  293. package/lib/operations/ProfileRequestCancelOperation.js.map +1 -0
  294. package/lib/operations/ProfileRequestDeleteOperation.d.ts +64 -0
  295. package/lib/operations/ProfileRequestDeleteOperation.js +134 -0
  296. package/lib/operations/ProfileRequestDeleteOperation.js.map +1 -0
  297. package/lib/operations/ProfileRequestListOperation.d.ts +39 -0
  298. package/lib/operations/ProfileRequestListOperation.js +61 -0
  299. package/lib/operations/ProfileRequestListOperation.js.map +1 -0
  300. package/lib/operations/SummaryPurgeOperation.d.ts +134 -0
  301. package/lib/operations/SummaryPurgeOperation.js +257 -0
  302. package/lib/operations/SummaryPurgeOperation.js.map +1 -0
  303. package/lib/operations/SummaryReprofileOperation.d.ts +88 -0
  304. package/lib/operations/SummaryReprofileOperation.js +174 -0
  305. package/lib/operations/SummaryReprofileOperation.js.map +1 -0
  306. package/lib/operations/SummaryStopOperation.d.ts +87 -0
  307. package/lib/operations/SummaryStopOperation.js +175 -0
  308. package/lib/operations/SummaryStopOperation.js.map +1 -0
  309. package/lib/services/BulkExecutionService.d.ts +120 -0
  310. package/lib/services/BulkExecutionService.js +535 -0
  311. package/lib/services/BulkExecutionService.js.map +1 -0
  312. package/lib/services/CompatibilityService.d.ts +81 -0
  313. package/lib/services/CompatibilityService.js +118 -0
  314. package/lib/services/CompatibilityService.js.map +1 -0
  315. package/lib/services/ConfigureMode.d.ts +85 -0
  316. package/lib/services/ConfigureMode.js +390 -0
  317. package/lib/services/ConfigureMode.js.map +1 -0
  318. package/lib/services/ContactPointService.d.ts +111 -0
  319. package/lib/services/ContactPointService.js +286 -0
  320. package/lib/services/ContactPointService.js.map +1 -0
  321. package/lib/services/DataAvailabilityService.d.ts +81 -0
  322. package/lib/services/DataAvailabilityService.js +128 -0
  323. package/lib/services/DataAvailabilityService.js.map +1 -0
  324. package/lib/services/DefinitionFieldGenerationService.d.ts +309 -0
  325. package/lib/services/DefinitionFieldGenerationService.js +795 -0
  326. package/lib/services/DefinitionFieldGenerationService.js.map +1 -0
  327. package/lib/services/DefinitionQueryBuilder.d.ts +59 -0
  328. package/lib/services/DefinitionQueryBuilder.js +234 -0
  329. package/lib/services/DefinitionQueryBuilder.js.map +1 -0
  330. package/lib/services/ObjectDescribeService.d.ts +436 -0
  331. package/lib/services/ObjectDescribeService.js +869 -0
  332. package/lib/services/ObjectDescribeService.js.map +1 -0
  333. package/lib/services/ObjectFilteringService.d.ts +400 -0
  334. package/lib/services/ObjectFilteringService.js +878 -0
  335. package/lib/services/ObjectFilteringService.js.map +1 -0
  336. package/lib/services/ObjectListCommandService.d.ts +429 -0
  337. package/lib/services/ObjectListCommandService.js +873 -0
  338. package/lib/services/ObjectListCommandService.js.map +1 -0
  339. package/lib/services/ObjectListService.d.ts +201 -0
  340. package/lib/services/ObjectListService.js +345 -0
  341. package/lib/services/ObjectListService.js.map +1 -0
  342. package/lib/services/OrgInfoService.d.ts +485 -0
  343. package/lib/services/OrgInfoService.js +1122 -0
  344. package/lib/services/OrgInfoService.js.map +1 -0
  345. package/lib/services/PollingService.d.ts +105 -0
  346. package/lib/services/PollingService.js +117 -0
  347. package/lib/services/PollingService.js.map +1 -0
  348. package/lib/services/ProfileRequestService.d.ts +186 -0
  349. package/lib/services/ProfileRequestService.js +555 -0
  350. package/lib/services/ProfileRequestService.js.map +1 -0
  351. package/lib/services/ProfilingDefinitionService.d.ts +535 -0
  352. package/lib/services/ProfilingDefinitionService.js +981 -0
  353. package/lib/services/ProfilingDefinitionService.js.map +1 -0
  354. package/lib/services/ProfilingExecutionService.d.ts +122 -0
  355. package/lib/services/ProfilingExecutionService.js +320 -0
  356. package/lib/services/ProfilingExecutionService.js.map +1 -0
  357. package/lib/services/ProfilingSummaryService.d.ts +292 -0
  358. package/lib/services/ProfilingSummaryService.js +685 -0
  359. package/lib/services/ProfilingSummaryService.js.map +1 -0
  360. package/lib/services/RecordTypeService.d.ts +129 -0
  361. package/lib/services/RecordTypeService.js +284 -0
  362. package/lib/services/RecordTypeService.js.map +1 -0
  363. package/lib/services/SFDMUService.d.ts +133 -0
  364. package/lib/services/SFDMUService.js +295 -0
  365. package/lib/services/SFDMUService.js.map +1 -0
  366. package/lib/services/TabDetectionService.d.ts +105 -0
  367. package/lib/services/TabDetectionService.js +206 -0
  368. package/lib/services/TabDetectionService.js.map +1 -0
  369. package/lib/services/UnconfigureMode.d.ts +74 -0
  370. package/lib/services/UnconfigureMode.js +378 -0
  371. package/lib/services/UnconfigureMode.js.map +1 -0
  372. package/lib/services/UserConfigurationService.d.ts +155 -0
  373. package/lib/services/UserConfigurationService.js +573 -0
  374. package/lib/services/UserConfigurationService.js.map +1 -0
  375. package/lib/services/UserConfigurationTypes.d.ts +181 -0
  376. package/lib/services/UserConfigurationTypes.js +14 -0
  377. package/lib/services/UserConfigurationTypes.js.map +1 -0
  378. package/lib/services/UserReadinessService.d.ts +330 -0
  379. package/lib/services/UserReadinessService.js +831 -0
  380. package/lib/services/UserReadinessService.js.map +1 -0
  381. package/lib/services/constants.d.ts +53 -0
  382. package/lib/services/constants.js +71 -0
  383. package/lib/services/constants.js.map +1 -0
  384. package/lib/services/namespace-constants.d.ts +1 -0
  385. package/lib/services/namespace-constants.js +11 -0
  386. package/lib/services/namespace-constants.js.map +1 -0
  387. package/lib/services/validation.d.ts +47 -0
  388. package/lib/services/validation.js +119 -0
  389. package/lib/services/validation.js.map +1 -0
  390. package/lib/utils/batch-processor.d.ts +13 -0
  391. package/lib/utils/batch-processor.js +39 -0
  392. package/lib/utils/batch-processor.js.map +1 -0
  393. package/lib/utils/formatting/availability-grid.d.ts +81 -0
  394. package/lib/utils/formatting/availability-grid.js +94 -0
  395. package/lib/utils/formatting/availability-grid.js.map +1 -0
  396. package/lib/utils/formatting/business-process-grid.d.ts +51 -0
  397. package/lib/utils/formatting/business-process-grid.js +58 -0
  398. package/lib/utils/formatting/business-process-grid.js.map +1 -0
  399. package/lib/utils/formatting/command-display.d.ts +154 -0
  400. package/lib/utils/formatting/command-display.js +154 -0
  401. package/lib/utils/formatting/command-display.js.map +1 -0
  402. package/lib/utils/formatting/definition-create-display.d.ts +118 -0
  403. package/lib/utils/formatting/definition-create-display.js +231 -0
  404. package/lib/utils/formatting/definition-create-display.js.map +1 -0
  405. package/lib/utils/formatting/empty-states.d.ts +35 -0
  406. package/lib/utils/formatting/empty-states.js +70 -0
  407. package/lib/utils/formatting/empty-states.js.map +1 -0
  408. package/lib/utils/formatting/errors.d.ts +33 -0
  409. package/lib/utils/formatting/errors.js +72 -0
  410. package/lib/utils/formatting/errors.js.map +1 -0
  411. package/lib/utils/formatting/field-types.d.ts +32 -0
  412. package/lib/utils/formatting/field-types.js +88 -0
  413. package/lib/utils/formatting/field-types.js.map +1 -0
  414. package/lib/utils/formatting/index.d.ts +29 -0
  415. package/lib/utils/formatting/index.js +28 -0
  416. package/lib/utils/formatting/index.js.map +1 -0
  417. package/lib/utils/formatting/indicators.d.ts +113 -0
  418. package/lib/utils/formatting/indicators.js +161 -0
  419. package/lib/utils/formatting/indicators.js.map +1 -0
  420. package/lib/utils/formatting/loading-messages.d.ts +37 -0
  421. package/lib/utils/formatting/loading-messages.js +50 -0
  422. package/lib/utils/formatting/loading-messages.js.map +1 -0
  423. package/lib/utils/formatting/namespace-display.d.ts +31 -0
  424. package/lib/utils/formatting/namespace-display.js +64 -0
  425. package/lib/utils/formatting/namespace-display.js.map +1 -0
  426. package/lib/utils/formatting/numbers.d.ts +73 -0
  427. package/lib/utils/formatting/numbers.js +187 -0
  428. package/lib/utils/formatting/numbers.js.map +1 -0
  429. package/lib/utils/formatting/object-describe-display.d.ts +114 -0
  430. package/lib/utils/formatting/object-describe-display.js +440 -0
  431. package/lib/utils/formatting/object-describe-display.js.map +1 -0
  432. package/lib/utils/formatting/object-list-display.d.ts +213 -0
  433. package/lib/utils/formatting/object-list-display.js +672 -0
  434. package/lib/utils/formatting/object-list-display.js.map +1 -0
  435. package/lib/utils/formatting/org-identity.d.ts +15 -0
  436. package/lib/utils/formatting/org-identity.js +28 -0
  437. package/lib/utils/formatting/org-identity.js.map +1 -0
  438. package/lib/utils/formatting/record-age-grid.d.ts +41 -0
  439. package/lib/utils/formatting/record-age-grid.js +56 -0
  440. package/lib/utils/formatting/record-age-grid.js.map +1 -0
  441. package/lib/utils/formatting/sections.d.ts +108 -0
  442. package/lib/utils/formatting/sections.js +150 -0
  443. package/lib/utils/formatting/sections.js.map +1 -0
  444. package/lib/utils/formatting/tables.d.ts +90 -0
  445. package/lib/utils/formatting/tables.js +113 -0
  446. package/lib/utils/formatting/tables.js.map +1 -0
  447. package/lib/utils/formatting/user-details-display.d.ts +101 -0
  448. package/lib/utils/formatting/user-details-display.js +425 -0
  449. package/lib/utils/formatting/user-details-display.js.map +1 -0
  450. package/lib/utils/pagination/index.d.ts +11 -0
  451. package/lib/utils/pagination/index.js +18 -0
  452. package/lib/utils/pagination/index.js.map +1 -0
  453. package/lib/utils/pagination/keypress-reader.d.ts +20 -0
  454. package/lib/utils/pagination/keypress-reader.js +63 -0
  455. package/lib/utils/pagination/keypress-reader.js.map +1 -0
  456. package/lib/utils/pagination/paginate-output.d.ts +48 -0
  457. package/lib/utils/pagination/paginate-output.js +136 -0
  458. package/lib/utils/pagination/paginate-output.js.map +1 -0
  459. package/messages/compatibility.check.md +71 -0
  460. package/messages/cuneiform.access.md +138 -0
  461. package/messages/definition.create.md +511 -0
  462. package/messages/definition.export.md +84 -0
  463. package/messages/definition.get.md +147 -0
  464. package/messages/definition.import.md +65 -0
  465. package/messages/definition.list.md +264 -0
  466. package/messages/definition.purge.md +318 -0
  467. package/messages/definition.update.md +118 -0
  468. package/messages/mcp.serve.md +66 -0
  469. package/messages/object.describe.md +201 -0
  470. package/messages/object.list.md +443 -0
  471. package/messages/org.details.md +386 -0
  472. package/messages/org.reset.md +71 -0
  473. package/messages/profile.md +231 -0
  474. package/messages/profile.request.cancel.md +143 -0
  475. package/messages/profile.request.delete.md +139 -0
  476. package/messages/profile.request.list.md +89 -0
  477. package/messages/summary.purge.md +218 -0
  478. package/messages/summary.reprofile.md +150 -0
  479. package/messages/summary.stop.md +157 -0
  480. package/messages/user.details.md +501 -0
  481. package/oclif.lock +2887 -2149
  482. package/oclif.manifest.json +2813 -31
  483. package/package.json +94 -19
  484. package/lib/commands/cuneiform/about.d.ts +0 -13
  485. package/lib/commands/cuneiform/about.js +0 -26
  486. package/lib/commands/cuneiform/about.js.map +0 -1
  487. package/lib/commands/hello/world.d.ts +0 -14
  488. package/lib/commands/hello/world.js +0 -27
  489. package/lib/commands/hello/world.js.map +0 -1
  490. package/lib/index.d.ts +0 -2
  491. package/lib/index.js +0 -2
  492. package/lib/index.js.map +0 -1
  493. package/messages/cuneiform.about.md +0 -19
  494. package/messages/hello.world.md +0 -29
@@ -0,0 +1,113 @@
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
+ /**
9
+ * Table column definition utilities for type-safe oclif table rendering.
10
+ *
11
+ * Provides a `ColumnDef` type for declaring table columns with optional formatters,
12
+ * a `buildColumns` function to convert definitions to oclif's table column format,
13
+ * and pre-built column helpers for common data types.
14
+ *
15
+ * @module utils/formatting/tables
16
+ */
17
+ import { formatNumber } from './numbers.js';
18
+ /**
19
+ * Renders a table with optional per-column alignment.
20
+ *
21
+ * Computes column widths from the widest value in each column (including header),
22
+ * then formats all rows using two-space separators between columns.
23
+ *
24
+ * @param header - Column header labels
25
+ * @param rows - 2D array of string cell values
26
+ * @param align - Per-column alignment ('l' for left, 'r' for right). Defaults to 'l' for unspecified columns.
27
+ * @returns Formatted table string with two-space column separators
28
+ *
29
+ * @example
30
+ * renderAlignedTable(['Name', 'Count'], [['Alpha', '42'], ['Beta', '1,234']], ['l', 'r'])
31
+ * // 'Name Count\nAlpha 42\nBeta 1,234'
32
+ */
33
+ export function renderAlignedTable(header, rows, align = []) {
34
+ const allRows = [header, ...rows];
35
+ const colWidths = header.map((_, colIdx) => Math.max(...allRows.map((row) => (row[colIdx] ?? '').length)));
36
+ const formatRow = (row) => row
37
+ .map((cell, i) => {
38
+ const width = colWidths[i];
39
+ return (align[i] ?? 'l') === 'r' ? cell.padStart(width) : cell.padEnd(width);
40
+ })
41
+ .join(' ');
42
+ return allRows.map(formatRow).join('\n');
43
+ }
44
+ /**
45
+ * Converts an array of `ColumnDef` definitions to oclif's table column format.
46
+ *
47
+ * Strips the `format` property and returns plain `{ key, name }` objects suitable
48
+ * for passing directly to oclif v4's `ux.table()` API.
49
+ *
50
+ * @typeParam T - The row data type
51
+ * @param defs - Array of column definitions
52
+ * @returns Array of `{ key, name }` objects for oclif table rendering
53
+ *
54
+ * @example
55
+ * buildColumns([{ key: 'name', name: 'Object Name' }, { key: 'count', name: 'Records' }])
56
+ */
57
+ export function buildColumns(defs) {
58
+ return defs.map(({ key, name }) => ({ key, name }));
59
+ }
60
+ /**
61
+ * Creates a column definition for numeric values.
62
+ *
63
+ * The returned `ColumnDef` includes a `format` function that applies locale-aware
64
+ * number formatting via `formatNumber()`. Handles null, undefined, NaN, and
65
+ * Infinity by returning '--'.
66
+ *
67
+ * @typeParam T - The row data type
68
+ * @param key - Property key on the row data type
69
+ * @param name - Column header display name
70
+ * @returns A `ColumnDef` with a number formatting function
71
+ *
72
+ * @example
73
+ * type Row = { name: string; recordCount: number };
74
+ * numberColumn<Row>('recordCount', 'Records');
75
+ * // { key: 'recordCount', name: 'Records', format: [Function] }
76
+ */
77
+ export function numberColumn(key, name) {
78
+ return {
79
+ key,
80
+ name,
81
+ format: (value) => formatNumber(value),
82
+ };
83
+ }
84
+ /**
85
+ * Creates a column definition for boolean values.
86
+ *
87
+ * The returned `ColumnDef` includes a `format` function that converts boolean
88
+ * values to 'Yes' or 'No' strings. Non-boolean values (null, undefined, or
89
+ * other types) are rendered as '--'.
90
+ *
91
+ * @typeParam T - The row data type
92
+ * @param key - Property key on the row data type
93
+ * @param name - Column header display name
94
+ * @returns A `ColumnDef` with a boolean formatting function
95
+ *
96
+ * @example
97
+ * type Row = { name: string; isActive: boolean };
98
+ * booleanColumn<Row>('isActive', 'Active');
99
+ * // { key: 'isActive', name: 'Active', format: [Function] }
100
+ */
101
+ export function booleanColumn(key, name) {
102
+ return {
103
+ key,
104
+ name,
105
+ format: (value) => {
106
+ if (typeof value === 'boolean') {
107
+ return value ? 'Yes' : 'No';
108
+ }
109
+ return '--';
110
+ },
111
+ };
112
+ }
113
+ //# sourceMappingURL=tables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tables.js","sourceRoot":"","sources":["../../../src/utils/formatting/tables.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAO5C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAgB,EAAE,IAAgB,EAAE,QAA2B,EAAE;IAClG,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAE3G,MAAM,SAAS,GAAG,CAAC,GAAa,EAAU,EAAE,CAC1C,GAAG;SACA,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QACf,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/E,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEhB,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC;AAoBD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAiC;IAEjC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,YAAY,CAAoC,GAAqB,EAAE,IAAY;IACjG,OAAO;QACL,GAAG;QACH,IAAI;QACJ,MAAM,EAAE,CAAC,KAA0B,EAAE,EAAE,CAAC,YAAY,CAAC,KAAkC,CAAC;KACzF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,aAAa,CAAoC,GAAqB,EAAE,IAAY;IAClG,OAAO;QACL,GAAG;QACH,IAAI;QACJ,MAAM,EAAE,CAAC,KAA0B,EAAU,EAAE;YAC7C,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC/B,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9B,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,101 @@
1
+ import type { UserReadiness } from '../../services/UserReadinessService.js';
2
+ import type { UserInfo } from '../../services/UserReadinessService.js';
3
+ import type { UserDetailsResult, ConfigurationResult, ConfigurationActionResult } from '../../models/user-details-types.js';
4
+ /**
5
+ * Returns a properly pluralized count string (e.g., "1 change", "2 changes", "0 changes").
6
+ */
7
+ export declare function pluralize(count: number, singular: string): string;
8
+ /**
9
+ * Returns a status indicator symbol for configuration actions.
10
+ * checkmark = applied or skipped (desired state achieved), cross = failed, ? = planned
11
+ */
12
+ export declare function actionSymbol(status: 'applied' | 'skipped' | 'failed' | 'planned'): string;
13
+ /**
14
+ * Resolves the message key for a configuration action based on its type and status.
15
+ */
16
+ export declare function resolveActionMessageKey(action: ConfigurationActionResult, isDryRun: boolean): {
17
+ key: string;
18
+ args: string[];
19
+ };
20
+ /**
21
+ * Displays the full human-readable output for the user details command.
22
+ *
23
+ * Orchestrates all display sub-sections: contextual header, org context,
24
+ * user identity, prerequisites, readiness status, resolution guidance,
25
+ * configuration actions, and next steps.
26
+ *
27
+ * @param log - The logging function (typically `this.log.bind(this)`)
28
+ * @param userInfo - The authenticated user information
29
+ * @param readiness - The user readiness assessment from the service
30
+ * @param result - The fully built command result
31
+ */
32
+ export declare function displayOutput(log: (msg: string) => void, userInfo: UserInfo, readiness: UserReadiness, result: UserDetailsResult): void;
33
+ /**
34
+ * Displays the readiness status section (permission sets, config profile, warnings).
35
+ *
36
+ * @param log - The logging function
37
+ * @param result - The command result
38
+ * @param readiness - The readiness data from the service
39
+ */
40
+ export declare function displayReadinessStatus(log: (msg: string) => void, result: UserDetailsResult, readiness: UserReadiness): void;
41
+ /**
42
+ * Displays the prerequisites section.
43
+ *
44
+ * @param log - The logging function
45
+ * @param result - The command result
46
+ */
47
+ export declare function displayPrerequisites(log: (msg: string) => void, result: UserDetailsResult): void;
48
+ /**
49
+ * Displays configuration actions taken or planned.
50
+ *
51
+ * @param log - The logging function
52
+ * @param config - The configuration result
53
+ * @param isReady - Whether the user is ready after configuration
54
+ */
55
+ export declare function displayConfigurationActions(log: (msg: string) => void, config: ConfigurationResult, isReady: boolean): void;
56
+ /**
57
+ * Displays action failure warnings as indented bullets under the Readiness section.
58
+ *
59
+ * @param log - The logging function
60
+ * @param configuration - The configuration result (may be undefined)
61
+ */
62
+ export declare function displayActionWarnings(log: (msg: string) => void, configuration: ConfigurationResult | undefined): void;
63
+ /**
64
+ * Displays ready confirmation message based on readiness and configuration state.
65
+ *
66
+ * @param log - The logging function
67
+ * @param readiness - The readiness data from the service
68
+ * @param result - The command result
69
+ * @param username - The authenticated username
70
+ */
71
+ export declare function displayReadyConfirmation(log: (msg: string) => void, readiness: UserReadiness, result: UserDetailsResult, username: string): void;
72
+ /**
73
+ * Displays next-step commands after a successful readiness check or configure.
74
+ *
75
+ * @param log - The logging function
76
+ * @param username - The authenticated username
77
+ */
78
+ export declare function displayNextSteps(log: (msg: string) => void, username: string): void;
79
+ /**
80
+ * Displays structured "Next steps:" for the not-ready diagnostic state.
81
+ * Conditionally suppresses configure CTA when Admin PS is not assigned.
82
+ *
83
+ * @param log - The logging function
84
+ * @param result - The command result
85
+ * @param username - The authenticated username
86
+ */
87
+ export declare function displayNotReadyNextSteps(log: (msg: string) => void, result: UserDetailsResult, username: string): void;
88
+ /**
89
+ * Displays structured "Next steps:" after configure partial failure.
90
+ *
91
+ * @param log - The logging function
92
+ * @param username - The authenticated username
93
+ */
94
+ export declare function displayRetryNextSteps(log: (msg: string) => void, username: string): void;
95
+ /**
96
+ * Displays structured "Next steps:" after unconfigure success.
97
+ *
98
+ * @param log - The logging function
99
+ * @param username - The authenticated username
100
+ */
101
+ export declare function displayUnconfigureNextSteps(log: (msg: string) => void, username: string): void;
@@ -0,0 +1,425 @@
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
+ /**
9
+ * Display formatting functions for the `sf cuneiform user details` command.
10
+ *
11
+ * Extracted from the command class to keep the command as a thin orchestration
12
+ * shell. All functions are pure (no `this` references) and accept a `log`
13
+ * callback for output. Functions compose primitives from the shared formatting
14
+ * barrel (`utils/formatting/index.ts`).
15
+ *
16
+ * @module utils/formatting/user-details-display
17
+ */
18
+ import { Messages } from '@salesforce/core';
19
+ import { sectionHeader, keyValue, booleanDisplay, renderSummaryBox, renderOrgContext, renderContextualHeader, } from './index.js';
20
+ /**
21
+ * Lazily loads messages for the user.details command.
22
+ * Using a getter to avoid module-level side effects.
23
+ */
24
+ function getMessages() {
25
+ return Messages.loadMessages('@peernova/cuneiform-sf', 'user.details');
26
+ }
27
+ /**
28
+ * Returns a properly pluralized count string (e.g., "1 change", "2 changes", "0 changes").
29
+ */
30
+ export function pluralize(count, singular) {
31
+ return count === 1 ? `${count} ${singular}` : `${count} ${singular}s`;
32
+ }
33
+ /**
34
+ * Returns a status indicator symbol for configuration actions.
35
+ * checkmark = applied or skipped (desired state achieved), cross = failed, ? = planned
36
+ */
37
+ export function actionSymbol(status) {
38
+ switch (status) {
39
+ case 'applied':
40
+ case 'skipped':
41
+ return '✓';
42
+ case 'failed':
43
+ return '✗';
44
+ case 'planned':
45
+ return '?';
46
+ }
47
+ }
48
+ /**
49
+ * Resolves the message key for a configuration action based on its type and status.
50
+ */
51
+ export function resolveActionMessageKey(action, isDryRun) {
52
+ const label = action.targetLabel;
53
+ switch (action.type) {
54
+ case 'assignPermissionSet': {
55
+ const key = isDryRun ? 'wouldAssign' : action.status === 'skipped' ? 'alreadyAssigned' : 'assign';
56
+ return { key: `output.action.${key}`, args: [label] };
57
+ }
58
+ case 'enableApiOnlyProfiling': {
59
+ const key = isDryRun ? 'wouldEnable' : action.status === 'skipped' ? 'alreadyEnabled' : 'enable';
60
+ return { key: `output.action.${key}`, args: [] };
61
+ }
62
+ case 'unassignPermissionSet': {
63
+ const key = action.status === 'skipped' ? 'alreadyUnassigned' : 'unassign';
64
+ return { key: `output.action.${key}`, args: [label] };
65
+ }
66
+ case 'disableApiOnlyProfiling': {
67
+ const key = action.status === 'skipped' ? 'alreadyDisabled' : 'disable';
68
+ return { key: `output.action.${key}`, args: [] };
69
+ }
70
+ }
71
+ }
72
+ /**
73
+ * Displays the full human-readable output for the user details command.
74
+ *
75
+ * Orchestrates all display sub-sections: contextual header, org context,
76
+ * user identity, prerequisites, readiness status, resolution guidance,
77
+ * configuration actions, and next steps.
78
+ *
79
+ * @param log - The logging function (typically `this.log.bind(this)`)
80
+ * @param userInfo - The authenticated user information
81
+ * @param readiness - The user readiness assessment from the service
82
+ * @param result - The fully built command result
83
+ */
84
+ export function displayOutput(log, userInfo, readiness, result) {
85
+ const messages = getMessages();
86
+ // Contextual Header
87
+ log('');
88
+ const orgNameForHeader = result.orgContext.orgName !== '(unknown)' ? result.orgContext.orgName : undefined;
89
+ log(renderContextualHeader({
90
+ commandTitle: messages.getMessage('output.headerTitle'),
91
+ username: userInfo.username,
92
+ orgName: orgNameForHeader,
93
+ }));
94
+ // Org Context Section (only if org identity was retrieved)
95
+ if (result.orgContext.orgId !== '(unknown)') {
96
+ log('');
97
+ log(renderOrgContext({
98
+ orgName: result.orgContext.orgName,
99
+ orgId: result.orgContext.orgId,
100
+ instanceUrl: result.orgContext.instanceUrl,
101
+ isSandbox: result.orgContext.isSandbox,
102
+ }));
103
+ }
104
+ // User Identity Section
105
+ log('');
106
+ log(renderSummaryBox({
107
+ title: messages.getMessage('output.userIdentity.title'),
108
+ entries: [
109
+ { key: messages.getMessage('output.userIdentity.id'), value: userInfo.id },
110
+ { key: messages.getMessage('output.userIdentity.username'), value: userInfo.username },
111
+ { key: messages.getMessage('output.userIdentity.email'), value: userInfo.email },
112
+ { key: messages.getMessage('output.userIdentity.profile'), value: userInfo.profileName },
113
+ {
114
+ key: messages.getMessage('output.userIdentity.role'),
115
+ value: userInfo.roleName ?? messages.getMessage('output.userIdentity.noRole'),
116
+ },
117
+ ],
118
+ }));
119
+ // Prerequisites Section
120
+ displayPrerequisites(log, result);
121
+ // Readiness Status Section
122
+ displayReadinessStatus(log, result, readiness);
123
+ // Resolution Guidance Section (only if not ready)
124
+ if (result.resolutionGuidance.length > 0) {
125
+ log('');
126
+ log(sectionHeader(messages.getMessage('output.guidance.header')));
127
+ for (const item of result.resolutionGuidance) {
128
+ log(` • ${item.issue}`);
129
+ if (item.detail) {
130
+ for (const line of item.detail) {
131
+ log(` - ${line}`);
132
+ }
133
+ }
134
+ log(` ${item.action}`);
135
+ }
136
+ // Add structured "Next steps:" when not ready and not already configuring
137
+ if (!result.configuration && result.prerequisites.cuneiformInstalled) {
138
+ displayNotReadyNextSteps(log, result, userInfo.username);
139
+ }
140
+ }
141
+ // Configuration Actions Section (only if --configure was used)
142
+ if (result.configuration) {
143
+ displayConfigurationActions(log, result.configuration, readiness.isReady);
144
+ }
145
+ // Ready confirmation
146
+ displayReadyConfirmation(log, readiness, result, userInfo.username);
147
+ log('');
148
+ }
149
+ /**
150
+ * Displays the readiness status section (permission sets, config profile, warnings).
151
+ *
152
+ * @param log - The logging function
153
+ * @param result - The command result
154
+ * @param readiness - The readiness data from the service
155
+ */
156
+ export function displayReadinessStatus(log, result, readiness) {
157
+ const messages = getMessages();
158
+ log('');
159
+ log(sectionHeader(messages.getMessage('output.readiness.header')));
160
+ if (!result.prerequisites.cuneiformInstalled) {
161
+ log(keyValue(messages.getMessage('output.readiness.status'), messages.getMessage('output.readiness.notInstalled')));
162
+ log(keyValue(messages.getMessage('output.readiness.detail'), messages.getMessage('guidance.cuneiformNotInstalled')));
163
+ }
164
+ else {
165
+ const statusLabel = readiness.isReady
166
+ ? messages.getMessage('output.readiness.ready')
167
+ : messages.getMessage('output.readiness.notReady');
168
+ log(keyValue(messages.getMessage('output.readiness.status'), statusLabel));
169
+ // Permission Sets
170
+ log('');
171
+ log(` ${messages.getMessage('output.readiness.permissionSets')}`);
172
+ for (const ps of result.readiness.permissionSets) {
173
+ const symbol = booleanDisplay(ps.isAssigned, { style: 'symbol' });
174
+ const displayName = ps.label ?? ps.apiName;
175
+ log(` ${symbol} ${displayName}`);
176
+ }
177
+ // Configuration Profile
178
+ log('');
179
+ if (result.readiness.configProfile.isConfigured) {
180
+ const profileLabel = result.readiness.configProfile.profileLabel ?? messages.getMessage('output.readiness.unknown');
181
+ log(` ${messages.getMessage('output.readiness.configProfile', [profileLabel])}`);
182
+ const profilingSymbol = booleanDisplay(result.readiness.configProfile.apiOnlyProfilingEnabled ?? false, {
183
+ style: 'symbol',
184
+ });
185
+ log(` ${profilingSymbol} ${messages.getMessage('output.readiness.globalProfiling')}`);
186
+ // Only show self-registration status when the Admin PS prerequisite is met
187
+ const hasAdminPS = result.readiness.permissionSets.some((ps) => ps.apiName.includes('PRO_Administrative_User') && ps.isAssigned);
188
+ if (hasAdminPS) {
189
+ const selfRegSymbol = booleanDisplay(result.readiness.configProfile.selfRegistrationEnabled ?? false, {
190
+ style: 'symbol',
191
+ });
192
+ log(` ${selfRegSymbol} ${messages.getMessage('output.readiness.selfRegistration')}`);
193
+ }
194
+ }
195
+ else {
196
+ log(` ${messages.getMessage('output.readiness.configProfile', [messages.getMessage('output.readiness.unknown')])}`);
197
+ log(` ${messages.getMessage('output.readiness.noActiveProfile')}`);
198
+ }
199
+ displayActionWarnings(log, result.configuration);
200
+ }
201
+ }
202
+ /**
203
+ * Displays the prerequisites section.
204
+ *
205
+ * @param log - The logging function
206
+ * @param result - The command result
207
+ */
208
+ export function displayPrerequisites(log, result) {
209
+ const messages = getMessages();
210
+ log('');
211
+ log(sectionHeader(messages.getMessage('prerequisites.header')));
212
+ log('');
213
+ if (result.prerequisites.cuneiformInstalled) {
214
+ log(` ${booleanDisplay(true, { style: 'symbol' })} ${messages.getMessage('prerequisites.cuneiformInstalled')}`);
215
+ }
216
+ else {
217
+ log(` ${booleanDisplay(false, { style: 'symbol' })} ${messages.getMessage('prerequisites.cuneiformNotInstalled')}`);
218
+ log(` ${messages.getMessage('prerequisites.cuneiformInstallUrl')}`);
219
+ }
220
+ if (!result.prerequisites.cuneiformInstalled) {
221
+ return;
222
+ }
223
+ if (result.prerequisites.adminAccessAssigned) {
224
+ log(` ${booleanDisplay(true, { style: 'symbol' })} ${messages.getMessage('prerequisites.adminAccess')}`);
225
+ }
226
+ else {
227
+ log(` ${booleanDisplay(false, { style: 'symbol' })} ${messages.getMessage('prerequisites.adminNoAccess')}`);
228
+ log(` ${messages.getMessage('prerequisites.adminRemediation')}`);
229
+ }
230
+ }
231
+ /**
232
+ * Displays configuration actions taken or planned.
233
+ *
234
+ * @param log - The logging function
235
+ * @param config - The configuration result
236
+ * @param isReady - Whether the user is ready after configuration
237
+ */
238
+ export function displayConfigurationActions(log, config, isReady) {
239
+ const messages = getMessages();
240
+ log('');
241
+ const headerKey = config.dryRun ? 'info.plannedActions' : 'info.completedActions';
242
+ log(sectionHeader(messages.getMessage(headerKey)));
243
+ for (const action of config.actions) {
244
+ const symbol = actionSymbol(action.status);
245
+ const { key, args } = resolveActionMessageKey(action, config.dryRun);
246
+ log(` ${symbol} ${messages.getMessage(key, args)}`);
247
+ }
248
+ // Idempotent messaging and proper pluralization
249
+ const isUnconfigure = config.actions.some((a) => a.type === 'unassignPermissionSet' || a.type === 'disableApiOnlyProfiling');
250
+ const changeCount = config.dryRun ? config.summary.changesRequired : config.summary.changesApplied;
251
+ log('');
252
+ if (!config.dryRun && changeCount === 0 && !isReady) {
253
+ // Nothing was changed and user still isn't ready — show actionable bullets
254
+ log(` • ${messages.getMessage('info.userConfigureIncomplete')}`);
255
+ log(` • ${messages.getMessage('info.userConfigureIncompleteAction')}`);
256
+ }
257
+ else if (!config.dryRun && changeCount === 0) {
258
+ // Nothing was changed but user IS ready — idempotent success
259
+ log(` • ${messages.getMessage(isUnconfigure ? 'info.alreadyUnconfiguredSummary' : 'info.alreadyConfiguredSummary')}`);
260
+ }
261
+ else if (!config.dryRun && config.summary.changesFailed > 0) {
262
+ // Partial failure: no summary line — markers on each action already communicate success/failure
263
+ }
264
+ else {
265
+ // Full success or dry-run
266
+ const summaryKey = config.dryRun
267
+ ? 'info.dryRunSummary'
268
+ : isUnconfigure
269
+ ? 'info.unconfigureComplete'
270
+ : 'info.configurationComplete';
271
+ log(` • ${messages.getMessage(summaryKey, [pluralize(changeCount, 'change')])}`);
272
+ }
273
+ if (config.deploymentJobId) {
274
+ log(` ${messages.getMessage('output.jobIdSuffix', [config.deploymentJobId])}`);
275
+ }
276
+ }
277
+ /**
278
+ * Displays action failure warnings as indented bullets under the Readiness section.
279
+ *
280
+ * @param log - The logging function
281
+ * @param configuration - The configuration result (may be undefined)
282
+ */
283
+ export function displayActionWarnings(log, configuration) {
284
+ if (!configuration)
285
+ return;
286
+ const messages = getMessages();
287
+ const warnings = configuration.actions.filter((a) => a.status === 'failed' && a.message).map((a) => a.message);
288
+ if (warnings.length === 0)
289
+ return;
290
+ log('');
291
+ log(` ${messages.getMessage('output.readiness.warnings')}`);
292
+ for (const warning of warnings) {
293
+ log(` • ${warning}`);
294
+ }
295
+ }
296
+ /**
297
+ * Displays ready confirmation message based on readiness and configuration state.
298
+ *
299
+ * @param log - The logging function
300
+ * @param readiness - The readiness data from the service
301
+ * @param result - The command result
302
+ * @param username - The authenticated username
303
+ */
304
+ export function displayReadyConfirmation(log, readiness, result, username) {
305
+ const messages = getMessages();
306
+ if (result.configuration && !result.configuration.dryRun && result.readiness.isReady) {
307
+ log('');
308
+ // Use present-tense "is ready" when no changes were applied (already configured);
309
+ // use past-tense "is now ready" when changes were actually applied
310
+ const readyMessage = result.configuration.summary.changesApplied > 0 ? 'info.userConfigured' : 'info.userReady';
311
+ log(messages.getMessage(readyMessage));
312
+ // Next steps after successful configure
313
+ displayNextSteps(log, username);
314
+ }
315
+ else if (result.configuration && !result.configuration.dryRun && !result.readiness.isReady) {
316
+ const wasUnconfigure = result.configuration.actions.some((a) => a.type === 'unassignPermissionSet' || a.type === 'disableApiOnlyProfiling');
317
+ // Only show the end-state text when changes were actually attempted
318
+ if (wasUnconfigure ||
319
+ result.configuration.summary.changesApplied > 0 ||
320
+ result.configuration.summary.changesFailed > 0) {
321
+ log('');
322
+ if (wasUnconfigure) {
323
+ log(messages.getMessage('info.userUnconfigured'));
324
+ }
325
+ else {
326
+ log(` • ${messages.getMessage('info.userConfigureIncomplete')}`);
327
+ log(` • ${messages.getMessage('info.userConfigureIncompleteAction')}`);
328
+ }
329
+ }
330
+ // Structured "Next steps:" — context-aware
331
+ if (wasUnconfigure) {
332
+ displayUnconfigureNextSteps(log, username);
333
+ }
334
+ else {
335
+ displayRetryNextSteps(log, username);
336
+ }
337
+ }
338
+ else if (result.configuration && result.configuration.dryRun && result.configuration.summary.changesRequired > 0) {
339
+ log('');
340
+ log(messages.getMessage('info.userWouldBeReady'));
341
+ }
342
+ else if (!result.configuration && readiness.isReady && result.resolutionGuidance.length === 0) {
343
+ log('');
344
+ log(messages.getMessage('info.userReady'));
345
+ displayNextSteps(log, username);
346
+ }
347
+ }
348
+ /**
349
+ * Displays next-step commands after a successful readiness check or configure.
350
+ *
351
+ * @param log - The logging function
352
+ * @param username - The authenticated username
353
+ */
354
+ export function displayNextSteps(log, username) {
355
+ const messages = getMessages();
356
+ log('');
357
+ log(messages.getMessage('info.nextSteps'));
358
+ log('');
359
+ log(` ${messages.getMessage('info.nextStepsOrgDetailsLabel')}`);
360
+ log(` ${messages.getMessage('info.nextStepsOrgDetails', [username])}`);
361
+ log('');
362
+ log(` ${messages.getMessage('info.nextStepsObjectListLabel')}`);
363
+ log(` ${messages.getMessage('info.nextStepsObjectList', [username])}`);
364
+ log('');
365
+ log(` ${messages.getMessage('info.nextStepsObjectDescribeLabel')}`);
366
+ log(` ${messages.getMessage('info.nextStepsObjectDescribe')}`);
367
+ log('');
368
+ log(` ${messages.getMessage('info.nextStepsDefinitionCreateLabel')}`);
369
+ log(` ${messages.getMessage('info.nextStepsDefinitionCreate')}`);
370
+ }
371
+ /**
372
+ * Displays structured "Next steps:" for the not-ready diagnostic state.
373
+ * Conditionally suppresses configure CTA when Admin PS is not assigned.
374
+ *
375
+ * @param log - The logging function
376
+ * @param result - The command result
377
+ * @param username - The authenticated username
378
+ */
379
+ export function displayNotReadyNextSteps(log, result, username) {
380
+ const messages = getMessages();
381
+ const hasAdminPS = result.readiness.permissionSets.some((ps) => ps.apiName.includes('PRO_Administrative_User') && ps.isAssigned);
382
+ log('');
383
+ log(messages.getMessage('info.nextSteps'));
384
+ if (hasAdminPS) {
385
+ log('');
386
+ log(` ${messages.getMessage('info.nextStepsPreviewLabel')}`);
387
+ log(` ${messages.getMessage('info.nextStepsPreview', [username])}`);
388
+ log('');
389
+ log(` ${messages.getMessage('info.nextStepsConfigureLabel')}`);
390
+ log(` ${messages.getMessage('info.nextStepsConfigure', [username])}`);
391
+ }
392
+ else {
393
+ log('');
394
+ log(` ${messages.getMessage('info.nextStepsContactAdmin')}`);
395
+ }
396
+ }
397
+ /**
398
+ * Displays structured "Next steps:" after configure partial failure.
399
+ *
400
+ * @param log - The logging function
401
+ * @param username - The authenticated username
402
+ */
403
+ export function displayRetryNextSteps(log, username) {
404
+ const messages = getMessages();
405
+ log('');
406
+ log(messages.getMessage('info.nextSteps'));
407
+ log('');
408
+ log(` ${messages.getMessage('info.nextStepsRetryLabel')}`);
409
+ log(` ${messages.getMessage('info.nextStepsConfigure', [username])}`);
410
+ }
411
+ /**
412
+ * Displays structured "Next steps:" after unconfigure success.
413
+ *
414
+ * @param log - The logging function
415
+ * @param username - The authenticated username
416
+ */
417
+ export function displayUnconfigureNextSteps(log, username) {
418
+ const messages = getMessages();
419
+ log('');
420
+ log(messages.getMessage('info.nextSteps'));
421
+ log('');
422
+ log(` ${messages.getMessage('info.nextStepsReconfigureLabel')}`);
423
+ log(` ${messages.getMessage('info.nextStepsConfigure', [username])}`);
424
+ }
425
+ //# sourceMappingURL=user-details-display.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-details-display.js","sourceRoot":"","sources":["../../../src/utils/formatting/user-details-display.ts"],"names":[],"mappings":"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"}