@jterrats/smart-deployment 1.0.3

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 (395) hide show
  1. package/README.md +193 -0
  2. package/lib/ai/agentforce-error-handler.d.ts +81 -0
  3. package/lib/ai/agentforce-error-handler.js +196 -0
  4. package/lib/ai/agentforce-error-handler.js.map +1 -0
  5. package/lib/ai/agentforce-priority-service.d.ts +82 -0
  6. package/lib/ai/agentforce-priority-service.js +257 -0
  7. package/lib/ai/agentforce-priority-service.js.map +1 -0
  8. package/lib/ai/agentforce-service.d.ts +99 -0
  9. package/lib/ai/agentforce-service.js +300 -0
  10. package/lib/ai/agentforce-service.js.map +1 -0
  11. package/lib/ai/circuit-breaker.d.ts +115 -0
  12. package/lib/ai/circuit-breaker.js +277 -0
  13. package/lib/ai/circuit-breaker.js.map +1 -0
  14. package/lib/ai/dependency-inference-service.d.ts +76 -0
  15. package/lib/ai/dependency-inference-service.js +220 -0
  16. package/lib/ai/dependency-inference-service.js.map +1 -0
  17. package/lib/ai/llm-provider-factory.d.ts +15 -0
  18. package/lib/ai/llm-provider-factory.js +36 -0
  19. package/lib/ai/llm-provider-factory.js.map +1 -0
  20. package/lib/ai/llm-provider.d.ts +27 -0
  21. package/lib/ai/llm-provider.js +2 -0
  22. package/lib/ai/llm-provider.js.map +1 -0
  23. package/lib/ai/openai-service.d.ts +20 -0
  24. package/lib/ai/openai-service.js +89 -0
  25. package/lib/ai/openai-service.js.map +1 -0
  26. package/lib/ai/prompt-builder.d.ts +79 -0
  27. package/lib/ai/prompt-builder.js +180 -0
  28. package/lib/ai/prompt-builder.js.map +1 -0
  29. package/lib/ai/response-parser.d.ts +67 -0
  30. package/lib/ai/response-parser.js +234 -0
  31. package/lib/ai/response-parser.js.map +1 -0
  32. package/lib/ai/wave-validation-service.d.ts +111 -0
  33. package/lib/ai/wave-validation-service.js +381 -0
  34. package/lib/ai/wave-validation-service.js.map +1 -0
  35. package/lib/analysis/analysis-reporter.d.ts +56 -0
  36. package/lib/analysis/analysis-reporter.js +170 -0
  37. package/lib/analysis/analysis-reporter.js.map +1 -0
  38. package/lib/analytics/error-analytics.d.ts +80 -0
  39. package/lib/analytics/error-analytics.js +162 -0
  40. package/lib/analytics/error-analytics.js.map +1 -0
  41. package/lib/commands/analyze.d.ts +49 -0
  42. package/lib/commands/analyze.js +232 -0
  43. package/lib/commands/analyze.js.map +1 -0
  44. package/lib/commands/config.d.ts +42 -0
  45. package/lib/commands/config.js +219 -0
  46. package/lib/commands/config.js.map +1 -0
  47. package/lib/commands/resume.d.ts +26 -0
  48. package/lib/commands/resume.js +69 -0
  49. package/lib/commands/resume.js.map +1 -0
  50. package/lib/commands/start.d.ts +70 -0
  51. package/lib/commands/start.js +659 -0
  52. package/lib/commands/start.js.map +1 -0
  53. package/lib/commands/status.d.ts +37 -0
  54. package/lib/commands/status.js +69 -0
  55. package/lib/commands/status.js.map +1 -0
  56. package/lib/commands/validate.d.ts +33 -0
  57. package/lib/commands/validate.js +66 -0
  58. package/lib/commands/validate.js.map +1 -0
  59. package/lib/config/repo-config.d.ts +22 -0
  60. package/lib/config/repo-config.js +31 -0
  61. package/lib/config/repo-config.js.map +1 -0
  62. package/lib/constants/agentforce-limits.d.ts +174 -0
  63. package/lib/constants/agentforce-limits.js +262 -0
  64. package/lib/constants/agentforce-limits.js.map +1 -0
  65. package/lib/constants/api-version.d.ts +70 -0
  66. package/lib/constants/api-version.js +122 -0
  67. package/lib/constants/api-version.js.map +1 -0
  68. package/lib/constants/deployment-order.d.ts +68 -0
  69. package/lib/constants/deployment-order.js +162 -0
  70. package/lib/constants/deployment-order.js.map +1 -0
  71. package/lib/constants/salesforce-limits.d.ts +107 -0
  72. package/lib/constants/salesforce-limits.js +104 -0
  73. package/lib/constants/salesforce-limits.js.map +1 -0
  74. package/lib/dependencies/circular-dependency-detector.d.ts +137 -0
  75. package/lib/dependencies/circular-dependency-detector.js +329 -0
  76. package/lib/dependencies/circular-dependency-detector.js.map +1 -0
  77. package/lib/dependencies/cycle-remediation-planner.d.ts +50 -0
  78. package/lib/dependencies/cycle-remediation-planner.js +192 -0
  79. package/lib/dependencies/cycle-remediation-planner.js.map +1 -0
  80. package/lib/dependencies/dependency-cache.d.ts +134 -0
  81. package/lib/dependencies/dependency-cache.js +303 -0
  82. package/lib/dependencies/dependency-cache.js.map +1 -0
  83. package/lib/dependencies/dependency-depth-calculator.d.ts +145 -0
  84. package/lib/dependencies/dependency-depth-calculator.js +368 -0
  85. package/lib/dependencies/dependency-depth-calculator.js.map +1 -0
  86. package/lib/dependencies/dependency-graph-builder.d.ts +151 -0
  87. package/lib/dependencies/dependency-graph-builder.js +411 -0
  88. package/lib/dependencies/dependency-graph-builder.js.map +1 -0
  89. package/lib/dependencies/dependency-impact-analyzer.d.ts +145 -0
  90. package/lib/dependencies/dependency-impact-analyzer.js +330 -0
  91. package/lib/dependencies/dependency-impact-analyzer.js.map +1 -0
  92. package/lib/dependencies/dependency-merger.d.ts +122 -0
  93. package/lib/dependencies/dependency-merger.js +245 -0
  94. package/lib/dependencies/dependency-merger.js.map +1 -0
  95. package/lib/dependencies/dependency-resolver.d.ts +157 -0
  96. package/lib/dependencies/dependency-resolver.js +298 -0
  97. package/lib/dependencies/dependency-resolver.js.map +1 -0
  98. package/lib/dependencies/dependency-validator.d.ts +123 -0
  99. package/lib/dependencies/dependency-validator.js +291 -0
  100. package/lib/dependencies/dependency-validator.js.map +1 -0
  101. package/lib/dependencies/graph-visualizer.d.ts +110 -0
  102. package/lib/dependencies/graph-visualizer.js +262 -0
  103. package/lib/dependencies/graph-visualizer.js.map +1 -0
  104. package/lib/dependencies/heuristic-inference.d.ts +136 -0
  105. package/lib/dependencies/heuristic-inference.js +430 -0
  106. package/lib/dependencies/heuristic-inference.js.map +1 -0
  107. package/lib/deployment/cycle-source-editor.d.ts +34 -0
  108. package/lib/deployment/cycle-source-editor.js +121 -0
  109. package/lib/deployment/cycle-source-editor.js.map +1 -0
  110. package/lib/deployment/deployment-error-handler.d.ts +38 -0
  111. package/lib/deployment/deployment-error-handler.js +79 -0
  112. package/lib/deployment/deployment-error-handler.js.map +1 -0
  113. package/lib/deployment/deployment-reporter.d.ts +63 -0
  114. package/lib/deployment/deployment-reporter.js +150 -0
  115. package/lib/deployment/deployment-reporter.js.map +1 -0
  116. package/lib/deployment/deployment-state-summary.d.ts +38 -0
  117. package/lib/deployment/deployment-state-summary.js +209 -0
  118. package/lib/deployment/deployment-state-summary.js.map +1 -0
  119. package/lib/deployment/deployment-status-service.d.ts +36 -0
  120. package/lib/deployment/deployment-status-service.js +128 -0
  121. package/lib/deployment/deployment-status-service.js.map +1 -0
  122. package/lib/deployment/deployment-tracker.d.ts +42 -0
  123. package/lib/deployment/deployment-tracker.js +79 -0
  124. package/lib/deployment/deployment-tracker.js.map +1 -0
  125. package/lib/deployment/deployment-validation-service.d.ts +28 -0
  126. package/lib/deployment/deployment-validation-service.js +161 -0
  127. package/lib/deployment/deployment-validation-service.js.map +1 -0
  128. package/lib/deployment/retry-handler.d.ts +37 -0
  129. package/lib/deployment/retry-handler.js +86 -0
  130. package/lib/deployment/retry-handler.js.map +1 -0
  131. package/lib/deployment/sf-cli-integration.d.ts +42 -0
  132. package/lib/deployment/sf-cli-integration.js +105 -0
  133. package/lib/deployment/sf-cli-integration.js.map +1 -0
  134. package/lib/deployment/state-manager.d.ts +61 -0
  135. package/lib/deployment/state-manager.js +83 -0
  136. package/lib/deployment/state-manager.js.map +1 -0
  137. package/lib/deployment/test-executor.d.ts +41 -0
  138. package/lib/deployment/test-executor.js +87 -0
  139. package/lib/deployment/test-executor.js.map +1 -0
  140. package/lib/errors/base-error.d.ts +24 -0
  141. package/lib/errors/base-error.js +66 -0
  142. package/lib/errors/base-error.js.map +1 -0
  143. package/lib/errors/dependency-error.d.ts +37 -0
  144. package/lib/errors/dependency-error.js +76 -0
  145. package/lib/errors/dependency-error.js.map +1 -0
  146. package/lib/errors/deployment-error.d.ts +55 -0
  147. package/lib/errors/deployment-error.js +132 -0
  148. package/lib/errors/deployment-error.js.map +1 -0
  149. package/lib/errors/index.d.ts +45 -0
  150. package/lib/errors/index.js +71 -0
  151. package/lib/errors/index.js.map +1 -0
  152. package/lib/errors/network-error.d.ts +53 -0
  153. package/lib/errors/network-error.js +111 -0
  154. package/lib/errors/network-error.js.map +1 -0
  155. package/lib/errors/parsing-error.d.ts +41 -0
  156. package/lib/errors/parsing-error.js +69 -0
  157. package/lib/errors/parsing-error.js.map +1 -0
  158. package/lib/errors/validation-error-reporter.d.ts +34 -0
  159. package/lib/errors/validation-error-reporter.js +99 -0
  160. package/lib/errors/validation-error-reporter.js.map +1 -0
  161. package/lib/errors/validation-error.d.ts +58 -0
  162. package/lib/errors/validation-error.js +131 -0
  163. package/lib/errors/validation-error.js.map +1 -0
  164. package/lib/index.d.ts +2 -0
  165. package/lib/index.js +2 -0
  166. package/lib/index.js.map +1 -0
  167. package/lib/monitoring/performance-monitor.d.ts +98 -0
  168. package/lib/monitoring/performance-monitor.js +260 -0
  169. package/lib/monitoring/performance-monitor.js.map +1 -0
  170. package/lib/parsers/apex-class-parser.d.ts +47 -0
  171. package/lib/parsers/apex-class-parser.js +368 -0
  172. package/lib/parsers/apex-class-parser.js.map +1 -0
  173. package/lib/parsers/apex-trigger-parser.d.ts +48 -0
  174. package/lib/parsers/apex-trigger-parser.js +229 -0
  175. package/lib/parsers/apex-trigger-parser.js.map +1 -0
  176. package/lib/parsers/aura-parser.d.ts +55 -0
  177. package/lib/parsers/aura-parser.js +229 -0
  178. package/lib/parsers/aura-parser.js.map +1 -0
  179. package/lib/parsers/bot-parser.d.ts +65 -0
  180. package/lib/parsers/bot-parser.js +225 -0
  181. package/lib/parsers/bot-parser.js.map +1 -0
  182. package/lib/parsers/custom-metadata-parser.d.ts +94 -0
  183. package/lib/parsers/custom-metadata-parser.js +199 -0
  184. package/lib/parsers/custom-metadata-parser.js.map +1 -0
  185. package/lib/parsers/custom-object-parser.d.ts +62 -0
  186. package/lib/parsers/custom-object-parser.js +297 -0
  187. package/lib/parsers/custom-object-parser.js.map +1 -0
  188. package/lib/parsers/email-template-parser.d.ts +64 -0
  189. package/lib/parsers/email-template-parser.js +238 -0
  190. package/lib/parsers/email-template-parser.js.map +1 -0
  191. package/lib/parsers/error-resilient-parser.d.ts +110 -0
  192. package/lib/parsers/error-resilient-parser.js +277 -0
  193. package/lib/parsers/error-resilient-parser.js.map +1 -0
  194. package/lib/parsers/flexipage-parser.d.ts +64 -0
  195. package/lib/parsers/flexipage-parser.js +196 -0
  196. package/lib/parsers/flexipage-parser.js.map +1 -0
  197. package/lib/parsers/flow-parser.d.ts +54 -0
  198. package/lib/parsers/flow-parser.js +287 -0
  199. package/lib/parsers/flow-parser.js.map +1 -0
  200. package/lib/parsers/genai-prompt-parser.d.ts +67 -0
  201. package/lib/parsers/genai-prompt-parser.js +160 -0
  202. package/lib/parsers/genai-prompt-parser.js.map +1 -0
  203. package/lib/parsers/layout-parser.d.ts +64 -0
  204. package/lib/parsers/layout-parser.js +267 -0
  205. package/lib/parsers/layout-parser.js.map +1 -0
  206. package/lib/parsers/lwc-parser.d.ts +60 -0
  207. package/lib/parsers/lwc-parser.js +264 -0
  208. package/lib/parsers/lwc-parser.js.map +1 -0
  209. package/lib/parsers/permission-set-parser.d.ts +86 -0
  210. package/lib/parsers/permission-set-parser.js +152 -0
  211. package/lib/parsers/permission-set-parser.js.map +1 -0
  212. package/lib/parsers/profile-parser.d.ts +81 -0
  213. package/lib/parsers/profile-parser.js +141 -0
  214. package/lib/parsers/profile-parser.js.map +1 -0
  215. package/lib/parsers/visualforce-parser.d.ts +47 -0
  216. package/lib/parsers/visualforce-parser.js +180 -0
  217. package/lib/parsers/visualforce-parser.js.map +1 -0
  218. package/lib/provisioning/data-provisioner.d.ts +88 -0
  219. package/lib/provisioning/data-provisioner.js +257 -0
  220. package/lib/provisioning/data-provisioner.js.map +1 -0
  221. package/lib/scanner/custom-structure-scanner.d.ts +66 -0
  222. package/lib/scanner/custom-structure-scanner.js +229 -0
  223. package/lib/scanner/custom-structure-scanner.js.map +1 -0
  224. package/lib/scanner/forceignore-parser.d.ts +69 -0
  225. package/lib/scanner/forceignore-parser.js +195 -0
  226. package/lib/scanner/forceignore-parser.js.map +1 -0
  227. package/lib/scanner/metadata-format-scanner.d.ts +77 -0
  228. package/lib/scanner/metadata-format-scanner.js +282 -0
  229. package/lib/scanner/metadata-format-scanner.js.map +1 -0
  230. package/lib/scanner/monorepo-scanner.d.ts +71 -0
  231. package/lib/scanner/monorepo-scanner.js +225 -0
  232. package/lib/scanner/monorepo-scanner.js.map +1 -0
  233. package/lib/scanner/project-validator.d.ts +55 -0
  234. package/lib/scanner/project-validator.js +235 -0
  235. package/lib/scanner/project-validator.js.map +1 -0
  236. package/lib/scanner/sfdx-project-detector.d.ts +86 -0
  237. package/lib/scanner/sfdx-project-detector.js +240 -0
  238. package/lib/scanner/sfdx-project-detector.js.map +1 -0
  239. package/lib/scanner/structure-validator.d.ts +64 -0
  240. package/lib/scanner/structure-validator.js +296 -0
  241. package/lib/scanner/structure-validator.js.map +1 -0
  242. package/lib/services/metadata-scanner-service.d.ts +64 -0
  243. package/lib/services/metadata-scanner-service.js +651 -0
  244. package/lib/services/metadata-scanner-service.js.map +1 -0
  245. package/lib/types/agentforce.d.ts +157 -0
  246. package/lib/types/agentforce.js +2 -0
  247. package/lib/types/agentforce.js.map +1 -0
  248. package/lib/types/dependency.d.ts +98 -0
  249. package/lib/types/dependency.js +5 -0
  250. package/lib/types/dependency.js.map +1 -0
  251. package/lib/types/deployment-plan.d.ts +81 -0
  252. package/lib/types/deployment-plan.js +6 -0
  253. package/lib/types/deployment-plan.js.map +1 -0
  254. package/lib/types/deployment.d.ts +88 -0
  255. package/lib/types/deployment.js +5 -0
  256. package/lib/types/deployment.js.map +1 -0
  257. package/lib/types/graph.d.ts +35 -0
  258. package/lib/types/graph.js +5 -0
  259. package/lib/types/graph.js.map +1 -0
  260. package/lib/types/index.d.ts +12 -0
  261. package/lib/types/index.js +17 -0
  262. package/lib/types/index.js.map +1 -0
  263. package/lib/types/metadata.d.ts +101 -0
  264. package/lib/types/metadata.js +13 -0
  265. package/lib/types/metadata.js.map +1 -0
  266. package/lib/types/project.d.ts +156 -0
  267. package/lib/types/project.js +56 -0
  268. package/lib/types/project.js.map +1 -0
  269. package/lib/types/salesforce/apex.d.ts +94 -0
  270. package/lib/types/salesforce/apex.js +6 -0
  271. package/lib/types/salesforce/apex.js.map +1 -0
  272. package/lib/types/salesforce/aura.d.ts +150 -0
  273. package/lib/types/salesforce/aura.js +6 -0
  274. package/lib/types/salesforce/aura.js.map +1 -0
  275. package/lib/types/salesforce/bot.d.ts +293 -0
  276. package/lib/types/salesforce/bot.js +6 -0
  277. package/lib/types/salesforce/bot.js.map +1 -0
  278. package/lib/types/salesforce/common.d.ts +15 -0
  279. package/lib/types/salesforce/common.js +5 -0
  280. package/lib/types/salesforce/common.js.map +1 -0
  281. package/lib/types/salesforce/custom-metadata.d.ts +92 -0
  282. package/lib/types/salesforce/custom-metadata.js +6 -0
  283. package/lib/types/salesforce/custom-metadata.js.map +1 -0
  284. package/lib/types/salesforce/email.d.ts +56 -0
  285. package/lib/types/salesforce/email.js +6 -0
  286. package/lib/types/salesforce/email.js.map +1 -0
  287. package/lib/types/salesforce/flexipage.d.ts +149 -0
  288. package/lib/types/salesforce/flexipage.js +6 -0
  289. package/lib/types/salesforce/flexipage.js.map +1 -0
  290. package/lib/types/salesforce/flow.d.ts +516 -0
  291. package/lib/types/salesforce/flow.js +6 -0
  292. package/lib/types/salesforce/flow.js.map +1 -0
  293. package/lib/types/salesforce/genai.d.ts +67 -0
  294. package/lib/types/salesforce/genai.js +6 -0
  295. package/lib/types/salesforce/genai.js.map +1 -0
  296. package/lib/types/salesforce/index.d.ts +27 -0
  297. package/lib/types/salesforce/index.js +43 -0
  298. package/lib/types/salesforce/index.js.map +1 -0
  299. package/lib/types/salesforce/layout.d.ts +236 -0
  300. package/lib/types/salesforce/layout.js +6 -0
  301. package/lib/types/salesforce/layout.js.map +1 -0
  302. package/lib/types/salesforce/lwc.d.ts +123 -0
  303. package/lib/types/salesforce/lwc.js +6 -0
  304. package/lib/types/salesforce/lwc.js.map +1 -0
  305. package/lib/types/salesforce/object.d.ts +427 -0
  306. package/lib/types/salesforce/object.js +6 -0
  307. package/lib/types/salesforce/object.js.map +1 -0
  308. package/lib/types/salesforce/parser-types.d.ts +79 -0
  309. package/lib/types/salesforce/parser-types.js +80 -0
  310. package/lib/types/salesforce/parser-types.js.map +1 -0
  311. package/lib/types/salesforce/permission.d.ts +289 -0
  312. package/lib/types/salesforce/permission.js +6 -0
  313. package/lib/types/salesforce/permission.js.map +1 -0
  314. package/lib/types/salesforce/resource.d.ts +93 -0
  315. package/lib/types/salesforce/resource.js +6 -0
  316. package/lib/types/salesforce/resource.js.map +1 -0
  317. package/lib/types/salesforce/visualforce.d.ts +70 -0
  318. package/lib/types/salesforce/visualforce.js +6 -0
  319. package/lib/types/salesforce/visualforce.js.map +1 -0
  320. package/lib/utils/cache-manager.d.ts +158 -0
  321. package/lib/utils/cache-manager.js +429 -0
  322. package/lib/utils/cache-manager.js.map +1 -0
  323. package/lib/utils/deployment-plan-manager.d.ts +40 -0
  324. package/lib/utils/deployment-plan-manager.js +183 -0
  325. package/lib/utils/deployment-plan-manager.js.map +1 -0
  326. package/lib/utils/error-aggregator.d.ts +117 -0
  327. package/lib/utils/error-aggregator.js +268 -0
  328. package/lib/utils/error-aggregator.js.map +1 -0
  329. package/lib/utils/file-system.d.ts +62 -0
  330. package/lib/utils/file-system.js +167 -0
  331. package/lib/utils/file-system.js.map +1 -0
  332. package/lib/utils/functional.d.ts +52 -0
  333. package/lib/utils/functional.js +61 -0
  334. package/lib/utils/functional.js.map +1 -0
  335. package/lib/utils/graph-algorithms.d.ts +53 -0
  336. package/lib/utils/graph-algorithms.js +177 -0
  337. package/lib/utils/graph-algorithms.js.map +1 -0
  338. package/lib/utils/logger.d.ts +154 -0
  339. package/lib/utils/logger.js +327 -0
  340. package/lib/utils/logger.js.map +1 -0
  341. package/lib/utils/network-handler.d.ts +64 -0
  342. package/lib/utils/network-handler.js +147 -0
  343. package/lib/utils/network-handler.js.map +1 -0
  344. package/lib/utils/performance.d.ts +148 -0
  345. package/lib/utils/performance.js +294 -0
  346. package/lib/utils/performance.js.map +1 -0
  347. package/lib/utils/string.d.ts +197 -0
  348. package/lib/utils/string.js +331 -0
  349. package/lib/utils/string.js.map +1 -0
  350. package/lib/utils/xml.d.ts +97 -0
  351. package/lib/utils/xml.js +227 -0
  352. package/lib/utils/xml.js.map +1 -0
  353. package/lib/validators/xml-metadata-validator.d.ts +106 -0
  354. package/lib/validators/xml-metadata-validator.js +509 -0
  355. package/lib/validators/xml-metadata-validator.js.map +1 -0
  356. package/lib/waves/priority-wave-generator-ai.d.ts +85 -0
  357. package/lib/waves/priority-wave-generator-ai.js +191 -0
  358. package/lib/waves/priority-wave-generator-ai.js.map +1 -0
  359. package/lib/waves/priority-wave-generator.d.ts +47 -0
  360. package/lib/waves/priority-wave-generator.js +88 -0
  361. package/lib/waves/priority-wave-generator.js.map +1 -0
  362. package/lib/waves/test-optimizer.d.ts +155 -0
  363. package/lib/waves/test-optimizer.js +290 -0
  364. package/lib/waves/test-optimizer.js.map +1 -0
  365. package/lib/waves/wave-builder.d.ts +147 -0
  366. package/lib/waves/wave-builder.js +286 -0
  367. package/lib/waves/wave-builder.js.map +1 -0
  368. package/lib/waves/wave-diff-generator.d.ts +17 -0
  369. package/lib/waves/wave-diff-generator.js +6 -0
  370. package/lib/waves/wave-diff-generator.js.map +1 -0
  371. package/lib/waves/wave-executor.d.ts +33 -0
  372. package/lib/waves/wave-executor.js +50 -0
  373. package/lib/waves/wave-executor.js.map +1 -0
  374. package/lib/waves/wave-merger.d.ts +96 -0
  375. package/lib/waves/wave-merger.js +181 -0
  376. package/lib/waves/wave-merger.js.map +1 -0
  377. package/lib/waves/wave-metadata-generator.d.ts +13 -0
  378. package/lib/waves/wave-metadata-generator.js +12 -0
  379. package/lib/waves/wave-metadata-generator.js.map +1 -0
  380. package/lib/waves/wave-splitter.d.ts +154 -0
  381. package/lib/waves/wave-splitter.js +307 -0
  382. package/lib/waves/wave-splitter.js.map +1 -0
  383. package/lib/waves/wave-validator.d.ts +17 -0
  384. package/lib/waves/wave-validator.js +15 -0
  385. package/lib/waves/wave-validator.js.map +1 -0
  386. package/messages/analyze.json +18 -0
  387. package/messages/config.json +29 -0
  388. package/messages/resume.json +9 -0
  389. package/messages/start.json +24 -0
  390. package/messages/status.json +8 -0
  391. package/messages/validate.json +9 -0
  392. package/npm-shrinkwrap.json +25676 -0
  393. package/oclif.lock +11988 -0
  394. package/oclif.manifest.json +589 -0
  395. package/package.json +224 -0
@@ -0,0 +1,257 @@
1
+ /**
2
+ * Agentforce Priority Service - US-057
3
+ * Uses Salesforce AI to suggest component deployment priorities
4
+ *
5
+ * @ac US-057-AC-1: Send component list to Agentforce
6
+ * @ac US-057-AC-2: Receive priority recommendations
7
+ * @ac US-057-AC-3: Consider business criticality
8
+ * @ac US-057-AC-4: Consider failure impact
9
+ * @ac US-057-AC-5: Merge with static priorities
10
+ * @ac US-057-AC-6: Report AI decisions
11
+ * @issue #57
12
+ */
13
+ import { getLogger } from '../utils/logger.js';
14
+ import { createLLMProvider } from './llm-provider-factory.js';
15
+ const logger = getLogger('AgentforcePriorityService');
16
+ /**
17
+ * @ac US-057-AC-1: Send component list to Agentforce
18
+ * @ac US-057-AC-2: Receive priority recommendations
19
+ */
20
+ export class AgentforcePriorityService {
21
+ llmProvider;
22
+ enabled;
23
+ constructor(config = {}) {
24
+ this.llmProvider =
25
+ config.llmProvider ??
26
+ createLLMProvider({
27
+ baseDir: config.baseDir,
28
+ provider: config.provider,
29
+ endpoint: config.endpoint,
30
+ apiKey: config.apiKey,
31
+ model: config.model,
32
+ timeout: config.timeout,
33
+ maxRetries: config.maxRetries,
34
+ enabled: config.enabled,
35
+ rateLimit: config.rateLimit,
36
+ fetchFn: config.fetchFn,
37
+ });
38
+ this.enabled = this.llmProvider.isEnabled();
39
+ }
40
+ /**
41
+ * @ac US-057-AC-1: Send component list to Agentforce
42
+ * @ac US-057-AC-2: Receive priority recommendations
43
+ * @ac US-057-AC-3: Consider business criticality
44
+ * @ac US-057-AC-4: Consider failure impact
45
+ */
46
+ async analyzePriorities(components, context) {
47
+ const startTime = Date.now();
48
+ const prompt = this.buildPriorityPrompt(components, context);
49
+ if (!this.enabled) {
50
+ logger.info('Agentforce disabled, returning empty recommendations');
51
+ return {
52
+ recommendations: [],
53
+ totalComponents: components.length,
54
+ aiAdjustments: 0,
55
+ executionTime: 0,
56
+ usedFallback: false,
57
+ };
58
+ }
59
+ logger.info('Analyzing component priorities with Agentforce', {
60
+ componentCount: components.length,
61
+ orgType: context?.orgType,
62
+ industry: context?.industry,
63
+ });
64
+ try {
65
+ const response = await this.llmProvider.sendRequest({
66
+ model: this.llmProvider.getConfig().model,
67
+ prompt,
68
+ temperature: 0.2,
69
+ maxTokens: 4000,
70
+ });
71
+ const recommendations = this.parseResponse(response.content);
72
+ const executionTime = Date.now() - startTime;
73
+ logger.info('Priority analysis complete', {
74
+ recommendations: recommendations.length,
75
+ executionTime,
76
+ });
77
+ return {
78
+ recommendations,
79
+ totalComponents: components.length,
80
+ aiAdjustments: recommendations.filter((r) => r.confidence > 0.8).length,
81
+ executionTime,
82
+ tokensUsed: response.tokensUsed,
83
+ usedFallback: false,
84
+ };
85
+ }
86
+ catch (error) {
87
+ logger.warn('LLM priority analysis failed, falling back to static recommendations', {
88
+ error: error instanceof Error ? error.message : String(error),
89
+ provider: this.llmProvider.getConfig().provider,
90
+ });
91
+ return this.createFallbackResult(components, prompt, startTime);
92
+ }
93
+ }
94
+ /**
95
+ * @ac US-057-AC-3: Consider business criticality
96
+ * @ac US-057-AC-4: Consider failure impact
97
+ */
98
+ buildPriorityPrompt(components, context) {
99
+ const componentList = components.map((c) => `- ${c.type}: ${c.name}`).join('\n');
100
+ const contextInfo = context
101
+ ? `\nOrg Type: ${context.orgType ?? 'Unknown'}\nIndustry: ${context.industry ?? 'Unknown'}`
102
+ : '';
103
+ return `You are an expert Salesforce deployment analyst. Analyze these components and suggest deployment priorities.
104
+
105
+ Context:${contextInfo}
106
+
107
+ Components to analyze:
108
+ ${componentList}
109
+
110
+ For each component, consider:
111
+ 1. **Business Criticality**: How important is this to business operations?
112
+ 2. **Failure Impact**: What happens if this component fails to deploy?
113
+ 3. **Dependencies**: Should this deploy before or after others?
114
+ 4. **Risk Level**: How risky is deploying this component?
115
+
116
+ Assign priorities (0-100):
117
+ - 90-100: CRITICAL (payment processing, authentication, core business logic)
118
+ - 70-89: HIGH (important features, customer-facing)
119
+ - 40-69: MEDIUM (supporting features, utilities)
120
+ - 0-39: LOW (logging, monitoring, non-critical utilities)
121
+
122
+ Respond ONLY with valid JSON (no markdown):
123
+ {
124
+ "recommendations": [
125
+ {
126
+ "componentName": "exact component name",
127
+ "priority": 85,
128
+ "reason": "brief explanation",
129
+ "confidence": 0.9,
130
+ "businessCriticality": "high",
131
+ "failureImpact": "high"
132
+ }
133
+ ]
134
+ }`;
135
+ }
136
+ /**
137
+ * @ac US-057-AC-1: Send component list to Agentforce
138
+ */
139
+ parseResponse(content) {
140
+ try {
141
+ // Remove markdown code blocks if present
142
+ const cleanContent = content
143
+ .replace(/```json\n?/g, '')
144
+ .replace(/```\n?/g, '')
145
+ .trim();
146
+ const parsed = JSON.parse(cleanContent);
147
+ if (!parsed.recommendations || !Array.isArray(parsed.recommendations)) {
148
+ logger.warn('Invalid response format, returning empty recommendations');
149
+ return [];
150
+ }
151
+ return parsed.recommendations;
152
+ }
153
+ catch (error) {
154
+ logger.error('Failed to parse Agentforce response', { error });
155
+ return [];
156
+ }
157
+ }
158
+ /**
159
+ * Mock response for testing and fallback
160
+ */
161
+ getMockResponse(prompt) {
162
+ // Extract component names from prompt
163
+ const componentMatches = prompt.matchAll(/- (\w+): ([\w_]+)/g);
164
+ const recommendations = [];
165
+ for (const match of componentMatches) {
166
+ const type = match[1];
167
+ const name = match[2];
168
+ // Simple heuristic-based mock priorities
169
+ let priority = 50;
170
+ let businessCriticality = 'medium';
171
+ let failureImpact = 'medium';
172
+ if (name.toLowerCase().includes('payment') || name.toLowerCase().includes('auth')) {
173
+ priority = 95;
174
+ businessCriticality = 'critical';
175
+ failureImpact = 'critical';
176
+ }
177
+ else if (name.toLowerCase().includes('handler') || name.toLowerCase().includes('service')) {
178
+ priority = 75;
179
+ businessCriticality = 'high';
180
+ failureImpact = 'high';
181
+ }
182
+ else if (name.toLowerCase().includes('log') || name.toLowerCase().includes('audit')) {
183
+ priority = 20;
184
+ businessCriticality = 'low';
185
+ failureImpact = 'low';
186
+ }
187
+ recommendations.push({
188
+ componentName: name,
189
+ priority,
190
+ reason: `Mock: ${type} with ${businessCriticality} business impact`,
191
+ confidence: 0.85,
192
+ businessCriticality,
193
+ failureImpact,
194
+ });
195
+ }
196
+ return {
197
+ choices: [
198
+ {
199
+ message: {
200
+ content: JSON.stringify({ recommendations }),
201
+ },
202
+ },
203
+ ],
204
+ usage: {
205
+ ['total_tokens']: 500,
206
+ },
207
+ };
208
+ }
209
+ createFallbackResult(components, prompt, startTime) {
210
+ const response = this.getMockResponse(prompt);
211
+ const content = response.choices?.[0]?.message?.content ?? '{}';
212
+ const recommendations = this.parseResponse(content);
213
+ return {
214
+ recommendations,
215
+ totalComponents: components.length,
216
+ aiAdjustments: recommendations.filter((recommendation) => recommendation.confidence > 0.8).length,
217
+ executionTime: Date.now() - startTime,
218
+ tokensUsed: response.usage?.['total_tokens'],
219
+ usedFallback: true,
220
+ };
221
+ }
222
+ /**
223
+ * @ac US-057-AC-6: Report AI decisions
224
+ */
225
+ formatDecisionReport(result) {
226
+ const lines = [];
227
+ lines.push('🤖 AI Priority Analysis Report');
228
+ lines.push('═══════════════════════════════════════');
229
+ lines.push(`Total Components: ${result.totalComponents}`);
230
+ lines.push(`AI Adjustments: ${result.aiAdjustments}`);
231
+ lines.push(`Execution Time: ${result.executionTime}ms`);
232
+ if (result.tokensUsed) {
233
+ lines.push(`Tokens Used: ${result.tokensUsed}`);
234
+ }
235
+ lines.push('');
236
+ if (result.recommendations.length > 0) {
237
+ lines.push('Priority Recommendations:');
238
+ const sorted = result.recommendations.sort((a, b) => b.priority - a.priority);
239
+ for (const rec of sorted.slice(0, 10)) {
240
+ // Top 10
241
+ lines.push(` ${rec.priority.toString().padStart(3)} | ${rec.componentName.padEnd(30)} | ${rec.businessCriticality.toUpperCase()}`);
242
+ lines.push(` ${rec.reason}`);
243
+ }
244
+ if (result.recommendations.length > 10) {
245
+ lines.push(` ... and ${result.recommendations.length - 10} more`);
246
+ }
247
+ }
248
+ else {
249
+ lines.push('No AI recommendations (using static priorities)');
250
+ }
251
+ return lines.join('\n');
252
+ }
253
+ getProviderConfig() {
254
+ return this.llmProvider.getConfig();
255
+ }
256
+ }
257
+ //# sourceMappingURL=agentforce-priority-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentforce-priority-service.js","sourceRoot":"","sources":["../../src/ai/agentforce-priority-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Agentforce Service - US-054
3
+ * Base service for connecting to Agentforce API
4
+ *
5
+ * @ac US-054-AC-1: Configure API endpoint
6
+ * @ac US-054-AC-2: Handle authentication
7
+ * @ac US-054-AC-3: Support multiple models
8
+ * @ac US-054-AC-4: Implement retry logic
9
+ * @ac US-054-AC-5: Handle rate limiting
10
+ * @ac US-054-AC-6: Monitor API usage
11
+ * @issue #54
12
+ */
13
+ import type { LLMProvider, LLMProviderConfig, LLMRequest, LLMResponse } from './llm-provider.js';
14
+ export type AgentforceFetch = typeof fetch;
15
+ export type AgentforceConfig = LLMProviderConfig & {
16
+ provider: 'agentforce';
17
+ endpoint: string;
18
+ /** API endpoint URL */
19
+ /** API key or named credential */
20
+ apiKey?: string;
21
+ model: string;
22
+ timeout: number;
23
+ enabled: boolean;
24
+ rateLimit: number;
25
+ /** Max retry attempts */
26
+ maxRetries: number;
27
+ /** Injectable fetch implementation for tests or alternate runtimes */
28
+ fetchFn?: AgentforceFetch;
29
+ };
30
+ export type AgentforceRequest = LLMRequest;
31
+ export type AgentforceResponse = LLMResponse;
32
+ export type ApiUsageStats = {
33
+ totalRequests: number;
34
+ successfulRequests: number;
35
+ failedRequests: number;
36
+ totalTokensUsed: number;
37
+ averageResponseTime: number;
38
+ rateLimitHits: number;
39
+ lastRequestTime?: Date;
40
+ };
41
+ /**
42
+ * @ac US-054-AC-1: Configure API endpoint
43
+ * @ac US-054-AC-2: Handle authentication
44
+ */
45
+ export declare class AgentforceService implements LLMProvider {
46
+ private readonly config;
47
+ private readonly fetchFn?;
48
+ private readonly usageStats;
49
+ private requestTimestamps;
50
+ constructor(config?: Partial<AgentforceConfig>);
51
+ /**
52
+ * @ac US-054-AC-3: Support multiple models
53
+ * Send request to Agentforce API
54
+ */
55
+ sendRequest(request: AgentforceRequest): Promise<AgentforceResponse>;
56
+ /**
57
+ * @ac US-054-AC-4: Implement retry logic
58
+ * Execute request with exponential backoff retry
59
+ */
60
+ private executeWithRetry;
61
+ private executeRequest;
62
+ /**
63
+ * @ac US-054-AC-5: Handle rate limiting
64
+ * Enforce rate limit (requests per minute)
65
+ */
66
+ private enforceRateLimit;
67
+ /**
68
+ * Check if error is retryable
69
+ */
70
+ private isRetryableError;
71
+ /**
72
+ * Sleep utility
73
+ */
74
+ private sleep;
75
+ /**
76
+ * Update average response time
77
+ */
78
+ private updateAverageResponseTime;
79
+ /**
80
+ * @ac US-054-AC-6: Monitor API usage
81
+ * Get usage statistics
82
+ */
83
+ getUsageStats(): Readonly<ApiUsageStats>;
84
+ /**
85
+ * Get configuration
86
+ */
87
+ getConfig(): Readonly<AgentforceConfig>;
88
+ /**
89
+ * Check if service is enabled
90
+ */
91
+ isEnabled(): boolean;
92
+ /**
93
+ * Reset usage statistics (for testing)
94
+ */
95
+ resetStats(): void;
96
+ private extractContent;
97
+ private extractTokensUsed;
98
+ private extractModel;
99
+ }
@@ -0,0 +1,300 @@
1
+ /**
2
+ * Agentforce Service - US-054
3
+ * Base service for connecting to Agentforce API
4
+ *
5
+ * @ac US-054-AC-1: Configure API endpoint
6
+ * @ac US-054-AC-2: Handle authentication
7
+ * @ac US-054-AC-3: Support multiple models
8
+ * @ac US-054-AC-4: Implement retry logic
9
+ * @ac US-054-AC-5: Handle rate limiting
10
+ * @ac US-054-AC-6: Monitor API usage
11
+ * @issue #54
12
+ */
13
+ import { getLogger } from '../utils/logger.js';
14
+ import { getErrorAggregator } from '../utils/error-aggregator.js';
15
+ const logger = getLogger('AgentforceService');
16
+ const errorAggregator = getErrorAggregator();
17
+ /**
18
+ * @ac US-054-AC-1: Configure API endpoint
19
+ * @ac US-054-AC-2: Handle authentication
20
+ */
21
+ export class AgentforceService {
22
+ config;
23
+ fetchFn;
24
+ usageStats = {
25
+ totalRequests: 0,
26
+ successfulRequests: 0,
27
+ failedRequests: 0,
28
+ totalTokensUsed: 0,
29
+ averageResponseTime: 0,
30
+ rateLimitHits: 0,
31
+ };
32
+ requestTimestamps = [];
33
+ constructor(config = {}) {
34
+ this.config = {
35
+ provider: 'agentforce',
36
+ endpoint: config.endpoint ?? process.env.AGENTFORCE_ENDPOINT ?? 'https://api.salesforce.com/ai/v1',
37
+ apiKey: config.apiKey ?? process.env.AGENTFORCE_API_KEY,
38
+ model: config.model ?? 'agentforce-1',
39
+ timeout: config.timeout ?? 30_000, // 30 seconds
40
+ maxRetries: config.maxRetries ?? 3,
41
+ enabled: config.enabled ?? true,
42
+ rateLimit: config.rateLimit ?? 60, // 60 requests per minute
43
+ fetchFn: config.fetchFn ?? globalThis.fetch,
44
+ };
45
+ this.fetchFn = this.config.fetchFn;
46
+ logger.info('Agentforce service initialized', {
47
+ endpoint: this.config.endpoint,
48
+ model: this.config.model,
49
+ enabled: this.config.enabled,
50
+ });
51
+ }
52
+ /**
53
+ * @ac US-054-AC-3: Support multiple models
54
+ * Send request to Agentforce API
55
+ */
56
+ async sendRequest(request) {
57
+ if (!this.config.enabled) {
58
+ throw new Error('Agentforce service is disabled');
59
+ }
60
+ if (!this.config.apiKey) {
61
+ throw new Error('Agentforce API key not configured');
62
+ }
63
+ // Rate limiting check
64
+ this.enforceRateLimit();
65
+ const startTime = Date.now();
66
+ this.usageStats.totalRequests++;
67
+ try {
68
+ // Execute with retry logic
69
+ const response = await this.executeWithRetry(request);
70
+ // Track success
71
+ const executionTime = Date.now() - startTime;
72
+ this.usageStats.successfulRequests++;
73
+ this.usageStats.totalTokensUsed += response.tokensUsed;
74
+ this.updateAverageResponseTime(executionTime);
75
+ this.usageStats.lastRequestTime = new Date();
76
+ logger.info('Agentforce request successful', {
77
+ model: response.model,
78
+ tokens: response.tokensUsed,
79
+ executionTime,
80
+ });
81
+ return response;
82
+ }
83
+ catch (error) {
84
+ // Track failure
85
+ this.usageStats.failedRequests++;
86
+ const errorMessage = error instanceof Error ? error.message : String(error);
87
+ logger.error('Agentforce request failed', { error: errorMessage });
88
+ errorAggregator.addError({
89
+ message: `Agentforce API error: ${errorMessage}`,
90
+ type: 'AgentforceError',
91
+ severity: 'HIGH',
92
+ context: { model: request.model, prompt: request.prompt.slice(0, 100) },
93
+ });
94
+ throw error;
95
+ }
96
+ }
97
+ /**
98
+ * @ac US-054-AC-4: Implement retry logic
99
+ * Execute request with exponential backoff retry
100
+ */
101
+ async executeWithRetry(request, attempt = 1) {
102
+ try {
103
+ return await this.executeRequest(request);
104
+ }
105
+ catch (error) {
106
+ const errorMessage = error instanceof Error ? error.message : String(error);
107
+ // Check if we should retry
108
+ if (attempt >= this.config.maxRetries) {
109
+ throw new Error(`Agentforce request failed after ${attempt} attempts: ${errorMessage}`);
110
+ }
111
+ // Check if error is retryable
112
+ if (!this.isRetryableError(error)) {
113
+ throw error;
114
+ }
115
+ // Calculate backoff delay (exponential)
116
+ const delay = Math.min(1e3 * 2 ** (attempt - 1), 1e4); // Max 10s
117
+ logger.warn(`Retrying Agentforce request (attempt ${attempt}/${this.config.maxRetries})`, {
118
+ delay,
119
+ error: errorMessage,
120
+ });
121
+ await this.sleep(delay);
122
+ return this.executeWithRetry(request, attempt + 1);
123
+ }
124
+ }
125
+ async executeRequest(request) {
126
+ const startTime = Date.now();
127
+ logger.debug('Executing Agentforce request', {
128
+ model: request.model,
129
+ promptLength: request.prompt.length,
130
+ });
131
+ if (!this.fetchFn) {
132
+ throw new Error('Fetch API is not available in this runtime');
133
+ }
134
+ const apiKey = this.config.apiKey;
135
+ if (!apiKey) {
136
+ throw new Error('Agentforce API key not configured');
137
+ }
138
+ const controller = new AbortController();
139
+ const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);
140
+ try {
141
+ const response = await this.fetchFn(this.config.endpoint, {
142
+ method: 'POST',
143
+ headers: {
144
+ Authorization: `Bearer ${apiKey}`,
145
+ 'Content-Type': 'application/json',
146
+ },
147
+ body: JSON.stringify({
148
+ model: request.model,
149
+ prompt: request.prompt,
150
+ context: request.context,
151
+ temperature: request.temperature ?? 0.2,
152
+ maxTokens: request.maxTokens ?? 2000,
153
+ }),
154
+ signal: controller.signal,
155
+ });
156
+ if (!response.ok) {
157
+ throw new Error(`Agentforce API error: ${response.status} ${response.statusText}`);
158
+ }
159
+ const rawPayload = await response.json();
160
+ if (typeof rawPayload !== 'object' || rawPayload === null) {
161
+ throw new Error('Agentforce response payload was not an object');
162
+ }
163
+ const payload = rawPayload;
164
+ return {
165
+ content: this.extractContent(payload),
166
+ tokensUsed: this.extractTokensUsed(payload, request.prompt),
167
+ model: this.extractModel(payload, request.model),
168
+ executionTime: Date.now() - startTime,
169
+ };
170
+ }
171
+ catch (error) {
172
+ if (error instanceof Error && error.name === 'AbortError') {
173
+ throw new Error('Agentforce request timed out');
174
+ }
175
+ throw error;
176
+ }
177
+ finally {
178
+ clearTimeout(timeoutId);
179
+ }
180
+ }
181
+ /**
182
+ * @ac US-054-AC-5: Handle rate limiting
183
+ * Enforce rate limit (requests per minute)
184
+ */
185
+ enforceRateLimit() {
186
+ const now = Date.now();
187
+ const oneMinuteAgo = now - 60_000;
188
+ // Remove timestamps older than 1 minute
189
+ this.requestTimestamps = this.requestTimestamps.filter((ts) => ts > oneMinuteAgo);
190
+ // Check if we exceeded rate limit
191
+ if (this.requestTimestamps.length >= this.config.rateLimit) {
192
+ this.usageStats.rateLimitHits++;
193
+ const oldestTimestamp = this.requestTimestamps[0] ?? now;
194
+ const waitTime = 60_000 - (now - oldestTimestamp);
195
+ throw new Error(`Rate limit exceeded. Please wait ${Math.ceil(waitTime / 1000)}s before retrying.`);
196
+ }
197
+ // Add current timestamp
198
+ this.requestTimestamps.push(now);
199
+ }
200
+ /**
201
+ * Check if error is retryable
202
+ */
203
+ isRetryableError(error) {
204
+ const errorMessage = error instanceof Error ? error.message : String(error);
205
+ // Retry on network errors, timeouts, and 5xx errors
206
+ const retryablePatterns = [
207
+ /timeout/i,
208
+ /network/i,
209
+ /ECONNRESET/i,
210
+ /ETIMEDOUT/i,
211
+ /5\d{2}/i, // 5xx HTTP errors
212
+ ];
213
+ return retryablePatterns.some((pattern) => pattern.test(errorMessage));
214
+ }
215
+ /**
216
+ * Sleep utility
217
+ */
218
+ async sleep(ms) {
219
+ return new Promise((resolve) => {
220
+ setTimeout(resolve, ms);
221
+ });
222
+ }
223
+ /**
224
+ * Update average response time
225
+ */
226
+ updateAverageResponseTime(newTime) {
227
+ const totalRequests = this.usageStats.successfulRequests;
228
+ const currentAvg = this.usageStats.averageResponseTime;
229
+ // Incremental average calculation
230
+ this.usageStats.averageResponseTime = (currentAvg * (totalRequests - 1) + newTime) / totalRequests;
231
+ }
232
+ /**
233
+ * @ac US-054-AC-6: Monitor API usage
234
+ * Get usage statistics
235
+ */
236
+ getUsageStats() {
237
+ return { ...this.usageStats };
238
+ }
239
+ /**
240
+ * Get configuration
241
+ */
242
+ getConfig() {
243
+ return { ...this.config };
244
+ }
245
+ /**
246
+ * Check if service is enabled
247
+ */
248
+ isEnabled() {
249
+ return this.config.enabled;
250
+ }
251
+ /**
252
+ * Reset usage statistics (for testing)
253
+ */
254
+ resetStats() {
255
+ this.usageStats.totalRequests = 0;
256
+ this.usageStats.successfulRequests = 0;
257
+ this.usageStats.failedRequests = 0;
258
+ this.usageStats.totalTokensUsed = 0;
259
+ this.usageStats.averageResponseTime = 0;
260
+ this.usageStats.rateLimitHits = 0;
261
+ this.requestTimestamps = [];
262
+ }
263
+ extractContent(payload) {
264
+ const content = payload.content;
265
+ if (typeof content === 'string') {
266
+ return content;
267
+ }
268
+ const choices = payload.choices;
269
+ if (Array.isArray(choices) && choices.length > 0) {
270
+ const [firstChoice] = choices;
271
+ if (typeof firstChoice === 'object' && firstChoice !== null && 'message' in firstChoice) {
272
+ const message = firstChoice.message;
273
+ if (typeof message === 'object' && message !== null && 'content' in message) {
274
+ const messageContent = message.content;
275
+ if (typeof messageContent === 'string') {
276
+ return messageContent;
277
+ }
278
+ }
279
+ }
280
+ }
281
+ throw new Error('Agentforce response did not contain content');
282
+ }
283
+ extractTokensUsed(payload, prompt) {
284
+ const usage = payload.usage;
285
+ if (typeof usage === 'object' && usage !== null && 'total_tokens' in usage) {
286
+ const totalTokens = usage.total_tokens;
287
+ if (typeof totalTokens === 'number' && Number.isFinite(totalTokens)) {
288
+ return totalTokens;
289
+ }
290
+ }
291
+ return Math.max(1, Math.ceil(prompt.length / 4));
292
+ }
293
+ extractModel(payload, fallbackModel) {
294
+ if (typeof payload.model === 'string') {
295
+ return payload.model;
296
+ }
297
+ return fallbackModel;
298
+ }
299
+ }
300
+ //# sourceMappingURL=agentforce-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentforce-service.js","sourceRoot":"","sources":["../../src/ai/agentforce-service.ts"],"names":[],"mappings":"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"}