@bike4mind/cli 0.2.38-feat-secops-firewall.20175 → 0.2.38-prod.20159

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-JGSATYRQ.js";
4
+ } from "./chunk-OCFOJXLA.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-TKCXVYDJ.js";
10
+ } from "./chunk-QCDYXXSD.js";
11
11
  import {
12
12
  KnowledgeType,
13
13
  SupportedFabFileMimeTypes
14
- } from "./chunk-JGSATYRQ.js";
14
+ } from "./chunk-OCFOJXLA.js";
15
15
 
16
16
  // ../../b4m-core/packages/services/dist/src/fabFileService/create.js
17
17
  import { z } from "zod";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  BadRequestError,
4
4
  secureParameters
5
- } from "./chunk-TKCXVYDJ.js";
5
+ } from "./chunk-QCDYXXSD.js";
6
6
  import {
7
7
  CompletionApiUsageTransaction,
8
8
  GenericCreditDeductTransaction,
@@ -13,7 +13,7 @@ import {
13
13
  ToolUsageTransaction,
14
14
  TransferCreditTransaction,
15
15
  VideoGenerationUsageTransaction
16
- } from "./chunk-JGSATYRQ.js";
16
+ } from "./chunk-OCFOJXLA.js";
17
17
 
18
18
  // ../../b4m-core/packages/services/dist/src/creditService/subtractCredits.js
19
19
  import { z } from "zod";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ChatModels
4
- } from "./chunk-JGSATYRQ.js";
4
+ } from "./chunk-OCFOJXLA.js";
5
5
  import {
6
6
  DEFAULT_SANDBOX_CONFIG
7
7
  } from "./chunk-4BIBE3J7.js";
@@ -6,12 +6,12 @@ import {
6
6
  getSettingsByNames,
7
7
  obfuscateApiKey,
8
8
  secureParameters
9
- } from "./chunk-TKCXVYDJ.js";
9
+ } from "./chunk-QCDYXXSD.js";
10
10
  import {
11
11
  ApiKeyType,
12
12
  MementoTier,
13
13
  isSupportedEmbeddingModel
14
- } from "./chunk-JGSATYRQ.js";
14
+ } from "./chunk-OCFOJXLA.js";
15
15
 
16
16
  // ../../b4m-core/packages/services/dist/src/apiKeyService/get.js
17
17
  import { z } from "zod";
@@ -3,7 +3,7 @@
3
3
  // package.json
4
4
  var package_default = {
5
5
  name: "@bike4mind/cli",
6
- version: "0.2.38-feat-secops-firewall.20175+d24d1aa6f",
6
+ version: "0.2.38-prod.20159+a4ddc8821",
7
7
  type: "module",
8
8
  description: "Interactive CLI tool for Bike4Mind with ReAct agents",
9
9
  license: "UNLICENSED",
@@ -117,10 +117,10 @@ var package_default = {
117
117
  },
118
118
  devDependencies: {
119
119
  "@bike4mind/agents": "0.1.0",
120
- "@bike4mind/common": "2.58.1-feat-secops-firewall.20175+d24d1aa6f",
121
- "@bike4mind/mcp": "1.32.6-feat-secops-firewall.20175+d24d1aa6f",
122
- "@bike4mind/services": "2.54.2-feat-secops-firewall.20175+d24d1aa6f",
123
- "@bike4mind/utils": "2.11.1-feat-secops-firewall.20175+d24d1aa6f",
120
+ "@bike4mind/common": "2.58.1-prod.20159+a4ddc8821",
121
+ "@bike4mind/mcp": "1.32.6-prod.20159+a4ddc8821",
122
+ "@bike4mind/services": "2.54.2-prod.20159+a4ddc8821",
123
+ "@bike4mind/utils": "2.11.1-prod.20159+a4ddc8821",
124
124
  "@types/better-sqlite3": "^7.6.13",
125
125
  "@types/diff": "^5.0.9",
126
126
  "@types/jsonwebtoken": "^9.0.4",
@@ -138,7 +138,7 @@ var package_default = {
138
138
  optionalDependencies: {
139
139
  "@vscode/ripgrep": "^1.17.0"
140
140
  },
141
- gitHead: "d24d1aa6f6eaaba4c0a1d65f040bdefea710d959"
141
+ gitHead: "a4ddc8821374a175fb2bdb871b177140d2804b09"
142
142
  };
143
143
 
144
144
  // src/utils/updateChecker.ts
@@ -641,6 +641,7 @@ var CollectionType;
641
641
  CollectionType2["PROJECT"] = "project";
642
642
  CollectionType2["AI_IMAGE"] = "ai_image";
643
643
  })(CollectionType || (CollectionType = {}));
644
+ var ROTATABLE_INTEGRATIONS = ["github", "atlassian", "slack"];
644
645
 
645
646
  // ../../b4m-core/packages/common/dist/src/types/entities/UserApiKeyTypes.js
646
647
  var ApiKeyScope;
@@ -5791,6 +5792,7 @@ var LinkedInApi = class {
5791
5792
  };
5792
5793
 
5793
5794
  // ../../b4m-core/packages/common/dist/src/rateLimitHeaders.js
5795
+ var RATE_LIMIT_INTEGRATIONS = ["github", "jira", "confluence", "slack"];
5794
5796
  function getHeader(headers, name) {
5795
5797
  if (!headers || typeof headers !== "object")
5796
5798
  return null;
@@ -5839,16 +5841,24 @@ function parseRateLimitHeaders(headers) {
5839
5841
  }
5840
5842
  }
5841
5843
  let usagePercent = null;
5842
- if (limit !== null && limit > 0 && remaining !== null) {
5844
+ if (limit !== null && limit > 0 && remaining !== null && remaining >= 0) {
5843
5845
  usagePercent = Math.round((limit - remaining) / limit * 100);
5844
5846
  }
5845
5847
  return { limit, remaining, resetAt, retryAfterMs, usagePercent };
5846
5848
  }
5849
+ function hasRateLimitInfo(info) {
5850
+ return info.limit !== null || info.remaining !== null || info.retryAfterMs !== null;
5851
+ }
5847
5852
  function isNearLimit(info, thresholdPercent = 80) {
5848
5853
  if (info.usagePercent === null)
5849
5854
  return false;
5850
5855
  return info.usagePercent >= thresholdPercent;
5851
5856
  }
5857
+ function normalizeEndpoint(endpoint) {
5858
+ if (!endpoint || !endpoint.includes("/"))
5859
+ return endpoint;
5860
+ return endpoint.replace(/\/[A-Z][A-Z0-9]+-\d+/g, "/{key}").replace(/\/\d+/g, "/{id}").replace(/\/repos\/[^/]+\/[^/]+/, "/repos/{owner}/{repo}");
5861
+ }
5852
5862
  function buildRateLimitLogEntry(integration, endpoint, info, wasThrottled = false) {
5853
5863
  return {
5854
5864
  type: wasThrottled ? "RATE_LIMIT_ERROR" : "RATE_LIMIT",
@@ -6119,16 +6129,17 @@ var ConfluenceApi = class {
6119
6129
  body: options.body ? JSON.stringify(options.body) : void 0
6120
6130
  });
6121
6131
  const rateLimitInfo = parseRateLimitHeaders(response.headers);
6122
- if (rateLimitInfo.remaining !== null) {
6132
+ if (hasRateLimitInfo(rateLimitInfo)) {
6123
6133
  const logEntry = buildRateLimitLogEntry("confluence", path, rateLimitInfo);
6124
6134
  console.error(JSON.stringify(logEntry));
6125
- }
6126
- if (isNearLimit(rateLimitInfo)) {
6127
- console.error(`[Confluence] Rate limit warning: ${rateLimitInfo.usagePercent}% used (${rateLimitInfo.remaining}/${rateLimitInfo.limit} remaining)`);
6135
+ if (isNearLimit(rateLimitInfo)) {
6136
+ console.error(`[Confluence] Rate limit warning: ${rateLimitInfo.usagePercent}% used (${rateLimitInfo.remaining}/${rateLimitInfo.limit} remaining)`);
6137
+ }
6128
6138
  }
6129
6139
  if (response.status === 429 && (options._retryCount ?? 0) < 1) {
6130
6140
  const retryAfterMs = rateLimitInfo.retryAfterMs ?? 5e3;
6131
- const delayMs = Math.min(retryAfterMs, 1e4);
6141
+ const jitterMs = Math.floor(Math.random() * 1e3);
6142
+ const delayMs = Math.min(retryAfterMs + jitterMs, 1e4);
6132
6143
  const logEntry = buildRateLimitLogEntry("confluence", path, rateLimitInfo, true);
6133
6144
  console.error(JSON.stringify(logEntry));
6134
6145
  console.error(`[Confluence] Rate limited on ${path}, retrying after ${delayMs}ms`);
@@ -8338,16 +8349,17 @@ var JiraApi = class {
8338
8349
  body: options.body ? JSON.stringify(options.body) : void 0
8339
8350
  });
8340
8351
  const rateLimitInfo = parseRateLimitHeaders(response.headers);
8341
- if (rateLimitInfo.remaining !== null) {
8352
+ if (hasRateLimitInfo(rateLimitInfo)) {
8342
8353
  const logEntry = buildRateLimitLogEntry("jira", path, rateLimitInfo);
8343
8354
  console.error(JSON.stringify(logEntry));
8344
- }
8345
- if (isNearLimit(rateLimitInfo)) {
8346
- console.error(`[Jira] Rate limit warning: ${rateLimitInfo.usagePercent}% used (${rateLimitInfo.remaining}/${rateLimitInfo.limit} remaining)`);
8355
+ if (isNearLimit(rateLimitInfo)) {
8356
+ console.error(`[Jira] Rate limit warning: ${rateLimitInfo.usagePercent}% used (${rateLimitInfo.remaining}/${rateLimitInfo.limit} remaining)`);
8357
+ }
8347
8358
  }
8348
8359
  if (response.status === 429 && (options._retryCount ?? 0) < 1) {
8349
8360
  const retryAfterMs = rateLimitInfo.retryAfterMs ?? 5e3;
8350
- const delayMs = Math.min(retryAfterMs, 1e4);
8361
+ const jitterMs = Math.floor(Math.random() * 1e3);
8362
+ const delayMs = Math.min(retryAfterMs + jitterMs, 1e4);
8351
8363
  const logEntry = buildRateLimitLogEntry("jira", path, rateLimitInfo, true);
8352
8364
  console.error(JSON.stringify(logEntry));
8353
8365
  console.error(`[Jira] Rate limited on ${path}, retrying after ${delayMs}ms`);
@@ -10429,6 +10441,7 @@ export {
10429
10441
  shareableDocumentSchema,
10430
10442
  DefaultLLMParams,
10431
10443
  CollectionType,
10444
+ ROTATABLE_INTEGRATIONS,
10432
10445
  ApiKeyScope,
10433
10446
  ApiKeyStatus,
10434
10447
  MementoTier,
@@ -10705,8 +10718,11 @@ export {
10705
10718
  extractSnippetMeta,
10706
10719
  searchSchema,
10707
10720
  LinkedInApi,
10721
+ RATE_LIMIT_INTEGRATIONS,
10708
10722
  parseRateLimitHeaders,
10723
+ hasRateLimitInfo,
10709
10724
  isNearLimit,
10725
+ normalizeEndpoint,
10710
10726
  buildRateLimitLogEntry,
10711
10727
  RESTRICTION_OPERATIONS,
10712
10728
  RESTRICTION_SUBJECT_TYPES,
@@ -19,7 +19,7 @@ import {
19
19
  dayjsConfig_default,
20
20
  extractSnippetMeta,
21
21
  settingsMap
22
- } from "./chunk-JGSATYRQ.js";
22
+ } from "./chunk-OCFOJXLA.js";
23
23
 
24
24
  // ../../b4m-core/packages/utils/dist/src/storage/S3Storage.js
25
25
  import { S3Client, PutObjectCommand, DeleteObjectCommand, GetObjectCommand, HeadObjectCommand } from "@aws-sdk/client-s3";
@@ -4,7 +4,7 @@ import {
4
4
  getOpenWeatherKey,
5
5
  getSerperKey,
6
6
  getWolframAlphaKey
7
- } from "./chunk-AVWSA2JN.js";
7
+ } from "./chunk-J3YSVA6W.js";
8
8
  import {
9
9
  BFLImageService,
10
10
  BaseStorage,
@@ -16,14 +16,14 @@ import {
16
16
  OpenAIBackend,
17
17
  OpenAIImageService,
18
18
  XAIImageService
19
- } from "./chunk-TKCXVYDJ.js";
19
+ } from "./chunk-QCDYXXSD.js";
20
20
  import {
21
21
  Logger
22
22
  } from "./chunk-PFBYGCOW.js";
23
23
  import {
24
24
  ConfigStore,
25
25
  logger
26
- } from "./chunk-VSZJ7FSP.js";
26
+ } from "./chunk-HJVFUXVX.js";
27
27
  import {
28
28
  AiEvents,
29
29
  ApiKeyEvents,
@@ -80,7 +80,7 @@ import {
80
80
  getMcpProviderMetadata,
81
81
  getViewById,
82
82
  resolveNavigationIntents
83
- } from "./chunk-JGSATYRQ.js";
83
+ } from "./chunk-OCFOJXLA.js";
84
84
 
85
85
  // src/utils/fileSearch.ts
86
86
  import * as fs from "fs";
@@ -8732,7 +8732,7 @@ var knowledgeBaseSearchTool = {
8732
8732
  toolFn: async (value) => {
8733
8733
  const params = value;
8734
8734
  const { query, tags, file_type, max_results = 5 } = params;
8735
- context.logger.log("\u{1F4DA} Knowledge Base Search: Starting search for query:", query);
8735
+ context.logger.log("\u{1F4DA} Knowledge Base Search: userId:", context.userId, "query:", query, "tags:", tags);
8736
8736
  if (!context.db.fabfiles) {
8737
8737
  context.logger.error("\u274C Knowledge Base Search: fabfiles repository not available");
8738
8738
  return "Knowledge base search is not available at this time.";
@@ -8758,7 +8758,7 @@ var knowledgeBaseSearchTool = {
8758
8758
  userGroups: context.user.groups || []
8759
8759
  // Pass user's groups for org-level sharing
8760
8760
  });
8761
- context.logger.log("\u{1F4DA} Knowledge Base Search: Found", searchResults.data.length, "results");
8761
+ context.logger.log("\u{1F4DA} Knowledge Base Search: Found", searchResults.data.length, "of", searchResults.total, "results. Files:", searchResults.data.map((f) => f.fileName));
8762
8762
  return formatSearchResults(searchResults.data);
8763
8763
  } catch (error) {
8764
8764
  context.logger.error("\u274C Knowledge Base Search: Error during search:", error);
@@ -8778,7 +8778,7 @@ var knowledgeBaseSearchTool = {
8778
8778
  tags: {
8779
8779
  type: "array",
8780
8780
  items: { type: "string" },
8781
- description: 'Optional: filter results by tag names. Supports partial matching. For optimization docs, use tags like "opti:family:scheduling", "opti:QUBO", "opti:solver:highs", etc. Any matching tag qualifies the file.'
8781
+ description: 'Optional: filter results by tag names. Supports partial matching. For optimization docs, use tags like "opti:family:scheduling", "opti:QUBO", "opti:solver:highs". For IonQ sales intelligence, use tags like "ionq:vertical:pharma", "ionq:competitor:ibm", "ionq:type:product-specs", "ionq:stage:discovery", "ionq:offering:forte". Any matching tag qualifies the file.'
8782
8782
  },
8783
8783
  file_type: {
8784
8784
  type: "string",
@@ -8891,7 +8891,7 @@ Chunks: ${chunks.length} | Characters: ${charLabel}
8891
8891
  tags: {
8892
8892
  type: "array",
8893
8893
  items: { type: "string" },
8894
- description: 'Filter documents by tags. For optimization docs, use tags like "opti:family:scheduling", "opti:solver:highs", etc.'
8894
+ description: 'Filter documents by tags. For optimization docs, use tags like "opti:family:scheduling", "opti:solver:highs". For IonQ sales intelligence, use tags like "ionq:vertical:pharma", "ionq:competitor:ibm", "ionq:content:product-specs", "ionq:offering:forte".'
8895
8895
  },
8896
8896
  query: {
8897
8897
  type: "string",
@@ -15237,15 +15237,17 @@ var MCPClient = class {
15237
15237
  customCommand;
15238
15238
  customArgs;
15239
15239
  suppressStderr;
15240
+ onStderrLine;
15240
15241
  tools = [];
15241
15242
  serverName;
15242
- constructor({ envVariables, name, selectedRepositories, command, args, suppressStderr = false }) {
15243
+ constructor({ envVariables, name, selectedRepositories, command, args, suppressStderr = false, onStderrLine }) {
15243
15244
  this.mcp = new Client2({ name: "mcp-client-cli", version: "1.0.0" });
15244
15245
  this.envVariables = [...envVariables];
15245
15246
  this.serverName = name;
15246
15247
  this.customCommand = command;
15247
15248
  this.customArgs = args;
15248
15249
  this.suppressStderr = suppressStderr;
15250
+ this.onStderrLine = onStderrLine;
15249
15251
  if (name === "github" && selectedRepositories) {
15250
15252
  const reposJson = JSON.stringify(selectedRepositories);
15251
15253
  this.envVariables.push({
@@ -15291,6 +15293,7 @@ var MCPClient = class {
15291
15293
  args = [serverScriptPath];
15292
15294
  console.log(`[MCP] Using server: ${this.serverName} at ${serverScriptPath}`);
15293
15295
  }
15296
+ const stderrMode = this.suppressStderr ? "ignore" : this.onStderrLine ? "pipe" : void 0;
15294
15297
  const transportConfig = {
15295
15298
  command,
15296
15299
  args,
@@ -15298,14 +15301,16 @@ var MCPClient = class {
15298
15301
  ...Object.fromEntries(Object.entries(process.env).filter((entry) => entry[1] !== void 0)),
15299
15302
  ...envVarsObject
15300
15303
  },
15301
- // Suppress stderr in CLI context to prevent MCP server startup logs from breaking layout
15302
- ...this.suppressStderr && { stderr: "ignore" }
15304
+ ...stderrMode && { stderr: stderrMode }
15303
15305
  };
15304
15306
  this.transport = new StdioClientTransport(transportConfig);
15305
15307
  this.transport.onerror = (error) => {
15306
15308
  console.error(`[MCP] Transport error for ${this.serverName}:`, error);
15307
15309
  };
15308
15310
  await this.mcp.connect(this.transport);
15311
+ if (this.onStderrLine && this.transport.stderr) {
15312
+ this.readStderr(this.transport.stderr);
15313
+ }
15309
15314
  await new Promise((resolve3) => setTimeout(resolve3, 100));
15310
15315
  const toolsResult = await this.mcp.listTools();
15311
15316
  this.tools = toolsResult.tools.map((tool) => {
@@ -15327,6 +15332,30 @@ var MCPClient = class {
15327
15332
  throw e;
15328
15333
  }
15329
15334
  }
15335
+ /**
15336
+ * Read lines from the child process stderr stream and dispatch to the callback.
15337
+ * Uses Node.js stream events; errors are silently caught (stream closes on disconnect).
15338
+ */
15339
+ readStderr(stream) {
15340
+ let buffer = "";
15341
+ stream.setEncoding("utf8");
15342
+ stream.on("data", (chunk) => {
15343
+ buffer += chunk;
15344
+ const lines = buffer.split("\n");
15345
+ buffer = lines.pop() || "";
15346
+ for (const line of lines) {
15347
+ const trimmed = line.trim();
15348
+ if (trimmed)
15349
+ this.onStderrLine?.(trimmed);
15350
+ }
15351
+ });
15352
+ stream.on("end", () => {
15353
+ if (buffer.trim())
15354
+ this.onStderrLine?.(buffer.trim());
15355
+ });
15356
+ stream.on("error", () => {
15357
+ });
15358
+ }
15330
15359
  async callTool(toolName, toolArgs) {
15331
15360
  try {
15332
15361
  const args = toolArgs && typeof toolArgs === "object" ? toolArgs : void 0;
@@ -3,7 +3,7 @@ import {
3
3
  fetchLatestVersion,
4
4
  forceCheckForUpdate,
5
5
  package_default
6
- } from "../chunk-C76EDJ2Q.js";
6
+ } from "../chunk-NHE3MDUJ.js";
7
7
 
8
8
  // src/commands/doctorCommand.ts
9
9
  import { execSync } from "child_process";
@@ -36,20 +36,20 @@ import {
36
36
  isReadOnlyTool,
37
37
  loadContextFiles,
38
38
  setWebSocketToolExecutor
39
- } from "../chunk-OUFZVK3U.js";
39
+ } from "../chunk-TVO7HQYO.js";
40
40
  import "../chunk-BDQBOLYG.js";
41
- import "../chunk-AVWSA2JN.js";
41
+ import "../chunk-J3YSVA6W.js";
42
42
  import "../chunk-GQGOWACU.js";
43
- import "../chunk-V7HMAXDX.js";
44
- import "../chunk-SJBMMQM3.js";
45
- import "../chunk-TKCXVYDJ.js";
43
+ import "../chunk-AU7OYPU4.js";
44
+ import "../chunk-5APQNY55.js";
45
+ import "../chunk-QCDYXXSD.js";
46
46
  import "../chunk-PFBYGCOW.js";
47
47
  import "../chunk-BPFEGDC7.js";
48
48
  import {
49
49
  ConfigStore,
50
50
  logger
51
- } from "../chunk-VSZJ7FSP.js";
52
- import "../chunk-JGSATYRQ.js";
51
+ } from "../chunk-HJVFUXVX.js";
52
+ import "../chunk-OCFOJXLA.js";
53
53
  import {
54
54
  DEFAULT_SANDBOX_CONFIG
55
55
  } from "../chunk-4BIBE3J7.js";
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ConfigStore
4
- } from "../chunk-VSZJ7FSP.js";
5
- import "../chunk-JGSATYRQ.js";
4
+ } from "../chunk-HJVFUXVX.js";
5
+ import "../chunk-OCFOJXLA.js";
6
6
  import "../chunk-4BIBE3J7.js";
7
7
 
8
8
  // src/commands/mcpCommand.ts
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  forceCheckForUpdate,
4
4
  package_default
5
- } from "../chunk-C76EDJ2Q.js";
5
+ } from "../chunk-NHE3MDUJ.js";
6
6
 
7
7
  // src/commands/updateCommand.ts
8
8
  import { execSync } from "child_process";
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  createFabFile,
4
4
  createFabFileSchema
5
- } from "./chunk-SJBMMQM3.js";
6
- import "./chunk-TKCXVYDJ.js";
5
+ } from "./chunk-5APQNY55.js";
6
+ import "./chunk-QCDYXXSD.js";
7
7
  import "./chunk-PFBYGCOW.js";
8
- import "./chunk-JGSATYRQ.js";
8
+ import "./chunk-OCFOJXLA.js";
9
9
  export {
10
10
  createFabFile,
11
11
  createFabFileSchema
package/dist/index.js CHANGED
@@ -46,23 +46,23 @@ import {
46
46
  setWebSocketToolExecutor,
47
47
  substituteArguments,
48
48
  warmFileCache
49
- } from "./chunk-OUFZVK3U.js";
49
+ } from "./chunk-TVO7HQYO.js";
50
50
  import "./chunk-BDQBOLYG.js";
51
- import "./chunk-AVWSA2JN.js";
51
+ import "./chunk-J3YSVA6W.js";
52
52
  import "./chunk-GQGOWACU.js";
53
- import "./chunk-V7HMAXDX.js";
54
- import "./chunk-SJBMMQM3.js";
55
- import "./chunk-TKCXVYDJ.js";
53
+ import "./chunk-AU7OYPU4.js";
54
+ import "./chunk-5APQNY55.js";
55
+ import "./chunk-QCDYXXSD.js";
56
56
  import "./chunk-PFBYGCOW.js";
57
57
  import "./chunk-BPFEGDC7.js";
58
58
  import {
59
59
  ConfigStore,
60
60
  logger
61
- } from "./chunk-VSZJ7FSP.js";
61
+ } from "./chunk-HJVFUXVX.js";
62
62
  import {
63
63
  checkForUpdate,
64
64
  package_default
65
- } from "./chunk-C76EDJ2Q.js";
65
+ } from "./chunk-NHE3MDUJ.js";
66
66
  import {
67
67
  selectActiveBackgroundAgents,
68
68
  useCliStore
@@ -70,7 +70,7 @@ import {
70
70
  import {
71
71
  CREDIT_DEDUCT_TRANSACTION_TYPES,
72
72
  ChatModels
73
- } from "./chunk-JGSATYRQ.js";
73
+ } from "./chunk-OCFOJXLA.js";
74
74
  import "./chunk-4BIBE3J7.js";
75
75
 
76
76
  // src/index.tsx
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  CurationArtifactType
4
- } from "./chunk-JGSATYRQ.js";
4
+ } from "./chunk-OCFOJXLA.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-JGSATYRQ.js";
4
+ } from "./chunk-OCFOJXLA.js";
5
5
 
6
6
  // ../../b4m-core/packages/services/dist/src/notebookCurationService/markdownGenerator.js
7
7
  var DEFAULT_OPTIONS = {
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  findMostSimilarMemento,
4
4
  getRelevantMementos
5
- } from "./chunk-AVWSA2JN.js";
6
- import "./chunk-TKCXVYDJ.js";
5
+ } from "./chunk-J3YSVA6W.js";
6
+ import "./chunk-QCDYXXSD.js";
7
7
  import "./chunk-PFBYGCOW.js";
8
- import "./chunk-JGSATYRQ.js";
8
+ import "./chunk-OCFOJXLA.js";
9
9
  export {
10
10
  findMostSimilarMemento,
11
11
  getRelevantMementos
@@ -244,11 +244,13 @@ import {
244
244
  QuestResourceSchema,
245
245
  QuestSchema,
246
246
  QuestStatusSchema,
247
+ RATE_LIMIT_INTEGRATIONS,
247
248
  REASONING_EFFORT_DESCRIPTIONS,
248
249
  REASONING_EFFORT_LABELS,
249
250
  REASONING_SUPPORTED_MODELS,
250
251
  RESTRICTION_OPERATIONS,
251
252
  RESTRICTION_SUBJECT_TYPES,
253
+ ROTATABLE_INTEGRATIONS,
252
254
  RapidReplyFallbackBehaviors,
253
255
  RapidReplyResponseStylesCommon,
254
256
  RapidReplySettingsSchema,
@@ -400,6 +402,7 @@ import {
400
402
  getVisibilityLevel,
401
403
  getWebsiteUrl,
402
404
  groupShareSchema,
405
+ hasRateLimitInfo,
403
406
  isArtifact,
404
407
  isCommentWebhookEvent,
405
408
  isCreditHolder,
@@ -418,6 +421,7 @@ import {
418
421
  isValidIssueKey,
419
422
  matchesSearchQuery,
420
423
  mergeArtifactMetadata,
424
+ normalizeEndpoint,
421
425
  parallelLimit,
422
426
  parseRateLimitHeaders,
423
427
  passwordSchema,
@@ -458,7 +462,7 @@ import {
458
462
  validateReactArtifactV2,
459
463
  validateSvgArtifactV2,
460
464
  wikiMarkupToAdf
461
- } from "./chunk-JGSATYRQ.js";
465
+ } from "./chunk-OCFOJXLA.js";
462
466
  export {
463
467
  ALL_IMAGE_MODELS,
464
468
  ALL_IMAGE_SIZES,
@@ -705,11 +709,13 @@ export {
705
709
  QuestResourceSchema,
706
710
  QuestSchema,
707
711
  QuestStatusSchema,
712
+ RATE_LIMIT_INTEGRATIONS,
708
713
  REASONING_EFFORT_DESCRIPTIONS,
709
714
  REASONING_EFFORT_LABELS,
710
715
  REASONING_SUPPORTED_MODELS,
711
716
  RESTRICTION_OPERATIONS,
712
717
  RESTRICTION_SUBJECT_TYPES,
718
+ ROTATABLE_INTEGRATIONS,
713
719
  RapidReplyFallbackBehaviors,
714
720
  RapidReplyResponseStylesCommon,
715
721
  RapidReplySettingsSchema,
@@ -862,6 +868,7 @@ export {
862
868
  getVisibilityLevel,
863
869
  getWebsiteUrl,
864
870
  groupShareSchema,
871
+ hasRateLimitInfo,
865
872
  isArtifact,
866
873
  isCommentWebhookEvent,
867
874
  isCreditHolder,
@@ -880,6 +887,7 @@ export {
880
887
  isValidIssueKey,
881
888
  matchesSearchQuery,
882
889
  mergeArtifactMetadata,
890
+ normalizeEndpoint,
883
891
  parallelLimit,
884
892
  parseRateLimitHeaders,
885
893
  passwordSchema,
@@ -139,7 +139,7 @@ import {
139
139
  validateUrlForFetch,
140
140
  warmUpSettingsCache,
141
141
  withRetry
142
- } from "./chunk-TKCXVYDJ.js";
142
+ } from "./chunk-QCDYXXSD.js";
143
143
  import {
144
144
  Logger,
145
145
  NotificationDeduplicator,
@@ -152,7 +152,7 @@ import {
152
152
  buildRateLimitLogEntry,
153
153
  isNearLimit,
154
154
  parseRateLimitHeaders
155
- } from "./chunk-JGSATYRQ.js";
155
+ } from "./chunk-OCFOJXLA.js";
156
156
  export {
157
157
  AIVideoService,
158
158
  AWSBackend,
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  SubtractCreditsSchema,
4
4
  subtractCredits
5
- } from "./chunk-V7HMAXDX.js";
6
- import "./chunk-TKCXVYDJ.js";
5
+ } from "./chunk-AU7OYPU4.js";
6
+ import "./chunk-QCDYXXSD.js";
7
7
  import "./chunk-PFBYGCOW.js";
8
- import "./chunk-JGSATYRQ.js";
8
+ import "./chunk-OCFOJXLA.js";
9
9
  export {
10
10
  SubtractCreditsSchema,
11
11
  subtractCredits
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bike4mind/cli",
3
- "version": "0.2.38-feat-secops-firewall.20175+d24d1aa6f",
3
+ "version": "0.2.38-prod.20159+a4ddc8821",
4
4
  "type": "module",
5
5
  "description": "Interactive CLI tool for Bike4Mind with ReAct agents",
6
6
  "license": "UNLICENSED",
@@ -114,10 +114,10 @@
114
114
  },
115
115
  "devDependencies": {
116
116
  "@bike4mind/agents": "0.1.0",
117
- "@bike4mind/common": "2.58.1-feat-secops-firewall.20175+d24d1aa6f",
118
- "@bike4mind/mcp": "1.32.6-feat-secops-firewall.20175+d24d1aa6f",
119
- "@bike4mind/services": "2.54.2-feat-secops-firewall.20175+d24d1aa6f",
120
- "@bike4mind/utils": "2.11.1-feat-secops-firewall.20175+d24d1aa6f",
117
+ "@bike4mind/common": "2.58.1-prod.20159+a4ddc8821",
118
+ "@bike4mind/mcp": "1.32.6-prod.20159+a4ddc8821",
119
+ "@bike4mind/services": "2.54.2-prod.20159+a4ddc8821",
120
+ "@bike4mind/utils": "2.11.1-prod.20159+a4ddc8821",
121
121
  "@types/better-sqlite3": "^7.6.13",
122
122
  "@types/diff": "^5.0.9",
123
123
  "@types/jsonwebtoken": "^9.0.4",
@@ -135,5 +135,5 @@
135
135
  "optionalDependencies": {
136
136
  "@vscode/ripgrep": "^1.17.0"
137
137
  },
138
- "gitHead": "d24d1aa6f6eaaba4c0a1d65f040bdefea710d959"
138
+ "gitHead": "a4ddc8821374a175fb2bdb871b177140d2804b09"
139
139
  }