@minded-ai/mindedjs 3.0.7 ā 3.0.8-beta.11
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.
- package/dist/cli/index.js +15 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/runCommand.d.ts +5 -0
- package/dist/cli/runCommand.d.ts.map +1 -0
- package/dist/cli/runCommand.js +187 -0
- package/dist/cli/runCommand.js.map +1 -0
- package/package.json +1 -1
- package/src/cli/index.ts +15 -1
- package/src/cli/runCommand.ts +181 -0
package/dist/cli/index.js
CHANGED
|
@@ -40,6 +40,7 @@ const logger_1 = require("../utils/logger");
|
|
|
40
40
|
const child_process_1 = require("child_process");
|
|
41
41
|
const localOperatorSetup_1 = require("./localOperatorSetup");
|
|
42
42
|
const validateFlow_1 = require("./validateFlow");
|
|
43
|
+
const runCommand_1 = require("./runCommand");
|
|
43
44
|
const ENV_FILE = '.env';
|
|
44
45
|
function getEnvFilePath() {
|
|
45
46
|
return path.join(process.cwd(), ENV_FILE);
|
|
@@ -201,9 +202,22 @@ async function main() {
|
|
|
201
202
|
const agentPath = args[1]; // Optional path argument
|
|
202
203
|
(0, validateFlow_1.runValidateCommand)(agentPath);
|
|
203
204
|
}
|
|
205
|
+
else if (command === 'run') {
|
|
206
|
+
// Command to run the agent with inline JSON input
|
|
207
|
+
// Usage: npx minded run <json_input>
|
|
208
|
+
const jsonInput = args[1];
|
|
209
|
+
if (!jsonInput) {
|
|
210
|
+
logger_1.logger.error({ msg: 'Please provide inline JSON input' });
|
|
211
|
+
console.error('\nUsage:');
|
|
212
|
+
console.error(' npx minded run \'{"body": {...}}\'');
|
|
213
|
+
console.error(' npx minded run \'{"body": {...}, "headers": {...}}\'');
|
|
214
|
+
process.exit(1);
|
|
215
|
+
}
|
|
216
|
+
await (0, runCommand_1.runCommand)(jsonInput);
|
|
217
|
+
}
|
|
204
218
|
else {
|
|
205
219
|
logger_1.logger.error({
|
|
206
|
-
msg: 'Unknown command. Available commands: token, setup-local-operator, check-local-operator, generate-lambda-ts-handler, validate',
|
|
220
|
+
msg: 'Unknown command. Available commands: token, setup-local-operator, check-local-operator, generate-lambda-ts-handler, validate, run',
|
|
207
221
|
});
|
|
208
222
|
process.exit(1);
|
|
209
223
|
}
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,uCAAyB;AACzB,2CAA6B;AAC7B,4CAAyC;AACzC,iDAAyC;AACzC,6DAAgF;AAChF,iDAAoD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runCommand.d.ts","sourceRoot":"","sources":["../../src/cli/runCommand.ts"],"names":[],"mappings":"AA8EA;;GAEG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkGjE"}
|
|
@@ -0,0 +1,187 @@
|
|
|
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.runCommand = runCommand;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const zod_1 = require("zod");
|
|
40
|
+
const logger_1 = require("../utils/logger");
|
|
41
|
+
/**
|
|
42
|
+
* Schema for validating the run command input
|
|
43
|
+
* - body: Required, contains the main payload
|
|
44
|
+
* - headers: Optional, HTTP-like headers
|
|
45
|
+
*/
|
|
46
|
+
const runInputSchema = zod_1.z.object({
|
|
47
|
+
body: zod_1.z.any(),
|
|
48
|
+
headers: zod_1.z.record(zod_1.z.string()).optional(),
|
|
49
|
+
});
|
|
50
|
+
/**
|
|
51
|
+
* Parses inline JSON input
|
|
52
|
+
*/
|
|
53
|
+
function parseJsonInput(input) {
|
|
54
|
+
try {
|
|
55
|
+
return JSON.parse(input);
|
|
56
|
+
}
|
|
57
|
+
catch (_a) {
|
|
58
|
+
throw new Error('Invalid JSON input. Provide a valid JSON string.');
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Loads the agent dynamically from the path specified in minded.json
|
|
63
|
+
*/
|
|
64
|
+
async function loadAgent(projectDir, agentPath) {
|
|
65
|
+
// Resolve the agent path relative to project directory
|
|
66
|
+
const resolvedAgentPath = path.isAbsolute(agentPath)
|
|
67
|
+
? agentPath
|
|
68
|
+
: path.join(projectDir, agentPath);
|
|
69
|
+
// Remove .ts extension for require
|
|
70
|
+
const modulePath = resolvedAgentPath.replace(/\.ts$/, '');
|
|
71
|
+
const tsPath = `${modulePath}.ts`;
|
|
72
|
+
if (!fs.existsSync(tsPath)) {
|
|
73
|
+
throw new Error(`Agent file not found: ${tsPath}`);
|
|
74
|
+
}
|
|
75
|
+
try {
|
|
76
|
+
// Clear require cache to ensure fresh load
|
|
77
|
+
const resolvedPath = require.resolve(modulePath);
|
|
78
|
+
delete require.cache[resolvedPath];
|
|
79
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
80
|
+
const agentModule = require(modulePath);
|
|
81
|
+
// Support both default and named exports
|
|
82
|
+
const agent = agentModule.default || agentModule.agent || agentModule;
|
|
83
|
+
if (!agent || typeof agent.invoke !== 'function') {
|
|
84
|
+
throw new Error('Agent must export an instance with an invoke() method');
|
|
85
|
+
}
|
|
86
|
+
return agent;
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
if (err instanceof Error && err.message.includes('Cannot find module')) {
|
|
90
|
+
throw new Error(`Failed to load agent from ${modulePath}. Make sure ts-node/tsx is configured.`);
|
|
91
|
+
}
|
|
92
|
+
throw err;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Main run command handler
|
|
97
|
+
*/
|
|
98
|
+
async function runCommand(jsonInput) {
|
|
99
|
+
const projectDir = process.cwd();
|
|
100
|
+
const mindedConfigPath = path.join(projectDir, 'minded.json');
|
|
101
|
+
// Check if minded.json exists
|
|
102
|
+
if (!fs.existsSync(mindedConfigPath)) {
|
|
103
|
+
logger_1.logger.error({ msg: 'minded.json not found in the current directory' });
|
|
104
|
+
process.exit(1);
|
|
105
|
+
}
|
|
106
|
+
// Read and parse minded.json
|
|
107
|
+
let mindedConfig;
|
|
108
|
+
try {
|
|
109
|
+
const configContent = fs.readFileSync(mindedConfigPath, 'utf8');
|
|
110
|
+
mindedConfig = JSON.parse(configContent);
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
logger_1.logger.error({ message: 'Failed to read or parse minded.json', err });
|
|
114
|
+
process.exit(1);
|
|
115
|
+
}
|
|
116
|
+
// Get the agent path
|
|
117
|
+
const agentPath = mindedConfig.agent;
|
|
118
|
+
if (!agentPath) {
|
|
119
|
+
logger_1.logger.error({ msg: 'No agent path found in minded.json' });
|
|
120
|
+
process.exit(1);
|
|
121
|
+
}
|
|
122
|
+
// Parse and validate the JSON input
|
|
123
|
+
let parsedInput;
|
|
124
|
+
try {
|
|
125
|
+
parsedInput = parseJsonInput(jsonInput);
|
|
126
|
+
}
|
|
127
|
+
catch (err) {
|
|
128
|
+
logger_1.logger.error({ message: 'Failed to parse input', err: err instanceof Error ? err.message : String(err) });
|
|
129
|
+
process.exit(1);
|
|
130
|
+
}
|
|
131
|
+
// Validate against schema
|
|
132
|
+
const validationResult = runInputSchema.safeParse(parsedInput);
|
|
133
|
+
if (!validationResult.success) {
|
|
134
|
+
logger_1.logger.error({
|
|
135
|
+
msg: 'Invalid input schema',
|
|
136
|
+
errors: validationResult.error.errors.map((e) => `${e.path.join('.')}: ${e.message}`),
|
|
137
|
+
});
|
|
138
|
+
console.error('\nExpected schema:');
|
|
139
|
+
console.error(' {');
|
|
140
|
+
console.error(' "body": <any>, // Required');
|
|
141
|
+
console.error(' "headers": {...} // Optional');
|
|
142
|
+
console.error(' }');
|
|
143
|
+
process.exit(1);
|
|
144
|
+
}
|
|
145
|
+
const input = validationResult.data;
|
|
146
|
+
const triggerName = 'cli';
|
|
147
|
+
console.log(`\nš Running agent with trigger: ${triggerName}\n`);
|
|
148
|
+
try {
|
|
149
|
+
// Load the agent
|
|
150
|
+
const agent = await loadAgent(projectDir, agentPath);
|
|
151
|
+
// Prepare the trigger body
|
|
152
|
+
const triggerBody = {
|
|
153
|
+
...input.body,
|
|
154
|
+
...(input.headers && { headers: input.headers }),
|
|
155
|
+
};
|
|
156
|
+
// Invoke the agent
|
|
157
|
+
const result = await agent.invoke({
|
|
158
|
+
triggerBody,
|
|
159
|
+
triggerName,
|
|
160
|
+
});
|
|
161
|
+
// Output the result
|
|
162
|
+
console.log('\nā
Agent execution completed\n');
|
|
163
|
+
if (result !== undefined && result !== null) {
|
|
164
|
+
console.log('Result:');
|
|
165
|
+
try {
|
|
166
|
+
console.log(JSON.stringify(result, null, 2));
|
|
167
|
+
}
|
|
168
|
+
catch (_a) {
|
|
169
|
+
console.log(result);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// Clean up
|
|
173
|
+
if (typeof agent.onEnd === 'function') {
|
|
174
|
+
agent.onEnd();
|
|
175
|
+
}
|
|
176
|
+
process.exit(0);
|
|
177
|
+
}
|
|
178
|
+
catch (err) {
|
|
179
|
+
logger_1.logger.error({
|
|
180
|
+
msg: 'Agent execution failed',
|
|
181
|
+
err: err instanceof Error ? err.message : String(err),
|
|
182
|
+
stack: err instanceof Error ? err.stack : undefined,
|
|
183
|
+
});
|
|
184
|
+
process.exit(1);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=runCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runCommand.js","sourceRoot":"","sources":["../../src/cli/runCommand.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiFA,gCAkGC;AAnLD,uCAAyB;AACzB,2CAA6B;AAC7B,6BAAwB;AACxB,4CAAyC;AAEzC;;;;GAIG;AACH,MAAM,cAAc,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,OAAC,CAAC,GAAG,EAAE;IACb,OAAO,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC;AAWH;;GAEG;AACH,SAAS,cAAc,CAAC,KAAa;IACnC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAAC,WAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,SAAS,CAAC,UAAkB,EAAE,SAAiB;IAC5D,uDAAuD;IACvD,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAClD,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAErC,mCAAmC;IACnC,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,GAAG,UAAU,KAAK,CAAC;IAElC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,CAAC;QACH,2CAA2C;QAC3C,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACjD,OAAO,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAEnC,iEAAiE;QACjE,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAExC,yCAAyC;QACzC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC;QAEtE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACvE,MAAM,IAAI,KAAK,CACb,6BAA6B,UAAU,wCAAwC,CAChF,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,UAAU,CAAC,SAAiB;IAChD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACjC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAE9D,8BAA8B;IAC9B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrC,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,gDAAgD,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,6BAA6B;IAC7B,IAAI,YAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAChE,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,qCAAqC,EAAE,GAAG,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,qBAAqB;IACrB,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;IACrC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,oCAAoC,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,oCAAoC;IACpC,IAAI,WAAoB,CAAC;IACzB,IAAI,CAAC;QACH,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,0BAA0B;IAC1B,MAAM,gBAAgB,GAAG,cAAc,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC/D,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAC9B,eAAM,CAAC,KAAK,CAAC;YACX,GAAG,EAAE,sBAAsB;YAC3B,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;SACtF,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACvD,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACvD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAa,gBAAgB,CAAC,IAAI,CAAC;IAC9C,MAAM,WAAW,GAAG,KAAK,CAAC;IAE1B,OAAO,CAAC,GAAG,CAAC,oCAAoC,WAAW,IAAI,CAAC,CAAC;IAEjE,IAAI,CAAC;QACH,iBAAiB;QACjB,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAErD,2BAA2B;QAC3B,MAAM,WAAW,GAAG;YAClB,GAAG,KAAK,CAAC,IAAI;YACb,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;SACjD,CAAC;QAEF,mBAAmB;QACnB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;YAChC,WAAW;YACX,WAAW;SACZ,CAAC,CAAC;QAEH,oBAAoB;QACpB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAE/C,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,IAAI,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC;YAAC,WAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,WAAW;QACX,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACtC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAM,CAAC,KAAK,CAAC;YACX,GAAG,EAAE,wBAAwB;YAC7B,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YACrD,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;SACpD,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
package/src/cli/index.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { logger } from '../utils/logger';
|
|
|
6
6
|
import { execSync } from 'child_process';
|
|
7
7
|
import { setupLocalOperator, isLocalOperatorSetup } from './localOperatorSetup';
|
|
8
8
|
import { runValidateCommand } from './validateFlow';
|
|
9
|
+
import { runCommand } from './runCommand';
|
|
9
10
|
|
|
10
11
|
const ENV_FILE = '.env';
|
|
11
12
|
|
|
@@ -179,9 +180,22 @@ async function main() {
|
|
|
179
180
|
// Command to validate agent flows. Optional: pass path to agent project directory
|
|
180
181
|
const agentPath = args[1]; // Optional path argument
|
|
181
182
|
runValidateCommand(agentPath);
|
|
183
|
+
} else if (command === 'run') {
|
|
184
|
+
// Command to run the agent with inline JSON input
|
|
185
|
+
// Usage: npx minded run <json_input>
|
|
186
|
+
const jsonInput = args[1];
|
|
187
|
+
if (!jsonInput) {
|
|
188
|
+
logger.error({ msg: 'Please provide inline JSON input' });
|
|
189
|
+
console.error('\nUsage:');
|
|
190
|
+
console.error(' npx minded run \'{"body": {...}}\'');
|
|
191
|
+
console.error(' npx minded run \'{"body": {...}, "headers": {...}}\'');
|
|
192
|
+
process.exit(1);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
await runCommand(jsonInput);
|
|
182
196
|
} else {
|
|
183
197
|
logger.error({
|
|
184
|
-
msg: 'Unknown command. Available commands: token, setup-local-operator, check-local-operator, generate-lambda-ts-handler, validate',
|
|
198
|
+
msg: 'Unknown command. Available commands: token, setup-local-operator, check-local-operator, generate-lambda-ts-handler, validate, run',
|
|
185
199
|
});
|
|
186
200
|
process.exit(1);
|
|
187
201
|
}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { logger } from '../utils/logger';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Schema for validating the run command input
|
|
8
|
+
* - body: Required, contains the main payload
|
|
9
|
+
* - headers: Optional, HTTP-like headers
|
|
10
|
+
*/
|
|
11
|
+
const runInputSchema = z.object({
|
|
12
|
+
body: z.any(),
|
|
13
|
+
headers: z.record(z.string()).optional(),
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
type RunInput = z.infer<typeof runInputSchema>;
|
|
17
|
+
|
|
18
|
+
interface MindedConfig {
|
|
19
|
+
agent: string;
|
|
20
|
+
flows?: string[];
|
|
21
|
+
tools?: string[];
|
|
22
|
+
playbooks?: string[];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Parses inline JSON input
|
|
27
|
+
*/
|
|
28
|
+
function parseJsonInput(input: string): unknown {
|
|
29
|
+
try {
|
|
30
|
+
return JSON.parse(input);
|
|
31
|
+
} catch {
|
|
32
|
+
throw new Error('Invalid JSON input. Provide a valid JSON string.');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Loads the agent dynamically from the path specified in minded.json
|
|
38
|
+
*/
|
|
39
|
+
async function loadAgent(projectDir: string, agentPath: string): Promise<any> {
|
|
40
|
+
// Resolve the agent path relative to project directory
|
|
41
|
+
const resolvedAgentPath = path.isAbsolute(agentPath)
|
|
42
|
+
? agentPath
|
|
43
|
+
: path.join(projectDir, agentPath);
|
|
44
|
+
|
|
45
|
+
// Remove .ts extension for require
|
|
46
|
+
const modulePath = resolvedAgentPath.replace(/\.ts$/, '');
|
|
47
|
+
const tsPath = `${modulePath}.ts`;
|
|
48
|
+
|
|
49
|
+
if (!fs.existsSync(tsPath)) {
|
|
50
|
+
throw new Error(`Agent file not found: ${tsPath}`);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
try {
|
|
54
|
+
// Clear require cache to ensure fresh load
|
|
55
|
+
const resolvedPath = require.resolve(modulePath);
|
|
56
|
+
delete require.cache[resolvedPath];
|
|
57
|
+
|
|
58
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
59
|
+
const agentModule = require(modulePath);
|
|
60
|
+
|
|
61
|
+
// Support both default and named exports
|
|
62
|
+
const agent = agentModule.default || agentModule.agent || agentModule;
|
|
63
|
+
|
|
64
|
+
if (!agent || typeof agent.invoke !== 'function') {
|
|
65
|
+
throw new Error('Agent must export an instance with an invoke() method');
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return agent;
|
|
69
|
+
} catch (err) {
|
|
70
|
+
if (err instanceof Error && err.message.includes('Cannot find module')) {
|
|
71
|
+
throw new Error(
|
|
72
|
+
`Failed to load agent from ${modulePath}. Make sure ts-node/tsx is configured.`
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
throw err;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Main run command handler
|
|
81
|
+
*/
|
|
82
|
+
export async function runCommand(jsonInput: string): Promise<void> {
|
|
83
|
+
const projectDir = process.cwd();
|
|
84
|
+
const mindedConfigPath = path.join(projectDir, 'minded.json');
|
|
85
|
+
|
|
86
|
+
// Check if minded.json exists
|
|
87
|
+
if (!fs.existsSync(mindedConfigPath)) {
|
|
88
|
+
logger.error({ msg: 'minded.json not found in the current directory' });
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Read and parse minded.json
|
|
93
|
+
let mindedConfig: MindedConfig;
|
|
94
|
+
try {
|
|
95
|
+
const configContent = fs.readFileSync(mindedConfigPath, 'utf8');
|
|
96
|
+
mindedConfig = JSON.parse(configContent);
|
|
97
|
+
} catch (err) {
|
|
98
|
+
logger.error({ message: 'Failed to read or parse minded.json', err });
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Get the agent path
|
|
103
|
+
const agentPath = mindedConfig.agent;
|
|
104
|
+
if (!agentPath) {
|
|
105
|
+
logger.error({ msg: 'No agent path found in minded.json' });
|
|
106
|
+
process.exit(1);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// Parse and validate the JSON input
|
|
110
|
+
let parsedInput: unknown;
|
|
111
|
+
try {
|
|
112
|
+
parsedInput = parseJsonInput(jsonInput);
|
|
113
|
+
} catch (err) {
|
|
114
|
+
logger.error({ message: 'Failed to parse input', err: err instanceof Error ? err.message : String(err) });
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// Validate against schema
|
|
119
|
+
const validationResult = runInputSchema.safeParse(parsedInput);
|
|
120
|
+
if (!validationResult.success) {
|
|
121
|
+
logger.error({
|
|
122
|
+
msg: 'Invalid input schema',
|
|
123
|
+
errors: validationResult.error.errors.map((e) => `${e.path.join('.')}: ${e.message}`),
|
|
124
|
+
});
|
|
125
|
+
console.error('\nExpected schema:');
|
|
126
|
+
console.error(' {');
|
|
127
|
+
console.error(' "body": <any>, // Required');
|
|
128
|
+
console.error(' "headers": {...} // Optional');
|
|
129
|
+
console.error(' }');
|
|
130
|
+
process.exit(1);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
const input: RunInput = validationResult.data;
|
|
134
|
+
const triggerName = 'cli';
|
|
135
|
+
|
|
136
|
+
console.log(`\nš Running agent with trigger: ${triggerName}\n`);
|
|
137
|
+
|
|
138
|
+
try {
|
|
139
|
+
// Load the agent
|
|
140
|
+
const agent = await loadAgent(projectDir, agentPath);
|
|
141
|
+
|
|
142
|
+
// Prepare the trigger body
|
|
143
|
+
const triggerBody = {
|
|
144
|
+
...input.body,
|
|
145
|
+
...(input.headers && { headers: input.headers }),
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
// Invoke the agent
|
|
149
|
+
const result = await agent.invoke({
|
|
150
|
+
triggerBody,
|
|
151
|
+
triggerName,
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
// Output the result
|
|
155
|
+
console.log('\nā
Agent execution completed\n');
|
|
156
|
+
|
|
157
|
+
if (result !== undefined && result !== null) {
|
|
158
|
+
console.log('Result:');
|
|
159
|
+
try {
|
|
160
|
+
console.log(JSON.stringify(result, null, 2));
|
|
161
|
+
} catch {
|
|
162
|
+
console.log(result);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// Clean up
|
|
167
|
+
if (typeof agent.onEnd === 'function') {
|
|
168
|
+
agent.onEnd();
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
process.exit(0);
|
|
172
|
+
} catch (err) {
|
|
173
|
+
logger.error({
|
|
174
|
+
msg: 'Agent execution failed',
|
|
175
|
+
err: err instanceof Error ? err.message : String(err),
|
|
176
|
+
stack: err instanceof Error ? err.stack : undefined,
|
|
177
|
+
});
|
|
178
|
+
process.exit(1);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|