@bike4mind/cli 0.2.49-fix-cli-stream-resilience-v2.21033 → 0.2.49-fix-telemetry-alert-debug.21031
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.
- package/dist/{chunk-2WNNPZZS.js → chunk-4ZO5RNWO.js} +21 -59
- package/dist/{chunk-AINGID72.js → chunk-5SZI2XFM.js} +6 -6
- package/dist/{chunk-7VEI22BF.js → chunk-F6IY547T.js} +1 -1
- package/dist/{chunk-UDBM5N7V.js → chunk-M7QGYBN7.js} +22 -58
- package/dist/{chunk-X26VCD3A.js → chunk-OFKZXY6L.js} +1 -1
- package/dist/{chunk-MP3FYWMR.js → chunk-WKPO5JDF.js} +1 -1
- package/dist/commands/doctorCommand.js +1 -1
- package/dist/commands/headlessCommand.js +5 -5
- package/dist/commands/updateCommand.js +1 -1
- package/dist/{create-PA2DIVCF.js → create-6Z46TX3C.js} +2 -2
- package/dist/index.js +11 -14
- package/dist/{mementoService-W76KVRGE.js → mementoService-XAAA3Q54.js} +2 -2
- package/dist/{src-XUTQ6N2T.js → src-FDPAPWTO.js} +1 -1
- package/dist/{subtractCredits-3V5REXEH.js → subtractCredits-7SHS6DXL.js} +2 -2
- package/package.json +6 -6
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
getOpenWeatherKey,
|
|
5
5
|
getSerperKey,
|
|
6
6
|
getWolframAlphaKey
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-F6IY547T.js";
|
|
8
8
|
import {
|
|
9
9
|
BFLImageService,
|
|
10
10
|
BaseStorage,
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
OpenAIBackend,
|
|
17
17
|
OpenAIImageService,
|
|
18
18
|
XAIImageService
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-M7QGYBN7.js";
|
|
20
20
|
import {
|
|
21
21
|
Logger
|
|
22
22
|
} from "./chunk-PFBYGCOW.js";
|
|
@@ -14017,25 +14017,40 @@ var AnomalyAlertService = class _AnomalyAlertService {
|
|
|
14017
14017
|
* Check if an alert should be sent and send it if appropriate
|
|
14018
14018
|
*/
|
|
14019
14019
|
async checkAndAlert(telemetry) {
|
|
14020
|
+
console.log("[AnomalyAlert] DEBUG: checkAndAlert called", {
|
|
14021
|
+
enabled: this.config.enabled,
|
|
14022
|
+
isSlackConfigured: this.isSlackConfigured()
|
|
14023
|
+
});
|
|
14020
14024
|
if (!this.config.enabled || !this.isSlackConfigured()) {
|
|
14025
|
+
console.log("[AnomalyAlert] DEBUG: Early return - not enabled or Slack not configured");
|
|
14021
14026
|
return false;
|
|
14022
14027
|
}
|
|
14023
14028
|
const { anomalies } = telemetry;
|
|
14024
14029
|
const threshold = this.config.alertThreshold ?? ALERT_THRESHOLDS.warning;
|
|
14030
|
+
console.log("[AnomalyAlert] DEBUG: Threshold check", {
|
|
14031
|
+
anomalyScore: anomalies.anomalyScore,
|
|
14032
|
+
threshold
|
|
14033
|
+
});
|
|
14025
14034
|
if (anomalies.anomalyScore < threshold) {
|
|
14035
|
+
console.log("[AnomalyAlert] DEBUG: Score below threshold");
|
|
14026
14036
|
return false;
|
|
14027
14037
|
}
|
|
14038
|
+
console.log("[AnomalyAlert] DEBUG: Checking deduplication", { dedupKey: anomalies.dedupKey });
|
|
14028
14039
|
const isDup = await this.checkDeduplication(anomalies.dedupKey);
|
|
14040
|
+
console.log("[AnomalyAlert] DEBUG: Dedup result", { isDup });
|
|
14029
14041
|
if (isDup) {
|
|
14030
14042
|
this.logger.info(`\u{1F4CA} [AnomalyAlert] Suppressed duplicate alert: ${anomalies.dedupKey}`);
|
|
14031
14043
|
return false;
|
|
14032
14044
|
}
|
|
14033
14045
|
try {
|
|
14046
|
+
console.log("[AnomalyAlert] DEBUG: Sending Slack alert");
|
|
14034
14047
|
const message = this.formatSlackMessage(telemetry);
|
|
14035
14048
|
await this.sendSlackAlert(message);
|
|
14036
14049
|
this.logger.info(`\u{1F4CA} [AnomalyAlert] Alert sent for ${anomalies.primaryAnomaly} (score: ${anomalies.anomalyScore})`);
|
|
14050
|
+
console.log("[AnomalyAlert] DEBUG: Alert sent successfully");
|
|
14037
14051
|
return true;
|
|
14038
14052
|
} catch (error) {
|
|
14053
|
+
console.log("[AnomalyAlert] DEBUG: Failed to send alert", { error: String(error) });
|
|
14039
14054
|
this.logger.error(`\u{1F4CA} [AnomalyAlert] Failed to send alert:`, error);
|
|
14040
14055
|
return false;
|
|
14041
14056
|
}
|
|
@@ -16142,48 +16157,17 @@ function extractUsageInfo(parsed) {
|
|
|
16142
16157
|
usdCost: parsed.credits?.usdCost
|
|
16143
16158
|
};
|
|
16144
16159
|
}
|
|
16145
|
-
var ServerLlmBackend = class
|
|
16160
|
+
var ServerLlmBackend = class {
|
|
16146
16161
|
constructor(options) {
|
|
16147
16162
|
this.completionsEndpoint = "/api/ai/v1/completions";
|
|
16148
16163
|
this.apiClient = options.apiClient;
|
|
16149
16164
|
this.currentModel = options.model;
|
|
16150
16165
|
}
|
|
16151
|
-
static {
|
|
16152
|
-
/** Max retries for transient stream failures (e.g. missing [DONE]) */
|
|
16153
|
-
this.MAX_STREAM_RETRIES = 2;
|
|
16154
|
-
}
|
|
16155
16166
|
/**
|
|
16156
16167
|
* Make authenticated LLM completion request via server
|
|
16157
|
-
* Parses SSE stream and invokes callback for each event
|
|
16158
|
-
* Automatically retries on transient stream failures (e.g. stream ending prematurely).
|
|
16168
|
+
* Parses SSE stream and invokes callback for each event
|
|
16159
16169
|
*/
|
|
16160
16170
|
async complete(model, messages, options, callback) {
|
|
16161
|
-
let lastError;
|
|
16162
|
-
for (let attempt = 0; attempt <= _ServerLlmBackend.MAX_STREAM_RETRIES; attempt++) {
|
|
16163
|
-
if (attempt > 0) {
|
|
16164
|
-
logger.warn(
|
|
16165
|
-
`[ServerLlmBackend] Retrying stream (attempt ${attempt + 1}/${_ServerLlmBackend.MAX_STREAM_RETRIES + 1})...`
|
|
16166
|
-
);
|
|
16167
|
-
}
|
|
16168
|
-
try {
|
|
16169
|
-
await this.completeOnce(model, messages, options, callback);
|
|
16170
|
-
return;
|
|
16171
|
-
} catch (error) {
|
|
16172
|
-
lastError = error instanceof Error ? error : new Error(String(error));
|
|
16173
|
-
const isTransientStreamError = lastError.message.includes("Stream ended prematurely");
|
|
16174
|
-
const isAborted = options.abortSignal?.aborted;
|
|
16175
|
-
if (!isTransientStreamError || isAborted) {
|
|
16176
|
-
throw lastError;
|
|
16177
|
-
}
|
|
16178
|
-
logger.warn(`[ServerLlmBackend] Transient stream failure: ${lastError.message}`);
|
|
16179
|
-
}
|
|
16180
|
-
}
|
|
16181
|
-
throw lastError ?? new Error("Stream failed after all retry attempts");
|
|
16182
|
-
}
|
|
16183
|
-
/**
|
|
16184
|
-
* Single attempt at completing a streaming request.
|
|
16185
|
-
*/
|
|
16186
|
-
async completeOnce(model, messages, options, callback) {
|
|
16187
16171
|
logger.debug(`[ServerLlmBackend] Starting complete() with model: ${model}`);
|
|
16188
16172
|
if (options.abortSignal?.aborted) {
|
|
16189
16173
|
logger.debug("[ServerLlmBackend] Request aborted before start");
|
|
@@ -16384,30 +16368,8 @@ var ServerLlmBackend = class _ServerLlmBackend {
|
|
|
16384
16368
|
});
|
|
16385
16369
|
response.data.on("end", () => {
|
|
16386
16370
|
if (!receivedDone) {
|
|
16387
|
-
|
|
16388
|
-
|
|
16389
|
-
`[ServerLlmBackend] Stream ended without [DONE] signal. Accumulated text: ${accumulatedText.length} chars, tools: ${toolsUsed.length}`
|
|
16390
|
-
);
|
|
16391
|
-
if (hasAccumulatedData) {
|
|
16392
|
-
const cleanedText = stripThinkingBlocks(accumulatedText);
|
|
16393
|
-
streamLogger.streamComplete(accumulatedText);
|
|
16394
|
-
if (toolsUsed.length > 0) {
|
|
16395
|
-
const info = {
|
|
16396
|
-
toolsUsed,
|
|
16397
|
-
thinking: thinkingBlocks.length > 0 ? thinkingBlocks : void 0,
|
|
16398
|
-
...lastUsageInfo
|
|
16399
|
-
};
|
|
16400
|
-
callback([cleanedText], info).catch((err) => reject(err)).then(() => resolve3());
|
|
16401
|
-
} else if (cleanedText) {
|
|
16402
|
-
callback([cleanedText], lastUsageInfo).catch((err) => reject(err)).then(() => resolve3());
|
|
16403
|
-
} else {
|
|
16404
|
-
resolve3();
|
|
16405
|
-
}
|
|
16406
|
-
} else {
|
|
16407
|
-
reject(
|
|
16408
|
-
new Error("Stream ended prematurely without receiving any data. The server may be experiencing issues.")
|
|
16409
|
-
);
|
|
16410
|
-
}
|
|
16371
|
+
logger.debug("[ServerLlmBackend] Stream ended without [DONE], resolving anyway");
|
|
16372
|
+
resolve3();
|
|
16411
16373
|
} else {
|
|
16412
16374
|
logger.debug("[ServerLlmBackend] Stream ended, [DONE] handler will resolve");
|
|
16413
16375
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// package.json
|
|
4
4
|
var package_default = {
|
|
5
5
|
name: "@bike4mind/cli",
|
|
6
|
-
version: "0.2.49-fix-
|
|
6
|
+
version: "0.2.49-fix-telemetry-alert-debug.21031+766fdd35a",
|
|
7
7
|
type: "module",
|
|
8
8
|
description: "Interactive CLI tool for Bike4Mind with ReAct agents",
|
|
9
9
|
license: "UNLICENSED",
|
|
@@ -118,10 +118,10 @@ var package_default = {
|
|
|
118
118
|
},
|
|
119
119
|
devDependencies: {
|
|
120
120
|
"@bike4mind/agents": "0.1.0",
|
|
121
|
-
"@bike4mind/common": "2.67.1-fix-
|
|
122
|
-
"@bike4mind/mcp": "1.33.11-fix-
|
|
123
|
-
"@bike4mind/services": "2.63.1-fix-
|
|
124
|
-
"@bike4mind/utils": "2.15.4-fix-
|
|
121
|
+
"@bike4mind/common": "2.67.1-fix-telemetry-alert-debug.21031+766fdd35a",
|
|
122
|
+
"@bike4mind/mcp": "1.33.11-fix-telemetry-alert-debug.21031+766fdd35a",
|
|
123
|
+
"@bike4mind/services": "2.63.1-fix-telemetry-alert-debug.21031+766fdd35a",
|
|
124
|
+
"@bike4mind/utils": "2.15.4-fix-telemetry-alert-debug.21031+766fdd35a",
|
|
125
125
|
"@types/better-sqlite3": "^7.6.13",
|
|
126
126
|
"@types/diff": "^5.0.9",
|
|
127
127
|
"@types/jsonwebtoken": "^9.0.4",
|
|
@@ -140,7 +140,7 @@ var package_default = {
|
|
|
140
140
|
optionalDependencies: {
|
|
141
141
|
"@vscode/ripgrep": "^1.17.0"
|
|
142
142
|
},
|
|
143
|
-
gitHead: "
|
|
143
|
+
gitHead: "766fdd35a8018f32ebf70db963625dcc6ea2d653"
|
|
144
144
|
};
|
|
145
145
|
|
|
146
146
|
// src/utils/updateChecker.ts
|
|
@@ -6578,57 +6578,6 @@ var GeminiBackend = class {
|
|
|
6578
6578
|
// ../../b4m-core/packages/utils/dist/src/llm/ollamaBackend.js
|
|
6579
6579
|
import { Ollama } from "ollama";
|
|
6580
6580
|
import { Agent as Agent2 } from "undici";
|
|
6581
|
-
|
|
6582
|
-
// ../../b4m-core/packages/utils/dist/src/llm/messageFormatConverter.js
|
|
6583
|
-
function convertMessageToOpenAIFormat(msg) {
|
|
6584
|
-
if (msg.role === "assistant" && msg.tool_calls) {
|
|
6585
|
-
return [
|
|
6586
|
-
{
|
|
6587
|
-
...msg,
|
|
6588
|
-
content: null,
|
|
6589
|
-
tool_calls: msg.tool_calls
|
|
6590
|
-
}
|
|
6591
|
-
];
|
|
6592
|
-
}
|
|
6593
|
-
if (msg.role === "assistant" && Array.isArray(msg.content)) {
|
|
6594
|
-
const contentBlocks = msg.content;
|
|
6595
|
-
const toolUseBlocks = contentBlocks.filter((b) => b.type === "tool_use");
|
|
6596
|
-
if (toolUseBlocks.length > 0) {
|
|
6597
|
-
const textParts = contentBlocks.filter((b) => b.type === "text").map((b) => b.text).filter(Boolean);
|
|
6598
|
-
return [
|
|
6599
|
-
{
|
|
6600
|
-
role: "assistant",
|
|
6601
|
-
content: textParts.length > 0 ? textParts.join("\n") : null,
|
|
6602
|
-
tool_calls: toolUseBlocks.map((b) => ({
|
|
6603
|
-
id: b.id,
|
|
6604
|
-
type: "function",
|
|
6605
|
-
function: {
|
|
6606
|
-
name: b.name,
|
|
6607
|
-
arguments: typeof b.input === "string" ? b.input : JSON.stringify(b.input)
|
|
6608
|
-
}
|
|
6609
|
-
}))
|
|
6610
|
-
}
|
|
6611
|
-
];
|
|
6612
|
-
}
|
|
6613
|
-
}
|
|
6614
|
-
if (msg.role === "user" && Array.isArray(msg.content)) {
|
|
6615
|
-
const contentBlocks = msg.content;
|
|
6616
|
-
const toolResultBlocks = contentBlocks.filter((b) => b.type === "tool_result");
|
|
6617
|
-
if (toolResultBlocks.length > 0) {
|
|
6618
|
-
return toolResultBlocks.map((b) => ({
|
|
6619
|
-
role: "tool",
|
|
6620
|
-
content: typeof b.content === "string" ? b.content : JSON.stringify(b.content),
|
|
6621
|
-
tool_call_id: b.tool_use_id
|
|
6622
|
-
}));
|
|
6623
|
-
}
|
|
6624
|
-
}
|
|
6625
|
-
return [msg];
|
|
6626
|
-
}
|
|
6627
|
-
function convertMessagesToOpenAIFormat(messages) {
|
|
6628
|
-
return messages.flatMap(convertMessageToOpenAIFormat);
|
|
6629
|
-
}
|
|
6630
|
-
|
|
6631
|
-
// ../../b4m-core/packages/utils/dist/src/llm/ollamaBackend.js
|
|
6632
6581
|
var OllamaBackend = class {
|
|
6633
6582
|
_host;
|
|
6634
6583
|
_api;
|
|
@@ -6792,12 +6741,9 @@ var OllamaBackend = class {
|
|
|
6792
6741
|
/**
|
|
6793
6742
|
* Map IMessage[] to Ollama's Message[], preserving tool_calls for multi-turn
|
|
6794
6743
|
* tool conversations (added by pushToolMessages).
|
|
6795
|
-
* First converts B4M standard format (tool_use/tool_result) to OpenAI-compatible
|
|
6796
|
-
* format since Ollama uses the same tool_calls/role:tool convention.
|
|
6797
6744
|
*/
|
|
6798
6745
|
buildMessages(messages) {
|
|
6799
|
-
|
|
6800
|
-
return converted.map((msg) => {
|
|
6746
|
+
return messages.map((msg) => {
|
|
6801
6747
|
const raw = msg;
|
|
6802
6748
|
const mapped = {
|
|
6803
6749
|
role: msg.role,
|
|
@@ -7891,8 +7837,16 @@ Only when someone asks, remember that you are specifically the ${model} model.`;
|
|
|
7891
7837
|
role: "system",
|
|
7892
7838
|
content: systemContent
|
|
7893
7839
|
};
|
|
7894
|
-
const
|
|
7895
|
-
|
|
7840
|
+
const formattedMessages = filteredMessages.map((msg) => {
|
|
7841
|
+
if (msg.role === "assistant" && msg.tool_calls) {
|
|
7842
|
+
return {
|
|
7843
|
+
...msg,
|
|
7844
|
+
content: null,
|
|
7845
|
+
tool_calls: msg.tool_calls
|
|
7846
|
+
};
|
|
7847
|
+
}
|
|
7848
|
+
return msg;
|
|
7849
|
+
});
|
|
7896
7850
|
return isO1Model ? formattedMessages : [systemMessage, ...formattedMessages];
|
|
7897
7851
|
}
|
|
7898
7852
|
pushToolMessages(messages, tool, result, _thinkingBlocks) {
|
|
@@ -8415,7 +8369,17 @@ var XAIBackend = class {
|
|
|
8415
8369
|
}
|
|
8416
8370
|
}
|
|
8417
8371
|
formatMessages(messages) {
|
|
8418
|
-
|
|
8372
|
+
const formattedMessages = messages.map((msg) => {
|
|
8373
|
+
if (msg.role === "assistant" && msg.tool_calls) {
|
|
8374
|
+
return {
|
|
8375
|
+
...msg,
|
|
8376
|
+
content: null,
|
|
8377
|
+
tool_calls: msg.tool_calls
|
|
8378
|
+
};
|
|
8379
|
+
}
|
|
8380
|
+
return msg;
|
|
8381
|
+
});
|
|
8382
|
+
return formattedMessages;
|
|
8419
8383
|
}
|
|
8420
8384
|
formatTools(tools = []) {
|
|
8421
8385
|
return tools.map((tool) => ({
|
|
@@ -36,13 +36,13 @@ import {
|
|
|
36
36
|
isReadOnlyTool,
|
|
37
37
|
loadContextFiles,
|
|
38
38
|
setWebSocketToolExecutor
|
|
39
|
-
} from "../chunk-
|
|
39
|
+
} from "../chunk-4ZO5RNWO.js";
|
|
40
40
|
import "../chunk-BDQBOLYG.js";
|
|
41
|
-
import "../chunk-
|
|
41
|
+
import "../chunk-F6IY547T.js";
|
|
42
42
|
import "../chunk-GQGOWACU.js";
|
|
43
|
-
import "../chunk-
|
|
44
|
-
import "../chunk-
|
|
45
|
-
import "../chunk-
|
|
43
|
+
import "../chunk-OFKZXY6L.js";
|
|
44
|
+
import "../chunk-WKPO5JDF.js";
|
|
45
|
+
import "../chunk-M7QGYBN7.js";
|
|
46
46
|
import "../chunk-PFBYGCOW.js";
|
|
47
47
|
import "../chunk-BPFEGDC7.js";
|
|
48
48
|
import {
|
package/dist/index.js
CHANGED
|
@@ -46,15 +46,15 @@ import {
|
|
|
46
46
|
setWebSocketToolExecutor,
|
|
47
47
|
substituteArguments,
|
|
48
48
|
warmFileCache
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-4ZO5RNWO.js";
|
|
50
50
|
import "./chunk-BDQBOLYG.js";
|
|
51
|
-
import "./chunk-
|
|
51
|
+
import "./chunk-F6IY547T.js";
|
|
52
52
|
import "./chunk-GQGOWACU.js";
|
|
53
|
-
import "./chunk-
|
|
54
|
-
import "./chunk-
|
|
53
|
+
import "./chunk-OFKZXY6L.js";
|
|
54
|
+
import "./chunk-WKPO5JDF.js";
|
|
55
55
|
import {
|
|
56
56
|
OllamaBackend
|
|
57
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-M7QGYBN7.js";
|
|
58
58
|
import "./chunk-PFBYGCOW.js";
|
|
59
59
|
import "./chunk-BPFEGDC7.js";
|
|
60
60
|
import {
|
|
@@ -64,7 +64,7 @@ import {
|
|
|
64
64
|
import {
|
|
65
65
|
checkForUpdate,
|
|
66
66
|
package_default
|
|
67
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-5SZI2XFM.js";
|
|
68
68
|
import {
|
|
69
69
|
selectActiveBackgroundAgents,
|
|
70
70
|
useCliStore
|
|
@@ -2940,10 +2940,11 @@ function CliApp() {
|
|
|
2940
2940
|
throw new Error("No websocketUrl or wsCompletionUrl in server config");
|
|
2941
2941
|
}
|
|
2942
2942
|
} catch (wsError) {
|
|
2943
|
-
|
|
2944
|
-
|
|
2943
|
+
console.error(
|
|
2944
|
+
`\u26A0\uFE0F WebSocket unavailable, using SSE fallback: ${wsError instanceof Error ? wsError.message : String(wsError)}`
|
|
2945
|
+
);
|
|
2945
2946
|
if (wsError instanceof Error && wsError.stack) {
|
|
2946
|
-
|
|
2947
|
+
console.error(wsError.stack);
|
|
2947
2948
|
}
|
|
2948
2949
|
wsManager = null;
|
|
2949
2950
|
setWebSocketToolExecutor(null);
|
|
@@ -3727,11 +3728,7 @@ Pull a model: ollama pull qwen3.5`
|
|
|
3727
3728
|
return;
|
|
3728
3729
|
}
|
|
3729
3730
|
}
|
|
3730
|
-
|
|
3731
|
-
console.error(`
|
|
3732
|
-
\u274C ${errorMessage}
|
|
3733
|
-
`);
|
|
3734
|
-
logger.debug(`Full error details: ${error instanceof Error ? error.stack || error.message : String(error)}`);
|
|
3731
|
+
console.error("Error processing message:", error);
|
|
3735
3732
|
} finally {
|
|
3736
3733
|
setState((prev) => ({ ...prev, abortController: null }));
|
|
3737
3734
|
useCliStore.getState().setIsThinking(false);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bike4mind/cli",
|
|
3
|
-
"version": "0.2.49-fix-
|
|
3
|
+
"version": "0.2.49-fix-telemetry-alert-debug.21031+766fdd35a",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Interactive CLI tool for Bike4Mind with ReAct agents",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -115,10 +115,10 @@
|
|
|
115
115
|
},
|
|
116
116
|
"devDependencies": {
|
|
117
117
|
"@bike4mind/agents": "0.1.0",
|
|
118
|
-
"@bike4mind/common": "2.67.1-fix-
|
|
119
|
-
"@bike4mind/mcp": "1.33.11-fix-
|
|
120
|
-
"@bike4mind/services": "2.63.1-fix-
|
|
121
|
-
"@bike4mind/utils": "2.15.4-fix-
|
|
118
|
+
"@bike4mind/common": "2.67.1-fix-telemetry-alert-debug.21031+766fdd35a",
|
|
119
|
+
"@bike4mind/mcp": "1.33.11-fix-telemetry-alert-debug.21031+766fdd35a",
|
|
120
|
+
"@bike4mind/services": "2.63.1-fix-telemetry-alert-debug.21031+766fdd35a",
|
|
121
|
+
"@bike4mind/utils": "2.15.4-fix-telemetry-alert-debug.21031+766fdd35a",
|
|
122
122
|
"@types/better-sqlite3": "^7.6.13",
|
|
123
123
|
"@types/diff": "^5.0.9",
|
|
124
124
|
"@types/jsonwebtoken": "^9.0.4",
|
|
@@ -137,5 +137,5 @@
|
|
|
137
137
|
"optionalDependencies": {
|
|
138
138
|
"@vscode/ripgrep": "^1.17.0"
|
|
139
139
|
},
|
|
140
|
-
"gitHead": "
|
|
140
|
+
"gitHead": "766fdd35a8018f32ebf70db963625dcc6ea2d653"
|
|
141
141
|
}
|