claude-flow-novice
Version:
Claude Flow Novice - Advanced orchestration platform for multi-agent AI workflows with CFN Loop architecture Includes CodeSearch (hybrid SQLite + pgvector), mem0/memgraph specialists, and all CFN skills.
65 lines (64 loc) • 2.2 kB
JavaScript
import Redis from 'ioredis';
const argValue = (flag)=>{
const index = process.argv.indexOf(flag);
if (index === -1 || index + 1 >= process.argv.length) {
return undefined;
}
return process.argv[index + 1];
};
const parseArgs = ()=>{
const taskId = argValue('--task-id');
const description = argValue('--description');
const mode = argValue('--mode');
const maxIterationsRaw = argValue('--max-iterations');
if (!taskId) throw new Error('--task-id is required');
if (!/^[A-Za-z0-9_-]+$/.test(taskId)) {
throw new Error('Invalid task id format; use alphanumeric, dash, underscore only');
}
if (!description) throw new Error('--description is required');
if (!mode) throw new Error('--mode is required');
if (!maxIterationsRaw) throw new Error('--max-iterations is required');
const maxIterations = Number(maxIterationsRaw);
if (!Number.isFinite(maxIterations) || maxIterations <= 0) {
throw new Error('--max-iterations must be a positive number');
}
return {
taskId,
description,
mode,
maxIterations,
redisHost: process.env.REDIS_HOST || 'localhost',
redisPort: Number(process.env.REDIS_PORT || 6379),
ttlSeconds: 86400
};
};
const storeContext = async (args)=>{
const redis = new Redis({
host: args.redisHost,
port: args.redisPort,
lazyConnect: true
});
try {
await redis.connect();
const key = `swarm:${args.taskId}:context`;
await redis.hset(key, {
'task_description': args.description,
'mode': args.mode,
'max_iterations': String(args.maxIterations)
});
await redis.expire(key, args.ttlSeconds);
console.log(`✅ Task context stored in Redis: ${key}`);
console.log(` TTL: ${args.ttlSeconds} seconds`);
} finally{
redis.disconnect();
}
};
const main = async ()=>{
const args = parseArgs();
await storeContext(args);
};
main().catch((error)=>{
console.error(`❌ Failed to store task context: ${error.message}`);
process.exitCode = 1;
});
//# sourceMappingURL=store-task-context.js.map