snow-flow 1.4.49 → 2.0.0

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 (595) hide show
  1. package/.claude/helpers/github-setup.sh +28 -0
  2. package/.claude/helpers/quick-start.sh +19 -0
  3. package/.claude/helpers/setup-mcp.sh +18 -0
  4. package/.claude/settings.local.json +33 -0
  5. package/.claude-flow/metrics/system-metrics.json +1992 -0
  6. package/.env.example +21 -0
  7. package/.roo/README.md +402 -0
  8. package/.roo/mcp-list.txt +257 -0
  9. package/.roo/mcp.json +32 -0
  10. package/.roo/workflows/basic-tdd.json +32 -0
  11. package/.roomodes +201 -0
  12. package/README.md +114 -628
  13. package/activate-mcp.sh +15 -0
  14. package/dist/cli.js.bak +2052 -0
  15. package/manual-register-mcp.js +134 -0
  16. package/mcp-wrapper.sh +12 -0
  17. package/package.json +2 -2
  18. package/scripts/create-env.js +6 -1
  19. package/scripts/reset-mcp-servers.js +246 -0
  20. package/scripts/update-version.js +31 -0
  21. package/src/agents/README.md +192 -0
  22. package/src/agents/base-agent.ts +251 -0
  23. package/src/agents/coordinator.ts +971 -0
  24. package/src/agents/index.ts +18 -0
  25. package/src/agents/queen-403-handler.ts +230 -0
  26. package/src/agents/queen-agent.ts +1399 -0
  27. package/src/agents/script-writer-agent.ts +769 -0
  28. package/src/agents/security-agent.ts +726 -0
  29. package/src/agents/widget-creator-agent.ts +568 -0
  30. package/src/api/error-handling.ts +1758 -0
  31. package/src/api/natural-language-mapper.ts +630 -0
  32. package/src/api/performance-optimizer.ts +891 -0
  33. package/src/api/transaction-manager.ts +754 -0
  34. package/src/cli/deploy-artifact.ts +304 -0
  35. package/src/cli/snow-flow-cli-integration.ts +434 -0
  36. package/src/cli.ts +4455 -0
  37. package/src/cli.ts.bak +5616 -0
  38. package/src/compliance/advanced-compliance-system.ts +1268 -0
  39. package/src/compliance/index.ts +19 -0
  40. package/src/config/snow-flow-config.ts +1019 -0
  41. package/src/documentation/index.ts +16 -0
  42. package/src/documentation/self-documenting-system.ts +1421 -0
  43. package/src/dynamic-version.ts +44 -0
  44. package/src/healing/index.ts +20 -0
  45. package/src/healing/self-healing-system.ts +1435 -0
  46. package/src/health/README.md +161 -0
  47. package/src/health/system-health.ts +995 -0
  48. package/src/index.ts +60 -0
  49. package/src/intelligence/acl-analyzer.ts +377 -0
  50. package/src/intelligence/auto-resolution-engine.ts +643 -0
  51. package/src/intelligence/gap-analysis-engine.ts +488 -0
  52. package/src/intelligence/manual-instructions-generator.ts +744 -0
  53. package/src/intelligence/mcp-coverage-analyzer.ts +708 -0
  54. package/src/intelligence/multi-pass-requirements-analyzer.ts +603 -0
  55. package/src/intelligence/performance-recommendations-engine.ts +1223 -0
  56. package/src/intelligence/requirements-analyzer.ts +1148 -0
  57. package/src/intelligence/task-analyzer.ts +628 -0
  58. package/src/managers/scope-manager.ts +555 -0
  59. package/src/mcp/advanced/servicenow-advanced-features-mcp.ts +16110 -0
  60. package/src/mcp/base-mcp-server.ts +660 -0
  61. package/src/mcp/http-transport-wrapper.ts +426 -0
  62. package/src/mcp/service-discovery-client.ts +312 -0
  63. package/src/mcp/servicenow-automation-mcp-refactored.ts +678 -0
  64. package/src/mcp/servicenow-automation-mcp.ts +838 -0
  65. package/src/mcp/servicenow-deployment-mcp-refactored.ts +1292 -0
  66. package/src/mcp/servicenow-deployment-mcp.ts +7244 -0
  67. package/src/mcp/servicenow-graph-memory-mcp-refactored.ts +721 -0
  68. package/src/mcp/servicenow-graph-memory-mcp.ts +832 -0
  69. package/src/mcp/servicenow-integration-mcp-refactored.ts +655 -0
  70. package/src/mcp/servicenow-integration-mcp.ts +819 -0
  71. package/src/mcp/servicenow-intelligent-mcp-refactored.ts +977 -0
  72. package/src/mcp/servicenow-intelligent-mcp.ts +4638 -0
  73. package/src/mcp/servicenow-mcp-server.ts +728 -0
  74. package/src/mcp/servicenow-memory-mcp.ts +474 -0
  75. package/src/mcp/servicenow-operations-mcp-refactored.ts +1995 -0
  76. package/src/mcp/servicenow-operations-mcp.ts +3384 -0
  77. package/src/mcp/servicenow-platform-development-mcp-refactored.ts +611 -0
  78. package/src/mcp/servicenow-platform-development-mcp.ts +970 -0
  79. package/src/mcp/servicenow-progressive-indexer.ts +370 -0
  80. package/src/mcp/servicenow-reporting-analytics-mcp-refactored.ts +695 -0
  81. package/src/mcp/servicenow-reporting-analytics-mcp.ts +1123 -0
  82. package/src/mcp/servicenow-security-compliance-mcp-refactored.ts +642 -0
  83. package/src/mcp/servicenow-security-compliance-mcp.ts +1157 -0
  84. package/src/mcp/servicenow-update-set-mcp-refactored.ts +751 -0
  85. package/src/mcp/servicenow-update-set-mcp.ts +811 -0
  86. package/src/mcp/shared/agent-context-provider.ts +365 -0
  87. package/src/mcp/shared/base-mcp-server.ts +2463 -0
  88. package/src/mcp/shared/mcp-memory-manager.ts +540 -0
  89. package/src/mcp/shared/mcp-resource-manager.ts +367 -0
  90. package/src/mcp/snow-flow-mcp.ts +911 -0
  91. package/src/mcp/start-all-mcp-servers.ts +102 -0
  92. package/src/mcp/start-servicenow-mcp.ts +67 -0
  93. package/src/monitoring/enhanced-monitoring-system.ts +1345 -0
  94. package/src/monitoring/performance-tracker.ts +777 -0
  95. package/src/optimization/cost-optimization-engine.ts +1125 -0
  96. package/src/optimization/index.ts +10 -0
  97. package/src/queen/README.md +403 -0
  98. package/src/queen/agent-factory.ts +574 -0
  99. package/src/queen/index.ts +94 -0
  100. package/src/queen/mcp-execution-bridge.ts +681 -0
  101. package/src/queen/neural-learning.ts +319 -0
  102. package/src/queen/parallel-agent-engine.ts +848 -0
  103. package/src/queen/queen-memory-system.ts +490 -0
  104. package/src/queen/queen-memory.ts +456 -0
  105. package/src/queen/servicenow-queen.ts +1029 -0
  106. package/src/queen/types.ts +87 -0
  107. package/src/rollback/smart-rollback-system.ts +866 -0
  108. package/src/schemas/deployment.schema.json +58 -0
  109. package/src/schemas/flow.schema.json +79 -0
  110. package/src/schemas/widget.schema.json +72 -0
  111. package/src/snow-flow-system.ts +541 -0
  112. package/src/sparc/sparc-help.ts +49 -0
  113. package/src/sparc/team-sparc.ts +88 -0
  114. package/src/strategies/global-scope-strategy.ts +736 -0
  115. package/src/templates/base/application.template.json +45 -0
  116. package/src/templates/base/business_rule.template.json +33 -0
  117. package/src/templates/base/script_include.template.json +18 -0
  118. package/src/templates/base/table.template.json +64 -0
  119. package/src/templates/base/widget.template.json +25 -0
  120. package/src/templates/patterns/composite.incident-management.template.json +140 -0
  121. package/src/templates/patterns/widget.dashboard.template.json +238 -0
  122. package/src/templates/patterns/widget.datatable.template.json +292 -0
  123. package/src/testing/integration-test-suite.ts +1276 -0
  124. package/src/types/index.ts +183 -0
  125. package/src/types/neo4j-driver.d.ts +23 -0
  126. package/src/types/servicenow.types.ts +307 -0
  127. package/src/types/snow-flow.types.ts +186 -0
  128. package/src/types/todo.types.ts +70 -0
  129. package/src/utils/action-type-cache.ts +286 -0
  130. package/src/utils/agent-detector.ts +573 -0
  131. package/src/utils/artifact-tracker.ts +379 -0
  132. package/src/utils/dependency-detector.ts +233 -0
  133. package/src/utils/deployment-metadata-handler.ts +518 -0
  134. package/src/utils/error-recovery.ts +680 -0
  135. package/src/utils/logger.ts +60 -0
  136. package/src/utils/mcp-auth-middleware.ts +262 -0
  137. package/src/utils/mcp-config-manager.ts +270 -0
  138. package/src/utils/mcp-server-manager.ts +446 -0
  139. package/src/utils/mcp-tool-registry.ts +298 -0
  140. package/src/utils/migrate-snow-flow.ts +98 -0
  141. package/src/utils/oauth-html-templates.ts +188 -0
  142. package/src/utils/scope-utils.ts +443 -0
  143. package/src/utils/servicenow-client.ts +3321 -0
  144. package/src/utils/servicenow-id-generator.ts +181 -0
  145. package/src/utils/snow-memory-manager.ts +605 -0
  146. package/src/utils/snow-oauth.ts +797 -0
  147. package/src/utils/template-engine.ts +463 -0
  148. package/src/utils/theme-manager.ts +295 -0
  149. package/src/utils/unified-auth-store.ts +222 -0
  150. package/src/utils/update-set-importer.ts +422 -0
  151. package/src/utils/update-set-xml-packager.ts +371 -0
  152. package/src/utils/widget-template-generator.ts +1744 -0
  153. package/src/version.ts +1950 -0
  154. package/.claude/commands/memory/README.md +0 -9
  155. package/dist/agents/app-creator.agent.d.ts.map +0 -1
  156. package/dist/agents/app-creator.agent.js.map +0 -1
  157. package/dist/agents/base/base-snow-agent.d.ts.map +0 -1
  158. package/dist/agents/base/base-snow-agent.js.map +0 -1
  159. package/dist/agents/base-agent.d.ts.map +0 -1
  160. package/dist/agents/base-agent.js.map +0 -1
  161. package/dist/agents/base-snow-agent.d.ts.map +0 -1
  162. package/dist/agents/base-snow-agent.js.map +0 -1
  163. package/dist/agents/coordinator.d.ts.map +0 -1
  164. package/dist/agents/coordinator.js.map +0 -1
  165. package/dist/agents/flow-builder-agent.d.ts.map +0 -1
  166. package/dist/agents/flow-builder-agent.js.map +0 -1
  167. package/dist/agents/index.d.ts.map +0 -1
  168. package/dist/agents/index.js.map +0 -1
  169. package/dist/agents/queen-403-handler.d.ts.map +0 -1
  170. package/dist/agents/queen-403-handler.js.map +0 -1
  171. package/dist/agents/queen-agent-example.d.ts.map +0 -1
  172. package/dist/agents/queen-agent-example.js.map +0 -1
  173. package/dist/agents/queen-agent.d.ts.map +0 -1
  174. package/dist/agents/queen-agent.js.map +0 -1
  175. package/dist/agents/queen-agent.test.d.ts.map +0 -1
  176. package/dist/agents/queen-agent.test.js.map +0 -1
  177. package/dist/agents/script-generator.agent.d.ts.map +0 -1
  178. package/dist/agents/script-generator.agent.js.map +0 -1
  179. package/dist/agents/script-writer-agent.d.ts.map +0 -1
  180. package/dist/agents/script-writer-agent.js.map +0 -1
  181. package/dist/agents/security-agent.d.ts.map +0 -1
  182. package/dist/agents/security-agent.js.map +0 -1
  183. package/dist/agents/specialists/automation-specialist.agent.d.ts.map +0 -1
  184. package/dist/agents/specialists/automation-specialist.agent.js.map +0 -1
  185. package/dist/agents/specialists/data-specialist.agent.d.ts.map +0 -1
  186. package/dist/agents/specialists/data-specialist.agent.js.map +0 -1
  187. package/dist/agents/specialists/integration-specialist.agent.d.ts.map +0 -1
  188. package/dist/agents/specialists/integration-specialist.agent.js.map +0 -1
  189. package/dist/agents/specialists/reporting-specialist.agent.d.ts.map +0 -1
  190. package/dist/agents/specialists/reporting-specialist.agent.js.map +0 -1
  191. package/dist/agents/specialists/security-specialist.agent.d.ts.map +0 -1
  192. package/dist/agents/specialists/security-specialist.agent.js.map +0 -1
  193. package/dist/agents/teams/adaptive/adaptive-coordinator.agent.d.ts.map +0 -1
  194. package/dist/agents/teams/adaptive/adaptive-coordinator.agent.js.map +0 -1
  195. package/dist/agents/teams/base-team.d.ts.map +0 -1
  196. package/dist/agents/teams/base-team.js.map +0 -1
  197. package/dist/agents/teams/team-types.d.ts.map +0 -1
  198. package/dist/agents/teams/team-types.js.map +0 -1
  199. package/dist/agents/teams/widget/widget-architect.agent.d.ts.map +0 -1
  200. package/dist/agents/teams/widget/widget-architect.agent.js.map +0 -1
  201. package/dist/agents/teams/widget/widget-backend.agent.d.ts.map +0 -1
  202. package/dist/agents/teams/widget/widget-backend.agent.js.map +0 -1
  203. package/dist/agents/teams/widget/widget-frontend.agent.d.ts.map +0 -1
  204. package/dist/agents/teams/widget/widget-frontend.agent.js.map +0 -1
  205. package/dist/agents/teams/widget/widget-platform.agent.d.ts.map +0 -1
  206. package/dist/agents/teams/widget/widget-platform.agent.js.map +0 -1
  207. package/dist/agents/teams/widget/widget-uiux.agent.d.ts.map +0 -1
  208. package/dist/agents/teams/widget/widget-uiux.agent.js.map +0 -1
  209. package/dist/agents/test-agent.d.ts.map +0 -1
  210. package/dist/agents/test-agent.js.map +0 -1
  211. package/dist/agents/test-agents.d.ts.map +0 -1
  212. package/dist/agents/test-agents.js.map +0 -1
  213. package/dist/agents/ui-builder.agent.d.ts.map +0 -1
  214. package/dist/agents/ui-builder.agent.js.map +0 -1
  215. package/dist/agents/widget-builder.agent.d.ts.map +0 -1
  216. package/dist/agents/widget-builder.agent.js.map +0 -1
  217. package/dist/agents/widget-creator-agent.d.ts.map +0 -1
  218. package/dist/agents/widget-creator-agent.js.map +0 -1
  219. package/dist/agents/workflow-designer.agent.d.ts.map +0 -1
  220. package/dist/agents/workflow-designer.agent.js.map +0 -1
  221. package/dist/api/error-handling.d.ts.map +0 -1
  222. package/dist/api/error-handling.js.map +0 -1
  223. package/dist/api/flow-designer-api.d.ts.map +0 -1
  224. package/dist/api/flow-designer-api.js.map +0 -1
  225. package/dist/api/natural-language-mapper.d.ts.map +0 -1
  226. package/dist/api/natural-language-mapper.js.map +0 -1
  227. package/dist/api/performance-optimizer.d.ts.map +0 -1
  228. package/dist/api/performance-optimizer.js.map +0 -1
  229. package/dist/api/transaction-manager.d.ts.map +0 -1
  230. package/dist/api/transaction-manager.js.map +0 -1
  231. package/dist/assembly/team-assembler.d.ts.map +0 -1
  232. package/dist/assembly/team-assembler.js.map +0 -1
  233. package/dist/cli/deploy-artifact.d.ts.map +0 -1
  234. package/dist/cli/deploy-artifact.js.map +0 -1
  235. package/dist/cli/snow-flow-cli-integration.d.ts.map +0 -1
  236. package/dist/cli/snow-flow-cli-integration.js.map +0 -1
  237. package/dist/cli.d.ts.map +0 -1
  238. package/dist/cli.js.map +0 -1
  239. package/dist/compliance/advanced-compliance-system.d.ts.map +0 -1
  240. package/dist/compliance/advanced-compliance-system.js.map +0 -1
  241. package/dist/compliance/index.d.ts.map +0 -1
  242. package/dist/compliance/index.js.map +0 -1
  243. package/dist/config/snow-flow-config.d.ts.map +0 -1
  244. package/dist/config/snow-flow-config.js.map +0 -1
  245. package/dist/documentation/index.d.ts.map +0 -1
  246. package/dist/documentation/index.js.map +0 -1
  247. package/dist/documentation/self-documenting-system.d.ts.map +0 -1
  248. package/dist/documentation/self-documenting-system.js.map +0 -1
  249. package/dist/dynamic-version.d.ts.map +0 -1
  250. package/dist/dynamic-version.js.map +0 -1
  251. package/dist/healing/index.d.ts.map +0 -1
  252. package/dist/healing/index.js.map +0 -1
  253. package/dist/healing/self-healing-system.d.ts.map +0 -1
  254. package/dist/healing/self-healing-system.js.map +0 -1
  255. package/dist/health/system-health.d.ts.map +0 -1
  256. package/dist/health/system-health.js.map +0 -1
  257. package/dist/index.d.ts.map +0 -1
  258. package/dist/index.js.map +0 -1
  259. package/dist/intelligence/acl-analyzer.d.ts.map +0 -1
  260. package/dist/intelligence/acl-analyzer.js.map +0 -1
  261. package/dist/intelligence/auto-resolution-engine.d.ts.map +0 -1
  262. package/dist/intelligence/auto-resolution-engine.js.map +0 -1
  263. package/dist/intelligence/gap-analysis-engine.d.ts.map +0 -1
  264. package/dist/intelligence/gap-analysis-engine.js.map +0 -1
  265. package/dist/intelligence/manual-instructions-generator.d.ts.map +0 -1
  266. package/dist/intelligence/manual-instructions-generator.js.map +0 -1
  267. package/dist/intelligence/mcp-coverage-analyzer.d.ts.map +0 -1
  268. package/dist/intelligence/mcp-coverage-analyzer.js.map +0 -1
  269. package/dist/intelligence/multi-pass-requirements-analyzer.d.ts.map +0 -1
  270. package/dist/intelligence/multi-pass-requirements-analyzer.js.map +0 -1
  271. package/dist/intelligence/performance-recommendations-engine.d.ts.map +0 -1
  272. package/dist/intelligence/performance-recommendations-engine.js.map +0 -1
  273. package/dist/intelligence/requirements-analyzer.d.ts.map +0 -1
  274. package/dist/intelligence/requirements-analyzer.js.map +0 -1
  275. package/dist/intelligence/task-analyzer.d.ts.map +0 -1
  276. package/dist/intelligence/task-analyzer.js.map +0 -1
  277. package/dist/managers/scope-manager.d.ts.map +0 -1
  278. package/dist/managers/scope-manager.js.map +0 -1
  279. package/dist/mcp/advanced/servicenow-advanced-features-mcp.d.ts.map +0 -1
  280. package/dist/mcp/advanced/servicenow-advanced-features-mcp.js.map +0 -1
  281. package/dist/mcp/base-mcp-server.d.ts.map +0 -1
  282. package/dist/mcp/base-mcp-server.js.map +0 -1
  283. package/dist/mcp/example-refactored-server.d.ts.map +0 -1
  284. package/dist/mcp/example-refactored-server.js.map +0 -1
  285. package/dist/mcp/http-transport-wrapper.d.ts.map +0 -1
  286. package/dist/mcp/http-transport-wrapper.js.map +0 -1
  287. package/dist/mcp/mcp-wrapper.d.ts.map +0 -1
  288. package/dist/mcp/mcp-wrapper.js.map +0 -1
  289. package/dist/mcp/service-discovery-client.d.ts.map +0 -1
  290. package/dist/mcp/service-discovery-client.js.map +0 -1
  291. package/dist/mcp/servicenow-automation-mcp-refactored.d.ts.map +0 -1
  292. package/dist/mcp/servicenow-automation-mcp-refactored.js.map +0 -1
  293. package/dist/mcp/servicenow-automation-mcp.d.ts.map +0 -1
  294. package/dist/mcp/servicenow-automation-mcp.js.map +0 -1
  295. package/dist/mcp/servicenow-deployment-mcp-refactored.d.ts.map +0 -1
  296. package/dist/mcp/servicenow-deployment-mcp-refactored.js.map +0 -1
  297. package/dist/mcp/servicenow-deployment-mcp.d.ts.map +0 -1
  298. package/dist/mcp/servicenow-deployment-mcp.js.map +0 -1
  299. package/dist/mcp/servicenow-flow-composer-mcp-refactored.d.ts.map +0 -1
  300. package/dist/mcp/servicenow-flow-composer-mcp-refactored.js.map +0 -1
  301. package/dist/mcp/servicenow-flow-composer-mcp.d.ts.map +0 -1
  302. package/dist/mcp/servicenow-flow-composer-mcp.js.map +0 -1
  303. package/dist/mcp/servicenow-graph-memory-mcp-refactored.d.ts.map +0 -1
  304. package/dist/mcp/servicenow-graph-memory-mcp-refactored.js.map +0 -1
  305. package/dist/mcp/servicenow-graph-memory-mcp.d.ts.map +0 -1
  306. package/dist/mcp/servicenow-graph-memory-mcp.js.map +0 -1
  307. package/dist/mcp/servicenow-integration-mcp-refactored.d.ts.map +0 -1
  308. package/dist/mcp/servicenow-integration-mcp-refactored.js.map +0 -1
  309. package/dist/mcp/servicenow-integration-mcp.d.ts.map +0 -1
  310. package/dist/mcp/servicenow-integration-mcp.js.map +0 -1
  311. package/dist/mcp/servicenow-intelligent-mcp-refactored.d.ts.map +0 -1
  312. package/dist/mcp/servicenow-intelligent-mcp-refactored.js.map +0 -1
  313. package/dist/mcp/servicenow-intelligent-mcp.d.ts.map +0 -1
  314. package/dist/mcp/servicenow-intelligent-mcp.js.map +0 -1
  315. package/dist/mcp/servicenow-mcp-server.d.ts.map +0 -1
  316. package/dist/mcp/servicenow-mcp-server.js.map +0 -1
  317. package/dist/mcp/servicenow-memory-mcp.d.ts.map +0 -1
  318. package/dist/mcp/servicenow-memory-mcp.js.map +0 -1
  319. package/dist/mcp/servicenow-operations-mcp-refactored.d.ts.map +0 -1
  320. package/dist/mcp/servicenow-operations-mcp-refactored.js.map +0 -1
  321. package/dist/mcp/servicenow-operations-mcp.d.ts.map +0 -1
  322. package/dist/mcp/servicenow-operations-mcp.js.map +0 -1
  323. package/dist/mcp/servicenow-platform-development-mcp-refactored.d.ts.map +0 -1
  324. package/dist/mcp/servicenow-platform-development-mcp-refactored.js.map +0 -1
  325. package/dist/mcp/servicenow-platform-development-mcp.d.ts.map +0 -1
  326. package/dist/mcp/servicenow-platform-development-mcp.js.map +0 -1
  327. package/dist/mcp/servicenow-progressive-indexer.d.ts.map +0 -1
  328. package/dist/mcp/servicenow-progressive-indexer.js.map +0 -1
  329. package/dist/mcp/servicenow-reporting-analytics-mcp-refactored.d.ts.map +0 -1
  330. package/dist/mcp/servicenow-reporting-analytics-mcp-refactored.js.map +0 -1
  331. package/dist/mcp/servicenow-reporting-analytics-mcp.d.ts.map +0 -1
  332. package/dist/mcp/servicenow-reporting-analytics-mcp.js.map +0 -1
  333. package/dist/mcp/servicenow-security-compliance-mcp-refactored.d.ts.map +0 -1
  334. package/dist/mcp/servicenow-security-compliance-mcp-refactored.js.map +0 -1
  335. package/dist/mcp/servicenow-security-compliance-mcp.d.ts.map +0 -1
  336. package/dist/mcp/servicenow-security-compliance-mcp.js.map +0 -1
  337. package/dist/mcp/servicenow-update-set-mcp-refactored.d.ts.map +0 -1
  338. package/dist/mcp/servicenow-update-set-mcp-refactored.js.map +0 -1
  339. package/dist/mcp/servicenow-update-set-mcp.d.ts.map +0 -1
  340. package/dist/mcp/servicenow-update-set-mcp.js.map +0 -1
  341. package/dist/mcp/servicenow-xml-flow-mcp.d.ts.map +0 -1
  342. package/dist/mcp/servicenow-xml-flow-mcp.js.map +0 -1
  343. package/dist/mcp/shared/agent-context-provider.d.ts.map +0 -1
  344. package/dist/mcp/shared/agent-context-provider.js.map +0 -1
  345. package/dist/mcp/shared/base-mcp-server.d.ts.map +0 -1
  346. package/dist/mcp/shared/base-mcp-server.js.map +0 -1
  347. package/dist/mcp/shared/mcp-memory-manager.d.ts.map +0 -1
  348. package/dist/mcp/shared/mcp-memory-manager.js.map +0 -1
  349. package/dist/mcp/shared/mcp-resource-manager.d.ts.map +0 -1
  350. package/dist/mcp/shared/mcp-resource-manager.js.map +0 -1
  351. package/dist/mcp/snow-flow-mcp.d.ts.map +0 -1
  352. package/dist/mcp/snow-flow-mcp.js.map +0 -1
  353. package/dist/mcp/start-all-mcp-servers.d.ts.map +0 -1
  354. package/dist/mcp/start-all-mcp-servers.js.map +0 -1
  355. package/dist/mcp/start-servicenow-mcp.d.ts.map +0 -1
  356. package/dist/mcp/start-servicenow-mcp.js.map +0 -1
  357. package/dist/mcp/test-simple-mcp.d.ts.map +0 -1
  358. package/dist/mcp/test-simple-mcp.js.map +0 -1
  359. package/dist/memory/hierarchical-memory-system.d.ts +0 -90
  360. package/dist/memory/hierarchical-memory-system.d.ts.map +0 -1
  361. package/dist/memory/hierarchical-memory-system.js +0 -400
  362. package/dist/memory/hierarchical-memory-system.js.map +0 -1
  363. package/dist/memory/index.d.ts +0 -9
  364. package/dist/memory/index.d.ts.map +0 -1
  365. package/dist/memory/index.js +0 -20
  366. package/dist/memory/index.js.map +0 -1
  367. package/dist/memory/mcp-integration-example.d.ts +0 -6
  368. package/dist/memory/mcp-integration-example.d.ts.map +0 -1
  369. package/dist/memory/mcp-integration-example.js +0 -281
  370. package/dist/memory/mcp-integration-example.js.map +0 -1
  371. package/dist/memory/memory-client.d.ts +0 -199
  372. package/dist/memory/memory-client.d.ts.map +0 -1
  373. package/dist/memory/memory-client.js +0 -364
  374. package/dist/memory/memory-client.js.map +0 -1
  375. package/dist/memory/memory-manager.d.ts +0 -29
  376. package/dist/memory/memory-manager.d.ts.map +0 -1
  377. package/dist/memory/memory-manager.js +0 -280
  378. package/dist/memory/memory-manager.js.map +0 -1
  379. package/dist/memory/memory-operations.d.ts +0 -179
  380. package/dist/memory/memory-operations.d.ts.map +0 -1
  381. package/dist/memory/memory-operations.js +0 -691
  382. package/dist/memory/memory-operations.js.map +0 -1
  383. package/dist/memory/memory-system.d.ts +0 -152
  384. package/dist/memory/memory-system.d.ts.map +0 -1
  385. package/dist/memory/memory-system.js +0 -632
  386. package/dist/memory/memory-system.js.map +0 -1
  387. package/dist/memory/memory-test.d.ts +0 -6
  388. package/dist/memory/memory-test.d.ts.map +0 -1
  389. package/dist/memory/memory-test.js +0 -161
  390. package/dist/memory/memory-test.js.map +0 -1
  391. package/dist/memory/servicenow-artifact-indexer.d.ts +0 -119
  392. package/dist/memory/servicenow-artifact-indexer.d.ts.map +0 -1
  393. package/dist/memory/servicenow-artifact-indexer.js +0 -560
  394. package/dist/memory/servicenow-artifact-indexer.js.map +0 -1
  395. package/dist/memory/snow-flow-memory-patterns.d.ts +0 -213
  396. package/dist/memory/snow-flow-memory-patterns.d.ts.map +0 -1
  397. package/dist/memory/snow-flow-memory-patterns.js +0 -200
  398. package/dist/memory/snow-flow-memory-patterns.js.map +0 -1
  399. package/dist/memory/snow-memory.d.ts +0 -54
  400. package/dist/memory/snow-memory.d.ts.map +0 -1
  401. package/dist/memory/snow-memory.js +0 -301
  402. package/dist/memory/snow-memory.js.map +0 -1
  403. package/dist/memory/swarm-memory.d.ts +0 -135
  404. package/dist/memory/swarm-memory.d.ts.map +0 -1
  405. package/dist/memory/swarm-memory.js +0 -378
  406. package/dist/memory/swarm-memory.js.map +0 -1
  407. package/dist/monitoring/enhanced-monitoring-system.d.ts.map +0 -1
  408. package/dist/monitoring/enhanced-monitoring-system.js.map +0 -1
  409. package/dist/monitoring/performance-tracker.d.ts.map +0 -1
  410. package/dist/monitoring/performance-tracker.js.map +0 -1
  411. package/dist/optimization/cost-optimization-engine.d.ts.map +0 -1
  412. package/dist/optimization/cost-optimization-engine.js.map +0 -1
  413. package/dist/optimization/index.d.ts.map +0 -1
  414. package/dist/optimization/index.js.map +0 -1
  415. package/dist/orchestration/discovery/service-discovery.d.ts.map +0 -1
  416. package/dist/orchestration/discovery/service-discovery.js.map +0 -1
  417. package/dist/orchestration/distributed-orchestrator.d.ts.map +0 -1
  418. package/dist/orchestration/distributed-orchestrator.js.map +0 -1
  419. package/dist/orchestration/distribution/task-distribution-engine.d.ts.map +0 -1
  420. package/dist/orchestration/distribution/task-distribution-engine.js.map +0 -1
  421. package/dist/orchestration/interfaces/distributed-orchestration.interface.d.ts.map +0 -1
  422. package/dist/orchestration/interfaces/distributed-orchestration.interface.js.map +0 -1
  423. package/dist/orchestration/protocols/mcpx-protocol.d.ts.map +0 -1
  424. package/dist/orchestration/protocols/mcpx-protocol.js.map +0 -1
  425. package/dist/orchestration/state/distributed-state-manager.d.ts.map +0 -1
  426. package/dist/orchestration/state/distributed-state-manager.js.map +0 -1
  427. package/dist/orchestrator/flow-composer.d.ts.map +0 -1
  428. package/dist/orchestrator/flow-composer.js.map +0 -1
  429. package/dist/orchestrator/flow-pattern-templates.d.ts.map +0 -1
  430. package/dist/orchestrator/flow-pattern-templates.js.map +0 -1
  431. package/dist/orchestrator/flow-subflow-decision-engine.d.ts.map +0 -1
  432. package/dist/orchestrator/flow-subflow-decision-engine.js.map +0 -1
  433. package/dist/orchestrator/flow-validation-engine.d.ts.map +0 -1
  434. package/dist/orchestrator/flow-validation-engine.js.map +0 -1
  435. package/dist/orchestrator/snow-orchestrator.d.ts.map +0 -1
  436. package/dist/orchestrator/snow-orchestrator.js.map +0 -1
  437. package/dist/orchestrator/subflow-creation-handler.d.ts.map +0 -1
  438. package/dist/orchestrator/subflow-creation-handler.js.map +0 -1
  439. package/dist/patterns/adaptive-patterns.d.ts.map +0 -1
  440. package/dist/patterns/adaptive-patterns.js.map +0 -1
  441. package/dist/queen/advanced-integration-test.d.ts.map +0 -1
  442. package/dist/queen/advanced-integration-test.js.map +0 -1
  443. package/dist/queen/agent-factory.d.ts.map +0 -1
  444. package/dist/queen/agent-factory.js.map +0 -1
  445. package/dist/queen/index.d.ts.map +0 -1
  446. package/dist/queen/index.js.map +0 -1
  447. package/dist/queen/integration-example.d.ts.map +0 -1
  448. package/dist/queen/integration-example.js.map +0 -1
  449. package/dist/queen/integration-test.d.ts.map +0 -1
  450. package/dist/queen/integration-test.js.map +0 -1
  451. package/dist/queen/mcp-execution-bridge.d.ts.map +0 -1
  452. package/dist/queen/mcp-execution-bridge.js.map +0 -1
  453. package/dist/queen/mock-mcp-client.d.ts.map +0 -1
  454. package/dist/queen/mock-mcp-client.js.map +0 -1
  455. package/dist/queen/neural-learning.d.ts.map +0 -1
  456. package/dist/queen/neural-learning.js.map +0 -1
  457. package/dist/queen/parallel-agent-engine.d.ts.map +0 -1
  458. package/dist/queen/parallel-agent-engine.js.map +0 -1
  459. package/dist/queen/queen-memory-system.d.ts.map +0 -1
  460. package/dist/queen/queen-memory-system.js.map +0 -1
  461. package/dist/queen/queen-memory.d.ts.map +0 -1
  462. package/dist/queen/queen-memory.js.map +0 -1
  463. package/dist/queen/run-integration-tests.d.ts.map +0 -1
  464. package/dist/queen/run-integration-tests.js.map +0 -1
  465. package/dist/queen/servicenow-queen.d.ts.map +0 -1
  466. package/dist/queen/servicenow-queen.js.map +0 -1
  467. package/dist/queen/types.d.ts.map +0 -1
  468. package/dist/queen/types.js.map +0 -1
  469. package/dist/rollback/smart-rollback-system.d.ts.map +0 -1
  470. package/dist/rollback/smart-rollback-system.js.map +0 -1
  471. package/dist/snow-flow-system.d.ts.map +0 -1
  472. package/dist/snow-flow-system.js.map +0 -1
  473. package/dist/sparc/coordinators/adaptive-coordinator.d.ts.map +0 -1
  474. package/dist/sparc/coordinators/adaptive-coordinator.js.map +0 -1
  475. package/dist/sparc/coordinators/team-coordinator.d.ts.map +0 -1
  476. package/dist/sparc/coordinators/team-coordinator.js.map +0 -1
  477. package/dist/sparc/modes/team-modes.d.ts.map +0 -1
  478. package/dist/sparc/modes/team-modes.js.map +0 -1
  479. package/dist/sparc/sparc-help.d.ts.map +0 -1
  480. package/dist/sparc/sparc-help.js.map +0 -1
  481. package/dist/sparc/team-sparc.d.ts.map +0 -1
  482. package/dist/sparc/team-sparc.js.map +0 -1
  483. package/dist/sparc/teams/application-team.d.ts.map +0 -1
  484. package/dist/sparc/teams/application-team.js.map +0 -1
  485. package/dist/sparc/teams/flow-team.d.ts.map +0 -1
  486. package/dist/sparc/teams/flow-team.js.map +0 -1
  487. package/dist/sparc/teams/widget-team.d.ts.map +0 -1
  488. package/dist/sparc/teams/widget-team.js.map +0 -1
  489. package/dist/specialists/app-specialists.d.ts.map +0 -1
  490. package/dist/specialists/app-specialists.js.map +0 -1
  491. package/dist/specialists/base-specialist.d.ts.map +0 -1
  492. package/dist/specialists/base-specialist.js.map +0 -1
  493. package/dist/specialists/flow-specialists.d.ts.map +0 -1
  494. package/dist/specialists/flow-specialists.js.map +0 -1
  495. package/dist/specialists/individual-specialists.d.ts.map +0 -1
  496. package/dist/specialists/individual-specialists.js.map +0 -1
  497. package/dist/specialists/widget-specialists.d.ts.map +0 -1
  498. package/dist/specialists/widget-specialists.js.map +0 -1
  499. package/dist/strategies/global-scope-strategy.d.ts.map +0 -1
  500. package/dist/strategies/global-scope-strategy.js.map +0 -1
  501. package/dist/teams/adaptive-team.d.ts.map +0 -1
  502. package/dist/teams/adaptive-team.js.map +0 -1
  503. package/dist/teams/application-team.d.ts.map +0 -1
  504. package/dist/teams/application-team.js.map +0 -1
  505. package/dist/teams/base-team.d.ts.map +0 -1
  506. package/dist/teams/base-team.js.map +0 -1
  507. package/dist/teams/flow-team.d.ts.map +0 -1
  508. package/dist/teams/flow-team.js.map +0 -1
  509. package/dist/teams/widget-team.d.ts.map +0 -1
  510. package/dist/teams/widget-team.js.map +0 -1
  511. package/dist/testing/integration-test-suite.d.ts.map +0 -1
  512. package/dist/testing/integration-test-suite.js.map +0 -1
  513. package/dist/types/index.d.ts.map +0 -1
  514. package/dist/types/index.js.map +0 -1
  515. package/dist/types/servicenow.types.d.ts.map +0 -1
  516. package/dist/types/servicenow.types.js.map +0 -1
  517. package/dist/types/snow-flow.types.d.ts.map +0 -1
  518. package/dist/types/snow-flow.types.js.map +0 -1
  519. package/dist/types/todo.types.d.ts.map +0 -1
  520. package/dist/types/todo.types.js.map +0 -1
  521. package/dist/utils/action-type-cache.d.ts.map +0 -1
  522. package/dist/utils/action-type-cache.js.map +0 -1
  523. package/dist/utils/agent-detector.d.ts.map +0 -1
  524. package/dist/utils/agent-detector.js.map +0 -1
  525. package/dist/utils/artifact-tracker.d.ts.map +0 -1
  526. package/dist/utils/artifact-tracker.js.map +0 -1
  527. package/dist/utils/dependency-detector.d.ts.map +0 -1
  528. package/dist/utils/dependency-detector.js.map +0 -1
  529. package/dist/utils/deployment-metadata-handler.d.ts.map +0 -1
  530. package/dist/utils/deployment-metadata-handler.js.map +0 -1
  531. package/dist/utils/error-recovery.d.ts.map +0 -1
  532. package/dist/utils/error-recovery.js.map +0 -1
  533. package/dist/utils/flow-api-discovery.d.ts.map +0 -1
  534. package/dist/utils/flow-api-discovery.js.map +0 -1
  535. package/dist/utils/flow-xml-generator.d.ts.map +0 -1
  536. package/dist/utils/flow-xml-generator.js.map +0 -1
  537. package/dist/utils/logger.d.ts.map +0 -1
  538. package/dist/utils/logger.js.map +0 -1
  539. package/dist/utils/mcp-auth-middleware.d.ts.map +0 -1
  540. package/dist/utils/mcp-auth-middleware.js.map +0 -1
  541. package/dist/utils/mcp-config-manager.d.ts.map +0 -1
  542. package/dist/utils/mcp-config-manager.js.map +0 -1
  543. package/dist/utils/mcp-server-manager.d.ts.map +0 -1
  544. package/dist/utils/mcp-server-manager.js.map +0 -1
  545. package/dist/utils/mcp-tool-registry.d.ts.map +0 -1
  546. package/dist/utils/mcp-tool-registry.js.map +0 -1
  547. package/dist/utils/migrate-claude-flow.d.ts.map +0 -1
  548. package/dist/utils/migrate-claude-flow.js.map +0 -1
  549. package/dist/utils/migrate-snow-flow.d.ts.map +0 -1
  550. package/dist/utils/migrate-snow-flow.js.map +0 -1
  551. package/dist/utils/oauth-html-templates.d.ts.map +0 -1
  552. package/dist/utils/oauth-html-templates.js.map +0 -1
  553. package/dist/utils/scope-utils.d.ts.map +0 -1
  554. package/dist/utils/scope-utils.js.map +0 -1
  555. package/dist/utils/servicenow-client.d.ts.map +0 -1
  556. package/dist/utils/servicenow-client.js.map +0 -1
  557. package/dist/utils/servicenow-id-generator.d.ts.map +0 -1
  558. package/dist/utils/servicenow-id-generator.js.map +0 -1
  559. package/dist/utils/snow-memory-manager.d.ts.map +0 -1
  560. package/dist/utils/snow-memory-manager.js.map +0 -1
  561. package/dist/utils/snow-oauth-old.d.ts.map +0 -1
  562. package/dist/utils/snow-oauth-old.js.map +0 -1
  563. package/dist/utils/snow-oauth.d.ts.map +0 -1
  564. package/dist/utils/snow-oauth.js.map +0 -1
  565. package/dist/utils/template-engine.d.ts.map +0 -1
  566. package/dist/utils/template-engine.js.map +0 -1
  567. package/dist/utils/theme-manager.d.ts.map +0 -1
  568. package/dist/utils/theme-manager.js.map +0 -1
  569. package/dist/utils/unified-auth-store.d.ts.map +0 -1
  570. package/dist/utils/unified-auth-store.js.map +0 -1
  571. package/dist/utils/update-set-importer.d.ts.map +0 -1
  572. package/dist/utils/update-set-importer.js.map +0 -1
  573. package/dist/utils/update-set-xml-packager.d.ts.map +0 -1
  574. package/dist/utils/update-set-xml-packager.js.map +0 -1
  575. package/dist/utils/widget-template-generator.d.ts.map +0 -1
  576. package/dist/utils/widget-template-generator.js.map +0 -1
  577. package/dist/version.d.ts.map +0 -1
  578. package/dist/version.js.map +0 -1
  579. package/memory/agents/README.md +0 -31
  580. package/memory/claude-flow-data.json +0 -5
  581. package/memory/servicenow_artifacts/000d9224c895221055906c7518aa2d3d.json +0 -30
  582. package/memory/servicenow_artifacts/0196b66173303010e46b4a2214f6a7a2.json +0 -36
  583. package/memory/servicenow_artifacts/125e5d1d837e2a102a7ea130ceaad397.json +0 -30
  584. package/memory/servicenow_artifacts/7637c1f2b7112210a5e5911cde11a972.json +0 -30
  585. package/memory/servicenow_artifacts/default_documentation_tables_1754056582292.json +0 -55
  586. package/memory/servicenow_artifacts/default_documentation_tables_1754057477189.json +0 -55
  587. package/memory/sessions/README.md +0 -32
  588. package/memory/update-set-sessions/01f82af583faea102a7ea130ceaad3d4.json +0 -9
  589. package/memory/update-set-sessions/27718fb983faea102a7ea130ceaad34b.json +0 -9
  590. package/memory/update-set-sessions/412e9bf6833e22502a7ea130ceaad30a.json +0 -8
  591. package/memory/update-set-sessions/66fc5a79837aea102a7ea130ceaad3ab.json +0 -9
  592. package/memory/update-set-sessions/71a30ff5837eea102a7ea130ceaad37f.json +0 -9
  593. package/memory/update-set-sessions/74fba27983faea102a7ea130ceaad3bd.json +0 -9
  594. package/memory/update-set-sessions/a0b147b5837eea102a7ea130ceaad344.json +0 -58
  595. package/memory/update-set-sessions/b13f5eb983baea102a7ea130ceaad33e.json +0 -9
@@ -0,0 +1,891 @@
1
+ /**
2
+ * Performance Optimization and Caching Strategy
3
+ * Advanced caching and performance optimization for ServiceNow API calls
4
+ */
5
+
6
+ import { ServiceNowClient } from '../utils/servicenow-client.js';
7
+ import { Logger } from '../utils/logger.js';
8
+ import fs from 'fs';
9
+ import path from 'path';
10
+ import os from 'os';
11
+
12
+ export interface CacheEntry<T> {
13
+ key: string;
14
+ value: T;
15
+ timestamp: Date;
16
+ ttl: number;
17
+ access_count: number;
18
+ last_accessed: Date;
19
+ tags: string[];
20
+ size: number;
21
+ }
22
+
23
+ export interface CacheConfig {
24
+ max_size: number;
25
+ default_ttl: number;
26
+ cleanup_interval: number;
27
+ persistence_enabled: boolean;
28
+ compression_enabled: boolean;
29
+ }
30
+
31
+ export interface PerformanceMetrics {
32
+ cache_hit_rate: number;
33
+ cache_miss_rate: number;
34
+ average_response_time: number;
35
+ api_call_count: number;
36
+ cache_size: number;
37
+ memory_usage: number;
38
+ bandwidth_saved: number;
39
+ }
40
+
41
+ export interface OptimizationHint {
42
+ type: 'batch' | 'cache' | 'compress' | 'parallel' | 'lazy';
43
+ description: string;
44
+ estimated_improvement: number;
45
+ implementation_complexity: 'low' | 'medium' | 'high';
46
+ }
47
+
48
+ export interface BatchRequest {
49
+ id: string;
50
+ requests: APIRequest[];
51
+ priority: 'high' | 'medium' | 'low';
52
+ timeout: number;
53
+ retry_count: number;
54
+ }
55
+
56
+ export interface APIRequest {
57
+ id: string;
58
+ method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
59
+ url: string;
60
+ data?: any;
61
+ headers?: Record<string, string>;
62
+ cache_key?: string;
63
+ cacheable: boolean;
64
+ priority: number;
65
+ }
66
+
67
+ export interface APIResponse<T> {
68
+ success: boolean;
69
+ data?: T;
70
+ error?: string;
71
+ cached: boolean;
72
+ response_time: number;
73
+ cache_hit: boolean;
74
+ }
75
+
76
+ export class PerformanceOptimizer {
77
+ private client: ServiceNowClient;
78
+ private logger: Logger;
79
+ private cache: Map<string, CacheEntry<any>> = new Map();
80
+ private config: CacheConfig;
81
+ private metrics: PerformanceMetrics;
82
+ private cleanupTimer?: NodeJS.Timeout;
83
+ private batchQueue: Map<string, BatchRequest> = new Map();
84
+ private rateLimiter: Map<string, number> = new Map();
85
+ private connectionPool: Map<string, any> = new Map();
86
+
87
+ constructor(client: ServiceNowClient, config?: Partial<CacheConfig>) {
88
+ this.client = client;
89
+ this.logger = new Logger('PerformanceOptimizer');
90
+
91
+ this.config = {
92
+ max_size: 1000,
93
+ default_ttl: 300000, // 5 minutes
94
+ cleanup_interval: 60000, // 1 minute
95
+ persistence_enabled: true,
96
+ compression_enabled: true,
97
+ ...config
98
+ };
99
+
100
+ this.metrics = {
101
+ cache_hit_rate: 0,
102
+ cache_miss_rate: 0,
103
+ average_response_time: 0,
104
+ api_call_count: 0,
105
+ cache_size: 0,
106
+ memory_usage: 0,
107
+ bandwidth_saved: 0
108
+ };
109
+
110
+ this.startCleanupTimer();
111
+ this.loadPersistedCache();
112
+ }
113
+
114
+ /**
115
+ * Optimized API call with caching and performance monitoring
116
+ */
117
+ async optimizedAPICall<T>(request: APIRequest): Promise<APIResponse<T>> {
118
+ const startTime = Date.now();
119
+ const cacheKey = request.cache_key || this.generateCacheKey(request);
120
+
121
+ // Check cache first
122
+ if (request.cacheable) {
123
+ const cached = this.getFromCache<T>(cacheKey);
124
+ if (cached) {
125
+ const responseTime = Date.now() - startTime;
126
+ this.updateMetrics(true, responseTime);
127
+
128
+ return {
129
+ success: true,
130
+ data: cached,
131
+ cached: true,
132
+ response_time: responseTime,
133
+ cache_hit: true
134
+ };
135
+ }
136
+ }
137
+
138
+ // Apply rate limiting
139
+ if (this.isRateLimited(request.url)) {
140
+ await this.waitForRateLimit(request.url);
141
+ }
142
+
143
+ try {
144
+ // Execute API call
145
+ const response = await this.executeAPICall<T>(request);
146
+ const responseTime = Date.now() - startTime;
147
+
148
+ // Cache successful responses
149
+ if (request.cacheable && response.success && response.data) {
150
+ this.setInCache(cacheKey, response.data, {
151
+ ttl: this.getTTLForRequest(request),
152
+ tags: this.getTagsForRequest(request)
153
+ });
154
+ }
155
+
156
+ this.updateMetrics(false, responseTime);
157
+
158
+ return {
159
+ ...response,
160
+ cached: false,
161
+ response_time: responseTime,
162
+ cache_hit: false
163
+ };
164
+
165
+ } catch (error) {
166
+ const responseTime = Date.now() - startTime;
167
+ this.updateMetrics(false, responseTime);
168
+
169
+ return {
170
+ success: false,
171
+ error: error instanceof Error ? error.message : String(error),
172
+ cached: false,
173
+ response_time: responseTime,
174
+ cache_hit: false
175
+ };
176
+ }
177
+ }
178
+
179
+ /**
180
+ * Batch multiple API requests for better performance
181
+ */
182
+ async batchAPIRequests<T>(requests: APIRequest[]): Promise<APIResponse<T>[]> {
183
+ const batchId = `batch_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
184
+ const batchRequest: BatchRequest = {
185
+ id: batchId,
186
+ requests: requests.sort((a, b) => b.priority - a.priority),
187
+ priority: 'medium',
188
+ timeout: 30000,
189
+ retry_count: 0
190
+ };
191
+
192
+ this.batchQueue.set(batchId, batchRequest);
193
+
194
+ try {
195
+ // Group requests by type for optimization
196
+ const groupedRequests = this.groupRequestsByType(requests);
197
+ const results: APIResponse<T>[] = [];
198
+
199
+ // Execute groups in parallel
200
+ const groupPromises = Object.entries(groupedRequests).map(async ([type, groupRequests]) => {
201
+ return await this.executeBatchGroup<T>(groupRequests, type);
202
+ });
203
+
204
+ const groupResults = await Promise.all(groupPromises);
205
+
206
+ // Flatten results
207
+ for (const groupResult of groupResults) {
208
+ results.push(...groupResult);
209
+ }
210
+
211
+ return results;
212
+
213
+ } finally {
214
+ this.batchQueue.delete(batchId);
215
+ }
216
+ }
217
+
218
+ /**
219
+ * Preload commonly accessed data
220
+ */
221
+ async preloadData(preloadConfig: {
222
+ action_types: boolean;
223
+ trigger_types: boolean;
224
+ flow_templates: boolean;
225
+ user_preferences: boolean;
226
+ }): Promise<void> {
227
+ const preloadTasks: Promise<void>[] = [];
228
+
229
+ if (preloadConfig.action_types) {
230
+ preloadTasks.push(this.preloadActionTypes());
231
+ }
232
+
233
+ if (preloadConfig.trigger_types) {
234
+ preloadTasks.push(this.preloadTriggerTypes());
235
+ }
236
+
237
+ if (preloadConfig.flow_templates) {
238
+ preloadTasks.push(this.preloadFlowTemplates());
239
+ }
240
+
241
+ if (preloadConfig.user_preferences) {
242
+ preloadTasks.push(this.preloadUserPreferences());
243
+ }
244
+
245
+ await Promise.all(preloadTasks);
246
+ this.logger.info('Data preloading completed');
247
+ }
248
+
249
+ /**
250
+ * Analyze performance and provide optimization suggestions
251
+ */
252
+ analyzePerformance(): {
253
+ metrics: PerformanceMetrics;
254
+ bottlenecks: string[];
255
+ optimization_hints: OptimizationHint[];
256
+ } {
257
+ const bottlenecks: string[] = [];
258
+ const optimizationHints: OptimizationHint[] = [];
259
+
260
+ // Analyze cache hit rate
261
+ if (this.metrics.cache_hit_rate < 0.5) {
262
+ bottlenecks.push('Low cache hit rate');
263
+ optimizationHints.push({
264
+ type: 'cache',
265
+ description: 'Increase cache TTL for frequently accessed data',
266
+ estimated_improvement: 0.3,
267
+ implementation_complexity: 'low'
268
+ });
269
+ }
270
+
271
+ // Analyze response times
272
+ if (this.metrics.average_response_time > 2000) {
273
+ bottlenecks.push('High response times');
274
+ optimizationHints.push({
275
+ type: 'parallel',
276
+ description: 'Implement parallel processing for independent requests',
277
+ estimated_improvement: 0.5,
278
+ implementation_complexity: 'medium'
279
+ });
280
+ }
281
+
282
+ // Analyze cache size
283
+ if (this.cache.size > this.config.max_size * 0.8) {
284
+ bottlenecks.push('Cache nearing capacity');
285
+ optimizationHints.push({
286
+ type: 'compress',
287
+ description: 'Enable compression for cached data',
288
+ estimated_improvement: 0.4,
289
+ implementation_complexity: 'medium'
290
+ });
291
+ }
292
+
293
+ // Analyze API call patterns
294
+ const batchableRequests = this.identifyBatchableRequests();
295
+ if (batchableRequests.length > 0) {
296
+ optimizationHints.push({
297
+ type: 'batch',
298
+ description: `Batch ${batchableRequests.length} similar requests`,
299
+ estimated_improvement: 0.6,
300
+ implementation_complexity: 'high'
301
+ });
302
+ }
303
+
304
+ return {
305
+ metrics: this.metrics,
306
+ bottlenecks,
307
+ optimization_hints: optimizationHints
308
+ };
309
+ }
310
+
311
+ /**
312
+ * Implement adaptive caching based on usage patterns
313
+ */
314
+ optimizeCaching(): void {
315
+ const cacheAnalysis = this.analyzeCacheUsage();
316
+
317
+ // Adjust TTL based on access patterns
318
+ for (const [key, entry] of this.cache) {
319
+ const accessFrequency = entry.access_count / (Date.now() - entry.timestamp.getTime());
320
+
321
+ if (accessFrequency > 0.01) { // Frequently accessed
322
+ entry.ttl = this.config.default_ttl * 2;
323
+ } else if (accessFrequency < 0.001) { // Rarely accessed
324
+ entry.ttl = this.config.default_ttl * 0.5;
325
+ }
326
+ }
327
+
328
+ // Implement cache warming for predicted requests
329
+ this.warmCache(cacheAnalysis.predicted_requests);
330
+ }
331
+
332
+ /**
333
+ * Get from cache with LRU eviction
334
+ */
335
+ private getFromCache<T>(key: string): T | null {
336
+ const entry = this.cache.get(key);
337
+ if (!entry) {
338
+ return null;
339
+ }
340
+
341
+ // Check if expired
342
+ if (Date.now() - entry.timestamp.getTime() > entry.ttl) {
343
+ this.cache.delete(key);
344
+ return null;
345
+ }
346
+
347
+ // Update access statistics
348
+ entry.access_count++;
349
+ entry.last_accessed = new Date();
350
+
351
+ return entry.value;
352
+ }
353
+
354
+ /**
355
+ * Set in cache with size management
356
+ */
357
+ private setInCache<T>(key: string, value: T, options: {
358
+ ttl?: number;
359
+ tags?: string[];
360
+ } = {}): void {
361
+ // Check if cache is full
362
+ if (this.cache.size >= this.config.max_size) {
363
+ this.evictLeastRecent();
364
+ }
365
+
366
+ const entry: CacheEntry<T> = {
367
+ key,
368
+ value,
369
+ timestamp: new Date(),
370
+ ttl: options.ttl || this.config.default_ttl,
371
+ access_count: 1,
372
+ last_accessed: new Date(),
373
+ tags: options.tags || [],
374
+ size: this.estimateSize(value)
375
+ };
376
+
377
+ this.cache.set(key, entry);
378
+ this.updateCacheMetrics();
379
+ }
380
+
381
+ /**
382
+ * Execute API call with connection pooling
383
+ */
384
+ private async executeAPICall<T>(request: APIRequest): Promise<APIResponse<T>> {
385
+ const connection = this.getPooledConnection(request.url);
386
+ const startTime = Date.now();
387
+
388
+ try {
389
+ let response;
390
+
391
+ switch (request.method) {
392
+ case 'GET':
393
+ response = await this.client.getRecords(this.extractTable(request.url), request.data);
394
+ break;
395
+ case 'POST':
396
+ response = await this.client.createRecord(this.extractTable(request.url), request.data);
397
+ break;
398
+ case 'PUT':
399
+ case 'PATCH':
400
+ response = await this.client.updateRecord(this.extractTable(request.url), request.data.sys_id, request.data);
401
+ break;
402
+ case 'DELETE':
403
+ response = await this.client.deleteRecord(this.extractTable(request.url), request.data.sys_id);
404
+ break;
405
+ default:
406
+ throw new Error(`Unsupported method: ${request.method}`);
407
+ }
408
+
409
+ return {
410
+ success: response.success,
411
+ data: response.data,
412
+ error: response.error,
413
+ cached: false,
414
+ response_time: Date.now() - startTime,
415
+ cache_hit: false
416
+ };
417
+
418
+ } finally {
419
+ this.returnPooledConnection(request.url, connection);
420
+ }
421
+ }
422
+
423
+ /**
424
+ * Group requests by type for batch processing
425
+ */
426
+ private groupRequestsByType(requests: APIRequest[]): Record<string, APIRequest[]> {
427
+ const groups: Record<string, APIRequest[]> = {};
428
+
429
+ for (const request of requests) {
430
+ const type = `${request.method}_${this.extractTable(request.url)}`;
431
+ if (!groups[type]) {
432
+ groups[type] = [];
433
+ }
434
+ groups[type].push(request);
435
+ }
436
+
437
+ return groups;
438
+ }
439
+
440
+ /**
441
+ * Execute batch group with parallel processing
442
+ */
443
+ private async executeBatchGroup<T>(requests: APIRequest[], type: string): Promise<APIResponse<T>[]> {
444
+ const batchSize = this.getBatchSizeForType(type);
445
+ const results: APIResponse<T>[] = [];
446
+
447
+ // Process requests in batches
448
+ for (let i = 0; i < requests.length; i += batchSize) {
449
+ const batch = requests.slice(i, i + batchSize);
450
+ const batchPromises = batch.map(request => this.optimizedAPICall<T>(request));
451
+
452
+ const batchResults = await Promise.all(batchPromises);
453
+ results.push(...batchResults);
454
+ }
455
+
456
+ return results;
457
+ }
458
+
459
+ /**
460
+ * Preload action types
461
+ */
462
+ private async preloadActionTypes(): Promise<void> {
463
+ const request: APIRequest = {
464
+ id: 'preload_action_types',
465
+ method: 'GET',
466
+ url: '/api/now/table/sys_hub_action_type_base',
467
+ cacheable: true,
468
+ priority: 1
469
+ };
470
+
471
+ await this.optimizedAPICall(request);
472
+ }
473
+
474
+ /**
475
+ * Preload trigger types
476
+ */
477
+ private async preloadTriggerTypes(): Promise<void> {
478
+ const request: APIRequest = {
479
+ id: 'preload_trigger_types',
480
+ method: 'GET',
481
+ url: '/api/now/table/sys_hub_trigger_type',
482
+ cacheable: true,
483
+ priority: 1
484
+ };
485
+
486
+ await this.optimizedAPICall(request);
487
+ }
488
+
489
+ /**
490
+ * Preload flow templates
491
+ */
492
+ private async preloadFlowTemplates(): Promise<void> {
493
+ const request: APIRequest = {
494
+ id: 'preload_flow_templates',
495
+ method: 'GET',
496
+ url: '/api/now/table/sys_hub_flow_template',
497
+ cacheable: true,
498
+ priority: 1
499
+ };
500
+
501
+ await this.optimizedAPICall(request);
502
+ }
503
+
504
+ /**
505
+ * Preload user preferences
506
+ */
507
+ private async preloadUserPreferences(): Promise<void> {
508
+ const request: APIRequest = {
509
+ id: 'preload_user_preferences',
510
+ method: 'GET',
511
+ url: '/api/now/table/sys_user_preference',
512
+ cacheable: true,
513
+ priority: 1
514
+ };
515
+
516
+ await this.optimizedAPICall(request);
517
+ }
518
+
519
+ /**
520
+ * Analyze cache usage patterns
521
+ */
522
+ private analyzeCacheUsage(): {
523
+ most_accessed: string[];
524
+ least_accessed: string[];
525
+ predicted_requests: string[];
526
+ } {
527
+ const sortedEntries = Array.from(this.cache.entries())
528
+ .sort((a, b) => b[1].access_count - a[1].access_count);
529
+
530
+ const mostAccessed = sortedEntries.slice(0, 10).map(([key]) => key);
531
+ const leastAccessed = sortedEntries.slice(-10).map(([key]) => key);
532
+
533
+ // Predict likely requests based on patterns
534
+ const predictedRequests = this.predictLikelyRequests(mostAccessed);
535
+
536
+ return {
537
+ most_accessed: mostAccessed,
538
+ least_accessed: leastAccessed,
539
+ predicted_requests: predictedRequests
540
+ };
541
+ }
542
+
543
+ /**
544
+ * Warm cache with predicted requests
545
+ */
546
+ private async warmCache(predictedRequests: string[]): Promise<void> {
547
+ const warmingTasks = predictedRequests.map(async (cacheKey) => {
548
+ if (!this.cache.has(cacheKey)) {
549
+ const request = this.reconstructRequestFromCacheKey(cacheKey);
550
+ if (request) {
551
+ await this.optimizedAPICall(request);
552
+ }
553
+ }
554
+ });
555
+
556
+ await Promise.all(warmingTasks);
557
+ }
558
+
559
+ /**
560
+ * Evict least recently used entries
561
+ */
562
+ private evictLeastRecent(): void {
563
+ const entries = Array.from(this.cache.entries())
564
+ .sort((a, b) => a[1].last_accessed.getTime() - b[1].last_accessed.getTime());
565
+
566
+ const entriesToEvict = entries.slice(0, Math.ceil(this.config.max_size * 0.1));
567
+
568
+ for (const [key] of entriesToEvict) {
569
+ this.cache.delete(key);
570
+ }
571
+ }
572
+
573
+ /**
574
+ * Update performance metrics
575
+ */
576
+ private updateMetrics(cacheHit: boolean, responseTime: number): void {
577
+ this.metrics.api_call_count++;
578
+
579
+ if (cacheHit) {
580
+ this.metrics.cache_hit_rate = (this.metrics.cache_hit_rate * (this.metrics.api_call_count - 1) + 1) / this.metrics.api_call_count;
581
+ } else {
582
+ this.metrics.cache_miss_rate = (this.metrics.cache_miss_rate * (this.metrics.api_call_count - 1) + 1) / this.metrics.api_call_count;
583
+ }
584
+
585
+ this.metrics.average_response_time = (this.metrics.average_response_time * (this.metrics.api_call_count - 1) + responseTime) / this.metrics.api_call_count;
586
+ }
587
+
588
+ /**
589
+ * Update cache metrics
590
+ */
591
+ private updateCacheMetrics(): void {
592
+ this.metrics.cache_size = this.cache.size;
593
+ this.metrics.memory_usage = Array.from(this.cache.values())
594
+ .reduce((total, entry) => total + entry.size, 0);
595
+ }
596
+
597
+ /**
598
+ * Generate cache key for request
599
+ */
600
+ private generateCacheKey(request: APIRequest): string {
601
+ const keyParts = [
602
+ request.method,
603
+ request.url,
604
+ JSON.stringify(request.data),
605
+ JSON.stringify(request.headers)
606
+ ];
607
+
608
+ return Buffer.from(keyParts.join('|')).toString('base64');
609
+ }
610
+
611
+ /**
612
+ * Get TTL for specific request type
613
+ */
614
+ private getTTLForRequest(request: APIRequest): number {
615
+ const url = request.url.toLowerCase();
616
+
617
+ if (url.includes('action_type') || url.includes('trigger_type')) {
618
+ return 3600000; // 1 hour for metadata
619
+ }
620
+
621
+ if (url.includes('flow_template')) {
622
+ return 1800000; // 30 minutes for templates
623
+ }
624
+
625
+ if (url.includes('user_preference')) {
626
+ return 600000; // 10 minutes for preferences
627
+ }
628
+
629
+ return this.config.default_ttl;
630
+ }
631
+
632
+ /**
633
+ * Get tags for request
634
+ */
635
+ private getTagsForRequest(request: APIRequest): string[] {
636
+ const tags: string[] = [];
637
+ const url = request.url.toLowerCase();
638
+
639
+ if (url.includes('action_type')) tags.push('action_type');
640
+ if (url.includes('trigger_type')) tags.push('trigger_type');
641
+ if (url.includes('flow')) tags.push('flow');
642
+ if (url.includes('user')) tags.push('user');
643
+
644
+ return tags;
645
+ }
646
+
647
+ /**
648
+ * Estimate size of cached value
649
+ */
650
+ private estimateSize(value: any): number {
651
+ return JSON.stringify(value).length * 2; // Rough estimate
652
+ }
653
+
654
+ /**
655
+ * Extract table name from URL
656
+ */
657
+ private extractTable(url: string): string {
658
+ const match = url.match(/\/table\/([^\/\?]+)/);
659
+ return match ? match[1] : 'unknown';
660
+ }
661
+
662
+ /**
663
+ * Get batch size for request type
664
+ */
665
+ private getBatchSizeForType(type: string): number {
666
+ if (type.includes('GET')) return 10;
667
+ if (type.includes('POST')) return 5;
668
+ if (type.includes('PUT') || type.includes('PATCH')) return 3;
669
+ if (type.includes('DELETE')) return 3;
670
+ return 5;
671
+ }
672
+
673
+ /**
674
+ * Check if request is rate limited
675
+ */
676
+ private isRateLimited(url: string): boolean {
677
+ const domain = this.extractDomain(url);
678
+ const lastRequest = this.rateLimiter.get(domain);
679
+
680
+ if (!lastRequest) return false;
681
+
682
+ const timeSinceLastRequest = Date.now() - lastRequest;
683
+ return timeSinceLastRequest < 100; // 100ms rate limit
684
+ }
685
+
686
+ /**
687
+ * Wait for rate limit to clear
688
+ */
689
+ private async waitForRateLimit(url: string): Promise<void> {
690
+ const domain = this.extractDomain(url);
691
+ const lastRequest = this.rateLimiter.get(domain);
692
+
693
+ if (lastRequest) {
694
+ const waitTime = 100 - (Date.now() - lastRequest);
695
+ if (waitTime > 0) {
696
+ await new Promise(resolve => setTimeout(resolve, waitTime));
697
+ }
698
+ }
699
+
700
+ this.rateLimiter.set(domain, Date.now());
701
+ }
702
+
703
+ /**
704
+ * Extract domain from URL
705
+ */
706
+ private extractDomain(url: string): string {
707
+ try {
708
+ return new URL(url).hostname;
709
+ } catch {
710
+ return 'default';
711
+ }
712
+ }
713
+
714
+ /**
715
+ * Get pooled connection
716
+ */
717
+ private getPooledConnection(url: string): any {
718
+ const domain = this.extractDomain(url);
719
+ return this.connectionPool.get(domain) || {};
720
+ }
721
+
722
+ /**
723
+ * Return pooled connection
724
+ */
725
+ private returnPooledConnection(url: string, connection: any): void {
726
+ const domain = this.extractDomain(url);
727
+ this.connectionPool.set(domain, connection);
728
+ }
729
+
730
+ /**
731
+ * Identify batchable requests
732
+ */
733
+ private identifyBatchableRequests(): string[] {
734
+ // Implementation would analyze request patterns
735
+ return [];
736
+ }
737
+
738
+ /**
739
+ * Predict likely requests based on patterns
740
+ */
741
+ private predictLikelyRequests(mostAccessed: string[]): string[] {
742
+ // Implementation would use ML or pattern analysis
743
+ return mostAccessed.slice(0, 5);
744
+ }
745
+
746
+ /**
747
+ * Reconstruct request from cache key
748
+ */
749
+ private reconstructRequestFromCacheKey(cacheKey: string): APIRequest | null {
750
+ try {
751
+ const decoded = Buffer.from(cacheKey, 'base64').toString();
752
+ const [method, url, data, headers] = decoded.split('|');
753
+
754
+ return {
755
+ id: 'reconstructed',
756
+ method: method as any,
757
+ url,
758
+ data: JSON.parse(data),
759
+ headers: JSON.parse(headers),
760
+ cacheable: true,
761
+ priority: 1
762
+ };
763
+ } catch {
764
+ return null;
765
+ }
766
+ }
767
+
768
+ /**
769
+ * Start cleanup timer
770
+ */
771
+ private startCleanupTimer(): void {
772
+ this.cleanupTimer = setInterval(() => {
773
+ this.cleanupExpiredEntries();
774
+ }, this.config.cleanup_interval);
775
+ }
776
+
777
+ /**
778
+ * Cleanup expired entries
779
+ */
780
+ private cleanupExpiredEntries(): void {
781
+ const now = Date.now();
782
+ const expiredKeys: string[] = [];
783
+
784
+ for (const [key, entry] of this.cache) {
785
+ if (now - entry.timestamp.getTime() > entry.ttl) {
786
+ expiredKeys.push(key);
787
+ }
788
+ }
789
+
790
+ for (const key of expiredKeys) {
791
+ this.cache.delete(key);
792
+ }
793
+
794
+ if (expiredKeys.length > 0) {
795
+ this.logger.debug(`Cleaned up ${expiredKeys.length} expired cache entries`);
796
+ this.updateCacheMetrics();
797
+ }
798
+ }
799
+
800
+ /**
801
+ * Load persisted cache
802
+ */
803
+ private loadPersistedCache(): void {
804
+ if (!this.config.persistence_enabled) return;
805
+
806
+ try {
807
+ const cacheFile = path.join(process.env.SNOW_FLOW_HOME || path.join(os.homedir(), '.snow-flow'), 'cache', 'performance_cache.json');
808
+
809
+ if (fs.existsSync(cacheFile)) {
810
+ const cacheData = JSON.parse(fs.readFileSync(cacheFile, 'utf-8'));
811
+
812
+ for (const [key, entry] of Object.entries(cacheData)) {
813
+ this.cache.set(key, {
814
+ ...entry as CacheEntry<any>,
815
+ timestamp: new Date((entry as any).timestamp),
816
+ last_accessed: new Date((entry as any).last_accessed)
817
+ });
818
+ }
819
+
820
+ this.logger.info(`Loaded ${this.cache.size} entries from persisted cache`);
821
+ }
822
+ } catch (error) {
823
+ this.logger.warn('Failed to load persisted cache:', error);
824
+ }
825
+ }
826
+
827
+ /**
828
+ * Save cache to disk
829
+ */
830
+ saveCacheToDisk(): void {
831
+ if (!this.config.persistence_enabled) return;
832
+
833
+ try {
834
+ const cacheDir = path.join(process.env.SNOW_FLOW_HOME || path.join(os.homedir(), '.snow-flow'), 'cache');
835
+ if (!fs.existsSync(cacheDir)) {
836
+ fs.mkdirSync(cacheDir, { recursive: true });
837
+ }
838
+
839
+ const cacheFile = path.join(cacheDir, 'performance_cache.json');
840
+ const cacheData = Object.fromEntries(this.cache.entries());
841
+
842
+ fs.writeFileSync(cacheFile, JSON.stringify(cacheData, null, 2));
843
+ this.logger.info(`Saved ${this.cache.size} entries to persisted cache`);
844
+ } catch (error) {
845
+ this.logger.warn('Failed to save cache to disk:', error);
846
+ }
847
+ }
848
+
849
+ /**
850
+ * Clear cache
851
+ */
852
+ clearCache(tags?: string[]): void {
853
+ if (!tags || tags.length === 0) {
854
+ this.cache.clear();
855
+ this.logger.info('Cleared all cache entries');
856
+ } else {
857
+ const keysToDelete: string[] = [];
858
+
859
+ for (const [key, entry] of this.cache) {
860
+ if (entry.tags.some(tag => tags.includes(tag))) {
861
+ keysToDelete.push(key);
862
+ }
863
+ }
864
+
865
+ for (const key of keysToDelete) {
866
+ this.cache.delete(key);
867
+ }
868
+
869
+ this.logger.info(`Cleared ${keysToDelete.length} cache entries with tags: ${tags.join(', ')}`);
870
+ }
871
+
872
+ this.updateCacheMetrics();
873
+ }
874
+
875
+ /**
876
+ * Destroy optimizer and cleanup
877
+ */
878
+ destroy(): void {
879
+ if (this.cleanupTimer) {
880
+ clearInterval(this.cleanupTimer);
881
+ }
882
+
883
+ this.saveCacheToDisk();
884
+ this.cache.clear();
885
+ this.batchQueue.clear();
886
+ this.rateLimiter.clear();
887
+ this.connectionPool.clear();
888
+
889
+ this.logger.info('Performance optimizer destroyed');
890
+ }
891
+ }