@minded-ai/mindedjs 1.0.19

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 (183) hide show
  1. package/.github/workflows/CI.yml +34 -0
  2. package/.prettierrc +8 -0
  3. package/README.md +6 -0
  4. package/dist/agent.d.ts +36 -0
  5. package/dist/agent.js +199 -0
  6. package/dist/agent.js.map +1 -0
  7. package/dist/analytics.d.ts +6 -0
  8. package/dist/analytics.js +19 -0
  9. package/dist/analytics.js.map +1 -0
  10. package/dist/edges/createDirectEdge.d.ts +4 -0
  11. package/dist/edges/createDirectEdge.js +14 -0
  12. package/dist/edges/createDirectEdge.js.map +1 -0
  13. package/dist/edges/createLogicalRouter.d.ts +5 -0
  14. package/dist/edges/createLogicalRouter.js +18 -0
  15. package/dist/edges/createLogicalRouter.js.map +1 -0
  16. package/dist/edges/createPromptRouter.d.ts +7 -0
  17. package/dist/edges/createPromptRouter.js +54 -0
  18. package/dist/edges/createPromptRouter.js.map +1 -0
  19. package/dist/edges/edgeFactory.d.ts +9 -0
  20. package/dist/edges/edgeFactory.js +65 -0
  21. package/dist/edges/edgeFactory.js.map +1 -0
  22. package/dist/events/AgentEvents.d.ts +22 -0
  23. package/dist/events/AgentEvents.js +9 -0
  24. package/dist/events/AgentEvents.js.map +1 -0
  25. package/dist/events/index.d.ts +2 -0
  26. package/dist/events/index.js +5 -0
  27. package/dist/events/index.js.map +1 -0
  28. package/dist/index.d.ts +6 -0
  29. package/dist/index.js +15 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/infrastructure.ts/mindedRequest.d.ts +8 -0
  32. package/dist/infrastructure.ts/mindedRequest.js +22 -0
  33. package/dist/infrastructure.ts/mindedRequest.js.map +1 -0
  34. package/dist/llm/createLlmInstance.d.ts +2 -0
  35. package/dist/llm/createLlmInstance.js +14 -0
  36. package/dist/llm/createLlmInstance.js.map +1 -0
  37. package/dist/nodes/addHumanInTheLoopNode.d.ts +8 -0
  38. package/dist/nodes/addHumanInTheLoopNode.js +17 -0
  39. package/dist/nodes/addHumanInTheLoopNode.js.map +1 -0
  40. package/dist/nodes/addPromptNode.d.ts +15 -0
  41. package/dist/nodes/addPromptNode.js +52 -0
  42. package/dist/nodes/addPromptNode.js.map +1 -0
  43. package/dist/nodes/addToolNode.d.ts +10 -0
  44. package/dist/nodes/addToolNode.js +82 -0
  45. package/dist/nodes/addToolNode.js.map +1 -0
  46. package/dist/nodes/addTriggerNode.d.ts +6 -0
  47. package/dist/nodes/addTriggerNode.js +12 -0
  48. package/dist/nodes/addTriggerNode.js.map +1 -0
  49. package/dist/nodes/nodeFactory.d.ts +13 -0
  50. package/dist/nodes/nodeFactory.js +41 -0
  51. package/dist/nodes/nodeFactory.js.map +1 -0
  52. package/dist/platform/analytics.d.ts +6 -0
  53. package/dist/platform/analytics.js +19 -0
  54. package/dist/platform/analytics.js.map +1 -0
  55. package/dist/platform/mindedCheckpointSaver.d.ts +10 -0
  56. package/dist/platform/mindedCheckpointSaver.js +49 -0
  57. package/dist/platform/mindedCheckpointSaver.js.map +1 -0
  58. package/dist/platform/mindedConnection.d.ts +13 -0
  59. package/dist/platform/mindedConnection.js +117 -0
  60. package/dist/platform/mindedConnection.js.map +1 -0
  61. package/dist/platform/mindedConnectionTypes.d.ts +10 -0
  62. package/dist/platform/mindedConnectionTypes.js +8 -0
  63. package/dist/platform/mindedConnectionTypes.js.map +1 -0
  64. package/dist/platform/mindedRequest.d.ts +8 -0
  65. package/dist/platform/mindedRequest.js +22 -0
  66. package/dist/platform/mindedRequest.js.map +1 -0
  67. package/dist/types/Agent.types.d.ts +8 -0
  68. package/dist/types/Agent.types.js +3 -0
  69. package/dist/types/Agent.types.js.map +1 -0
  70. package/dist/types/Flows.types.d.ts +83 -0
  71. package/dist/types/Flows.types.js +24 -0
  72. package/dist/types/Flows.types.js.map +1 -0
  73. package/dist/types/LLM.types.d.ts +10 -0
  74. package/dist/types/LLM.types.js +9 -0
  75. package/dist/types/LLM.types.js.map +1 -0
  76. package/dist/types/LangGraph.types.d.ts +29 -0
  77. package/dist/types/LangGraph.types.js +20 -0
  78. package/dist/types/LangGraph.types.js.map +1 -0
  79. package/dist/types/Tools.types.d.ts +14 -0
  80. package/dist/types/Tools.types.js +3 -0
  81. package/dist/types/Tools.types.js.map +1 -0
  82. package/dist/types/Triggers.types.d.ts +1 -0
  83. package/dist/types/Triggers.types.js +3 -0
  84. package/dist/types/Triggers.types.js.map +1 -0
  85. package/docs/.gitbook/assets/image.png +0 -0
  86. package/docs/README.md +51 -0
  87. package/docs/SUMMARY.md +21 -0
  88. package/docs/api-reference/.nojekyll +1 -0
  89. package/docs/api-reference/assets/hierarchy.js +1 -0
  90. package/docs/api-reference/assets/highlight.css +120 -0
  91. package/docs/api-reference/assets/icons.js +18 -0
  92. package/docs/api-reference/assets/icons.svg +1 -0
  93. package/docs/api-reference/assets/main.js +60 -0
  94. package/docs/api-reference/assets/navigation.js +1 -0
  95. package/docs/api-reference/assets/search.js +1 -0
  96. package/docs/api-reference/assets/style.css +1640 -0
  97. package/docs/api-reference/classes/index.Agent.html +4 -0
  98. package/docs/api-reference/enums/index.EdgeType.html +4 -0
  99. package/docs/api-reference/enums/index.NodeType.html +6 -0
  100. package/docs/api-reference/enums/index.TriggerType.html +4 -0
  101. package/docs/api-reference/enums/index.events.html +3 -0
  102. package/docs/api-reference/hierarchy.html +1 -0
  103. package/docs/api-reference/index.html +310 -0
  104. package/docs/api-reference/interfaces/index.AppToolNode.html +5 -0
  105. package/docs/api-reference/interfaces/index.AppTriggerNode.html +6 -0
  106. package/docs/api-reference/interfaces/index.Flow.html +4 -0
  107. package/docs/api-reference/interfaces/index.JunctionNode.html +4 -0
  108. package/docs/api-reference/interfaces/index.LogicalConditionEdge.html +5 -0
  109. package/docs/api-reference/interfaces/index.ManualTriggerNode.html +5 -0
  110. package/docs/api-reference/interfaces/index.PromptConditionEdge.html +5 -0
  111. package/docs/api-reference/interfaces/index.PromptNode.html +6 -0
  112. package/docs/api-reference/interfaces/index.StepForwardEdge.html +4 -0
  113. package/docs/api-reference/interfaces/index.Tool.html +6 -0
  114. package/docs/api-reference/interfaces/index.ToolNode.html +5 -0
  115. package/docs/api-reference/modules/index-1.html +1 -0
  116. package/docs/api-reference/modules/index.html +1 -0
  117. package/docs/api-reference/modules.html +1 -0
  118. package/docs/api-reference/types/index.Edge.html +1 -0
  119. package/docs/api-reference/types/index.Node.html +1 -0
  120. package/docs/api-reference/types/index.TriggerNode.html +1 -0
  121. package/docs/core-concepts/edges.md +242 -0
  122. package/docs/core-concepts/events.md +161 -0
  123. package/docs/core-concepts/flows.md +74 -0
  124. package/docs/core-concepts/memory-types.md +208 -0
  125. package/docs/core-concepts/nodes.md +239 -0
  126. package/docs/core-concepts/tools.md +205 -0
  127. package/docs/examples/order-refund-flow.md +560 -0
  128. package/docs/getting-started/installation.md +34 -0
  129. package/docs/getting-started/quick-start.md +264 -0
  130. package/docs-structure.md +144 -0
  131. package/eslint.config.js +68 -0
  132. package/examples/orderRefundAgent/flows/orderRefundFlow.yaml +32 -0
  133. package/examples/orderRefundAgent/minded.json +14 -0
  134. package/examples/orderRefundAgent/orderRefundAgent.ts +58 -0
  135. package/examples/orderRefundAgent/schema.ts +7 -0
  136. package/examples/orderRefundAgent/tools/escalateConversation.ts +28 -0
  137. package/examples/orderRefundAgent/tools/index.ts +4 -0
  138. package/examples/orderRefundAgent/tools/refundOrder.ts +27 -0
  139. package/package.json +46 -0
  140. package/src/agent.ts +216 -0
  141. package/src/edges/createDirectEdge.ts +11 -0
  142. package/src/edges/createLogicalRouter.ts +16 -0
  143. package/src/edges/createPromptRouter.ts +52 -0
  144. package/src/edges/edgeFactory.ts +85 -0
  145. package/src/events/AgentEvents.ts +22 -0
  146. package/src/events/index.ts +3 -0
  147. package/src/index.ts +22 -0
  148. package/src/llm/createLlmInstance.ts +10 -0
  149. package/src/nodes/addHumanInTheLoopNode.ts +20 -0
  150. package/src/nodes/addPromptNode.ts +66 -0
  151. package/src/nodes/addToolNode.ts +95 -0
  152. package/src/nodes/addTriggerNode.ts +12 -0
  153. package/src/nodes/nodeFactory.ts +65 -0
  154. package/src/platform/analytics.ts +16 -0
  155. package/src/platform/mindedCheckpointSaver.ts +74 -0
  156. package/src/platform/mindedConnection.ts +106 -0
  157. package/src/platform/mindedConnectionTypes.ts +15 -0
  158. package/src/platform/mindedRequest.ts +28 -0
  159. package/src/types/Agent.types.ts +10 -0
  160. package/src/types/Flows.types.ts +103 -0
  161. package/src/types/LLM.types.ts +13 -0
  162. package/src/types/LangGraph.types.ts +25 -0
  163. package/src/types/Tools.types.ts +9 -0
  164. package/test/can-stay-on-node/can-stay-on-node.test.ts +148 -0
  165. package/test/can-stay-on-node/flows/test-flow.yaml +25 -0
  166. package/test/cannot-stay-on-node/cannot-stay-on-node.test.ts +201 -0
  167. package/test/cannot-stay-on-node/flows/test-flow.yaml +34 -0
  168. package/test/human-in-the-loop-node/flows/test-flow.yaml +23 -0
  169. package/test/human-in-the-loop-node/human-in-the-loop-node.test.ts +92 -0
  170. package/test/logical-edges/flows/logical-edge-test-flow.yaml +24 -0
  171. package/test/logical-edges/logical-edges.test.ts +66 -0
  172. package/test/no-human-in-the-loop-node/flows/test-flow.yaml +23 -0
  173. package/test/no-human-in-the-loop-node/no-human-in-the-loop-node.test.ts +80 -0
  174. package/test/prompt-edges/flows/test-flow.yaml +24 -0
  175. package/test/prompt-edges/prompt-edges.test.ts +90 -0
  176. package/test/prompt-node/flows/test-flow.yaml +24 -0
  177. package/test/prompt-node/prompt-node.test.ts +86 -0
  178. package/test/setup.ts +5 -0
  179. package/test/tool-node/flows/test-flow.yaml +14 -0
  180. package/test/tool-node/tool-node.test.ts +67 -0
  181. package/test/trigger/flows/test-flow.yaml +7 -0
  182. package/test/trigger/trigger.test.ts +57 -0
  183. package/tsconfig.json +17 -0
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.mindedRequest = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const baseUrl = 'https://api.minded.com/sdk';
9
+ const mindedRequest = async ({ path, method, body, token }) => {
10
+ const response = await (0, axios_1.default)({
11
+ method,
12
+ url: `${baseUrl}${path}`,
13
+ data: body,
14
+ headers: {
15
+ 'Content-Type': 'application/json',
16
+ 'Authorization': `Bearer ${token}`
17
+ }
18
+ });
19
+ return response.data;
20
+ };
21
+ exports.mindedRequest = mindedRequest;
22
+ //# sourceMappingURL=mindedRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mindedRequest.js","sourceRoot":"","sources":["../../src/infrastructure.ts/mindedRequest.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,MAAM,OAAO,GAAG,4BAA4B,CAAA;AAIrC,MAAM,aAAa,GAAG,KAAK,EAA8B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAkE,EAAqB,EAAE;IAClL,MAAM,QAAQ,GAAG,MAAM,IAAA,eAAK,EAAC;QAC3B,MAAM;QACN,GAAG,EAAE,GAAG,OAAO,GAAG,IAAI,EAAE;QACxB,IAAI,EAAE,IAAI;QACV,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,eAAe,EAAE,UAAU,KAAK,EAAE;SACnC;KACF,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC,CAAA;AAZY,QAAA,aAAa,iBAYzB"}
@@ -0,0 +1,2 @@
1
+ import { LLMConfig } from "../types/LLM.types";
2
+ export declare const createLlmInstance: (llmConfig: LLMConfig) => import("@langchain/openai").AzureChatOpenAI | import("@langchain/openai").ChatOpenAI<import("@langchain/openai").ChatOpenAICallOptions>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createLlmInstance = void 0;
4
+ const LLM_types_1 = require("../types/LLM.types");
5
+ const createLlmInstance = (llmConfig) => {
6
+ const { name, properties } = llmConfig;
7
+ const LLMClass = LLM_types_1.LLMProviders[name];
8
+ if (!LLMClass) {
9
+ throw new Error(`Unsupported LLM provider: ${name}`);
10
+ }
11
+ return new LLMClass(properties);
12
+ };
13
+ exports.createLlmInstance = createLlmInstance;
14
+ //# sourceMappingURL=createLlmInstance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createLlmInstance.js","sourceRoot":"","sources":["../../src/llm/createLlmInstance.ts"],"names":[],"mappings":";;;AAAA,kDAA0E;AAEnE,MAAM,iBAAiB,GAAG,CAAC,SAAoB,EAAE,EAAE;IACxD,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;IACvC,MAAM,QAAQ,GAAG,wBAAY,CAAC,IAAmB,CAAC,CAAC;IACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;AAClC,CAAC,CAAC;AAPW,QAAA,iBAAiB,qBAO5B"}
@@ -0,0 +1,8 @@
1
+ import { PreCompiledGraph } from '../types/LangGraph.types';
2
+ type AddHumanInTheLoopNodeParams = {
3
+ graph: PreCompiledGraph;
4
+ attachedToNodeName: string;
5
+ };
6
+ export declare const buildHumanInTheLoopNodeName: (nodeName: string) => string;
7
+ export declare const addHumanInTheLoopNode: ({ graph, attachedToNodeName }: AddHumanInTheLoopNodeParams) => Promise<void>;
8
+ export {};
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addHumanInTheLoopNode = exports.buildHumanInTheLoopNodeName = void 0;
4
+ const langgraph_1 = require("@langchain/langgraph");
5
+ const buildHumanInTheLoopNodeName = (nodeName) => `${nodeName}_humanInTheLoop`;
6
+ exports.buildHumanInTheLoopNodeName = buildHumanInTheLoopNodeName;
7
+ const addHumanInTheLoopNode = async ({ graph, attachedToNodeName }) => {
8
+ const callback = async () => {
9
+ console.log(`Executing "human in the loop" node for the attached node${attachedToNodeName}`);
10
+ const value = (0, langgraph_1.interrupt)('input from human in the loop');
11
+ return value;
12
+ };
13
+ graph.addNode(`${attachedToNodeName}_humanInTheLoop`, callback);
14
+ graph.addEdge(attachedToNodeName, (0, exports.buildHumanInTheLoopNodeName)(attachedToNodeName));
15
+ };
16
+ exports.addHumanInTheLoopNode = addHumanInTheLoopNode;
17
+ //# sourceMappingURL=addHumanInTheLoopNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addHumanInTheLoopNode.js","sourceRoot":"","sources":["../../src/nodes/addHumanInTheLoopNode.ts"],"names":[],"mappings":";;;AAAA,oDAAiD;AAS1C,MAAM,2BAA2B,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,GAAG,QAAQ,iBAAiB,CAAC;AAAjF,QAAA,2BAA2B,+BAAsD;AAEvF,MAAM,qBAAqB,GAAG,KAAK,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAA+B,EAAE,EAAE;IACxG,MAAM,QAAQ,GAAiB,KAAK,IAAI,EAAE;QACxC,OAAO,CAAC,GAAG,CAAC,2DAA2D,kBAAkB,EAAE,CAAC,CAAC;QAC7F,MAAM,KAAK,GAAG,IAAA,qBAAS,EAAC,8BAA8B,CAAC,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,KAAK,CAAC,OAAO,CAAC,GAAG,kBAAkB,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAChE,KAAK,CAAC,OAAO,CAAC,kBAAyB,EAAE,IAAA,mCAA2B,EAAC,kBAAkB,CAAQ,CAAC,CAAC;AACnG,CAAC,CAAC;AARW,QAAA,qBAAqB,yBAQhC"}
@@ -0,0 +1,15 @@
1
+ import { PromptNode } from '../types/Flows.types';
2
+ import { PreCompiledGraph } from '../types/LangGraph.types';
3
+ import { BaseLanguageModel } from '@langchain/core/language_models/base';
4
+ import { Tool } from '../types/Tools.types';
5
+ import { AgentEventRequestPayloads } from '../events/AgentEvents';
6
+ import { EmitSignature } from '../types/Agent.types';
7
+ type AddPromptNodeParams = {
8
+ graph: PreCompiledGraph;
9
+ node: PromptNode;
10
+ llm: BaseLanguageModel;
11
+ tools: Tool<any, any>[];
12
+ emit: EmitSignature<any, keyof AgentEventRequestPayloads<any>>;
13
+ };
14
+ export declare const addPromptNode: ({ graph, node, llm, tools, emit }: AddPromptNodeParams) => Promise<void>;
15
+ export {};
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addPromptNode = void 0;
4
+ const zod_1 = require("zod");
5
+ const prebuilt_1 = require("@langchain/langgraph/prebuilt");
6
+ const messages_1 = require("@langchain/core/messages");
7
+ const tools_1 = require("@langchain/core/tools");
8
+ const AgentEvents_1 = require("../events/AgentEvents");
9
+ const createLlmInstance_1 = require("../llm/createLlmInstance");
10
+ const addPromptNode = async ({ graph, node, llm, tools, emit }) => {
11
+ const callback = async (state) => {
12
+ console.log(`Executing prompt node ${node.name}`);
13
+ const llmToUse = node.llmConfig ? (0, createLlmInstance_1.createLlmInstance)(node.llmConfig) : llm;
14
+ const globalTools = tools
15
+ .filter((tool) => tool.isGlobal)
16
+ .map((tool) => (0, tools_1.tool)((input) => tool.execute({ input, memory: state.memory }), {
17
+ name: tool.name,
18
+ description: tool.description,
19
+ schema: tool.input,
20
+ }));
21
+ const agent = (0, prebuilt_1.createReactAgent)({
22
+ llm: llmToUse,
23
+ tools: globalTools,
24
+ responseFormat: zod_1.z.object({
25
+ waitForUserResponse: zod_1.z.boolean(),
26
+ done: zod_1.z.boolean(),
27
+ }),
28
+ });
29
+ const message = `
30
+ - This is a node in a workflow.
31
+ - User instructions: ${node.prompt}
32
+ - Workflow memory: ${JSON.stringify(state.memory)}
33
+ - Conversation history: ${state.messages.map((message) => `${message.getType()}: ${message.content}`).join('\n')}
34
+ `;
35
+ const result = await agent.invoke({
36
+ messages: [new messages_1.SystemMessage(message)],
37
+ });
38
+ const lastMessage = result.messages[result.messages.length - 1];
39
+ if (lastMessage.getType() === 'ai') {
40
+ await emit(AgentEvents_1.AgentEvents.AI_MESSAGE, {
41
+ message: lastMessage.content,
42
+ memory: state.memory,
43
+ });
44
+ }
45
+ return {
46
+ messages: [lastMessage],
47
+ };
48
+ };
49
+ graph.addNode(node.name, callback);
50
+ };
51
+ exports.addPromptNode = addPromptNode;
52
+ //# sourceMappingURL=addPromptNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addPromptNode.js","sourceRoot":"","sources":["../../src/nodes/addPromptNode.ts"],"names":[],"mappings":";;;AAGA,6BAAwB;AAExB,4DAAiE;AACjE,uDAAyD;AAEzD,iDAA8D;AAC9D,uDAA+E;AAE/E,gEAA6D;AAUtD,MAAM,aAAa,GAAG,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAuB,EAAE,EAAE;IAC5F,MAAM,QAAQ,GAAiB,KAAK,EAAE,KAAmC,EAAE,EAAE;QAC3E,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,qCAAiB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAE1E,MAAM,WAAW,GAAG,KAAK;aACtB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC/B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,IAAA,YAAa,EAAC,CAAC,KAAiC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;YAClG,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAE,IAAI,CAAC,KAAK;SACnB,CAAC,CACH,CAAC;QAEJ,MAAM,KAAK,GAAG,IAAA,2BAAgB,EAAC;YAC7B,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE,WAAW;YAClB,cAAc,EAAE,OAAC,CAAC,MAAM,CAAC;gBACvB,mBAAmB,EAAE,OAAC,CAAC,OAAO,EAAE;gBAChC,IAAI,EAAE,OAAC,CAAC,OAAO,EAAE;aAClB,CAAC;SACH,CAAC,CAAC;QACH,MAAM,OAAO,GAAG;;2BAEO,IAAI,CAAC,MAAM;yBACb,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;8BACvB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;KAC/G,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;YAChC,QAAQ,EAAE,CAAC,IAAI,wBAAa,CAAC,OAAO,CAAC,CAAC;SACvC,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAChE,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,yBAAW,CAAC,UAAU,EAAE;gBACjC,OAAO,EAAE,WAAW,CAAC,OAAiB;gBACtC,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB,CAAC,CAAC;QACL,CAAC;QACD,OAAO;YACL,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB,CAAC;IACJ,CAAC,CAAC;IACF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACrC,CAAC,CAAC;AA5CW,QAAA,aAAa,iBA4CxB"}
@@ -0,0 +1,10 @@
1
+ import { BaseLanguageModel } from "@langchain/core/language_models/base";
2
+ import { ToolNode } from "../types/Flows.types";
3
+ import { Tool } from "../types/Tools.types";
4
+ import { PreCompiledGraph } from "../types/LangGraph.types";
5
+ export declare const addToolNode: <Memory>({ graph, node, tools, llm, }: {
6
+ graph: PreCompiledGraph;
7
+ node: ToolNode;
8
+ tools: Tool<any, any>[];
9
+ llm: BaseLanguageModel;
10
+ }) => Promise<void>;
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addToolNode = void 0;
4
+ const tools_1 = require("@langchain/core/tools");
5
+ const messages_1 = require("@langchain/core/messages");
6
+ const prebuilt_1 = require("@langchain/langgraph/prebuilt");
7
+ const addToolNode = async ({ graph, node, tools, llm, }) => {
8
+ const toolNode = node;
9
+ const matchedTool = tools.find((tool) => tool.name === toolNode.toolName);
10
+ if (!matchedTool) {
11
+ throw new Error(`Tool not found: ${toolNode.toolName}`);
12
+ }
13
+ const callback = async (state) => {
14
+ try {
15
+ console.log(`Executing tool node ${toolNode.name}`);
16
+ const executeWrapper = async (input) => {
17
+ try {
18
+ const response = await matchedTool.execute({ input, memory: state.memory });
19
+ return response || {};
20
+ }
21
+ catch (error) {
22
+ console.error('Error executing tool', error);
23
+ throw error;
24
+ }
25
+ };
26
+ const tool = (0, tools_1.tool)(executeWrapper, {
27
+ name: matchedTool.name,
28
+ description: matchedTool.description,
29
+ schema: matchedTool.input,
30
+ });
31
+ const prompt = `
32
+ Context:
33
+ messages: ${JSON.stringify(state.messages)}
34
+ workflow memory: ${JSON.stringify(state.memory)}
35
+ Instructions:
36
+ Call immediately tool ${tool.name}(...)
37
+ ${toolNode.prompt && `Tool execution instructions: ${toolNode.prompt}`}
38
+ `;
39
+ const toolCallingAgent = (0, prebuilt_1.createReactAgent)({
40
+ llm,
41
+ tools: [tool],
42
+ });
43
+ const response = await toolCallingAgent.invoke({ messages: [new messages_1.SystemMessage(prompt)] });
44
+ const toolCallMessage = getLastToolCallMessage(response.messages);
45
+ const toolResponseMessage = getLastToolMessage(response.messages);
46
+ if (!toolCallMessage || !toolResponseMessage) {
47
+ throw new Error('Tool call or tool response message not found');
48
+ }
49
+ const toolMemory = extractToolMemoryResponse(toolResponseMessage);
50
+ return { memory: toolMemory, messages: [toolCallMessage, toolResponseMessage] };
51
+ }
52
+ catch (error) {
53
+ console.error('Error executing tool node', error);
54
+ throw error;
55
+ }
56
+ };
57
+ graph.addNode(node.name, callback);
58
+ };
59
+ exports.addToolNode = addToolNode;
60
+ const getLastToolCallMessage = (messages) => {
61
+ const toolCallMessages = messages.filter((message) => { var _a; return ((_a = message.tool_calls) === null || _a === void 0 ? void 0 : _a.length) || 0 > 0; });
62
+ const lastToolCallMessage = toolCallMessages[toolCallMessages.length - 1];
63
+ return lastToolCallMessage;
64
+ };
65
+ const getLastToolMessage = (messages) => {
66
+ const toolMessages = messages.filter((message) => message.getType() === 'tool');
67
+ const lastToolMessage = toolMessages[toolMessages.length - 1];
68
+ return lastToolMessage;
69
+ };
70
+ const extractToolMemoryResponse = (toolMessage) => {
71
+ try {
72
+ const parsed = JSON.parse(toolMessage.content);
73
+ if (typeof parsed === 'object' && parsed !== null && 'memory' in parsed) {
74
+ return parsed.memory;
75
+ }
76
+ }
77
+ catch (error) {
78
+ console.error('Error parsing tool memory response', error);
79
+ }
80
+ return {};
81
+ };
82
+ //# sourceMappingURL=addToolNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addToolNode.js","sourceRoot":"","sources":["../../src/nodes/addToolNode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { TriggerNode } from '../types/Flows.types';
2
+ import { PreCompiledGraph } from '../types/LangGraph.types';
3
+ export declare const addTriggerNode: ({ graph, node }: {
4
+ graph: PreCompiledGraph;
5
+ node: TriggerNode;
6
+ }) => Promise<void>;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addTriggerNode = void 0;
4
+ const addTriggerNode = async ({ graph, node }) => {
5
+ const callback = async () => {
6
+ console.log(`Executing trigger node ${node.name}`);
7
+ return;
8
+ };
9
+ graph.addNode(node.name, callback);
10
+ };
11
+ exports.addTriggerNode = addTriggerNode;
12
+ //# sourceMappingURL=addTriggerNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addTriggerNode.js","sourceRoot":"","sources":["../../src/nodes/addTriggerNode.ts"],"names":[],"mappings":";;;AAIO,MAAM,cAAc,GAAG,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAkD,EAAE,EAAE;IACtG,MAAM,QAAQ,GAAiB,KAAK,IAAI,EAAE;QACxC,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACnD,OAAO;IACT,CAAC,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACrC,CAAC,CAAC;AAPW,QAAA,cAAc,kBAOzB"}
@@ -0,0 +1,13 @@
1
+ import { Node } from '../types/Flows.types';
2
+ import { PreCompiledGraph } from '../types/LangGraph.types';
3
+ import { Tool } from '../types/Tools.types';
4
+ import { BaseLanguageModel } from '@langchain/core/language_models/base';
5
+ import { AgentEventRequestPayloads } from '../events/AgentEvents';
6
+ import { EmitSignature } from '../types/Agent.types';
7
+ export declare const nodeFactory: ({ graph, node, tools, llm, emit, }: {
8
+ graph: PreCompiledGraph;
9
+ node: Node;
10
+ tools: Tool<any, any>[];
11
+ llm: BaseLanguageModel;
12
+ emit: EmitSignature<any, keyof AgentEventRequestPayloads<any>>;
13
+ }) => void;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.nodeFactory = void 0;
4
+ const Flows_types_1 = require("../types/Flows.types");
5
+ const addTriggerNode_1 = require("./addTriggerNode");
6
+ const addToolNode_1 = require("./addToolNode");
7
+ const addPromptNode_1 = require("./addPromptNode");
8
+ const addJunctionNode = ({ graph, node }) => {
9
+ const callback = async () => { };
10
+ graph.addNode(node.name, callback);
11
+ };
12
+ const addAppToolNode = ({ graph, node, }) => {
13
+ const callback = async () => {
14
+ throw new Error('Not implemented');
15
+ };
16
+ graph.addNode(node.name, callback);
17
+ };
18
+ const nodeFactory = ({ graph, node, tools, llm, emit, }) => {
19
+ const nodeType = node.type;
20
+ switch (nodeType) {
21
+ case Flows_types_1.NodeType.TRIGGER:
22
+ (0, addTriggerNode_1.addTriggerNode)({ graph, node });
23
+ break;
24
+ case Flows_types_1.NodeType.TOOL:
25
+ (0, addToolNode_1.addToolNode)({ graph, node, tools, llm });
26
+ break;
27
+ case Flows_types_1.NodeType.JUNCTION:
28
+ addJunctionNode({ graph, node });
29
+ break;
30
+ case Flows_types_1.NodeType.APP_TOOL:
31
+ addAppToolNode({ graph, node, tools, llm });
32
+ break;
33
+ case Flows_types_1.NodeType.PROMPT_NODE:
34
+ (0, addPromptNode_1.addPromptNode)({ graph, node, tools, llm, emit });
35
+ break;
36
+ default:
37
+ throw new Error(`Unsupported node type: ${nodeType}`);
38
+ }
39
+ };
40
+ exports.nodeFactory = nodeFactory;
41
+ //# sourceMappingURL=nodeFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodeFactory.js","sourceRoot":"","sources":["../../src/nodes/nodeFactory.ts"],"names":[],"mappings":";;;AACA,sDAAiF;AAIjF,qDAAkD;AAClD,+CAA4C;AAC5C,mDAAgD;AAIhD,MAAM,eAAe,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAmD,EAAE,EAAE;IAC3F,MAAM,QAAQ,GAAiB,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC;IAC9C,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,EACtB,KAAK,EACL,IAAI,GAML,EAAE,EAAE;IACH,MAAM,QAAQ,GAAiB,KAAK,IAAI,EAAE;QACxC,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC,CAAC;IACF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACrC,CAAC,CAAC;AAEK,MAAM,WAAW,GAAG,CAAC,EAC1B,KAAK,EACL,IAAI,EACJ,KAAK,EACL,GAAG,EACH,IAAI,GAOL,EAAE,EAAE;IACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;IAC3B,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,sBAAQ,CAAC,OAAO;YACnB,IAAA,+BAAc,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAChC,MAAM;QACR,KAAK,sBAAQ,CAAC,IAAI;YAChB,IAAA,yBAAW,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YACzC,MAAM;QACR,KAAK,sBAAQ,CAAC,QAAQ;YACpB,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACjC,MAAM;QACR,KAAK,sBAAQ,CAAC,QAAQ;YACpB,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5C,MAAM;QACR,KAAK,sBAAQ,CAAC,WAAW;YACvB,IAAA,6BAAa,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,MAAM;QACR;YACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC,CAAC;AAjCW,QAAA,WAAW,eAiCtB"}
@@ -0,0 +1,6 @@
1
+ export declare const analyticsFactory: ({ token, sessionId }: {
2
+ token: string;
3
+ sessionId: string;
4
+ }) => {
5
+ track: <T>(event: string, data: T) => Promise<void>;
6
+ };
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.analyticsFactory = void 0;
4
+ const mindedRequest_1 = require("./mindedRequest");
5
+ const track = async ({ event, data, token, sessionId }) => {
6
+ await (0, mindedRequest_1.mindedRequest)({
7
+ path: '/analytics/events',
8
+ method: 'POST',
9
+ body: { event, data, sessionId },
10
+ token,
11
+ });
12
+ };
13
+ const analyticsFactory = ({ token, sessionId }) => {
14
+ return {
15
+ track: (event, data) => track({ event, data, token, sessionId }),
16
+ };
17
+ };
18
+ exports.analyticsFactory = analyticsFactory;
19
+ //# sourceMappingURL=analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/platform/analytics.ts"],"names":[],"mappings":";;;AAAA,mDAAgD;AAEhD,MAAM,KAAK,GAAG,KAAK,EAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAgE,EAAE,EAAE;IACzH,MAAM,IAAA,6BAAa,EAAC;QAClB,IAAI,EAAE,mBAAmB;QACzB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE;QAChC,KAAK;KACN,CAAC,CAAC;AACL,CAAC,CAAC;AAEK,MAAM,gBAAgB,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,EAAwC,EAAE,EAAE;IAC7F,OAAO;QACL,KAAK,EAAE,CAAI,KAAa,EAAE,IAAO,EAAE,EAAE,CAAC,KAAK,CAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;KAClF,CAAC;AACJ,CAAC,CAAC;AAJW,QAAA,gBAAgB,oBAI3B"}
@@ -0,0 +1,10 @@
1
+ import { BaseCheckpointSaver, CheckpointTuple, Checkpoint, CheckpointMetadata, ChannelVersions, PendingWrite, CheckpointListOptions } from '@langchain/langgraph-checkpoint';
2
+ import type { RunnableConfig } from '@langchain/core/runnables';
3
+ export declare class MindedCheckpointSaver extends BaseCheckpointSaver<number> {
4
+ private token;
5
+ constructor(token: string);
6
+ getTuple(config: RunnableConfig<Record<string, any>>): Promise<CheckpointTuple | undefined>;
7
+ list(config: RunnableConfig<Record<string, any>>, options?: CheckpointListOptions): AsyncGenerator<CheckpointTuple, any, any>;
8
+ put(config: RunnableConfig<Record<string, any>>, checkpoint: Checkpoint<string, string>, metadata: CheckpointMetadata, newVersions: ChannelVersions): Promise<RunnableConfig<Record<string, any>>>;
9
+ putWrites(config: RunnableConfig<Record<string, any>>, writes: PendingWrite[], taskId: string): Promise<void>;
10
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MindedCheckpointSaver = void 0;
4
+ const langgraph_checkpoint_1 = require("@langchain/langgraph-checkpoint");
5
+ const mindedRequest_1 = require("./mindedRequest");
6
+ class MindedCheckpointSaver extends langgraph_checkpoint_1.BaseCheckpointSaver {
7
+ constructor(token) {
8
+ super();
9
+ this.token = token;
10
+ }
11
+ async getTuple(config) {
12
+ return await (0, mindedRequest_1.mindedRequest)({
13
+ path: '/checkpoint/get',
14
+ method: 'POST',
15
+ body: { config },
16
+ token: this.token,
17
+ });
18
+ }
19
+ async *list(config, options) {
20
+ const tuples = await (0, mindedRequest_1.mindedRequest)({
21
+ path: '/checkpoint/list',
22
+ method: 'POST',
23
+ body: { config, options },
24
+ token: this.token,
25
+ });
26
+ for (const tuple of tuples) {
27
+ yield tuple;
28
+ }
29
+ }
30
+ async put(config, checkpoint, metadata, newVersions) {
31
+ const newConfig = await (0, mindedRequest_1.mindedRequest)({
32
+ path: '/checkpoint/put',
33
+ method: 'POST',
34
+ body: { config, checkpoint, metadata, newVersions },
35
+ token: this.token,
36
+ });
37
+ return newConfig;
38
+ }
39
+ async putWrites(config, writes, taskId) {
40
+ await (0, mindedRequest_1.mindedRequest)({
41
+ path: '/checkpoint/put-writes',
42
+ method: 'POST',
43
+ body: { config, writes, taskId },
44
+ token: this.token,
45
+ });
46
+ }
47
+ }
48
+ exports.MindedCheckpointSaver = MindedCheckpointSaver;
49
+ //# sourceMappingURL=mindedCheckpointSaver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mindedCheckpointSaver.js","sourceRoot":"","sources":["../../src/platform/mindedCheckpointSaver.ts"],"names":[],"mappings":";;;AAAA,0EAQyC;AAEzC,mDAAgD;AAEhD,MAAa,qBAAsB,SAAQ,0CAA2B;IACpE,YAAoB,KAAa;QAC/B,KAAK,EAAE,CAAC;QADU,UAAK,GAAL,KAAK,CAAQ;IAEjC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAA2C;QACxD,OAAO,MAAM,IAAA,6BAAa,EAA+E;YACvG,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,MAAM,EAAE;YAChB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,CAAC,IAAI,CAAC,MAA2C,EAAE,OAA+B;QACtF,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAa,EAChC;YACE,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CACF,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CACP,MAA2C,EAC3C,UAAsC,EACtC,QAA4B,EAC5B,WAA4B;QAE5B,MAAM,SAAS,GAAG,MAAM,IAAA,6BAAa,EAQnC;YACA,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE;YACnD,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAA2C,EAAE,MAAsB,EAAE,MAAc;QACjG,MAAM,IAAA,6BAAa,EAAgG;YACjH,IAAI,EAAE,wBAAwB;YAC9B,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;YAChC,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;CACF;AA7DD,sDA6DC"}
@@ -0,0 +1,13 @@
1
+ import { BaseMindedConnectionSocketMessage, MindedConnectionSocketMessageType } from './mindedConnectionTypes';
2
+ export declare class MindedConnection {
3
+ private socket;
4
+ private rl;
5
+ listeners: {
6
+ [key: string]: ((message: BaseMindedConnectionSocketMessage) => void)[];
7
+ };
8
+ constructor();
9
+ private getMindedToken;
10
+ on: (event: MindedConnectionSocketMessageType, callback: (message: BaseMindedConnectionSocketMessage) => void) => void;
11
+ emit: (event: MindedConnectionSocketMessageType, message: BaseMindedConnectionSocketMessage) => void;
12
+ start(): void;
13
+ }
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.MindedConnection = void 0;
37
+ const socket_io_client_1 = require("socket.io-client");
38
+ const readline = __importStar(require("readline"));
39
+ class MindedConnection {
40
+ constructor() {
41
+ this.socket = null;
42
+ this.rl = null;
43
+ this.listeners = {};
44
+ this.on = (event, callback) => {
45
+ if (!this.listeners[event]) {
46
+ this.listeners[event] = [];
47
+ }
48
+ this.listeners[event].push(callback);
49
+ };
50
+ this.emit = (event, message) => {
51
+ if (this.socket) {
52
+ this.socket.emit(event, message);
53
+ }
54
+ };
55
+ if (!process.env.MINDED_CONNECTION_TOKEN) {
56
+ this.rl = readline.createInterface({
57
+ input: process.stdin,
58
+ output: process.stdout
59
+ });
60
+ }
61
+ }
62
+ async getMindedToken() {
63
+ const envToken = process.env.MINDED_CONNECTION_TOKEN;
64
+ if (envToken) {
65
+ return envToken;
66
+ }
67
+ return new Promise((resolve) => {
68
+ this.rl.question('Enter your Minded connection token: ', (token) => {
69
+ resolve(token);
70
+ });
71
+ });
72
+ }
73
+ start() {
74
+ this.getMindedToken().then(token => {
75
+ this.socket = (0, socket_io_client_1.io)('http://localhost:8888', {
76
+ path: '/minded-connect',
77
+ query: {
78
+ token
79
+ }
80
+ });
81
+ // Connection event handlers
82
+ this.socket.on('connect', () => {
83
+ console.log('\x1b[32mConnection with Minded platform is live!\x1b[0m');
84
+ console.log('\x1b[36mPress Ctrl+C to exit.\x1b[0m');
85
+ });
86
+ this.socket.on('connect_error', () => {
87
+ console.error('Failed to connect to minded platform');
88
+ });
89
+ this.socket.on('disconnect', () => {
90
+ console.log('Disconnected from local debugging socket');
91
+ });
92
+ // Listen for error messages from the server
93
+ this.socket.on('error', (error) => {
94
+ console.error('Server error:', error.message);
95
+ });
96
+ // Listen for specific message types
97
+ this.socket.onAny((event, message) => {
98
+ if (this.listeners[event]) {
99
+ this.listeners[event].forEach((listener) => {
100
+ listener(message);
101
+ });
102
+ }
103
+ });
104
+ // Handle process termination
105
+ process.on('SIGINT', () => {
106
+ var _a;
107
+ if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
108
+ console.log('\nDisconnecting...');
109
+ this.socket.disconnect();
110
+ }
111
+ process.exit(0);
112
+ });
113
+ });
114
+ }
115
+ }
116
+ exports.MindedConnection = MindedConnection;
117
+ //# sourceMappingURL=mindedConnection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mindedConnection.js","sourceRoot":"","sources":["../../src/platform/mindedConnection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare enum MindedConnectionSocketMessageType {
2
+ OnAppTrigger = "on-app-trigger"
3
+ }
4
+ export interface BaseMindedConnectionSocketMessage {
5
+ type: MindedConnectionSocketMessageType;
6
+ }
7
+ export interface OnAppTrigger extends BaseMindedConnectionSocketMessage {
8
+ name: string;
9
+ body: Record<string, any>;
10
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MindedConnectionSocketMessageType = void 0;
4
+ var MindedConnectionSocketMessageType;
5
+ (function (MindedConnectionSocketMessageType) {
6
+ MindedConnectionSocketMessageType["OnAppTrigger"] = "on-app-trigger";
7
+ })(MindedConnectionSocketMessageType || (exports.MindedConnectionSocketMessageType = MindedConnectionSocketMessageType = {}));
8
+ //# sourceMappingURL=mindedConnectionTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mindedConnectionTypes.js","sourceRoot":"","sources":["../../src/platform/mindedConnectionTypes.ts"],"names":[],"mappings":";;;AACA,IAAY,iCAEX;AAFD,WAAY,iCAAiC;IAC3C,oEAA+B,CAAA;AACjC,CAAC,EAFW,iCAAiC,iDAAjC,iCAAiC,QAE5C"}
@@ -0,0 +1,8 @@
1
+ type Method = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
2
+ export declare const mindedRequest: <Response, Request = object>({ path, method, body, token, }: {
3
+ path: string;
4
+ method: Method;
5
+ body: Request;
6
+ token: string;
7
+ }) => Promise<Response>;
8
+ export {};