Depends on #1487 ## Summary - Introduce `packages/core-agent` — a new pure-runtime package that extracts zero-Vue/Pinia algorithmic logic from `@proj-airi/stage-ui`, following a "compatible facade + core sinking" strategy - Migrate shared chat types, LLM streaming types, chat hook registry, session message merge logic, context registry algorithm, and LLM service utilities into `core-agent` - `stage-ui` files are preserved as re-exports / thin wrappers — all external imports, store IDs, and public APIs remain unchanged ## Motivation `stage-ui` currently mixes pure agent runtime logic (algorithms, type definitions, stateless utilities) with Vue/Pinia state management and browser-specific adapters. This coupling makes it hard to: - Test agent logic in isolation - Reuse agent algorithms outside of Vue contexts (e.g., server-side, CLI, other frameworks) - Reason about the boundary between "what the agent does" vs "how the UI manages state" --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by-agent: Unknown <unknown@example.com>
Stage UI
Shared core for stage
Histoire (UI storyboard)
pnpm -F @proj-airi/stage-ui run story:dev
Project structure
- If a story is bound to a specific component, it can be placed beside the component in the
srcfolder. e.g.,MyComponent.story.vue - If a story is not bound to a specific component, then it should be placed in the
storiesfolder. e.g.,MyStory.story.vue