@bike4mind/cli 0.2.79 → 0.2.80-feat-sre-multi-repo-support.22464

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.
@@ -866,6 +866,24 @@ let TagType = /* @__PURE__ */ function(TagType) {
866
866
  TagType["SESSION"] = "session";
867
867
  return TagType;
868
868
  }({});
869
+ /** Base allowed patterns — always merged into resolved config.
870
+ * Keep in sync with scripts/apply-sre-fix.cjs ALLOWED_PATTERNS */
871
+ const SRE_BASE_ALLOWED_PATTERNS = [
872
+ "apps/client/**",
873
+ "b4m-core/services/**",
874
+ "b4m-core/common/src/**",
875
+ "b4m-core/utils/src/llm/**",
876
+ "packages/database/src/**"
877
+ ];
878
+ const SRE_BLOCKED_FILE_DEFAULTS = [
879
+ "infra/**",
880
+ "*.secret*",
881
+ "*.env*",
882
+ "*migration*",
883
+ ".github/workflows/**",
884
+ "**/package.json",
885
+ "pnpm-lock.yaml"
886
+ ];
869
887
  const SRE_GATE_DEFAULTS = {
870
888
  enabled: true,
871
889
  autoThreshold: 85,
@@ -881,37 +899,47 @@ const SreGateConfigSchema = z.object({
881
899
  message: "autoThreshold must be >= askThreshold",
882
900
  path: ["autoThreshold"]
883
901
  });
884
- /** Base allowed patternsalways merged into stored config.
885
- * Keep in sync with scripts/apply-sre-fix.cjs ALLOWED_PATTERNS */
886
- const SRE_BASE_ALLOWED_PATTERNS = [
887
- "apps/client/**",
888
- "b4m-core/services/**",
889
- "b4m-core/common/src/**",
890
- "b4m-core/utils/src/llm/**",
891
- "packages/database/src/**"
892
- ];
893
- const SreAgentConfigSchema = z.object({
902
+ /** Partial gate schema for per-repo overrides (no refinement validated after merge) */
903
+ const SreGateOverrideSchema = z.object({
904
+ enabled: z.boolean().optional(),
905
+ autoThreshold: z.number().min(0).max(100).optional(),
906
+ askThreshold: z.number().min(0).max(100).optional(),
907
+ approvalTimeoutHours: z.number().min(1).optional()
908
+ }).optional();
909
+ const SreDefaultsSchema = z.object({
894
910
  enabled: z.boolean().default(false),
895
- maxFixesPerDay: z.number().min(0).default(5),
896
- maxDiffLines: z.number().min(1).default(50),
897
911
  modelId: z.string().default("claude-sonnet-4-20250514"),
898
- slack: z.object({
899
- workspaceId: z.string().optional(),
900
- channelId: z.string().optional(),
901
- approverIds: z.string().default("")
902
- }).default({ approverIds: "" }),
903
- github: z.object({
904
- owner: z.string().default(""),
905
- repo: z.string().default(""),
906
- reviewers: z.string().default(""),
907
- webhookSecret: z.string().default(""),
908
- callbackToken: z.string().default("")
912
+ maxDiffLines: z.number().min(1).default(50),
913
+ maxFixesPerDay: z.number().min(0).default(5),
914
+ maxRevisions: z.number().int().min(0).max(10).default(2),
915
+ dryRun: z.boolean().default(false),
916
+ reviewers: z.string().default(""),
917
+ defaultBranch: z.string().default(""),
918
+ buildCommand: z.string().default(""),
919
+ allowedFilePatterns: z.array(z.string()).default([...SRE_BASE_ALLOWED_PATTERNS]),
920
+ blockedFilePatterns: z.array(z.string()).default([...SRE_BLOCKED_FILE_DEFAULTS]),
921
+ gates: z.object({
922
+ sentinelToDiagnostician: SreGateConfigSchema.default({ ...SRE_GATE_DEFAULTS }),
923
+ diagnosticianToSurgeon: SreGateConfigSchema.default({ ...SRE_GATE_DEFAULTS })
924
+ }).default({
925
+ sentinelToDiagnostician: { ...SRE_GATE_DEFAULTS },
926
+ diagnosticianToSurgeon: { ...SRE_GATE_DEFAULTS }
927
+ }),
928
+ circuitBreaker: z.object({
929
+ failureThreshold: z.number().min(1).default(3),
930
+ cooldownMinutes: z.number().min(1).default(30)
931
+ }).default({
932
+ failureThreshold: 3,
933
+ cooldownMinutes: 30
934
+ }),
935
+ tokenBudget: z.object({
936
+ maxInputTokens: z.number().default(5e4),
937
+ maxOutputTokens: z.number().default(8e3),
938
+ maxGithubApiCalls: z.number().default(20)
909
939
  }).default({
910
- owner: "",
911
- repo: "",
912
- reviewers: "",
913
- webhookSecret: "",
914
- callbackToken: ""
940
+ maxInputTokens: 5e4,
941
+ maxOutputTokens: 8e3,
942
+ maxGithubApiCalls: 20
915
943
  }),
916
944
  sources: z.object({
917
945
  cloudwatch: z.object({ enabled: z.boolean().default(false) }).default({ enabled: false }),
@@ -941,32 +969,6 @@ const SreAgentConfigSchema = z.object({
941
969
  }
942
970
  }
943
971
  }),
944
- gates: z.object({
945
- sentinelToDiagnostician: SreGateConfigSchema.default({ ...SRE_GATE_DEFAULTS }),
946
- diagnosticianToSurgeon: SreGateConfigSchema.default({ ...SRE_GATE_DEFAULTS })
947
- }).default({
948
- sentinelToDiagnostician: { ...SRE_GATE_DEFAULTS },
949
- diagnosticianToSurgeon: { ...SRE_GATE_DEFAULTS }
950
- }),
951
- allowedFilePatterns: z.array(z.string()).default([...SRE_BASE_ALLOWED_PATTERNS]).transform((patterns) => {
952
- return [...new Set([...SRE_BASE_ALLOWED_PATTERNS, ...patterns])];
953
- }),
954
- blockedFilePatterns: z.array(z.string()).default([
955
- "infra/**",
956
- "*.secret*",
957
- "*.env*",
958
- "*migration*",
959
- ".github/workflows/**",
960
- "**/package.json",
961
- "pnpm-lock.yaml"
962
- ]),
963
- circuitBreaker: z.object({
964
- failureThreshold: z.number().min(1).default(3),
965
- cooldownMinutes: z.number().min(1).default(30)
966
- }).default({
967
- failureThreshold: 3,
968
- cooldownMinutes: 30
969
- }),
970
972
  recurrence: z.object({
971
973
  enabled: z.boolean().default(true),
972
974
  windowDays: z.number().int().min(1).max(30).default(14),
@@ -976,15 +978,6 @@ const SreAgentConfigSchema = z.object({
976
978
  windowDays: 14,
977
979
  threshold: 1
978
980
  }),
979
- tokenBudget: z.object({
980
- maxInputTokens: z.number().default(5e4),
981
- maxOutputTokens: z.number().default(8e3),
982
- maxGithubApiCalls: z.number().default(20)
983
- }).default({
984
- maxInputTokens: 5e4,
985
- maxOutputTokens: 8e3,
986
- maxGithubApiCalls: 20
987
- }),
988
981
  patternLibrary: z.object({
989
982
  enabled: z.boolean().default(true),
990
983
  minConfidence: z.number().min(0).max(100).default(80)
@@ -992,10 +985,129 @@ const SreAgentConfigSchema = z.object({
992
985
  enabled: true,
993
986
  minConfidence: 80
994
987
  }),
995
- dryRun: z.boolean().default(false),
996
- maxRevisions: z.number().int().min(0).max(10).default(2)
988
+ slack: z.object({
989
+ workspaceId: z.string().optional(),
990
+ channelId: z.string().optional(),
991
+ approverIds: z.string().default("")
992
+ }).default({ approverIds: "" }),
993
+ webhookSecret: z.string().default(""),
994
+ callbackToken: z.string().default("")
995
+ });
996
+ const SreRepoConfigSchema = z.object({
997
+ owner: z.string().min(1),
998
+ repo: z.string().min(1),
999
+ enabled: z.boolean().optional(),
1000
+ modelId: z.string().optional(),
1001
+ maxDiffLines: z.number().min(1).optional(),
1002
+ maxFixesPerDay: z.number().min(0).optional(),
1003
+ maxRevisions: z.number().int().min(0).max(10).optional(),
1004
+ dryRun: z.boolean().optional(),
1005
+ reviewers: z.string().optional(),
1006
+ defaultBranch: z.string().optional(),
1007
+ buildCommand: z.string().optional(),
1008
+ allowedFilePatterns: z.array(z.string()).optional(),
1009
+ blockedFilePatterns: z.array(z.string()).optional(),
1010
+ gates: z.object({
1011
+ sentinelToDiagnostician: SreGateOverrideSchema,
1012
+ diagnosticianToSurgeon: SreGateOverrideSchema
1013
+ }).optional(),
1014
+ circuitBreaker: z.object({
1015
+ failureThreshold: z.number().min(1).optional(),
1016
+ cooldownMinutes: z.number().min(1).optional()
1017
+ }).optional(),
1018
+ tokenBudget: z.object({
1019
+ maxInputTokens: z.number().optional(),
1020
+ maxOutputTokens: z.number().optional(),
1021
+ maxGithubApiCalls: z.number().optional()
1022
+ }).optional(),
1023
+ sources: z.object({
1024
+ cloudwatch: z.object({ enabled: z.boolean().optional() }).optional(),
1025
+ github: z.object({
1026
+ enabled: z.boolean().optional(),
1027
+ labelFilter: z.object({
1028
+ required: z.array(z.string()).optional(),
1029
+ anyOf: z.array(z.string()).optional()
1030
+ }).optional()
1031
+ }).optional()
1032
+ }).optional(),
1033
+ recurrence: z.object({
1034
+ enabled: z.boolean().optional(),
1035
+ windowDays: z.number().int().min(1).max(30).optional(),
1036
+ threshold: z.number().int().min(1).max(10).optional()
1037
+ }).optional(),
1038
+ patternLibrary: z.object({
1039
+ enabled: z.boolean().optional(),
1040
+ minConfidence: z.number().min(0).max(100).optional()
1041
+ }).optional(),
1042
+ slack: z.object({
1043
+ channelId: z.string().optional(),
1044
+ approverIds: z.string().optional()
1045
+ }).optional(),
1046
+ webhookSecret: z.string().optional(),
1047
+ callbackToken: z.string().optional()
997
1048
  });
998
1049
  /**
1050
+ * SRE Agent Config — stored in AdminSettings.
1051
+ *
1052
+ * v2 structure: `{ schemaVersion: 2, defaults, repos[], globalMaxFixesPerDay }`.
1053
+ * v1 (flat) configs are transparently migrated via `.transform()`.
1054
+ */
1055
+ const SreAgentConfigSchema = z.preprocess((raw) => {
1056
+ const obj = raw && typeof raw === "object" ? raw : {};
1057
+ if (obj.schemaVersion && obj.schemaVersion >= 2 || obj.defaults || obj.repos) {
1058
+ if (!obj.defaults) obj.defaults = {};
1059
+ return obj;
1060
+ }
1061
+ const github = obj.github ?? {};
1062
+ const legacyRepos = github.repos ?? [];
1063
+ const legacyRepo = github.owner && github.repo ? {
1064
+ owner: github.owner,
1065
+ repo: github.repo,
1066
+ reviewers: github.reviewers || void 0,
1067
+ webhookSecret: github.webhookSecret || void 0,
1068
+ callbackToken: github.callbackToken || void 0
1069
+ } : null;
1070
+ const repos = [...legacyRepos];
1071
+ if (legacyRepo) {
1072
+ if (!repos.some((r) => {
1073
+ const entry = r;
1074
+ return entry.owner === legacyRepo.owner && entry.repo === legacyRepo.repo;
1075
+ })) repos.unshift(legacyRepo);
1076
+ }
1077
+ const defaults = {};
1078
+ for (const key of [
1079
+ "enabled",
1080
+ "modelId",
1081
+ "maxDiffLines",
1082
+ "maxFixesPerDay",
1083
+ "maxRevisions",
1084
+ "dryRun",
1085
+ "gates",
1086
+ "circuitBreaker",
1087
+ "tokenBudget",
1088
+ "sources",
1089
+ "recurrence",
1090
+ "patternLibrary",
1091
+ "allowedFilePatterns",
1092
+ "blockedFilePatterns"
1093
+ ]) if (obj[key] !== void 0) defaults[key] = obj[key];
1094
+ if (obj.slack) defaults.slack = obj.slack;
1095
+ if (github.webhookSecret) defaults.webhookSecret = github.webhookSecret;
1096
+ if (github.callbackToken) defaults.callbackToken = github.callbackToken;
1097
+ if (github.reviewers) defaults.reviewers = github.reviewers;
1098
+ return {
1099
+ schemaVersion: 2,
1100
+ defaults,
1101
+ repos,
1102
+ globalMaxFixesPerDay: obj.globalMaxFixesPerDay ?? obj.maxFixesPerDay ?? 15
1103
+ };
1104
+ }, z.object({
1105
+ schemaVersion: z.number().default(2),
1106
+ defaults: SreDefaultsSchema,
1107
+ repos: z.array(SreRepoConfigSchema).default([]),
1108
+ globalMaxFixesPerDay: z.number().min(0).default(15)
1109
+ }));
1110
+ /**
999
1111
  * Configuration schema for the SecOps Triage feature.
1000
1112
  *
1001
1113
  * Controls automatic GitHub issue creation for critical/high ZAP scan findings.
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { i as version, n as fetchLatestVersion, r as forceCheckForUpdate } from "../updateChecker-CXVeqRh5.mjs";
2
+ import { i as version, n as fetchLatestVersion, r as forceCheckForUpdate } from "../updateChecker-CYb45v01.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 { B as CustomCommandStore, C as getApiUrl, E as generateCliTools, I as buildCoreSystemPrompt, P as setWebSocketToolExecutor, R as isReadOnlyTool, S as loadContextFiles, T as PermissionManager, U as SessionStore, V as CheckpointStore, _ as ServerLlmBackend, a as createBackgroundAgentTools, c as AgentStore, f as ApiClient, g as WebSocketLlmBackend, h as FallbackLlmBackend, 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, v as McpManager, z as ReActAgent } from "../tools-BsFbTD7w.mjs";
3
- import { n as logger, t as ConfigStore } from "../ConfigStore-CG7DYbjy.mjs";
2
+ import { B as CustomCommandStore, C as getApiUrl, E as generateCliTools, I as buildCoreSystemPrompt, P as setWebSocketToolExecutor, R as isReadOnlyTool, S as loadContextFiles, T as PermissionManager, U as SessionStore, V as CheckpointStore, _ as ServerLlmBackend, a as createBackgroundAgentTools, c as AgentStore, f as ApiClient, g as WebSocketLlmBackend, h as FallbackLlmBackend, 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, v as McpManager, z as ReActAgent } from "../tools-CO_HFG1h.mjs";
3
+ import { n as logger, t as ConfigStore } from "../ConfigStore-DZ_IyqmF.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-CG7DYbjy.mjs";
2
+ import { t as ConfigStore } from "../ConfigStore-DZ_IyqmF.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-CXVeqRh5.mjs";
2
+ import { i as version, r as forceCheckForUpdate } from "../updateChecker-CYb45v01.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 DEFAULT_RETRY_CONFIG, B as CustomCommandStore, C as getApiUrl, D as ALWAYS_DENIED_FOR_AGENTS, E as generateCliTools, F as OllamaBackend, G as hasFileReferences, H as CommandHistoryStore, I as buildCoreSystemPrompt, J as mergeCommands, K as processFileReferences, L as buildSkillsPromptSection, M as clearFeatureModuleTools, N as registerFeatureModuleTools, O as DEFAULT_AGENT_MODEL, P as setWebSocketToolExecutor, R as isReadOnlyTool, S as loadContextFiles, T as PermissionManager, U as SessionStore, V as CheckpointStore, W as OAuthClient, X as searchFiles, Y as formatFileSize, Z as warmFileCache, _ as ServerLlmBackend, a as createBackgroundAgentTools, b as formatStep, c as AgentStore, d as parseAgentConfig, f as ApiClient, g as WebSocketLlmBackend, h as FallbackLlmBackend, i as createWriteTodosTool, j as DEFAULT_THOROUGHNESS, k as DEFAULT_MAX_ITERATIONS, l as SubagentOrchestrator, m as WebSocketConnectionManager, n as createFindDefinitionTool, o as BackgroundAgentManager, p as WebSocketToolExecutor, q as searchCommands, r as createTodoStore, s as createAgentDelegateTool, t as createGetFileStructureTool, u as createSkillTool, v as McpManager, w as getEnvironmentName, x as extractCompactInstructions, y as substituteArguments, z as ReActAgent } from "./tools-BsFbTD7w.mjs";
4
- import { Dt as validateJupyterKernelName, Ot as validateNotebookPath$1, g as ChatModels, m as CREDIT_DEDUCT_TRANSACTION_TYPES, n as logger, t as ConfigStore } from "./ConfigStore-CG7DYbjy.mjs";
5
- import { i as version, t as checkForUpdate } from "./updateChecker-CXVeqRh5.mjs";
3
+ import { A as DEFAULT_RETRY_CONFIG, B as CustomCommandStore, C as getApiUrl, D as ALWAYS_DENIED_FOR_AGENTS, E as generateCliTools, F as OllamaBackend, G as hasFileReferences, H as CommandHistoryStore, I as buildCoreSystemPrompt, J as mergeCommands, K as processFileReferences, L as buildSkillsPromptSection, M as clearFeatureModuleTools, N as registerFeatureModuleTools, O as DEFAULT_AGENT_MODEL, P as setWebSocketToolExecutor, R as isReadOnlyTool, S as loadContextFiles, T as PermissionManager, U as SessionStore, V as CheckpointStore, W as OAuthClient, X as searchFiles, Y as formatFileSize, Z as warmFileCache, _ as ServerLlmBackend, a as createBackgroundAgentTools, b as formatStep, c as AgentStore, d as parseAgentConfig, f as ApiClient, g as WebSocketLlmBackend, h as FallbackLlmBackend, i as createWriteTodosTool, j as DEFAULT_THOROUGHNESS, k as DEFAULT_MAX_ITERATIONS, l as SubagentOrchestrator, m as WebSocketConnectionManager, n as createFindDefinitionTool, o as BackgroundAgentManager, p as WebSocketToolExecutor, q as searchCommands, r as createTodoStore, s as createAgentDelegateTool, t as createGetFileStructureTool, u as createSkillTool, v as McpManager, w as getEnvironmentName, x as extractCompactInstructions, y as substituteArguments, z as ReActAgent } from "./tools-CO_HFG1h.mjs";
4
+ import { Dt as validateJupyterKernelName, Ot as validateNotebookPath$1, g as ChatModels, m as CREDIT_DEDUCT_TRANSACTION_TYPES, n as logger, t as ConfigStore } from "./ConfigStore-DZ_IyqmF.mjs";
5
+ import { i as version, t as checkForUpdate } from "./updateChecker-CYb45v01.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";
@@ -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 getViewById, D as GenericCreditAddTransaction, E as GenerateImageToolCallSchema, Et as sanitizeTelemetryError, 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, P as InviteType, Q as RechartsChartTypeList, R as ModalEvents, S as FeedbackEvents, St as getMcpProviderMetadata, T as GEMINI_IMAGE_MODELS, Tt as resolveNavigationIntents, 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 getAccessibleDataLakes, 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, kt as CollectionType, 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 isGPTImageModel, x as FavoriteDocumentType, xt as getDataLakeTags, y as ElabsEvents, yt as b4mLLMTools, z as ModelBackend } from "./ConfigStore-CG7DYbjy.mjs";
2
+ import { $ as RegInviteEvents, A as ImageGenerationUsageTransaction, B as OpenAIEmbeddingModel, C as FileEvents, Ct as getViewById, D as GenericCreditAddTransaction, E as GenerateImageToolCallSchema, Et as sanitizeTelemetryError, 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, P as InviteType, Q as RechartsChartTypeList, R as ModalEvents, S as FeedbackEvents, St as getMcpProviderMetadata, T as GEMINI_IMAGE_MODELS, Tt as resolveNavigationIntents, 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 getAccessibleDataLakes, 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, kt as CollectionType, 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 isGPTImageModel, x as FavoriteDocumentType, xt as getDataLakeTags, y as ElabsEvents, yt as b4mLLMTools, z as ModelBackend } from "./ConfigStore-DZ_IyqmF.mjs";
3
3
  import { n as isPathAllowed, t as assertPathAllowed } from "./pathValidation-CIytuhr3-Dt5dntLx.mjs";
4
4
  import { execFile, execFileSync, spawn } from "child_process";
5
5
  import { createHash, randomBytes } from "crypto";
@@ -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.79";
7
+ var version = "0.2.80-feat-sre-multi-repo-support.22464+0ccbbdf8b";
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.79",
3
+ "version": "0.2.80-feat-sre-multi-repo-support.22464+0ccbbdf8b",
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.16",
119
- "@bike4mind/common": "2.85.1",
120
- "@bike4mind/mcp": "1.35.1",
121
- "@bike4mind/services": "2.75.2",
122
- "@bike4mind/utils": "2.17.3",
118
+ "@bike4mind/agents": "0.4.17-feat-sre-multi-repo-support.22464+0ccbbdf8b",
119
+ "@bike4mind/common": "2.85.2-feat-sre-multi-repo-support.22464+0ccbbdf8b",
120
+ "@bike4mind/mcp": "1.35.2-feat-sre-multi-repo-support.22464+0ccbbdf8b",
121
+ "@bike4mind/services": "2.75.3-feat-sre-multi-repo-support.22464+0ccbbdf8b",
122
+ "@bike4mind/utils": "2.17.4-feat-sre-multi-repo-support.22464+0ccbbdf8b",
123
123
  "@types/better-sqlite3": "^7.6.13",
124
124
  "@types/jsonwebtoken": "^9.0.4",
125
125
  "@types/node": "^22.9.0",
@@ -136,5 +136,5 @@
136
136
  "optionalDependencies": {
137
137
  "@vscode/ripgrep": "^1.17.1"
138
138
  },
139
- "gitHead": "54f16b2db7be307425e5056c44a5015743b02407"
139
+ "gitHead": "0ccbbdf8baf4129f5299c40d657e67e7e3758f91"
140
140
  }