snow-flow 1.1.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 (240) hide show
  1. package/.env.example +49 -0
  2. package/.mcp.json +106 -0
  3. package/.mcp.json.template +106 -0
  4. package/LICENSE +21 -0
  5. package/README.md +236 -0
  6. package/bin/snow-flow +4 -0
  7. package/bin/snow-flow.js +3 -0
  8. package/claude-flow +79 -0
  9. package/claude-flow.bat +18 -0
  10. package/claude-flow.config.json +20 -0
  11. package/claude-flow.ps1 +24 -0
  12. package/dist/agents/app-creator.agent.d.ts +55 -0
  13. package/dist/agents/app-creator.agent.d.ts.map +1 -0
  14. package/dist/agents/app-creator.agent.js +1292 -0
  15. package/dist/agents/app-creator.agent.js.map +1 -0
  16. package/dist/agents/base-snow-agent.d.ts +63 -0
  17. package/dist/agents/base-snow-agent.d.ts.map +1 -0
  18. package/dist/agents/base-snow-agent.js +296 -0
  19. package/dist/agents/base-snow-agent.js.map +1 -0
  20. package/dist/agents/script-generator.agent.d.ts +32 -0
  21. package/dist/agents/script-generator.agent.d.ts.map +1 -0
  22. package/dist/agents/script-generator.agent.js +772 -0
  23. package/dist/agents/script-generator.agent.js.map +1 -0
  24. package/dist/agents/ui-builder.agent.d.ts +50 -0
  25. package/dist/agents/ui-builder.agent.d.ts.map +1 -0
  26. package/dist/agents/ui-builder.agent.js +1539 -0
  27. package/dist/agents/ui-builder.agent.js.map +1 -0
  28. package/dist/agents/widget-builder.agent.d.ts +32 -0
  29. package/dist/agents/widget-builder.agent.d.ts.map +1 -0
  30. package/dist/agents/widget-builder.agent.js +439 -0
  31. package/dist/agents/widget-builder.agent.js.map +1 -0
  32. package/dist/agents/workflow-designer.agent.d.ts +31 -0
  33. package/dist/agents/workflow-designer.agent.d.ts.map +1 -0
  34. package/dist/agents/workflow-designer.agent.js +583 -0
  35. package/dist/agents/workflow-designer.agent.js.map +1 -0
  36. package/dist/api/error-handling.d.ts +214 -0
  37. package/dist/api/error-handling.d.ts.map +1 -0
  38. package/dist/api/error-handling.js +594 -0
  39. package/dist/api/error-handling.js.map +1 -0
  40. package/dist/api/flow-designer-api.d.ts +167 -0
  41. package/dist/api/flow-designer-api.d.ts.map +1 -0
  42. package/dist/api/flow-designer-api.js +555 -0
  43. package/dist/api/flow-designer-api.js.map +1 -0
  44. package/dist/api/natural-language-mapper.d.ts +126 -0
  45. package/dist/api/natural-language-mapper.d.ts.map +1 -0
  46. package/dist/api/natural-language-mapper.js +498 -0
  47. package/dist/api/natural-language-mapper.js.map +1 -0
  48. package/dist/api/performance-optimizer.d.ts +240 -0
  49. package/dist/api/performance-optimizer.d.ts.map +1 -0
  50. package/dist/api/performance-optimizer.js +701 -0
  51. package/dist/api/performance-optimizer.js.map +1 -0
  52. package/dist/api/transaction-manager.d.ts +189 -0
  53. package/dist/api/transaction-manager.d.ts.map +1 -0
  54. package/dist/api/transaction-manager.js +576 -0
  55. package/dist/api/transaction-manager.js.map +1 -0
  56. package/dist/cli/deploy-artifact.d.ts +7 -0
  57. package/dist/cli/deploy-artifact.d.ts.map +1 -0
  58. package/dist/cli/deploy-artifact.js +279 -0
  59. package/dist/cli/deploy-artifact.js.map +1 -0
  60. package/dist/cli.d.ts +6 -0
  61. package/dist/cli.d.ts.map +1 -0
  62. package/dist/cli.js +2057 -0
  63. package/dist/cli.js.map +1 -0
  64. package/dist/index.d.ts +10 -0
  65. package/dist/index.d.ts.map +1 -0
  66. package/dist/index.js +35 -0
  67. package/dist/index.js.map +1 -0
  68. package/dist/managers/scope-manager.d.ts +75 -0
  69. package/dist/managers/scope-manager.d.ts.map +1 -0
  70. package/dist/managers/scope-manager.js +448 -0
  71. package/dist/managers/scope-manager.js.map +1 -0
  72. package/dist/mcp/mcp-wrapper.d.ts +8 -0
  73. package/dist/mcp/mcp-wrapper.d.ts.map +1 -0
  74. package/dist/mcp/mcp-wrapper.js +77 -0
  75. package/dist/mcp/mcp-wrapper.js.map +1 -0
  76. package/dist/mcp/servicenow-automation-mcp.d.ts +8 -0
  77. package/dist/mcp/servicenow-automation-mcp.d.ts.map +1 -0
  78. package/dist/mcp/servicenow-automation-mcp.js +683 -0
  79. package/dist/mcp/servicenow-automation-mcp.js.map +1 -0
  80. package/dist/mcp/servicenow-deployment-mcp.d.ts +7 -0
  81. package/dist/mcp/servicenow-deployment-mcp.d.ts.map +1 -0
  82. package/dist/mcp/servicenow-deployment-mcp.js +972 -0
  83. package/dist/mcp/servicenow-deployment-mcp.js.map +1 -0
  84. package/dist/mcp/servicenow-flow-composer-mcp.d.ts +7 -0
  85. package/dist/mcp/servicenow-flow-composer-mcp.d.ts.map +1 -0
  86. package/dist/mcp/servicenow-flow-composer-mcp.js +1121 -0
  87. package/dist/mcp/servicenow-flow-composer-mcp.js.map +1 -0
  88. package/dist/mcp/servicenow-graph-memory-mcp.d.ts +7 -0
  89. package/dist/mcp/servicenow-graph-memory-mcp.d.ts.map +1 -0
  90. package/dist/mcp/servicenow-graph-memory-mcp.js +703 -0
  91. package/dist/mcp/servicenow-graph-memory-mcp.js.map +1 -0
  92. package/dist/mcp/servicenow-integration-mcp.d.ts +8 -0
  93. package/dist/mcp/servicenow-integration-mcp.d.ts.map +1 -0
  94. package/dist/mcp/servicenow-integration-mcp.js +689 -0
  95. package/dist/mcp/servicenow-integration-mcp.js.map +1 -0
  96. package/dist/mcp/servicenow-intelligent-mcp.d.ts +7 -0
  97. package/dist/mcp/servicenow-intelligent-mcp.d.ts.map +1 -0
  98. package/dist/mcp/servicenow-intelligent-mcp.js +1138 -0
  99. package/dist/mcp/servicenow-intelligent-mcp.js.map +1 -0
  100. package/dist/mcp/servicenow-mcp-server.d.ts +37 -0
  101. package/dist/mcp/servicenow-mcp-server.d.ts.map +1 -0
  102. package/dist/mcp/servicenow-mcp-server.js +648 -0
  103. package/dist/mcp/servicenow-mcp-server.js.map +1 -0
  104. package/dist/mcp/servicenow-operations-mcp.d.ts +15 -0
  105. package/dist/mcp/servicenow-operations-mcp.d.ts.map +1 -0
  106. package/dist/mcp/servicenow-operations-mcp.js +1287 -0
  107. package/dist/mcp/servicenow-operations-mcp.js.map +1 -0
  108. package/dist/mcp/servicenow-platform-development-mcp.d.ts +8 -0
  109. package/dist/mcp/servicenow-platform-development-mcp.d.ts.map +1 -0
  110. package/dist/mcp/servicenow-platform-development-mcp.js +557 -0
  111. package/dist/mcp/servicenow-platform-development-mcp.js.map +1 -0
  112. package/dist/mcp/servicenow-progressive-indexer.d.ts +79 -0
  113. package/dist/mcp/servicenow-progressive-indexer.d.ts.map +1 -0
  114. package/dist/mcp/servicenow-progressive-indexer.js +320 -0
  115. package/dist/mcp/servicenow-progressive-indexer.js.map +1 -0
  116. package/dist/mcp/servicenow-reporting-analytics-mcp.d.ts +8 -0
  117. package/dist/mcp/servicenow-reporting-analytics-mcp.d.ts.map +1 -0
  118. package/dist/mcp/servicenow-reporting-analytics-mcp.js +888 -0
  119. package/dist/mcp/servicenow-reporting-analytics-mcp.js.map +1 -0
  120. package/dist/mcp/servicenow-security-compliance-mcp.d.ts +8 -0
  121. package/dist/mcp/servicenow-security-compliance-mcp.d.ts.map +1 -0
  122. package/dist/mcp/servicenow-security-compliance-mcp.js +812 -0
  123. package/dist/mcp/servicenow-security-compliance-mcp.js.map +1 -0
  124. package/dist/mcp/servicenow-update-set-mcp.d.ts +7 -0
  125. package/dist/mcp/servicenow-update-set-mcp.d.ts.map +1 -0
  126. package/dist/mcp/servicenow-update-set-mcp.js +599 -0
  127. package/dist/mcp/servicenow-update-set-mcp.js.map +1 -0
  128. package/dist/mcp/start-all-mcp-servers.d.ts +6 -0
  129. package/dist/mcp/start-all-mcp-servers.d.ts.map +1 -0
  130. package/dist/mcp/start-all-mcp-servers.js +65 -0
  131. package/dist/mcp/start-all-mcp-servers.js.map +1 -0
  132. package/dist/mcp/start-servicenow-mcp.d.ts +7 -0
  133. package/dist/mcp/start-servicenow-mcp.d.ts.map +1 -0
  134. package/dist/mcp/start-servicenow-mcp.js +64 -0
  135. package/dist/mcp/start-servicenow-mcp.js.map +1 -0
  136. package/dist/mcp/test-simple-mcp.d.ts +6 -0
  137. package/dist/mcp/test-simple-mcp.d.ts.map +1 -0
  138. package/dist/mcp/test-simple-mcp.js +64 -0
  139. package/dist/mcp/test-simple-mcp.js.map +1 -0
  140. package/dist/orchestrator/flow-composer.d.ts +269 -0
  141. package/dist/orchestrator/flow-composer.d.ts.map +1 -0
  142. package/dist/orchestrator/flow-composer.js +2221 -0
  143. package/dist/orchestrator/flow-composer.js.map +1 -0
  144. package/dist/orchestrator/flow-pattern-templates.d.ts +260 -0
  145. package/dist/orchestrator/flow-pattern-templates.d.ts.map +1 -0
  146. package/dist/orchestrator/flow-pattern-templates.js +906 -0
  147. package/dist/orchestrator/flow-pattern-templates.js.map +1 -0
  148. package/dist/orchestrator/flow-subflow-decision-engine.d.ts +202 -0
  149. package/dist/orchestrator/flow-subflow-decision-engine.d.ts.map +1 -0
  150. package/dist/orchestrator/flow-subflow-decision-engine.js +769 -0
  151. package/dist/orchestrator/flow-subflow-decision-engine.js.map +1 -0
  152. package/dist/orchestrator/flow-validation-engine.d.ts +145 -0
  153. package/dist/orchestrator/flow-validation-engine.d.ts.map +1 -0
  154. package/dist/orchestrator/flow-validation-engine.js +663 -0
  155. package/dist/orchestrator/flow-validation-engine.js.map +1 -0
  156. package/dist/orchestrator/snow-orchestrator.d.ts +49 -0
  157. package/dist/orchestrator/snow-orchestrator.d.ts.map +1 -0
  158. package/dist/orchestrator/snow-orchestrator.js +235 -0
  159. package/dist/orchestrator/snow-orchestrator.js.map +1 -0
  160. package/dist/orchestrator/subflow-creation-handler.d.ts +230 -0
  161. package/dist/orchestrator/subflow-creation-handler.d.ts.map +1 -0
  162. package/dist/orchestrator/subflow-creation-handler.js +791 -0
  163. package/dist/orchestrator/subflow-creation-handler.js.map +1 -0
  164. package/dist/strategies/global-scope-strategy.d.ts +123 -0
  165. package/dist/strategies/global-scope-strategy.d.ts.map +1 -0
  166. package/dist/strategies/global-scope-strategy.js +585 -0
  167. package/dist/strategies/global-scope-strategy.js.map +1 -0
  168. package/dist/types/index.d.ts +138 -0
  169. package/dist/types/index.d.ts.map +1 -0
  170. package/dist/types/index.js +4 -0
  171. package/dist/types/index.js.map +1 -0
  172. package/dist/types/servicenow.types.d.ts +260 -0
  173. package/dist/types/servicenow.types.d.ts.map +1 -0
  174. package/dist/types/servicenow.types.js +3 -0
  175. package/dist/types/servicenow.types.js.map +1 -0
  176. package/dist/types/snow-flow.types.d.ts +114 -0
  177. package/dist/types/snow-flow.types.d.ts.map +1 -0
  178. package/dist/types/snow-flow.types.js +3 -0
  179. package/dist/types/snow-flow.types.js.map +1 -0
  180. package/dist/utils/action-type-cache.d.ts +66 -0
  181. package/dist/utils/action-type-cache.d.ts.map +1 -0
  182. package/dist/utils/action-type-cache.js +237 -0
  183. package/dist/utils/action-type-cache.js.map +1 -0
  184. package/dist/utils/agent-detector.d.ts +35 -0
  185. package/dist/utils/agent-detector.d.ts.map +1 -0
  186. package/dist/utils/agent-detector.js +353 -0
  187. package/dist/utils/agent-detector.js.map +1 -0
  188. package/dist/utils/flow-api-discovery.d.ts +151 -0
  189. package/dist/utils/flow-api-discovery.d.ts.map +1 -0
  190. package/dist/utils/flow-api-discovery.js +440 -0
  191. package/dist/utils/flow-api-discovery.js.map +1 -0
  192. package/dist/utils/flow-xml-generator.d.ts +41 -0
  193. package/dist/utils/flow-xml-generator.d.ts.map +1 -0
  194. package/dist/utils/flow-xml-generator.js +258 -0
  195. package/dist/utils/flow-xml-generator.js.map +1 -0
  196. package/dist/utils/logger.d.ts +13 -0
  197. package/dist/utils/logger.d.ts.map +1 -0
  198. package/dist/utils/logger.js +51 -0
  199. package/dist/utils/logger.js.map +1 -0
  200. package/dist/utils/mcp-auth-middleware.d.ts +58 -0
  201. package/dist/utils/mcp-auth-middleware.d.ts.map +1 -0
  202. package/dist/utils/mcp-auth-middleware.js +227 -0
  203. package/dist/utils/mcp-auth-middleware.js.map +1 -0
  204. package/dist/utils/mcp-config-manager.d.ts +126 -0
  205. package/dist/utils/mcp-config-manager.d.ts.map +1 -0
  206. package/dist/utils/mcp-config-manager.js +209 -0
  207. package/dist/utils/mcp-config-manager.js.map +1 -0
  208. package/dist/utils/mcp-server-manager.d.ts +91 -0
  209. package/dist/utils/mcp-server-manager.d.ts.map +1 -0
  210. package/dist/utils/mcp-server-manager.js +338 -0
  211. package/dist/utils/mcp-server-manager.js.map +1 -0
  212. package/dist/utils/scope-utils.d.ts +72 -0
  213. package/dist/utils/scope-utils.d.ts.map +1 -0
  214. package/dist/utils/scope-utils.js +386 -0
  215. package/dist/utils/scope-utils.js.map +1 -0
  216. package/dist/utils/servicenow-client.d.ts +233 -0
  217. package/dist/utils/servicenow-client.d.ts.map +1 -0
  218. package/dist/utils/servicenow-client.js +1465 -0
  219. package/dist/utils/servicenow-client.js.map +1 -0
  220. package/dist/utils/snow-oauth-old.d.ts +65 -0
  221. package/dist/utils/snow-oauth-old.d.ts.map +1 -0
  222. package/dist/utils/snow-oauth-old.js +345 -0
  223. package/dist/utils/snow-oauth-old.js.map +1 -0
  224. package/dist/utils/snow-oauth.d.ts +85 -0
  225. package/dist/utils/snow-oauth.d.ts.map +1 -0
  226. package/dist/utils/snow-oauth.js +512 -0
  227. package/dist/utils/snow-oauth.js.map +1 -0
  228. package/dist/utils/template-engine.d.ts +76 -0
  229. package/dist/utils/template-engine.d.ts.map +1 -0
  230. package/dist/utils/template-engine.js +391 -0
  231. package/dist/utils/template-engine.js.map +1 -0
  232. package/dist/version.d.ts +35 -0
  233. package/dist/version.d.ts.map +1 -0
  234. package/dist/version.js +72 -0
  235. package/dist/version.js.map +1 -0
  236. package/mcp-wrapper.sh +12 -0
  237. package/package.json +77 -0
  238. package/reports/swarm-auto-centralized-1752649029776.json +13 -0
  239. package/scripts/postinstall.js +30 -0
  240. package/scripts/setup-mcp.js +89 -0
@@ -0,0 +1,41 @@
1
+ /**
2
+ * ServiceNow Flow XML Generator
3
+ * Generates proper XML for flows that can be imported via Update Sets
4
+ */
5
+ export interface FlowDefinition {
6
+ name: string;
7
+ description: string;
8
+ table?: string;
9
+ trigger_type?: string;
10
+ condition?: string;
11
+ active?: boolean;
12
+ actions?: FlowAction[];
13
+ }
14
+ export interface FlowAction {
15
+ name: string;
16
+ type: string;
17
+ order: number;
18
+ inputs?: Record<string, any>;
19
+ outputs?: Record<string, any>;
20
+ }
21
+ export declare class FlowXMLGenerator {
22
+ private logger;
23
+ constructor();
24
+ /**
25
+ * Generate complete flow XML for Update Set
26
+ */
27
+ generateFlowXML(flow: FlowDefinition): string;
28
+ /**
29
+ * Generate flow from natural language (simplified version)
30
+ */
31
+ generateFlowFromDescription(description: string): FlowDefinition;
32
+ private extractFlowName;
33
+ private extractActions;
34
+ private sanitizeInternalName;
35
+ private escapeXML;
36
+ private generateSysId;
37
+ private getCurrentTimestamp;
38
+ private getTriggerTypeId;
39
+ private getActionTypeId;
40
+ }
41
+ //# sourceMappingURL=flow-xml-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-xml-generator.d.ts","sourceRoot":"","sources":["../../src/utils/flow-xml-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAS;;IAMvB;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;IAyG7C;;OAEG;IACH,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc;IA+BhE,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,cAAc;IAyDtB,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,eAAe;CAWxB"}
@@ -0,0 +1,258 @@
1
+ "use strict";
2
+ /**
3
+ * ServiceNow Flow XML Generator
4
+ * Generates proper XML for flows that can be imported via Update Sets
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.FlowXMLGenerator = void 0;
8
+ const logger_js_1 = require("./logger.js");
9
+ class FlowXMLGenerator {
10
+ constructor() {
11
+ this.logger = new logger_js_1.Logger('FlowXMLGenerator');
12
+ }
13
+ /**
14
+ * Generate complete flow XML for Update Set
15
+ */
16
+ generateFlowXML(flow) {
17
+ const flowId = this.generateSysId();
18
+ const timestamp = this.getCurrentTimestamp();
19
+ const internalName = this.sanitizeInternalName(flow.name);
20
+ // Generate the main flow record
21
+ let xml = `<?xml version="1.0" encoding="UTF-8"?>
22
+ <record_update sys_domain="global" table="sys_hub_flow">
23
+ <sys_hub_flow action="INSERT_OR_UPDATE">
24
+ <access>public</access>
25
+ <active>${flow.active !== false ? 'true' : 'false'}</active>
26
+ <category>custom</category>
27
+ <description>${this.escapeXML(flow.description || flow.name)}</description>
28
+ <internal_name>${internalName}</internal_name>
29
+ <name>${this.escapeXML(flow.name)}</name>
30
+ <run_as>user_who_triggers</run_as>
31
+ <status>published</status>
32
+ <sys_class_name>sys_hub_flow</sys_class_name>
33
+ <sys_created_by>admin</sys_created_by>
34
+ <sys_created_on>${timestamp}</sys_created_on>
35
+ <sys_id>${flowId}</sys_id>
36
+ <sys_mod_count>0</sys_mod_count>
37
+ <sys_scope display_value="Global">global</sys_scope>
38
+ <type>flow</type>
39
+ </sys_hub_flow>`;
40
+ // Add trigger instance if specified
41
+ if (flow.trigger_type) {
42
+ const triggerId = this.generateSysId();
43
+ const triggerLogicId = this.generateSysId();
44
+ xml += `
45
+
46
+ <!-- Flow Trigger Instance -->
47
+ <sys_hub_trigger_instance action="INSERT_OR_UPDATE">
48
+ <active>true</active>
49
+ <flow>${flowId}</flow>
50
+ <sys_id>${triggerId}</sys_id>
51
+ <table_name>${flow.table || 'sc_request'}</table_name>
52
+ <trigger_type>${this.getTriggerTypeId(flow.trigger_type)}</trigger_type>
53
+ ${flow.condition ? `<condition>${this.escapeXML(flow.condition)}</condition>` : ''}
54
+ </sys_hub_trigger_instance>
55
+
56
+ <!-- Trigger Logic -->
57
+ <sys_hub_flow_logic action="INSERT_OR_UPDATE">
58
+ <active>true</active>
59
+ <flow>${flowId}</flow>
60
+ <instance>${triggerId}</instance>
61
+ <name>Trigger</name>
62
+ <order>0</order>
63
+ <sys_id>${triggerLogicId}</sys_id>
64
+ <type>trigger</type>
65
+ </sys_hub_flow_logic>`;
66
+ // Add actions if specified
67
+ if (flow.actions && flow.actions.length > 0) {
68
+ let previousLogicId = triggerLogicId;
69
+ const actions = flow.actions; // TypeScript type narrowing
70
+ actions.forEach((action, index) => {
71
+ const actionId = this.generateSysId();
72
+ const actionLogicId = this.generateSysId();
73
+ xml += `
74
+
75
+ <!-- Action ${index + 1}: ${action.name} -->
76
+ <sys_hub_action_instance action="INSERT_OR_UPDATE">
77
+ <action_name>${this.escapeXML(action.name)}</action_name>
78
+ <action_type>${this.getActionTypeId(action.type)}</action_type>
79
+ <active>true</active>
80
+ <flow>${flowId}</flow>
81
+ <inputs>${this.escapeXML(JSON.stringify(action.inputs || {}))}</inputs>
82
+ <order>${action.order}</order>
83
+ <sys_id>${actionId}</sys_id>
84
+ </sys_hub_action_instance>
85
+
86
+ <!-- Action Logic -->
87
+ <sys_hub_flow_logic action="INSERT_OR_UPDATE">
88
+ <active>true</active>
89
+ <flow>${flowId}</flow>
90
+ <instance>${actionId}</instance>
91
+ <name>${this.escapeXML(action.name)}</name>
92
+ <next>${index < actions.length - 1 ? 'NEXT_LOGIC_ID' : ''}</next>
93
+ <order>${action.order}</order>
94
+ <sys_id>${actionLogicId}</sys_id>
95
+ <type>action</type>
96
+ </sys_hub_flow_logic>`;
97
+ // Update previous logic to point to this one
98
+ xml = xml.replace(`<sys_id>${previousLogicId}</sys_id>
99
+ <type>`, `<sys_id>${previousLogicId}</sys_id>
100
+ <next>${actionLogicId}</next>
101
+ <type>`);
102
+ previousLogicId = actionLogicId;
103
+ });
104
+ }
105
+ }
106
+ xml += `
107
+ </record_update>`;
108
+ return xml;
109
+ }
110
+ /**
111
+ * Generate flow from natural language (simplified version)
112
+ */
113
+ generateFlowFromDescription(description) {
114
+ const flow = {
115
+ name: this.extractFlowName(description),
116
+ description: description,
117
+ active: true,
118
+ actions: []
119
+ };
120
+ // Extract trigger information
121
+ if (description.toLowerCase().includes('when') || description.toLowerCase().includes('trigger')) {
122
+ flow.trigger_type = 'record_created';
123
+ if (description.toLowerCase().includes('catalog') || description.toLowerCase().includes('request')) {
124
+ flow.table = 'sc_request';
125
+ }
126
+ else if (description.toLowerCase().includes('incident')) {
127
+ flow.table = 'incident';
128
+ }
129
+ else {
130
+ flow.table = 'task';
131
+ }
132
+ }
133
+ // Extract actions
134
+ const actions = this.extractActions(description);
135
+ flow.actions = actions.map((action, index) => ({
136
+ ...action,
137
+ order: (index + 1) * 100
138
+ }));
139
+ return flow;
140
+ }
141
+ extractFlowName(description) {
142
+ // Look for explicit flow name in quotes
143
+ const quotedMatch = description.match(/["']([^"']+)["']/);
144
+ if (quotedMatch) {
145
+ return quotedMatch[1];
146
+ }
147
+ // Extract from "Create a flow named X" or "flow for X"
148
+ const namedMatch = description.match(/flow\s+(?:named|called|for)\s+([^.!?,]+)/i);
149
+ if (namedMatch) {
150
+ return namedMatch[1].trim();
151
+ }
152
+ // Generate from first part of description
153
+ const words = description.split(' ').slice(0, 5);
154
+ return words.join(' ') + ' Flow';
155
+ }
156
+ extractActions(description) {
157
+ const actions = [];
158
+ const lowerDesc = description.toLowerCase();
159
+ // Check for approval
160
+ if (lowerDesc.includes('approval') || lowerDesc.includes('approve')) {
161
+ actions.push({
162
+ name: 'Request Approval',
163
+ type: 'approval',
164
+ inputs: {
165
+ approvers: lowerDesc.includes('admin') ? 'admin' : 'assignment_group.manager'
166
+ }
167
+ });
168
+ }
169
+ // Check for notifications
170
+ if (lowerDesc.includes('notify') || lowerDesc.includes('email') || lowerDesc.includes('send')) {
171
+ actions.push({
172
+ name: 'Send Notification',
173
+ type: 'notification',
174
+ inputs: {
175
+ to: 'requested_for',
176
+ subject: 'Request Update',
177
+ message: 'Your request has been processed'
178
+ }
179
+ });
180
+ }
181
+ // Check for state updates
182
+ if (lowerDesc.includes('set') && (lowerDesc.includes('state') || lowerDesc.includes('status'))) {
183
+ const stateMatch = lowerDesc.match(/set\s+(?:state|status)\s+to\s+(\w+)/);
184
+ if (stateMatch) {
185
+ actions.push({
186
+ name: `Set State to ${stateMatch[1]}`,
187
+ type: 'field_update',
188
+ inputs: {
189
+ field: 'state',
190
+ value: stateMatch[1]
191
+ }
192
+ });
193
+ }
194
+ }
195
+ // Check for conditions
196
+ if (lowerDesc.includes('if') && lowerDesc.includes('check')) {
197
+ actions.push({
198
+ name: 'Check Condition',
199
+ type: 'condition',
200
+ inputs: {
201
+ condition: 'current.item_name.indexOf("iPhone 6") > -1'
202
+ }
203
+ });
204
+ }
205
+ return actions;
206
+ }
207
+ sanitizeInternalName(name) {
208
+ return name
209
+ .toLowerCase()
210
+ .replace(/[^a-z0-9_]/g, '_')
211
+ .replace(/_+/g, '_')
212
+ .replace(/^_|_$/g, '')
213
+ .substring(0, 80);
214
+ }
215
+ escapeXML(str) {
216
+ return str
217
+ .replace(/&/g, '&amp;')
218
+ .replace(/</g, '&lt;')
219
+ .replace(/>/g, '&gt;')
220
+ .replace(/"/g, '&quot;')
221
+ .replace(/'/g, '&apos;');
222
+ }
223
+ generateSysId() {
224
+ // Generate a realistic looking sys_id (32 char hex)
225
+ const chars = '0123456789abcdef';
226
+ let sysId = '';
227
+ for (let i = 0; i < 32; i++) {
228
+ sysId += chars[Math.floor(Math.random() * 16)];
229
+ }
230
+ return sysId;
231
+ }
232
+ getCurrentTimestamp() {
233
+ const now = new Date();
234
+ return now.toISOString().replace('T', ' ').substring(0, 19);
235
+ }
236
+ getTriggerTypeId(type) {
237
+ // Map common trigger types to IDs (these should be fetched dynamically in production)
238
+ const triggerMap = {
239
+ 'record_created': '8046eb1537201210075d647c24924bd7',
240
+ 'record_updated': 'f0b6a35537201210075d647c24924b4f',
241
+ 'created_or_updated': '5d07ab5537201210075d647c24924b13'
242
+ };
243
+ return triggerMap[type] || triggerMap['record_created'];
244
+ }
245
+ getActionTypeId(type) {
246
+ // Map common action types to IDs (these should be fetched dynamically in production)
247
+ const actionMap = {
248
+ 'approval': '280065eb734310108ef62d2b04f6a751',
249
+ 'notification': '716281160b100300d97d8bf637673ac7',
250
+ 'field_update': 'baf174c8c3c232002841b63b12d3aee4',
251
+ 'condition': '15cd22b8c3c232002841b63b12d3ae87',
252
+ 'create_record': '02f0b88cc3c632002841b63b12d3aeff'
253
+ };
254
+ return actionMap[type] || '6d8e9c40c32213001d7db7f8c0d5f766'; // Default to log action
255
+ }
256
+ }
257
+ exports.FlowXMLGenerator = FlowXMLGenerator;
258
+ //# sourceMappingURL=flow-xml-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-xml-generator.js","sourceRoot":"","sources":["../../src/utils/flow-xml-generator.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,2CAAqC;AAoBrC,MAAa,gBAAgB;IAG3B;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAM,CAAC,kBAAkB,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,IAAoB;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1D,gCAAgC;QAChC,IAAI,GAAG,GAAG;;;;cAIA,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;;mBAEnC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC;qBAC3C,YAAY;YACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;sBAKf,SAAS;cACjB,MAAM;;;;kBAIF,CAAC;QAEf,oCAAoC;QACpC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACvC,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAE5C,GAAG,IAAI;;;;;YAKD,MAAM;cACJ,SAAS;kBACL,IAAI,CAAC,KAAK,IAAI,YAAY;oBACxB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC;MACtD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;;;;;;YAM1E,MAAM;gBACF,SAAS;;;cAGX,cAAc;;wBAEJ,CAAC;YAEnB,2BAA2B;YAC3B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,IAAI,eAAe,GAAG,cAAc,CAAC;gBACrC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,4BAA4B;gBAE1D,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;oBACtC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;oBAE3C,GAAG,IAAI;;gBAED,KAAK,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI;;mBAEtB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;mBAC3B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;;YAExC,MAAM;cACJ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;aACpD,MAAM,CAAC,KAAK;cACX,QAAQ;;;;;;YAMV,MAAM;gBACF,QAAQ;YACZ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;YAC3B,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;aAChD,MAAM,CAAC,KAAK;cACX,aAAa;;wBAEH,CAAC;oBAEf,6CAA6C;oBAC7C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,eAAe;WAC3C,EAAE,WAAW,eAAe;YAC3B,aAAa;WACd,CAAC,CAAC;oBAEH,eAAe,GAAG,aAAa,CAAC;gBAClC,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,GAAG,IAAI;iBACM,CAAC;QAEd,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACH,2BAA2B,CAAC,WAAmB;QAC7C,MAAM,IAAI,GAAmB;YAC3B,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;YACvC,WAAW,EAAE,WAAW;YACxB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,EAAE;SACZ,CAAC;QAEF,8BAA8B;QAC9B,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAChG,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC;YAErC,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnG,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;YAC5B,CAAC;iBAAM,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1D,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;YACtB,CAAC;QACH,CAAC;QAED,kBAAkB;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAC7C,GAAG,MAAM;YACT,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG;SACzB,CAAC,CAAC,CAAC;QAEJ,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,eAAe,CAAC,WAAmB;QACzC,wCAAwC;QACxC,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC1D,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;QAED,uDAAuD;QACvD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAClF,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC;QAED,0CAA0C;QAC1C,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;IACnC,CAAC;IAEO,cAAc,CAAC,WAAmB;QACxC,MAAM,OAAO,GAAgC,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;QAE5C,qBAAqB;QACrB,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACpE,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE;oBACN,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B;iBAC9E;aACF,CAAC,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9F,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE;oBACN,EAAE,EAAE,eAAe;oBACnB,OAAO,EAAE,gBAAgB;oBACzB,OAAO,EAAE,iCAAiC;iBAC3C;aACF,CAAC,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YAC/F,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;YAC1E,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,gBAAgB,UAAU,CAAC,CAAC,CAAC,EAAE;oBACrC,IAAI,EAAE,cAAc;oBACpB,MAAM,EAAE;wBACN,KAAK,EAAE,OAAO;wBACd,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;qBACrB;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE;oBACN,SAAS,EAAE,4CAA4C;iBACxD;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,oBAAoB,CAAC,IAAY;QACvC,OAAO,IAAI;aACR,WAAW,EAAE;aACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;aAC3B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;aACrB,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtB,CAAC;IAEO,SAAS,CAAC,GAAW;QAC3B,OAAO,GAAG;aACP,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;aACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;aACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;aACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;aACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAEO,aAAa;QACnB,oDAAoD;QACpD,MAAM,KAAK,GAAG,kBAAkB,CAAC;QACjC,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,mBAAmB;QACzB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC;IAEO,gBAAgB,CAAC,IAAY;QACnC,sFAAsF;QACtF,MAAM,UAAU,GAA2B;YACzC,gBAAgB,EAAE,kCAAkC;YACpD,gBAAgB,EAAE,kCAAkC;YACpD,oBAAoB,EAAE,kCAAkC;SACzD,CAAC;QACF,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC1D,CAAC;IAEO,eAAe,CAAC,IAAY;QAClC,qFAAqF;QACrF,MAAM,SAAS,GAA2B;YACxC,UAAU,EAAE,kCAAkC;YAC9C,cAAc,EAAE,kCAAkC;YAClD,cAAc,EAAE,kCAAkC;YAClD,WAAW,EAAE,kCAAkC;YAC/C,eAAe,EAAE,kCAAkC;SACpD,CAAC;QACF,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,kCAAkC,CAAC,CAAC,wBAAwB;IACxF,CAAC;CACF;AAtRD,4CAsRC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Logger utility for ServiceNow agents
3
+ */
4
+ export declare class Logger {
5
+ private logger;
6
+ constructor(agentName: string);
7
+ info(message: string, meta?: any): void;
8
+ error(message: string, meta?: any): void;
9
+ warn(message: string, meta?: any): void;
10
+ debug(message: string, meta?: any): void;
11
+ }
12
+ export declare const logger: Logger;
13
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAiB;gBAEnB,SAAS,EAAE,MAAM;IA+B7B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAIvC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAIxC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAIvC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;CAGzC;AAGD,eAAO,MAAM,MAAM,QAA0B,CAAC"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ /**
3
+ * Logger utility for ServiceNow agents
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.logger = exports.Logger = void 0;
10
+ const winston_1 = __importDefault(require("winston"));
11
+ const path_1 = __importDefault(require("path"));
12
+ class Logger {
13
+ constructor(agentName) {
14
+ const logDir = path_1.default.join(process.cwd(), 'logs');
15
+ this.logger = winston_1.default.createLogger({
16
+ level: process.env.LOG_LEVEL || 'info',
17
+ format: winston_1.default.format.combine(winston_1.default.format.timestamp(), winston_1.default.format.errors({ stack: true }), winston_1.default.format.json()),
18
+ defaultMeta: { agent: agentName },
19
+ transports: [
20
+ // Console transport
21
+ new winston_1.default.transports.Console({
22
+ format: winston_1.default.format.combine(winston_1.default.format.colorize(), winston_1.default.format.simple())
23
+ }),
24
+ // File transport
25
+ new winston_1.default.transports.File({
26
+ filename: path_1.default.join(logDir, `${agentName}-error.log`),
27
+ level: 'error'
28
+ }),
29
+ new winston_1.default.transports.File({
30
+ filename: path_1.default.join(logDir, `${agentName}.log`)
31
+ })
32
+ ]
33
+ });
34
+ }
35
+ info(message, meta) {
36
+ this.logger.info(message, meta);
37
+ }
38
+ error(message, meta) {
39
+ this.logger.error(message, meta);
40
+ }
41
+ warn(message, meta) {
42
+ this.logger.warn(message, meta);
43
+ }
44
+ debug(message, meta) {
45
+ this.logger.debug(message, meta);
46
+ }
47
+ }
48
+ exports.Logger = Logger;
49
+ // Create a default logger instance
50
+ exports.logger = new Logger('snow-flow');
51
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;AAEH,sDAA8B;AAC9B,gDAAwB;AAExB,MAAa,MAAM;IAGjB,YAAY,SAAiB;QAC3B,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;QAEhD,IAAI,CAAC,MAAM,GAAG,iBAAO,CAAC,YAAY,CAAC;YACjC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM;YACtC,MAAM,EAAE,iBAAO,CAAC,MAAM,CAAC,OAAO,CAC5B,iBAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAC1B,iBAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EACtC,iBAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CACtB;YACD,WAAW,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;YACjC,UAAU,EAAE;gBACV,oBAAoB;gBACpB,IAAI,iBAAO,CAAC,UAAU,CAAC,OAAO,CAAC;oBAC7B,MAAM,EAAE,iBAAO,CAAC,MAAM,CAAC,OAAO,CAC5B,iBAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,EACzB,iBAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CACxB;iBACF,CAAC;gBACF,iBAAiB;gBACjB,IAAI,iBAAO,CAAC,UAAU,CAAC,IAAI,CAAC;oBAC1B,QAAQ,EAAE,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,YAAY,CAAC;oBACrD,KAAK,EAAE,OAAO;iBACf,CAAC;gBACF,IAAI,iBAAO,CAAC,UAAU,CAAC,IAAI,CAAC;oBAC1B,QAAQ,EAAE,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,MAAM,CAAC;iBAChD,CAAC;aACH;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAAU;QAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAAU;QAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAAU;QAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAAU;QAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;CACF;AAjDD,wBAiDC;AAED,mCAAmC;AACtB,QAAA,MAAM,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Centralized MCP Authentication Middleware
3
+ * Handles ServiceNow OAuth authentication across all MCP servers
4
+ */
5
+ export interface AuthenticationResult {
6
+ success: boolean;
7
+ token?: string;
8
+ error?: string;
9
+ needsReauth?: boolean;
10
+ }
11
+ export declare class MCPAuthenticationMiddleware {
12
+ private static instance;
13
+ private oauth;
14
+ private logger;
15
+ private lastAuthCheck;
16
+ private authCheckInterval;
17
+ private constructor();
18
+ static getInstance(): MCPAuthenticationMiddleware;
19
+ /**
20
+ * Ensure authentication is valid before MCP operations
21
+ */
22
+ ensureAuthenticated(): Promise<AuthenticationResult>;
23
+ /**
24
+ * Check if authentication status should be verified
25
+ */
26
+ private shouldCheckAuth;
27
+ /**
28
+ * Handle authentication errors with automatic retry
29
+ */
30
+ handleAuthError(error: any): Promise<AuthenticationResult>;
31
+ /**
32
+ * Check if an error is authentication-related
33
+ */
34
+ private isAuthError;
35
+ /**
36
+ * Get ServiceNow instance information
37
+ */
38
+ getInstanceInfo(): Promise<{
39
+ instance: string;
40
+ authenticated: boolean;
41
+ }>;
42
+ /**
43
+ * Wrapper for MCP operations with authentication
44
+ */
45
+ withAuth<T>(operation: (token: string) => Promise<T>): Promise<T>;
46
+ /**
47
+ * Get authentication headers for HTTP requests
48
+ */
49
+ getAuthHeaders(): Promise<{
50
+ [key: string]: string;
51
+ }>;
52
+ /**
53
+ * Force authentication refresh
54
+ */
55
+ forceRefresh(): Promise<AuthenticationResult>;
56
+ }
57
+ export declare const mcpAuth: MCPAuthenticationMiddleware;
58
+ //# sourceMappingURL=mcp-auth-middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-auth-middleware.d.ts","sourceRoot":"","sources":["../../src/utils/mcp-auth-middleware.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,qBAAa,2BAA2B;IACtC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA8B;IACrD,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,iBAAiB,CAAyB;IAElD,OAAO;WAKO,WAAW,IAAI,2BAA2B;IAOxD;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,oBAAoB,CAAC;IA4C1D;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;OAEG;IACG,eAAe,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAqChE;;OAEG;IACH,OAAO,CAAC,WAAW;IAyBnB;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,OAAO,CAAA;KAAE,CAAC;IAU9E;;OAEG;IACG,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA2BvE;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAc1D;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,oBAAoB,CAAC;CAmCpD;AAGD,eAAO,MAAM,OAAO,6BAA4C,CAAC"}