@bike4mind/cli 0.2.67 → 0.2.68-chore-upgrade-dev-deps.21927

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -869,13 +869,13 @@ const SRE_GATE_DEFAULTS = {
869
869
  enabled: true,
870
870
  autoThreshold: 85,
871
871
  askThreshold: 60,
872
- approvalTimeoutMinutes: 60
872
+ approvalTimeoutHours: 12
873
873
  };
874
874
  const SreGateConfigSchema = z.object({
875
875
  enabled: z.boolean().default(SRE_GATE_DEFAULTS.enabled),
876
876
  autoThreshold: z.number().min(0).max(100).default(SRE_GATE_DEFAULTS.autoThreshold),
877
877
  askThreshold: z.number().min(0).max(100).default(SRE_GATE_DEFAULTS.askThreshold),
878
- approvalTimeoutMinutes: z.number().min(1).default(SRE_GATE_DEFAULTS.approvalTimeoutMinutes)
878
+ approvalTimeoutHours: z.number().min(1).default(SRE_GATE_DEFAULTS.approvalTimeoutHours)
879
879
  }).refine((data) => data.autoThreshold >= data.askThreshold, {
880
880
  message: "autoThreshold must be >= askThreshold",
881
881
  path: ["autoThreshold"]
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { i as version, n as fetchLatestVersion, r as forceCheckForUpdate } from "../updateChecker-5XHMo7H0.mjs";
2
+ import { i as version, n as fetchLatestVersion, r as forceCheckForUpdate } from "../updateChecker-C7t6mYZD.mjs";
3
3
  import { execSync } from "child_process";
4
4
  import { constants, existsSync, promises } from "fs";
5
5
  import { homedir } from "os";
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
- import { I as isReadOnlyTool, L as ReActAgent, M as setWebSocketToolExecutor, P as buildCoreSystemPrompt, R as CustomCommandStore, S as getApiUrl, T as generateCliTools, V as SessionStore, _ as McpManager, a as createBackgroundAgentTools, c as AgentStore, f as ApiClient, g as ServerLlmBackend, h as WebSocketLlmBackend, i as createWriteTodosTool, l as SubagentOrchestrator, m as WebSocketConnectionManager, n as createFindDefinitionTool, o as BackgroundAgentManager, p as WebSocketToolExecutor, r as createTodoStore, s as createAgentDelegateTool, t as createGetFileStructureTool, u as createSkillTool, w as PermissionManager, x as loadContextFiles, z as CheckpointStore } from "../tools-Cswoa5tm.mjs";
3
- import { n as logger, t as ConfigStore } from "../ConfigStore-BzEJ4MJl.mjs";
2
+ import { I as isReadOnlyTool, L as ReActAgent, M as setWebSocketToolExecutor, P as buildCoreSystemPrompt, R as CustomCommandStore, S as getApiUrl, T as generateCliTools, V as SessionStore, _ as McpManager, a as createBackgroundAgentTools, c as AgentStore, f as ApiClient, g as ServerLlmBackend, h as WebSocketLlmBackend, i as createWriteTodosTool, l as SubagentOrchestrator, m as WebSocketConnectionManager, n as createFindDefinitionTool, o as BackgroundAgentManager, p as WebSocketToolExecutor, r as createTodoStore, s as createAgentDelegateTool, t as createGetFileStructureTool, u as createSkillTool, w as PermissionManager, x as loadContextFiles, z as CheckpointStore } from "../tools-B4bICKkY.mjs";
3
+ import { n as logger, t as ConfigStore } from "../ConfigStore-ChOlZu1G.mjs";
4
4
  import { t as DEFAULT_SANDBOX_CONFIG } from "../types-DBEjF9YS.mjs";
5
5
  import { t as createSandboxRuntime } from "../SandboxRuntimeAdapter-C1B4t20N.mjs";
6
6
  import { t as SandboxOrchestrator } from "../SandboxOrchestrator-BEW3rqYi.mjs";
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { t as ConfigStore } from "../ConfigStore-BzEJ4MJl.mjs";
2
+ import { t as ConfigStore } from "../ConfigStore-ChOlZu1G.mjs";
3
3
  //#region src/commands/mcpCommand.ts
4
4
  /**
5
5
  * External MCP commands (b4m mcp list, b4m mcp add, etc.)
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { i as version, r as forceCheckForUpdate } from "../updateChecker-5XHMo7H0.mjs";
2
+ import { i as version, r as forceCheckForUpdate } from "../updateChecker-C7t6mYZD.mjs";
3
3
  import { execSync } from "child_process";
4
4
  //#region src/commands/updateCommand.ts
5
5
  /**
package/dist/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { n as useCliStore, t as selectActiveBackgroundAgents } from "./store-Dw1nZX2Y.mjs";
3
- import { A as clearFeatureModuleTools, B as CommandHistoryStore, C as getEnvironmentName, D as DEFAULT_AGENT_MODEL, E as ALWAYS_DENIED_FOR_AGENTS, F as buildSkillsPromptSection, G as searchCommands, H as OAuthClient, I as isReadOnlyTool, J as searchFiles, K as mergeCommands, L as ReActAgent, M as setWebSocketToolExecutor, N as OllamaBackend, O as DEFAULT_MAX_ITERATIONS, P as buildCoreSystemPrompt, R as CustomCommandStore, S as getApiUrl, T as generateCliTools, U as hasFileReferences, V as SessionStore, W as processFileReferences, Y as warmFileCache, _ as McpManager, a as createBackgroundAgentTools, b as extractCompactInstructions, c as AgentStore, d as parseAgentConfig, f as ApiClient, g as ServerLlmBackend, h as WebSocketLlmBackend, i as createWriteTodosTool, j as registerFeatureModuleTools, k as DEFAULT_THOROUGHNESS, l as SubagentOrchestrator, m as WebSocketConnectionManager, n as createFindDefinitionTool, o as BackgroundAgentManager, p as WebSocketToolExecutor, q as formatFileSize, r as createTodoStore, s as createAgentDelegateTool, t as createGetFileStructureTool, u as createSkillTool, v as substituteArguments, w as PermissionManager, x as loadContextFiles, y as formatStep, z as CheckpointStore } from "./tools-Cswoa5tm.mjs";
4
- import { Dt as validateNotebookPath$1, Et as validateJupyterKernelName, g as ChatModels, m as CREDIT_DEDUCT_TRANSACTION_TYPES, n as logger, t as ConfigStore } from "./ConfigStore-BzEJ4MJl.mjs";
5
- import { i as version, t as checkForUpdate } from "./updateChecker-5XHMo7H0.mjs";
3
+ import { A as clearFeatureModuleTools, B as CommandHistoryStore, C as getEnvironmentName, D as DEFAULT_AGENT_MODEL, E as ALWAYS_DENIED_FOR_AGENTS, F as buildSkillsPromptSection, G as searchCommands, H as OAuthClient, I as isReadOnlyTool, J as searchFiles, K as mergeCommands, L as ReActAgent, M as setWebSocketToolExecutor, N as OllamaBackend, O as DEFAULT_MAX_ITERATIONS, P as buildCoreSystemPrompt, R as CustomCommandStore, S as getApiUrl, T as generateCliTools, U as hasFileReferences, V as SessionStore, W as processFileReferences, Y as warmFileCache, _ as McpManager, a as createBackgroundAgentTools, b as extractCompactInstructions, c as AgentStore, d as parseAgentConfig, f as ApiClient, g as ServerLlmBackend, h as WebSocketLlmBackend, i as createWriteTodosTool, j as registerFeatureModuleTools, k as DEFAULT_THOROUGHNESS, l as SubagentOrchestrator, m as WebSocketConnectionManager, n as createFindDefinitionTool, o as BackgroundAgentManager, p as WebSocketToolExecutor, q as formatFileSize, r as createTodoStore, s as createAgentDelegateTool, t as createGetFileStructureTool, u as createSkillTool, v as substituteArguments, w as PermissionManager, x as loadContextFiles, y as formatStep, z as CheckpointStore } from "./tools-B4bICKkY.mjs";
4
+ import { Dt as validateNotebookPath$1, Et as validateJupyterKernelName, g as ChatModels, m as CREDIT_DEDUCT_TRANSACTION_TYPES, n as logger, t as ConfigStore } from "./ConfigStore-ChOlZu1G.mjs";
5
+ import { i as version, t as checkForUpdate } from "./updateChecker-C7t6mYZD.mjs";
6
6
  import React, { useCallback, useEffect, useMemo, useReducer, useRef, useState } from "react";
7
7
  import { Box, Static, Text, render, useApp, useInput } from "ink";
8
8
  import { execSync } from "child_process";
@@ -22,7 +22,7 @@ import jwt from "jsonwebtoken";
22
22
  import open from "open";
23
23
  import axios, { isAxiosError } from "axios";
24
24
  import { get_encoding } from "tiktoken";
25
- import WebSocket from "ws";
25
+ import WsWebSocket from "ws";
26
26
  //#region src/components/StatusBar.tsx
27
27
  const StatusBar = React.memo(function StatusBar({ sessionName, model, tokenUsage, creditsUsage }) {
28
28
  const autoAcceptEdits = useCliStore((state) => state.autoAcceptEdits);
@@ -2798,14 +2798,14 @@ var JupyterClient = class {
2798
2798
  let executionCount = null;
2799
2799
  let hasError = false;
2800
2800
  let errorInfo;
2801
- const ws = new WebSocket(wsUrl);
2801
+ const ws = new WsWebSocket(wsUrl);
2802
2802
  const timeoutHandle = setTimeout(() => {
2803
2803
  cleanup();
2804
2804
  reject(new JupyterClientError(`Cell execution timed out after ${timeoutMs}ms`));
2805
2805
  }, timeoutMs);
2806
2806
  const cleanup = () => {
2807
2807
  clearTimeout(timeoutHandle);
2808
- if (ws.readyState === WebSocket.OPEN || ws.readyState === WebSocket.CONNECTING) ws.close();
2808
+ if (ws.readyState === WsWebSocket.OPEN || ws.readyState === WsWebSocket.CONNECTING) ws.close();
2809
2809
  };
2810
2810
  ws.on("error", (err) => {
2811
2811
  cleanup();
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { $ as RegInviteEvents, A as ImageGenerationUsageTransaction, B as OpenAIEmbeddingModel, C as FileEvents, Ct as isGPTImageModel, D as GenericCreditAddTransaction, E as GenerateImageToolCallSchema, F as KnowledgeType, G as ProjectEvents, H as Permission, I as LLMEvents, J as QuestMasterParamsSchema, K as PromptMetaZodSchema, L as MiscEvents, M as InboxEvents, N as InviteEvents, O as GenericCreditDeductTransaction, Ot as CollectionType, P as InviteType, Q as RechartsChartTypeList, R as ModalEvents, S as FeedbackEvents, St as getViewById, T as GEMINI_IMAGE_MODELS, Tt as sanitizeTelemetryError, U as PermissionDeniedError, V as OpenAIImageGenerationInput, W as ProfileEvents, X as RealtimeVoiceUsageTransaction, Y as REASONING_SUPPORTED_MODELS, Z as ReceivedCreditTransaction, _ as CompletionApiUsageTransaction, _t as VoyageAIEmbeddingModel, a as ApiKeyEvents, at as SpeechToTextModels, b as FIXED_TEMPERATURE_MODELS, bt as getDataLakeTags, c as AppFileEvents, ct as TagType, d as BFL_IMAGE_MODELS, dt as ToolUsageTransaction, et as ResearchModeParamsSchema, f as BFL_SAFETY_TOLERANCE, ft as TransferCreditTransaction, g as ChatModels, gt as VideoModels, h as ChatCompletionCreateInputSchema, ht as VideoGenerationUsageTransaction, i as AiEvents, it as SessionEvents, j as ImageModels, k as ImageEditUsageTransaction, l as ArtifactTypeSchema, lt as TaskScheduleHandler, mt as VIDEO_SIZE_CONSTRAINTS, n as logger, nt as ResearchTaskPeriodicFrequencyType, o as ApiKeyScope, ot as SubscriptionCreditTransaction, p as BedrockEmbeddingModel, pt as UiNavigationEvents, q as PurchaseTransaction, r as ALERT_THRESHOLDS, rt as ResearchTaskType, s as ApiKeyType, st as SupportedFabFileMimeTypes, t as ConfigStore, tt as ResearchTaskExecutionType, u as AuthEvents, ut as TextGenerationUsageTransaction, v as DashboardParamsSchema, vt as XAI_IMAGE_MODELS, w as FriendshipEvents, wt as resolveNavigationIntents, x as FavoriteDocumentType, xt as getMcpProviderMetadata, y as ElabsEvents, yt as b4mLLMTools, z as ModelBackend } from "./ConfigStore-BzEJ4MJl.mjs";
2
+ import { $ as RegInviteEvents, A as ImageGenerationUsageTransaction, B as OpenAIEmbeddingModel, C as FileEvents, Ct as isGPTImageModel, D as GenericCreditAddTransaction, E as GenerateImageToolCallSchema, F as KnowledgeType, G as ProjectEvents, H as Permission, I as LLMEvents, J as QuestMasterParamsSchema, K as PromptMetaZodSchema, L as MiscEvents, M as InboxEvents, N as InviteEvents, O as GenericCreditDeductTransaction, Ot as CollectionType, P as InviteType, Q as RechartsChartTypeList, R as ModalEvents, S as FeedbackEvents, St as getViewById, T as GEMINI_IMAGE_MODELS, Tt as sanitizeTelemetryError, U as PermissionDeniedError, V as OpenAIImageGenerationInput, W as ProfileEvents, X as RealtimeVoiceUsageTransaction, Y as REASONING_SUPPORTED_MODELS, Z as ReceivedCreditTransaction, _ as CompletionApiUsageTransaction, _t as VoyageAIEmbeddingModel, a as ApiKeyEvents, at as SpeechToTextModels, b as FIXED_TEMPERATURE_MODELS, bt as getDataLakeTags, c as AppFileEvents, ct as TagType, d as BFL_IMAGE_MODELS, dt as ToolUsageTransaction, et as ResearchModeParamsSchema, f as BFL_SAFETY_TOLERANCE, ft as TransferCreditTransaction, g as ChatModels, gt as VideoModels, h as ChatCompletionCreateInputSchema, ht as VideoGenerationUsageTransaction, i as AiEvents, it as SessionEvents, j as ImageModels, k as ImageEditUsageTransaction, l as ArtifactTypeSchema, lt as TaskScheduleHandler, mt as VIDEO_SIZE_CONSTRAINTS, n as logger, nt as ResearchTaskPeriodicFrequencyType, o as ApiKeyScope, ot as SubscriptionCreditTransaction, p as BedrockEmbeddingModel, pt as UiNavigationEvents, q as PurchaseTransaction, r as ALERT_THRESHOLDS, rt as ResearchTaskType, s as ApiKeyType, st as SupportedFabFileMimeTypes, t as ConfigStore, tt as ResearchTaskExecutionType, u as AuthEvents, ut as TextGenerationUsageTransaction, v as DashboardParamsSchema, vt as XAI_IMAGE_MODELS, w as FriendshipEvents, wt as resolveNavigationIntents, x as FavoriteDocumentType, xt as getMcpProviderMetadata, y as ElabsEvents, yt as b4mLLMTools, z as ModelBackend } from "./ConfigStore-ChOlZu1G.mjs";
3
3
  import { n as isPathAllowed, t as assertPathAllowed } from "./pathValidation-B8P0stPW-n-OGhUWO.mjs";
4
4
  import { execFile, execFileSync, spawn } from "child_process";
5
5
  import { createHash, randomBytes } from "crypto";
@@ -81,7 +81,7 @@ import { homedir as homedir$1 } from "node:os";
81
81
  import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
82
82
  import { Client } from "@modelcontextprotocol/sdk/client/index.js";
83
83
  import { fileURLToPath } from "url";
84
- import WebSocket from "ws";
84
+ import WsWebSocket from "ws";
85
85
  import { createParser } from "eventsource-parser";
86
86
  import { createRequire } from "module";
87
87
  //#region src/utils/fileSearch.ts
@@ -1039,11 +1039,10 @@ var CommandHistoryStore = class {
1039
1039
  if (!this.history || this.history.length <= MAX_HISTORY_ENTRIES) return;
1040
1040
  const trimmedCommands = this.history.slice(0, MAX_HISTORY_ENTRIES);
1041
1041
  const lines = trimmedCommands.reverse().map((command) => {
1042
- const entry = {
1042
+ return JSON.stringify({
1043
1043
  command,
1044
1044
  timestamp: Date.now()
1045
- };
1046
- return JSON.stringify(entry);
1045
+ });
1047
1046
  }).join("\n");
1048
1047
  await promises.writeFile(this.historyPath, lines + "\n", "utf-8");
1049
1048
  this.history = trimmedCommands;
@@ -8080,7 +8079,7 @@ No markdown, no explanation, no code blocks — just the raw JSON object.`;
8080
8079
  "Minimize: sum(error^2)"
8081
8080
  ].join("\n");
8082
8081
  //#endregion
8083
- //#region ../../b4m-core/services/dist/tools-Cc3Su03g.mjs
8082
+ //#region ../../b4m-core/services/dist/tools-Cf0adevQ.mjs
8084
8083
  async function performDeepResearch(context, params, config) {
8085
8084
  const maxDepth = config.maxDepth || 7;
8086
8085
  const duration = config.duration || 4.5;
@@ -8706,11 +8705,12 @@ async function wolframAlphaQuery(adapters, params, logger) {
8706
8705
  errorText
8707
8706
  });
8708
8707
  if (response.status === 501) return `Wolfram Alpha could not interpret this query. This typically happens when:
8709
- 1. The query asks about Wolfram Alpha's capabilities (meta-queries are not supported)
8708
+ 1. The query combines multiple concepts that should be broken into simpler parts
8710
8709
  2. The query is too vague or conversational
8711
8710
  3. The query doesn't contain a specific computation or data lookup
8711
+ 4. The query asks about Wolfram Alpha's capabilities (meta-queries are not supported)
8712
8712
 
8713
- Try sending a concrete computational query like "integrate x^2 dx", "population of Japan 2023", or "convert 100 USD to EUR".`;
8713
+ Try breaking compound queries into simpler steps, or send a concrete computational query like "integrate x^2 dx", "population of Japan 2023", or "convert 100 USD to EUR".${errorText ? `\n\nWolfram Alpha responded: ${errorText}` : ""}`;
8714
8714
  if (response.status === 403) return `Wolfram Alpha API key is invalid or missing. Please contact your administrator.`;
8715
8715
  return `Wolfram Alpha error: ${response.statusText}`;
8716
8716
  }
@@ -11244,9 +11244,8 @@ const eclipticToEquatorial = (lon, lat, obliquity) => {
11244
11244
  const sinDec = Math.sin(latRad) * Math.cos(oblRad) + Math.cos(latRad) * Math.sin(oblRad) * Math.sin(lonRad);
11245
11245
  const dec = toDegrees(Math.asin(sinDec));
11246
11246
  const y = Math.sin(lonRad) * Math.cos(oblRad) - Math.tan(latRad) * Math.sin(oblRad);
11247
- const x = Math.cos(lonRad);
11248
11247
  return {
11249
- ra: normalizeAngle(toDegrees(Math.atan2(y, x))),
11248
+ ra: normalizeAngle(toDegrees(Math.atan2(y, Math.cos(lonRad)))),
11250
11249
  dec
11251
11250
  };
11252
11251
  };
@@ -18720,7 +18719,7 @@ var WebSocketLlmBackend = class {
18720
18719
  //#endregion
18721
18720
  //#region src/ws/WebSocketConnectionManager.ts
18722
18721
  const useWsPolyfill = typeof globalThis.WebSocket === "undefined";
18723
- const WS = useWsPolyfill ? WebSocket : globalThis.WebSocket;
18722
+ const WS = useWsPolyfill ? WsWebSocket : globalThis.WebSocket;
18724
18723
  /**
18725
18724
  * Manages a persistent WebSocket connection for CLI ↔ server communication.
18726
18725
  * Handles heartbeat, reconnection, and message routing by requestId.
@@ -18757,7 +18756,7 @@ var WebSocketConnectionManager = class {
18757
18756
  }
18758
18757
  return new Promise((resolve, reject) => {
18759
18758
  logger.debug(`[WS] Connecting to ${this.wsUrl}...`);
18760
- if (useWsPolyfill) this.ws = new WebSocket(this.wsUrl, { headers: { "Sec-WebSocket-Protocol": `access_token.${token}` } });
18759
+ if (useWsPolyfill) this.ws = new WsWebSocket(this.wsUrl, { headers: { "Sec-WebSocket-Protocol": `access_token.${token}` } });
18761
18760
  else this.ws = new WS(this.wsUrl, [`access_token.${token}`]);
18762
18761
  this.ws.onopen = () => {
18763
18762
  logger.debug("[WS] Connected");
@@ -19287,10 +19286,7 @@ function createSkillTool(deps) {
19287
19286
  if (command.allowedTools?.length && !needsFork) logger.debug(`Skill "/${skillName}" declares allowedTools but runs inline — tool restrictions are not enforced. Set context: fork to enforce.`);
19288
19287
  if (needsFork) {
19289
19288
  const { subagentOrchestrator, sessionId } = deps;
19290
- if (!subagentOrchestrator || !sessionId) {
19291
- const missing = !subagentOrchestrator ? "subagentOrchestrator" : "sessionId";
19292
- throw new Error(`Skill "${skillName}" requires forked context but ${missing} is not available`);
19293
- }
19289
+ if (!subagentOrchestrator || !sessionId) throw new Error(`Skill "${skillName}" requires forked context but ${!subagentOrchestrator ? "subagentOrchestrator" : "sessionId"} is not available`);
19294
19290
  const agentConfig = parseAgentConfig(command.agent);
19295
19291
  const agentResult = await subagentOrchestrator.delegateToAgent({
19296
19292
  task: expandedBody,
@@ -4,7 +4,7 @@ import { homedir } from "os";
4
4
  import path from "path";
5
5
  import axios from "axios";
6
6
  //#region package.json
7
- var version = "0.2.67";
7
+ var version = "0.2.68-chore-upgrade-dev-deps.21927+27ff1f9c2";
8
8
  //#endregion
9
9
  //#region src/utils/updateChecker.ts
10
10
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bike4mind/cli",
3
- "version": "0.2.67",
3
+ "version": "0.2.68-chore-upgrade-dev-deps.21927+27ff1f9c2",
4
4
  "type": "module",
5
5
  "description": "Interactive CLI tool for Bike4Mind with ReAct agents",
6
6
  "license": "UNLICENSED",
@@ -115,11 +115,11 @@
115
115
  "zustand": "^4.5.4"
116
116
  },
117
117
  "devDependencies": {
118
- "@bike4mind/agents": "0.4.5",
119
- "@bike4mind/common": "2.76.1",
120
- "@bike4mind/mcp": "1.33.24",
121
- "@bike4mind/services": "2.70.1",
122
- "@bike4mind/utils": "2.16.6",
118
+ "@bike4mind/agents": "0.4.6-chore-upgrade-dev-deps.21927+27ff1f9c2",
119
+ "@bike4mind/common": "2.76.2-chore-upgrade-dev-deps.21927+27ff1f9c2",
120
+ "@bike4mind/mcp": "1.33.25-chore-upgrade-dev-deps.21927+27ff1f9c2",
121
+ "@bike4mind/services": "2.70.2-chore-upgrade-dev-deps.21927+27ff1f9c2",
122
+ "@bike4mind/utils": "2.16.7-chore-upgrade-dev-deps.21927+27ff1f9c2",
123
123
  "@types/better-sqlite3": "^7.6.13",
124
124
  "@types/jsonwebtoken": "^9.0.4",
125
125
  "@types/node": "^22.9.0",
@@ -128,13 +128,13 @@
128
128
  "@types/ws": "^8.18.1",
129
129
  "@types/yargs": "^17.0.35",
130
130
  "ink-testing-library": "^4.0.0",
131
- "tsdown": "^0.21.4",
131
+ "tsdown": "^0.21.7",
132
132
  "tsx": "^4.21.0",
133
133
  "typescript": "^5.9.3",
134
- "vitest": "^4.1.0"
134
+ "vitest": "^4.1.2"
135
135
  },
136
136
  "optionalDependencies": {
137
137
  "@vscode/ripgrep": "^1.17.1"
138
138
  },
139
- "gitHead": "e714b39bca57915abc42213acb16fd662f3fc46b"
139
+ "gitHead": "27ff1f9c202690e97fcf8a2e2717321be7b05ba4"
140
140
  }