feat(narrative): add frontend API client

Five named exports covering narrative endpoints, following the
existing pattern in frontend/src/api/simulation.js (service +
requestWithRetry + named exports).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
anadoris007 2026-04-20 22:02:44 +05:30
parent 727f4403e3
commit d4557fd8b8
1 changed files with 42 additions and 0 deletions

View File

@ -0,0 +1,42 @@
import service, { requestWithRetry } from './index'
/**
* Get the full generated story for a simulation.
* @param {string} simId
*/
export const getFullStory = (simId) => {
return service.get(`/api/narrative/story/${simId}`)
}
/**
* Get a single round's story beat.
* @param {string} simId
* @param {number} roundNum
*/
export const getRoundStory = (simId, roundNum) => {
return service.get(`/api/narrative/story/${simId}/round/${roundNum}`)
}
/**
* Translate a round on demand generates prose via LLM and stores the beat.
* @param {Object} data - { sim_id, round, platform?, tone? }
*/
export const translateRound = (data) => {
return requestWithRetry(() => service.post('/api/narrative/translate', data), 3, 2000)
}
/**
* Get extended character roster with emotional state.
* @param {string} simId
*/
export const getCharacters = (simId) => {
return service.get(`/api/narrative/characters/${simId}`)
}
/**
* Bootstrap narrative character profiles from existing OASIS profiles.
* @param {string} simId
*/
export const initCharacters = (simId) => {
return requestWithRetry(() => service.post(`/api/narrative/characters/${simId}/init`), 3, 1000)
}