Skip to content

feat(providers): replace settings-based credentials with pi-ai registry and SecretStorage - #19

Merged
MalachiteN merged 3 commits into
NERDSORG:mainfrom
guilimao:main
Aug 25, 2026
Merged

feat(providers): replace settings-based credentials with pi-ai registry and SecretStorage#19
MalachiteN merged 3 commits into
NERDSORG:mainfrom
guilimao:main

Conversation

@guilimao

@guilimao guilimao commented Aug 14, 2026

Copy link
Copy Markdown
Contributor
  • Introduce llm/providerService on top of pi-ai's multi-protocol catalog with /models discovery and reasoning-effort metadata
  • Store API keys in VS Code SecretStorage via new 'Manage Model Providers' command; keys never touch settings, .mtm, caches, or logs
  • Deprecate mutsumi.providers / mutsumi.models (migration-only); add 'Migrate Legacy Provider Credentials' and secure migration prompt
  • Add mutsumi.customProviders for custom OpenAI-compatible routes (api/auth/models)
  • Rename built-in provider kimi-for-coding -> kimi-coding
  • Drop direct openai SDK dependency; switch runner/tools to provider-neutral pi-ai types; persist pi-ai replay state in message metadata
  • Add vitest unit tests for provider service, credentials, migration, and replay

Summary by Sourcery

集成一个与具体提供商无关的 LLM 抽象层,以 pi-ai catalog 和 VS Code SecretStorage 为后端,替换基于设置的提供商机制,并通过 agents、notebook 命令、HTTP 服务器以及默认配置将新的注册表串联起来。

New Features:

  • 添加一个 provider registry 服务,用于管理内置和自定义的 OpenAI 兼容路由、模型发现,以及基于 VS Code SecretStorage 的凭据存储。
  • 引入用于管理模型提供商以及根据已发现能力选择模型的 notebook 和命令端 UX,包括对推理开销(reasoning-effort)的感知。
  • 在 assistant 消息中支持 provider 原生的重放(replay)元数据,以便在跨协议的场景下安全地重建多轮运行。
  • 通过 mutsumi.customProviders 设置启用自定义提供商,支持 /models 模型发现以及非敏感配置选项。

Bug Fixes:

  • 改进流式输出的错误处理,在流在中途失败时能够暴露部分 LLM 输出,同时避免不安全的自动重试。

Enhancements:

  • 重构 LLM 客户端、agent runner、工具以及模型选择工具,使其与具体提供商无关,并使用 pi-ai 类型替代直接依赖 OpenAI SDK。
  • 将默认的 Kimi provider 路由重命名为 kimi-coding,并相应更新默认值、文档以及 agent 类型配置。
  • 调整工具执行的元数据,使错误语义和工具失败能够在 LLM 上下文中被正确投射。
  • 在 SecretStorage 迁移之后,进一步澄清关于 HTTP 服务器密码存储与 LLM API 密钥存储的文档说明。
  • 废弃旧的 mutsumi.providersmutsumi.models 设置,改用新的 provider 管理器和基于 catalog 的发现机制。

Build:

  • 新增 pi-ai 和 MCP SDK 的开发依赖,引入基于 Vitest 的测试运行器,并将 tests/tsconfig 接入类型检查流水线。

Documentation:

  • 更新 README 和 agent 类型设计文档,说明 provider 管理、基于 SecretStorage 的凭据、自定义提供商以及 kimi-coding 路由,并将旧的多 provider 设计文档标记为遗留文档。

Tests:

  • 添加针对 provider 服务、凭据存储、重放/上下文转换、LLM 客户端适配器以及遗留凭据迁移逻辑的 Vitest 单元测试。
Original summary in English

Summary by Sourcery

Integrate a provider-neutral LLM layer backed by pi-ai catalogs and VS Code SecretStorage, replacing settings-based providers and wiring the new registry through agents, notebook commands, HTTP server, and configuration defaults.

New Features:

  • Add a provider registry service that manages built-in and custom OpenAI-compatible routes, model discovery, and VS Code SecretStorage-backed credentials.
  • Introduce notebook and command UX for managing model providers and selecting models based on discovered capabilities, including reasoning-effort awareness.
  • Support provider-native replay metadata in assistant messages so multi-turn runs can be safely reconstructed across protocols.
  • Enable custom providers via the mutsumi.customProviders setting with /models discovery and non-secret configuration options.

Bug Fixes:

  • Improve streaming error handling to surface partial LLM output while avoiding unsafe automatic retries when the stream failed mid-round.

Enhancements:

  • Refactor LLM client, agent runner, tools, and model selection utilities to be provider-neutral and use pi-ai types instead of direct OpenAI SDK dependencies.
  • Rename the default Kimi provider route to kimi-coding and update defaults, docs, and agent type configurations accordingly.
  • Adjust tool execution metadata so error semantics and tool failures are correctly projected into the LLM context.
  • Clarify documentation around HTTP server password storage versus LLM API key storage after SecretStorage migration.
  • Deprecate legacy mutsumi.providers and mutsumi.models settings in favor of the new provider manager and catalog-based discovery.

Build:

  • Add pi-ai and MCP SDK dev dependencies, introduce a Vitest-based test runner, and wire tests/tsconfig into the type-checking pipeline.

Documentation:

  • Update README and agent type design docs to describe provider management, SecretStorage-backed credentials, custom providers, and the kimi-coding route, and mark the old multi-provider design doc as legacy.

Tests:

  • Add Vitest unit tests for the provider service, credential store, replay/context conversion, LLM client adapter, and legacy credential migration logic.

…ry and SecretStorage

- Introduce llm/providerService on top of pi-ai's multi-protocol catalog with
  /models discovery and reasoning-effort metadata
- Store API keys in VS Code SecretStorage via new 'Manage Model Providers'
  command; keys never touch settings, .mtm, caches, or logs
- Deprecate mutsumi.providers / mutsumi.models (migration-only); add
  'Migrate Legacy Provider Credentials' and secure migration prompt
- Add mutsumi.customProviders for custom OpenAI-compatible routes (api/auth/models)
- Rename built-in provider kimi-for-coding -> kimi-coding
- Drop direct openai SDK dependency; switch runner/tools to provider-neutral
  pi-ai types; persist pi-ai replay state in message metadata
- Add vitest unit tests for provider service, credentials, migration, and replay

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @guilimao, your pull request is larger than the review limit of 150000 diff characters

@sourcery-ai

sourcery-ai Bot commented Aug 14, 2026

Copy link
Copy Markdown

Reviewer's Guide

将基于旧版设置的 LLM 提供方配置和 OpenAI SDK 使用方式,替换为由 VS Code SecretStorage 支持的、与提供方无关的 pi-ai 注册表;添加用于管理/迁移提供方的命令和设置,并在 Agent 运行时和测试中贯穿提供方原生的重放/元数据。

管理提供方和配置 API Key 的序列图

sequenceDiagram
    actor User
    participant VSCode as VSCode
    participant ManageProviders as registerManageProvidersCommand
    participant ProviderService as LlmProviderService
    participant Models as Models
    participant CredentialStore as VsCodeCredentialStore
    participant SecretStorage as SecretStorage
    participant GlobalState as GlobalState

    User ->> VSCode: executeCommand mutsumi.manageProviders
    VSCode ->> ManageProviders: registerManageProvidersCommand
    ManageProviders ->> ProviderService: listProviders()
    ProviderService ->> Models: getAvailable()
    ProviderService -->> ManageProviders: ProviderInfo[]
    ManageProviders -->> User: QuickPick providers

    User ->> ManageProviders: select provider, configureKey
    ManageProviders ->> ProviderService: configureApiKey(providerId, createInteraction())
    ProviderService ->> Models: login(providerId, api_key, AuthInteraction)
    Models ->> CredentialStore: modify(providerId, fn)
    CredentialStore ->> SecretStorage: store()
    CredentialStore ->> GlobalState: update()
    Models -->> ProviderService: Credential

    ProviderService ->> Models: refresh({allowNetwork: true, force: true})
    Models -->> ProviderService: errors
    ProviderService -->> ManageProviders: Error | undefined
    ManageProviders -->> User: showInformationMessage / showWarningMessage
Loading

File-Level Changes

Change Details Files
将 LLM 客户端和流式处理管线重构为使用 pi-ai 提供方注册表、提供方冻结分发以及持久化重放状态,而不是使用 OpenAI SDK。
  • 用与提供方无关的客户端替换基于 OpenAI 的 LLMClient,该客户端使用 LlmProviderService、toPiContext 和 pi-ai 的 completeSimple/streamSimple API。
  • 添加 visibleParts 辅助函数,并用提供方原生的 PiAiReplayState 和用量映射丰富 ChatCompletionResult/StreamChunk。
  • 更新 LLMStreamHandler,以传播 replayState,在存在部分输出时防护重试,并标记部分输出错误。
  • 通过 metadata.piAiReplay 将 replayState 线程进 AgentRunner 的 assistant 消息中,以实现多轮安全重放。
src/agent/llmClient.ts
src/agent/llmStream.ts
src/agent/agentRunner.ts
src/llm/context.ts
src/llm/replay.ts
src/llm/types.ts
tests/llmClient.test.ts
tests/replayAndContext.test.ts
引入由 pi-ai 目录、SecretStorage 凭据以及 VS Code 模型缓存支持的 LlmProviderService,并使用它来解析模型选择和列出模型。
  • 实现 LlmProviderService,使其负责内置/自定义提供方、凭据存储、模型存储以及通过 pi-ai 进行的模型发现。
  • 用 LlmProviderService.resolveSelection 及其相关辅助函数替换 resolveModelSelection/getModelsConfig/getModelCredentials。
  • 更新 selectModel 命令,通过 providerService.listAvailableModels 列出模型,基于模型能力过滤推理开销选项,并在不存在提供方时提供“Manage Providers”。
  • 为 UI/配置消费者暴露提供方信息和模型信息类型。
src/llm/providerService.ts
src/utils.ts
src/notebook/commands/selectModel.ts
src/agent/types.ts
src/agent/fileOps.ts
src/config/resolver.ts
src/config/types.ts
docs/AGENT_TYPES_DESIGN.md
docs/AGENT_TYPES_DESIGN_CN.md
src/agent/titleGenerator.ts
src/controller.ts
src/httpServer/chat.ts
src/notebook/commands/compressConversation.ts
src/adapters/interfaces.ts
docs/multi-provider-refactor.md
src/llm/modelStore.ts
src/llm/types.ts
tests/providerService.test.ts
添加基于 SecretStorage 的凭据存储和旧版设置迁移,将 API key 从 mutsumi.providers/models 移动到安全存储和 customProviders 中。
  • 实现 VsCodeCredentialStore 和 VsCodeModelsStore,以使用 SecretStorage 和 globalState 支持 pi-ai 凭据和模型缓存。
  • 添加 migrateLegacyProviders 和 registerLegacyProviderMigration,用于检查设置层、检测冲突、将 API key 存入 SecretStorage、将 providers/models 转换为 mutsumi.customProviders,并在失败时执行回滚以清理明文设置。
  • 在扩展激活流程中接入迁移,并暴露“Migrate Legacy Provider Credentials”命令和一次性提示。
  • 在 HTTP 服务器安全文档中澄清关于 API key 存储迁移的说明。
src/llm/credentialStore.ts
src/llm/modelStore.ts
src/llm/migration.ts
src/extension.ts
docs/HTTP_SERVER_SECURITY_DESIGN_CN.md
tests/credentialStore.test.ts
tests/migration.test.ts
添加提供方管理 UI、自定义提供方设置,并在配置和文档中将内置提供方路由从 kimi-for-coding 重命名为 kimi-coding。
  • 为非机密的 OpenAI 兼容路由引入 mutsumi.customProviders 设置模式,支持 api/auth/models 选项。
  • 添加“Manage Model Providers”命令和工具栏入口,用于展示提供方列表、支持添加/编辑/删除自定义提供方、配置/移除 API key,以及刷新模型目录。
  • 在默认模型选择、Agent 类型配置文档和 README 内容中,将默认提供方路由从 kimi-for-coding 重命名为 kimi-coding。
  • 将 mutsumi.providers 和 mutsumi.models 标记为已弃用,并指引用户使用“Manage Model Providers”和迁移功能,同时更新 EN/ZH README 以说明基于 SecretStorage 的 key 和迁移行为。
package.json
src/notebook/commands/manageProviders.ts
src/notebook/toolbar.ts
src/notebook/commands/index.ts
src/types.ts
src/config/types.ts
docs/AGENT_TYPES_DESIGN.md
docs/AGENT_TYPES_DESIGN_CN.md
src/agent/fileOps.ts
src/config/resolver.ts
README.md
README_zh.md
docs/multi-provider-refactor.md
l10n/bundle.l10n.json
l10n/bundle.l10n.zh-cn.json
package.nls.json
package.nls.zh-cn.json
使工具与提供方无关,并将错误语义和缓存元数据传播到 pi-ai/MCP 适配器的工具消息中。
  • 用自定义的 ToolDefinition 替换 OpenAI ChatCompletionTool 类型,该类型在核心工具和 MCP 适配器之间共享。
  • 确保 ToolSet/ToolManager 为 pi-ai 和 MCP 返回与提供方无关的函数工具定义。
  • 更新 ToolExecutor,将工具错误/中断消息标记为 metadata.isError,以支持下游正确的错误处理。
src/tools.d/interface.ts
src/tools.d/toolManager.ts
src/mcp/tool.ts
src/agent/toolExecutor.ts
添加基于 Vitest 的单元测试框架,用于测试 LLM 提供方服务、凭据存储、迁移、重放/上下文以及 LLM 客户端行为。
  • 引入 vitest.config.ts 和 tests/tsconfig.json,并在 package.json scripts 中接入 npm test 和测试的类型检查。
  • 添加测试,覆盖 providerService 注册行为、自定义发现、环境凭据及错误处理。
  • 添加测试,用于凭据存储的序列化和仅在 SecretStorage 中持久化机密信息。
  • 添加测试,用于旧版提供方迁移的冲突检测、成功迁移以及回滚语义。
  • 添加测试,用于重放状态的往返和上下文转换,以及跨多个 API 的 LLM 客户端流式工具调用行为。
package.json
package-lock.json
tsconfig.json
vitest.config.ts
tests/tsconfig.json
tests/providerService.test.ts
tests/credentialStore.test.ts
tests/migration.test.ts
tests/replayAndContext.test.ts
tests/llmClient.test.ts

Tips and commands

Interacting with Sourcery

  • 触发新的评审: 在 Pull Request 中评论 @sourcery-ai review
  • 继续讨论: 直接回复 Sourcery 的评审评论。
  • 从评审评论生成 GitHub Issue: 通过回复某条评审评论,要求 Sourcery 从该评论创建一个 Issue。你也可以在评审评论中回复 @sourcery-ai issue 来从该评论创建 Issue。
  • 生成 Pull Request 标题: 在 Pull Request 标题中任意位置写入 @sourcery-ai,即可随时生成标题。你也可以在 Pull Request 中评论 @sourcery-ai title 来(重新)生成标题。
  • 生成 Pull Request 摘要: 在 Pull Request 描述正文任意位置写入 @sourcery-ai summary,即可在该位置生成 PR 摘要。你也可以在 Pull Request 中评论 @sourcery-ai summary 来在任意时间(重新)生成摘要。
  • 生成评审者指南: 在 Pull Request 中评论 @sourcery-ai guide,即可在任意时间(重新)生成评审者指南。
  • 解决所有 Sourcery 评论: 在 Pull Request 中评论 @sourcery-ai resolve,即可解决所有 Sourcery 评论。如果你已经处理完所有评论且不想再看到它们,这会很有用。
  • 忽略所有 Sourcery 评审: 在 Pull Request 中评论 @sourcery-ai dismiss,即可忽略所有现有的 Sourcery 评审。尤其适用于你想以一次全新的评审开始——别忘了再评论 @sourcery-ai review 来触发新的评审!

Customizing Your Experience

打开你的 dashboard 以:

  • 启用或禁用评审功能,例如 Sourcery 生成的 Pull Request 摘要、评审者指南等。
  • 更改评审语言。
  • 添加、删除或编辑自定义评审说明。
  • 调整其他评审设置。

Getting Help

Original review guide in English

Reviewer's Guide

Replace legacy settings-based LLM provider configuration and OpenAI SDK usage with a provider-neutral pi-ai registry backed by VS Code SecretStorage, add commands and settings to manage/migrate providers, and thread provider-native replay/metadata through agent runtime and tests.

Sequence diagram for managing providers and configuring API keys

sequenceDiagram
    actor User
    participant VSCode as VSCode
    participant ManageProviders as registerManageProvidersCommand
    participant ProviderService as LlmProviderService
    participant Models as Models
    participant CredentialStore as VsCodeCredentialStore
    participant SecretStorage as SecretStorage
    participant GlobalState as GlobalState

    User ->> VSCode: executeCommand mutsumi.manageProviders
    VSCode ->> ManageProviders: registerManageProvidersCommand
    ManageProviders ->> ProviderService: listProviders()
    ProviderService ->> Models: getAvailable()
    ProviderService -->> ManageProviders: ProviderInfo[]
    ManageProviders -->> User: QuickPick providers

    User ->> ManageProviders: select provider, configureKey
    ManageProviders ->> ProviderService: configureApiKey(providerId, createInteraction())
    ProviderService ->> Models: login(providerId, api_key, AuthInteraction)
    Models ->> CredentialStore: modify(providerId, fn)
    CredentialStore ->> SecretStorage: store()
    CredentialStore ->> GlobalState: update()
    Models -->> ProviderService: Credential

    ProviderService ->> Models: refresh({allowNetwork: true, force: true})
    Models -->> ProviderService: errors
    ProviderService -->> ManageProviders: Error | undefined
    ManageProviders -->> User: showInformationMessage / showWarningMessage
Loading

File-Level Changes

Change Details Files
Refactor LLM client and streaming pipeline to use pi-ai provider registry, provider-frozen dispatch, and durable replay state instead of the OpenAI SDK.
  • Replace OpenAI-based LLMClient with a provider-neutral client that uses LlmProviderService, toPiContext, and pi-ai completeSimple/streamSimple APIs.
  • Add visibleParts helper and enrich ChatCompletionResult/StreamChunk with provider-native PiAiReplayState and usage mapping.
  • Update LLMStreamHandler to propagate replayState, guard retries when partial output exists, and mark partial-output errors.
  • Thread replayState into AgentRunner assistant messages via metadata.piAiReplay for multi-turn safe replay.
src/agent/llmClient.ts
src/agent/llmStream.ts
src/agent/agentRunner.ts
src/llm/context.ts
src/llm/replay.ts
src/llm/types.ts
tests/llmClient.test.ts
tests/replayAndContext.test.ts
Introduce LlmProviderService backed by pi-ai catalogs, SecretStorage credentials, and VS Code model cache, and use it to resolve model selections and list models.
  • Implement LlmProviderService to own builtin/custom providers, credential store, models store, and model discovery via pi-ai.
  • Replace resolveModelSelection/getModelsConfig/getModelCredentials with LlmProviderService.resolveSelection and related helpers.
  • Update selectModel command to list models via providerService.listAvailableModels, filter reasoning-effort options based on model capabilities, and offer Manage Providers when none exist.
  • Expose provider info and model info types for UI/config consumers.
src/llm/providerService.ts
src/utils.ts
src/notebook/commands/selectModel.ts
src/agent/types.ts
src/agent/fileOps.ts
src/config/resolver.ts
src/config/types.ts
docs/AGENT_TYPES_DESIGN.md
docs/AGENT_TYPES_DESIGN_CN.md
src/agent/titleGenerator.ts
src/controller.ts
src/httpServer/chat.ts
src/notebook/commands/compressConversation.ts
src/adapters/interfaces.ts
docs/multi-provider-refactor.md
src/llm/modelStore.ts
src/llm/types.ts
tests/providerService.test.ts
Add SecretStorage-backed credential store and legacy settings migration to move API keys out of mutsumi.providers/models into secure storage and customProviders.
  • Implement VsCodeCredentialStore and VsCodeModelsStore to back pi-ai credential and model caches with SecretStorage and globalState.
  • Add migrateLegacyProviders and registerLegacyProviderMigration to inspect settings layers, detect conflicts, store API keys in SecretStorage, transform providers/models into mutsumi.customProviders, and clean up plaintext settings with rollback on failure.
  • Wire migration into extension activation and expose a Migrate Legacy Provider Credentials command and one-time prompt.
  • Clarify HTTP server security doc note about API key storage migration.
src/llm/credentialStore.ts
src/llm/modelStore.ts
src/llm/migration.ts
src/extension.ts
docs/HTTP_SERVER_SECURITY_DESIGN_CN.md
tests/credentialStore.test.ts
tests/migration.test.ts
Add provider management UI, custom provider settings, and rename built-in provider route from kimi-for-coding to kimi-coding across configuration and docs.
  • Introduce mutsumi.customProviders setting schema for non-secret OpenAI-compatible routes with api/auth/models options.
  • Add Manage Model Providers command and toolbar entry that surfaces provider list, supports adding/editing/removing custom providers, configuring/removing API keys, and refreshing model catalogs.
  • Rename default provider route from kimi-for-coding to kimi-coding in default model selection, agent type config docs, and README content.
  • Mark mutsumi.providers and mutsumi.models as deprecated with guidance to use Manage Model Providers and migration, and update README in EN/ZH to describe SecretStorage-backed keys and migration behavior.
package.json
src/notebook/commands/manageProviders.ts
src/notebook/toolbar.ts
src/notebook/commands/index.ts
src/types.ts
src/config/types.ts
docs/AGENT_TYPES_DESIGN.md
docs/AGENT_TYPES_DESIGN_CN.md
src/agent/fileOps.ts
src/config/resolver.ts
README.md
README_zh.md
docs/multi-provider-refactor.md
l10n/bundle.l10n.json
l10n/bundle.l10n.zh-cn.json
package.nls.json
package.nls.zh-cn.json
Make tools provider-neutral and propagate error semantics and caching metadata into tool messages for pi-ai/MCP adapters.
  • Replace OpenAI ChatCompletionTool typing with a custom ToolDefinition shared between core tools and MCP adapters.
  • Ensure ToolSet/ToolManager return provider-neutral function tool definitions for pi-ai and MCP.
  • Update ToolExecutor to tag tool error/interrupt messages with metadata.isError for correct downstream error handling.
src/tools.d/interface.ts
src/tools.d/toolManager.ts
src/mcp/tool.ts
src/agent/toolExecutor.ts
Add Vitest-based unit test harness for LLM provider service, credential store, migration, replay/context, and LLM client behavior.
  • Introduce vitest.config.ts and tests/tsconfig.json, wire npm test and type-checking for tests into package.json scripts.
  • Add tests covering providerService registry behavior, custom discovery, environment credentials and error handling.
  • Add tests for credential store serialization and SecretStorage-only secret persistence.
  • Add tests for legacy provider migration conflict detection, successful migration, and rollback semantics.
  • Add tests for replay state round-trip and context conversion, and LLM client streaming tool-call behavior across multiple APIs.
package.json
package-lock.json
tsconfig.json
vitest.config.ts
tests/tsconfig.json
tests/providerService.test.ts
tests/credentialStore.test.ts
tests/migration.test.ts
tests/replayAndContext.test.ts
tests/llmClient.test.ts

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

vitest 3.2.7 pulls in vite 7 which requires @types/node >=20.19 (peer).
The project pinned @types/node ^18 since the scaffolded init commit while
the real runtime (electron 39) and CI both use node 22, so npm ci on a
clean node 22 environment failed with 'Missing @types/node@26.2.0 from
lock file'. Aligning the type target with the actual node version also
resolves the lock/package.json sync error.
Adopt native pi-ai messages and explicit provider/model identities across notebook and headless sessions.

Persist Markdown notes separately, support pending user turns, hydrate provider history safely, and eliminate duplicate HTTP prompts.
@MalachiteN
MalachiteN merged commit 8e28eb9 into NERDSORG:main Aug 25, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants