@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,937 @@
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 { SfError } from '@salesforce/core';
9
+ /**
10
+ * Error codes and utilities for Salesforce API adapter operations.
11
+ *
12
+ * This module provides standardized error codes for all adapter operations,
13
+ * utilities for extracting Salesforce error codes from various error formats,
14
+ * and human-readable descriptions for error messages.
15
+ *
16
+ * @module adapters/errors
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * import { AdapterErrorCodes, mapSalesforceError, extractSalesforceErrorCode } from './errors';
21
+ *
22
+ * try {
23
+ * await connection.query('INVALID SOQL');
24
+ * } catch (error) {
25
+ * const sfCode = extractSalesforceErrorCode(error);
26
+ * const adapterCode = sfCode ? mapSalesforceError(sfCode, 'soql') : AdapterErrorCodes.QUERY_FAILED;
27
+ * console.log(`Error: ${adapterCode}`); // E3102 for INVALID_QUERY
28
+ * }
29
+ * ```
30
+ */
31
+ /**
32
+ * Adapter error codes for Salesforce API operations.
33
+ * Uses the 3000-3999 range as defined in CLAUDE.md error code ranges.
34
+ *
35
+ * Error Code Ranges:
36
+ * - E3000-E3099: Connection errors
37
+ * - E3100-E3199: SOQL query errors
38
+ * - E3200-E3299: REST API errors
39
+ * - E3300-E3399: Tooling API errors
40
+ * - E3400-E3499: (Reserved — formerly Apex execution errors)
41
+ */
42
+ export const AdapterErrorCodes = {
43
+ // Connection Errors (E3000-E3099)
44
+ /** Connection is not authenticated or has expired */
45
+ CONNECTION_NOT_AUTHENTICATED: 'E3000',
46
+ /** Connection is missing required configuration */
47
+ CONNECTION_INVALID: 'E3001',
48
+ // SOQL Query Errors (E3100-E3199)
49
+ /** Generic SOQL query failure */
50
+ QUERY_FAILED: 'E3100',
51
+ /** Query execution timed out */
52
+ QUERY_TIMEOUT: 'E3101',
53
+ /** Invalid SOQL syntax */
54
+ INVALID_QUERY: 'E3102',
55
+ /** Query returned too many rows */
56
+ QUERY_TOO_MANY_ROWS: 'E3103',
57
+ // REST API Errors (E3200-E3299)
58
+ /** Generic REST API describe failure */
59
+ DESCRIBE_FAILED: 'E3200',
60
+ /** Object not found */
61
+ OBJECT_NOT_FOUND: 'E3201',
62
+ /** Insufficient permissions to access object */
63
+ PERMISSION_DENIED: 'E3202',
64
+ /** Global describe failed */
65
+ GLOBAL_DESCRIBE_FAILED: 'E3203',
66
+ /** Insert record operation failed */
67
+ INSERT_RECORD_FAILED: 'E3204',
68
+ /** Insufficient access to insert record */
69
+ INSERT_INSUFFICIENT_ACCESS: 'E3205',
70
+ /** Duplicate record detected during insert */
71
+ INSERT_DUPLICATE_VALUE: 'E3206',
72
+ // UPDATE operations (E3207-E3209)
73
+ /** Update record operation failed */
74
+ UPDATE_RECORD_FAILED: 'E3207',
75
+ /** Insufficient access to update record */
76
+ UPDATE_INSUFFICIENT_ACCESS: 'E3208',
77
+ /** Record not found for update */
78
+ UPDATE_RECORD_NOT_FOUND: 'E3209',
79
+ // DELETE operations (E3210-E3212)
80
+ /** Delete record operation failed */
81
+ DELETE_RECORD_FAILED: 'E3210',
82
+ /** Insufficient access to delete record */
83
+ DELETE_INSUFFICIENT_ACCESS: 'E3211',
84
+ /** Record not found for delete */
85
+ DELETE_RECORD_NOT_FOUND: 'E3212',
86
+ // Generic REST request operations (E3213-E3219)
87
+ /** Generic REST request failed */
88
+ REQUEST_FAILED: 'E3213',
89
+ // Namespace security guard violations (E3220-E3222)
90
+ /** Insert blocked: object must use pnova__ namespace or be in the explicit allowlist */
91
+ INSERT_NAMESPACE_VIOLATION: 'E3220',
92
+ /** Update blocked: object must use pnova__ namespace */
93
+ UPDATE_NAMESPACE_VIOLATION: 'E3221',
94
+ /** Delete blocked: object must use pnova__ namespace */
95
+ DELETE_NAMESPACE_VIOLATION: 'E3222',
96
+ // Tooling API Errors (E3300-E3399)
97
+ /** Generic Tooling API query failure */
98
+ TOOLING_QUERY_FAILED: 'E3300',
99
+ /** Metadata not found */
100
+ METADATA_NOT_FOUND: 'E3301',
101
+ /** Tooling API access denied */
102
+ TOOLING_ACCESS_DENIED: 'E3302',
103
+ };
104
+ /**
105
+ * Service error codes for domain service operations.
106
+ * Uses the 4000-4999 range as defined in CLAUDE.md error code ranges.
107
+ *
108
+ * Error Code Ranges:
109
+ * - E4001: General pagination error
110
+ * - E4100-E4105: ObjectFilteringService
111
+ * - E4200-E4203: RecordTypeService
112
+ * - E4300-E4302: TabDetectionService
113
+ * - E4400-E4409: ProfilingDefinitionService
114
+ * - E4500-E4506: ProfilingSummaryService
115
+ * - E4600-E4610: OrgInfoService
116
+ * - E4650-E4658: UserReadinessService
117
+ * - E4660-E4676: UserConfigurationService (includes REST insert/endpoint errors E4671-E4676)
118
+ * - E4680-E4681: Feature Gate (access gate pre-check)
119
+ * - E4700-E4702: ContactPointService
120
+ * - E4750-E4761: ObjectListService
121
+ * - E4800-E4809: ObjectDescribeService
122
+ * - E4850-E4866: ProfilingExecutionService
123
+ * - E4900-E4909: ProfileRequestService
124
+ * - E4920-E4929: DataAvailabilityService
125
+ */
126
+ export const ServiceErrorCodes = {
127
+ // General (E4001)
128
+ /** Invalid pagination parameters (limit, offset) */
129
+ INVALID_PAGINATION: 'E4001',
130
+ // ObjectFilteringService (E4100-E4105)
131
+ /** Generic filter operation failed */
132
+ FILTER_FAILED: 'E4100',
133
+ /** Invalid type parameter (must be 'standard', 'custom', or 'all') */
134
+ INVALID_TYPE: 'E4101',
135
+ /** Invalid namespace format */
136
+ INVALID_NAMESPACE: 'E4102',
137
+ /** Invalid name filter (value required, operator must be 'startsWith', 'contains', or 'equals') */
138
+ INVALID_NAME_FILTER: 'E4103',
139
+ /** Invalid classification (must be 'customer', 'internal', or 'all') */
140
+ INVALID_CLASSIFICATION: 'E4104',
141
+ /** Invalid objectNames array (required, non-empty, max 200 items) */
142
+ INVALID_OBJECT_NAMES: 'E4105',
143
+ // RecordTypeService (E4200-E4203)
144
+ /** Record type query failed */
145
+ RECORD_TYPE_QUERY_FAILED: 'E4200',
146
+ /** Object not found for record type query */
147
+ RECORD_TYPE_OBJECT_NOT_FOUND: 'E4201',
148
+ /** Object name is required */
149
+ RECORD_TYPE_OBJECT_NAME_REQUIRED: 'E4202',
150
+ /** Invalid object name format */
151
+ RECORD_TYPE_INVALID_OBJECT_NAME: 'E4203',
152
+ // TabDetectionService (E4300-E4302)
153
+ /** Tab query failed */
154
+ TAB_QUERY_FAILED: 'E4300',
155
+ /** Object name is required */
156
+ TAB_OBJECT_NAME_REQUIRED: 'E4301',
157
+ /** Invalid object names array (empty or exceeds max) */
158
+ TAB_INVALID_OBJECT_NAMES: 'E4302',
159
+ // ProfilingDefinitionService (E4400-E4409)
160
+ /** Definition query failed */
161
+ DEFINITION_QUERY_FAILED: 'E4400',
162
+ /** Definition not found */
163
+ DEFINITION_NOT_FOUND: 'E4401',
164
+ /** Definition create failed */
165
+ DEFINITION_CREATE_FAILED: 'E4402',
166
+ /** Definition update failed */
167
+ DEFINITION_UPDATE_FAILED: 'E4403',
168
+ /** Definition delete failed */
169
+ DEFINITION_DELETE_FAILED: 'E4404',
170
+ /** Invalid Salesforce ID format */
171
+ DEFINITION_INVALID_ID: 'E4405',
172
+ /** Invalid definition name (required, 1-80 chars) */
173
+ DEFINITION_INVALID_NAME: 'E4406',
174
+ /** Invalid object API name */
175
+ DEFINITION_INVALID_OBJECT_NAME: 'E4407',
176
+ /** Invalid category (max 255 chars) */
177
+ DEFINITION_INVALID_CATEGORY: 'E4408',
178
+ /** Update requires at least one field */
179
+ DEFINITION_UPDATE_EMPTY: 'E4409',
180
+ // ProfilingSummaryService (E4500-E4505)
181
+ /** Summary query failed */
182
+ SUMMARY_QUERY_FAILED: 'E4500',
183
+ /** Summary not found */
184
+ SUMMARY_NOT_FOUND: 'E4501',
185
+ /** Summary delete failed */
186
+ SUMMARY_DELETE_FAILED: 'E4502',
187
+ /** Invalid definition ID format (for getSummaries definitionId parameter) */
188
+ SUMMARY_INVALID_DEFINITION_ID: 'E4503',
189
+ /** Invalid summary IDs array (empty or exceeds max) */
190
+ SUMMARY_INVALID_IDS: 'E4504',
191
+ /** Invalid summary ID format (for getSummaryById id parameter) */
192
+ SUMMARY_INVALID_ID: 'E4505',
193
+ /** Profiled objects query failed */
194
+ PROFILED_OBJECTS_QUERY_FAILED: 'E4506',
195
+ // SummaryPurgeOperation (E4510-E4517)
196
+ /** No selection criteria specified for purge */
197
+ SUMMARY_PURGE_NO_SELECTION: 'E4510',
198
+ /** Mutually exclusive flags used (--ids with filters) */
199
+ SUMMARY_PURGE_MUTUALLY_EXCLUSIVE: 'E4511',
200
+ /** Summary purge query failed */
201
+ SUMMARY_PURGE_QUERY_FAILED: 'E4512',
202
+ /** No eligible summaries found */
203
+ SUMMARY_PURGE_NO_ELIGIBLE: 'E4513',
204
+ /** Summary purge delete failed */
205
+ SUMMARY_PURGE_DELETE_FAILED: 'E4514',
206
+ /** User cancelled purge operation */
207
+ SUMMARY_PURGE_USER_CANCELLED: 'E4515',
208
+ /** Unexpected operation failure */
209
+ SUMMARY_PURGE_OPERATION_FAILED: 'E4516',
210
+ /** Invalid summary IDs provided */
211
+ SUMMARY_PURGE_INVALID_IDS: 'E4517',
212
+ // SummaryStopOperation (E4520-E4527)
213
+ /** No selection criteria specified for stop */
214
+ SUMMARY_STOP_NO_SELECTION: 'E4520',
215
+ /** Mutually exclusive flags used for stop */
216
+ SUMMARY_STOP_MUTUALLY_EXCLUSIVE: 'E4521',
217
+ /** Summary stop query failed */
218
+ SUMMARY_STOP_QUERY_FAILED: 'E4522',
219
+ /** No stoppable summaries found */
220
+ SUMMARY_STOP_NO_ELIGIBLE: 'E4523',
221
+ /** Summary stop REST call failed */
222
+ SUMMARY_STOP_FAILED: 'E4524',
223
+ /** User cancelled stop operation */
224
+ SUMMARY_STOP_USER_CANCELLED: 'E4525',
225
+ /** Unexpected stop operation failure */
226
+ SUMMARY_STOP_OPERATION_FAILED: 'E4526',
227
+ /** Invalid summary IDs for stop */
228
+ SUMMARY_STOP_INVALID_IDS: 'E4527',
229
+ // SummaryReprofileOperation (E4530-E4537)
230
+ /** No selection criteria specified for reprofile */
231
+ SUMMARY_REPROFILE_NO_SELECTION: 'E4530',
232
+ /** Mutually exclusive flags used for reprofile */
233
+ SUMMARY_REPROFILE_MUTUALLY_EXCLUSIVE: 'E4531',
234
+ /** Summary reprofile query failed */
235
+ SUMMARY_REPROFILE_QUERY_FAILED: 'E4532',
236
+ /** No reprofilable summaries found */
237
+ SUMMARY_REPROFILE_NO_ELIGIBLE: 'E4533',
238
+ /** Summary reprofile REST call failed */
239
+ SUMMARY_REPROFILE_FAILED: 'E4534',
240
+ /** User cancelled reprofile operation */
241
+ SUMMARY_REPROFILE_USER_CANCELLED: 'E4535',
242
+ /** Unexpected reprofile operation failure */
243
+ SUMMARY_REPROFILE_OPERATION_FAILED: 'E4536',
244
+ /** Invalid summary IDs for reprofile */
245
+ SUMMARY_REPROFILE_INVALID_IDS: 'E4537',
246
+ // ContactPointService (E4700-E4702)
247
+ /** Contact point analysis failed */
248
+ CONTACT_POINT_ANALYSIS_FAILED: 'E4700',
249
+ /** Object name is required */
250
+ CONTACT_POINT_OBJECT_NAME_REQUIRED: 'E4701',
251
+ /** Invalid object name format */
252
+ CONTACT_POINT_INVALID_OBJECT_NAME: 'E4702',
253
+ // ObjectListService (E4750-E4761)
254
+ /** Object list query failed */
255
+ OBJECT_LIST_QUERY_FAILED: 'E4750',
256
+ /** Global describe failed during object list operation */
257
+ OBJECT_LIST_GLOBAL_DESCRIBE_FAILED: 'E4751',
258
+ /** Invalid pagination parameters for object list */
259
+ OBJECT_LIST_INVALID_PAGINATION: 'E4752',
260
+ /** Object list filter failed */
261
+ OBJECT_LIST_FILTER_FAILED: 'E4753',
262
+ /** Tab detection failed during enrichment */
263
+ OBJECT_LIST_TAB_DETECTION_FAILED: 'E4754',
264
+ /** Contact point analysis failed during enrichment */
265
+ OBJECT_LIST_CONTACT_POINT_FAILED: 'E4755',
266
+ /** Enrichment operation timed out */
267
+ OBJECT_LIST_ENRICHMENT_TIMEOUT: 'E4756',
268
+ /** Invalid sort field or direction */
269
+ OBJECT_LIST_INVALID_SORT: 'E4757',
270
+ /** Invalid filter type */
271
+ OBJECT_LIST_INVALID_FILTER_TYPE: 'E4758',
272
+ /** Invalid namespace in filter */
273
+ OBJECT_LIST_INVALID_NAMESPACE: 'E4759',
274
+ /** Failed to get record count */
275
+ OBJECT_LIST_RECORD_COUNT_FAILED: 'E4760',
276
+ /** Empty result set */
277
+ OBJECT_LIST_EMPTY_RESULT: 'E4761',
278
+ // OrgInfoService (E4600-E4609)
279
+ /** Org info query failed */
280
+ ORG_INFO_QUERY_FAILED: 'E4600',
281
+ /** Org identity failed */
282
+ ORG_IDENTITY_FAILED: 'E4601',
283
+ /** Org limits failed */
284
+ ORG_LIMITS_FAILED: 'E4602',
285
+ /** Org package query failed */
286
+ ORG_PACKAGE_QUERY_FAILED: 'E4603',
287
+ /** Org namespace query failed */
288
+ ORG_NAMESPACE_QUERY_FAILED: 'E4604',
289
+ /** Org user count failed */
290
+ ORG_USER_COUNT_FAILED: 'E4605',
291
+ /** Org Cuneiform version query failed */
292
+ ORG_CUNEIFORM_VERSION_FAILED: 'E4606',
293
+ /** Org features query failed */
294
+ ORG_FEATURES_QUERY_FAILED: 'E4607',
295
+ /** Org edition query failed */
296
+ ORG_EDITION_QUERY_FAILED: 'E4608',
297
+ /** Business process query failed */
298
+ ORG_BUSINESS_PROCESS_QUERY_FAILED: 'E4609',
299
+ // UserReadinessService (E4650-E4659)
300
+ /** User readiness query failed */
301
+ USER_READINESS_QUERY_FAILED: 'E4650',
302
+ /** User permission set check failed */
303
+ USER_PERMISSION_SET_CHECK_FAILED: 'E4651',
304
+ /** User config profile check failed */
305
+ USER_CONFIG_PROFILE_CHECK_FAILED: 'E4652',
306
+ /** User ID is required */
307
+ USER_ID_REQUIRED: 'E4653',
308
+ /** Cuneiform namespace not found (not installed) */
309
+ USER_CUNEIFORM_NAMESPACE_NOT_FOUND: 'E4654',
310
+ /** User info query failed */
311
+ USER_INFO_QUERY_FAILED: 'E4655',
312
+ /** User lacks required permission sets for profiling access */
313
+ PROFILING_ACCESS_DENIED: 'E4656',
314
+ /** Global Profiling is not enabled in the org */
315
+ GLOBAL_PROFILING_NOT_ENABLED: 'E4657',
316
+ /** Configure operation blocked in production environment */
317
+ ENVIRONMENT_CONFIGURE_BLOCKED: 'E4658',
318
+ /** CLI self-provisioning not enabled in Configuration Profile */
319
+ SELF_REGISTRATION_NOT_ENABLED: 'E4659',
320
+ // UserConfigurationService (E4660-E4676)
321
+ /** User ID is required for configuration query */
322
+ USER_CONFIG_USER_ID_REQUIRED: 'E4660',
323
+ /** User configuration query failed */
324
+ USER_CONFIG_QUERY_FAILED: 'E4661',
325
+ /** Invalid user configuration settings */
326
+ USER_CONFIG_INVALID_SETTINGS: 'E4662',
327
+ /** CMT deployment via REST endpoint failed */
328
+ USER_CONFIG_DEPLOY_TRIGGER_FAILED: 'E4663',
329
+ // E4664 — RESERVED (formerly USER_CONFIG_APEX_COMPILE_ERROR, removed with Apex adapter in CLI-772)
330
+ /** Background job query failed */
331
+ USER_CONFIG_JOB_QUERY_FAILED: 'E4665',
332
+ /** Permission set not found in org */
333
+ USER_CONFIG_PERMISSION_SET_NOT_FOUND: 'E4666',
334
+ /** Permission set assignment failed */
335
+ USER_CONFIG_PERMISSION_SET_ASSIGN_FAILED: 'E4667',
336
+ /** Insufficient access to assign permission sets */
337
+ USER_CONFIG_INSUFFICIENT_ACCESS: 'E4668',
338
+ /** Some configuration actions failed (partial failure) */
339
+ USER_CONFIG_PARTIAL_FAILURE: 'E4669',
340
+ /** Already configured, no changes needed */
341
+ USER_CONFIG_ALREADY_CONFIGURED: 'E4670',
342
+ /** sObject insert failed via REST API */
343
+ REST_INSERT_FAILED: 'E4671',
344
+ /** Insufficient access to insert record */
345
+ REST_INSERT_INSUFFICIENT_ACCESS: 'E4672',
346
+ /** Duplicate record detected during insert */
347
+ REST_INSERT_DUPLICATE: 'E4673',
348
+ /** Configuration REST endpoint not available (ISV version too old) */
349
+ USER_CONFIG_ENDPOINT_UNAVAILABLE: 'E4674',
350
+ /** Insufficient access to the configuration REST endpoint */
351
+ USER_CONFIG_ENDPOINT_INSUFFICIENT_ACCESS: 'E4675',
352
+ /** Configuration feature is not enabled in this org */
353
+ USER_CONFIG_FEATURE_NOT_ENABLED: 'E4676',
354
+ // Feature Gate (E4680-E4681)
355
+ /** API-Based Profiling feature is not enabled for this organization */
356
+ FEATURE_NOT_ENABLED: 'E4680',
357
+ /** Feature status endpoint check failed */
358
+ FEATURE_STATUS_CHECK_FAILED: 'E4681',
359
+ // ObjectDescribeService (E4800-E4809)
360
+ /** Object describe operation failed */
361
+ OBJECT_DESCRIBE_FAILED: 'E4800',
362
+ /** Object not found for describe operation */
363
+ OBJECT_DESCRIBE_NOT_FOUND: 'E4801',
364
+ /** Insufficient permissions to access object for describe operation */
365
+ OBJECT_DESCRIBE_PERMISSION_DENIED: 'E4802',
366
+ /** Object name is required for describe operation */
367
+ OBJECT_DESCRIBE_OBJECT_NAME_REQUIRED: 'E4803',
368
+ /** Invalid object name format for describe operation */
369
+ OBJECT_DESCRIBE_INVALID_OBJECT_NAME: 'E4804',
370
+ /** Big Objects are not supported for describe operations */
371
+ OBJECT_DESCRIBE_BIG_OBJECT_REJECTED: 'E4805',
372
+ /** External Objects are not supported for describe operations */
373
+ OBJECT_DESCRIBE_EXTERNAL_OBJECT_REJECTED: 'E4806',
374
+ /** Record type enrichment failed during describe operation */
375
+ OBJECT_DESCRIBE_RECORD_TYPE_ENRICHMENT_FAILED: 'E4807',
376
+ /** Profiling definition enrichment failed during describe operation */
377
+ OBJECT_DESCRIBE_DEFINITION_ENRICHMENT_FAILED: 'E4808',
378
+ /** Profiling summary enrichment failed during describe operation */
379
+ OBJECT_DESCRIBE_SUMMARY_ENRICHMENT_FAILED: 'E4809',
380
+ // ProfilingExecutionService (E4850-E4866)
381
+ /** Generic profiling execution failed */
382
+ PROFILING_EXECUTION_FAILED: 'E4850',
383
+ /** Definition ID is required for profiling execution */
384
+ PROFILING_DEFINITION_ID_REQUIRED: 'E4851',
385
+ /** Invalid profiling definition ID format */
386
+ PROFILING_INVALID_DEFINITION_ID: 'E4852',
387
+ /** Profiling definition not found */
388
+ PROFILING_DEFINITION_NOT_FOUND: 'E4853',
389
+ /** REST API trigger for profiling failed */
390
+ PROFILING_REST_TRIGGER_FAILED: 'E4854',
391
+ /** Profiling request creation failed */
392
+ PROFILING_REQUEST_CREATION_FAILED: 'E4855',
393
+ /** Profiling status poll failed */
394
+ PROFILING_POLL_FAILED: 'E4856',
395
+ /** Profiling operation timed out */
396
+ PROFILING_TIMEOUT: 'E4857',
397
+ /** Profiling request not found */
398
+ PROFILING_REQUEST_NOT_FOUND: 'E4859',
399
+ /** Failed to extract profiling request ID */
400
+ PROFILING_REQUEST_ID_EXTRACTION_FAILED: 'E4861',
401
+ /** Bulk execution requires at least one definition */
402
+ PROFILING_BULK_EMPTY_DEFINITIONS: 'E4862',
403
+ /** Invalid parallel option for bulk execution */
404
+ PROFILING_BULK_INVALID_PARALLEL: 'E4863',
405
+ /** Bulk execution failed */
406
+ PROFILING_BULK_EXECUTION_FAILED: 'E4864',
407
+ /** Request ID is required */
408
+ PROFILING_REQUEST_ID_REQUIRED: 'E4865',
409
+ /** Invalid profiling request ID format */
410
+ PROFILING_INVALID_REQUEST_ID: 'E4866',
411
+ // ProfileRequestService (E4900-E4909)
412
+ /** Profile request list query failed */
413
+ REQUEST_LIST_QUERY_FAILED: 'E4900',
414
+ /** Profile request not found */
415
+ REQUEST_NOT_FOUND: 'E4901',
416
+ /** Profile request cancel failed */
417
+ REQUEST_CANCEL_FAILED: 'E4902',
418
+ /** Invalid request IDs provided */
419
+ REQUEST_INVALID_IDS: 'E4903',
420
+ /** No cancellable requests found */
421
+ REQUEST_NO_CANCELLABLE: 'E4904',
422
+ /** Request cancel partial failure */
423
+ REQUEST_CANCEL_PARTIAL_FAILURE: 'E4905',
424
+ /** Request delete failed */
425
+ REQUEST_DELETE_FAILED: 'E4906',
426
+ /** Request query failed (SOQL query for active requests) */
427
+ REQUEST_QUERY_FAILED: 'E4907',
428
+ /** No deletable requests found */
429
+ REQUEST_NO_DELETABLE: 'E4908',
430
+ /** Request delete partial failure */
431
+ REQUEST_DELETE_PARTIAL_FAILURE: 'E4909',
432
+ // DataAvailabilityService (E4920-E4929)
433
+ /** Data availability grid build failed */
434
+ DATA_AVAILABILITY_GRID_BUILD_FAILED: 'E4920',
435
+ };
436
+ /**
437
+ * Maps a Salesforce error code to a SOQL adapter error code.
438
+ *
439
+ * Checks for patterns in the error code to determine the specific error type:
440
+ * - INVALID/MALFORMED → INVALID_QUERY (E3102)
441
+ * - TIMEOUT/TIME_OUT → QUERY_TIMEOUT (E3101)
442
+ * - TOO_MANY → QUERY_TOO_MANY_ROWS (E3103)
443
+ * - Other → QUERY_FAILED (E3100)
444
+ *
445
+ * @param upperCode - The uppercased Salesforce error code to map
446
+ * @returns The corresponding adapter error code
447
+ */
448
+ function mapSoqlError(upperCode) {
449
+ if (upperCode.includes('INVALID') || upperCode.includes('MALFORMED')) {
450
+ return AdapterErrorCodes.INVALID_QUERY;
451
+ }
452
+ if (upperCode.includes('TIMEOUT') || upperCode.includes('TIME_OUT')) {
453
+ return AdapterErrorCodes.QUERY_TIMEOUT;
454
+ }
455
+ if (upperCode.includes('TOO_MANY')) {
456
+ return AdapterErrorCodes.QUERY_TOO_MANY_ROWS;
457
+ }
458
+ return AdapterErrorCodes.QUERY_FAILED;
459
+ }
460
+ /**
461
+ * Maps a Salesforce error code to a REST API adapter error code.
462
+ *
463
+ * Checks for patterns in the error code to determine the specific error type:
464
+ * - NOT_FOUND/INVALID_TYPE → OBJECT_NOT_FOUND (E3201)
465
+ * - PERMISSION/INSUFFICIENT_ACCESS/NO_ACCESS → PERMISSION_DENIED (E3202)
466
+ * - Other → DESCRIBE_FAILED (E3200)
467
+ *
468
+ * @param upperCode - The uppercased Salesforce error code to map
469
+ * @returns The corresponding adapter error code
470
+ */
471
+ function mapRestError(upperCode) {
472
+ if (upperCode.includes('NOT_FOUND') || upperCode.includes('INVALID_TYPE')) {
473
+ return AdapterErrorCodes.OBJECT_NOT_FOUND;
474
+ }
475
+ if (upperCode.includes('PERMISSION') ||
476
+ upperCode.includes('INSUFFICIENT_ACCESS') ||
477
+ upperCode.includes('NO_ACCESS')) {
478
+ return AdapterErrorCodes.PERMISSION_DENIED;
479
+ }
480
+ return AdapterErrorCodes.DESCRIBE_FAILED;
481
+ }
482
+ /**
483
+ * Maps a Salesforce error code to a Tooling API adapter error code.
484
+ *
485
+ * Checks for patterns in the error code to determine the specific error type:
486
+ * - NOT_FOUND → METADATA_NOT_FOUND (E3301)
487
+ * - PERMISSION/ACCESS → TOOLING_ACCESS_DENIED (E3302)
488
+ * - Other → TOOLING_QUERY_FAILED (E3300)
489
+ *
490
+ * @param upperCode - The uppercased Salesforce error code to map
491
+ * @returns The corresponding adapter error code
492
+ */
493
+ function mapToolingError(upperCode) {
494
+ if (upperCode.includes('NOT_FOUND')) {
495
+ return AdapterErrorCodes.METADATA_NOT_FOUND;
496
+ }
497
+ if (upperCode.includes('PERMISSION') || upperCode.includes('ACCESS')) {
498
+ return AdapterErrorCodes.TOOLING_ACCESS_DENIED;
499
+ }
500
+ return AdapterErrorCodes.TOOLING_QUERY_FAILED;
501
+ }
502
+ /**
503
+ * Maps a Salesforce DML error code to an insert-specific adapter error code.
504
+ *
505
+ * Checks for patterns in the error code to determine the specific DML error type:
506
+ * - INSUFFICIENT_ACCESS/NO_ACCESS/PERMISSION → INSERT_INSUFFICIENT_ACCESS (E3205)
507
+ * - DUPLICATE_VALUE/ALREADY_EXISTS → INSERT_DUPLICATE_VALUE (E3206)
508
+ * - Other → INSERT_RECORD_FAILED (E3204)
509
+ *
510
+ * @param sfErrorCode - The Salesforce error code to map
511
+ * @returns The corresponding adapter error code for insert operations
512
+ *
513
+ * @example
514
+ * ```typescript
515
+ * const adapterCode = mapDmlInsertError('INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY');
516
+ * // Returns 'E3205' (INSERT_INSUFFICIENT_ACCESS)
517
+ * ```
518
+ */
519
+ export function mapDmlInsertError(sfErrorCode) {
520
+ const upperCode = sfErrorCode.toUpperCase();
521
+ if (upperCode.includes('INSUFFICIENT_ACCESS') ||
522
+ upperCode.includes('NO_ACCESS') ||
523
+ upperCode.includes('PERMISSION')) {
524
+ return AdapterErrorCodes.INSERT_INSUFFICIENT_ACCESS;
525
+ }
526
+ if (upperCode.includes('DUPLICATE_VALUE') || upperCode.includes('ALREADY_EXISTS')) {
527
+ return AdapterErrorCodes.INSERT_DUPLICATE_VALUE;
528
+ }
529
+ return AdapterErrorCodes.INSERT_RECORD_FAILED;
530
+ }
531
+ /**
532
+ * Maps a Salesforce DML error code to an update-specific adapter error code.
533
+ *
534
+ * Checks for patterns in the error code to determine the specific DML error type:
535
+ * - INSUFFICIENT_ACCESS/NO_ACCESS/PERMISSION → UPDATE_INSUFFICIENT_ACCESS (E3208)
536
+ * - NOT_FOUND/INVALID_ID → UPDATE_RECORD_NOT_FOUND (E3209)
537
+ * - Other → UPDATE_RECORD_FAILED (E3207)
538
+ *
539
+ * @param sfErrorCode - The Salesforce error code to map
540
+ * @returns The corresponding adapter error code for update operations
541
+ *
542
+ * @example
543
+ * ```typescript
544
+ * const adapterCode = mapDmlUpdateError('INSUFFICIENT_ACCESS_OR_READONLY');
545
+ * // Returns 'E3208' (UPDATE_INSUFFICIENT_ACCESS)
546
+ * ```
547
+ */
548
+ export function mapDmlUpdateError(sfErrorCode) {
549
+ const upperCode = sfErrorCode.toUpperCase();
550
+ if (upperCode.includes('INSUFFICIENT_ACCESS') ||
551
+ upperCode.includes('NO_ACCESS') ||
552
+ upperCode.includes('PERMISSION')) {
553
+ return AdapterErrorCodes.UPDATE_INSUFFICIENT_ACCESS;
554
+ }
555
+ if (upperCode.includes('NOT_FOUND') || upperCode.includes('INVALID_ID')) {
556
+ return AdapterErrorCodes.UPDATE_RECORD_NOT_FOUND;
557
+ }
558
+ return AdapterErrorCodes.UPDATE_RECORD_FAILED;
559
+ }
560
+ /**
561
+ * Maps a Salesforce DML error code to a delete-specific adapter error code.
562
+ *
563
+ * Checks for patterns in the error code to determine the specific DML error type:
564
+ * - INSUFFICIENT_ACCESS/NO_ACCESS/PERMISSION → DELETE_INSUFFICIENT_ACCESS (E3211)
565
+ * - NOT_FOUND/INVALID_ID/ENTITY_IS_DELETED → DELETE_RECORD_NOT_FOUND (E3212)
566
+ * - Other → DELETE_RECORD_FAILED (E3210)
567
+ *
568
+ * @param sfErrorCode - The Salesforce error code to map
569
+ * @returns The corresponding adapter error code for delete operations
570
+ *
571
+ * @example
572
+ * ```typescript
573
+ * const adapterCode = mapDmlDeleteError('ENTITY_IS_DELETED');
574
+ * // Returns 'E3212' (DELETE_RECORD_NOT_FOUND)
575
+ * ```
576
+ */
577
+ export function mapDmlDeleteError(sfErrorCode) {
578
+ const upperCode = sfErrorCode.toUpperCase();
579
+ if (upperCode.includes('INSUFFICIENT_ACCESS') ||
580
+ upperCode.includes('NO_ACCESS') ||
581
+ upperCode.includes('PERMISSION')) {
582
+ return AdapterErrorCodes.DELETE_INSUFFICIENT_ACCESS;
583
+ }
584
+ if (upperCode.includes('NOT_FOUND') || upperCode.includes('INVALID_ID') || upperCode.includes('ENTITY_IS_DELETED')) {
585
+ return AdapterErrorCodes.DELETE_RECORD_NOT_FOUND;
586
+ }
587
+ return AdapterErrorCodes.DELETE_RECORD_FAILED;
588
+ }
589
+ /**
590
+ * Maps Salesforce error codes to adapter error codes.
591
+ *
592
+ * @param sfErrorCode - The Salesforce error code or error name
593
+ * @param category - The error category to use for mapping
594
+ * @returns The mapped adapter error code
595
+ *
596
+ * @example
597
+ * ```typescript
598
+ * const adapterCode = mapSalesforceError('INVALID_QUERY', 'soql');
599
+ * // Returns 'E3102'
600
+ * ```
601
+ */
602
+ export function mapSalesforceError(sfErrorCode, category) {
603
+ const upperCode = sfErrorCode.toUpperCase();
604
+ switch (category) {
605
+ case 'soql':
606
+ return mapSoqlError(upperCode);
607
+ case 'rest':
608
+ return mapRestError(upperCode);
609
+ case 'tooling':
610
+ return mapToolingError(upperCode);
611
+ }
612
+ }
613
+ /**
614
+ * Error code description map for user-friendly messages.
615
+ * Includes both adapter and service error codes.
616
+ */
617
+ export const ErrorCodeDescriptions = {
618
+ [AdapterErrorCodes.CONNECTION_NOT_AUTHENTICATED]: 'Connection is not authenticated or session has expired',
619
+ [AdapterErrorCodes.CONNECTION_INVALID]: 'Connection is missing required configuration',
620
+ [AdapterErrorCodes.QUERY_FAILED]: 'SOQL query execution failed',
621
+ [AdapterErrorCodes.QUERY_TIMEOUT]: 'SOQL query timed out',
622
+ [AdapterErrorCodes.INVALID_QUERY]: 'Invalid SOQL query syntax',
623
+ [AdapterErrorCodes.QUERY_TOO_MANY_ROWS]: 'Query returned more rows than the limit allows',
624
+ [AdapterErrorCodes.DESCRIBE_FAILED]: 'Failed to describe Salesforce object',
625
+ [AdapterErrorCodes.OBJECT_NOT_FOUND]: 'Salesforce object not found',
626
+ [AdapterErrorCodes.PERMISSION_DENIED]: 'Insufficient permissions to access this object',
627
+ [AdapterErrorCodes.GLOBAL_DESCRIBE_FAILED]: 'Failed to retrieve global object list',
628
+ [AdapterErrorCodes.INSERT_RECORD_FAILED]: 'Failed to insert sObject record',
629
+ [AdapterErrorCodes.INSERT_INSUFFICIENT_ACCESS]: 'Insufficient access to insert record',
630
+ [AdapterErrorCodes.INSERT_DUPLICATE_VALUE]: 'Duplicate record detected during insert',
631
+ [AdapterErrorCodes.UPDATE_RECORD_FAILED]: 'Failed to update sObject record',
632
+ [AdapterErrorCodes.UPDATE_INSUFFICIENT_ACCESS]: 'Insufficient access to update record',
633
+ [AdapterErrorCodes.UPDATE_RECORD_NOT_FOUND]: 'Record not found for update operation',
634
+ [AdapterErrorCodes.DELETE_RECORD_FAILED]: 'Failed to delete sObject record',
635
+ [AdapterErrorCodes.DELETE_INSUFFICIENT_ACCESS]: 'Insufficient access to delete record',
636
+ [AdapterErrorCodes.DELETE_RECORD_NOT_FOUND]: 'Record not found for delete operation',
637
+ [AdapterErrorCodes.REQUEST_FAILED]: 'Generic REST API request failed',
638
+ [AdapterErrorCodes.INSERT_NAMESPACE_VIOLATION]: 'Insert blocked: object must use pnova__ namespace or be in the explicit allowlist',
639
+ [AdapterErrorCodes.UPDATE_NAMESPACE_VIOLATION]: 'Update blocked: object must use pnova__ namespace',
640
+ [AdapterErrorCodes.DELETE_NAMESPACE_VIOLATION]: 'Delete blocked: object must use pnova__ namespace',
641
+ [AdapterErrorCodes.TOOLING_QUERY_FAILED]: 'Tooling API query failed',
642
+ [AdapterErrorCodes.METADATA_NOT_FOUND]: 'Metadata record not found',
643
+ [AdapterErrorCodes.TOOLING_ACCESS_DENIED]: 'Insufficient permissions for Tooling API access',
644
+ // Service Error Codes
645
+ [ServiceErrorCodes.INVALID_PAGINATION]: 'Invalid pagination parameters',
646
+ // ObjectFilteringService
647
+ [ServiceErrorCodes.FILTER_FAILED]: 'Object filter operation failed',
648
+ [ServiceErrorCodes.INVALID_TYPE]: "Invalid type parameter (must be 'standard', 'custom', or 'all')",
649
+ [ServiceErrorCodes.INVALID_NAMESPACE]: 'Invalid namespace format',
650
+ [ServiceErrorCodes.INVALID_NAME_FILTER]: "Invalid name filter (value required, operator must be 'startsWith', 'contains', or 'equals')",
651
+ [ServiceErrorCodes.INVALID_CLASSIFICATION]: "Invalid classification (must be 'customer', 'internal', or 'all')",
652
+ [ServiceErrorCodes.INVALID_OBJECT_NAMES]: 'Invalid objectNames array (required, non-empty, max 200 items)',
653
+ // RecordTypeService
654
+ [ServiceErrorCodes.RECORD_TYPE_QUERY_FAILED]: 'Record type query failed',
655
+ [ServiceErrorCodes.RECORD_TYPE_OBJECT_NOT_FOUND]: 'Object not found for record type query',
656
+ [ServiceErrorCodes.RECORD_TYPE_OBJECT_NAME_REQUIRED]: 'Object name is required',
657
+ [ServiceErrorCodes.RECORD_TYPE_INVALID_OBJECT_NAME]: 'Invalid object name format',
658
+ // TabDetectionService
659
+ [ServiceErrorCodes.TAB_QUERY_FAILED]: 'Tab query failed',
660
+ [ServiceErrorCodes.TAB_OBJECT_NAME_REQUIRED]: 'Object name is required',
661
+ [ServiceErrorCodes.TAB_INVALID_OBJECT_NAMES]: 'Invalid object names array (empty or exceeds max)',
662
+ // ProfilingDefinitionService
663
+ [ServiceErrorCodes.DEFINITION_QUERY_FAILED]: 'Definition query failed',
664
+ [ServiceErrorCodes.DEFINITION_NOT_FOUND]: 'Definition not found',
665
+ [ServiceErrorCodes.DEFINITION_CREATE_FAILED]: 'Definition create failed',
666
+ [ServiceErrorCodes.DEFINITION_UPDATE_FAILED]: 'Definition update failed',
667
+ [ServiceErrorCodes.DEFINITION_DELETE_FAILED]: 'Definition delete failed',
668
+ [ServiceErrorCodes.DEFINITION_INVALID_ID]: 'Invalid Salesforce ID format',
669
+ [ServiceErrorCodes.DEFINITION_INVALID_NAME]: 'Invalid definition name (required, 1-80 characters)',
670
+ [ServiceErrorCodes.DEFINITION_INVALID_OBJECT_NAME]: 'Invalid object API name',
671
+ [ServiceErrorCodes.DEFINITION_INVALID_CATEGORY]: 'Invalid category (max 255 characters)',
672
+ [ServiceErrorCodes.DEFINITION_UPDATE_EMPTY]: 'Update requires at least one field',
673
+ // ProfilingSummaryService
674
+ [ServiceErrorCodes.SUMMARY_QUERY_FAILED]: 'Summary query failed',
675
+ [ServiceErrorCodes.SUMMARY_NOT_FOUND]: 'Summary not found',
676
+ [ServiceErrorCodes.SUMMARY_DELETE_FAILED]: 'Summary delete failed',
677
+ [ServiceErrorCodes.SUMMARY_INVALID_DEFINITION_ID]: 'Invalid definition ID format',
678
+ [ServiceErrorCodes.SUMMARY_INVALID_IDS]: 'Invalid summary IDs array (empty or exceeds max)',
679
+ [ServiceErrorCodes.SUMMARY_INVALID_ID]: 'Invalid summary ID format',
680
+ [ServiceErrorCodes.PROFILED_OBJECTS_QUERY_FAILED]: 'Profiled objects query failed',
681
+ // SummaryPurgeOperation
682
+ [ServiceErrorCodes.SUMMARY_PURGE_NO_SELECTION]: 'No selection criteria specified for purge',
683
+ [ServiceErrorCodes.SUMMARY_PURGE_MUTUALLY_EXCLUSIVE]: 'Mutually exclusive flags: --ids cannot be combined with filter flags',
684
+ [ServiceErrorCodes.SUMMARY_PURGE_QUERY_FAILED]: 'Summary purge query failed',
685
+ [ServiceErrorCodes.SUMMARY_PURGE_NO_ELIGIBLE]: 'No eligible summaries found',
686
+ [ServiceErrorCodes.SUMMARY_PURGE_DELETE_FAILED]: 'Summary purge delete failed',
687
+ [ServiceErrorCodes.SUMMARY_PURGE_USER_CANCELLED]: 'Purge cancelled by user',
688
+ [ServiceErrorCodes.SUMMARY_PURGE_OPERATION_FAILED]: 'Summary purge operation failed',
689
+ [ServiceErrorCodes.SUMMARY_PURGE_INVALID_IDS]: 'Invalid summary IDs provided',
690
+ // SummaryStopOperation
691
+ [ServiceErrorCodes.SUMMARY_STOP_NO_SELECTION]: 'No selection criteria specified for stop',
692
+ [ServiceErrorCodes.SUMMARY_STOP_MUTUALLY_EXCLUSIVE]: 'Mutually exclusive flags: --ids cannot be combined with --all or --objects',
693
+ [ServiceErrorCodes.SUMMARY_STOP_QUERY_FAILED]: 'Summary stop query failed',
694
+ [ServiceErrorCodes.SUMMARY_STOP_NO_ELIGIBLE]: 'No stoppable summaries found',
695
+ [ServiceErrorCodes.SUMMARY_STOP_FAILED]: 'Summary stop REST call failed',
696
+ [ServiceErrorCodes.SUMMARY_STOP_USER_CANCELLED]: 'Stop cancelled by user',
697
+ [ServiceErrorCodes.SUMMARY_STOP_OPERATION_FAILED]: 'Summary stop operation failed',
698
+ [ServiceErrorCodes.SUMMARY_STOP_INVALID_IDS]: 'Invalid summary IDs for stop',
699
+ // SummaryReprofileOperation
700
+ [ServiceErrorCodes.SUMMARY_REPROFILE_NO_SELECTION]: 'No selection criteria specified for reprofile',
701
+ [ServiceErrorCodes.SUMMARY_REPROFILE_MUTUALLY_EXCLUSIVE]: 'Mutually exclusive flags: --ids cannot be combined with --all or --objects',
702
+ [ServiceErrorCodes.SUMMARY_REPROFILE_QUERY_FAILED]: 'Summary reprofile query failed',
703
+ [ServiceErrorCodes.SUMMARY_REPROFILE_NO_ELIGIBLE]: 'No reprofilable summaries found',
704
+ [ServiceErrorCodes.SUMMARY_REPROFILE_FAILED]: 'Summary reprofile REST call failed',
705
+ [ServiceErrorCodes.SUMMARY_REPROFILE_USER_CANCELLED]: 'Reprofile cancelled by user',
706
+ [ServiceErrorCodes.SUMMARY_REPROFILE_OPERATION_FAILED]: 'Summary reprofile operation failed',
707
+ [ServiceErrorCodes.SUMMARY_REPROFILE_INVALID_IDS]: 'Invalid summary IDs for reprofile',
708
+ // ContactPointService
709
+ [ServiceErrorCodes.CONTACT_POINT_ANALYSIS_FAILED]: 'Contact point analysis failed',
710
+ [ServiceErrorCodes.CONTACT_POINT_OBJECT_NAME_REQUIRED]: 'Object name is required',
711
+ [ServiceErrorCodes.CONTACT_POINT_INVALID_OBJECT_NAME]: 'Invalid object name format',
712
+ // ObjectListService
713
+ [ServiceErrorCodes.OBJECT_LIST_QUERY_FAILED]: 'Object list query failed',
714
+ [ServiceErrorCodes.OBJECT_LIST_GLOBAL_DESCRIBE_FAILED]: 'Global describe failed during object list operation',
715
+ [ServiceErrorCodes.OBJECT_LIST_INVALID_PAGINATION]: 'Invalid pagination parameters (limit, offset)',
716
+ [ServiceErrorCodes.OBJECT_LIST_FILTER_FAILED]: 'Object list filter operation failed',
717
+ [ServiceErrorCodes.OBJECT_LIST_TAB_DETECTION_FAILED]: 'Tab detection failed during enrichment',
718
+ [ServiceErrorCodes.OBJECT_LIST_CONTACT_POINT_FAILED]: 'Contact point analysis failed during enrichment',
719
+ [ServiceErrorCodes.OBJECT_LIST_ENRICHMENT_TIMEOUT]: 'Enrichment operation timed out',
720
+ [ServiceErrorCodes.OBJECT_LIST_INVALID_SORT]: "Invalid sort field or direction (must be 'name', 'label', or 'recordCount' and 'asc' or 'desc')",
721
+ [ServiceErrorCodes.OBJECT_LIST_INVALID_FILTER_TYPE]: "Invalid filter type (must be 'standard', 'custom', or 'all')",
722
+ [ServiceErrorCodes.OBJECT_LIST_INVALID_NAMESPACE]: 'Invalid namespace in filter',
723
+ [ServiceErrorCodes.OBJECT_LIST_RECORD_COUNT_FAILED]: 'Failed to get record count',
724
+ [ServiceErrorCodes.OBJECT_LIST_EMPTY_RESULT]: 'Empty result set',
725
+ // OrgInfoService
726
+ [ServiceErrorCodes.ORG_INFO_QUERY_FAILED]: 'Org info query failed',
727
+ [ServiceErrorCodes.ORG_IDENTITY_FAILED]: 'Failed to retrieve org identity',
728
+ [ServiceErrorCodes.ORG_LIMITS_FAILED]: 'Failed to retrieve org limits',
729
+ [ServiceErrorCodes.ORG_PACKAGE_QUERY_FAILED]: 'Failed to query installed packages',
730
+ [ServiceErrorCodes.ORG_NAMESPACE_QUERY_FAILED]: 'Failed to query org namespaces',
731
+ [ServiceErrorCodes.ORG_USER_COUNT_FAILED]: 'Failed to retrieve user count',
732
+ [ServiceErrorCodes.ORG_CUNEIFORM_VERSION_FAILED]: 'Failed to retrieve Cuneiform version',
733
+ [ServiceErrorCodes.ORG_FEATURES_QUERY_FAILED]: 'Failed to query org features',
734
+ [ServiceErrorCodes.ORG_EDITION_QUERY_FAILED]: 'Failed to query org edition',
735
+ [ServiceErrorCodes.ORG_BUSINESS_PROCESS_QUERY_FAILED]: 'Failed to query business processes',
736
+ // UserReadinessService
737
+ [ServiceErrorCodes.USER_READINESS_QUERY_FAILED]: 'User readiness query failed',
738
+ [ServiceErrorCodes.USER_PERMISSION_SET_CHECK_FAILED]: 'Failed to check user permission sets',
739
+ [ServiceErrorCodes.USER_CONFIG_PROFILE_CHECK_FAILED]: 'Failed to check user configuration profile',
740
+ [ServiceErrorCodes.USER_ID_REQUIRED]: 'User ID is required',
741
+ [ServiceErrorCodes.USER_CUNEIFORM_NAMESPACE_NOT_FOUND]: 'Cuneiform namespace not found (package not installed)',
742
+ [ServiceErrorCodes.USER_INFO_QUERY_FAILED]: 'User info query failed',
743
+ [ServiceErrorCodes.PROFILING_ACCESS_DENIED]: 'User lacks required permission sets for profiling access',
744
+ [ServiceErrorCodes.GLOBAL_PROFILING_NOT_ENABLED]: 'Global Profiling is not enabled in the org',
745
+ [ServiceErrorCodes.ENVIRONMENT_CONFIGURE_BLOCKED]: 'Configure operation blocked in production environment',
746
+ [ServiceErrorCodes.SELF_REGISTRATION_NOT_ENABLED]: 'CLI self-provisioning not enabled in Configuration Profile',
747
+ // UserConfigurationService
748
+ [ServiceErrorCodes.USER_CONFIG_USER_ID_REQUIRED]: 'User ID is required for configuration query',
749
+ [ServiceErrorCodes.USER_CONFIG_QUERY_FAILED]: 'User configuration query failed',
750
+ [ServiceErrorCodes.USER_CONFIG_INVALID_SETTINGS]: 'Invalid user configuration settings',
751
+ [ServiceErrorCodes.USER_CONFIG_DEPLOY_TRIGGER_FAILED]: 'CMT deployment via REST endpoint failed',
752
+ [ServiceErrorCodes.USER_CONFIG_JOB_QUERY_FAILED]: 'Background job query failed during configuration',
753
+ [ServiceErrorCodes.USER_CONFIG_PERMISSION_SET_NOT_FOUND]: 'Permission set not found in org',
754
+ [ServiceErrorCodes.USER_CONFIG_PERMISSION_SET_ASSIGN_FAILED]: 'Permission set assignment failed',
755
+ [ServiceErrorCodes.USER_CONFIG_INSUFFICIENT_ACCESS]: 'Insufficient access to assign permission sets',
756
+ [ServiceErrorCodes.USER_CONFIG_PARTIAL_FAILURE]: 'Some configuration actions failed (partial failure)',
757
+ [ServiceErrorCodes.USER_CONFIG_ALREADY_CONFIGURED]: 'Already configured, no changes needed',
758
+ [ServiceErrorCodes.REST_INSERT_FAILED]: 'sObject insert operation failed via REST API',
759
+ [ServiceErrorCodes.REST_INSERT_INSUFFICIENT_ACCESS]: 'Insufficient access to insert record',
760
+ [ServiceErrorCodes.REST_INSERT_DUPLICATE]: 'Duplicate record detected during insert',
761
+ [ServiceErrorCodes.USER_CONFIG_ENDPOINT_UNAVAILABLE]: 'Configuration REST endpoint not available — ISV upgrade required',
762
+ [ServiceErrorCodes.USER_CONFIG_ENDPOINT_INSUFFICIENT_ACCESS]: 'Insufficient access to the Cuneiform configuration REST endpoint',
763
+ [ServiceErrorCodes.USER_CONFIG_FEATURE_NOT_ENABLED]: 'Configuration feature is not enabled in this org',
764
+ // Feature Gate
765
+ [ServiceErrorCodes.FEATURE_NOT_ENABLED]: 'API-Based Profiling feature is not enabled for this organization',
766
+ [ServiceErrorCodes.FEATURE_STATUS_CHECK_FAILED]: 'Feature status endpoint check failed',
767
+ // ObjectDescribeService
768
+ [ServiceErrorCodes.OBJECT_DESCRIBE_FAILED]: 'Object describe operation failed',
769
+ [ServiceErrorCodes.OBJECT_DESCRIBE_NOT_FOUND]: 'Object not found for describe operation',
770
+ [ServiceErrorCodes.OBJECT_DESCRIBE_PERMISSION_DENIED]: 'Insufficient permissions to access object for describe operation',
771
+ [ServiceErrorCodes.OBJECT_DESCRIBE_OBJECT_NAME_REQUIRED]: 'Object name is required for describe operation',
772
+ [ServiceErrorCodes.OBJECT_DESCRIBE_INVALID_OBJECT_NAME]: 'Invalid object name format for describe operation',
773
+ [ServiceErrorCodes.OBJECT_DESCRIBE_BIG_OBJECT_REJECTED]: 'Big Objects are not supported for describe operations',
774
+ [ServiceErrorCodes.OBJECT_DESCRIBE_EXTERNAL_OBJECT_REJECTED]: 'External Objects are not supported for describe operations',
775
+ [ServiceErrorCodes.OBJECT_DESCRIBE_RECORD_TYPE_ENRICHMENT_FAILED]: 'Record type enrichment failed during describe operation',
776
+ [ServiceErrorCodes.OBJECT_DESCRIBE_DEFINITION_ENRICHMENT_FAILED]: 'Profiling definition enrichment failed during describe operation',
777
+ [ServiceErrorCodes.OBJECT_DESCRIBE_SUMMARY_ENRICHMENT_FAILED]: 'Profiling summary enrichment failed during describe operation',
778
+ // ProfilingExecutionService
779
+ [ServiceErrorCodes.PROFILING_EXECUTION_FAILED]: 'Profiling execution failed',
780
+ [ServiceErrorCodes.PROFILING_DEFINITION_ID_REQUIRED]: 'Definition ID is required for profiling execution',
781
+ [ServiceErrorCodes.PROFILING_INVALID_DEFINITION_ID]: 'Invalid profiling definition ID format',
782
+ [ServiceErrorCodes.PROFILING_DEFINITION_NOT_FOUND]: 'Profiling definition not found',
783
+ [ServiceErrorCodes.PROFILING_REST_TRIGGER_FAILED]: 'REST API trigger for profiling failed',
784
+ [ServiceErrorCodes.PROFILING_REQUEST_CREATION_FAILED]: 'Profiling request creation failed',
785
+ [ServiceErrorCodes.PROFILING_POLL_FAILED]: 'Profiling status poll failed',
786
+ [ServiceErrorCodes.PROFILING_TIMEOUT]: 'Profiling operation timed out',
787
+ [ServiceErrorCodes.PROFILING_REQUEST_NOT_FOUND]: 'Profiling request not found',
788
+ [ServiceErrorCodes.PROFILING_REQUEST_ID_EXTRACTION_FAILED]: 'Failed to extract profiling request ID',
789
+ [ServiceErrorCodes.PROFILING_BULK_EMPTY_DEFINITIONS]: 'Bulk execution requires at least one definition',
790
+ [ServiceErrorCodes.PROFILING_BULK_INVALID_PARALLEL]: 'Invalid parallel option for bulk execution (must be 1-10)',
791
+ [ServiceErrorCodes.PROFILING_BULK_EXECUTION_FAILED]: 'Bulk profiling execution failed',
792
+ [ServiceErrorCodes.PROFILING_REQUEST_ID_REQUIRED]: 'Request ID is required',
793
+ [ServiceErrorCodes.PROFILING_INVALID_REQUEST_ID]: 'Invalid profiling request ID format',
794
+ // ProfileRequestService
795
+ [ServiceErrorCodes.REQUEST_LIST_QUERY_FAILED]: 'Profile request list query failed',
796
+ [ServiceErrorCodes.REQUEST_NOT_FOUND]: 'Profile request not found',
797
+ [ServiceErrorCodes.REQUEST_CANCEL_FAILED]: 'Profile request cancel failed',
798
+ [ServiceErrorCodes.REQUEST_INVALID_IDS]: 'Invalid request IDs provided',
799
+ [ServiceErrorCodes.REQUEST_NO_CANCELLABLE]: 'No cancellable requests found',
800
+ [ServiceErrorCodes.REQUEST_CANCEL_PARTIAL_FAILURE]: 'Some requests failed to cancel (partial failure)',
801
+ [ServiceErrorCodes.REQUEST_DELETE_FAILED]: 'Profiling request deletion failed',
802
+ [ServiceErrorCodes.REQUEST_QUERY_FAILED]: 'Failed to query active profiling requests',
803
+ [ServiceErrorCodes.REQUEST_NO_DELETABLE]: 'No deletable requests found',
804
+ [ServiceErrorCodes.REQUEST_DELETE_PARTIAL_FAILURE]: 'Some requests failed to delete (partial failure)',
805
+ // DataAvailabilityService
806
+ [ServiceErrorCodes.DATA_AVAILABILITY_GRID_BUILD_FAILED]: 'Data availability grid build failed',
807
+ };
808
+ /**
809
+ * Extracts the Salesforce error code from an error object.
810
+ *
811
+ * This utility parses various error formats from jsforce and the Salesforce API
812
+ * to extract the underlying error code for proper error mapping.
813
+ *
814
+ * @param error - The error to extract from
815
+ * @returns The Salesforce error code or undefined
816
+ *
817
+ * @example
818
+ * ```typescript
819
+ * try {
820
+ * await connection.query('INVALID SOQL');
821
+ * } catch (error) {
822
+ * const sfErrorCode = extractSalesforceErrorCode(error);
823
+ * // Returns 'INVALID_QUERY' or similar
824
+ * }
825
+ * ```
826
+ */
827
+ export function extractSalesforceErrorCode(error) {
828
+ if (error && typeof error === 'object') {
829
+ const errorObj = error;
830
+ // Priority 1: jsforce error pattern (most specific)
831
+ if ('errorCode' in errorObj && typeof errorObj.errorCode === 'string') {
832
+ return errorObj.errorCode;
833
+ }
834
+ // Priority 2: API response error pattern (body.errorCode)
835
+ if ('body' in errorObj && typeof errorObj.body === 'object' && errorObj.body !== null) {
836
+ const body = errorObj.body;
837
+ if ('errorCode' in body && typeof body.errorCode === 'string') {
838
+ return body.errorCode;
839
+ }
840
+ }
841
+ // Priority 3: SfError pattern (name - but only if it looks like an error code)
842
+ if ('name' in errorObj && typeof errorObj.name === 'string') {
843
+ const name = errorObj.name;
844
+ // Only use name if it looks like a Salesforce error code (contains underscore or is all caps)
845
+ if (name.includes('_') || (name === name.toUpperCase() && name !== 'ERROR')) {
846
+ return name;
847
+ }
848
+ }
849
+ }
850
+ return undefined;
851
+ }
852
+ /**
853
+ * Regular expression for valid Salesforce API names.
854
+ * Salesforce object and field names must:
855
+ * - Start with a letter
856
+ * - Contain only letters, numbers, and underscores
857
+ * - Custom objects/fields may end with __c, __mdt, __e, __b, __x, __r, etc.
858
+ * - Namespaced names follow pattern: Namespace__ObjectName__c
859
+ *
860
+ * This pattern allows:
861
+ * - Standard objects: Account, Contact
862
+ * - Custom objects: Custom_Object__c
863
+ * - Namespaced objects: MyNamespace__Object__c
864
+ * - Custom metadata: Config__mdt
865
+ * - Platform events: Order_Event__e
866
+ * - Relationships: Account__r
867
+ */
868
+ const SALESFORCE_API_NAME_REGEX = /^[A-Za-z][A-Za-z0-9_]*$/;
869
+ /**
870
+ * Validates and sanitizes a Salesforce API name for use in SOQL queries.
871
+ *
872
+ * This function prevents SOQL injection by validating that the input
873
+ * matches the expected pattern for Salesforce API names.
874
+ *
875
+ * @param value - The value to sanitize (object name, field name, etc.)
876
+ * @returns The validated value
877
+ * @throws {SfError} InvalidApiName if the value contains invalid characters
878
+ *
879
+ * @example
880
+ * ```typescript
881
+ * sanitizeSoqlIdentifier('Account'); // Returns 'Account'
882
+ * sanitizeSoqlIdentifier('Custom_Object__c'); // Returns 'Custom_Object__c'
883
+ * sanitizeSoqlIdentifier("Account' OR '1'='1"); // Throws Error
884
+ * ```
885
+ */
886
+ export function sanitizeSoqlIdentifier(value) {
887
+ if (!SALESFORCE_API_NAME_REGEX.test(value)) {
888
+ throw new SfError(`Invalid Salesforce API name: "${value}". ` +
889
+ 'API names must start with a letter and contain only letters, numbers, and underscores.', 'InvalidApiName');
890
+ }
891
+ return value;
892
+ }
893
+ /**
894
+ * Escapes a string value for use in SOQL string literals.
895
+ *
896
+ * This function escapes single quotes and backslashes to prevent
897
+ * SOQL injection when the value must be used as a string literal.
898
+ *
899
+ * @param value - The string value to escape
900
+ * @returns The escaped string (without surrounding quotes)
901
+ *
902
+ * @example
903
+ * ```typescript
904
+ * escapeSoqlString("O'Brien"); // Returns "O\\'Brien"
905
+ * escapeSoqlString('Test\\Path'); // Returns 'Test\\\\Path'
906
+ * ```
907
+ */
908
+ export function escapeSoqlString(value) {
909
+ return value.replace(/\\/g, '\\\\').replace(/'/g, "\\'");
910
+ }
911
+ /**
912
+ * Detects whether an error message indicates an org connectivity issue
913
+ * (unreachable org, expired session, HTML response instead of JSON, etc.).
914
+ *
915
+ * jsforce and the Salesforce REST API return HTML responses (login pages, error pages)
916
+ * when an org is unreachable, expired, or the session is invalid. These produce
917
+ * cryptic error messages like "HTTP response contains html content" that are
918
+ * unhelpful to CLI users.
919
+ *
920
+ * @param message - The error message string to check
921
+ * @returns true if the message indicates an org connectivity problem
922
+ */
923
+ export function isOrgConnectivityError(message) {
924
+ if (!message)
925
+ return false;
926
+ const lower = message.toLowerCase();
927
+ return (lower.includes('html content') ||
928
+ lower.includes('html response') ||
929
+ lower.includes('enotfound') ||
930
+ lower.includes('econnrefused') ||
931
+ lower.includes('econnreset') ||
932
+ lower.includes('etimedout') ||
933
+ lower.includes('session expired') ||
934
+ lower.includes('invalid_session_id') ||
935
+ lower.includes('request_limit_exceeded'));
936
+ }
937
+ //# sourceMappingURL=errors.js.map