<!-- source-hash: 928a4aa8278d9b5dca88c4e94782c25c -->
Storybook stories for the `EmbeddableChat` component, covering three chat surface configurations: Guide-only, Mingo-only, and dual-mode (both transports enabled with a toggle).

## Key Components

| Export | Type | Description |
|--------|------|-------------|
| `GuideOnly` | `Story` | Legacy single-mode Guide consumer matching `multi-platform-hub` mount pattern |
| `MingoOnly` | `Story` | NATS agent transport surface with no mode toggle |
| `BothModes` | `Story` | Dual-mode consumer with segmented Guide/Mingo header toggle |
| `StoryShell` | Decorator | Wraps stories with `QueryClientProvider` + `ChatRuntimeContext` + canvas background |
| `createMockRuntime()` | Helper | Returns a `ChatRuntime` with stub endpoints (all `/__story__/*`) |
| `createMockMingoConfig()` | Helper | Returns a `UseNatsChatAdapterConfig` with `getNatsWsUrl: () => null` (no WS handshake) |
| `SAMPLE_SLASH_COMMANDS` | Constant | 13 mock slash commands used to populate the empty-state chip grid |

## Usage Example

```typescript
// Minimal dual-mode story using the same pattern as BothModes
export const MyStory: Story = {
  render: (args) => (
    <EmbeddableChat
      {...args}
      modes={{
        guide: {},
        mingo: createMockMingoConfig(),
      }}
      defaultActiveMode="mingo"
      defaultOpen
      showInternalTrigger={false}
    />
  ),
  args: {},
}
```

## Notes

- The `window.fetch` shim is installed **at module level** (not inside an effect) so the mock is in place before `EmbeddableChat`'s `useEffect` fires. A `__embeddableChatStoriesMockInstalled__` flag prevents double-patching across hot reloads.
- All story endpoints resolve to `/__story__/*` — accidental real fetches return 404, not real server data.
- `getNatsWsUrl: () => null` keeps the NATS dialog subscription idle in all stories.