@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,326 @@
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 { SfCommand } from '@salesforce/sf-plugins-core';
9
+ import { Messages, SfError } from '@salesforce/core';
10
+ import { createConnectionFacade } from '../adapters/connection-facade.js';
11
+ import { SoqlQueryAdapter } from '../adapters/soql/soql-query-adapter.js';
12
+ import { RestApiAdapter } from '../adapters/rest/rest-api-adapter.js';
13
+ import { ToolingApiAdapter } from '../adapters/tooling/tooling-api-adapter.js';
14
+ import { UserReadinessService } from '../services/UserReadinessService.js';
15
+ import { ServiceErrorCodes } from '../adapters/errors.js';
16
+ Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
17
+ const accessMessages = Messages.loadMessages('@peernova/cuneiform-sf', 'cuneiform.access');
18
+ /**
19
+ * Creates the standard adapter stack from a connection facade.
20
+ *
21
+ * Single source of truth for adapter instantiation. All commands, operations,
22
+ * and MCP tools should use this instead of constructing adapters inline.
23
+ *
24
+ * @param facade - The connection facade for the target org
25
+ * @returns Object containing all three adapter instances
26
+ */
27
+ export function createAdapterStack(facade) {
28
+ return {
29
+ soqlAdapter: new SoqlQueryAdapter(facade),
30
+ restAdapter: new RestApiAdapter(facade),
31
+ toolingAdapter: new ToolingApiAdapter(facade),
32
+ };
33
+ }
34
+ /**
35
+ * Abstract base class for all Cuneiform CLI commands.
36
+ *
37
+ * Provides a shared access gate that validates the authenticated user has
38
+ * the required Cuneiform permission sets and that Global Profiling is enabled
39
+ * before allowing command execution.
40
+ *
41
+ * Subclasses call `this.enforceAccessGate(facade)` at the start of their
42
+ * `run()` method after obtaining the connection facade. Commands that should
43
+ * bypass the gate (e.g., `user details`, which IS the diagnostic tool) simply
44
+ * omit the `enforceAccessGate()` call.
45
+ *
46
+ * The `skipAccessGate` static property is used by the UX snapshot test
47
+ * harness to auto-stub the gate for non-access-gate test scenarios.
48
+ *
49
+ * @template T The command result type
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * export default class MyCommand extends CuneiformCommand<MyResult> {
54
+ * public async run(): Promise<MyResult> {
55
+ * const { flags } = await this.parse(MyCommand);
56
+ * const { facade, soqlAdapter, restAdapter } = await this.initConnection(flags);
57
+ *
58
+ * // Business logic follows — adapters and access gate already handled
59
+ * const service = new MyService({ soqlAdapter, restAdapter });
60
+ * }
61
+ * }
62
+ * ```
63
+ */
64
+ // eslint-disable-next-line sf-plugin/command-summary, sf-plugin/command-example -- abstract base class has no summary or examples; subclasses provide these
65
+ export class CuneiformCommand extends SfCommand {
66
+ /**
67
+ * Set to `true` in subclasses that should bypass the access gate.
68
+ * Example: `user details` is exempt because it IS the diagnostic tool.
69
+ */
70
+ static skipAccessGate = false;
71
+ /**
72
+ * Resolves an error code to an i18n message using a command-specific error code map.
73
+ *
74
+ * Looks up the error code in the provided map, retrieves the corresponding i18n
75
+ * message, and returns it. If the message contains a `%s` placeholder, interpolates
76
+ * the fallback string. Messages with `%d` placeholders return the fallback directly
77
+ * since numeric interpolation requires context the caller must provide.
78
+ *
79
+ * Returns the fallback directly when errorCode is undefined or not in the map.
80
+ *
81
+ * @param errorCodeMap - Command-specific mapping of error codes to message bundle keys
82
+ * @param errorCode - The error code from the operation result
83
+ * @param fallback - The pre-formatted message from the operation layer
84
+ * @param msgs - The command's Messages instance for i18n lookup
85
+ * @returns The resolved user-facing error message
86
+ */
87
+ static resolveErrorMessage(errorCodeMap, errorCode, fallback, msgs) {
88
+ if (!errorCode || !(errorCode in errorCodeMap))
89
+ return fallback;
90
+ try {
91
+ const messageKey = errorCodeMap[errorCode];
92
+ const i18nMessage = msgs.getMessage(messageKey);
93
+ if (i18nMessage.includes('%s'))
94
+ return msgs.getMessage(messageKey, [fallback]);
95
+ if (i18nMessage.includes('%d'))
96
+ return fallback;
97
+ return i18nMessage;
98
+ }
99
+ catch {
100
+ return fallback;
101
+ }
102
+ }
103
+ /**
104
+ * Normalizes a multi-value string flag: splits on commas, trims whitespace, and
105
+ * deduplicates. Used by commands that accept comma-separated values in flags
106
+ * (e.g., `--request-ids`, `--definition-names`).
107
+ *
108
+ * @param raw - The raw flag value array from oclif flag parsing
109
+ * @param options - Optional configuration
110
+ * @param options.caseInsensitive - When true, deduplicates case-insensitively while preserving the casing of the first occurrence
111
+ * @returns Deduplicated array of trimmed values, or undefined if input is empty
112
+ */
113
+ static parseMultiValueFlag(raw, options) {
114
+ if (!raw || raw.length === 0)
115
+ return undefined;
116
+ const caseInsensitive = options?.caseInsensitive ?? false;
117
+ const seen = new Set();
118
+ const parsed = raw
119
+ .flatMap((v) => v.split(','))
120
+ .map((v) => v.trim())
121
+ .filter((v) => {
122
+ if (v.length === 0)
123
+ return false;
124
+ const key = caseInsensitive ? v.toLowerCase() : v;
125
+ if (seen.has(key))
126
+ return false;
127
+ seen.add(key);
128
+ return true;
129
+ });
130
+ return parsed.length === 0 ? undefined : parsed;
131
+ }
132
+ /**
133
+ * Resolves the user-facing error message for an access gate failure.
134
+ *
135
+ * Maps service error codes to message bundle keys for actionable
136
+ * error messages that guide the user toward resolution.
137
+ */
138
+ static resolveAccessGateMessage(errorCode, serviceMessage) {
139
+ switch (errorCode) {
140
+ case ServiceErrorCodes.FEATURE_NOT_ENABLED:
141
+ return accessMessages.getMessage('error.featureNotEnabled');
142
+ case ServiceErrorCodes.PROFILING_ACCESS_DENIED:
143
+ return accessMessages.getMessage('error.profilingAccessDenied');
144
+ case ServiceErrorCodes.GLOBAL_PROFILING_NOT_ENABLED:
145
+ return accessMessages.getMessage('error.globalProfilingNotEnabled');
146
+ case ServiceErrorCodes.SELF_REGISTRATION_NOT_ENABLED:
147
+ return accessMessages.getMessage('error.selfRegistrationNotEnabled');
148
+ case ServiceErrorCodes.USER_CUNEIFORM_NAMESPACE_NOT_FOUND:
149
+ return accessMessages.getMessage('error.cuneiformNotInstalled');
150
+ default:
151
+ return accessMessages.getMessage('error.accessCheckFailed', [serviceMessage]);
152
+ }
153
+ }
154
+ /**
155
+ * Sanitizes JSON output by stripping stack traces and error causes.
156
+ *
157
+ * Prevents exposing Node.js stack traces and absolute filesystem paths
158
+ * in `--json` error output. Success JSON output is unaffected since it
159
+ * never contains `stack` or `cause` properties.
160
+ */
161
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- oclif logJson signature uses AnyJson | unknown
162
+ logJson(json) {
163
+ if (json && typeof json === 'object') {
164
+ const sanitized = { ...json };
165
+ delete sanitized.stack;
166
+ delete sanitized.cause;
167
+ super.logJson(sanitized);
168
+ return;
169
+ }
170
+ super.logJson(json);
171
+ }
172
+ /**
173
+ * Intercepts oclif parse errors to fix misleading "Try this" suggestions for
174
+ * boolean flags declared with `allowNo: true` (CLI-3379).
175
+ *
176
+ * When a user passes a value to a boolean flag (e.g., `--skip-empty false`),
177
+ * oclif rejects the value as an unexpected argument and upstream
178
+ * `SfCommandError.appendErrorSuggestions` produces a misleading suggestion
179
+ * like `--skip-empty "--skip-empty false"` — the result of two upstream bugs:
180
+ * (1) `k.input` is wrongly prepended to args; (2) the suggestion logic has no
181
+ * awareness of `--[no-]` boolean flags.
182
+ *
183
+ * This override pre-processes the raw parse-output token stream BEFORE
184
+ * delegating to `super.catch`. For each FlagToken→ArgToken pair where the
185
+ * flag is a boolean with `allowNo: true`, it always splices the ArgToken out
186
+ * of `error.parse.output.raw` (suppressing upstream's buggy suggestion), and
187
+ * — only when the arg is a recognized boolean literal (true/false/yes/no/1/0)
188
+ * — also pushes the corrected `--no-<flag>` or `--<flag>` onto `error.actions`.
189
+ *
190
+ * Unrecognized values (e.g., `--skip-empty bogus`) get the silent splice
191
+ * (no fabricated suggestion, no misleading upstream output). Non-boolean
192
+ * flags and booleans without `allowNo` are left untouched.
193
+ */
194
+ async catch(error) {
195
+ rewriteBooleanFlagSuggestion(error, this.constructor);
196
+ return super.catch(error);
197
+ }
198
+ /**
199
+ * Enforces the Cuneiform profiling access gate.
200
+ *
201
+ * Validates that the authenticated user has:
202
+ * 1. Cuneiform for Salesforce installed in the org
203
+ * 2. Required permission sets assigned
204
+ * 3. Global Profiling enabled
205
+ *
206
+ * Throws an SfError with an actionable, user-friendly error message
207
+ * from the `cuneiform.access` message bundle if any check fails.
208
+ *
209
+ * @param facade - The connection facade for the target org
210
+ * @throws {SfError} If the user cannot use Cuneiform commands
211
+ */
212
+ // eslint-disable-next-line class-methods-use-this -- instance method so subclasses can call this.enforceAccessGate()
213
+ async enforceAccessGate(facade) {
214
+ let userId;
215
+ try {
216
+ const identity = await facade.identity();
217
+ userId = identity.user_id;
218
+ }
219
+ catch (error) {
220
+ const detail = error instanceof Error ? error.message : String(error);
221
+ const sfError = new SfError(accessMessages.getMessage('error.connectionFailed', [detail]));
222
+ sfError.code = 'E2001';
223
+ throw sfError;
224
+ }
225
+ // Gate 0: Check feature status via ISV REST endpoint
226
+ const { restAdapter, soqlAdapter } = createAdapterStack(facade);
227
+ const service = new UserReadinessService({ soqlAdapter });
228
+ const featureResult = await service.checkFeatureStatus(restAdapter);
229
+ if (featureResult.success && !featureResult.data.featureEnabled) {
230
+ const message = CuneiformCommand.resolveAccessGateMessage(ServiceErrorCodes.FEATURE_NOT_ENABLED, '');
231
+ const sfError = new SfError(message);
232
+ sfError.code = ServiceErrorCodes.FEATURE_NOT_ENABLED;
233
+ throw sfError;
234
+ }
235
+ // If the feature status check fails (non-404), log warning but don't block (graceful degradation)
236
+ // Gates 1-3: Validate profiling access (installed, permissions, global profiling)
237
+ const result = await service.validateProfilingAccess(userId);
238
+ if (!result.success) {
239
+ const errorCode = result.errorCode ?? ServiceErrorCodes.USER_READINESS_QUERY_FAILED;
240
+ const message = CuneiformCommand.resolveAccessGateMessage(errorCode, result.message ?? '');
241
+ const sfError = new SfError(message);
242
+ sfError.code = errorCode;
243
+ throw sfError;
244
+ }
245
+ }
246
+ /**
247
+ * Initializes the connection facade and standard adapters for a command.
248
+ *
249
+ * Encapsulates the common 5-line boilerplate shared by 16 of 18 commands:
250
+ * get connection, create facade, enforce access gate, create adapters.
251
+ *
252
+ * Commands that bypass the access gate (e.g., `user details` with
253
+ * `skipAccessGate = true`) will skip the gate check automatically.
254
+ *
255
+ * @param flags - The parsed command flags containing target-org and api-version
256
+ * @returns Connection context with facade and pre-built adapters
257
+ * @throws {SfError} If the access gate check fails
258
+ */
259
+ async initConnection(flags) {
260
+ const connection = flags['target-org'].getConnection(flags['api-version']);
261
+ const facade = createConnectionFacade(connection);
262
+ if (!this.constructor.skipAccessGate) {
263
+ await this.enforceAccessGate(facade);
264
+ }
265
+ const adapters = createAdapterStack(facade);
266
+ return { facade, ...adapters };
267
+ }
268
+ }
269
+ /**
270
+ * Maps the literal arg value attached to a boolean flag to its corrected
271
+ * `--<flag>` / `--no-<flag>` form. Returns null for unrecognized values so
272
+ * upstream behavior is preserved as fallback.
273
+ */
274
+ function booleanFlagSuggestion(flag, argInput) {
275
+ switch (argInput.toLowerCase()) {
276
+ case 'false':
277
+ case 'no':
278
+ case '0':
279
+ return `--no-${flag}`;
280
+ case 'true':
281
+ case 'yes':
282
+ case '1':
283
+ return `--${flag}`;
284
+ default:
285
+ return null;
286
+ }
287
+ }
288
+ /**
289
+ * Pre-processes an oclif parse error in place to fix misleading "Try this"
290
+ * suggestions for boolean flags declared with `allowNo: true` (CLI-3379).
291
+ *
292
+ * For each `FlagToken` immediately followed by an `ArgToken` where the flag is
293
+ * a known boolean with `allowNo`, this function:
294
+ * 1. Splices the `ArgToken` out of `error.parse.output.raw` so upstream `SfCommandError.appendErrorSuggestions` emits no suggestion for that pair — preventing the misleading `--<flag> "--<flag> <value>"` output regardless of value.
295
+ * 2. If the arg value is a recognized boolean literal (true/false/yes/no/1/0), appends the corrected `--no-<flag>` or `--<flag>` suggestion to `error.actions`. Unrecognized values yield no fabricated suggestion — we splice silently because we don't know what the user meant.
296
+ *
297
+ * Non-matching cases (missing parse output, unknown flag, non-boolean flag,
298
+ * boolean without `allowNo`) are left untouched — upstream's behavior is
299
+ * preserved as fallback.
300
+ */
301
+ function rewriteBooleanFlagSuggestion(error, commandClass) {
302
+ const parseError = error;
303
+ const raw = parseError.parse?.output?.raw;
304
+ if (!Array.isArray(raw) || raw.length === 0)
305
+ return;
306
+ const flags = commandClass.flags ?? {};
307
+ for (let i = 0; i < raw.length; i++) {
308
+ const flagToken = raw[i];
309
+ if (flagToken?.type !== 'flag')
310
+ continue;
311
+ const argToken = raw[i + 1];
312
+ if (argToken?.type !== 'arg')
313
+ continue;
314
+ const flagDef = flags[flagToken.flag];
315
+ if (!flagDef || flagDef.type !== 'boolean' || flagDef.allowNo !== true)
316
+ continue;
317
+ const suggestion = booleanFlagSuggestion(flagToken.flag, argToken.input);
318
+ if (suggestion !== null) {
319
+ parseError.actions = [...(parseError.actions ?? []), suggestion];
320
+ }
321
+ raw.splice(i + 1, 1);
322
+ // Do not decrement i — the next outer iteration moves to i+1 which is now
323
+ // the next token after the spliced arg, exactly what we want to evaluate.
324
+ }
325
+ }
326
+ //# sourceMappingURL=cuneiform-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cuneiform-command.js","sourceRoot":"","sources":["../../src/base/cuneiform-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { SfCommand } from '@salesforce/sf-plugins-core';
2
+ import { type CompatibilityResult } from '../../../operations/CompatibilityCheckOperation.js';
3
+ /** Result type returned for `--json` output. */
4
+ export type CompatibilityCheckResult = CompatibilityResult;
5
+ /**
6
+ * Reports the Cuneiform For Salesforce app version required by this CLI build,
7
+ * and (when `--target-org` is supplied) verifies whether the target org has a
8
+ * compatible version installed.
9
+ *
10
+ * Two-mode UX:
11
+ * - No flag: prints the required app version and CLI version. No auth.
12
+ * - With `--target-org <alias>`: queries the org for the installed `pnova` package via Tooling API, computes compatibility state, exits non-zero on mismatch.
13
+ *
14
+ * Exit codes:
15
+ * - `0` for default mode, `installed-match`, `installed-newer`
16
+ * - `1` for `installed-older`, `not-installed`, runtime errors
17
+ *
18
+ * Extends `SfCommand` directly (not `CuneiformCommand`): the compatibility check
19
+ * is a meta query that runs without authentication in default mode and bypasses
20
+ * the access gate even when an org is supplied — knowing whether you can run
21
+ * Cuneiform commands is the very thing this command answers.
22
+ *
23
+ * @example Local-only readout: `sf cuneiform compatibility check`
24
+ * @example Verify a target org: `sf cuneiform compatibility check --target-org myOrg`
25
+ * @example Machine-readable: `sf cuneiform compatibility check --target-org myOrg --json`
26
+ */
27
+ export default class CompatibilityCheck extends SfCommand<CompatibilityCheckResult> {
28
+ static readonly summary: string;
29
+ static readonly description: string;
30
+ static readonly examples: string[];
31
+ static readonly flags: {
32
+ 'target-org': import("@oclif/core/interfaces").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/interfaces").CustomOptions>;
33
+ 'api-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
34
+ };
35
+ run(): Promise<CompatibilityCheckResult>;
36
+ /**
37
+ * Render the compatibility check result to the user.
38
+ *
39
+ * Default mode (no installed): prints the required app version and CLI version.
40
+ * Org-checked mode: adds the installed version and a state line with an indicator.
41
+ */
42
+ private displayResult;
43
+ }
@@ -0,0 +1,114 @@
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 { SfCommand, Flags } from '@salesforce/sf-plugins-core';
9
+ import { Messages } from '@salesforce/core';
10
+ import { createAdapterStack } from '../../../base/cuneiform-command.js';
11
+ import { createConnectionFacade } from '../../../adapters/connection-facade.js';
12
+ import { OrgInfoService } from '../../../services/OrgInfoService.js';
13
+ import { CompatibilityService } from '../../../services/CompatibilityService.js';
14
+ import { CompatibilityCheckOperation, } from '../../../operations/CompatibilityCheckOperation.js';
15
+ Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
16
+ const messages = Messages.loadMessages('@peernova/cuneiform-sf', 'compatibility.check');
17
+ /**
18
+ * Reports the Cuneiform For Salesforce app version required by this CLI build,
19
+ * and (when `--target-org` is supplied) verifies whether the target org has a
20
+ * compatible version installed.
21
+ *
22
+ * Two-mode UX:
23
+ * - No flag: prints the required app version and CLI version. No auth.
24
+ * - With `--target-org <alias>`: queries the org for the installed `pnova` package via Tooling API, computes compatibility state, exits non-zero on mismatch.
25
+ *
26
+ * Exit codes:
27
+ * - `0` for default mode, `installed-match`, `installed-newer`
28
+ * - `1` for `installed-older`, `not-installed`, runtime errors
29
+ *
30
+ * Extends `SfCommand` directly (not `CuneiformCommand`): the compatibility check
31
+ * is a meta query that runs without authentication in default mode and bypasses
32
+ * the access gate even when an org is supplied — knowing whether you can run
33
+ * Cuneiform commands is the very thing this command answers.
34
+ *
35
+ * @example Local-only readout: `sf cuneiform compatibility check`
36
+ * @example Verify a target org: `sf cuneiform compatibility check --target-org myOrg`
37
+ * @example Machine-readable: `sf cuneiform compatibility check --target-org myOrg --json`
38
+ */
39
+ export default class CompatibilityCheck extends SfCommand {
40
+ static summary = messages.getMessage('summary');
41
+ static description = messages.getMessage('description');
42
+ static examples = messages.getMessages('examples');
43
+ static flags = {
44
+ 'target-org': Flags.optionalOrg({
45
+ summary: messages.getMessage('flags.target-org.summary'),
46
+ char: 'o',
47
+ }),
48
+ 'api-version': Flags.orgApiVersion({
49
+ summary: messages.getMessage('flags.api-version.summary'),
50
+ char: 'a',
51
+ }),
52
+ };
53
+ async run() {
54
+ const { flags } = await this.parse(CompatibilityCheck);
55
+ const compatibilityService = new CompatibilityService();
56
+ const operation = new CompatibilityCheckOperation(compatibilityService);
57
+ const targetOrg = flags['target-org'];
58
+ let orgInfoService;
59
+ if (targetOrg) {
60
+ const connection = targetOrg.getConnection(flags['api-version']);
61
+ const facade = createConnectionFacade(connection);
62
+ const { soqlAdapter, restAdapter, toolingAdapter } = createAdapterStack(facade);
63
+ orgInfoService = new OrgInfoService({
64
+ connectionFacade: facade,
65
+ soqlAdapter,
66
+ restAdapter,
67
+ toolingAdapter,
68
+ });
69
+ }
70
+ const operationResult = await operation.execute(orgInfoService ? { orgInfoService } : undefined);
71
+ if (!operationResult.success) {
72
+ this.error(operationResult.message ?? messages.getMessage('errors.manifestInvalid'), {
73
+ code: operationResult.errorCode,
74
+ });
75
+ }
76
+ const result = operationResult.data;
77
+ this.displayResult(result);
78
+ // CLI-3118: return result (not throw) so --json includes the structured result object.
79
+ if (result.installed &&
80
+ (result.installed.state === 'installed-older' || result.installed.state === 'not-installed')) {
81
+ process.exitCode = 1;
82
+ }
83
+ return result;
84
+ }
85
+ /**
86
+ * Render the compatibility check result to the user.
87
+ *
88
+ * Default mode (no installed): prints the required app version and CLI version.
89
+ * Org-checked mode: adds the installed version and a state line with an indicator.
90
+ */
91
+ displayResult(data) {
92
+ this.log(`CLI version: ${data.cliVersion}`);
93
+ this.log(`App name: ${data.appName}`);
94
+ this.log(`Required: ${data.requiredAppVersion}`);
95
+ if (!data.installed)
96
+ return;
97
+ const installedDisplay = data.installed.version ??
98
+ (data.installed.state === 'installed-version-unknown' ? '(detected via namespace)' : '(not installed)');
99
+ this.log(`Installed: ${installedDisplay}`);
100
+ const stateLine = messages.getMessage(`state.${data.installed.state}`);
101
+ const passingStates = new Set([
102
+ 'installed-match',
103
+ 'installed-newer',
104
+ 'installed-version-unknown',
105
+ ]);
106
+ if (passingStates.has(data.installed.state)) {
107
+ this.log(stateLine);
108
+ }
109
+ else {
110
+ this.warn(stateLine);
111
+ }
112
+ }
113
+ }
114
+ //# sourceMappingURL=check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../../src/commands/cuneiform/compatibility/check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ import { CuneiformCommand } from '../../../base/cuneiform-command.js';
2
+ import { type ObjectResult } from '../../../operations/DefinitionCreateOperation.js';
3
+ import { type AvailabilityGrid } from '../../../services/DataAvailabilityService.js';
4
+ /**
5
+ * Command result type for JSON output.
6
+ */
7
+ export type DefinitionCreateResult = {
8
+ /** Whether the operation was successful */
9
+ success: boolean;
10
+ /** Number of definitions created */
11
+ created: number;
12
+ /** Number of definitions that failed to create */
13
+ failed: number;
14
+ /** Number of objects skipped (already have definitions) */
15
+ skipped: number;
16
+ /** Total number of objects processed */
17
+ total: number;
18
+ /** Whether this was a dry run */
19
+ dryRun: boolean;
20
+ /** List of creation failures with details */
21
+ failures: Array<{
22
+ objectName: string;
23
+ error: string;
24
+ errorCode: string;
25
+ }>;
26
+ /** Per-definition results with status indicators */
27
+ results: ObjectResult[];
28
+ /** Data availability grid (present when --method comparative/recordtype/full) */
29
+ availabilityGrid?: AvailabilityGrid;
30
+ /** Error message if failed */
31
+ error?: string;
32
+ };
33
+ /**
34
+ * Creates profiling definitions for Salesforce objects.
35
+ */
36
+ export default class DefinitionCreate extends CuneiformCommand<DefinitionCreateResult> {
37
+ static readonly summary: string;
38
+ static readonly description: string;
39
+ static readonly examples: string[];
40
+ static readonly flags: {
41
+ 'target-org': import("@oclif/core/interfaces").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/interfaces").CustomOptions>;
42
+ 'api-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
43
+ objects: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
44
+ 'from-file': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
45
+ filter: import("@oclif/core/interfaces").OptionFlag<"standard" | "custom" | "all", import("@oclif/core/interfaces").CustomOptions>;
46
+ pattern: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
47
+ namespace: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
48
+ classification: import("@oclif/core/interfaces").OptionFlag<"all" | "customer" | "internal", import("@oclif/core/interfaces").CustomOptions>;
49
+ 'with-records': import("@oclif/core/interfaces").BooleanFlag<boolean>;
50
+ 'without-records': import("@oclif/core/interfaces").BooleanFlag<boolean>;
51
+ 'with-record-types': import("@oclif/core/interfaces").BooleanFlag<boolean>;
52
+ category: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
53
+ 'min-records': import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
54
+ limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
55
+ method: import("@oclif/core/interfaces").OptionFlag<"metadata" | "historical" | "comparative" | "recordtype" | "outcome" | "full", import("@oclif/core/interfaces").CustomOptions>;
56
+ recordtype: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
57
+ 'record-type-status': import("@oclif/core/interfaces").OptionFlag<"all" | "active" | "inactive", import("@oclif/core/interfaces").CustomOptions>;
58
+ year: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
59
+ depth: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
60
+ from: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
61
+ to: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
62
+ 'no-value-frequency': import("@oclif/core/interfaces").BooleanFlag<boolean>;
63
+ 'use-prior': import("@oclif/core/interfaces").BooleanFlag<boolean>;
64
+ 'lifetime-primary': import("@oclif/core/interfaces").BooleanFlag<boolean>;
65
+ 'date-literal': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
66
+ 'date-field': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
67
+ profiled: import("@oclif/core/interfaces").BooleanFlag<boolean>;
68
+ 'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
69
+ 'no-prompt': import("@oclif/core/interfaces").BooleanFlag<boolean>;
70
+ profile: import("@oclif/core/interfaces").BooleanFlag<boolean>;
71
+ open: import("@oclif/core/interfaces").BooleanFlag<boolean>;
72
+ logs: import("@oclif/core/interfaces").BooleanFlag<boolean>;
73
+ 'name-prefix': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
74
+ 'name-suffix': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
75
+ 'time-category': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
76
+ 'segment-category': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
77
+ origin: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
78
+ };
79
+ /**
80
+ * Determines the effective --with-records value.
81
+ *
82
+ * When --method full is used and no explicit scope/filter flags are supplied by the user,
83
+ * defaults withRecords to true so the default scope is "customer objects with records."
84
+ * This prevents full profiling from targeting empty or system-only objects.
85
+ *
86
+ * Scope flags that suppress the default: --with-records, --without-records, --filter (non-default),
87
+ * --objects, --pattern.
88
+ */
89
+ private static resolveWithRecords;
90
+ /**
91
+ * Executes the create command.
92
+ *
93
+ * @returns DefinitionCreateResult with success status and creation statistics
94
+ */
95
+ run(): Promise<DefinitionCreateResult>;
96
+ /**
97
+ * Two-stage confirmation: summary then detailed preview table.
98
+ */
99
+ private handlePreviewReady;
100
+ /**
101
+ * Handles operation failure by translating error codes to user-friendly messages.
102
+ */
103
+ private handleOperationFailure;
104
+ /**
105
+ * Handles post-creation actions: --profile, --open, --logs.
106
+ */
107
+ private handlePostCreationActions;
108
+ /**
109
+ * Triggers fire-and-forget profiling for successfully created definitions.
110
+ */
111
+ private triggerProfiling;
112
+ /**
113
+ * Opens the first created definition in the default browser.
114
+ */
115
+ private openInBrowser;
116
+ /**
117
+ * Writes session logs to a timestamped directory.
118
+ */
119
+ private writeSessionLogs;
120
+ }