automagik-genie
Version:
Self-evolving AI agent orchestration framework with Model Context Protocol support
37 lines (36 loc) • 1.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createResumeHandler = createResumeHandler;
const forge_executor_1 = require("../../lib/forge-executor");
const forge_helpers_1 = require("../../lib/forge-helpers");
function createResumeHandler(ctx) {
return async (parsed) => {
const cmdArgs = parsed.commandArgs;
if (cmdArgs.length < 2) {
throw new Error('Usage: genie resume <attempt-id> "<prompt>"');
}
const store = ctx.sessionService.load({ onWarning: ctx.recordRuntimeWarning });
const attemptId = cmdArgs[0]; // Direct UUID (issue #407 fix)
const prompt = cmdArgs.slice(1).join(' ').trim();
const entry = store.sessions[attemptId];
if (!entry) {
throw new Error(`❌ No session found with ID '${attemptId}'`);
}
const forgeExecutor = (0, forge_executor_1.createForgeExecutor)();
// NOTE: Agent profile sync removed - Forge discovers .genie folders natively
try {
await forgeExecutor.resumeTask(attemptId, prompt);
}
catch (error) {
const reason = (0, forge_helpers_1.describeForgeError)(error);
ctx.recordRuntimeWarning(`Forge resume failed: ${reason}`);
throw new Error(`Forge backend rejected resume for session '${attemptId}'. ${forge_helpers_1.FORGE_RECOVERY_HINT}`);
}
entry.lastPrompt = prompt.slice(0, 200);
entry.lastUsed = new Date().toISOString();
entry.status = 'running';
store.sessions[attemptId] = entry;
await ctx.sessionService.save(store);
process.stdout.write(`✓ Resumed session ${attemptId} via Forge\n`);
};
}