snow-flow 1.4.6 → 1.4.7

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 (363) hide show
  1. package/.husky/pre-commit +4 -0
  2. package/.releaserc.json +47 -0
  3. package/LICENSE +1 -1
  4. package/dist/agents/base-agent.d.ts +1 -1
  5. package/dist/agents/base-agent.d.ts.map +1 -1
  6. package/dist/agents/base-agent.js +2 -1
  7. package/dist/agents/base-agent.js.map +1 -1
  8. package/dist/agents/coordinator.d.ts.map +1 -1
  9. package/dist/agents/coordinator.js +5 -2
  10. package/dist/agents/coordinator.js.map +1 -1
  11. package/dist/agents/index.d.ts +0 -4
  12. package/dist/agents/index.d.ts.map +1 -1
  13. package/dist/agents/index.js +1 -0
  14. package/dist/agents/index.js.map +1 -1
  15. package/dist/agents/queen-403-handler.d.ts +2 -2
  16. package/dist/agents/queen-403-handler.d.ts.map +1 -1
  17. package/dist/agents/queen-403-handler.js +3 -2
  18. package/dist/agents/queen-403-handler.js.map +1 -1
  19. package/dist/agents/queen-agent.d.ts +4 -0
  20. package/dist/agents/queen-agent.d.ts.map +1 -1
  21. package/dist/agents/queen-agent.js +137 -34
  22. package/dist/agents/queen-agent.js.map +1 -1
  23. package/dist/agents/script-writer-agent.js +1 -0
  24. package/dist/agents/security-agent.js +28 -27
  25. package/dist/agents/security-agent.js.map +1 -1
  26. package/dist/agents/widget-creator-agent.d.ts.map +1 -1
  27. package/dist/agents/widget-creator-agent.js +121 -62
  28. package/dist/agents/widget-creator-agent.js.map +1 -1
  29. package/dist/api/error-handling.d.ts +112 -1
  30. package/dist/api/error-handling.d.ts.map +1 -1
  31. package/dist/api/error-handling.js +2 -1
  32. package/dist/api/error-handling.js.map +1 -1
  33. package/dist/api/natural-language-mapper.d.ts +3 -5
  34. package/dist/api/natural-language-mapper.d.ts.map +1 -1
  35. package/dist/api/natural-language-mapper.js +1 -0
  36. package/dist/api/natural-language-mapper.js.map +1 -1
  37. package/dist/api/performance-optimizer.d.ts.map +1 -1
  38. package/dist/api/performance-optimizer.js +1 -0
  39. package/dist/api/performance-optimizer.js.map +1 -1
  40. package/dist/api/transaction-manager.js +1 -0
  41. package/dist/cli/deploy-artifact.js +1 -0
  42. package/dist/cli/snow-flow-cli-integration.d.ts.map +1 -1
  43. package/dist/cli/snow-flow-cli-integration.js +1 -0
  44. package/dist/cli/snow-flow-cli-integration.js.map +1 -1
  45. package/dist/cli.js +10 -9
  46. package/dist/cli.js.map +1 -1
  47. package/dist/compliance/advanced-compliance-system.d.ts +316 -0
  48. package/dist/compliance/advanced-compliance-system.d.ts.map +1 -0
  49. package/dist/compliance/advanced-compliance-system.js +1 -0
  50. package/dist/compliance/advanced-compliance-system.js.map +1 -0
  51. package/dist/compliance/index.d.ts +6 -0
  52. package/dist/compliance/index.d.ts.map +1 -0
  53. package/dist/compliance/index.js +1 -0
  54. package/dist/compliance/index.js.map +1 -0
  55. package/dist/config/snow-flow-config.d.ts +279 -241
  56. package/dist/config/snow-flow-config.d.ts.map +1 -1
  57. package/dist/config/snow-flow-config.js +1 -0
  58. package/dist/config/snow-flow-config.js.map +1 -1
  59. package/dist/documentation/index.d.ts +6 -0
  60. package/dist/documentation/index.d.ts.map +1 -0
  61. package/dist/documentation/index.js +1 -0
  62. package/dist/documentation/index.js.map +1 -0
  63. package/dist/documentation/self-documenting-system.d.ts +287 -0
  64. package/dist/documentation/self-documenting-system.d.ts.map +1 -0
  65. package/dist/documentation/self-documenting-system.js +38 -37
  66. package/dist/documentation/self-documenting-system.js.map +1 -0
  67. package/dist/healing/index.d.ts +6 -0
  68. package/dist/healing/index.d.ts.map +1 -0
  69. package/dist/healing/index.js +1 -0
  70. package/dist/healing/index.js.map +1 -0
  71. package/dist/healing/self-healing-system.d.ts +315 -0
  72. package/dist/healing/self-healing-system.d.ts.map +1 -0
  73. package/dist/healing/self-healing-system.js +1 -0
  74. package/dist/healing/self-healing-system.js.map +1 -0
  75. package/dist/health/system-health.d.ts +34 -0
  76. package/dist/health/system-health.d.ts.map +1 -1
  77. package/dist/health/system-health.js +1 -0
  78. package/dist/health/system-health.js.map +1 -1
  79. package/dist/index.js +1 -0
  80. package/dist/intelligence/acl-analyzer.d.ts +1 -1
  81. package/dist/intelligence/acl-analyzer.d.ts.map +1 -1
  82. package/dist/intelligence/acl-analyzer.js +4 -3
  83. package/dist/intelligence/acl-analyzer.js.map +1 -1
  84. package/dist/intelligence/auto-resolution-engine.js +1 -0
  85. package/dist/intelligence/auto-resolution-engine.js.map +1 -1
  86. package/dist/intelligence/gap-analysis-engine.d.ts +3 -3
  87. package/dist/intelligence/gap-analysis-engine.js +14 -13
  88. package/dist/intelligence/gap-analysis-engine.js.map +1 -1
  89. package/dist/intelligence/manual-instructions-generator.d.ts +1 -1
  90. package/dist/intelligence/manual-instructions-generator.d.ts.map +1 -1
  91. package/dist/intelligence/manual-instructions-generator.js +2 -1
  92. package/dist/intelligence/manual-instructions-generator.js.map +1 -1
  93. package/dist/intelligence/mcp-coverage-analyzer.js +4 -3
  94. package/dist/intelligence/mcp-coverage-analyzer.js.map +1 -1
  95. package/dist/intelligence/multi-pass-requirements-analyzer.d.ts +79 -0
  96. package/dist/intelligence/multi-pass-requirements-analyzer.d.ts.map +1 -0
  97. package/dist/intelligence/multi-pass-requirements-analyzer.js +13 -12
  98. package/dist/intelligence/multi-pass-requirements-analyzer.js.map +1 -0
  99. package/dist/intelligence/performance-recommendations-engine.d.ts +236 -0
  100. package/dist/intelligence/performance-recommendations-engine.d.ts.map +1 -0
  101. package/dist/intelligence/performance-recommendations-engine.js +5 -4
  102. package/dist/intelligence/performance-recommendations-engine.js.map +1 -0
  103. package/dist/intelligence/requirements-analyzer.d.ts +1 -1
  104. package/dist/intelligence/requirements-analyzer.d.ts.map +1 -1
  105. package/dist/intelligence/requirements-analyzer.js +4 -3
  106. package/dist/intelligence/requirements-analyzer.js.map +1 -1
  107. package/dist/intelligence/task-analyzer.d.ts +2 -2
  108. package/dist/intelligence/task-analyzer.d.ts.map +1 -1
  109. package/dist/intelligence/task-analyzer.js +40 -39
  110. package/dist/intelligence/task-analyzer.js.map +1 -1
  111. package/dist/managers/scope-manager.d.ts.map +1 -1
  112. package/dist/managers/scope-manager.js +2 -1
  113. package/dist/managers/scope-manager.js.map +1 -1
  114. package/dist/mcp/base-mcp-server.d.ts +26 -2
  115. package/dist/mcp/base-mcp-server.d.ts.map +1 -1
  116. package/dist/mcp/base-mcp-server.js +2 -1
  117. package/dist/mcp/base-mcp-server.js.map +1 -1
  118. package/dist/mcp/http-transport-wrapper.d.ts +1 -0
  119. package/dist/mcp/http-transport-wrapper.d.ts.map +1 -1
  120. package/dist/mcp/http-transport-wrapper.js +1 -0
  121. package/dist/mcp/http-transport-wrapper.js.map +1 -1
  122. package/dist/mcp/service-discovery-client.js +1 -0
  123. package/dist/mcp/servicenow-automation-mcp-refactored.d.ts.map +1 -1
  124. package/dist/mcp/servicenow-automation-mcp-refactored.js +1 -1
  125. package/dist/mcp/servicenow-automation-mcp-refactored.js.map +1 -1
  126. package/dist/mcp/servicenow-automation-mcp.js +1 -0
  127. package/dist/mcp/servicenow-deployment-mcp-refactored.d.ts +5 -0
  128. package/dist/mcp/servicenow-deployment-mcp-refactored.d.ts.map +1 -1
  129. package/dist/mcp/servicenow-deployment-mcp-refactored.js +1 -0
  130. package/dist/mcp/servicenow-deployment-mcp-refactored.js.map +1 -1
  131. package/dist/mcp/servicenow-deployment-mcp.js +500 -131
  132. package/dist/mcp/servicenow-deployment-mcp.js.map +1 -1
  133. package/dist/mcp/servicenow-graph-memory-mcp-refactored.js +5 -4
  134. package/dist/mcp/servicenow-graph-memory-mcp-refactored.js.map +1 -1
  135. package/dist/mcp/servicenow-graph-memory-mcp.js +6 -5
  136. package/dist/mcp/servicenow-graph-memory-mcp.js.map +1 -1
  137. package/dist/mcp/servicenow-integration-mcp-refactored.d.ts.map +1 -1
  138. package/dist/mcp/servicenow-integration-mcp-refactored.js +1 -0
  139. package/dist/mcp/servicenow-integration-mcp-refactored.js.map +1 -1
  140. package/dist/mcp/servicenow-integration-mcp.js +1 -0
  141. package/dist/mcp/servicenow-intelligent-mcp-refactored.js +24 -23
  142. package/dist/mcp/servicenow-intelligent-mcp-refactored.js.map +1 -1
  143. package/dist/mcp/servicenow-intelligent-mcp.d.ts +38 -1
  144. package/dist/mcp/servicenow-intelligent-mcp.d.ts.map +1 -1
  145. package/dist/mcp/servicenow-intelligent-mcp.js +35 -34
  146. package/dist/mcp/servicenow-intelligent-mcp.js.map +1 -1
  147. package/dist/mcp/servicenow-mcp-server.js +1 -0
  148. package/dist/mcp/servicenow-memory-mcp.d.ts +5 -4
  149. package/dist/mcp/servicenow-memory-mcp.d.ts.map +1 -1
  150. package/dist/mcp/servicenow-memory-mcp.js +1 -0
  151. package/dist/mcp/servicenow-memory-mcp.js.map +1 -1
  152. package/dist/mcp/servicenow-operations-mcp-refactored.d.ts +1 -1
  153. package/dist/mcp/servicenow-operations-mcp-refactored.d.ts.map +1 -1
  154. package/dist/mcp/servicenow-operations-mcp-refactored.js +34 -33
  155. package/dist/mcp/servicenow-operations-mcp-refactored.js.map +1 -1
  156. package/dist/mcp/servicenow-operations-mcp.d.ts +1 -1
  157. package/dist/mcp/servicenow-operations-mcp.js +68 -67
  158. package/dist/mcp/servicenow-operations-mcp.js.map +1 -1
  159. package/dist/mcp/servicenow-platform-development-mcp-refactored.js +1 -0
  160. package/dist/mcp/servicenow-platform-development-mcp.js +2 -1
  161. package/dist/mcp/servicenow-platform-development-mcp.js.map +1 -1
  162. package/dist/mcp/servicenow-progressive-indexer.js +1 -0
  163. package/dist/mcp/servicenow-reporting-analytics-mcp-refactored.d.ts.map +1 -1
  164. package/dist/mcp/servicenow-reporting-analytics-mcp-refactored.js +6 -5
  165. package/dist/mcp/servicenow-reporting-analytics-mcp-refactored.js.map +1 -1
  166. package/dist/mcp/servicenow-reporting-analytics-mcp.js +9 -8
  167. package/dist/mcp/servicenow-reporting-analytics-mcp.js.map +1 -1
  168. package/dist/mcp/servicenow-security-compliance-mcp-refactored.js +3 -2
  169. package/dist/mcp/servicenow-security-compliance-mcp-refactored.js.map +1 -1
  170. package/dist/mcp/servicenow-security-compliance-mcp.js +6 -5
  171. package/dist/mcp/servicenow-security-compliance-mcp.js.map +1 -1
  172. package/dist/mcp/servicenow-update-set-mcp-refactored.d.ts.map +1 -1
  173. package/dist/mcp/servicenow-update-set-mcp-refactored.js +1 -0
  174. package/dist/mcp/servicenow-update-set-mcp-refactored.js.map +1 -1
  175. package/dist/mcp/servicenow-update-set-mcp.js +1 -0
  176. package/dist/mcp/servicenow-update-set-mcp.js.map +1 -1
  177. package/dist/mcp/servicenow-xml-flow-mcp.d.ts +53 -0
  178. package/dist/mcp/servicenow-xml-flow-mcp.d.ts.map +1 -0
  179. package/dist/mcp/servicenow-xml-flow-mcp.js +14 -13
  180. package/dist/mcp/servicenow-xml-flow-mcp.js.map +1 -0
  181. package/dist/mcp/shared/agent-context-provider.js +1 -0
  182. package/dist/mcp/shared/base-mcp-server.d.ts +142 -0
  183. package/dist/mcp/shared/base-mcp-server.d.ts.map +1 -1
  184. package/dist/mcp/shared/base-mcp-server.js +5 -4
  185. package/dist/mcp/shared/base-mcp-server.js.map +1 -1
  186. package/dist/mcp/shared/mcp-memory-manager.js +1 -0
  187. package/dist/mcp/shared/mcp-resource-manager.d.ts +99 -0
  188. package/dist/mcp/shared/mcp-resource-manager.d.ts.map +1 -0
  189. package/dist/mcp/shared/mcp-resource-manager.js +1 -0
  190. package/dist/mcp/shared/mcp-resource-manager.js.map +1 -0
  191. package/dist/mcp/start-all-mcp-servers.js +1 -0
  192. package/dist/mcp/start-servicenow-mcp.js +1 -0
  193. package/dist/memory/hierarchical-memory-system.d.ts +90 -0
  194. package/dist/memory/hierarchical-memory-system.d.ts.map +1 -0
  195. package/dist/memory/hierarchical-memory-system.js +1 -0
  196. package/dist/memory/hierarchical-memory-system.js.map +1 -0
  197. package/dist/memory/index.js +1 -0
  198. package/dist/memory/memory-client.d.ts +11 -1
  199. package/dist/memory/memory-client.d.ts.map +1 -1
  200. package/dist/memory/memory-client.js +1 -0
  201. package/dist/memory/memory-client.js.map +1 -1
  202. package/dist/memory/memory-operations.d.ts +12 -3
  203. package/dist/memory/memory-operations.d.ts.map +1 -1
  204. package/dist/memory/memory-operations.js +1 -0
  205. package/dist/memory/memory-operations.js.map +1 -1
  206. package/dist/memory/memory-system.d.ts +41 -7
  207. package/dist/memory/memory-system.d.ts.map +1 -1
  208. package/dist/memory/memory-system.js +1 -0
  209. package/dist/memory/memory-system.js.map +1 -1
  210. package/dist/memory/servicenow-artifact-indexer.js +1 -0
  211. package/dist/memory/snow-flow-memory-patterns.d.ts +213 -0
  212. package/dist/memory/snow-flow-memory-patterns.d.ts.map +1 -0
  213. package/dist/memory/snow-flow-memory-patterns.js +1 -0
  214. package/dist/memory/snow-flow-memory-patterns.js.map +1 -0
  215. package/dist/memory/swarm-memory.js +1 -0
  216. package/dist/monitoring/enhanced-monitoring-system.d.ts +172 -0
  217. package/dist/monitoring/enhanced-monitoring-system.d.ts.map +1 -0
  218. package/dist/monitoring/enhanced-monitoring-system.js +2 -1
  219. package/dist/monitoring/enhanced-monitoring-system.js.map +1 -0
  220. package/dist/monitoring/performance-tracker.d.ts.map +1 -1
  221. package/dist/monitoring/performance-tracker.js +1 -0
  222. package/dist/optimization/cost-optimization-engine.d.ts +271 -0
  223. package/dist/optimization/cost-optimization-engine.d.ts.map +1 -0
  224. package/dist/optimization/cost-optimization-engine.js +3 -2
  225. package/dist/optimization/cost-optimization-engine.js.map +1 -0
  226. package/dist/optimization/index.d.ts +5 -0
  227. package/dist/optimization/index.d.ts.map +1 -0
  228. package/dist/optimization/index.js +1 -0
  229. package/dist/optimization/index.js.map +1 -0
  230. package/dist/queen/agent-factory.d.ts.map +1 -1
  231. package/dist/queen/agent-factory.js +18 -3
  232. package/dist/queen/agent-factory.js.map +1 -1
  233. package/dist/queen/index.js +1 -0
  234. package/dist/queen/mcp-execution-bridge.d.ts +4 -0
  235. package/dist/queen/mcp-execution-bridge.d.ts.map +1 -1
  236. package/dist/queen/mcp-execution-bridge.js +1 -0
  237. package/dist/queen/mcp-execution-bridge.js.map +1 -1
  238. package/dist/queen/neural-learning.d.ts.map +1 -1
  239. package/dist/queen/neural-learning.js +5 -0
  240. package/dist/queen/neural-learning.js.map +1 -1
  241. package/dist/queen/parallel-agent-engine.d.ts +1 -0
  242. package/dist/queen/parallel-agent-engine.d.ts.map +1 -1
  243. package/dist/queen/parallel-agent-engine.js +2 -1
  244. package/dist/queen/parallel-agent-engine.js.map +1 -1
  245. package/dist/queen/queen-memory-system.d.ts +164 -0
  246. package/dist/queen/queen-memory-system.d.ts.map +1 -0
  247. package/dist/queen/queen-memory-system.js +11 -10
  248. package/dist/queen/queen-memory-system.js.map +1 -0
  249. package/dist/queen/queen-memory.js +1 -0
  250. package/dist/queen/servicenow-queen.d.ts +3 -2
  251. package/dist/queen/servicenow-queen.d.ts.map +1 -1
  252. package/dist/queen/servicenow-queen.js +20 -19
  253. package/dist/queen/servicenow-queen.js.map +1 -1
  254. package/dist/queen/types.d.ts +11 -5
  255. package/dist/queen/types.d.ts.map +1 -1
  256. package/dist/queen/types.js +1 -0
  257. package/dist/rollback/smart-rollback-system.d.ts +350 -0
  258. package/dist/rollback/smart-rollback-system.d.ts.map +1 -0
  259. package/dist/rollback/smart-rollback-system.js +1 -0
  260. package/dist/rollback/smart-rollback-system.js.map +1 -0
  261. package/dist/snow-flow-system.d.ts +3 -3
  262. package/dist/snow-flow-system.d.ts.map +1 -1
  263. package/dist/snow-flow-system.js +4 -3
  264. package/dist/snow-flow-system.js.map +1 -1
  265. package/dist/sparc/sparc-help.d.ts +1 -2
  266. package/dist/sparc/sparc-help.d.ts.map +1 -1
  267. package/dist/sparc/sparc-help.js +2 -1
  268. package/dist/sparc/sparc-help.js.map +1 -1
  269. package/dist/sparc/team-sparc.d.ts +2 -2
  270. package/dist/sparc/team-sparc.d.ts.map +1 -1
  271. package/dist/sparc/team-sparc.js +4 -3
  272. package/dist/sparc/team-sparc.js.map +1 -1
  273. package/dist/strategies/global-scope-strategy.js +4 -3
  274. package/dist/strategies/global-scope-strategy.js.map +1 -1
  275. package/dist/testing/integration-test-suite.d.ts +303 -0
  276. package/dist/testing/integration-test-suite.d.ts.map +1 -0
  277. package/dist/testing/integration-test-suite.js +4 -3
  278. package/dist/testing/integration-test-suite.js.map +1 -0
  279. package/dist/types/index.d.ts +2 -3
  280. package/dist/types/index.d.ts.map +1 -1
  281. package/dist/types/index.js +1 -0
  282. package/dist/types/index.js.map +1 -1
  283. package/dist/types/servicenow.types.js +1 -0
  284. package/dist/types/snow-flow.types.d.ts +1 -1
  285. package/dist/types/snow-flow.types.d.ts.map +1 -1
  286. package/dist/types/snow-flow.types.js +1 -0
  287. package/dist/types/todo.types.js +1 -0
  288. package/dist/utils/action-type-cache.d.ts.map +1 -1
  289. package/dist/utils/action-type-cache.js +1 -0
  290. package/dist/utils/action-type-cache.js.map +1 -1
  291. package/dist/utils/agent-detector.d.ts +1 -1
  292. package/dist/utils/agent-detector.d.ts.map +1 -1
  293. package/dist/utils/agent-detector.js +11 -10
  294. package/dist/utils/agent-detector.js.map +1 -1
  295. package/dist/utils/artifact-tracker.js +1 -0
  296. package/dist/utils/dependency-detector.js +1 -0
  297. package/dist/utils/deployment-metadata-handler.d.ts +110 -0
  298. package/dist/utils/deployment-metadata-handler.d.ts.map +1 -0
  299. package/dist/utils/deployment-metadata-handler.js +1 -0
  300. package/dist/utils/deployment-metadata-handler.js.map +1 -0
  301. package/dist/utils/error-recovery.js +1 -0
  302. package/dist/utils/logger.js +1 -0
  303. package/dist/utils/mcp-auth-middleware.js +1 -0
  304. package/dist/utils/mcp-config-manager.d.ts.map +1 -1
  305. package/dist/utils/mcp-config-manager.js +1 -0
  306. package/dist/utils/mcp-config-manager.js.map +1 -1
  307. package/dist/utils/mcp-server-manager.d.ts.map +1 -1
  308. package/dist/utils/mcp-server-manager.js +1 -0
  309. package/dist/utils/mcp-server-manager.js.map +1 -1
  310. package/dist/utils/mcp-tool-registry.d.ts +69 -0
  311. package/dist/utils/mcp-tool-registry.d.ts.map +1 -0
  312. package/dist/utils/mcp-tool-registry.js +1 -0
  313. package/dist/utils/mcp-tool-registry.js.map +1 -0
  314. package/dist/utils/scope-utils.d.ts +2 -2
  315. package/dist/utils/scope-utils.d.ts.map +1 -1
  316. package/dist/utils/scope-utils.js +32 -31
  317. package/dist/utils/scope-utils.js.map +1 -1
  318. package/dist/utils/servicenow-client.d.ts +18 -1
  319. package/dist/utils/servicenow-client.d.ts.map +1 -1
  320. package/dist/utils/servicenow-client.js +1 -0
  321. package/dist/utils/servicenow-client.js.map +1 -1
  322. package/dist/utils/servicenow-id-generator.d.ts +107 -0
  323. package/dist/utils/servicenow-id-generator.d.ts.map +1 -0
  324. package/dist/utils/servicenow-id-generator.js +1 -0
  325. package/dist/utils/servicenow-id-generator.js.map +1 -0
  326. package/dist/utils/snow-oauth.d.ts +20 -0
  327. package/dist/utils/snow-oauth.d.ts.map +1 -1
  328. package/dist/utils/snow-oauth.js +1 -0
  329. package/dist/utils/snow-oauth.js.map +1 -1
  330. package/dist/utils/template-engine.js +1 -0
  331. package/dist/utils/theme-manager.js +1 -0
  332. package/dist/utils/unified-auth-store.d.ts +55 -0
  333. package/dist/utils/unified-auth-store.d.ts.map +1 -0
  334. package/dist/utils/unified-auth-store.js +1 -0
  335. package/dist/utils/unified-auth-store.js.map +1 -0
  336. package/dist/utils/update-set-importer.d.ts +72 -0
  337. package/dist/utils/update-set-importer.d.ts.map +1 -0
  338. package/dist/utils/update-set-importer.js +1 -0
  339. package/dist/utils/update-set-importer.js.map +1 -0
  340. package/dist/utils/update-set-xml-packager.d.ts +85 -0
  341. package/dist/utils/update-set-xml-packager.d.ts.map +1 -0
  342. package/dist/utils/update-set-xml-packager.js +1 -0
  343. package/dist/utils/update-set-xml-packager.js.map +1 -0
  344. package/dist/utils/widget-template-generator.d.ts +82 -0
  345. package/dist/utils/widget-template-generator.d.ts.map +1 -0
  346. package/dist/utils/widget-template-generator.js +1 -0
  347. package/dist/utils/widget-template-generator.js.map +1 -0
  348. package/dist/version.d.ts +28 -1
  349. package/dist/version.d.ts.map +1 -1
  350. package/dist/version.js +29 -19
  351. package/dist/version.js.map +1 -1
  352. package/package.json +20 -2
  353. package/COMMIT_MESSAGE.txt +0 -31
  354. package/action-v2-implementation.js +0 -338
  355. package/create-snow-flow-env.sh +0 -32
  356. package/decode-action-values.js +0 -164
  357. package/npm-publish-summary.txt +0 -35
  358. package/snow-flow-claude-md-template.txt +0 -262
  359. package/test-config.js +0 -55
  360. package/test-flow-fix.js +0 -92
  361. package/test-parallel-agents.js +0 -177
  362. package/test-queen-workflow.js +0 -184
  363. package/test-real-monitoring.js +0 -184
@@ -381,7 +381,7 @@ class ServiceNowDeploymentMCP {
381
381
  items: {
382
382
  type: 'object',
383
383
  properties: {
384
- type: { type: 'string', enum: ['widget', 'flow', 'script', 'business_rule', 'table', 'application'] },
384
+ type: { type: 'string', enum: ['widget', 'portal_page', 'script', 'business_rule', 'table', 'application'] },
385
385
  sys_id: { type: 'string', description: 'Existing artifact sys_id (for updates)' },
386
386
  config: { type: 'object', description: 'Artifact configuration' },
387
387
  action: { type: 'string', enum: ['create', 'update', 'deploy'], default: 'deploy' },
@@ -406,7 +406,7 @@ class ServiceNowDeploymentMCP {
406
406
  properties: {
407
407
  type: {
408
408
  type: 'string',
409
- enum: ['widget', 'flow', 'application', 'script', 'business_rule', 'table'],
409
+ enum: ['widget', 'portal_page', 'application', 'script', 'business_rule', 'table'],
410
410
  description: 'Type of artifact to deploy'
411
411
  },
412
412
  instruction: {
@@ -774,7 +774,7 @@ class ServiceNowDeploymentMCP {
774
774
  catch (tableError) {
775
775
  this.logger.warn('Table record creation failed, trying manual step guidance', tableError);
776
776
  // Fallback strategy 2: Provide manual creation steps
777
- // Enhanced error analysis for OAuth permissions
777
+ // Enhanced error _analysis for OAuth permissions
778
778
  const is403Error = (error) => {
779
779
  return error?.response?.status === 403 ||
780
780
  error?.message?.includes('403') ||
@@ -848,7 +848,7 @@ Your widget has been deployed and is ready for testing in Service Portal.`
848
848
  }
849
849
  catch (diagError) {
850
850
  this.logger.warn('Could not run auto-diagnostics:', diagError);
851
- diagnosticsResult = '❌ Auto-diagnostics failed. Run snow_auth_diagnostics manually for detailed analysis.';
851
+ diagnosticsResult = '❌ Auto-diagnostics failed. Run snow_auth_diagnostics manually for detailed _analysis.';
852
852
  }
853
853
  troubleshootingSteps = `
854
854
  🔧 **AUTO-DIAGNOSTICS RESULTS:**
@@ -1110,6 +1110,452 @@ Use \`snow_deployment_debug\` for more information about this session.`,
1110
1110
  throw new Error(enhancedError);
1111
1111
  }
1112
1112
  }
1113
+ /**
1114
+ * Deploy a portal page with widget placement
1115
+ */
1116
+ async deployPortalPage(args) {
1117
+ try {
1118
+ // Check authentication first
1119
+ const isAuth = await this.oauth.isAuthenticated();
1120
+ if (!isAuth) {
1121
+ return {
1122
+ content: [
1123
+ {
1124
+ type: 'text',
1125
+ text: '❌ Not authenticated with ServiceNow.\n\nPlease run: snow-flow auth login\n\nOr configure your .env file with ServiceNow OAuth credentials.',
1126
+ },
1127
+ ],
1128
+ };
1129
+ }
1130
+ this.logger.info('Deploying portal page to ServiceNow', { name: args.page_id });
1131
+ // Ensure Update Set is active
1132
+ const { updateSetId, updateSetName } = await this.ensureUpdateSet('Portal Page', args.page_id);
1133
+ // Validate portal page structure
1134
+ if (!args.page_id || !args.title) {
1135
+ throw new Error('Portal page must have page_id and title');
1136
+ }
1137
+ // Find widget sys_id if widget name is provided
1138
+ let widgetSysId = args.widget_sys_id;
1139
+ if (!widgetSysId && args.widget_name) {
1140
+ this.logger.info('Looking up widget by name', { widgetName: args.widget_name });
1141
+ try {
1142
+ const widgetResult = await this.client.searchRecords('sp_widget', `name=${args.widget_name}`, 1);
1143
+ if (widgetResult.success && widgetResult.data?.length > 0) {
1144
+ widgetSysId = widgetResult.data[0].sys_id;
1145
+ this.logger.info('Found widget', { widgetName: args.widget_name, sys_id: widgetSysId });
1146
+ }
1147
+ else {
1148
+ this.logger.warn('Widget not found, will create page without widget', { widgetName: args.widget_name });
1149
+ }
1150
+ }
1151
+ catch (error) {
1152
+ this.logger.error('Failed to lookup widget', { widgetName: args.widget_name, error });
1153
+ }
1154
+ }
1155
+ // Determine portal sys_id
1156
+ let portalSysId = '';
1157
+ try {
1158
+ // Default to Employee Service Portal if available, otherwise standard Service Portal
1159
+ const portalQuery = args.portal === 'esc' ? 'url_suffix=esc' : 'url_suffix=sp';
1160
+ const portalResult = await this.client.searchRecords('sp_portal', portalQuery, 1);
1161
+ if (portalResult.success && portalResult.data?.length > 0) {
1162
+ portalSysId = portalResult.data[0].sys_id;
1163
+ this.logger.info('Found portal', { portal: args.portal, sys_id: portalSysId });
1164
+ }
1165
+ }
1166
+ catch (error) {
1167
+ this.logger.warn('Failed to lookup portal, using default', { portal: args.portal, error });
1168
+ }
1169
+ // Create portal page
1170
+ let pageResult;
1171
+ try {
1172
+ // Create the page record
1173
+ pageResult = await this.client.createRecord('sp_page', {
1174
+ id: args.page_id,
1175
+ title: args.title,
1176
+ short_description: args.description || `Portal page created by Snow-Flow`,
1177
+ css: args.page_css || '',
1178
+ sp_portal: portalSysId,
1179
+ public: true,
1180
+ draft: false,
1181
+ internal: false
1182
+ });
1183
+ if (!pageResult.success || !pageResult.data) {
1184
+ throw new Error(`Failed to create portal page: ${pageResult.error || 'Unknown error'}`);
1185
+ }
1186
+ this.logger.info('Portal page created successfully', {
1187
+ pageId: args.page_id,
1188
+ sys_id: pageResult.data.sys_id
1189
+ });
1190
+ }
1191
+ catch (pageError) {
1192
+ this.logger.error('Failed to create portal page', { error: pageError });
1193
+ // Provide manual fallback
1194
+ return this.generatePortalPageManualSteps(args, pageError, updateSetName, updateSetId);
1195
+ }
1196
+ const pageSysId = pageResult.data.sys_id;
1197
+ const credentials = await this.oauth.loadCredentials();
1198
+ // Create widget instances on the page if widget is provided
1199
+ const widgetInstances = [];
1200
+ if (widgetSysId && args.widgets && args.widgets.length > 0) {
1201
+ for (const widgetConfig of args.widgets) {
1202
+ try {
1203
+ // Create container
1204
+ const containerResult = await this.client.createRecord('sp_container', {
1205
+ sp_page: pageSysId,
1206
+ width: widgetConfig.width || 'container',
1207
+ title: widgetConfig.container_title || '',
1208
+ bootstrap_alt: false,
1209
+ class_name: widgetConfig.class_name || '',
1210
+ background_color: widgetConfig.background_color || '',
1211
+ background_image: widgetConfig.background_image || '',
1212
+ background_style: widgetConfig.background_style || 'default',
1213
+ subheader: false
1214
+ });
1215
+ if (containerResult.success && containerResult.data) {
1216
+ // Create row
1217
+ const rowResult = await this.client.createRecord('sp_row', {
1218
+ sp_container: containerResult.data.sys_id,
1219
+ class_name: widgetConfig.row_class || '',
1220
+ order: 1
1221
+ });
1222
+ if (rowResult.success && rowResult.data) {
1223
+ // Create column
1224
+ const columnResult = await this.client.createRecord('sp_column', {
1225
+ sp_row: rowResult.data.sys_id,
1226
+ size_xs: widgetConfig.size || 12,
1227
+ size_sm: widgetConfig.size || 12,
1228
+ size_md: widgetConfig.size || 12,
1229
+ size_lg: widgetConfig.size || 12,
1230
+ order: widgetConfig.column || 1
1231
+ });
1232
+ if (columnResult.success && columnResult.data) {
1233
+ // Create widget instance
1234
+ const instanceResult = await this.client.createRecord('sp_instance', {
1235
+ sp_column: columnResult.data.sys_id,
1236
+ sp_widget: widgetSysId,
1237
+ order: widgetConfig.order || 100,
1238
+ title: widgetConfig.title || '',
1239
+ options: JSON.stringify(widgetConfig.options || {}),
1240
+ class_name: widgetConfig.instance_class || '',
1241
+ color: widgetConfig.color || 'default',
1242
+ active: true,
1243
+ public: true
1244
+ });
1245
+ if (instanceResult.success && instanceResult.data) {
1246
+ widgetInstances.push({
1247
+ widget: args.widget_name || widgetSysId,
1248
+ sys_id: instanceResult.data.sys_id,
1249
+ container: containerResult.data.sys_id,
1250
+ row: rowResult.data.sys_id,
1251
+ column: columnResult.data.sys_id
1252
+ });
1253
+ this.logger.info('Widget instance created on page', {
1254
+ widget: args.widget_name,
1255
+ instance_id: instanceResult.data.sys_id
1256
+ });
1257
+ }
1258
+ }
1259
+ }
1260
+ }
1261
+ }
1262
+ catch (instanceError) {
1263
+ this.logger.error('Failed to create widget instance', {
1264
+ widget: widgetConfig.widget,
1265
+ error: instanceError
1266
+ });
1267
+ }
1268
+ }
1269
+ }
1270
+ // Track in Update Set
1271
+ if (pageResult.data) {
1272
+ await this.ensureUpdateSetTracking({
1273
+ sys_id: pageResult.data.sys_id,
1274
+ type: 'Portal Page',
1275
+ name: args.page_id,
1276
+ table: 'sp_page'
1277
+ });
1278
+ }
1279
+ // Build success message
1280
+ const pageUrl = `https://${credentials?.instance}/${args.portal || 'sp'}?id=${args.page_id}`;
1281
+ const designerUrl = `https://${credentials?.instance}/sp_config?id=page_designer&sys_id=${pageSysId}`;
1282
+ return {
1283
+ content: [
1284
+ {
1285
+ type: 'text',
1286
+ text: `✅ Portal page deployed successfully!
1287
+
1288
+ 🎯 **Page Details:**
1289
+ - Page ID: ${args.page_id}
1290
+ - Title: ${args.title}
1291
+ - Sys ID: ${pageSysId}
1292
+ - Portal: ${args.portal === 'esc' ? 'Employee Service Center' : 'Service Portal'}
1293
+ - Layout: ${args.layout || 'single_column'}
1294
+
1295
+ ${widgetInstances.length > 0 ? `📦 **Widget Instances Created:**
1296
+ ${widgetInstances.map((instance, i) => `${i + 1}. Widget: ${instance.widget} (Instance: ${instance.sys_id})`).join('\n')}
1297
+ ` : '📦 **No widgets added** - Page created empty'}
1298
+
1299
+ 📦 **Update Set:**
1300
+ - Name: ${updateSetName}
1301
+ - ID: ${updateSetId}
1302
+ - Status: ✅ Tracked
1303
+
1304
+ 🔗 **Direct Links:**
1305
+ - View Page: ${pageUrl}
1306
+ - Page Designer: ${designerUrl}
1307
+ - Service Portal Config: https://${credentials?.instance}/sp_config?id=designer
1308
+
1309
+ 📝 **Next Steps:**
1310
+ 1. ${widgetInstances.length === 0 ? 'Add widgets to the page using Page Designer' : 'Configure widget instance options if needed'}
1311
+ 2. Adjust page layout and styling
1312
+ 3. Set page permissions if needed
1313
+ 4. Test the page in different portal themes
1314
+ 5. Add the page to portal menus
1315
+
1316
+ 💡 **Success!** Your portal page is ready for use. ${widgetInstances.length > 0 ? 'The widget has been automatically placed on the page.' : 'Use Page Designer to add widgets.'}`
1317
+ },
1318
+ ],
1319
+ };
1320
+ }
1321
+ catch (error) {
1322
+ const enhancedError = `🚨 Portal Page Deployment Failed
1323
+
1324
+ 📍 Error: ${error instanceof Error ? error.message : String(error)}
1325
+
1326
+ 🔧 Troubleshooting Steps:
1327
+ 1. Check authentication: snow_auth_diagnostics()
1328
+ 2. Verify portal permissions (sp_admin or sp_portal_manager role)
1329
+ 3. Check if the widget exists: snow_find_artifact
1330
+ 4. Verify Update Set: snow_update_set_current()
1331
+
1332
+ 💡 Alternative Approaches:
1333
+ • Deploy widget first: snow_deploy({ type: 'widget', ... })
1334
+ • Use manual creation in Page Designer
1335
+ • Check portal configuration
1336
+
1337
+ 📚 Documentation: See PORTAL-PAGE-ENHANCEMENT.md for details`;
1338
+ throw new Error(enhancedError);
1339
+ }
1340
+ }
1341
+ /**
1342
+ * Generate manual steps for portal page creation
1343
+ */
1344
+ generatePortalPageManualSteps(args, error, updateSetName, updateSetId) {
1345
+ const credentials = this.oauth.loadCredentials();
1346
+ const instance = credentials?.then(c => c?.instance) || 'your-instance';
1347
+ return {
1348
+ content: [{
1349
+ type: 'text',
1350
+ text: `⚠️ **Automatic Portal Page Deployment Failed - Manual Steps Generated**
1351
+
1352
+ 🚨 **Error**: ${error instanceof Error ? error.message : String(error)}
1353
+
1354
+ 📦 **Update Set Ready**: ${updateSetName} (${updateSetId})
1355
+ ✅ Manual changes will be automatically tracked in this Update Set.
1356
+
1357
+ 🔧 **Manual Portal Page Creation Steps:**
1358
+
1359
+ 1. **Navigate to Service Portal Configuration**
1360
+ 🔗 URL: https://${instance}/sp_config?id=designer
1361
+
1362
+ 2. **Create New Page**
1363
+ - Click "Pages" in the left menu
1364
+ - Click "New" button
1365
+ - Fill in:
1366
+ - **Page ID**: ${args.page_id}
1367
+ - **Title**: ${args.title}
1368
+ - **Short Description**: ${args.description || 'Portal page with widget'}
1369
+
1370
+ 3. **Configure Page Layout**
1371
+ - Click "Open in Designer" after creating the page
1372
+ - Select layout type: ${args.layout === 'multi_column' ? 'Multi-column' : args.layout === 'with_sidebar' ? 'With Sidebar' : 'Single Column'}
1373
+
1374
+ 4. **Add Widget to Page** ${args.widget_name ? `(Widget: ${args.widget_name})` : ''}
1375
+ - In Page Designer, click "+" to add a widget
1376
+ - Search for: ${args.widget_name || 'your widget'}
1377
+ - Drag widget to desired location
1378
+ - Configure widget instance options if needed
1379
+
1380
+ 5. **Add Custom CSS** (if provided)
1381
+ ${args.page_css ? `\`\`\`css
1382
+ ${args.page_css}
1383
+ \`\`\`` : ' - No custom CSS provided'}
1384
+
1385
+ 6. **Configure Page Settings**
1386
+ - Set "Public" to true for public access
1387
+ - Configure roles if restricted access needed
1388
+ - Set portal: ${args.portal === 'esc' ? 'Employee Service Center' : 'Service Portal'}
1389
+
1390
+ 7. **Save and Test**
1391
+ - Click "Save" in Page Designer
1392
+ - Test URL: https://${instance}/${args.portal || 'sp'}?id=${args.page_id}
1393
+
1394
+ 8. **Add to Portal Menu** (optional)
1395
+ - Navigate to Service Portal > Menus
1396
+ - Add menu item pointing to your new page
1397
+
1398
+ 💡 **Tips:**
1399
+ - Ensure your widget exists before adding to page
1400
+ - Use Preview mode to test before publishing
1401
+ - Check browser console for any client-side errors
1402
+ - Verify widget permissions match page permissions
1403
+
1404
+ 📋 **Widget Configuration for Page:**
1405
+ ${args.widgets && args.widgets.length > 0 ? args.widgets.map((w, i) => `
1406
+ Widget ${i + 1}:
1407
+ - Column: ${w.column || 1}
1408
+ - Size: ${w.size || 12} (of 12 columns)
1409
+ - Order: ${w.order || 100}`).join('\n') : ' - No specific widget configuration provided'}`
1410
+ }]
1411
+ };
1412
+ }
1413
+ /**
1414
+ * Generate CSS for portal page based on requirements
1415
+ */
1416
+ generatePortalPageCSS(instruction) {
1417
+ const lower = instruction.toLowerCase();
1418
+ // Base portal page styles
1419
+ let css = `
1420
+ /* Portal Page Custom Styles */
1421
+ .page-container {
1422
+ padding: 20px 0;
1423
+ }
1424
+
1425
+ .page-header {
1426
+ margin-bottom: 30px;
1427
+ padding-bottom: 20px;
1428
+ border-bottom: 1px solid #e0e0e0;
1429
+ }
1430
+
1431
+ .page-title {
1432
+ font-size: 28px;
1433
+ font-weight: 300;
1434
+ color: #333;
1435
+ margin: 0;
1436
+ }
1437
+ `;
1438
+ // Dashboard-specific styles
1439
+ if (lower.includes('dashboard')) {
1440
+ css += `
1441
+ /* Dashboard Layout */
1442
+ .dashboard-container {
1443
+ display: flex;
1444
+ flex-wrap: wrap;
1445
+ gap: 20px;
1446
+ margin: -10px;
1447
+ }
1448
+
1449
+ .dashboard-widget {
1450
+ flex: 1 1 calc(50% - 20px);
1451
+ min-width: 300px;
1452
+ padding: 10px;
1453
+ }
1454
+
1455
+ @media (max-width: 768px) {
1456
+ .dashboard-widget {
1457
+ flex: 1 1 100%;
1458
+ }
1459
+ }
1460
+
1461
+ .metric-widget {
1462
+ background: #fff;
1463
+ border-radius: 8px;
1464
+ box-shadow: 0 2px 4px rgba(0,0,0,0.1);
1465
+ padding: 20px;
1466
+ transition: transform 0.2s;
1467
+ }
1468
+
1469
+ .metric-widget:hover {
1470
+ transform: translateY(-2px);
1471
+ box-shadow: 0 4px 8px rgba(0,0,0,0.15);
1472
+ }
1473
+ `;
1474
+ }
1475
+ // Multi-column layout styles
1476
+ if (lower.includes('multi') || lower.includes('column')) {
1477
+ css += `
1478
+ /* Multi-Column Layout */
1479
+ .multi-column-container {
1480
+ display: grid;
1481
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
1482
+ gap: 20px;
1483
+ margin-top: 20px;
1484
+ }
1485
+
1486
+ .column-widget {
1487
+ background: #fff;
1488
+ padding: 15px;
1489
+ border-radius: 4px;
1490
+ box-shadow: 0 1px 3px rgba(0,0,0,0.1);
1491
+ }
1492
+ `;
1493
+ }
1494
+ // Sidebar layout styles
1495
+ if (lower.includes('sidebar')) {
1496
+ css += `
1497
+ /* Sidebar Layout */
1498
+ .with-sidebar {
1499
+ display: flex;
1500
+ gap: 20px;
1501
+ margin-top: 20px;
1502
+ }
1503
+
1504
+ .main-content {
1505
+ flex: 1;
1506
+ min-width: 0;
1507
+ }
1508
+
1509
+ .sidebar {
1510
+ flex: 0 0 300px;
1511
+ background: #f8f9fa;
1512
+ padding: 20px;
1513
+ border-radius: 4px;
1514
+ }
1515
+
1516
+ @media (max-width: 768px) {
1517
+ .with-sidebar {
1518
+ flex-direction: column;
1519
+ }
1520
+
1521
+ .sidebar {
1522
+ flex: 1 1 auto;
1523
+ }
1524
+ }
1525
+ `;
1526
+ }
1527
+ // Responsive utilities
1528
+ css += `
1529
+ /* Responsive Utilities */
1530
+ @media (max-width: 576px) {
1531
+ .page-title {
1532
+ font-size: 24px;
1533
+ }
1534
+
1535
+ .page-container {
1536
+ padding: 10px;
1537
+ }
1538
+ }
1539
+
1540
+ /* Widget Container Overrides */
1541
+ .sp-widget {
1542
+ margin-bottom: 20px;
1543
+ }
1544
+
1545
+ .sp-widget:last-child {
1546
+ margin-bottom: 0;
1547
+ }
1548
+
1549
+ /* Custom widget spacing */
1550
+ .widget-wrapper {
1551
+ padding: 15px;
1552
+ background: #fff;
1553
+ border-radius: 4px;
1554
+ margin-bottom: 20px;
1555
+ }
1556
+ `;
1557
+ return css;
1558
+ }
1113
1559
  async deployFlow(args) {
1114
1560
  try {
1115
1561
  // Check authentication first
@@ -1165,7 +1611,7 @@ Use \`snow_deployment_debug\` for more information about this session.`,
1165
1611
  validationText.includes('Auto-converted "actions" to "activities"') ||
1166
1612
  validationText.includes('Smart Auto-Corrections Applied')) {
1167
1613
  // Re-parse the corrected definition from the validation process
1168
- let tempDef = typeof args.flow_definition === 'string' ? JSON.parse(args.flow_definition) : args.flow_definition;
1614
+ const tempDef = typeof args.flow_definition === 'string' ? JSON.parse(args.flow_definition) : args.flow_definition;
1169
1615
  if (tempDef.steps && !tempDef.activities) {
1170
1616
  tempDef.activities = tempDef.steps;
1171
1617
  delete tempDef.steps;
@@ -2597,8 +3043,8 @@ Run snow_deployment_debug for basic session info or check the logs for more deta
2597
3043
  // Generate flow logic (connections between actions)
2598
3044
  for (let i = 0; i < actionIds.length; i++) {
2599
3045
  const logicId = this.generateGUID();
2600
- let fromId = i === 0 ? triggerId : actionIds[i - 1];
2601
- let toId = actionIds[i];
3046
+ const fromId = i === 0 ? triggerId : actionIds[i - 1];
3047
+ const toId = actionIds[i];
2602
3048
  const logicXml = this.generateFlowLogicXML(logicId, flowId, fromId, toId, i, timestamp);
2603
3049
  flowLogics.push({ id: logicId, xml: logicXml });
2604
3050
  }
@@ -3144,7 +3590,7 @@ Use \`snow_widget_test\` to run automated tests with different scenarios.`,
3144
3590
  testResults.push(result);
3145
3591
  }
3146
3592
  }
3147
- // Code coverage analysis if requested
3593
+ // Code coverage _analysis if requested
3148
3594
  let coverageReport = '';
3149
3595
  if (args.coverage !== false) {
3150
3596
  const coverage = this.analyzeCodeCoverage(widget);
@@ -4529,127 +4975,49 @@ Use individual deployment tools like \`snow_deploy_${args.type}\` with manual co
4529
4975
  * Process natural language instruction into deployment configuration
4530
4976
  */
4531
4977
  async processNaturalLanguageInstruction(type, instruction) {
4532
- // For flows, create a proper flow structure
4533
- if (type === 'flow') {
4534
- // Extract flow name from instruction
4535
- const flowName = this.extractNameFromInstruction(instruction);
4536
- // Create a basic flow definition based on the instruction
4537
- // This is a simplified version - in production, this would call the flow composer
4978
+ // For portal pages, process the instruction to extract requirements
4979
+ if (type === 'portal_page') {
4538
4980
  const lowerInstruction = instruction.toLowerCase();
4539
- // Determine trigger type
4540
- let triggerType = 'manual';
4541
- let triggerTable = '';
4542
- if (lowerInstruction.includes('new service catalog request') ||
4543
- lowerInstruction.includes('new catalog request')) {
4544
- triggerType = 'record_created';
4545
- triggerTable = 'sc_request';
4546
- }
4547
- else if (lowerInstruction.includes('new incident')) {
4548
- triggerType = 'record_created';
4549
- triggerTable = 'incident';
4550
- }
4551
- else if (lowerInstruction.includes('updated') || lowerInstruction.includes('changes')) {
4552
- triggerType = 'record_updated';
4553
- }
4554
- // Create activities based on instruction
4555
- const activities = [];
4556
- let activityId = 1;
4557
- // Check for approval requirement
4558
- if (lowerInstruction.includes('approval') || lowerInstruction.includes('approve')) {
4559
- // Check for condition
4560
- if (lowerInstruction.includes('if') &&
4561
- (lowerInstruction.includes('monitor') || lowerInstruction.includes('display') ||
4562
- lowerInstruction.includes('screen') || lowerInstruction.includes('lcd'))) {
4563
- // Add condition activity
4564
- activities.push({
4565
- id: `activity_${activityId++}`,
4566
- name: 'Check Item Type',
4567
- type: 'condition',
4568
- condition: 'current.cat_item.name.toLowerCase().includes("monitor") || current.cat_item.name.toLowerCase().includes("display") || current.cat_item.name.toLowerCase().includes("screen") || current.cat_item.name.toLowerCase().includes("lcd")',
4569
- outputs: {
4570
- condition_met: true
4571
- }
4572
- });
4573
- }
4574
- // Add approval activity
4575
- activities.push({
4576
- id: `activity_${activityId++}`,
4577
- name: 'Request Approval',
4578
- type: 'approval',
4579
- approval_type: 'user',
4580
- approvers: lowerInstruction.includes('admin') ? 'admin' : 'assignment_group.manager',
4581
- inputs: {
4582
- record: '${trigger.current}',
4583
- approvers: lowerInstruction.includes('admin') ? 'admin' : 'assignment_group.manager'
4584
- },
4585
- outputs: {
4586
- approval_state: '${approval.state}',
4587
- approval_comments: '${approval.comments}'
4588
- }
4589
- });
4590
- // Add wait for approval if mentioned
4591
- if (lowerInstruction.includes('wait for approval')) {
4592
- activities.push({
4593
- id: `activity_${activityId++}`,
4594
- name: 'Wait for Approval',
4595
- type: 'wait',
4596
- wait_type: 'approval',
4597
- inputs: {
4598
- approval_record: '${activity_' + (activityId - 2) + '.approval_id}'
4599
- }
4600
- });
4601
- }
4602
- }
4603
- // Add update status if mentioned
4604
- if (lowerInstruction.includes('update') && lowerInstruction.includes('status')) {
4605
- activities.push({
4606
- id: `activity_${activityId++}`,
4607
- name: 'Update Request Status',
4608
- type: 'update_record',
4609
- table: triggerTable || 'sc_request',
4610
- inputs: {
4611
- record: '${trigger.current}',
4612
- fields: {
4613
- state: '${activity_' + (activityId - 2) + '.approval_state === "approved" ? "approved" : "rejected"}'
4614
- }
4615
- }
4616
- });
4617
- }
4618
- // Create flow definition
4619
- const flowDefinition = {
4620
- name: flowName,
4621
- description: instruction,
4622
- table: triggerTable,
4623
- trigger: {
4624
- type: triggerType,
4625
- table: triggerTable,
4626
- condition: ''
4627
- },
4628
- activities: activities.length > 0 ? activities : [{
4629
- id: 'activity_1',
4630
- name: 'Log Action',
4631
- type: 'log',
4632
- message: 'Flow executed for: ' + instruction,
4633
- level: 'info'
4634
- }],
4635
- connections: []
4636
- };
4637
- // Generate connections between activities
4638
- for (let i = 0; i < activities.length - 1; i++) {
4639
- flowDefinition.connections.push({
4640
- from: activities[i].id,
4641
- to: activities[i + 1].id,
4642
- type: 'always'
4643
- });
4644
- }
4981
+ // Extract widget reference from instruction
4982
+ let widgetName = '';
4983
+ let widgetSysId = '';
4984
+ // Look for widget references
4985
+ const widgetMatch = instruction.match(/widget\s+(?:called\s+)?['"]*([^'"]+)['"]*|([^\s]+)\s+widget/i);
4986
+ if (widgetMatch) {
4987
+ widgetName = widgetMatch[1] || widgetMatch[2];
4988
+ }
4989
+ // Extract page details
4990
+ const pageName = this.extractNameFromInstruction(instruction);
4991
+ const pageTitle = pageName.replace(/_/g, ' ').replace(/\b\w/g, l => l.toUpperCase());
4992
+ // Determine layout configuration
4993
+ let layout = 'single_column'; // default
4994
+ if (lowerInstruction.includes('dashboard') || lowerInstruction.includes('multi')) {
4995
+ layout = 'multi_column';
4996
+ }
4997
+ else if (lowerInstruction.includes('sidebar') || lowerInstruction.includes('side')) {
4998
+ layout = 'with_sidebar';
4999
+ }
5000
+ // Determine portal
5001
+ let portal = 'sp'; // default Service Portal
5002
+ if (lowerInstruction.includes('employee') || lowerInstruction.includes('esc')) {
5003
+ portal = 'esc'; // Employee Service Center
5004
+ }
5005
+ // Generate page configuration
4645
5006
  return {
4646
- name: flowName,
4647
- description: instruction,
4648
- flow_definition: flowDefinition,
4649
- table: triggerTable,
4650
- trigger_type: triggerType,
4651
- condition: '',
4652
- active: true
5007
+ page_id: pageName,
5008
+ title: pageTitle,
5009
+ description: `Portal page for ${widgetName || 'widget'}`,
5010
+ widget_name: widgetName,
5011
+ widget_sys_id: widgetSysId,
5012
+ layout: layout,
5013
+ portal: portal,
5014
+ page_css: this.generatePortalPageCSS(instruction),
5015
+ widgets: [{
5016
+ widget: widgetName,
5017
+ column: 1,
5018
+ order: 100,
5019
+ size: layout === 'multi_column' ? 6 : 12
5020
+ }]
4653
5021
  };
4654
5022
  }
4655
5023
  // For widgets, delegate to widget composer
@@ -4677,7 +5045,7 @@ Use individual deployment tools like \`snow_deploy_${args.type}\` with manual co
4677
5045
  extractNameFromInstruction(instruction) {
4678
5046
  // Simple name extraction - could be enhanced with NLP
4679
5047
  const words = instruction.toLowerCase().split(/\s+/);
4680
- let name = words.filter(word => word.length > 2 &&
5048
+ const name = words.filter(word => word.length > 2 &&
4681
5049
  !['the', 'and', 'for', 'with', 'that', 'will', 'can', 'should'].includes(word)).slice(0, 3).join('_');
4682
5050
  return name || 'auto_generated_artifact';
4683
5051
  }
@@ -5404,8 +5772,8 @@ Use individual deployment tools like \`snow_deploy_${args.type}\` with manual co
5404
5772
  switch (type) {
5405
5773
  case 'widget':
5406
5774
  return await this.deployWidget(scopedConfig);
5407
- case 'flow':
5408
- return await this.deployFlow(scopedConfig);
5775
+ case 'portal_page':
5776
+ return await this.deployPortalPage(scopedConfig);
5409
5777
  case 'application':
5410
5778
  return await this.deployApplication(scopedConfig);
5411
5779
  case 'xml_update_set':
@@ -5708,7 +6076,7 @@ Use individual deployment tools like \`snow_deploy_${args.type}\` with manual co
5708
6076
  ]);
5709
6077
  let mainWidget = null;
5710
6078
  let searchResults = null;
5711
- let verificationDetails = {
6079
+ const verificationDetails = {
5712
6080
  attempt,
5713
6081
  mainWidgetCheck: 'pending',
5714
6082
  widgetSearchCheck: 'pending',
@@ -6254,3 +6622,4 @@ server.start().catch((error) => {
6254
6622
  console.error('Failed to start ServiceNow Deployment MCP:', error);
6255
6623
  process.exit(1);
6256
6624
  });
6625
+ //# sourceMappingURL=servicenow-deployment-mcp.js.map