@bike4mind/cli 0.2.29-cli-resume-command.18763 → 0.2.29-feat-perf-instrumentation.18801

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.
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  CurationArtifactType
4
- } from "./chunk-XJRPAAUS.js";
4
+ } from "./chunk-MPSPHOIZ.js";
5
5
 
6
6
  // ../../b4m-core/packages/services/dist/src/notebookCurationService/artifactExtractor.js
7
7
  var ARTIFACT_TAG_REGEX = /<artifact\s+(.*?)>([\s\S]*?)<\/artifact>/gi;
@@ -7,11 +7,11 @@ import {
7
7
  getSettingsMap,
8
8
  getSettingsValue,
9
9
  secureParameters
10
- } from "./chunk-UNOJBVD2.js";
10
+ } from "./chunk-MDOLASLI.js";
11
11
  import {
12
12
  KnowledgeType,
13
13
  SupportedFabFileMimeTypes
14
- } from "./chunk-XJRPAAUS.js";
14
+ } from "./chunk-MPSPHOIZ.js";
15
15
 
16
16
  // ../../b4m-core/packages/services/dist/src/fabFileService/create.js
17
17
  import { z } from "zod";
@@ -15,7 +15,7 @@ import {
15
15
  dayjsConfig_default,
16
16
  extractSnippetMeta,
17
17
  settingsMap
18
- } from "./chunk-XJRPAAUS.js";
18
+ } from "./chunk-MPSPHOIZ.js";
19
19
  import {
20
20
  Logger
21
21
  } from "./chunk-OCYRD7D6.js";
@@ -7392,6 +7392,58 @@ var XAIBackend = class {
7392
7392
  }
7393
7393
  };
7394
7394
 
7395
+ // ../../b4m-core/packages/utils/dist/src/llm/PipelineTimer.js
7396
+ var PipelineTimer = class {
7397
+ start = Date.now();
7398
+ phases = [];
7399
+ /** End the current phase (if any) and start a new one. */
7400
+ phase(name) {
7401
+ const now = Date.now();
7402
+ const active = this.phases[this.phases.length - 1];
7403
+ if (active && active.end === void 0) {
7404
+ active.end = now;
7405
+ }
7406
+ this.phases.push({ name, start: now });
7407
+ }
7408
+ /** End the current phase without starting a new one. */
7409
+ end() {
7410
+ const active = this.phases[this.phases.length - 1];
7411
+ if (active && active.end === void 0) {
7412
+ active.end = Date.now();
7413
+ }
7414
+ }
7415
+ /** Return a record of phase name → duration in ms. */
7416
+ toRecord() {
7417
+ const record = {};
7418
+ for (const p of this.phases) {
7419
+ record[p.name] = (p.end ?? Date.now()) - p.start;
7420
+ }
7421
+ return record;
7422
+ }
7423
+ /** Total elapsed time since timer creation. */
7424
+ totalMs() {
7425
+ return Date.now() - this.start;
7426
+ }
7427
+ /** Formatted multi-line summary table suitable for logging. */
7428
+ summary() {
7429
+ const total = this.totalMs();
7430
+ const lines = [];
7431
+ lines.push("Phase Duration % of Total");
7432
+ lines.push("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500");
7433
+ for (const p of this.phases) {
7434
+ const dur = (p.end ?? Date.now()) - p.start;
7435
+ const pct = total > 0 ? (dur / total * 100).toFixed(1) : "0.0";
7436
+ const name = p.name.padEnd(23);
7437
+ const durStr = `${dur}ms`.padStart(9);
7438
+ const pctStr = `${pct}%`.padStart(10);
7439
+ lines.push(`${name} ${durStr} ${pctStr}`);
7440
+ }
7441
+ lines.push("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500");
7442
+ lines.push(`${"TOTAL".padEnd(23)} ${`${total}ms`.padStart(9)}`);
7443
+ return lines.join("\n");
7444
+ }
7445
+ };
7446
+
7395
7447
  // ../../b4m-core/packages/utils/dist/src/llm/index.js
7396
7448
  function getLlmByModel(apiKeyTable, options) {
7397
7449
  const { modelInfo } = options;
@@ -7476,7 +7528,18 @@ function getLlmByModel(apiKeyTable, options) {
7476
7528
  }
7477
7529
  return backend;
7478
7530
  }
7531
+ var MODEL_CACHE_TTL_MS = 6e4;
7532
+ var _modelCache = null;
7533
+ function getModelCacheKey(apiKeys) {
7534
+ if (!apiKeys)
7535
+ return "null";
7536
+ return Object.keys(apiKeys).sort().map((k) => `${k}:${apiKeys[k] ? "1" : "0"}`).join(",");
7537
+ }
7479
7538
  var getAvailableModels = async (apiKeys) => {
7539
+ const cacheKey = getModelCacheKey(apiKeys);
7540
+ if (_modelCache && _modelCache.key === cacheKey && Date.now() < _modelCache.expiresAt) {
7541
+ return _modelCache.models;
7542
+ }
7480
7543
  const backends = {
7481
7544
  [ModelBackend.OpenAI]: apiKeys?.openai ? new OpenAIBackend(apiKeys.openai) : null,
7482
7545
  [ModelBackend.Anthropic]: apiKeys?.anthropic ? new AnthropicBackend(apiKeys.anthropic) : null,
@@ -7530,6 +7593,7 @@ var getAvailableModels = async (apiKeys) => {
7530
7593
  const cutoff = /* @__PURE__ */ new Date(m.deprecationDate + "T00:00:00Z");
7531
7594
  return today.getTime() < cutoff.getTime();
7532
7595
  });
7596
+ _modelCache = { key: cacheKey, models: filtered, expiresAt: Date.now() + MODEL_CACHE_TTL_MS };
7533
7597
  return filtered;
7534
7598
  };
7535
7599
 
@@ -11969,6 +12033,7 @@ export {
11969
12033
  OllamaBackend,
11970
12034
  OpenAIBackend,
11971
12035
  XAIBackend,
12036
+ PipelineTimer,
11972
12037
  getLlmByModel,
11973
12038
  getAvailableModels,
11974
12039
  secureParameters,
@@ -2256,7 +2256,9 @@ var SettingKeySchema = z21.enum([
2256
2256
  // PARALLEL TOOL EXECUTION SETTINGS
2257
2257
  "EnableParallelToolExecution",
2258
2258
  // LIVEOPS TRIAGE AUTOMATION SETTINGS
2259
- "liveopsTriageConfig"
2259
+ "liveopsTriageConfig",
2260
+ // HELP CENTER SETTINGS
2261
+ "EnableHelpChat"
2260
2262
  ]);
2261
2263
  var CategoryOrder = [
2262
2264
  "AI",
@@ -2675,7 +2677,8 @@ var API_SERVICE_GROUPS = {
2675
2677
  { key: "StreamIdleTimeoutSeconds", order: 13 },
2676
2678
  { key: "EnableMcpToolFiltering", order: 14 },
2677
2679
  { key: "McpToolFilteringMaxTools", order: 15 },
2678
- { key: "EnableParallelToolExecution", order: 16 }
2680
+ { key: "EnableParallelToolExecution", order: 16 },
2681
+ { key: "EnableHelpChat", order: 17 }
2679
2682
  ]
2680
2683
  },
2681
2684
  NOTEBOOK: {
@@ -3846,6 +3849,16 @@ var settingsMap = {
3846
3849
  category: "Admin",
3847
3850
  order: 110,
3848
3851
  schema: LiveopsTriageConfigSchema
3852
+ }),
3853
+ // Help Center Settings
3854
+ EnableHelpChat: makeBooleanSetting({
3855
+ key: "EnableHelpChat",
3856
+ name: "Enable Help Chat",
3857
+ defaultValue: true,
3858
+ description: "Enable the AI-powered chat assistant in the Help Center panel. When enabled, users can ask questions about the documentation and get contextual answers.",
3859
+ category: "Experimental",
3860
+ group: API_SERVICE_GROUPS.EXPERIMENTAL.id,
3861
+ order: 17
3849
3862
  })
3850
3863
  // Add more settings as needed
3851
3864
  };
@@ -4028,7 +4041,8 @@ var PromptMetaPerformanceSchema = z23.object({
4028
4041
  charsPerSecond: z23.number().optional()
4029
4042
  }).optional(),
4030
4043
  featureExecutionTimes: z23.union([z23.record(z23.string(), z23.number()), z23.map(z23.string(), z23.number())]).optional(),
4031
- databaseOperationTimes: z23.union([z23.record(z23.string(), z23.number()), z23.map(z23.string(), z23.number())]).optional()
4044
+ databaseOperationTimes: z23.union([z23.record(z23.string(), z23.number()), z23.map(z23.string(), z23.number())]).optional(),
4045
+ phases: z23.record(z23.string(), z23.number()).optional()
4032
4046
  });
4033
4047
  var PromptMetaSessionSchema = z23.object({
4034
4048
  id: z23.string(),
@@ -6,12 +6,12 @@ import {
6
6
  getSettingsByNames,
7
7
  obfuscateApiKey,
8
8
  secureParameters
9
- } from "./chunk-UNOJBVD2.js";
9
+ } from "./chunk-MDOLASLI.js";
10
10
  import {
11
11
  ApiKeyType,
12
12
  MementoTier,
13
13
  isSupportedEmbeddingModel
14
- } from "./chunk-XJRPAAUS.js";
14
+ } from "./chunk-MPSPHOIZ.js";
15
15
 
16
16
  // ../../b4m-core/packages/services/dist/src/apiKeyService/get.js
17
17
  import { z } from "zod";
@@ -79,15 +79,6 @@ var getEffectiveLLMApiKeys = async (userId, adapters, options) => {
79
79
  const { db } = adapters;
80
80
  const logger = options?.logger;
81
81
  const apiKeyFetchStartTime = Date.now();
82
- const userApiKeys = await getMultipleApiKeys(userId, [ApiKeyType.openai, ApiKeyType.anthropic, ApiKeyType.gemini, ApiKeyType.bfl, ApiKeyType.xai, ApiKeyType.voyageai], adapters);
83
- const userKeyMap = /* @__PURE__ */ new Map();
84
- userApiKeys.forEach((key) => userKeyMap.set(key.type, key));
85
- const openaiUserKey = userKeyMap.get(ApiKeyType.openai) || null;
86
- const anthropicUserKey = userKeyMap.get(ApiKeyType.anthropic) || null;
87
- const geminiUserKey = userKeyMap.get(ApiKeyType.gemini) || null;
88
- const bflUserKey = userKeyMap.get(ApiKeyType.bfl) || null;
89
- const xaiUserKey = userKeyMap.get(ApiKeyType.xai) || null;
90
- const voyageaiUserKey = userKeyMap.get(ApiKeyType.voyageai) || null;
91
82
  const adminSettingNames = [
92
83
  "openaiDemoKey",
93
84
  "anthropicDemoKey",
@@ -98,8 +89,18 @@ var getEffectiveLLMApiKeys = async (userId, adapters, options) => {
98
89
  "ollamaBackend",
99
90
  "EnableOllama"
100
91
  ];
101
- const adminSettingsStartTime = Date.now();
102
- const adminSettings = await getSettingsByNames(adminSettingNames, { adminSettings: db.adminSettings }, { logger });
92
+ const [userApiKeys, adminSettings] = await Promise.all([
93
+ getMultipleApiKeys(userId, [ApiKeyType.openai, ApiKeyType.anthropic, ApiKeyType.gemini, ApiKeyType.bfl, ApiKeyType.xai, ApiKeyType.voyageai], adapters),
94
+ getSettingsByNames(adminSettingNames, { adminSettings: db.adminSettings }, { logger })
95
+ ]);
96
+ const userKeyMap = /* @__PURE__ */ new Map();
97
+ userApiKeys.forEach((key) => userKeyMap.set(key.type, key));
98
+ const openaiUserKey = userKeyMap.get(ApiKeyType.openai) || null;
99
+ const anthropicUserKey = userKeyMap.get(ApiKeyType.anthropic) || null;
100
+ const geminiUserKey = userKeyMap.get(ApiKeyType.gemini) || null;
101
+ const bflUserKey = userKeyMap.get(ApiKeyType.bfl) || null;
102
+ const xaiUserKey = userKeyMap.get(ApiKeyType.xai) || null;
103
+ const voyageaiUserKey = userKeyMap.get(ApiKeyType.voyageai) || null;
103
104
  const openaiDemoKey = adminSettings["openaiDemoKey"];
104
105
  const anthropicDemoKey = adminSettings["anthropicDemoKey"];
105
106
  const geminiDemoKey = adminSettings["geminiDemoKey"];
@@ -108,10 +109,9 @@ var getEffectiveLLMApiKeys = async (userId, adapters, options) => {
108
109
  const voyageaiDemoKey = adminSettings["voyageApiKey"];
109
110
  const ollamaBackend = adminSettings["ollamaBackend"];
110
111
  const enableOllama = adminSettings["EnableOllama"];
111
- const adminSettingsTime = Date.now() - adminSettingsStartTime;
112
112
  const totalTime = Date.now() - apiKeyFetchStartTime;
113
113
  if (logger) {
114
- logger.info(`\u{1F4E6} Cached admin settings fetch completed in ${adminSettingsTime}ms (total API key fetch: ${totalTime}ms)`);
114
+ logger.info(`\u{1F4E6} API key + admin settings parallel fetch completed in ${totalTime}ms`);
115
115
  }
116
116
  const ollamaEnabled = enableOllama === "true" || enableOllama === true;
117
117
  const keyOrExpired = (apiKey) => {
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  BadRequestError,
4
4
  secureParameters
5
- } from "./chunk-UNOJBVD2.js";
5
+ } from "./chunk-MDOLASLI.js";
6
6
  import {
7
7
  CompletionApiUsageTransaction,
8
8
  GenericCreditDeductTransaction,
@@ -12,7 +12,7 @@ import {
12
12
  TextGenerationUsageTransaction,
13
13
  TransferCreditTransaction,
14
14
  VideoGenerationUsageTransaction
15
- } from "./chunk-XJRPAAUS.js";
15
+ } from "./chunk-MPSPHOIZ.js";
16
16
 
17
17
  // ../../b4m-core/packages/services/dist/src/creditService/subtractCredits.js
18
18
  import { z } from "zod";
@@ -2,9 +2,9 @@
2
2
  import {
3
3
  createFabFile,
4
4
  createFabFileSchema
5
- } from "./chunk-ZEMWV6IR.js";
6
- import "./chunk-UNOJBVD2.js";
7
- import "./chunk-XJRPAAUS.js";
5
+ } from "./chunk-LM4PJCVX.js";
6
+ import "./chunk-MDOLASLI.js";
7
+ import "./chunk-MPSPHOIZ.js";
8
8
  import "./chunk-OCYRD7D6.js";
9
9
  export {
10
10
  createFabFile,
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  getEffectiveApiKey,
6
6
  getOpenWeatherKey,
7
7
  getSerperKey
8
- } from "./chunk-VGYTNJXN.js";
8
+ } from "./chunk-T33BVGIR.js";
9
9
  import {
10
10
  ConfigStore
11
11
  } from "./chunk-23T2XGSZ.js";
@@ -13,8 +13,8 @@ import {
13
13
  selectActiveBackgroundAgents,
14
14
  useCliStore
15
15
  } from "./chunk-TVW4ZESU.js";
16
- import "./chunk-JJBDHUGY.js";
17
- import "./chunk-ZEMWV6IR.js";
16
+ import "./chunk-WO5GGMEO.js";
17
+ import "./chunk-LM4PJCVX.js";
18
18
  import {
19
19
  BFLImageService,
20
20
  BaseStorage,
@@ -26,7 +26,7 @@ import {
26
26
  OpenAIBackend,
27
27
  OpenAIImageService,
28
28
  XAIImageService
29
- } from "./chunk-UNOJBVD2.js";
29
+ } from "./chunk-MDOLASLI.js";
30
30
  import {
31
31
  AiEvents,
32
32
  ApiKeyEvents,
@@ -82,7 +82,7 @@ import {
82
82
  XAI_IMAGE_MODELS,
83
83
  b4mLLMTools,
84
84
  getMcpProviderMetadata
85
- } from "./chunk-XJRPAAUS.js";
85
+ } from "./chunk-MPSPHOIZ.js";
86
86
  import {
87
87
  Logger
88
88
  } from "./chunk-OCYRD7D6.js";
@@ -10985,7 +10985,9 @@ var QuestStartBodySchema = z139.object({
10985
10985
  fabFileIds: z139.array(z139.string()).optional()
10986
10986
  })).optional(),
10987
10987
  /** User's timezone (IANA format, e.g., "America/New_York") */
10988
- timezone: z139.string().optional()
10988
+ timezone: z139.string().optional(),
10989
+ /** Pre-fetched API key table from invoke phase — avoids redundant DB call in process (#6616 P1-a) */
10990
+ apiKeyTable: z139.record(z139.string(), z139.string().nullable()).optional()
10989
10991
  });
10990
10992
 
10991
10993
  // ../../b4m-core/packages/services/dist/src/llm/StatusManager.js
@@ -13807,7 +13809,7 @@ import { isAxiosError as isAxiosError2 } from "axios";
13807
13809
  // package.json
13808
13810
  var package_default = {
13809
13811
  name: "@bike4mind/cli",
13810
- version: "0.2.29-cli-resume-command.18763+9e3ccc640",
13812
+ version: "0.2.29-feat-perf-instrumentation.18801+959d8a7ed",
13811
13813
  type: "module",
13812
13814
  description: "Interactive CLI tool for Bike4Mind with ReAct agents",
13813
13815
  license: "UNLICENSED",
@@ -13915,10 +13917,10 @@ var package_default = {
13915
13917
  },
13916
13918
  devDependencies: {
13917
13919
  "@bike4mind/agents": "0.1.0",
13918
- "@bike4mind/common": "2.50.1-cli-resume-command.18763+9e3ccc640",
13919
- "@bike4mind/mcp": "1.29.1-cli-resume-command.18763+9e3ccc640",
13920
- "@bike4mind/services": "2.48.1-cli-resume-command.18763+9e3ccc640",
13921
- "@bike4mind/utils": "2.5.1-cli-resume-command.18763+9e3ccc640",
13920
+ "@bike4mind/common": "2.50.1-feat-perf-instrumentation.18801+959d8a7ed",
13921
+ "@bike4mind/mcp": "1.29.1-feat-perf-instrumentation.18801+959d8a7ed",
13922
+ "@bike4mind/services": "2.48.1-feat-perf-instrumentation.18801+959d8a7ed",
13923
+ "@bike4mind/utils": "2.5.1-feat-perf-instrumentation.18801+959d8a7ed",
13922
13924
  "@types/better-sqlite3": "^7.6.13",
13923
13925
  "@types/diff": "^5.0.9",
13924
13926
  "@types/jsonwebtoken": "^9.0.4",
@@ -13935,7 +13937,7 @@ var package_default = {
13935
13937
  optionalDependencies: {
13936
13938
  "@vscode/ripgrep": "^1.17.0"
13937
13939
  },
13938
- gitHead: "9e3ccc640da244f7528fa1a479d00e8b40b415a4"
13940
+ gitHead: "959d8a7ed4c9f89a9c7bfa32e879fbfdc2d1c07e"
13939
13941
  };
13940
13942
 
13941
13943
  // src/config/constants.ts
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  CurationArtifactType
4
- } from "./chunk-XJRPAAUS.js";
4
+ } from "./chunk-MPSPHOIZ.js";
5
5
 
6
6
  // ../../b4m-core/packages/services/dist/src/notebookCurationService/llmMarkdownGenerator.js
7
7
  var DEFAULT_OPTIONS = {
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  CurationArtifactType
4
- } from "./chunk-XJRPAAUS.js";
4
+ } from "./chunk-MPSPHOIZ.js";
5
5
 
6
6
  // ../../b4m-core/packages/services/dist/src/notebookCurationService/markdownGenerator.js
7
7
  var DEFAULT_OPTIONS = {
@@ -2,9 +2,9 @@
2
2
  import {
3
3
  findMostSimilarMemento,
4
4
  getRelevantMementos
5
- } from "./chunk-VGYTNJXN.js";
6
- import "./chunk-UNOJBVD2.js";
7
- import "./chunk-XJRPAAUS.js";
5
+ } from "./chunk-T33BVGIR.js";
6
+ import "./chunk-MDOLASLI.js";
7
+ import "./chunk-MPSPHOIZ.js";
8
8
  import "./chunk-OCYRD7D6.js";
9
9
  export {
10
10
  findMostSimilarMemento,
@@ -47,6 +47,7 @@ import {
47
47
  OpenAISoraVideoService,
48
48
  OpenaiModerationsService,
49
49
  Pagination,
50
+ PipelineTimer,
50
51
  QuestMaster,
51
52
  RapidReplyMappingsCache,
52
53
  S3Storage,
@@ -133,8 +134,8 @@ import {
133
134
  validateMermaidSyntax,
134
135
  warmUpSettingsCache,
135
136
  withRetry
136
- } from "./chunk-UNOJBVD2.js";
137
- import "./chunk-XJRPAAUS.js";
137
+ } from "./chunk-MDOLASLI.js";
138
+ import "./chunk-MPSPHOIZ.js";
138
139
  import {
139
140
  Logger,
140
141
  NotificationDeduplicator,
@@ -193,6 +194,7 @@ export {
193
194
  OpenAISoraVideoService,
194
195
  OpenaiModerationsService,
195
196
  Pagination,
197
+ PipelineTimer,
196
198
  QuestMaster,
197
199
  RapidReplyMappingsCache,
198
200
  S3Storage,
@@ -339,7 +339,7 @@ import {
339
339
  validateReactArtifactV2,
340
340
  validateSvgArtifactV2,
341
341
  wikiMarkupToAdf
342
- } from "./chunk-XJRPAAUS.js";
342
+ } from "./chunk-MPSPHOIZ.js";
343
343
  export {
344
344
  ALL_IMAGE_MODELS,
345
345
  ALL_IMAGE_SIZES,
@@ -2,9 +2,9 @@
2
2
  import {
3
3
  SubtractCreditsSchema,
4
4
  subtractCredits
5
- } from "./chunk-JJBDHUGY.js";
6
- import "./chunk-UNOJBVD2.js";
7
- import "./chunk-XJRPAAUS.js";
5
+ } from "./chunk-WO5GGMEO.js";
6
+ import "./chunk-MDOLASLI.js";
7
+ import "./chunk-MPSPHOIZ.js";
8
8
  import "./chunk-OCYRD7D6.js";
9
9
  export {
10
10
  SubtractCreditsSchema,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bike4mind/cli",
3
- "version": "0.2.29-cli-resume-command.18763+9e3ccc640",
3
+ "version": "0.2.29-feat-perf-instrumentation.18801+959d8a7ed",
4
4
  "type": "module",
5
5
  "description": "Interactive CLI tool for Bike4Mind with ReAct agents",
6
6
  "license": "UNLICENSED",
@@ -108,10 +108,10 @@
108
108
  },
109
109
  "devDependencies": {
110
110
  "@bike4mind/agents": "0.1.0",
111
- "@bike4mind/common": "2.50.1-cli-resume-command.18763+9e3ccc640",
112
- "@bike4mind/mcp": "1.29.1-cli-resume-command.18763+9e3ccc640",
113
- "@bike4mind/services": "2.48.1-cli-resume-command.18763+9e3ccc640",
114
- "@bike4mind/utils": "2.5.1-cli-resume-command.18763+9e3ccc640",
111
+ "@bike4mind/common": "2.50.1-feat-perf-instrumentation.18801+959d8a7ed",
112
+ "@bike4mind/mcp": "1.29.1-feat-perf-instrumentation.18801+959d8a7ed",
113
+ "@bike4mind/services": "2.48.1-feat-perf-instrumentation.18801+959d8a7ed",
114
+ "@bike4mind/utils": "2.5.1-feat-perf-instrumentation.18801+959d8a7ed",
115
115
  "@types/better-sqlite3": "^7.6.13",
116
116
  "@types/diff": "^5.0.9",
117
117
  "@types/jsonwebtoken": "^9.0.4",
@@ -128,5 +128,5 @@
128
128
  "optionalDependencies": {
129
129
  "@vscode/ripgrep": "^1.17.0"
130
130
  },
131
- "gitHead": "9e3ccc640da244f7528fa1a479d00e8b40b415a4"
131
+ "gitHead": "959d8a7ed4c9f89a9c7bfa32e879fbfdc2d1c07e"
132
132
  }