refactor(ai): upgrade pi runtime and define execution semantics

This commit is contained in:
digua committed 2026-08-18 17:27:48 +08:00
1 parent dea6eb8f0d
commit cf1aee9e5b
37 files changed
+313 -133

No files matched your search

+3 -3
View File
@@ -15,7 +15,7 @@
"LICENSE"
],
"engines": {
"node": ">=20"
"node": ">=22.19.0"
},
"publishConfig": {
"access": "public"
@@ -48,8 +48,8 @@
"dependencies": {
"@fastify/multipart": "^10.0.0",
"@fastify/static": "^9.1.3",
"@earendil-works/pi-agent-core": "0.74.2",
"@earendil-works/pi-ai": "0.74.2",
"@earendil-works/pi-agent-core": "0.83.0",
"@earendil-works/pi-ai": "0.83.0",
"@modelcontextprotocol/sdk": "^1.12.1",
"better-sqlite3": "^12.4.6",
"commander": "^13.1.0",
+1
View File
@@ -251,6 +251,7 @@ export async function runServerAgent(options: RunAgentOptions): Promise<void> {
userMessage,
maxToolRounds: DEFAULT_MAX_TOOL_ROUNDS,
abortSignal,
providerSessionId: aiChatId,
steerMessage,
thinkingLevel: thinkingLevel as import('@openchatlab/core').ThinkingLevel | undefined,
onConvertToLlm: (filteredMessages) => {
+2
View File
@@ -37,6 +37,7 @@ describe('adaptToolsForAgent', () => {
name: 'render_chart',
description: 'Render a chart',
inputSchema: { type: 'object', properties: {} },
executionMode: 'sequential',
async handler() {
chartCalls += 1
return { content: 'Generated chart.' }
@@ -51,6 +52,7 @@ describe('adaptToolsForAgent', () => {
const result = await agentTool.execute('call-1', {})
assert.equal(agentTool.executionMode, 'sequential')
assert.equal(chartCalls, 0)
assert.deepEqual(result.content, [{ type: 'text', text: CHART_SCHEMA_REQUIRED_MESSAGE }])
assert.equal(result.details, null)
+1
View File
@@ -73,6 +73,7 @@ export function adaptToolsForAgent(
label: tool.name,
description: tool.description,
parameters: toAgentToolParameters(tool.inputSchema) as any,
executionMode: tool.executionMode,
async execute(_toolCallId: string, params: unknown) {
const ctx = getContext()
const execCtx: ToolExecutionContext = {
+1 -1
View File
@@ -15,7 +15,7 @@ export default defineConfig({
splitting: true,
sourcemap: true,
clean: true,
target: 'node20',
target: 'node22',
platform: 'node',
define: {
'process.env.UMAMI_ENDPOINT': JSON.stringify(process.env.UMAMI_ENDPOINT || ''),
+1
View File
@@ -231,6 +231,7 @@ export class Agent {
userMessage,
maxToolRounds,
abortSignal: this.abortSignal,
providerSessionId: this.context.aiChatId,
steerMessage: answerWithoutToolsPrompt,
thinkingLevel: this.config.thinkingLevel,
streamFn: errorCapturingStreamFn,
@@ -58,6 +58,7 @@ export function adaptSharedTool(tool: ToolDefinition): ToolRegistryEntry {
// 缺 key 时回退到此英文描述,避免把裸 i18n key 当作工具描述传给 LLM。
description: tool.description,
parameters: toAgentToolParameters(tool.inputSchema) as any,
executionMode: tool.executionMode,
async execute(_toolCallId: string, params: unknown) {
return executeToolForAgent(tool, params, buildExecutionContext(context))
},
+1 -1
View File
@@ -8,7 +8,7 @@ ChatLab 可以让 Codex、Claude Code、HermesAgent 等 AI Agent 在本地查询
## 开始使用
需要 Node.js 20 或更高版本,并已在 ChatLab 中导入聊天记录。安装 ChatLab CLI 和中文 Skill:
需要 Node.js 22.19 或更高版本,并已在 ChatLab 中导入聊天记录。安装 ChatLab CLI 和中文 Skill:
```bash
npm install -g chatlab-cli
+1 -1
View File
@@ -19,7 +19,7 @@ ChatLab 支持多种方式导入聊天记录。
适合已经使用 Codex、Claude Code 等各类 AI Agent,希望让 Agent 代为执行导入的用户。
需要 Node.js 20 或更高版本。安装 ChatLab CLI 和中文 Skill:
需要 Node.js 22.19 或更高版本。安装 ChatLab CLI 和中文 Skill:
```bash
npm install -g chatlab-cli
+1 -1
View File
@@ -14,7 +14,7 @@ macOS Desktop 目前仅支持搭载 Apple 芯片(M 系列)的 Mac。Intel Ma
## CLI
CLI 需要 Node.js 20 或更高版本:
CLI 需要 Node.js 22.19 或更高版本:
```bash
npm install --global chatlab-cli
+1 -1
View File
@@ -8,7 +8,7 @@ ChatLab lets AI agents such as Codex, Claude Code, and HermesAgent query and ana
## Get started
Node.js 20 or newer is required, and chat records must already be imported into ChatLab. Install ChatLab CLI and the English Skill:
Node.js 22.19 or newer is required, and chat records must already be imported into ChatLab. Install ChatLab CLI and the English Skill:
```bash
npm install -g chatlab-cli
+1 -1
View File
@@ -19,7 +19,7 @@ The homepage also supports incremental imports. When a new file matches an impor
Use this when you already work with Codex, Claude Code, or another AI agent and want the agent to handle the import for you.
Node.js 20 or newer is required. Install ChatLab CLI and the English skill:
Node.js 22.19 or newer is required. Install ChatLab CLI and the English skill:
```bash
npm install -g chatlab-cli
+1 -1
View File
@@ -14,7 +14,7 @@ The macOS Desktop app currently supports Apple Silicon Macs only. Intel Mac user
## CLI
The CLI requires Node.js 20 or newer:
The CLI requires Node.js 22.19 or newer:
```bash
npm install --global chatlab-cli
+1 -1
View File
@@ -19,7 +19,7 @@ ChatLab 支援多種方式匯入聊天記錄。
適合已經使用 Codex、Claude Code 等各類 AI Agent,希望讓 Agent 代為執行匯入的使用者。
需要 Node.js 20 或更高版本。安裝 ChatLab CLI 和中文 Skill:
需要 Node.js 22.19 或更高版本。安裝 ChatLab CLI 和中文 Skill:
```bash
npm install -g chatlab-cli
+1 -1
View File
@@ -14,7 +14,7 @@ macOS Desktop 目前僅支援搭載 Apple 晶片(M 系列)的 Mac。Intel Ma
## CLI
CLI 需要 Node.js 20 或更新版本:
CLI 需要 Node.js 22.19 或更新版本:
```bash
npm install --global chatlab-cli
+1 -1
View File
@@ -68,7 +68,7 @@ The server registers ChatLab tools for:
## Requirements
- Node.js 20 or later
- Node.js 22.19 or later
- Existing ChatLab data under `~/.chatlab/`
`better-sqlite3` is installed as a runtime dependency. On platforms without a matching prebuilt binary, npm may need local build tools for native modules.
+1 -1
View File
@@ -12,7 +12,7 @@
"dist/"
],
"engines": {
"node": ">=20"
"node": ">=22.19.0"
},
"publishConfig": {
"access": "public"
+1 -1
View File
@@ -15,7 +15,7 @@ export default defineConfig({
splitting: true,
sourcemap: true,
clean: true,
target: 'node20',
target: 'node22',
platform: 'node',
define: {
__MCP_PACKAGE_VERSION__: JSON.stringify(pkg.version),
+2 -2
View File
@@ -15,8 +15,8 @@
"./src/*": "./src/*.ts"
},
"dependencies": {
"@earendil-works/pi-agent-core": "0.74.2",
"@earendil-works/pi-ai": "0.74.2",
"@earendil-works/pi-agent-core": "0.83.0",
"@earendil-works/pi-ai": "0.83.0",
"@huggingface/transformers": "^4.2.0",
"@openchatlab/config": "workspace:*",
"@openchatlab/core": "workspace:*",
@@ -23,6 +23,7 @@ describe('createActivateSkillTool', () => {
const result = await tool.execute('call_1', { skill_id: 'tool_skill' })
assert.equal(tool.executionMode, 'sequential')
assert.equal(result.details.applicable, false)
assert.deepEqual(result.details.missingTools, ['keyword_frequency'])
})
@@ -0,0 +1,25 @@
import assert from 'node:assert/strict'
import { it } from 'node:test'
import type { Model } from '@earendil-works/pi-ai'
import { streamSimple } from '../pi-runtime'
it('returns a protocol error for API formats ChatLab does not expose', async () => {
const model: Model<'unsupported-api'> = {
id: 'unsupported-model',
name: 'Unsupported Model',
api: 'unsupported-api',
provider: 'custom',
baseUrl: 'http://localhost.invalid',
reasoning: false,
input: ['text'],
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
contextWindow: 8_192,
maxTokens: 1_024,
}
const result = await streamSimple(model, { messages: [] }).result()
assert.equal(result.stopReason, 'error')
assert.equal(result.errorMessage, 'Unsupported ChatLab AI API format: unsupported-api')
})
@@ -25,6 +25,7 @@ export interface ActivateSkillTool {
label: string
description: string
parameters: Record<string, unknown>
executionMode: 'sequential'
execute: (
toolCallId: string,
params: unknown,
@@ -53,6 +54,7 @@ export function createActivateSkillTool(options: ActivateSkillToolOptions): Acti
},
required: ['skill_id'],
},
executionMode: 'sequential',
execute: async (_toolCallId: string, params: unknown) => {
const toolParams = (params && typeof params === 'object' ? params : {}) as { skill_id?: string }
const skillId = toolParams.skill_id || ''
@@ -285,4 +285,64 @@ describe('runAgentCore runtime contract', () => {
true
)
})
it('forwards the stable AI conversation id as the provider session id', async () => {
let capturedOptions: SimpleStreamOptions | undefined
await runAgentCore(
createOptions({
providerSessionId: 'ai-chat-1',
streamFn: createScriptedStream([
(_context, options) => {
capturedOptions = options
return assistantMessage([{ type: 'text', text: 'Done' }])
},
]),
})
)
assert.equal(capturedOptions?.sessionId, 'ai-chat-1')
})
for (const testCase of [
{ name: 'runs independent tools in parallel', executionMode: undefined, expectedMaxActive: 2 },
{
name: 'runs a batch sequentially when one tool requires ordering',
executionMode: 'sequential',
expectedMaxActive: 1,
},
] as const) {
it(testCase.name, async () => {
let active = 0
let maxActive = 0
const execute = async () => {
active += 1
maxActive = Math.max(maxActive, active)
await new Promise((resolve) => setTimeout(resolve, 10))
active -= 1
return { content: [{ type: 'text' as const, text: 'ok' }], details: null }
}
const firstTool = createTool('first_tool', execute)
firstTool.executionMode = testCase.executionMode
const secondTool = createTool('second_tool', execute)
await runAgentCore(
createOptions({
tools: [firstTool, secondTool],
streamFn: createScriptedStream([
assistantMessage(
[
{ type: 'toolCall', id: 'first-call', name: 'first_tool', arguments: {} },
{ type: 'toolCall', id: 'second-call', name: 'second_tool', arguments: {} },
],
{ stopReason: 'toolUse' }
),
assistantMessage([{ type: 'text', text: 'Done' }]),
]),
})
)
assert.equal(maxActive, testCase.expectedMaxActive)
})
}
})
+4 -6
View File
@@ -7,16 +7,12 @@
import { Agent as PiAgentCore } from '@earendil-works/pi-agent-core'
import type { AgentEvent as PiAgentEvent, AgentMessage as PiAgentMessage } from '@earendil-works/pi-agent-core'
import {
type Message as PiMessage,
type Usage as PiUsage,
streamSimple as defaultStreamSimple,
clampThinkingLevel,
} from '@earendil-works/pi-ai'
import { type Message as PiMessage, type Usage as PiUsage, clampThinkingLevel } from '@earendil-works/pi-ai'
import { StreamingThinkTagParser, needsStreamingThinkParsing } from '@openchatlab/core'
import type { AgentCoreOptions, AgentCoreResult, AgentTokenUsage } from './types'
import { initTokenizer } from '../tokenizer'
import { streamSimple as defaultStreamSimple } from '../pi-runtime'
import { DEFAULT_MAX_TOOL_ROUNDS } from './constants'
import { toPiHistoryMessages, type ReplayOptions } from './history'
@@ -140,6 +136,8 @@ export async function runAgentCore(options: AgentCoreOptions): Promise<AgentCore
},
}
: undefined,
sessionId: options.providerSessionId,
toolExecution: 'parallel',
})
const thinkingStartTime = new Map<number, number>()
@@ -1,10 +1,5 @@
import {
completeSimple,
streamSimple,
type Api as PiApi,
type Model as PiModel,
type TextContent as PiTextContent,
} from '@earendil-works/pi-ai'
import { type Api as PiApi, type Model as PiModel, type TextContent as PiTextContent } from '@earendil-works/pi-ai'
import { completeSimple, streamSimple } from '../pi-runtime'
import type {
AnalysisPlanIntent,
AnalysisPlanSummary,
+2 -6
View File
@@ -1,11 +1,7 @@
import type { LlmRouteDecider, RouteDecision, RouterInput } from './routing-types'
import { formatDataSnapshotForRouter } from './data-snapshot'
import {
completeSimple,
type Api as PiApi,
type Model as PiModel,
type TextContent as PiTextContent,
} from '@earendil-works/pi-ai'
import { type Api as PiApi, type Model as PiModel, type TextContent as PiTextContent } from '@earendil-works/pi-ai'
import { completeSimple } from '../pi-runtime'
export interface DecideRequestRouteOptions {
llmRouter?: LlmRouteDecider
@@ -44,6 +44,8 @@ export interface AgentCoreOptions {
userMessage: string
maxToolRounds?: number
abortSignal?: AbortSignal
/** Stable AI conversation identifier forwarded to providers that support session affinity. */
providerSessionId?: string
steerMessage?: string
/** Override the thinking level for this request. Clamped to what the model supports. */
thinkingLevel?: ThinkingLevel
@@ -1,9 +1,5 @@
import {
completeSimple,
type Model as PiModel,
type Api as PiApi,
type TextContent as PiTextContent,
} from '@earendil-works/pi-ai'
import { type Model as PiModel, type Api as PiApi, type TextContent as PiTextContent } from '@earendil-works/pi-ai'
import { completeSimple } from '../pi-runtime'
import type { CompressionLlmAdapter } from './types'
export interface CreateCompressionLlmAdapterOptions {
+3 -2
View File
@@ -203,8 +203,9 @@ export type { AgentTool, AgentToolResult } from '@earendil-works/pi-agent-core'
export { runSimpleLlmStream } from './llm-stream'
export type { LlmStreamChunk, RunSimpleLlmStreamOptions } from './llm-stream'
// Re-exports from @earendil-works/pi-ai
export { Type, completeSimple, streamSimple } from '@earendil-works/pi-ai'
// Pi primitives and ChatLab's stable API dispatch
export { Type } from '@earendil-works/pi-ai'
export { completeSimple, streamSimple } from './pi-runtime'
export type {
Model as PiModel,
Api as PiApi,
+1 -1
View File
@@ -5,8 +5,8 @@
* event mapping, and error handling.
*/
import { streamSimple } from '@earendil-works/pi-ai'
import type { Model as PiModel, Api as PiApi, Message as PiMessage } from '@earendil-works/pi-ai'
import { streamSimple } from './pi-runtime'
export interface LlmStreamChunk {
content: string
@@ -0,0 +1,50 @@
import {
lazyApi,
lazyStream,
type Api,
type AssistantMessage,
type AssistantMessageEventStream,
type Context,
type Model,
type ProviderStreams,
type SimpleStreamOptions,
} from '@earendil-works/pi-ai'
const apiStreams = {
'openai-completions': lazyApi(() => import('@earendil-works/pi-ai/api/openai-completions')),
'openai-responses': lazyApi(() => import('@earendil-works/pi-ai/api/openai-responses')),
'anthropic-messages': lazyApi(() => import('@earendil-works/pi-ai/api/anthropic-messages')),
'google-generative-ai': lazyApi(() => import('@earendil-works/pi-ai/api/google-generative-ai')),
} satisfies Record<string, ProviderStreams>
type SupportedApi = keyof typeof apiStreams
function isSupportedApi(api: Api): api is SupportedApi {
return Object.hasOwn(apiStreams, api)
}
/**
* Dispatch a ChatLab model to the stable Pi API implementation selected by its api field.
* ChatLab intentionally supports only the four formats exposed in the model settings UI.
*/
export function streamSimple(
model: Model<Api>,
context: Context,
options?: SimpleStreamOptions
): AssistantMessageEventStream {
if (!isSupportedApi(model.api)) {
return lazyStream(model, async () => {
throw new Error(`Unsupported ChatLab AI API format: ${model.api}`)
})
}
return apiStreams[model.api].streamSimple(model, context, options)
}
export function completeSimple(
model: Model<Api>,
context: Context,
options?: SimpleStreamOptions
): Promise<AssistantMessage> {
return streamSimple(model, context, options).result()
}
+1 -1
View File
@@ -6,8 +6,8 @@
*/
import { BUILTIN_PROVIDERS } from '@openchatlab/core'
import { completeSimple } from '@earendil-works/pi-ai'
import { buildPiModel, normalizeOpenAICompatibleBaseUrl, type PiModelConfig } from './llm-builder'
import { completeSimple } from './pi-runtime'
import type { Model as PiModel, Api as PiApi } from '@earendil-works/pi-ai'
export interface RemoteModel {
@@ -29,6 +29,10 @@ function createContext(
}
describe('renderChartTool', () => {
it('requires sequential execution because it depends on the schema gate', () => {
assert.equal(renderChartTool.executionMode, 'sequential')
})
it('runs parameterized read-only SQL and returns a normalized chart payload', async () => {
const calls: Array<{ query: string; params: Record<string, unknown> }> = []
const context = createContext(
@@ -163,4 +163,5 @@ export const renderChartTool: ToolDefinition = {
inputSchema,
handler,
category: 'analysis',
executionMode: 'sequential',
}
+3
View File
@@ -365,6 +365,7 @@ export interface ToolResult {
export type ToolCategory = 'core' | 'analysis'
export type TruncationStrategy = 'keep_first' | 'keep_last'
export type ToolExecutionMode = 'parallel' | 'sequential'
/**
* 平台无关的工具定义
@@ -378,4 +379,6 @@ export interface ToolDefinition {
handler: (params: Record<string, unknown>, context: ToolExecutionContext) => ToolResult | Promise<ToolResult>
category?: ToolCategory
truncationStrategy?: TruncationStrategy
/** Override the Agent's parallel default when this tool has an ordering dependency. */
executionMode?: ToolExecutionMode
}
+126 -87
View File
@@ -59,10 +59,10 @@ importers:
version: 5.0.1(vue@3.5.27(typescript@6.0.3))
'@nuxt/icon':
specifier: 2.3.1
version: 2.3.1(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@6.0.3))
version: 2.3.1(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0))(vue@3.5.27(typescript@6.0.3))
'@nuxt/ui':
specifier: ^4.9.0
version: 4.9.0(3f9cda6f0cb3ad58d8572c25ffaffe79)
version: 4.9.0(9a4bfa61820672fc57117cde58084b68)
'@openchatlab/ai-runtime':
specifier: workspace:*
version: link:packages/ai-runtime
@@ -89,13 +89,13 @@ importers:
version: link:packages/web-runtime
'@tailwindcss/vite':
specifier: ^4.0.0
version: 4.1.18(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))
version: 4.1.18(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0))
'@types/markdown-it':
specifier: ^14.1.2
version: 14.1.2
'@vitejs/plugin-vue':
specifier: ^6.0.0
version: 6.0.7(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@6.0.3))
version: 6.0.7(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0))(vue@3.5.27(typescript@6.0.3))
'@vue/eslint-config-prettier':
specifier: ^10.2.0
version: 10.2.0(eslint@9.39.2(jiti@2.7.0)(supports-color@7.2.0))(prettier@3.8.1)
@@ -134,7 +134,7 @@ importers:
version: 6.0.3
vite:
specifier: ^7.0.0
version: 7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)
version: 7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0)
vue:
specifier: ^3.5.25
version: 3.5.27(typescript@6.0.3)
@@ -151,11 +151,11 @@ importers:
apps/cli:
dependencies:
'@earendil-works/pi-agent-core':
specifier: 0.74.2
version: 0.74.2(@modelcontextprotocol/sdk@1.29.0(supports-color@7.2.0)(zod@3.25.76))(supports-color@7.2.0)(ws@8.19.0)(zod@3.25.76)
specifier: 0.83.0
version: 0.83.0(@modelcontextprotocol/sdk@1.29.0(supports-color@7.2.0)(zod@3.25.76))(supports-color@7.2.0)(ws@8.19.0)(zod@3.25.76)
'@earendil-works/pi-ai':
specifier: 0.74.2
version: 0.74.2(@modelcontextprotocol/sdk@1.29.0(supports-color@7.2.0)(zod@3.25.76))(supports-color@7.2.0)(ws@8.19.0)(zod@3.25.76)
specifier: 0.83.0
version: 0.83.0(@modelcontextprotocol/sdk@1.29.0(supports-color@7.2.0)(zod@3.25.76))(supports-color@7.2.0)(ws@8.19.0)(zod@3.25.76)
'@fastify/multipart':
specifier: ^10.0.0
version: 10.0.0
@@ -225,7 +225,7 @@ importers:
version: link:../../packages/mcp-server
tsup:
specifier: ^8.5.0
version: 8.5.1(jiti@2.7.0)(postcss@8.5.19)(supports-color@7.2.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.2)
version: 8.5.1(jiti@2.7.0)(postcss@8.5.19)(supports-color@7.2.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.9.0)
tsx:
specifier: ^4.21.0
version: 4.21.0
@@ -320,7 +320,7 @@ importers:
version: 26.15.7(electron-builder-squirrel-windows@26.15.7)(supports-color@7.2.0)
electron-vite:
specifier: ^5.0.0
version: 5.0.0(supports-color@7.2.0)(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))
version: 5.0.0(supports-color@7.2.0)(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0))
docs:
devDependencies:
@@ -411,7 +411,7 @@ importers:
version: link:../tools
tsup:
specifier: ^8.5.0
version: 8.5.1(jiti@2.7.0)(postcss@8.5.19)(supports-color@7.2.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.2)
version: 8.5.1(jiti@2.7.0)(postcss@8.5.19)(supports-color@7.2.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.9.0)
optionalDependencies:
'@node-rs/jieba':
specifier: ^2.0.1
@@ -420,11 +420,11 @@ importers:
packages/node-runtime:
dependencies:
'@earendil-works/pi-agent-core':
specifier: 0.74.2
version: 0.74.2(@modelcontextprotocol/sdk@1.29.0(supports-color@7.2.0)(zod@3.25.76))(supports-color@7.2.0)(ws@8.19.0)(zod@3.25.76)
specifier: 0.83.0
version: 0.83.0(@modelcontextprotocol/sdk@1.29.0(supports-color@7.2.0)(zod@3.25.76))(supports-color@7.2.0)(ws@8.19.0)(zod@3.25.76)
'@earendil-works/pi-ai':
specifier: 0.74.2
version: 0.74.2(@modelcontextprotocol/sdk@1.29.0(supports-color@7.2.0)(zod@3.25.76))(supports-color@7.2.0)(ws@8.19.0)(zod@3.25.76)
specifier: 0.83.0
version: 0.83.0(@modelcontextprotocol/sdk@1.29.0(supports-color@7.2.0)(zod@3.25.76))(supports-color@7.2.0)(ws@8.19.0)(zod@3.25.76)
'@huggingface/transformers':
specifier: ^4.2.0
version: 4.2.0
@@ -695,8 +695,8 @@ packages:
'@aws-crypto/util@5.2.0':
resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==}
'@aws-sdk/client-bedrock-runtime@3.1053.0':
resolution: {integrity: sha512-I5dua8y1logE+Mx6r5kvI1tjM+XyC3H42KDCpEqmhrJfanor/x/AdOavyv3HnS4sBqUxx2IrjLP3ouEumjeTzA==}
'@aws-sdk/client-bedrock-runtime@3.1048.0':
resolution: {integrity: sha512-u+NT61JZEkRFtpL0CAw1N1dwxnaLgwVXQl/zjJxTGgLyS/jTIdg2SdoEoCTHxgDyCnqa1HEi9QOoE9/pYRNpOQ==}
engines: {node: '>=20.0.0'}
'@aws-sdk/core@3.974.13':
@@ -755,12 +755,12 @@ packages:
resolution: {integrity: sha512-qs9z5LqXO/CZC2Lg9SGKpoLU8Rhi+m2pFKZqfO9pytX1clc0katqtsDNupJxFy0xT9wsZSPzM2v1y+/H/zfp5Q==}
engines: {node: '>=20.0.0'}
'@aws-sdk/token-providers@3.1052.0':
resolution: {integrity: sha512-QqZNB3so7UIDxZtroc85TQaLVxdZRFm0eWM1CSR2N+b06as9TOrilvrlTZuj3guYlxMs6yLOgGxnklJ5qMYtTw==}
'@aws-sdk/token-providers@3.1048.0':
resolution: {integrity: sha512-k0y/GcuesuSfWyUM0WamrGyeZmltRYaPbHO82UDA6mZ/doB+FOHKutikPAtSXMn/hDz970cF+iRuuiYO9VEbAA==}
engines: {node: '>=20.0.0'}
'@aws-sdk/token-providers@3.1053.0':
resolution: {integrity: sha512-laSwHLYMMrXQRl2mFDXszF43m/F4pKWyGr7hCLfJmV8rn8c6CnI/hp/bf/Gn7gLcjz0SY4evd7SBpqtnIhzA/A==}
'@aws-sdk/token-providers@3.1052.0':
resolution: {integrity: sha512-QqZNB3so7UIDxZtroc85TQaLVxdZRFm0eWM1CSR2N+b06as9TOrilvrlTZuj3guYlxMs6yLOgGxnklJ5qMYtTw==}
engines: {node: '>=20.0.0'}
'@aws-sdk/types@3.973.9':
@@ -887,13 +887,13 @@ packages:
search-insights:
optional: true
'@earendil-works/pi-agent-core@0.74.2':
resolution: {integrity: sha512-RPlB3bi2z+VQK0HRhBK73kXOQI1fFmRgWzzT6+ihB7JYfh29jb7eAfYvpx8rlf248gUAYaLQ8JYa+43l09rPmQ==}
engines: {node: '>=20.0.0'}
'@earendil-works/pi-agent-core@0.83.0':
resolution: {integrity: sha512-RorGp9OH5l3ElpuC5a5ZQ2eWcchZGXflXRzVGkV99y3y6tT+LLNyxoYIdVKvTKWEObwhExeQbTH0fI2tE4iX4g==}
engines: {node: '>=22.19.0'}
'@earendil-works/pi-ai@0.74.2':
resolution: {integrity: sha512-ukQBHGDm20k9ZUS2cGjNN9vDJp/48r35xmvgSx3paCaC06r2N/PLuRZoJmwQ1ZM7f8T3072odv9YPWn+77w0LA==}
engines: {node: '>=20.0.0'}
'@earendil-works/pi-ai@0.83.0':
resolution: {integrity: sha512-m3IZD4g3er0V8TC9+Vpgw/sjTKqcJlkcIBy/JvsgRubuuik3tAVzyugUg4rVrShIkkOT69mEd34NEqKUIsl6JQ==}
engines: {node: '>=22.19.0'}
hasBin: true
'@electron-toolkit/preload@3.0.2':
@@ -1499,8 +1499,8 @@ packages:
'@floating-ui/vue@1.1.10':
resolution: {integrity: sha512-vdf8f6rHnFPPLRsmL4p12wYl+Ux4mOJOkjzKEMYVnwdf7UFdvBtHlLvQyx8iKG5vhPRbDRgZxdtpmyigDPjzYg==}
'@google/genai@1.42.0':
resolution: {integrity: sha512-+3nlMTcrQufbQ8IumGkOphxD5Pd5kKyJOzLcnY0/1IuE8upJk5aLmoexZ2BJhBp1zAjRJMEB4a2CJwKI9e2EYw==}
'@google/genai@1.52.0':
resolution: {integrity: sha512-gwSvbpiN/17O9TbsqSsE/OzZcpv5Fo4RQjdngGgogtuB9RsyJ8ZHhX5KjHj1bp5N9snN2eK8LDGXSaWW2hof8Q==}
engines: {node: '>=20.0.0'}
peerDependencies:
'@modelcontextprotocol/sdk': ^1.25.2
@@ -1904,8 +1904,13 @@ packages:
resolution: {integrity: sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==}
engines: {node: '>= 10.0.0'}
'@mistralai/mistralai@2.2.1':
resolution: {integrity: sha512-uKU8CZmL2RzYKmplsU01hii4p3pe4HqJefpWNRWXm1Tcm0Sm4xXfwSLIy4k7ZCPlbETCGcp69E7hZs+WOJ5itQ==}
'@mistralai/mistralai@2.2.6':
resolution: {integrity: sha512-W8pX7zHxjJvMIpw8JMxeJEleapXX0Q9NPszdNzqkM3MIEoIGPObdodujj+WHteXEvGfaP/AMwlNyRfEzSY6dQQ==}
peerDependencies:
'@opentelemetry/api': ^1.9.0
peerDependenciesMeta:
'@opentelemetry/api':
optional: true
'@modelcontextprotocol/sdk@1.29.0':
resolution: {integrity: sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==}
@@ -2517,6 +2522,14 @@ packages:
'@octokit/types@16.0.0':
resolution: {integrity: sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==}
'@opentelemetry/api@1.9.0':
resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==}
engines: {node: '>=8.0.0'}
'@opentelemetry/semantic-conventions@1.43.0':
resolution: {integrity: sha512-eSYWTm620tTk45EKSedaUL8MFYI8hW164hIXsgIHyxu3VobUB3fFCu5t0hQby6OoWRPsG1KkKUG2M5UadiLiVg==}
engines: {node: '>=14'}
'@peculiar/asn1-schema@2.9.0':
resolution: {integrity: sha512-AKvPMOM7LfK0uFe1m7o7+veOa8xQGPqsqOrKi3QKgCElzwjGp39mbhr2g7mt/v/mXQHiIvJmDj5cJS173x8Q9Q==}
@@ -2766,6 +2779,10 @@ packages:
resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==}
engines: {node: '>=14.0.0'}
'@smithy/node-http-handler@4.7.3':
resolution: {integrity: sha512-/jPhevcTFPMVl6KNjbaI47iOg1zxC7IsnX4PQDGVZKMFceOXtB8IEYaB7a9VvkP/3oC60WzTeKocvSI7vLT0vA==}
engines: {node: '>=18.0.0'}
'@smithy/node-http-handler@4.7.4':
resolution: {integrity: sha512-HIeF+1vrDGzPkkv39Hj2vlHSXHY3p958jd/8ZnePIY6+ZOsQX8coyEUKO5yQu4r0bQIVsbpotVIrXXwyycMStQ==}
engines: {node: '>=18.0.0'}
@@ -4148,6 +4165,10 @@ packages:
devlop@1.1.0:
resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
diff@8.0.4:
resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==}
engines: {node: '>=0.3.1'}
dir-compare@4.2.0:
resolution: {integrity: sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==}
@@ -6748,8 +6769,8 @@ packages:
type-level-regexp@0.1.17:
resolution: {integrity: sha512-wTk4DH3cxwk196uGLK/E9pE45aLfeKJacKmcEgEOA/q5dnPGNxXt0cfYdFxb57L+sEpf1oJH4Dnx/pnRcku9jg==}
typebox@1.1.38:
resolution: {integrity: sha512-pZ0aQPmMmXoUvSbeuWf/Hzsc+avNw/Zd6VeE8CFgkVGWyuHPJvqeJJDeJqLve+K70LvjYIoleGcoJHPT17cWoA==}
typebox@1.3.7:
resolution: {integrity: sha512-meKuifc33Pccx0O6PdIzYMq3Og8zvP4TIi/a+Bw3AEMZMxOD0+RHGQvpglEe6Zdy3wZ8nqn/j95h8LUZLk/6Hg==}
typescript-eslint@8.64.0:
resolution: {integrity: sha512-0qg+pDNMnqYzqH9AnNK+39tejHvsShUOUUoRUgtnTGE7QuMZhiFDnozq8nHJVq+Wae6NMLKNWLg5WmkcC/ndyQ==}
@@ -7219,8 +7240,8 @@ packages:
resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==}
engines: {node: '>=18'}
yaml@2.8.2:
resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==}
yaml@2.9.0:
resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==}
engines: {node: '>= 14.6'}
hasBin: true
@@ -7451,7 +7472,7 @@ snapshots:
'@smithy/util-utf8': 2.3.0
tslib: 2.8.1
'@aws-sdk/client-bedrock-runtime@3.1053.0':
'@aws-sdk/client-bedrock-runtime@3.1048.0':
dependencies:
'@aws-crypto/sha256-browser': 5.2.0
'@aws-crypto/sha256-js': 5.2.0
@@ -7460,7 +7481,7 @@ snapshots:
'@aws-sdk/eventstream-handler-node': 3.972.17
'@aws-sdk/middleware-eventstream': 3.972.13
'@aws-sdk/middleware-websocket': 3.972.21
'@aws-sdk/token-providers': 3.1053.0
'@aws-sdk/token-providers': 3.1048.0
'@aws-sdk/types': 3.973.9
'@smithy/core': 3.24.4
'@smithy/fetch-http-handler': 5.4.4
@@ -7608,7 +7629,7 @@ snapshots:
'@smithy/types': 4.14.2
tslib: 2.8.1
'@aws-sdk/token-providers@3.1052.0':
'@aws-sdk/token-providers@3.1048.0':
dependencies:
'@aws-sdk/core': 3.974.13
'@aws-sdk/nested-clients': 3.997.11
@@ -7617,7 +7638,7 @@ snapshots:
'@smithy/types': 4.14.2
tslib: 2.8.1
'@aws-sdk/token-providers@3.1053.0':
'@aws-sdk/token-providers@3.1052.0':
dependencies:
'@aws-sdk/core': 3.974.13
'@aws-sdk/nested-clients': 3.997.11
@@ -7781,12 +7802,13 @@ snapshots:
transitivePeerDependencies:
- '@algolia/client-search'
'@earendil-works/pi-agent-core@0.74.2(@modelcontextprotocol/sdk@1.29.0(supports-color@7.2.0)(zod@3.25.76))(supports-color@7.2.0)(ws@8.19.0)(zod@3.25.76)':
'@earendil-works/pi-agent-core@0.83.0(@modelcontextprotocol/sdk@1.29.0(supports-color@7.2.0)(zod@3.25.76))(supports-color@7.2.0)(ws@8.19.0)(zod@3.25.76)':
dependencies:
'@earendil-works/pi-ai': 0.74.2(@modelcontextprotocol/sdk@1.29.0(supports-color@7.2.0)(zod@3.25.76))(supports-color@7.2.0)(ws@8.19.0)(zod@3.25.76)
'@earendil-works/pi-ai': 0.83.0(@modelcontextprotocol/sdk@1.29.0(supports-color@7.2.0)(zod@3.25.76))(supports-color@7.2.0)(ws@8.19.0)(zod@3.25.76)
diff: 8.0.4
ignore: 7.0.5
typebox: 1.1.38
yaml: 2.8.2
typebox: 1.3.7
yaml: 2.9.0
transitivePeerDependencies:
- '@modelcontextprotocol/sdk'
- bufferutil
@@ -7795,17 +7817,19 @@ snapshots:
- ws
- zod
'@earendil-works/pi-ai@0.74.2(@modelcontextprotocol/sdk@1.29.0(supports-color@7.2.0)(zod@3.25.76))(supports-color@7.2.0)(ws@8.19.0)(zod@3.25.76)':
'@earendil-works/pi-ai@0.83.0(@modelcontextprotocol/sdk@1.29.0(supports-color@7.2.0)(zod@3.25.76))(supports-color@7.2.0)(ws@8.19.0)(zod@3.25.76)':
dependencies:
'@anthropic-ai/sdk': 0.91.1(zod@3.25.76)
'@aws-sdk/client-bedrock-runtime': 3.1053.0
'@google/genai': 1.42.0(@modelcontextprotocol/sdk@1.29.0(supports-color@7.2.0)(zod@3.25.76))(supports-color@7.2.0)
'@mistralai/mistralai': 2.2.1
'@aws-sdk/client-bedrock-runtime': 3.1048.0
'@google/genai': 1.52.0(@modelcontextprotocol/sdk@1.29.0(supports-color@7.2.0)(zod@3.25.76))(supports-color@7.2.0)
'@mistralai/mistralai': 2.2.6(@opentelemetry/api@1.9.0)
'@opentelemetry/api': 1.9.0
'@smithy/node-http-handler': 4.7.3
http-proxy-agent: 7.0.2(supports-color@7.2.0)
https-proxy-agent: 7.0.6(supports-color@7.2.0)
openai: 6.26.0(ws@8.19.0)(zod@3.25.76)
partial-json: 0.1.7
typebox: 1.1.38
typebox: 1.3.7
transitivePeerDependencies:
- '@modelcontextprotocol/sdk'
- bufferutil
@@ -8282,7 +8306,7 @@ snapshots:
- '@vue/composition-api'
- vue
'@google/genai@1.42.0(@modelcontextprotocol/sdk@1.29.0(supports-color@7.2.0)(zod@3.25.76))(supports-color@7.2.0)':
'@google/genai@1.52.0(@modelcontextprotocol/sdk@1.29.0(supports-color@7.2.0)(zod@3.25.76))(supports-color@7.2.0)':
dependencies:
google-auth-library: 10.5.0(supports-color@7.2.0)
p-retry: 4.6.2
@@ -8633,11 +8657,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@mistralai/mistralai@2.2.1':
'@mistralai/mistralai@2.2.6(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/semantic-conventions': 1.43.0
ws: 8.19.0
zod: 3.25.76
zod-to-json-schema: 3.25.1(zod@3.25.76)
optionalDependencies:
'@opentelemetry/api': 1.9.0
transitivePeerDependencies:
- bufferutil
- utf-8-validate
@@ -9016,21 +9043,21 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.20.1
'@nuxt/devtools-kit@3.2.4(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))':
'@nuxt/devtools-kit@3.2.4(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0))':
dependencies:
'@nuxt/kit': 4.4.8
execa: 8.0.1
vite: 7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)
vite: 7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0)
transitivePeerDependencies:
- magicast
'@nuxt/fonts@0.14.0(esbuild@0.27.7)(rollup@4.57.1)(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))':
'@nuxt/fonts@0.14.0(esbuild@0.27.7)(rollup@4.57.1)(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0))':
dependencies:
'@nuxt/devtools-kit': 3.2.4(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))
'@nuxt/devtools-kit': 3.2.4(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0))
'@nuxt/kit': 4.4.8
consola: 3.4.2
defu: 6.1.7
fontless: 0.2.1(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))
fontless: 0.2.1(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0))
h3: 1.15.5
magic-regexp: 0.10.0
ofetch: 1.5.1
@@ -9039,7 +9066,7 @@ snapshots:
tinyglobby: 0.2.17
ufo: 1.6.4
unifont: 0.7.4
unplugin: 3.3.0(esbuild@0.27.7)(rollup@4.57.1)(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))
unplugin: 3.3.0(esbuild@0.27.7)(rollup@4.57.1)(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0))
unstorage: 1.17.4
transitivePeerDependencies:
- '@azure/app-configuration'
@@ -9072,13 +9099,13 @@ snapshots:
- vite
- webpack
'@nuxt/icon@2.3.1(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@6.0.3))':
'@nuxt/icon@2.3.1(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0))(vue@3.5.27(typescript@6.0.3))':
dependencies:
'@iconify/collections': 1.0.710
'@iconify/types': 2.0.0
'@iconify/utils': 3.1.4
'@iconify/vue': 5.0.1(vue@3.5.27(typescript@6.0.3))
'@nuxt/devtools-kit': 3.2.4(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))
'@nuxt/devtools-kit': 3.2.4(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0))
'@nuxt/kit': 4.4.8
consola: 3.4.2
local-pkg: 1.2.1
@@ -9126,18 +9153,18 @@ snapshots:
pkg-types: 2.3.1
std-env: 4.2.0
'@nuxt/ui@4.9.0(3f9cda6f0cb3ad58d8572c25ffaffe79)':
'@nuxt/ui@4.9.0(9a4bfa61820672fc57117cde58084b68)':
dependencies:
'@floating-ui/dom': 1.8.0
'@iconify/vue': 5.0.1(vue@3.5.27(typescript@6.0.3))
'@nuxt/fonts': 0.14.0(esbuild@0.27.7)(rollup@4.57.1)(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))
'@nuxt/icon': 2.3.1(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@6.0.3))
'@nuxt/fonts': 0.14.0(esbuild@0.27.7)(rollup@4.57.1)(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0))
'@nuxt/icon': 2.3.1(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0))(vue@3.5.27(typescript@6.0.3))
'@nuxt/kit': 4.4.8
'@nuxt/schema': 4.4.8
'@nuxtjs/color-mode': 4.0.1
'@standard-schema/spec': 1.1.0
'@tailwindcss/postcss': 4.3.2
'@tailwindcss/vite': 4.3.2(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))
'@tailwindcss/vite': 4.3.2(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0))
'@tanstack/vue-table': 8.21.3(vue@3.5.27(typescript@6.0.3))
'@tanstack/vue-virtual': 3.13.32(vue@3.5.27(typescript@6.0.3))
'@tiptap/core': 3.19.0(@tiptap/pm@3.19.0)
@@ -9187,9 +9214,9 @@ snapshots:
tinyglobby: 0.2.17
typescript: 6.0.3
ufo: 1.6.4
unplugin: 3.3.0(esbuild@0.27.7)(rollup@4.57.1)(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))
unplugin: 3.3.0(esbuild@0.27.7)(rollup@4.57.1)(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0))
unplugin-auto-import: 21.0.0(@nuxt/kit@4.4.8)(@vueuse/core@14.3.0(vue@3.5.27(typescript@6.0.3)))
unplugin-vue-components: 32.1.0(@nuxt/kit@4.4.8)(esbuild@0.27.7)(rollup@4.57.1)(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@6.0.3))
unplugin-vue-components: 32.1.0(@nuxt/kit@4.4.8)(esbuild@0.27.7)(rollup@4.57.1)(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0))(vue@3.5.27(typescript@6.0.3))
vaul-vue: 0.4.1(reka-ui@2.9.10(vue@3.5.27(typescript@6.0.3)))(vue@3.5.27(typescript@6.0.3))
vue-component-type-helpers: 3.3.7
optionalDependencies:
@@ -9317,6 +9344,10 @@ snapshots:
dependencies:
'@octokit/openapi-types': 27.0.0
'@opentelemetry/api@1.9.0': {}
'@opentelemetry/semantic-conventions@1.43.0': {}
'@peculiar/asn1-schema@2.9.0':
dependencies:
'@peculiar/utils': 2.0.3
@@ -9516,6 +9547,12 @@ snapshots:
dependencies:
tslib: 2.8.1
'@smithy/node-http-handler@4.7.3':
dependencies:
'@smithy/core': 3.24.4
'@smithy/types': 4.14.2
tslib: 2.8.1
'@smithy/node-http-handler@4.7.4':
dependencies:
'@smithy/core': 3.24.4
@@ -9684,19 +9721,19 @@ snapshots:
postcss: 8.5.19
tailwindcss: 4.3.2
'@tailwindcss/vite@4.1.18(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))':
'@tailwindcss/vite@4.1.18(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0))':
dependencies:
'@tailwindcss/node': 4.1.18
'@tailwindcss/oxide': 4.1.18
tailwindcss: 4.1.18
vite: 7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)
vite: 7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0)
'@tailwindcss/vite@4.3.2(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))':
'@tailwindcss/vite@4.3.2(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0))':
dependencies:
'@tailwindcss/node': 4.3.2
'@tailwindcss/oxide': 4.3.2
tailwindcss: 4.3.2
vite: 7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)
vite: 7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0)
'@tanstack/table-core@8.21.3': {}
@@ -10153,10 +10190,10 @@ snapshots:
vite: 5.4.21(@types/node@25.2.2)(lightningcss@1.32.0)
vue: 3.5.27(typescript@6.0.3)
'@vitejs/plugin-vue@6.0.7(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@6.0.3))':
'@vitejs/plugin-vue@6.0.7(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0))(vue@3.5.27(typescript@6.0.3))':
dependencies:
'@rolldown/pluginutils': 1.0.1
vite: 7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)
vite: 7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0)
vue: 3.5.27(typescript@6.0.3)
'@volar/language-core@2.4.28':
@@ -10906,6 +10943,8 @@ snapshots:
dependencies:
dequal: 2.0.3
diff@8.0.4: {}
dir-compare@4.2.0:
dependencies:
minimatch: 3.1.2
@@ -11016,7 +11055,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
electron-vite@5.0.0(supports-color@7.2.0)(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)):
electron-vite@5.0.0(supports-color@7.2.0)(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0)):
dependencies:
'@babel/core': 7.29.0(supports-color@7.2.0)
'@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0(supports-color@7.2.0))
@@ -11024,7 +11063,7 @@ snapshots:
esbuild: 0.25.12
magic-string: 0.30.21
picocolors: 1.1.1
vite: 7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)
vite: 7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0)
transitivePeerDependencies:
- supports-color
@@ -11598,7 +11637,7 @@ snapshots:
dependencies:
tiny-inflate: 1.0.3
fontless@0.2.1(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)):
fontless@0.2.1(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0)):
dependencies:
consola: 3.4.2
css-tree: 3.1.0
@@ -11614,7 +11653,7 @@ snapshots:
unifont: 0.7.4
unstorage: 1.17.4
optionalDependencies:
vite: 7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)
vite: 7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0)
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -12839,14 +12878,14 @@ snapshots:
base64-js: 1.5.1
xmlbuilder: 15.1.1
postcss-load-config@6.0.1(jiti@2.7.0)(postcss@8.5.19)(tsx@4.21.0)(yaml@2.8.2):
postcss-load-config@6.0.1(jiti@2.7.0)(postcss@8.5.19)(tsx@4.21.0)(yaml@2.9.0):
dependencies:
lilconfig: 3.1.3
optionalDependencies:
jiti: 2.7.0
postcss: 8.5.19
tsx: 4.21.0
yaml: 2.8.2
yaml: 2.9.0
postcss-selector-parser@6.1.2:
dependencies:
@@ -13676,7 +13715,7 @@ snapshots:
tslib@2.8.1: {}
tsup@8.5.1(jiti@2.7.0)(postcss@8.5.19)(supports-color@7.2.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.2):
tsup@8.5.1(jiti@2.7.0)(postcss@8.5.19)(supports-color@7.2.0)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.9.0):
dependencies:
bundle-require: 5.1.0(esbuild@0.27.7)
cac: 6.7.14
@@ -13687,7 +13726,7 @@ snapshots:
fix-dts-default-cjs-exports: 1.0.1
joycon: 3.1.1
picocolors: 1.1.1
postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.19)(tsx@4.21.0)(yaml@2.8.2)
postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.19)(tsx@4.21.0)(yaml@2.9.0)
resolve-from: 5.0.0
rollup: 4.57.1
source-map: 0.7.6
@@ -13733,7 +13772,7 @@ snapshots:
type-level-regexp@0.1.17: {}
typebox@1.1.38: {}
typebox@1.3.7: {}
typescript-eslint@8.64.0(eslint@9.39.2(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3):
dependencies:
@@ -13844,7 +13883,7 @@ snapshots:
pathe: 2.0.3
picomatch: 4.0.5
unplugin-vue-components@32.1.0(@nuxt/kit@4.4.8)(esbuild@0.27.7)(rollup@4.57.1)(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@6.0.3)):
unplugin-vue-components@32.1.0(@nuxt/kit@4.4.8)(esbuild@0.27.7)(rollup@4.57.1)(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0))(vue@3.5.27(typescript@6.0.3)):
dependencies:
chokidar: 5.0.0
local-pkg: 1.2.1
@@ -13853,7 +13892,7 @@ snapshots:
obug: 2.1.3
picomatch: 4.0.5
tinyglobby: 0.2.17
unplugin: 3.3.0(esbuild@0.27.7)(rollup@4.57.1)(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))
unplugin: 3.3.0(esbuild@0.27.7)(rollup@4.57.1)(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0))
unplugin-utils: 0.3.1
vue: 3.5.27(typescript@6.0.3)
optionalDependencies:
@@ -13876,7 +13915,7 @@ snapshots:
picomatch: 4.0.5
webpack-virtual-modules: 0.6.2
unplugin@3.3.0(esbuild@0.27.7)(rollup@4.57.1)(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)):
unplugin@3.3.0(esbuild@0.27.7)(rollup@4.57.1)(vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0)):
dependencies:
'@jridgewell/remapping': 2.3.5
picomatch: 4.0.5
@@ -13884,7 +13923,7 @@ snapshots:
optionalDependencies:
esbuild: 0.27.7
rollup: 4.57.1
vite: 7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)
vite: 7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0)
unstorage@1.17.4:
dependencies:
@@ -13957,7 +13996,7 @@ snapshots:
fsevents: 2.3.3
lightningcss: 1.32.0
vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2):
vite@7.3.3(@types/node@25.2.2)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.9.0):
dependencies:
esbuild: 0.27.7
fdir: 6.5.0(picomatch@4.0.3)
@@ -13971,7 +14010,7 @@ snapshots:
jiti: 2.7.0
lightningcss: 1.32.0
tsx: 4.21.0
yaml: 2.8.2
yaml: 2.9.0
vitepress@1.6.4(@algolia/client-search@5.52.1)(@types/node@25.2.2)(axios@1.13.5(debug@4.4.3(supports-color@7.2.0)))(fuse.js@7.5.0)(lightningcss@1.32.0)(postcss@8.5.19)(search-insights@2.17.3)(typescript@6.0.3):
dependencies:
@@ -14148,7 +14187,7 @@ snapshots:
yallist@5.0.0: {}
yaml@2.8.2: {}
yaml@2.9.0: {}
yargs-parser@21.1.1: {}
+1
View File
@@ -8,6 +8,7 @@ resolutionMode: highest
shamefullyHoist: true
allowBuilds:
'@google/genai': false
better-sqlite3: true
electron: true
electron-winstaller: false