snow-flow 1.4.49 → 2.0.1

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 (600) 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.template → .claude/settings.local.json} +18 -21
  5. package/.claude-flow/metrics/system-metrics.json +3060 -0
  6. package/.env.example +64 -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 +140 -614
  13. package/dist/cli.js.bak +2052 -0
  14. package/package.json +2 -2
  15. package/scripts/create-env.js +6 -1
  16. package/scripts/reset-mcp-servers.js +246 -0
  17. package/scripts/update-version.js +31 -0
  18. package/src/agents/README.md +192 -0
  19. package/src/agents/base-agent.ts +251 -0
  20. package/src/agents/coordinator.ts +971 -0
  21. package/src/agents/index.ts +18 -0
  22. package/src/agents/queen-403-handler.ts +230 -0
  23. package/src/agents/queen-agent.ts +1399 -0
  24. package/src/agents/script-writer-agent.ts +769 -0
  25. package/src/agents/security-agent.ts +726 -0
  26. package/src/agents/widget-creator-agent.ts +568 -0
  27. package/src/api/error-handling.ts +1758 -0
  28. package/src/api/natural-language-mapper.ts +630 -0
  29. package/src/api/performance-optimizer.ts +891 -0
  30. package/src/api/transaction-manager.ts +754 -0
  31. package/src/cli/deploy-artifact.ts +304 -0
  32. package/src/cli/snow-flow-cli-integration.ts +434 -0
  33. package/src/cli.ts +4455 -0
  34. package/src/cli.ts.bak +5616 -0
  35. package/src/compliance/advanced-compliance-system.ts +1268 -0
  36. package/src/compliance/index.ts +19 -0
  37. package/src/config/snow-flow-config.ts +1019 -0
  38. package/src/documentation/index.ts +16 -0
  39. package/src/documentation/self-documenting-system.ts +1421 -0
  40. package/src/dynamic-version.ts +44 -0
  41. package/src/healing/index.ts +20 -0
  42. package/src/healing/self-healing-system.ts +1435 -0
  43. package/src/health/README.md +161 -0
  44. package/src/health/system-health.ts +995 -0
  45. package/src/index.ts +60 -0
  46. package/src/intelligence/acl-analyzer.ts +377 -0
  47. package/src/intelligence/auto-resolution-engine.ts +643 -0
  48. package/src/intelligence/gap-analysis-engine.ts +488 -0
  49. package/src/intelligence/manual-instructions-generator.ts +744 -0
  50. package/src/intelligence/mcp-coverage-analyzer.ts +708 -0
  51. package/src/intelligence/multi-pass-requirements-analyzer.ts +603 -0
  52. package/src/intelligence/performance-recommendations-engine.ts +1223 -0
  53. package/src/intelligence/requirements-analyzer.ts +1148 -0
  54. package/src/intelligence/task-analyzer.ts +628 -0
  55. package/src/managers/scope-manager.ts +555 -0
  56. package/src/mcp/advanced/servicenow-advanced-features-mcp.ts +16110 -0
  57. package/src/mcp/base-mcp-server.ts +660 -0
  58. package/src/mcp/http-transport-wrapper.ts +426 -0
  59. package/src/mcp/service-discovery-client.ts +312 -0
  60. package/src/mcp/servicenow-automation-mcp-refactored.ts +678 -0
  61. package/src/mcp/servicenow-automation-mcp.ts +838 -0
  62. package/src/mcp/servicenow-deployment-mcp-refactored.ts +1292 -0
  63. package/src/mcp/servicenow-deployment-mcp.ts +7244 -0
  64. package/src/mcp/servicenow-graph-memory-mcp-refactored.ts +721 -0
  65. package/src/mcp/servicenow-graph-memory-mcp.ts +832 -0
  66. package/src/mcp/servicenow-integration-mcp-refactored.ts +655 -0
  67. package/src/mcp/servicenow-integration-mcp.ts +819 -0
  68. package/src/mcp/servicenow-intelligent-mcp-refactored.ts +977 -0
  69. package/src/mcp/servicenow-intelligent-mcp.ts +4638 -0
  70. package/src/mcp/servicenow-mcp-server.ts +728 -0
  71. package/src/mcp/servicenow-memory-mcp.ts +474 -0
  72. package/src/mcp/servicenow-operations-mcp-refactored.ts +1995 -0
  73. package/src/mcp/servicenow-operations-mcp.ts +3384 -0
  74. package/src/mcp/servicenow-platform-development-mcp-refactored.ts +611 -0
  75. package/src/mcp/servicenow-platform-development-mcp.ts +970 -0
  76. package/src/mcp/servicenow-progressive-indexer.ts +370 -0
  77. package/src/mcp/servicenow-reporting-analytics-mcp-refactored.ts +695 -0
  78. package/src/mcp/servicenow-reporting-analytics-mcp.ts +1123 -0
  79. package/src/mcp/servicenow-security-compliance-mcp-refactored.ts +642 -0
  80. package/src/mcp/servicenow-security-compliance-mcp.ts +1157 -0
  81. package/src/mcp/servicenow-update-set-mcp-refactored.ts +751 -0
  82. package/src/mcp/servicenow-update-set-mcp.ts +811 -0
  83. package/src/mcp/shared/agent-context-provider.ts +365 -0
  84. package/src/mcp/shared/base-mcp-server.ts +2463 -0
  85. package/src/mcp/shared/mcp-memory-manager.ts +540 -0
  86. package/src/mcp/shared/mcp-resource-manager.ts +367 -0
  87. package/src/mcp/snow-flow-mcp.ts +911 -0
  88. package/src/mcp/start-all-mcp-servers.ts +102 -0
  89. package/src/mcp/start-servicenow-mcp.ts +67 -0
  90. package/src/monitoring/enhanced-monitoring-system.ts +1345 -0
  91. package/src/monitoring/performance-tracker.ts +777 -0
  92. package/src/optimization/cost-optimization-engine.ts +1125 -0
  93. package/src/optimization/index.ts +10 -0
  94. package/src/queen/README.md +403 -0
  95. package/src/queen/agent-factory.ts +574 -0
  96. package/src/queen/index.ts +94 -0
  97. package/src/queen/mcp-execution-bridge.ts +681 -0
  98. package/src/queen/neural-learning.ts +319 -0
  99. package/src/queen/parallel-agent-engine.ts +848 -0
  100. package/src/queen/queen-memory-system.ts +490 -0
  101. package/src/queen/queen-memory.ts +456 -0
  102. package/src/queen/servicenow-queen.ts +1029 -0
  103. package/src/queen/types.ts +87 -0
  104. package/src/rollback/smart-rollback-system.ts +866 -0
  105. package/src/schemas/deployment.schema.json +58 -0
  106. package/src/schemas/flow.schema.json +79 -0
  107. package/src/schemas/widget.schema.json +72 -0
  108. package/src/snow-flow-system.ts +541 -0
  109. package/src/sparc/sparc-help.ts +49 -0
  110. package/src/sparc/team-sparc.ts +88 -0
  111. package/src/strategies/global-scope-strategy.ts +736 -0
  112. package/src/templates/base/application.template.json +45 -0
  113. package/src/templates/base/business_rule.template.json +33 -0
  114. package/src/templates/base/script_include.template.json +18 -0
  115. package/src/templates/base/table.template.json +64 -0
  116. package/src/templates/base/widget.template.json +25 -0
  117. package/src/templates/patterns/composite.incident-management.template.json +140 -0
  118. package/src/templates/patterns/widget.dashboard.template.json +238 -0
  119. package/src/templates/patterns/widget.datatable.template.json +292 -0
  120. package/src/testing/integration-test-suite.ts +1276 -0
  121. package/src/types/index.ts +183 -0
  122. package/src/types/neo4j-driver.d.ts +23 -0
  123. package/src/types/servicenow.types.ts +307 -0
  124. package/src/types/snow-flow.types.ts +186 -0
  125. package/src/types/todo.types.ts +70 -0
  126. package/src/utils/action-type-cache.ts +286 -0
  127. package/src/utils/agent-detector.ts +573 -0
  128. package/src/utils/artifact-tracker.ts +379 -0
  129. package/src/utils/dependency-detector.ts +233 -0
  130. package/src/utils/deployment-metadata-handler.ts +518 -0
  131. package/src/utils/error-recovery.ts +680 -0
  132. package/src/utils/logger.ts +60 -0
  133. package/src/utils/mcp-auth-middleware.ts +262 -0
  134. package/src/utils/mcp-config-manager.ts +270 -0
  135. package/src/utils/mcp-server-manager.ts +446 -0
  136. package/src/utils/mcp-tool-registry.ts +298 -0
  137. package/src/utils/migrate-snow-flow.ts +98 -0
  138. package/src/utils/oauth-html-templates.ts +188 -0
  139. package/src/utils/scope-utils.ts +443 -0
  140. package/src/utils/servicenow-client.ts +3321 -0
  141. package/src/utils/servicenow-id-generator.ts +181 -0
  142. package/src/utils/snow-memory-manager.ts +605 -0
  143. package/src/utils/snow-oauth.ts +797 -0
  144. package/src/utils/template-engine.ts +463 -0
  145. package/src/utils/theme-manager.ts +295 -0
  146. package/src/utils/unified-auth-store.ts +222 -0
  147. package/src/utils/update-set-importer.ts +422 -0
  148. package/src/utils/update-set-xml-packager.ts +371 -0
  149. package/src/utils/widget-template-generator.ts +1744 -0
  150. package/src/version.ts +1950 -0
  151. package/.claude/commands/memory/README.md +0 -9
  152. package/.claude.mcp-config.template +0 -149
  153. package/SIMPLE_TEST_COMMANDS.txt +0 -143
  154. package/SNOW_FLOW_ADVANCED_FEATURES_PLAIN.txt +0 -78
  155. package/TEST_COMMANDS_v139.sh +0 -126
  156. package/claude-flow +0 -81
  157. package/claude-flow.bat +0 -18
  158. package/claude-flow.config.json +0 -20
  159. package/claude-flow.ps1 +0 -24
  160. package/dist/agents/app-creator.agent.d.ts.map +0 -1
  161. package/dist/agents/app-creator.agent.js.map +0 -1
  162. package/dist/agents/base/base-snow-agent.d.ts.map +0 -1
  163. package/dist/agents/base/base-snow-agent.js.map +0 -1
  164. package/dist/agents/base-agent.d.ts.map +0 -1
  165. package/dist/agents/base-agent.js.map +0 -1
  166. package/dist/agents/base-snow-agent.d.ts.map +0 -1
  167. package/dist/agents/base-snow-agent.js.map +0 -1
  168. package/dist/agents/coordinator.d.ts.map +0 -1
  169. package/dist/agents/coordinator.js.map +0 -1
  170. package/dist/agents/flow-builder-agent.d.ts.map +0 -1
  171. package/dist/agents/flow-builder-agent.js.map +0 -1
  172. package/dist/agents/index.d.ts.map +0 -1
  173. package/dist/agents/index.js.map +0 -1
  174. package/dist/agents/queen-403-handler.d.ts.map +0 -1
  175. package/dist/agents/queen-403-handler.js.map +0 -1
  176. package/dist/agents/queen-agent-example.d.ts.map +0 -1
  177. package/dist/agents/queen-agent-example.js.map +0 -1
  178. package/dist/agents/queen-agent.d.ts.map +0 -1
  179. package/dist/agents/queen-agent.js.map +0 -1
  180. package/dist/agents/queen-agent.test.d.ts.map +0 -1
  181. package/dist/agents/queen-agent.test.js.map +0 -1
  182. package/dist/agents/script-generator.agent.d.ts.map +0 -1
  183. package/dist/agents/script-generator.agent.js.map +0 -1
  184. package/dist/agents/script-writer-agent.d.ts.map +0 -1
  185. package/dist/agents/script-writer-agent.js.map +0 -1
  186. package/dist/agents/security-agent.d.ts.map +0 -1
  187. package/dist/agents/security-agent.js.map +0 -1
  188. package/dist/agents/specialists/automation-specialist.agent.d.ts.map +0 -1
  189. package/dist/agents/specialists/automation-specialist.agent.js.map +0 -1
  190. package/dist/agents/specialists/data-specialist.agent.d.ts.map +0 -1
  191. package/dist/agents/specialists/data-specialist.agent.js.map +0 -1
  192. package/dist/agents/specialists/integration-specialist.agent.d.ts.map +0 -1
  193. package/dist/agents/specialists/integration-specialist.agent.js.map +0 -1
  194. package/dist/agents/specialists/reporting-specialist.agent.d.ts.map +0 -1
  195. package/dist/agents/specialists/reporting-specialist.agent.js.map +0 -1
  196. package/dist/agents/specialists/security-specialist.agent.d.ts.map +0 -1
  197. package/dist/agents/specialists/security-specialist.agent.js.map +0 -1
  198. package/dist/agents/teams/adaptive/adaptive-coordinator.agent.d.ts.map +0 -1
  199. package/dist/agents/teams/adaptive/adaptive-coordinator.agent.js.map +0 -1
  200. package/dist/agents/teams/base-team.d.ts.map +0 -1
  201. package/dist/agents/teams/base-team.js.map +0 -1
  202. package/dist/agents/teams/team-types.d.ts.map +0 -1
  203. package/dist/agents/teams/team-types.js.map +0 -1
  204. package/dist/agents/teams/widget/widget-architect.agent.d.ts.map +0 -1
  205. package/dist/agents/teams/widget/widget-architect.agent.js.map +0 -1
  206. package/dist/agents/teams/widget/widget-backend.agent.d.ts.map +0 -1
  207. package/dist/agents/teams/widget/widget-backend.agent.js.map +0 -1
  208. package/dist/agents/teams/widget/widget-frontend.agent.d.ts.map +0 -1
  209. package/dist/agents/teams/widget/widget-frontend.agent.js.map +0 -1
  210. package/dist/agents/teams/widget/widget-platform.agent.d.ts.map +0 -1
  211. package/dist/agents/teams/widget/widget-platform.agent.js.map +0 -1
  212. package/dist/agents/teams/widget/widget-uiux.agent.d.ts.map +0 -1
  213. package/dist/agents/teams/widget/widget-uiux.agent.js.map +0 -1
  214. package/dist/agents/test-agent.d.ts.map +0 -1
  215. package/dist/agents/test-agent.js.map +0 -1
  216. package/dist/agents/test-agents.d.ts.map +0 -1
  217. package/dist/agents/test-agents.js.map +0 -1
  218. package/dist/agents/ui-builder.agent.d.ts.map +0 -1
  219. package/dist/agents/ui-builder.agent.js.map +0 -1
  220. package/dist/agents/widget-builder.agent.d.ts.map +0 -1
  221. package/dist/agents/widget-builder.agent.js.map +0 -1
  222. package/dist/agents/widget-creator-agent.d.ts.map +0 -1
  223. package/dist/agents/widget-creator-agent.js.map +0 -1
  224. package/dist/agents/workflow-designer.agent.d.ts.map +0 -1
  225. package/dist/agents/workflow-designer.agent.js.map +0 -1
  226. package/dist/api/error-handling.d.ts.map +0 -1
  227. package/dist/api/error-handling.js.map +0 -1
  228. package/dist/api/flow-designer-api.d.ts.map +0 -1
  229. package/dist/api/flow-designer-api.js.map +0 -1
  230. package/dist/api/natural-language-mapper.d.ts.map +0 -1
  231. package/dist/api/natural-language-mapper.js.map +0 -1
  232. package/dist/api/performance-optimizer.d.ts.map +0 -1
  233. package/dist/api/performance-optimizer.js.map +0 -1
  234. package/dist/api/transaction-manager.d.ts.map +0 -1
  235. package/dist/api/transaction-manager.js.map +0 -1
  236. package/dist/assembly/team-assembler.d.ts.map +0 -1
  237. package/dist/assembly/team-assembler.js.map +0 -1
  238. package/dist/cli/deploy-artifact.d.ts.map +0 -1
  239. package/dist/cli/deploy-artifact.js.map +0 -1
  240. package/dist/cli/snow-flow-cli-integration.d.ts.map +0 -1
  241. package/dist/cli/snow-flow-cli-integration.js.map +0 -1
  242. package/dist/cli.d.ts.map +0 -1
  243. package/dist/cli.js.map +0 -1
  244. package/dist/compliance/advanced-compliance-system.d.ts.map +0 -1
  245. package/dist/compliance/advanced-compliance-system.js.map +0 -1
  246. package/dist/compliance/index.d.ts.map +0 -1
  247. package/dist/compliance/index.js.map +0 -1
  248. package/dist/config/snow-flow-config.d.ts.map +0 -1
  249. package/dist/config/snow-flow-config.js.map +0 -1
  250. package/dist/documentation/index.d.ts.map +0 -1
  251. package/dist/documentation/index.js.map +0 -1
  252. package/dist/documentation/self-documenting-system.d.ts.map +0 -1
  253. package/dist/documentation/self-documenting-system.js.map +0 -1
  254. package/dist/dynamic-version.d.ts.map +0 -1
  255. package/dist/dynamic-version.js.map +0 -1
  256. package/dist/healing/index.d.ts.map +0 -1
  257. package/dist/healing/index.js.map +0 -1
  258. package/dist/healing/self-healing-system.d.ts.map +0 -1
  259. package/dist/healing/self-healing-system.js.map +0 -1
  260. package/dist/health/system-health.d.ts.map +0 -1
  261. package/dist/health/system-health.js.map +0 -1
  262. package/dist/index.d.ts.map +0 -1
  263. package/dist/index.js.map +0 -1
  264. package/dist/intelligence/acl-analyzer.d.ts.map +0 -1
  265. package/dist/intelligence/acl-analyzer.js.map +0 -1
  266. package/dist/intelligence/auto-resolution-engine.d.ts.map +0 -1
  267. package/dist/intelligence/auto-resolution-engine.js.map +0 -1
  268. package/dist/intelligence/gap-analysis-engine.d.ts.map +0 -1
  269. package/dist/intelligence/gap-analysis-engine.js.map +0 -1
  270. package/dist/intelligence/manual-instructions-generator.d.ts.map +0 -1
  271. package/dist/intelligence/manual-instructions-generator.js.map +0 -1
  272. package/dist/intelligence/mcp-coverage-analyzer.d.ts.map +0 -1
  273. package/dist/intelligence/mcp-coverage-analyzer.js.map +0 -1
  274. package/dist/intelligence/multi-pass-requirements-analyzer.d.ts.map +0 -1
  275. package/dist/intelligence/multi-pass-requirements-analyzer.js.map +0 -1
  276. package/dist/intelligence/performance-recommendations-engine.d.ts.map +0 -1
  277. package/dist/intelligence/performance-recommendations-engine.js.map +0 -1
  278. package/dist/intelligence/requirements-analyzer.d.ts.map +0 -1
  279. package/dist/intelligence/requirements-analyzer.js.map +0 -1
  280. package/dist/intelligence/task-analyzer.d.ts.map +0 -1
  281. package/dist/intelligence/task-analyzer.js.map +0 -1
  282. package/dist/managers/scope-manager.d.ts.map +0 -1
  283. package/dist/managers/scope-manager.js.map +0 -1
  284. package/dist/mcp/advanced/servicenow-advanced-features-mcp.d.ts.map +0 -1
  285. package/dist/mcp/advanced/servicenow-advanced-features-mcp.js.map +0 -1
  286. package/dist/mcp/base-mcp-server.d.ts.map +0 -1
  287. package/dist/mcp/base-mcp-server.js.map +0 -1
  288. package/dist/mcp/example-refactored-server.d.ts.map +0 -1
  289. package/dist/mcp/example-refactored-server.js.map +0 -1
  290. package/dist/mcp/http-transport-wrapper.d.ts.map +0 -1
  291. package/dist/mcp/http-transport-wrapper.js.map +0 -1
  292. package/dist/mcp/mcp-wrapper.d.ts.map +0 -1
  293. package/dist/mcp/mcp-wrapper.js.map +0 -1
  294. package/dist/mcp/service-discovery-client.d.ts.map +0 -1
  295. package/dist/mcp/service-discovery-client.js.map +0 -1
  296. package/dist/mcp/servicenow-automation-mcp-refactored.d.ts.map +0 -1
  297. package/dist/mcp/servicenow-automation-mcp-refactored.js.map +0 -1
  298. package/dist/mcp/servicenow-automation-mcp.d.ts.map +0 -1
  299. package/dist/mcp/servicenow-automation-mcp.js.map +0 -1
  300. package/dist/mcp/servicenow-deployment-mcp-refactored.d.ts.map +0 -1
  301. package/dist/mcp/servicenow-deployment-mcp-refactored.js.map +0 -1
  302. package/dist/mcp/servicenow-deployment-mcp.d.ts.map +0 -1
  303. package/dist/mcp/servicenow-deployment-mcp.js.map +0 -1
  304. package/dist/mcp/servicenow-flow-composer-mcp-refactored.d.ts.map +0 -1
  305. package/dist/mcp/servicenow-flow-composer-mcp-refactored.js.map +0 -1
  306. package/dist/mcp/servicenow-flow-composer-mcp.d.ts.map +0 -1
  307. package/dist/mcp/servicenow-flow-composer-mcp.js.map +0 -1
  308. package/dist/mcp/servicenow-graph-memory-mcp-refactored.d.ts.map +0 -1
  309. package/dist/mcp/servicenow-graph-memory-mcp-refactored.js.map +0 -1
  310. package/dist/mcp/servicenow-graph-memory-mcp.d.ts.map +0 -1
  311. package/dist/mcp/servicenow-graph-memory-mcp.js.map +0 -1
  312. package/dist/mcp/servicenow-integration-mcp-refactored.d.ts.map +0 -1
  313. package/dist/mcp/servicenow-integration-mcp-refactored.js.map +0 -1
  314. package/dist/mcp/servicenow-integration-mcp.d.ts.map +0 -1
  315. package/dist/mcp/servicenow-integration-mcp.js.map +0 -1
  316. package/dist/mcp/servicenow-intelligent-mcp-refactored.d.ts.map +0 -1
  317. package/dist/mcp/servicenow-intelligent-mcp-refactored.js.map +0 -1
  318. package/dist/mcp/servicenow-intelligent-mcp.d.ts.map +0 -1
  319. package/dist/mcp/servicenow-intelligent-mcp.js.map +0 -1
  320. package/dist/mcp/servicenow-mcp-server.d.ts.map +0 -1
  321. package/dist/mcp/servicenow-mcp-server.js.map +0 -1
  322. package/dist/mcp/servicenow-memory-mcp.d.ts.map +0 -1
  323. package/dist/mcp/servicenow-memory-mcp.js.map +0 -1
  324. package/dist/mcp/servicenow-operations-mcp-refactored.d.ts.map +0 -1
  325. package/dist/mcp/servicenow-operations-mcp-refactored.js.map +0 -1
  326. package/dist/mcp/servicenow-operations-mcp.d.ts.map +0 -1
  327. package/dist/mcp/servicenow-operations-mcp.js.map +0 -1
  328. package/dist/mcp/servicenow-platform-development-mcp-refactored.d.ts.map +0 -1
  329. package/dist/mcp/servicenow-platform-development-mcp-refactored.js.map +0 -1
  330. package/dist/mcp/servicenow-platform-development-mcp.d.ts.map +0 -1
  331. package/dist/mcp/servicenow-platform-development-mcp.js.map +0 -1
  332. package/dist/mcp/servicenow-progressive-indexer.d.ts.map +0 -1
  333. package/dist/mcp/servicenow-progressive-indexer.js.map +0 -1
  334. package/dist/mcp/servicenow-reporting-analytics-mcp-refactored.d.ts.map +0 -1
  335. package/dist/mcp/servicenow-reporting-analytics-mcp-refactored.js.map +0 -1
  336. package/dist/mcp/servicenow-reporting-analytics-mcp.d.ts.map +0 -1
  337. package/dist/mcp/servicenow-reporting-analytics-mcp.js.map +0 -1
  338. package/dist/mcp/servicenow-security-compliance-mcp-refactored.d.ts.map +0 -1
  339. package/dist/mcp/servicenow-security-compliance-mcp-refactored.js.map +0 -1
  340. package/dist/mcp/servicenow-security-compliance-mcp.d.ts.map +0 -1
  341. package/dist/mcp/servicenow-security-compliance-mcp.js.map +0 -1
  342. package/dist/mcp/servicenow-update-set-mcp-refactored.d.ts.map +0 -1
  343. package/dist/mcp/servicenow-update-set-mcp-refactored.js.map +0 -1
  344. package/dist/mcp/servicenow-update-set-mcp.d.ts.map +0 -1
  345. package/dist/mcp/servicenow-update-set-mcp.js.map +0 -1
  346. package/dist/mcp/servicenow-xml-flow-mcp.d.ts.map +0 -1
  347. package/dist/mcp/servicenow-xml-flow-mcp.js.map +0 -1
  348. package/dist/mcp/shared/agent-context-provider.d.ts.map +0 -1
  349. package/dist/mcp/shared/agent-context-provider.js.map +0 -1
  350. package/dist/mcp/shared/base-mcp-server.d.ts.map +0 -1
  351. package/dist/mcp/shared/base-mcp-server.js.map +0 -1
  352. package/dist/mcp/shared/mcp-memory-manager.d.ts.map +0 -1
  353. package/dist/mcp/shared/mcp-memory-manager.js.map +0 -1
  354. package/dist/mcp/shared/mcp-resource-manager.d.ts.map +0 -1
  355. package/dist/mcp/shared/mcp-resource-manager.js.map +0 -1
  356. package/dist/mcp/snow-flow-mcp.d.ts.map +0 -1
  357. package/dist/mcp/snow-flow-mcp.js.map +0 -1
  358. package/dist/mcp/start-all-mcp-servers.d.ts.map +0 -1
  359. package/dist/mcp/start-all-mcp-servers.js.map +0 -1
  360. package/dist/mcp/start-servicenow-mcp.d.ts.map +0 -1
  361. package/dist/mcp/start-servicenow-mcp.js.map +0 -1
  362. package/dist/mcp/test-simple-mcp.d.ts.map +0 -1
  363. package/dist/mcp/test-simple-mcp.js.map +0 -1
  364. package/dist/memory/hierarchical-memory-system.d.ts +0 -90
  365. package/dist/memory/hierarchical-memory-system.d.ts.map +0 -1
  366. package/dist/memory/hierarchical-memory-system.js +0 -400
  367. package/dist/memory/hierarchical-memory-system.js.map +0 -1
  368. package/dist/memory/index.d.ts +0 -9
  369. package/dist/memory/index.d.ts.map +0 -1
  370. package/dist/memory/index.js +0 -20
  371. package/dist/memory/index.js.map +0 -1
  372. package/dist/memory/mcp-integration-example.d.ts +0 -6
  373. package/dist/memory/mcp-integration-example.d.ts.map +0 -1
  374. package/dist/memory/mcp-integration-example.js +0 -281
  375. package/dist/memory/mcp-integration-example.js.map +0 -1
  376. package/dist/memory/memory-client.d.ts +0 -199
  377. package/dist/memory/memory-client.d.ts.map +0 -1
  378. package/dist/memory/memory-client.js +0 -364
  379. package/dist/memory/memory-client.js.map +0 -1
  380. package/dist/memory/memory-manager.d.ts +0 -29
  381. package/dist/memory/memory-manager.d.ts.map +0 -1
  382. package/dist/memory/memory-manager.js +0 -280
  383. package/dist/memory/memory-manager.js.map +0 -1
  384. package/dist/memory/memory-operations.d.ts +0 -179
  385. package/dist/memory/memory-operations.d.ts.map +0 -1
  386. package/dist/memory/memory-operations.js +0 -691
  387. package/dist/memory/memory-operations.js.map +0 -1
  388. package/dist/memory/memory-system.d.ts +0 -152
  389. package/dist/memory/memory-system.d.ts.map +0 -1
  390. package/dist/memory/memory-system.js +0 -632
  391. package/dist/memory/memory-system.js.map +0 -1
  392. package/dist/memory/memory-test.d.ts +0 -6
  393. package/dist/memory/memory-test.d.ts.map +0 -1
  394. package/dist/memory/memory-test.js +0 -161
  395. package/dist/memory/memory-test.js.map +0 -1
  396. package/dist/memory/servicenow-artifact-indexer.d.ts +0 -119
  397. package/dist/memory/servicenow-artifact-indexer.d.ts.map +0 -1
  398. package/dist/memory/servicenow-artifact-indexer.js +0 -560
  399. package/dist/memory/servicenow-artifact-indexer.js.map +0 -1
  400. package/dist/memory/snow-flow-memory-patterns.d.ts +0 -213
  401. package/dist/memory/snow-flow-memory-patterns.d.ts.map +0 -1
  402. package/dist/memory/snow-flow-memory-patterns.js +0 -200
  403. package/dist/memory/snow-flow-memory-patterns.js.map +0 -1
  404. package/dist/memory/snow-memory.d.ts +0 -54
  405. package/dist/memory/snow-memory.d.ts.map +0 -1
  406. package/dist/memory/snow-memory.js +0 -301
  407. package/dist/memory/snow-memory.js.map +0 -1
  408. package/dist/memory/swarm-memory.d.ts +0 -135
  409. package/dist/memory/swarm-memory.d.ts.map +0 -1
  410. package/dist/memory/swarm-memory.js +0 -378
  411. package/dist/memory/swarm-memory.js.map +0 -1
  412. package/dist/monitoring/enhanced-monitoring-system.d.ts.map +0 -1
  413. package/dist/monitoring/enhanced-monitoring-system.js.map +0 -1
  414. package/dist/monitoring/performance-tracker.d.ts.map +0 -1
  415. package/dist/monitoring/performance-tracker.js.map +0 -1
  416. package/dist/optimization/cost-optimization-engine.d.ts.map +0 -1
  417. package/dist/optimization/cost-optimization-engine.js.map +0 -1
  418. package/dist/optimization/index.d.ts.map +0 -1
  419. package/dist/optimization/index.js.map +0 -1
  420. package/dist/orchestration/discovery/service-discovery.d.ts.map +0 -1
  421. package/dist/orchestration/discovery/service-discovery.js.map +0 -1
  422. package/dist/orchestration/distributed-orchestrator.d.ts.map +0 -1
  423. package/dist/orchestration/distributed-orchestrator.js.map +0 -1
  424. package/dist/orchestration/distribution/task-distribution-engine.d.ts.map +0 -1
  425. package/dist/orchestration/distribution/task-distribution-engine.js.map +0 -1
  426. package/dist/orchestration/interfaces/distributed-orchestration.interface.d.ts.map +0 -1
  427. package/dist/orchestration/interfaces/distributed-orchestration.interface.js.map +0 -1
  428. package/dist/orchestration/protocols/mcpx-protocol.d.ts.map +0 -1
  429. package/dist/orchestration/protocols/mcpx-protocol.js.map +0 -1
  430. package/dist/orchestration/state/distributed-state-manager.d.ts.map +0 -1
  431. package/dist/orchestration/state/distributed-state-manager.js.map +0 -1
  432. package/dist/orchestrator/flow-composer.d.ts.map +0 -1
  433. package/dist/orchestrator/flow-composer.js.map +0 -1
  434. package/dist/orchestrator/flow-pattern-templates.d.ts.map +0 -1
  435. package/dist/orchestrator/flow-pattern-templates.js.map +0 -1
  436. package/dist/orchestrator/flow-subflow-decision-engine.d.ts.map +0 -1
  437. package/dist/orchestrator/flow-subflow-decision-engine.js.map +0 -1
  438. package/dist/orchestrator/flow-validation-engine.d.ts.map +0 -1
  439. package/dist/orchestrator/flow-validation-engine.js.map +0 -1
  440. package/dist/orchestrator/snow-orchestrator.d.ts.map +0 -1
  441. package/dist/orchestrator/snow-orchestrator.js.map +0 -1
  442. package/dist/orchestrator/subflow-creation-handler.d.ts.map +0 -1
  443. package/dist/orchestrator/subflow-creation-handler.js.map +0 -1
  444. package/dist/patterns/adaptive-patterns.d.ts.map +0 -1
  445. package/dist/patterns/adaptive-patterns.js.map +0 -1
  446. package/dist/queen/advanced-integration-test.d.ts.map +0 -1
  447. package/dist/queen/advanced-integration-test.js.map +0 -1
  448. package/dist/queen/agent-factory.d.ts.map +0 -1
  449. package/dist/queen/agent-factory.js.map +0 -1
  450. package/dist/queen/index.d.ts.map +0 -1
  451. package/dist/queen/index.js.map +0 -1
  452. package/dist/queen/integration-example.d.ts.map +0 -1
  453. package/dist/queen/integration-example.js.map +0 -1
  454. package/dist/queen/integration-test.d.ts.map +0 -1
  455. package/dist/queen/integration-test.js.map +0 -1
  456. package/dist/queen/mcp-execution-bridge.d.ts.map +0 -1
  457. package/dist/queen/mcp-execution-bridge.js.map +0 -1
  458. package/dist/queen/mock-mcp-client.d.ts.map +0 -1
  459. package/dist/queen/mock-mcp-client.js.map +0 -1
  460. package/dist/queen/neural-learning.d.ts.map +0 -1
  461. package/dist/queen/neural-learning.js.map +0 -1
  462. package/dist/queen/parallel-agent-engine.d.ts.map +0 -1
  463. package/dist/queen/parallel-agent-engine.js.map +0 -1
  464. package/dist/queen/queen-memory-system.d.ts.map +0 -1
  465. package/dist/queen/queen-memory-system.js.map +0 -1
  466. package/dist/queen/queen-memory.d.ts.map +0 -1
  467. package/dist/queen/queen-memory.js.map +0 -1
  468. package/dist/queen/run-integration-tests.d.ts.map +0 -1
  469. package/dist/queen/run-integration-tests.js.map +0 -1
  470. package/dist/queen/servicenow-queen.d.ts.map +0 -1
  471. package/dist/queen/servicenow-queen.js.map +0 -1
  472. package/dist/queen/types.d.ts.map +0 -1
  473. package/dist/queen/types.js.map +0 -1
  474. package/dist/rollback/smart-rollback-system.d.ts.map +0 -1
  475. package/dist/rollback/smart-rollback-system.js.map +0 -1
  476. package/dist/snow-flow-system.d.ts.map +0 -1
  477. package/dist/snow-flow-system.js.map +0 -1
  478. package/dist/sparc/coordinators/adaptive-coordinator.d.ts.map +0 -1
  479. package/dist/sparc/coordinators/adaptive-coordinator.js.map +0 -1
  480. package/dist/sparc/coordinators/team-coordinator.d.ts.map +0 -1
  481. package/dist/sparc/coordinators/team-coordinator.js.map +0 -1
  482. package/dist/sparc/modes/team-modes.d.ts.map +0 -1
  483. package/dist/sparc/modes/team-modes.js.map +0 -1
  484. package/dist/sparc/sparc-help.d.ts.map +0 -1
  485. package/dist/sparc/sparc-help.js.map +0 -1
  486. package/dist/sparc/team-sparc.d.ts.map +0 -1
  487. package/dist/sparc/team-sparc.js.map +0 -1
  488. package/dist/sparc/teams/application-team.d.ts.map +0 -1
  489. package/dist/sparc/teams/application-team.js.map +0 -1
  490. package/dist/sparc/teams/flow-team.d.ts.map +0 -1
  491. package/dist/sparc/teams/flow-team.js.map +0 -1
  492. package/dist/sparc/teams/widget-team.d.ts.map +0 -1
  493. package/dist/sparc/teams/widget-team.js.map +0 -1
  494. package/dist/specialists/app-specialists.d.ts.map +0 -1
  495. package/dist/specialists/app-specialists.js.map +0 -1
  496. package/dist/specialists/base-specialist.d.ts.map +0 -1
  497. package/dist/specialists/base-specialist.js.map +0 -1
  498. package/dist/specialists/flow-specialists.d.ts.map +0 -1
  499. package/dist/specialists/flow-specialists.js.map +0 -1
  500. package/dist/specialists/individual-specialists.d.ts.map +0 -1
  501. package/dist/specialists/individual-specialists.js.map +0 -1
  502. package/dist/specialists/widget-specialists.d.ts.map +0 -1
  503. package/dist/specialists/widget-specialists.js.map +0 -1
  504. package/dist/strategies/global-scope-strategy.d.ts.map +0 -1
  505. package/dist/strategies/global-scope-strategy.js.map +0 -1
  506. package/dist/teams/adaptive-team.d.ts.map +0 -1
  507. package/dist/teams/adaptive-team.js.map +0 -1
  508. package/dist/teams/application-team.d.ts.map +0 -1
  509. package/dist/teams/application-team.js.map +0 -1
  510. package/dist/teams/base-team.d.ts.map +0 -1
  511. package/dist/teams/base-team.js.map +0 -1
  512. package/dist/teams/flow-team.d.ts.map +0 -1
  513. package/dist/teams/flow-team.js.map +0 -1
  514. package/dist/teams/widget-team.d.ts.map +0 -1
  515. package/dist/teams/widget-team.js.map +0 -1
  516. package/dist/testing/integration-test-suite.d.ts.map +0 -1
  517. package/dist/testing/integration-test-suite.js.map +0 -1
  518. package/dist/types/index.d.ts.map +0 -1
  519. package/dist/types/index.js.map +0 -1
  520. package/dist/types/servicenow.types.d.ts.map +0 -1
  521. package/dist/types/servicenow.types.js.map +0 -1
  522. package/dist/types/snow-flow.types.d.ts.map +0 -1
  523. package/dist/types/snow-flow.types.js.map +0 -1
  524. package/dist/types/todo.types.d.ts.map +0 -1
  525. package/dist/types/todo.types.js.map +0 -1
  526. package/dist/utils/action-type-cache.d.ts.map +0 -1
  527. package/dist/utils/action-type-cache.js.map +0 -1
  528. package/dist/utils/agent-detector.d.ts.map +0 -1
  529. package/dist/utils/agent-detector.js.map +0 -1
  530. package/dist/utils/artifact-tracker.d.ts.map +0 -1
  531. package/dist/utils/artifact-tracker.js.map +0 -1
  532. package/dist/utils/dependency-detector.d.ts.map +0 -1
  533. package/dist/utils/dependency-detector.js.map +0 -1
  534. package/dist/utils/deployment-metadata-handler.d.ts.map +0 -1
  535. package/dist/utils/deployment-metadata-handler.js.map +0 -1
  536. package/dist/utils/error-recovery.d.ts.map +0 -1
  537. package/dist/utils/error-recovery.js.map +0 -1
  538. package/dist/utils/flow-api-discovery.d.ts.map +0 -1
  539. package/dist/utils/flow-api-discovery.js.map +0 -1
  540. package/dist/utils/flow-xml-generator.d.ts.map +0 -1
  541. package/dist/utils/flow-xml-generator.js.map +0 -1
  542. package/dist/utils/logger.d.ts.map +0 -1
  543. package/dist/utils/logger.js.map +0 -1
  544. package/dist/utils/mcp-auth-middleware.d.ts.map +0 -1
  545. package/dist/utils/mcp-auth-middleware.js.map +0 -1
  546. package/dist/utils/mcp-config-manager.d.ts.map +0 -1
  547. package/dist/utils/mcp-config-manager.js.map +0 -1
  548. package/dist/utils/mcp-server-manager.d.ts.map +0 -1
  549. package/dist/utils/mcp-server-manager.js.map +0 -1
  550. package/dist/utils/mcp-tool-registry.d.ts.map +0 -1
  551. package/dist/utils/mcp-tool-registry.js.map +0 -1
  552. package/dist/utils/migrate-claude-flow.d.ts.map +0 -1
  553. package/dist/utils/migrate-claude-flow.js.map +0 -1
  554. package/dist/utils/migrate-snow-flow.d.ts.map +0 -1
  555. package/dist/utils/migrate-snow-flow.js.map +0 -1
  556. package/dist/utils/oauth-html-templates.d.ts.map +0 -1
  557. package/dist/utils/oauth-html-templates.js.map +0 -1
  558. package/dist/utils/scope-utils.d.ts.map +0 -1
  559. package/dist/utils/scope-utils.js.map +0 -1
  560. package/dist/utils/servicenow-client.d.ts.map +0 -1
  561. package/dist/utils/servicenow-client.js.map +0 -1
  562. package/dist/utils/servicenow-id-generator.d.ts.map +0 -1
  563. package/dist/utils/servicenow-id-generator.js.map +0 -1
  564. package/dist/utils/snow-memory-manager.d.ts.map +0 -1
  565. package/dist/utils/snow-memory-manager.js.map +0 -1
  566. package/dist/utils/snow-oauth-old.d.ts.map +0 -1
  567. package/dist/utils/snow-oauth-old.js.map +0 -1
  568. package/dist/utils/snow-oauth.d.ts.map +0 -1
  569. package/dist/utils/snow-oauth.js.map +0 -1
  570. package/dist/utils/template-engine.d.ts.map +0 -1
  571. package/dist/utils/template-engine.js.map +0 -1
  572. package/dist/utils/theme-manager.d.ts.map +0 -1
  573. package/dist/utils/theme-manager.js.map +0 -1
  574. package/dist/utils/unified-auth-store.d.ts.map +0 -1
  575. package/dist/utils/unified-auth-store.js.map +0 -1
  576. package/dist/utils/update-set-importer.d.ts.map +0 -1
  577. package/dist/utils/update-set-importer.js.map +0 -1
  578. package/dist/utils/update-set-xml-packager.d.ts.map +0 -1
  579. package/dist/utils/update-set-xml-packager.js.map +0 -1
  580. package/dist/utils/widget-template-generator.d.ts.map +0 -1
  581. package/dist/utils/widget-template-generator.js.map +0 -1
  582. package/dist/version.d.ts.map +0 -1
  583. package/dist/version.js.map +0 -1
  584. package/memory/agents/README.md +0 -31
  585. package/memory/claude-flow-data.json +0 -5
  586. package/memory/servicenow_artifacts/000d9224c895221055906c7518aa2d3d.json +0 -30
  587. package/memory/servicenow_artifacts/0196b66173303010e46b4a2214f6a7a2.json +0 -36
  588. package/memory/servicenow_artifacts/125e5d1d837e2a102a7ea130ceaad397.json +0 -30
  589. package/memory/servicenow_artifacts/7637c1f2b7112210a5e5911cde11a972.json +0 -30
  590. package/memory/servicenow_artifacts/default_documentation_tables_1754056582292.json +0 -55
  591. package/memory/servicenow_artifacts/default_documentation_tables_1754057477189.json +0 -55
  592. package/memory/sessions/README.md +0 -32
  593. package/memory/update-set-sessions/01f82af583faea102a7ea130ceaad3d4.json +0 -9
  594. package/memory/update-set-sessions/27718fb983faea102a7ea130ceaad34b.json +0 -9
  595. package/memory/update-set-sessions/412e9bf6833e22502a7ea130ceaad30a.json +0 -8
  596. package/memory/update-set-sessions/66fc5a79837aea102a7ea130ceaad3ab.json +0 -9
  597. package/memory/update-set-sessions/71a30ff5837eea102a7ea130ceaad37f.json +0 -9
  598. package/memory/update-set-sessions/74fba27983faea102a7ea130ceaad3bd.json +0 -9
  599. package/memory/update-set-sessions/a0b147b5837eea102a7ea130ceaad344.json +0 -58
  600. package/memory/update-set-sessions/b13f5eb983baea102a7ea130ceaad33e.json +0 -9
@@ -0,0 +1,379 @@
1
+ /**
2
+ * Artifact Tracker - Manages consistent sys_id tracking and validation
3
+ * Solves the sys_id inconsistency problem identified in feedback
4
+ */
5
+
6
+ import { Logger } from './logger.js';
7
+ import { ServiceNowClient } from './servicenow-client.js';
8
+
9
+ export interface ArtifactSession {
10
+ sessionId: string;
11
+ artifacts: Map<string, TrackedArtifact>;
12
+ createdAt: Date;
13
+ lastAccessed: Date;
14
+ }
15
+
16
+ export interface TrackedArtifact {
17
+ sys_id: string;
18
+ table: string;
19
+ name: string;
20
+ type: string;
21
+ status: 'pending' | 'deployed' | 'modified' | 'error';
22
+ operations: ArtifactOperation[];
23
+ lastValidated: Date;
24
+ updateSetId?: string;
25
+ }
26
+
27
+ export interface ArtifactOperation {
28
+ operation: 'create' | 'update' | 'delete' | 'validate';
29
+ timestamp: Date;
30
+ success: boolean;
31
+ details: string;
32
+ error?: string;
33
+ }
34
+
35
+ export class ArtifactTracker {
36
+ private logger: Logger;
37
+ private client: ServiceNowClient;
38
+ private sessions: Map<string, ArtifactSession> = new Map();
39
+ private currentSessionId: string | null = null;
40
+
41
+ constructor() {
42
+ this.logger = new Logger('ArtifactTracker');
43
+ this.client = new ServiceNowClient();
44
+ }
45
+
46
+ /**
47
+ * Create or resume a tracking session
48
+ */
49
+ startSession(sessionId?: string): string {
50
+ const id = sessionId || this.generateSessionId();
51
+
52
+ if (!this.sessions.has(id)) {
53
+ this.sessions.set(id, {
54
+ sessionId: id,
55
+ artifacts: new Map(),
56
+ createdAt: new Date(),
57
+ lastAccessed: new Date()
58
+ });
59
+ this.logger.info(`Started new artifact tracking session: ${id}`);
60
+ } else {
61
+ const session = this.sessions.get(id)!;
62
+ session.lastAccessed = new Date();
63
+ this.logger.info(`Resumed artifact tracking session: ${id}`);
64
+ }
65
+
66
+ this.currentSessionId = id;
67
+ return id;
68
+ }
69
+
70
+ /**
71
+ * Track a new artifact
72
+ */
73
+ trackArtifact(
74
+ sys_id: string,
75
+ table: string,
76
+ name: string,
77
+ type: string,
78
+ operation: 'create' | 'update' = 'create'
79
+ ): TrackedArtifact {
80
+ if (!this.currentSessionId) {
81
+ this.startSession();
82
+ }
83
+
84
+ const session = this.sessions.get(this.currentSessionId!)!;
85
+
86
+ // Check for existing tracking
87
+ const existingKey = this.findArtifactKey(sys_id, name, type);
88
+ if (existingKey && existingKey !== sys_id) {
89
+ this.logger.warn(`Sys_id inconsistency detected! Found existing artifact with different sys_id:`, {
90
+ new_sys_id: sys_id,
91
+ existing_sys_id: existingKey,
92
+ name,
93
+ type
94
+ });
95
+ }
96
+
97
+ const artifact: TrackedArtifact = {
98
+ sys_id,
99
+ table,
100
+ name,
101
+ type,
102
+ status: operation === 'create' ? 'pending' : 'modified',
103
+ operations: [{
104
+ operation,
105
+ timestamp: new Date(),
106
+ success: true,
107
+ details: `Artifact tracked for ${operation}`
108
+ }],
109
+ lastValidated: new Date()
110
+ };
111
+
112
+ session.artifacts.set(sys_id, artifact);
113
+ this.logger.info(`Tracking artifact: ${name} (${sys_id}) in table ${table}`);
114
+
115
+ return artifact;
116
+ }
117
+
118
+ /**
119
+ * Validate that a sys_id actually exists in ServiceNow
120
+ */
121
+ async validateArtifact(sys_id: string): Promise<boolean> {
122
+ if (!this.currentSessionId) {
123
+ return false;
124
+ }
125
+
126
+ const session = this.sessions.get(this.currentSessionId);
127
+ if (!session) {
128
+ return false;
129
+ }
130
+
131
+ const artifact = session.artifacts.get(sys_id);
132
+ if (!artifact) {
133
+ this.logger.warn(`Cannot validate unknown artifact: ${sys_id}`);
134
+ return false;
135
+ }
136
+
137
+ try {
138
+ this.logger.info(`Validating artifact ${sys_id} in table ${artifact.table}`);
139
+
140
+ // getRecord returns the data directly or throws an error
141
+ const data = await this.client.getRecord(artifact.table, sys_id);
142
+
143
+ // If we got here without throwing, the record exists
144
+ const isValid = !!data;
145
+
146
+ // Update tracking
147
+ artifact.operations.push({
148
+ operation: 'validate',
149
+ timestamp: new Date(),
150
+ success: isValid,
151
+ details: isValid ? 'Artifact exists in ServiceNow' : 'Artifact not found in ServiceNow',
152
+ error: undefined
153
+ });
154
+ artifact.lastValidated = new Date();
155
+
156
+ return isValid;
157
+ } catch (error) {
158
+ // Handle specific error cases
159
+ const errorMessage = String(error);
160
+ let validationDetails = 'Validation error';
161
+ let skipErrorStatus = false;
162
+
163
+ // Check if it's a permission error (403) or authentication error (401)
164
+ if (errorMessage.includes('403') || errorMessage.includes('Forbidden')) {
165
+ validationDetails = 'Unable to validate - insufficient read permissions';
166
+ skipErrorStatus = true; // Don't mark as error since deployment succeeded
167
+ this.logger.warn(`Permission issue during validation for ${sys_id}, but deployment was successful`);
168
+ } else if (errorMessage.includes('401') || errorMessage.includes('Unauthorized')) {
169
+ validationDetails = 'Unable to validate - authentication issue';
170
+ skipErrorStatus = true;
171
+ this.logger.warn(`Authentication issue during validation for ${sys_id}, but deployment was successful`);
172
+ } else {
173
+ this.logger.error(`Error validating artifact ${sys_id}:`, error);
174
+ }
175
+
176
+ artifact.operations.push({
177
+ operation: 'validate',
178
+ timestamp: new Date(),
179
+ success: false,
180
+ details: validationDetails,
181
+ error: errorMessage
182
+ });
183
+
184
+ // Only mark as error if it's not a permission issue and deployment already succeeded
185
+ if (!skipErrorStatus && artifact.status !== 'deployed') {
186
+ artifact.status = 'error';
187
+ }
188
+
189
+ // For permission/auth errors on successfully deployed artifacts, consider it valid
190
+ if (skipErrorStatus && artifact.status === 'deployed') {
191
+ return true;
192
+ }
193
+
194
+ return false;
195
+ }
196
+ }
197
+
198
+ /**
199
+ * Record an operation on a tracked artifact
200
+ */
201
+ recordOperation(
202
+ sys_id: string,
203
+ operation: 'create' | 'update' | 'delete',
204
+ success: boolean,
205
+ details: string,
206
+ error?: string
207
+ ): void {
208
+ if (!this.currentSessionId) {
209
+ return;
210
+ }
211
+
212
+ const session = this.sessions.get(this.currentSessionId);
213
+ if (!session) {
214
+ return;
215
+ }
216
+
217
+ const artifact = session.artifacts.get(sys_id);
218
+ if (!artifact) {
219
+ this.logger.warn(`Cannot record operation for unknown artifact: ${sys_id}`);
220
+ return;
221
+ }
222
+
223
+ artifact.operations.push({
224
+ operation,
225
+ timestamp: new Date(),
226
+ success,
227
+ details,
228
+ error
229
+ });
230
+
231
+ // Update status
232
+ if (success) {
233
+ artifact.status = operation === 'create' ? 'deployed' : 'modified';
234
+ } else {
235
+ artifact.status = 'error';
236
+ }
237
+
238
+ this.logger.info(`Recorded ${operation} operation for ${sys_id}: ${success ? 'success' : 'failure'}`);
239
+ }
240
+
241
+ /**
242
+ * Get all tracked artifacts in current session
243
+ */
244
+ getTrackedArtifacts(): TrackedArtifact[] {
245
+ if (!this.currentSessionId) {
246
+ return [];
247
+ }
248
+
249
+ const session = this.sessions.get(this.currentSessionId);
250
+ if (!session) {
251
+ return [];
252
+ }
253
+
254
+ return Array.from(session.artifacts.values());
255
+ }
256
+
257
+ /**
258
+ * Get specific artifact by sys_id
259
+ */
260
+ getArtifact(sys_id: string): TrackedArtifact | null {
261
+ if (!this.currentSessionId) {
262
+ return null;
263
+ }
264
+
265
+ const session = this.sessions.get(this.currentSessionId);
266
+ if (!session) {
267
+ return null;
268
+ }
269
+
270
+ return session.artifacts.get(sys_id) || null;
271
+ }
272
+
273
+ /**
274
+ * Find sys_id inconsistencies
275
+ */
276
+ findInconsistencies(): Array<{
277
+ artifacts: TrackedArtifact[];
278
+ issue: string;
279
+ }> {
280
+ const inconsistencies = [];
281
+
282
+ if (!this.currentSessionId) {
283
+ return inconsistencies;
284
+ }
285
+
286
+ const session = this.sessions.get(this.currentSessionId);
287
+ if (!session) {
288
+ return inconsistencies;
289
+ }
290
+
291
+ const artifacts = Array.from(session.artifacts.values());
292
+ const nameTypeMap = new Map<string, TrackedArtifact[]>();
293
+
294
+ // Group by name + type
295
+ for (const artifact of artifacts) {
296
+ const key = `${artifact.name}:${artifact.type}`;
297
+ if (!nameTypeMap.has(key)) {
298
+ nameTypeMap.set(key, []);
299
+ }
300
+ nameTypeMap.get(key)!.push(artifact);
301
+ }
302
+
303
+ // Find duplicates
304
+ for (const [key, duplicates] of nameTypeMap.entries()) {
305
+ if (duplicates.length > 1) {
306
+ inconsistencies.push({
307
+ artifacts: duplicates,
308
+ issue: `Multiple sys_ids for same artifact: ${key}`
309
+ });
310
+ }
311
+ }
312
+
313
+ return inconsistencies;
314
+ }
315
+
316
+ /**
317
+ * Generate session summary for debugging
318
+ */
319
+ getSessionSummary(): any {
320
+ if (!this.currentSessionId) {
321
+ return { error: 'No active session' };
322
+ }
323
+
324
+ const session = this.sessions.get(this.currentSessionId);
325
+ if (!session) {
326
+ return { error: 'Session not found' };
327
+ }
328
+
329
+ const artifacts = Array.from(session.artifacts.values());
330
+ const summary = {
331
+ sessionId: this.currentSessionId,
332
+ artifactCount: artifacts.length,
333
+ statusCounts: {
334
+ pending: artifacts.filter(a => a.status === 'pending').length,
335
+ deployed: artifacts.filter(a => a.status === 'deployed').length,
336
+ modified: artifacts.filter(a => a.status === 'modified').length,
337
+ error: artifacts.filter(a => a.status === 'error').length
338
+ },
339
+ inconsistencies: this.findInconsistencies(),
340
+ artifacts: artifacts.map(a => ({
341
+ sys_id: a.sys_id,
342
+ name: a.name,
343
+ type: a.type,
344
+ status: a.status,
345
+ operationCount: a.operations.length,
346
+ lastValidated: a.lastValidated
347
+ }))
348
+ };
349
+
350
+ return summary;
351
+ }
352
+
353
+ private findArtifactKey(sys_id: string, name: string, type: string): string | null {
354
+ if (!this.currentSessionId) {
355
+ return null;
356
+ }
357
+
358
+ const session = this.sessions.get(this.currentSessionId);
359
+ if (!session) {
360
+ return null;
361
+ }
362
+
363
+ // Look for existing artifact with same name and type
364
+ for (const [existingSysId, artifact] of session.artifacts.entries()) {
365
+ if (artifact.name === name && artifact.type === type && existingSysId !== sys_id) {
366
+ return existingSysId;
367
+ }
368
+ }
369
+
370
+ return null;
371
+ }
372
+
373
+ private generateSessionId(): string {
374
+ return `session_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
375
+ }
376
+ }
377
+
378
+ // Global instance for session management
379
+ export const artifactTracker = new ArtifactTracker();
@@ -0,0 +1,233 @@
1
+ /**
2
+ * Dependency Detector for ServiceNow Widgets
3
+ * Automatically detects external libraries used in widget code
4
+ * and manages their installation in Service Portal themes
5
+ */
6
+
7
+ import { logger } from '../utils/logger';
8
+
9
+ export interface DependencyInfo {
10
+ name: string;
11
+ version?: string;
12
+ cdnUrl: string;
13
+ minifiedUrl?: string;
14
+ integrity?: string;
15
+ type: 'js' | 'css';
16
+ description: string;
17
+ detectionPatterns: RegExp[];
18
+ }
19
+
20
+ // Common libraries used in ServiceNow widgets
21
+ export const KNOWN_DEPENDENCIES: DependencyInfo[] = [
22
+ {
23
+ name: 'Chart.js',
24
+ version: '4.4.1',
25
+ cdnUrl: 'https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.js',
26
+ minifiedUrl: 'https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js',
27
+ type: 'js',
28
+ description: 'Simple yet flexible JavaScript charting library',
29
+ detectionPatterns: [
30
+ /new\s+Chart\s*\(/gi,
31
+ /Chart\.register/gi,
32
+ /Chart\.defaults/gi,
33
+ /require\s*\(\s*['"]chart\.js['"]\s*\)/gi,
34
+ /import.*from\s+['"]chart\.js['"]/gi
35
+ ]
36
+ },
37
+ {
38
+ name: 'moment.js',
39
+ version: '2.29.4',
40
+ cdnUrl: 'https://cdn.jsdelivr.net/npm/moment@2.29.4/moment.js',
41
+ minifiedUrl: 'https://cdn.jsdelivr.net/npm/moment@2.29.4/moment.min.js',
42
+ type: 'js',
43
+ description: 'Parse, validate, manipulate, and display dates and times',
44
+ detectionPatterns: [
45
+ /moment\s*\(/gi,
46
+ /moment\.utc/gi,
47
+ /moment\.format/gi,
48
+ /require\s*\(\s*['"]moment['"]\s*\)/gi,
49
+ /import.*from\s+['"]moment['"]/gi
50
+ ]
51
+ },
52
+ {
53
+ name: 'lodash',
54
+ version: '4.17.21',
55
+ cdnUrl: 'https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.js',
56
+ minifiedUrl: 'https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js',
57
+ type: 'js',
58
+ description: 'Modern JavaScript utility library',
59
+ detectionPatterns: [
60
+ /_\.\w+\s*\(/gi,
61
+ /lodash\.\w+/gi,
62
+ /require\s*\(\s*['"]lodash['"]\s*\)/gi,
63
+ /import.*from\s+['"]lodash['"]/gi
64
+ ]
65
+ },
66
+ {
67
+ name: 'd3.js',
68
+ version: '7.8.5',
69
+ cdnUrl: 'https://cdn.jsdelivr.net/npm/d3@7.8.5/dist/d3.js',
70
+ minifiedUrl: 'https://cdn.jsdelivr.net/npm/d3@7.8.5/dist/d3.min.js',
71
+ type: 'js',
72
+ description: 'Data-Driven Documents - powerful visualization library',
73
+ detectionPatterns: [
74
+ /d3\.\w+\s*\(/gi,
75
+ /d3\.select/gi,
76
+ /d3\.scale/gi,
77
+ /require\s*\(\s*['"]d3['"]\s*\)/gi,
78
+ /import.*from\s+['"]d3['"]/gi
79
+ ]
80
+ },
81
+ {
82
+ name: 'axios',
83
+ version: '1.6.5',
84
+ cdnUrl: 'https://cdn.jsdelivr.net/npm/axios@1.6.5/dist/axios.js',
85
+ minifiedUrl: 'https://cdn.jsdelivr.net/npm/axios@1.6.5/dist/axios.min.js',
86
+ type: 'js',
87
+ description: 'Promise based HTTP client',
88
+ detectionPatterns: [
89
+ /axios\.\w+\s*\(/gi,
90
+ /axios\.get/gi,
91
+ /axios\.post/gi,
92
+ /require\s*\(\s*['"]axios['"]\s*\)/gi,
93
+ /import.*from\s+['"]axios['"]/gi
94
+ ]
95
+ },
96
+ {
97
+ name: 'jQuery',
98
+ version: '3.7.1',
99
+ cdnUrl: 'https://code.jquery.com/jquery-3.7.1.js',
100
+ minifiedUrl: 'https://code.jquery.com/jquery-3.7.1.min.js',
101
+ integrity: 'sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4=',
102
+ type: 'js',
103
+ description: 'jQuery JavaScript Library',
104
+ detectionPatterns: [
105
+ /\$\s*\(/gi,
106
+ /jQuery\s*\(/gi,
107
+ /\$\.ajax/gi,
108
+ /\$\.\w+\s*\(/gi,
109
+ /require\s*\(\s*['"]jquery['"]\s*\)/gi
110
+ ]
111
+ },
112
+ {
113
+ name: 'Bootstrap',
114
+ version: '5.3.2',
115
+ cdnUrl: 'https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.js',
116
+ minifiedUrl: 'https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js',
117
+ type: 'js',
118
+ description: 'Bootstrap JavaScript bundle',
119
+ detectionPatterns: [
120
+ /bootstrap\.\w+/gi,
121
+ /new\s+bootstrap\.\w+/gi,
122
+ /data-bs-\w+/gi,
123
+ /class=["'].*\b(btn|modal|dropdown|collapse)\b/gi
124
+ ]
125
+ },
126
+ {
127
+ name: 'Bootstrap CSS',
128
+ version: '5.3.2',
129
+ cdnUrl: 'https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.css',
130
+ minifiedUrl: 'https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css',
131
+ type: 'css',
132
+ description: 'Bootstrap CSS framework',
133
+ detectionPatterns: [
134
+ /class=["'].*\b(container|row|col-|btn-|alert-|modal-)\b/gi,
135
+ /@import.*bootstrap/gi
136
+ ]
137
+ }
138
+ ];
139
+
140
+ export class DependencyDetector {
141
+ /**
142
+ * Detect dependencies in widget code
143
+ */
144
+ static detectDependencies(code: string): DependencyInfo[] {
145
+ const detectedDeps: DependencyInfo[] = [];
146
+ const codeToAnalyze = code.toLowerCase();
147
+
148
+ for (const dep of KNOWN_DEPENDENCIES) {
149
+ for (const pattern of dep.detectionPatterns) {
150
+ if (pattern.test(code)) {
151
+ // Avoid duplicates
152
+ if (!detectedDeps.find(d => d.name === dep.name)) {
153
+ detectedDeps.push(dep);
154
+ logger.info(`🔍 Detected dependency: ${dep.name}`);
155
+ }
156
+ break;
157
+ }
158
+ }
159
+ }
160
+
161
+ return detectedDeps;
162
+ }
163
+
164
+ /**
165
+ * Analyze widget for dependencies
166
+ */
167
+ static analyzeWidget(widget: {
168
+ template?: string;
169
+ css?: string;
170
+ client_script?: string;
171
+ server_script?: string;
172
+ }): DependencyInfo[] {
173
+ const allCode = [
174
+ widget.template || '',
175
+ widget.css || '',
176
+ widget.client_script || '',
177
+ widget.server_script || ''
178
+ ].join('\n');
179
+
180
+ return this.detectDependencies(allCode);
181
+ }
182
+
183
+ /**
184
+ * Generate script tags for dependencies
185
+ */
186
+ static generateScriptTags(dependencies: DependencyInfo[], useMinified = true): string {
187
+ const tags: string[] = [];
188
+
189
+ for (const dep of dependencies) {
190
+ const url = useMinified && dep.minifiedUrl ? dep.minifiedUrl : dep.cdnUrl;
191
+
192
+ if (dep.type === 'js') {
193
+ if (dep.integrity) {
194
+ tags.push(`<script src="${url}" integrity="${dep.integrity}" crossorigin="anonymous"></script>`);
195
+ } else {
196
+ tags.push(`<script src="${url}"></script>`);
197
+ }
198
+ } else if (dep.type === 'css') {
199
+ if (dep.integrity) {
200
+ tags.push(`<link rel="stylesheet" href="${url}" integrity="${dep.integrity}" crossorigin="anonymous">`);
201
+ } else {
202
+ tags.push(`<link rel="stylesheet" href="${url}">`);
203
+ }
204
+ }
205
+ }
206
+
207
+ return tags.join('\n');
208
+ }
209
+
210
+ /**
211
+ * Check if a dependency is likely already loaded
212
+ */
213
+ static isDependencyLoaded(themeContent: string, dependency: DependencyInfo): boolean {
214
+ // Check for various patterns that indicate the library is already loaded
215
+ const patterns = [
216
+ new RegExp(dependency.name.replace('.', '\\.'), 'i'),
217
+ new RegExp(dependency.cdnUrl.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'i'),
218
+ new RegExp(dependency.minifiedUrl?.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') || '', 'i')
219
+ ];
220
+
221
+ return patterns.some(pattern => pattern.test(themeContent));
222
+ }
223
+
224
+ /**
225
+ * Get missing dependencies from theme
226
+ */
227
+ static getMissingDependencies(
228
+ detectedDeps: DependencyInfo[],
229
+ themeContent: string
230
+ ): DependencyInfo[] {
231
+ return detectedDeps.filter(dep => !this.isDependencyLoaded(themeContent, dep));
232
+ }
233
+ }