| ✨ feat(agent-mock): add agent mock devtools with playback & fixture viewer (#14436)
* :package: feat(agent-mock): scaffold package skeleton
* :wrench: chore(agent-mock): align deps + add vitest config
* :sparkles: feat(agent-mock): add core types
* :sparkles: feat(agent-mock): add chunkSplitter with code-point safety
* :sparkles: feat(agent-mock): map ExecutionSnapshot → MockEvent[]
* :sparkles: feat(agent-mock): add defineCase / llmStep / toolStep / errorStep DSL
* :sparkles: feat(agent-mock): add snapshotToMockCase helper
* :sparkles: feat(agent-mock): add todo-write-stress builtin case + registry
* :sparkles: feat(agent-mock): add generator registry + tool-stress generator
* :sparkles: feat(agent-mock): add 4 more builtin cases (long-reasoning, mixed, error, subagent)
* :sparkles: feat(agent-mock): add subagent-tree + long-reasoning generators
* :sparkles: feat(agent-mock): add MockPlayer state machine + step navigation
* :sparkles: feat(agent-mock): add __agentMockSilent flag + signal bridge guard
* :sparkles: feat(agent-mock): add executeMockStream with side-effect gating
* :sparkles: feat(agent-mock): add dev-only devClearMockTopics TRPC procedure
* :sparkles: feat(agent-mock): add dev API to list/read .agent-tracing snapshots
* :sparkles: feat(agent-mock): add agentMockStore zustand
* :sparkles: feat(agent-mock): add useMockCases hook
* :sparkles: feat(agent-mock): add useAgentMockPlayer hook
* :sparkles: feat(agent-mock): add useMockTopicCleanup hook
* :sparkles: feat(agent-mock): add Fab entry component
* :sparkles: feat(agent-mock): add Modal shell with tab bar
* :sparkles: feat(agent-mock): add CaseList sidebar with search + groups
* :sparkles: feat(agent-mock): add MiniBar floating playback controls
* :sparkles: feat(agent-mock): add StatusGrid component
* :sparkles: feat(agent-mock): add Controls (play/pause/step/speed)
* :sparkles: feat(agent-mock): add ProgressBar
* :sparkles: feat(agent-mock): add TargetPicker
* :sparkles: feat(agent-mock): compose PlayerPanel
* :sparkles: feat(agent-mock): add TimelinePanel + virtualized EventRow
* :sparkles: feat(agent-mock): add read-only FixtureViewer with copy button
* :sparkles: feat(agent-mock): add SettingsPanel with toggles + clear topics
* :recycle: refactor(agent-mock): address quality review (stable itemContent, type-safe error handling, clipboard catch)
* :sparkles: feat(agent-mock): wire entry component (FAB + Modal + MiniBar)
* :sparkles: feat(agent-mock): mount AgentMockDevtools in SPAGlobalProvider
* :recycle: refactor(agent-mock): switch Modal to imperative createModal API
* :bug: fix(agent-mock): use close() + onOpenChangeComplete to preserve motion exit animation
* work
Signed-off-by: Innei <tukon479@gmail.com>
* minify
Signed-off-by: Innei <tukon479@gmail.com>
* :lipstick: refactor(agent-mock): rebuild devtools UI/UX with mono palette and IA reorg
Replace the in-modal sidebar + tab strip + MiniBar with a Fab-anchored
draggable Popover (case picker, transport, replay/loop, scrubbable progress,
stop, Open DevTools) and a token-driven Modal layout (two-row header,
Segmented view tabs, StatsStrip, sticky TransportBar). Wire EventRow and the
progress bars to seekToEventIndex (resolves the prior TODO), swap alert() for
toast.warning, persist loop and popover position to localStorage.
* work
Signed-off-by: Innei <tukon479@gmail.com>
* :broom: chore(agent-mock): remove replay debug logs
* 👷 build: add @google/genai to pnpm allowBuilds
Fixes ERR_PNPM_IGNORED_BUILDS in CI — pnpm v11 blocks install
when a dependency with install scripts is not in the allowBuilds list.
* 🐛 fix: resolve TS type errors in useAgentMockPlayer
- parentMessageId: coerce `undefined` to `null` to match `string | null`
- threadId: coerce `null` to `undefined` for cancelOperations param
* :recycle: refactor: revert ConversationArea & sync-import AgentMockDevtools
- ConversationArea: restore messageMapKey(context), avoid needless field spread
- SPAGlobalProvider: switch AgentMockDevtools to sync import (dev-only, no need to lazy)
---------
Signed-off-by: Innei <tukon479@gmail.com> | 17 天前 |