Skip to content
Merged
104 changes: 40 additions & 64 deletions ui/src/features/agent/agentActions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3027,29 +3027,29 @@ export async function executeAgentActions(
}),
})
} else if (action.type === 'create_series_episode') {
const { createFilledSeriesEpisode } = await import('./labActions')
results.push({ action, ok: true, message: await createFilledSeriesEpisode(action) })
const outcome = await defaultApplicationAdapters.seriesLab.createEpisode(action)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'update_series_episode') {
const { updateSeriesEpisode } = await import('./labActions')
results.push({ action, ok: true, message: await updateSeriesEpisode(action) })
const outcome = await defaultApplicationAdapters.seriesLab.updateEpisode(action)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'generate_series_plan') {
const { generateSeriesPlan } = await import('./labActions')
results.push({ action, ok: true, message: await generateSeriesPlan(action) })
const outcome = await defaultApplicationAdapters.seriesLab.generatePlan(action)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'apply_series_plan') {
const { applySeriesPlan } = await import('./labActions')
results.push({ action, ok: true, message: await applySeriesPlan(action) })
const outcome = await defaultApplicationAdapters.seriesLab.applyPlan(action)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'render_series_shots') {
const { renderSeriesShots } = await import('./labActions')
results.push({ action, ok: true, message: await renderSeriesShots(action) })
const outcome = await defaultApplicationAdapters.seriesLab.renderShots(action)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'review_series_attempts') {
const { reviewSeriesAttempts } = await import('./labActions')
results.push({ action, ok: true, message: await reviewSeriesAttempts(action) })
const outcome = await defaultApplicationAdapters.seriesLab.reviewAttempts(action)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'assemble_series_episode') {
const { assembleSeriesEpisode } = await import('./labActions')
results.push({ action, ok: true, message: await assembleSeriesEpisode(action) })
const outcome = await defaultApplicationAdapters.seriesLab.assembleEpisode(action)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'commit_series_canon') {
const { commitSeriesCanonDelta } = await import('./labActions')
results.push({ action, ok: true, message: await commitSeriesCanonDelta(action) })
const outcome = await defaultApplicationAdapters.seriesLab.commitCanon(action)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'open_3d_scene') {
await defaultApplicationAdapters.video3d.open()
const { requestAgentSceneControl } = await import('./agentUiBus')
Expand All @@ -3063,83 +3063,63 @@ export async function executeAgentActions(
const { requestAgentSceneControl } = await import('./agentUiBus')
results.push({ action, ok: true, message: await requestAgentSceneControl(action) })
} else if (action.type === 'create_character_kit') {
const { createAgentCharacterKit } = await import('./characterKitActions')
const outcome = await createAgentCharacterKit(action)
const outcome = await defaultApplicationAdapters.characterKit.create(action)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'open_character_kit') {
const { openAgentCharacterKit } = await import('./characterKitActions')
const outcome = await openAgentCharacterKit(action)
const outcome = await defaultApplicationAdapters.characterKit.openKit(action)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'update_character_kit') {
const { updateAgentCharacterKit } = await import('./characterKitActions')
const outcome = await updateAgentCharacterKit(action)
const outcome = await defaultApplicationAdapters.characterKit.update(action)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'attach_character_kit_references') {
const { attachAgentCharacterKitReferences } = await import('./characterKitActions')
const outcome = await attachAgentCharacterKitReferences(action)
const outcome = await defaultApplicationAdapters.characterKit.attachReference(action)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'build_character_kit') {
const { buildAgentCharacterKit } = await import('./characterKitActions')
const outcome = await buildAgentCharacterKit(action)
const outcome = await defaultApplicationAdapters.characterKit.build(action)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'open_character_kit_rig') {
const { openAgentCharacterKitRig } = await import('./characterKitActions')
const outcome = await openAgentCharacterKitRig(action)
const outcome = await defaultApplicationAdapters.characterKit.openRig(action)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'apply_character_kit_preset') {
const { applyAgentCharacterKitPreset } = await import('./characterKitActions')
const outcome = await applyAgentCharacterKitPreset(action)
const outcome = await defaultApplicationAdapters.characterKit.applyPreset(action)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'track_character_kit_job') {
const { trackAgentCharacterKitJob } = await import('./characterKitActions')
const outcome = await trackAgentCharacterKitJob(action)
const outcome = await defaultApplicationAdapters.characterKit.trackJob(action)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'create_video_editor_project') {
const { createAgentVideoEditorProject } = await import('./videoEditorActions')
const outcome = await createAgentVideoEditorProject(action)
const outcome = await defaultApplicationAdapters.videoEditor.create(action)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'open_video_editor_project') {
const { openAgentVideoEditorProject } = await import('./videoEditorActions')
const outcome = await openAgentVideoEditorProject(action)
const outcome = await defaultApplicationAdapters.videoEditor.openProject(action)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'add_video_editor_clips') {
const { addAgentVideoEditorClips } = await import('./videoEditorActions')
const outcome = await addAgentVideoEditorClips(action)
const outcome = await defaultApplicationAdapters.videoEditor.addClips(action)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'order_video_editor_clips') {
const { orderAgentVideoEditorClips } = await import('./videoEditorActions')
const outcome = await orderAgentVideoEditorClips(action)
const outcome = await defaultApplicationAdapters.videoEditor.orderClips(action)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'trim_video_editor_clip') {
const { trimAgentVideoEditorClip } = await import('./videoEditorActions')
const outcome = await trimAgentVideoEditorClip(action)
const outcome = await defaultApplicationAdapters.videoEditor.trimClip(action)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'add_video_editor_audio') {
const { addAgentVideoEditorAudio } = await import('./videoEditorActions')
const outcome = await addAgentVideoEditorAudio(action)
const outcome = await defaultApplicationAdapters.videoEditor.addAudio(action)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'validate_video_editor_timeline') {
const { validateAgentVideoEditorTimeline } = await import('./videoEditorActions')
const outcome = await validateAgentVideoEditorTimeline()
const outcome = await defaultApplicationAdapters.videoEditor.validateTimeline()
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'export_video_editor') {
if (!action.confirm) throw new Error('Exportar Video Editor requiere confirm=true.')
const { exportAgentVideoEditor } = await import('./videoEditorActions')
const outcome = await exportAgentVideoEditor(action)
const outcome = await defaultApplicationAdapters.videoEditor.exportProject(action)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'track_video_editor_export') {
const { trackAgentVideoEditorExport } = await import('./videoEditorActions')
const outcome = await trackAgentVideoEditorExport()
const outcome = await defaultApplicationAdapters.videoEditor.trackExport()
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'create_comic') {
const { createFilledComic } = await import('./labActions')
results.push({ action, ok: true, message: await createFilledComic(action) })
const outcome = await defaultApplicationAdapters.comic.create(action)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'generate_comic') {
if (!action.confirm) throw new Error('Dibujar las viñetas requiere confirm=true.')
const { generateFilledComicArtwork } = await import('./labActions')
const outcome = await generateFilledComicArtwork(action, onStep, createdComicId || undefined)
const { useComicStore } = await import('../comics/store')
const project = useComicStore.getState().project
const outcome = await defaultApplicationAdapters.comic.generate(action, createdComicId || undefined)
results.push({
action,
ok: outcome.state !== 'failed',
Expand All @@ -3148,23 +3128,19 @@ export async function executeAgentActions(
state: outcome.state,
message: outcome.message,
recoverable: outcome.state === 'partial' || outcome.state === 'failed',
target: { kind: 'comic', id: project.id, title: project.title },
target: outcome.target,
executionKey: executionKey({
workspace: useStore.getState().activeWorkspace || 'default',
type: action.type,
targetId: project.id,
targetId: outcome.target.id,
params: action,
}),
}),
})
} else if (action.type === 'generate_comic_panel') {
if (!action.confirm) throw new Error('Regenerar una viñeta requiere confirm=true.')
const { generateComicPanelArtwork } = await import('./labActions')
results.push({
action,
ok: true,
message: await generateComicPanelArtwork(action.pageNumber, action.panelNumber, onStep),
})
const outcome = await defaultApplicationAdapters.comic.generatePanel(action.pageNumber, action.panelNumber)
results.push({ action, ok: true, message: outcome.message, report: outcome.report })
} else if (action.type === 'attach_studio_references') {
const { attachStudioReferences } = await import('./studioGuidance')
results.push({ action, ok: true, message: await attachStudioReferences(action) })
Expand Down
Loading