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,977 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * ServiceNow Intelligent MCP Server - Agent-Integrated Version
4
+ * Smart discovery and memory-aware operations for the agent ecosystem
5
+ */
6
+
7
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
8
+ import {
9
+ CallToolRequestSchema,
10
+ ListToolsRequestSchema,
11
+ } from '@modelcontextprotocol/sdk/types.js';
12
+ import { BaseMCPServer, MCPToolResult } from './shared/base-mcp-server.js';
13
+ import { AgentContext } from './shared/mcp-memory-manager.js';
14
+ import * as crypto from 'crypto';
15
+
16
+ interface SearchResult {
17
+ sys_id: string;
18
+ name: string;
19
+ type: string;
20
+ table: string;
21
+ description?: string;
22
+ relevance_score?: number;
23
+ }
24
+
25
+ export class ServiceNowIntelligentMCP extends BaseMCPServer {
26
+ private searchCache: Map<string, { results: SearchResult[], timestamp: number }>;
27
+ private cacheTimeout = 5 * 60 * 1000; // 5 minutes
28
+
29
+ constructor() {
30
+ super('servicenow-intelligent', '2.0.0');
31
+ this.searchCache = new Map();
32
+ this.setupHandlers();
33
+ }
34
+
35
+ private setupHandlers() {
36
+ this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
37
+ tools: [
38
+ {
39
+ name: 'snow_find_artifact',
40
+ description: 'AUTONOMOUS artifact discovery - finds ServiceNow artifacts using natural language, searches memory first, then ServiceNow. NO MANUAL SEARCH NEEDED.',
41
+ inputSchema: {
42
+ type: 'object',
43
+ properties: {
44
+ query: {
45
+ type: 'string',
46
+ description: 'Natural language query (e.g., "the widget that shows incidents on homepage")'
47
+ },
48
+ type: {
49
+ type: 'string',
50
+ enum: ['widget', 'flow', 'script', 'application', 'any'],
51
+ description: 'Artifact type filter'
52
+ },
53
+ // Agent context
54
+ session_id: { type: 'string', description: 'Agent session ID' },
55
+ agent_id: { type: 'string', description: 'Searching agent ID' },
56
+ agent_type: { type: 'string', description: 'Type of agent' },
57
+ use_cache: { type: 'boolean', default: true, description: 'Use cached results if available' }
58
+ },
59
+ required: ['query']
60
+ }
61
+ },
62
+ {
63
+ name: 'snow_analyze_artifact',
64
+ description: 'AUTONOMOUS deep _analysis - intelligently indexes artifacts for optimal Claude understanding, stores in memory for future use. SELF-LEARNING SYSTEM.',
65
+ inputSchema: {
66
+ type: 'object',
67
+ properties: {
68
+ sys_id: { type: 'string', description: 'System ID of the artifact' },
69
+ table: { type: 'string', description: 'ServiceNow table name' },
70
+ session_id: { type: 'string' },
71
+ agent_id: { type: 'string' },
72
+ agent_type: { type: 'string' },
73
+ deep__analysis: { type: 'boolean', default: true, description: 'Perform deep _analysis' }
74
+ },
75
+ required: ['sys_id', 'table']
76
+ }
77
+ },
78
+ {
79
+ name: 'snow_memory_search',
80
+ description: 'Search indexed ServiceNow artifacts in memory',
81
+ inputSchema: {
82
+ type: 'object',
83
+ properties: {
84
+ query: { type: 'string', description: 'Search query' },
85
+ type: {
86
+ type: 'string',
87
+ enum: ['widget', 'flow', 'script', 'application'],
88
+ description: 'Artifact type'
89
+ },
90
+ session_id: { type: 'string' },
91
+ agent_id: { type: 'string' }
92
+ },
93
+ required: ['query']
94
+ }
95
+ },
96
+ {
97
+ name: 'snow_comprehensive_search',
98
+ description: 'COMPREHENSIVE multi-table search - searches across all relevant ServiceNow tables for artifacts. Perfect for finding hard-to-locate items.',
99
+ inputSchema: {
100
+ type: 'object',
101
+ properties: {
102
+ query: { type: 'string', description: 'Natural language search query' },
103
+ include_inactive: { type: 'boolean', default: false, description: 'Include inactive records' },
104
+ session_id: { type: 'string' },
105
+ agent_id: { type: 'string' },
106
+ agent_type: { type: 'string' },
107
+ max_results: { type: 'number', default: 50, description: 'Maximum results to return' }
108
+ },
109
+ required: ['query']
110
+ }
111
+ },
112
+ {
113
+ name: 'memory_store',
114
+ description: 'Store data in persistent memory for multi-agent coordination',
115
+ inputSchema: {
116
+ type: 'object',
117
+ properties: {
118
+ key: { type: 'string', description: 'Unique key for the data' },
119
+ value: { description: 'Data to store (any JSON-serializable value)' },
120
+ ttl: { type: 'number', description: 'Time to live in milliseconds (optional)' },
121
+ namespace: { type: 'string', description: 'Namespace for organizing data (optional)', default: 'default' }
122
+ },
123
+ required: ['key', 'value']
124
+ }
125
+ },
126
+ {
127
+ name: 'memory_get',
128
+ description: 'Retrieve data from persistent memory',
129
+ inputSchema: {
130
+ type: 'object',
131
+ properties: {
132
+ key: { type: 'string', description: 'Key to retrieve' },
133
+ namespace: { type: 'string', description: 'Namespace to search in (optional)', default: 'default' }
134
+ },
135
+ required: ['key']
136
+ }
137
+ },
138
+ {
139
+ name: 'memory_list',
140
+ description: 'List all keys in memory',
141
+ inputSchema: {
142
+ type: 'object',
143
+ properties: {
144
+ namespace: { type: 'string', description: 'Namespace to list (optional)', default: 'default' },
145
+ pattern: { type: 'string', description: 'Pattern to filter keys (optional)' }
146
+ }
147
+ }
148
+ },
149
+ {
150
+ name: 'todo_write',
151
+ description: 'Create or update todo items for task coordination',
152
+ inputSchema: {
153
+ type: 'object',
154
+ properties: {
155
+ todos: {
156
+ type: 'array',
157
+ description: 'Array of todo items',
158
+ items: {
159
+ type: 'object',
160
+ properties: {
161
+ id: { type: 'string', description: 'Unique ID for the todo' },
162
+ content: { type: 'string', description: 'Todo description' },
163
+ status: { type: 'string', enum: ['pending', 'in_progress', 'completed'], description: 'Todo status' },
164
+ priority: { type: 'string', enum: ['high', 'medium', 'low'], description: 'Todo priority' }
165
+ },
166
+ required: ['id', 'content', 'status', 'priority']
167
+ }
168
+ }
169
+ },
170
+ required: ['todos']
171
+ }
172
+ },
173
+ {
174
+ name: 'todo_read',
175
+ description: 'Read current todo list',
176
+ inputSchema: {
177
+ type: 'object',
178
+ properties: {
179
+ status: { type: 'string', enum: ['all', 'pending', 'in_progress', 'completed'], description: 'Filter by status', default: 'all' }
180
+ }
181
+ }
182
+ }
183
+ ]
184
+ }));
185
+
186
+ this.server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {
187
+ const { name, arguments: args } = request.params;
188
+
189
+ try {
190
+ switch (name) {
191
+ case 'snow_find_artifact':
192
+ return await this.findArtifactWithMemory(args);
193
+ case 'snow_analyze_artifact':
194
+ return await this.analyzeArtifactWithMemory(args);
195
+ case 'snow_memory_search':
196
+ return await this.searchMemory(args);
197
+ case 'snow_comprehensive_search':
198
+ return await this.comprehensiveSearch(args);
199
+ case 'memory_store':
200
+ return await this.handleMemoryStore(args);
201
+ case 'memory_get':
202
+ return await this.handleMemoryGet(args);
203
+ case 'memory_list':
204
+ return await this.handleMemoryList(args);
205
+ case 'todo_write':
206
+ return await this.handleTodoWrite(args);
207
+ case 'todo_read':
208
+ return await this.handleTodoRead(args);
209
+ default:
210
+ throw new Error(`Unknown tool: ${name}`);
211
+ }
212
+ } catch (error) {
213
+ return this.createErrorResponse(
214
+ `Tool execution failed: ${name}`,
215
+ error
216
+ );
217
+ }
218
+ });
219
+ }
220
+
221
+ /**
222
+ * Find artifact with memory-first approach
223
+ */
224
+ private async findArtifactWithMemory(args: any): Promise<MCPToolResult> {
225
+ return await this.executeWithAgentContext(
226
+ 'snow_find_artifact',
227
+ args,
228
+ async (context) => {
229
+ const { query, type, use_cache } = args;
230
+
231
+ // Check authentication
232
+ // 🔧 MANDATORY ServiceNow connection validation
233
+ const connectionResult = await this.validateServiceNowConnection();
234
+ if (!connectionResult.success) {
235
+ return this.createAuthenticationError(connectionResult.error);
236
+ }
237
+
238
+ this.assertNoMockData('artifact search');
239
+
240
+ // Progress: Starting search
241
+ await this.reportProgress(context, 10, 'Starting artifact search');
242
+
243
+ // Step 1: Check memory first
244
+ const memoryResults = await this.searchMemoryForArtifacts(query, type, context);
245
+
246
+ if (memoryResults.length > 0) {
247
+ await this.reportProgress(context, 30, 'Found artifacts in memory');
248
+
249
+ // Store search in context for other agents
250
+ await this.updateSearchContext(context, query, memoryResults);
251
+
252
+ return this.createSuccessResponse(
253
+ `Found ${memoryResults.length} artifacts in memory`,
254
+ { results: memoryResults, source: 'memory' }
255
+ );
256
+ }
257
+
258
+ // Step 2: Check cache if enabled
259
+ if (use_cache) {
260
+ const cachedResults = this.getCachedResults(query, type);
261
+ if (cachedResults) {
262
+ await this.reportProgress(context, 40, 'Using cached results');
263
+ return this.createSuccessResponse(
264
+ `Found ${cachedResults.length} artifacts (cached)`,
265
+ { results: cachedResults, source: 'cache' }
266
+ );
267
+ }
268
+ }
269
+
270
+ // Step 3: Search ServiceNow
271
+ await this.reportProgress(context, 50, 'Searching ServiceNow instance');
272
+
273
+ const searchResults = await this.searchServiceNow(query, type, context);
274
+
275
+ // Step 4: Store results in memory and cache
276
+ await this.reportProgress(context, 80, 'Indexing results');
277
+
278
+ for (const result of searchResults) {
279
+ await this.storeArtifact(context, {
280
+ sys_id: result.sys_id,
281
+ type: result.type,
282
+ name: result.name,
283
+ description: result.description
284
+ });
285
+ }
286
+
287
+ // Cache results
288
+ this.cacheResults(query, type, searchResults);
289
+
290
+ // Update search context
291
+ await this.updateSearchContext(context, query, searchResults);
292
+
293
+ await this.reportProgress(context, 100, 'Search complete');
294
+
295
+ return this.createSuccessResponse(
296
+ `Found ${searchResults.length} artifacts in ServiceNow`,
297
+ {
298
+ results: searchResults,
299
+ source: 'servicenow',
300
+ indexed: true
301
+ }
302
+ );
303
+ }
304
+ );
305
+ }
306
+
307
+ /**
308
+ * Analyze artifact with deep learning
309
+ */
310
+ private async analyzeArtifactWithMemory(args: any): Promise<MCPToolResult> {
311
+ return await this.executeWithAgentContext(
312
+ 'snow_analyze_artifact',
313
+ args,
314
+ async (context) => {
315
+ const { sys_id, table, deep__analysis } = args;
316
+
317
+ // 🔧 MANDATORY ServiceNow connection validation
318
+ const connectionResult = await this.validateServiceNowConnection();
319
+ if (!connectionResult.success) {
320
+ return this.createAuthenticationError(connectionResult.error);
321
+ }
322
+
323
+ this.assertNoMockData('artifact _analysis');
324
+
325
+ await this.reportProgress(context, 10, 'Fetching artifact details');
326
+
327
+ // Fetch artifact from ServiceNow
328
+ const artifact = await this.client.getRecord(table, sys_id);
329
+
330
+ if (!artifact.success || !artifact.result) {
331
+ throw new Error(`Artifact ${sys_id} not found in table ${table}`);
332
+ }
333
+
334
+ await this.reportProgress(context, 30, 'Analyzing artifact structure');
335
+
336
+ // Perform deep analysis
337
+ const _analysis = await this.performDeepAnalysis(artifact.result, table, deep__analysis);
338
+
339
+ // Store _analysis in memory
340
+ await this.memory.updateSharedContext({
341
+ session_id: context.session_id,
342
+ context_key: `artifact_analysis_${sys_id}`,
343
+ context_value: JSON.stringify(_analysis),
344
+ created_by_agent: context.agent_id
345
+ });
346
+
347
+ // Store enhanced artifact info
348
+ await this.storeArtifact(context, {
349
+ sys_id: sys_id,
350
+ type: this.getArtifactType(table),
351
+ name: artifact.result.name || artifact.result.id || sys_id,
352
+ description: artifact.result.description,
353
+ config: _analysis.config
354
+ });
355
+
356
+ await this.reportProgress(context, 70, 'Identifying relationships');
357
+
358
+ // Find related artifacts
359
+ const relationships = await this.findRelationships(artifact.result, table, context);
360
+
361
+ // Notify relevant agents based on artifact type
362
+ if (_analysis.requires_ui_work && this.getArtifactType(table) === 'widget') {
363
+ await this.notifyHandoff(context, 'ui_specialist', {
364
+ type: 'widget',
365
+ sys_id: sys_id,
366
+ next_steps: _analysis.suggested_improvements || []
367
+ });
368
+ }
369
+
370
+ await this.reportProgress(context, 100, 'Analysis complete');
371
+
372
+ return this.createSuccessResponse(
373
+ `Deep _analysis completed for ${artifact.result.name || sys_id}`,
374
+ {
375
+ artifact: {
376
+ sys_id: sys_id,
377
+ name: artifact.result.name,
378
+ type: this.getArtifactType(table),
379
+ table: table
380
+ },
381
+ _analysis: _analysis,
382
+ relationships: relationships,
383
+ indexed: true
384
+ }
385
+ );
386
+ }
387
+ );
388
+ }
389
+
390
+ /**
391
+ * Search memory for artifacts
392
+ */
393
+ private async searchMemory(args: any): Promise<MCPToolResult> {
394
+ return await this.executeWithAgentContext(
395
+ 'snow_memory_search',
396
+ args,
397
+ async (context) => {
398
+ const { query, type } = args;
399
+
400
+ const artifacts = await this.memory.getSessionArtifacts(context.session_id);
401
+
402
+ const results = artifacts.filter(artifact => {
403
+ const matchesType = !type || artifact.artifact_type === type;
404
+ const matchesQuery =
405
+ artifact.name.toLowerCase().includes(query.toLowerCase()) ||
406
+ (artifact.description && artifact.description.toLowerCase().includes(query.toLowerCase()));
407
+
408
+ return matchesType && matchesQuery;
409
+ });
410
+
411
+ return this.createSuccessResponse(
412
+ `Found ${results.length} artifacts in memory`,
413
+ { results }
414
+ );
415
+ }
416
+ );
417
+ }
418
+
419
+ /**
420
+ * Comprehensive search across all tables
421
+ */
422
+ private async comprehensiveSearch(args: any): Promise<MCPToolResult> {
423
+ return await this.executeWithAgentContext(
424
+ 'snow_comprehensive_search',
425
+ args,
426
+ async (context) => {
427
+ const { query, include_inactive, max_results } = args;
428
+
429
+ // 🔧 MANDATORY ServiceNow connection validation
430
+ const connectionResult = await this.validateServiceNowConnection();
431
+ if (!connectionResult.success) {
432
+ return this.createAuthenticationError(connectionResult.error);
433
+ }
434
+
435
+ this.assertNoMockData('comprehensive search');
436
+
437
+ // Define tables to search
438
+ const searchTables = [
439
+ { table: 'sp_widget', type: 'widget', nameField: 'name' },
440
+ { table: 'sys_hub_flow', type: 'flow', nameField: 'name' },
441
+ { table: 'sys_script_include', type: 'script', nameField: 'name' },
442
+ { table: 'sys_app', type: 'application', nameField: 'name' },
443
+ { table: 'sc_cat_item', type: 'catalog_item', nameField: 'name' },
444
+ { table: 'sys_script', type: 'business_rule', nameField: 'name' }
445
+ ];
446
+
447
+ const allResults: SearchResult[] = [];
448
+ let tablesSearched = 0;
449
+
450
+ for (const searchConfig of searchTables) {
451
+ await this.reportProgress(
452
+ context,
453
+ 10 + (80 * tablesSearched / searchTables.length),
454
+ `Searching ${searchConfig.type} records`
455
+ );
456
+
457
+ try {
458
+ const results = await this.searchTable(
459
+ searchConfig.table,
460
+ searchConfig.nameField,
461
+ query,
462
+ searchConfig.type,
463
+ include_inactive,
464
+ Math.floor(max_results / searchTables.length)
465
+ );
466
+
467
+ allResults.push(...results);
468
+ tablesSearched++;
469
+
470
+ // Store found artifacts
471
+ for (const result of results) {
472
+ await this.storeArtifact(context, {
473
+ sys_id: result.sys_id,
474
+ type: result.type,
475
+ name: result.name,
476
+ description: result.description
477
+ });
478
+ }
479
+ } catch (error) {
480
+ this.logger.warn(`Failed to search ${searchConfig.table}`, error);
481
+ }
482
+ }
483
+
484
+ // Sort by relevance
485
+ allResults.sort((a, b) => (b.relevance_score || 0) - (a.relevance_score || 0));
486
+
487
+ // Limit results
488
+ const finalResults = allResults.slice(0, max_results);
489
+
490
+ await this.reportProgress(context, 100, 'Search complete');
491
+
492
+ return this.createSuccessResponse(
493
+ `Comprehensive search found ${finalResults.length} artifacts across ${tablesSearched} tables`,
494
+ {
495
+ results: finalResults,
496
+ tables_searched: tablesSearched,
497
+ total_found: allResults.length,
498
+ limited_to: max_results
499
+ }
500
+ );
501
+ }
502
+ );
503
+ }
504
+
505
+ // Helper methods
506
+
507
+ private async searchMemoryForArtifacts(
508
+ query: string,
509
+ type: string | undefined,
510
+ context: AgentContext
511
+ ): Promise<SearchResult[]> {
512
+ const artifacts = await this.memory.getSessionArtifacts(context.session_id);
513
+
514
+ return artifacts
515
+ .filter(artifact => {
516
+ const matchesType = !type || type === 'any' || artifact.artifact_type === type;
517
+ const queryLower = query.toLowerCase();
518
+ const matchesQuery =
519
+ artifact.name.toLowerCase().includes(queryLower) ||
520
+ (artifact.description && artifact.description.toLowerCase().includes(queryLower));
521
+
522
+ return matchesType && matchesQuery;
523
+ })
524
+ .map(artifact => ({
525
+ sys_id: artifact.sys_id,
526
+ name: artifact.name,
527
+ type: artifact.artifact_type,
528
+ table: this.getTableForType(artifact.artifact_type),
529
+ description: artifact.description,
530
+ relevance_score: this.calculateRelevance(artifact.name, query)
531
+ }));
532
+ }
533
+
534
+ private async searchServiceNow(
535
+ query: string,
536
+ type: string | undefined,
537
+ context: AgentContext
538
+ ): Promise<SearchResult[]> {
539
+ const results: SearchResult[] = [];
540
+
541
+ // Determine which tables to search
542
+ const tablesToSearch = type && type !== 'any'
543
+ ? [this.getSearchConfigForType(type)]
544
+ : this.getAllSearchConfigs();
545
+
546
+ for (const config of tablesToSearch) {
547
+ try {
548
+ const tableResults = await this.searchTable(
549
+ config.table,
550
+ config.nameField,
551
+ query,
552
+ config.type,
553
+ false,
554
+ 10
555
+ );
556
+ results.push(...tableResults);
557
+ } catch (error) {
558
+ this.logger.warn(`Search failed for table ${config.table}`, error);
559
+ }
560
+ }
561
+
562
+ return results;
563
+ }
564
+
565
+ private async searchTable(
566
+ table: string,
567
+ nameField: string,
568
+ query: string,
569
+ type: string,
570
+ includeInactive: boolean,
571
+ limit: number
572
+ ): Promise<SearchResult[]> {
573
+ const encodedQuery = `${nameField}LIKE${query}${includeInactive ? '' : '^active=true'}`;
574
+
575
+ const response = await this.client.getRecords(table, {
576
+ sysparm_query: encodedQuery,
577
+ sysparm_limit: limit,
578
+ sysparm_fields: `sys_id,${nameField},description,active`
579
+ });
580
+
581
+ if (!response.success || !response.result) {
582
+ return [];
583
+ }
584
+
585
+ return response.result.map((record: any) => ({
586
+ sys_id: record.sys_id,
587
+ name: record[nameField] || 'Unnamed',
588
+ type: type,
589
+ table: table,
590
+ description: record.description,
591
+ relevance_score: this.calculateRelevance(record[nameField] || '', query)
592
+ }));
593
+ }
594
+
595
+ private async performDeepAnalysis(
596
+ artifact: any,
597
+ table: string,
598
+ deep: boolean
599
+ ): Promise<any> {
600
+ const _analysis: any = {
601
+ structure: {},
602
+ dependencies: [],
603
+ config: {},
604
+ suggested_improvements: []
605
+ };
606
+
607
+ // Analyze based on artifact type
608
+ const artifactType = this.getArtifactType(table);
609
+
610
+ switch (artifactType) {
611
+ case 'widget':
612
+ _analysis.structure = {
613
+ has_template: !!artifact.template,
614
+ has_css: !!artifact.css,
615
+ has_client_script: !!artifact.client_script,
616
+ has_server_script: !!artifact.server_script,
617
+ uses_options: !!artifact.option_schema
618
+ };
619
+
620
+ if (deep) {
621
+ // Check for common patterns
622
+ if (artifact.template && !artifact.template.includes('ng-')) {
623
+ _analysis.suggested_improvements.push('Consider using Angular directives');
624
+ }
625
+ if (!artifact.css || artifact.css.length < 50) {
626
+ _analysis.suggested_improvements.push('Add responsive CSS styling');
627
+ _analysis.requires_ui_work = true;
628
+ }
629
+ }
630
+
631
+ _analysis.config = {
632
+ name: artifact.name,
633
+ template_size: artifact.template?.length || 0,
634
+ css_size: artifact.css?.length || 0,
635
+ requires_data: artifact.server_script?.includes('data.') || false
636
+ };
637
+ break;
638
+
639
+ case 'flow':
640
+ _analysis.structure = {
641
+ trigger_type: artifact.trigger_type,
642
+ table: artifact.table_name,
643
+ active: artifact.active,
644
+ has_conditions: !!artifact.condition
645
+ };
646
+
647
+ _analysis.config = {
648
+ name: artifact.name,
649
+ complexity: 'medium' // Would need to analyze flow definition
650
+ };
651
+ break;
652
+
653
+ case 'script':
654
+ _analysis.structure = {
655
+ api_name: artifact.api_name,
656
+ client_callable: artifact.client_callable,
657
+ active: artifact.active
658
+ };
659
+
660
+ if (deep && artifact.script) {
661
+ // Simple dependency detection
662
+ const scriptDeps = [];
663
+ if (artifact.script.includes('GlideRecord')) scriptDeps.push('GlideRecord API');
664
+ if (artifact.script.includes('GlideAjax')) scriptDeps.push('GlideAjax');
665
+ if (artifact.script.includes('gs.')) scriptDeps.push('GlideSystem API');
666
+
667
+ _analysis.dependencies = scriptDeps;
668
+ }
669
+ break;
670
+ }
671
+
672
+ return _analysis;
673
+ }
674
+
675
+ private async findRelationships(
676
+ artifact: any,
677
+ table: string,
678
+ context: AgentContext
679
+ ): Promise<any[]> {
680
+ const relationships = [];
681
+
682
+ // Find references in the artifact
683
+ if (table === 'sp_widget' && artifact.server_script) {
684
+ // Look for script includes
685
+ const scriptMatches = artifact.server_script.match(/new\s+(\w+)\(/g);
686
+ if (scriptMatches) {
687
+ for (const match of scriptMatches) {
688
+ const scriptName = match.replace(/new\s+/, '').replace(/\(/, '');
689
+ relationships.push({
690
+ type: 'uses_script',
691
+ name: scriptName,
692
+ table: 'sys_script_include'
693
+ });
694
+ }
695
+ }
696
+ }
697
+
698
+ return relationships;
699
+ }
700
+
701
+ private async updateSearchContext(
702
+ context: AgentContext,
703
+ query: string,
704
+ results: SearchResult[]
705
+ ): Promise<void> {
706
+ await this.memory.updateSharedContext({
707
+ session_id: context.session_id,
708
+ context_key: `search_${this.hashQuery(query)}`,
709
+ context_value: JSON.stringify({
710
+ query,
711
+ results: results.map(r => ({
712
+ sys_id: r.sys_id,
713
+ name: r.name,
714
+ type: r.type
715
+ })),
716
+ timestamp: new Date().toISOString(),
717
+ found_count: results.length
718
+ }),
719
+ created_by_agent: context.agent_id
720
+ });
721
+ }
722
+
723
+ private getCachedResults(query: string, type?: string): SearchResult[] | null {
724
+ const cacheKey = `${query}_${type || 'any'}`;
725
+ const cached = this.searchCache.get(cacheKey);
726
+
727
+ if (cached && Date.now() - cached.timestamp < this.cacheTimeout) {
728
+ return cached.results;
729
+ }
730
+
731
+ return null;
732
+ }
733
+
734
+ private cacheResults(query: string, type: string | undefined, results: SearchResult[]): void {
735
+ const cacheKey = `${query}_${type || 'any'}`;
736
+ this.searchCache.set(cacheKey, {
737
+ results,
738
+ timestamp: Date.now()
739
+ });
740
+ }
741
+
742
+ private calculateRelevance(name: string, query: string): number {
743
+ const nameLower = name.toLowerCase();
744
+ const queryLower = query.toLowerCase();
745
+
746
+ // Exact match
747
+ if (nameLower === queryLower) return 1.0;
748
+
749
+ // Starts with query
750
+ if (nameLower.startsWith(queryLower)) return 0.9;
751
+
752
+ // Contains query
753
+ if (nameLower.includes(queryLower)) return 0.7;
754
+
755
+ // Fuzzy match (simple)
756
+ const queryWords = queryLower.split(/\s+/);
757
+ const matchedWords = queryWords.filter(word => nameLower.includes(word));
758
+ return matchedWords.length / queryWords.length * 0.5;
759
+ }
760
+
761
+ private getArtifactType(table: string): string {
762
+ const typeMap: Record<string, string> = {
763
+ 'sp_widget': 'widget',
764
+ 'sys_hub_flow': 'flow',
765
+ 'sys_script_include': 'script',
766
+ 'sys_app': 'application',
767
+ 'sc_cat_item': 'catalog_item',
768
+ 'sys_script': 'business_rule'
769
+ };
770
+
771
+ return typeMap[table] || 'unknown';
772
+ }
773
+
774
+ protected getTableForType(type: string): string {
775
+ const tableMap: Record<string, string> = {
776
+ 'widget': 'sp_widget',
777
+ 'flow': 'sys_hub_flow',
778
+ 'script': 'sys_script_include',
779
+ 'application': 'sys_app',
780
+ 'catalog_item': 'sc_cat_item',
781
+ 'business_rule': 'sys_script'
782
+ };
783
+
784
+ return tableMap[type] || 'sys_metadata';
785
+ }
786
+
787
+ private getSearchConfigForType(type: string): any {
788
+ const configs: Record<string, any> = {
789
+ 'widget': { table: 'sp_widget', type: 'widget', nameField: 'name' },
790
+ 'flow': { table: 'sys_hub_flow', type: 'flow', nameField: 'name' },
791
+ 'script': { table: 'sys_script_include', type: 'script', nameField: 'name' },
792
+ 'application': { table: 'sys_app', type: 'application', nameField: 'name' }
793
+ };
794
+
795
+ return configs[type] || configs['widget'];
796
+ }
797
+
798
+ private getAllSearchConfigs(): any[] {
799
+ return [
800
+ { table: 'sp_widget', type: 'widget', nameField: 'name' },
801
+ { table: 'sys_hub_flow', type: 'flow', nameField: 'name' },
802
+ { table: 'sys_script_include', type: 'script', nameField: 'name' },
803
+ { table: 'sys_app', type: 'application', nameField: 'name' }
804
+ ];
805
+ }
806
+
807
+ private hashQuery(query: string): string {
808
+ return crypto.createHash('md5').update(query).digest('hex').substring(0, 8);
809
+ }
810
+
811
+ /**
812
+ * Memory store handler
813
+ */
814
+ private async handleMemoryStore(args: any): Promise<MCPToolResult> {
815
+ const { key, value, ttl, namespace = 'default' } = args;
816
+
817
+ try {
818
+ // Store in shared context
819
+ await this.memory.updateSharedContext({
820
+ session_id: 'global',
821
+ context_key: `${namespace}:${key}`,
822
+ context_value: JSON.stringify(value),
823
+ created_by_agent: 'intelligent_mcp'
824
+ });
825
+
826
+ return this.createSuccessResponse(
827
+ `Data stored successfully with key: ${namespace}:${key}`,
828
+ { key: `${namespace}:${key}`, namespace }
829
+ );
830
+ } catch (error) {
831
+ return this.createErrorResponse('Failed to store in memory', error);
832
+ }
833
+ }
834
+
835
+ /**
836
+ * Memory get handler
837
+ */
838
+ private async handleMemoryGet(args: any): Promise<MCPToolResult> {
839
+ const { key, namespace = 'default' } = args;
840
+
841
+ try {
842
+ // Get from session context
843
+ const sessionContext = await this.memory.getSessionContext('global');
844
+ const fullKey = `${namespace}:${key}`;
845
+
846
+ if (!sessionContext || !sessionContext[fullKey]) {
847
+ return this.createSuccessResponse(
848
+ `Key not found: ${namespace}:${key}`,
849
+ { value: null, found: false }
850
+ );
851
+ }
852
+
853
+ return this.createSuccessResponse(
854
+ `Data retrieved successfully`,
855
+ {
856
+ key: `${namespace}:${key}`,
857
+ namespace,
858
+ value: JSON.parse(sessionContext[fullKey]),
859
+ found: true
860
+ }
861
+ );
862
+ } catch (error) {
863
+ return this.createErrorResponse('Failed to retrieve from memory', error);
864
+ }
865
+ }
866
+
867
+ /**
868
+ * Memory list handler
869
+ */
870
+ private async handleMemoryList(args: any): Promise<MCPToolResult> {
871
+ const { namespace = 'default', pattern } = args;
872
+
873
+ try {
874
+ // Get all contexts for global session
875
+ const sessionContext = await this.memory.getSessionContext('global');
876
+
877
+ if (!sessionContext) {
878
+ return this.createSuccessResponse(
879
+ `No keys found in namespace ${namespace}`,
880
+ { namespace, count: 0, keys: [] }
881
+ );
882
+ }
883
+
884
+ // Filter by namespace
885
+ let keys = Object.keys(sessionContext)
886
+ .filter(k => k.startsWith(`${namespace}:`))
887
+ .map(k => k.replace(`${namespace}:`, ''));
888
+
889
+ // Apply pattern filter if provided
890
+ if (pattern) {
891
+ const regex = new RegExp(pattern);
892
+ keys = keys.filter(k => regex.test(k));
893
+ }
894
+
895
+ return this.createSuccessResponse(
896
+ `Found ${keys.length} keys in namespace ${namespace}`,
897
+ { namespace, count: keys.length, keys }
898
+ );
899
+ } catch (error) {
900
+ return this.createErrorResponse('Failed to list memory keys', error);
901
+ }
902
+ }
903
+
904
+ /**
905
+ * Todo write handler
906
+ */
907
+ private async handleTodoWrite(args: any): Promise<MCPToolResult> {
908
+ const { todos } = args;
909
+
910
+ try {
911
+ // Store todos in shared context
912
+ await this.memory.updateSharedContext({
913
+ session_id: 'global',
914
+ context_key: 'todos:current',
915
+ context_value: JSON.stringify(todos),
916
+ created_by_agent: 'intelligent_mcp'
917
+ });
918
+
919
+ // Update individual todo items for quick access
920
+ for (const todo of todos) {
921
+ await this.memory.updateSharedContext({
922
+ session_id: 'global',
923
+ context_key: `todos:item:${todo.id}`,
924
+ context_value: JSON.stringify(todo),
925
+ created_by_agent: 'intelligent_mcp'
926
+ });
927
+ }
928
+
929
+ return this.createSuccessResponse(
930
+ `Updated ${todos.length} todo items`,
931
+ { todos, count: todos.length }
932
+ );
933
+ } catch (error) {
934
+ return this.createErrorResponse('Failed to write todos', error);
935
+ }
936
+ }
937
+
938
+ /**
939
+ * Todo read handler
940
+ */
941
+ private async handleTodoRead(args: any): Promise<MCPToolResult> {
942
+ const { status = 'all' } = args;
943
+
944
+ try {
945
+ // Get current todos from session context
946
+ const sessionContext = await this.memory.getSessionContext('global');
947
+ const todosKey = 'todos:current';
948
+
949
+ if (!sessionContext || !sessionContext[todosKey]) {
950
+ return this.createSuccessResponse(
951
+ 'No todos found',
952
+ { todos: [], count: 0 }
953
+ );
954
+ }
955
+
956
+ let todos = JSON.parse(sessionContext[todosKey]);
957
+
958
+ // Filter by status if not 'all'
959
+ if (status !== 'all') {
960
+ todos = todos.filter((t: any) => t.status === status);
961
+ }
962
+
963
+ return this.createSuccessResponse(
964
+ `Found ${todos.length} todos`,
965
+ { todos, count: todos.length }
966
+ );
967
+ } catch (error) {
968
+ return this.createErrorResponse('Failed to read todos', error);
969
+ }
970
+ }
971
+ }
972
+
973
+ // Start the server
974
+ // if (import.meta.url === `file://${process.argv[1]}`) {
975
+ // const server = new ServiceNowIntelligentMCP();
976
+ // server.start().catch(console.error);
977
+ // }