npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@cloud-ru/ds-ai-chain-of-thoughts

v2.1.5

Published

Цепочка рассуждений AI-агента (Chain of Thoughts) — сворачиваемый заголовок «Размышляю» с длительностью и список строк-инструментов.

Readme

AiChainOfThoughts

@cloud-ru/ds-ai-chain-of-thoughts — Цепочка рассуждений AI-агента (Chain of Thoughts) — сворачиваемый заголовок «Размышляю» с длительностью и список строк-инструментов.

AiChainOfThoughts — цепочка рассуждений AI-агента (Chain of Thoughts) для Гига-помощника: сворачиваемый заголовок «Размышляю» / «Размышлял» с длительностью и список строк-инструментов под ним.

Раскрытие — controlled (open + onOpenChange) либо uncontrolled (defaultOpen). Контент цепочки передаётся слотом children (строки @cloud-ru/ds-ai-tool), сам компонент его не запоминает.

Когда использовать

  • Показ процесса рассуждения агента в чате: заголовок со статусом и список выполненных шагов-инструментов.
  • Потоковое отображение размышлений (стриминг) — заголовок остаётся, контент дополняется по мере поступления шагов.

Когда не нужен

  • Одиночный шаг reasoning без заголовка-цепочки:
    • используйте @cloud-ru/ds-ai-reasoning.
  • Отдельный вызов инструмента вне цепочки:
    • используйте AiTool / AiToolSimple из @cloud-ru/ds-ai-tool.

Анатомия

InProgress (default true)

  • true — слева иконка (по умолчанию GigaChat), подпись «Размышляю» (настоящее время) и длительность. По умолчанию shimmer покрывает иконку Giga и подпись.
  • false — без иконки, подпись «Размышлял» (прошедшее время), без shimmer.

Icon (default GigaChat)

Слот icon в активном состоянии (inProgress или broken):

  • не передан — иконка GigaChat;
  • передан React-узел — кастомная иконка (например Sun Loader);
  • null — иконка скрыта.

При включённом shimmer любая иконка заливается волной вместе с подписью, см. раздел «Shimmer».

Проп прокидывается с AiChainOfThoughts в AiChainOfThoughtsHeadline.

Shimmer (default true)

В активном состоянии по строке заголовка идёт брендовая волна: сине-зелёная полоса проходит слева направо за 3 секунды, затем держит паузу 2 секунды. Параметры волны заданы в @cloud-ru/ds-ai-shimmer.

Волна покрывает иконку, подпись и длительность одной сплошной полосой. Своя иконка из icon переливается наравне с GigaChat, а Sun из @cloud-ru/ds-loader — ещё и с собственной анимацией внутри волны. shimmer={false} возвращает статичную строку с обычной иерархией цветов и не сдвигает ни один элемент ряда.

Проп прокидывается с AiChainOfThoughts в Headline.

Broken (default false)

Поток рассуждения прерван: вместо длительности и chevron'а заголовок показывает сообщение brokenMessage, контент-цепочка не раскрывается.

Open (default false)

Раскрытие контент-цепочки. Chevron в заголовке появляется только при наличии children и вне состояния broken.

Установка

pnpm add @cloud-ru/ds-ai-chain-of-thoughts
import { AiChainOfThoughts, AiChainOfThoughtsHeadline } from '@cloud-ru/ds-ai-chain-of-thoughts'

Примеры использования

Default

Цепочка с раскрытым списком инструментов

import { AiChainOfThoughts } from '@cloud-ru/ds-ai-chain-of-thoughts';
import { AI_TOOL_ICON_TYPE, AI_TOOL_STATUS_STATE, AiTool, AiToolSimple } from '@cloud-ru/ds-ai-tool';

export function Default() {
  return (
    <AiChainOfThoughts inProgress duration={31568949} defaultOpen>
      <AiToolSimple name='status_for_users' icon={AI_TOOL_ICON_TYPE.Search} connector />
      <AiTool
        name='status_for_users'
        icon={AI_TOOL_ICON_TYPE.Search}
        state={AI_TOOL_STATUS_STATE.Success}
        duration={9}
        call='{ "user_ids": [1, 2, 3] }'
      />
    </AiChainOfThoughts>
  );
}

Broken

Прерванный поток рассуждения

import { AiChainOfThoughts } from '@cloud-ru/ds-ai-chain-of-thoughts';

export function Broken() {
  return <AiChainOfThoughts broken />;
}

Headline

Заголовок в процессе и завершённый

import { AiChainOfThoughtsHeadline } from '@cloud-ru/ds-ai-chain-of-thoughts';

export function HeadlineStates() {
  return (
    <div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>
      <AiChainOfThoughtsHeadline inProgress duration={31568949} />
      <AiChainOfThoughtsHeadline inProgress={false} duration={31568949} />
    </div>
  );
}

Props

AiChainOfThoughts

AiChainOfThoughtsProps

| Prop | Type | Default | Description | |------|------|---------|-------------| | broken | boolean | false | Поток рассуждения прерван. Заголовок показывает сообщение brokenMessage, контент-цепочка не раскрывается. По умолчанию false. | | brokenMessage | ReactNode | — | Текст сообщения о прерванном потоке (показывается при broken). | | children | ReactNode | — | Контент-цепочка рассуждения — строки AiTool / AiToolSimple. Рендерится под заголовком в раскрытом состоянии. | | className | string | — | Доп. класс корня. | | data-test-id | string | ai-chain-of-thoughts | | | defaultOpen | boolean | false | Начальное раскрытое состояние (uncontrolled). По умолчанию false. | | duration | number | — | Длительность рассуждения в секундах. Форматируется в д/ч/м/с. | | icon | ReactNode | — | Иконка слева от подписи в активном состоянии. По умолчанию — GigaChat, null скрывает. Ожидается SVG-иконка: из @cloud-ru/ds-icons, AiIconGiga или Sun; при включённом shimmer она заливается волной вместе с подписью. | | inProgress | boolean | true | Идёт ли рассуждение прямо сейчас. true — иконка GigaChat и подпись «Размышляю»; false — без иконки и «Размышлял». По умолчанию true. | | label | ReactNode | — | Подпись заголовка. По умолчанию «Размышляю» / «Размышлял» — по inProgress. | | onOpenChange | ((open: boolean) => void) | — | Переключение раскрытия. Получает новое значение open. | | open | boolean | — | Раскрытое состояние (controlled). Для uncontrolled-режима — defaultOpen. | | shimmer | boolean | true | Shimmer на подписи «Размышляю» в активном состоянии. По умолчанию true. |

AiChainOfThoughtsHeadline

AiChainOfThoughtsHeadlineProps

| Prop | Type | Default | Description | |------|------|---------|-------------| | broken | boolean | false | Поток рассуждения прерван. Вместо длительности и chevron'а под подписью показывается сообщение brokenMessage. По умолчанию false. | | brokenMessage | ReactNode | — | Текст сообщения о прерванном потоке (показывается при broken). | | className | string | — | Доп. класс корня. | | collapsible | boolean | false | Рендерить ли chevron-кнопку раскрытия. Управляется родителем (AiChainOfThoughts ставит true, когда есть раскрываемый контент). В состоянии broken chevron не рендерится. По умолчанию false. | | data-test-id | string | ai-chain-of-thoughts-headline | | | duration | number | — | Длительность рассуждения в секундах. Форматируется в д/ч/м/с (ведущие нулевые единицы опускаются, секунды показываются всегда). | | icon | ReactNode | — | Иконка слева от подписи в активном состоянии. По умолчанию — GigaChat, null скрывает. Ожидается SVG-иконка: из @cloud-ru/ds-icons, AiIconGiga или Sun; при включённом shimmer она заливается волной вместе с подписью. | | inProgress | boolean | true | Идёт ли рассуждение прямо сейчас. true — слева иконка GigaChat и подпись «Размышляю» (настоящее время); false — без иконки и «Размышлял» (прошедшее время). По умолчанию true. | | label | ReactNode | — | Подпись заголовка. По умолчанию «Размышляю» / «Размышлял» — по inProgress. | | onOpenChange | ((open: boolean) => void) | — | Клик по chevron'у. Получает новое значение open. | | open | boolean | false | Раскрытое состояние — задаёт направление chevron'а. По умолчанию false. | | shimmer | boolean | true | Shimmer на подписи «Размышляю» в активном состоянии. По умолчанию true. |