@bike4mind/cli 0.15.1 → 0.15.3

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.
@@ -3882,8 +3882,66 @@ z.enum([
3882
3882
  "contextTelemetryAlerts",
3883
3883
  "sreAgentConfig",
3884
3884
  "secopsTriageConfig",
3885
- "overwatchRollupSync"
3885
+ "overwatchRollupSync",
3886
+ "orchestrationDefaults"
3886
3887
  ]);
3888
+ /**
3889
+ * Intent-classifier sub-config (#8924). Drives the LLM-based silent
3890
+ * auto-routing classifier that decides between quest_processor and
3891
+ * agent_executor for `contextual` queries. The cascade reuses
3892
+ * `getLlmWithFallback()` so a missing primary API key transparently degrades.
3893
+ *
3894
+ * `shadowMode: true` means the endpoint computes a decision and emits
3895
+ * telemetry but no client wires it into routing yet (M3 ships dark-launched;
3896
+ * M4 flips clients onto it).
3897
+ */
3898
+ const IntentClassifierConfigSchema = z.object({
3899
+ enabled: z.boolean().default(true),
3900
+ shadowMode: z.boolean().default(true),
3901
+ primaryModel: z.string().default("claude-haiku-4-5-20251001"),
3902
+ fallbackModels: z.array(z.string()).default(["gemini-2.5-flash-lite", "gpt-4.1-nano-2025-04-14"])
3903
+ });
3904
+ const OrchestrationDefaultsSchema = z.object({
3905
+ /** Tool names the synthetic profile is allowed to invoke. */
3906
+ allowedTools: z.array(z.string()).default([
3907
+ "web_search",
3908
+ "retrieve_knowledge_content",
3909
+ "file_read",
3910
+ "wikipedia_on_this_day",
3911
+ "sunrise_sunset",
3912
+ "planet_visibility",
3913
+ "code_execute",
3914
+ "coordinate_task"
3915
+ ]),
3916
+ /** Tool names explicitly forbidden. Empty by default — `allowedTools` is the whitelist. */
3917
+ deniedTools: z.array(z.string()).default([]),
3918
+ /** Per-thoroughness iteration ceiling. Matches `IAgent.maxIterations`. */
3919
+ maxIterations: z.object({
3920
+ quick: z.number().int().positive(),
3921
+ medium: z.number().int().positive(),
3922
+ very_thorough: z.number().int().positive()
3923
+ }).default({
3924
+ quick: 5,
3925
+ medium: 15,
3926
+ very_thorough: 30
3927
+ }),
3928
+ /** Default thoroughness when the caller does not specify one. */
3929
+ defaultThoroughness: z.enum([
3930
+ "quick",
3931
+ "medium",
3932
+ "very_thorough"
3933
+ ]).default("medium"),
3934
+ /** Models tried in order if the primary fails. Matches `IAgent.fallbackModels`. */
3935
+ fallbackModels: z.array(z.string()).default([]),
3936
+ /**
3937
+ * Enables `coordinate_task` (PR #8678 DAG decomposition). Defaults `true` so
3938
+ * synthetic profiles can decompose multi-step queries; admins can flip off
3939
+ * org-wide if DAG behavior surprises end users.
3940
+ */
3941
+ dagEnabled: z.boolean().default(true),
3942
+ /** LLM intent-classifier configuration (#8924). */
3943
+ intentClassifier: IntentClassifierConfigSchema.default(IntentClassifierConfigSchema.parse({}))
3944
+ });
3887
3945
  function makeStringSetting(config) {
3888
3946
  return {
3889
3947
  ...config,
@@ -6601,6 +6659,15 @@ const settingsMap = {
6601
6659
  lastCompletedAt: z.date().optional(),
6602
6660
  lastResult: z.enum(["success", "failed"]).optional()
6603
6661
  })
6662
+ }),
6663
+ orchestrationDefaults: makeObjectSetting({
6664
+ key: "orchestrationDefaults",
6665
+ name: "Agent Orchestration Defaults",
6666
+ defaultValue: OrchestrationDefaultsSchema.parse({}),
6667
+ description: "Default ReAct profile for agentless executions (#8922). Drives allowed/denied tools, iteration ceilings, default thoroughness, and fallback models when the agent_executor is invoked without a persisted IAgent (e.g. the upcoming Agent-mode toggle).",
6668
+ category: "AI",
6669
+ order: 140,
6670
+ schema: OrchestrationDefaultsSchema
6604
6671
  })
6605
6672
  };
6606
6673
  z.preprocess((val) => {
@@ -8277,7 +8344,25 @@ z.object({
8277
8344
  /** Persona-based sub-agent filter — only these agent names are available for delegation */
8278
8345
  allowedAgents: z.array(z.string()).optional(),
8279
8346
  /** When true, Quest Processor injects Slack-specific tool configs (help, notebooks, curated files) */
8280
- enableSlackTools: z.boolean().optional()
8347
+ enableSlackTools: z.boolean().optional(),
8348
+ /**
8349
+ * Agent-mode toggle state forwarded from the composer (#8923). The chat
8350
+ * completion path itself does not branch on this — that decision happens
8351
+ * upstream in `routeQuery()` on the client (and, post-M4, on the server).
8352
+ * Plumbed through so telemetry and future per-decision routing logs can
8353
+ * attribute the choice to its source (manual toggle vs. classifier vs.
8354
+ * mention) without re-deriving it.
8355
+ */
8356
+ agentMode: z.object({
8357
+ enabled: z.boolean(),
8358
+ source: z.enum([
8359
+ "toggle",
8360
+ "classifier",
8361
+ "mention",
8362
+ "user-default",
8363
+ "agent_literal"
8364
+ ])
8365
+ }).optional()
8281
8366
  }).extend({
8282
8367
  /** Notebook session ID */
8283
8368
  sessionId: z.string().optional(),
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { t as ConfigStore } from "../ConfigStore-HRgwfPBk.mjs";
2
+ import { t as ConfigStore } from "../ConfigStore-D4gALtkZ.mjs";
3
3
  //#region src/commands/apiCommand.ts
4
4
  /**
5
5
  * External API config command (--api-url / --reset-api)
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { t as version } from "../package-CyhCLcRb.mjs";
2
+ import { t as version } from "../package-CfGv2cC5.mjs";
3
3
  import { a as fetchLatestVersion, c as isNpmPrefixWritable, i as compareSemver } from "../updateChecker-C8xsNY2L.mjs";
4
4
  import { t as checkRipgrep } from "../ripgrepCheck-BmkyTK2i.mjs";
5
5
  import { execSync } from "child_process";
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { t as ConfigStore } from "../ConfigStore-HRgwfPBk.mjs";
2
+ import { t as ConfigStore } from "../ConfigStore-D4gALtkZ.mjs";
3
3
  //#region src/commands/envCommand.ts
4
4
  /**
5
5
  * Environment switching for the `--dev` / `--prod` launch flags.
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
- import { C as WebSocketToolExecutor, D as ServerLlmBackend, E as WebSocketLlmBackend, F as generateCliTools, G as buildSystemPrompt, J as ReActAgent, N as loadContextFiles, P as PermissionManager, Q as SessionStore, S as ApiClient, T as FallbackLlmBackend, U as setWebSocketToolExecutor, X as CheckpointStore, Y as CustomCommandStore, _ as createAgentDelegateTool, b as createSkillTool, d as createFindDefinitionTool, f as createTodoStore, g as BackgroundAgentManager, h as createBackgroundAgentTools, k as McpManager, m as createCoordinateTaskTool, p as createWriteTodosTool, q as isReadOnlyTool, u as createGetFileStructureTool, v as AgentStore, w as WebSocketConnectionManager, y as SubagentOrchestrator } from "../tools-Bu1iDd2p.mjs";
3
- import { n as logger, r as getApiUrl, t as ConfigStore } from "../ConfigStore-HRgwfPBk.mjs";
2
+ import { C as WebSocketToolExecutor, D as ServerLlmBackend, E as WebSocketLlmBackend, F as generateCliTools, G as buildSystemPrompt, J as ReActAgent, N as loadContextFiles, P as PermissionManager, Q as SessionStore, S as ApiClient, T as FallbackLlmBackend, U as setWebSocketToolExecutor, X as CheckpointStore, Y as CustomCommandStore, _ as createAgentDelegateTool, b as createSkillTool, d as createFindDefinitionTool, f as createTodoStore, g as BackgroundAgentManager, h as createBackgroundAgentTools, k as McpManager, m as createCoordinateTaskTool, p as createWriteTodosTool, q as isReadOnlyTool, u as createGetFileStructureTool, v as AgentStore, w as WebSocketConnectionManager, y as SubagentOrchestrator } from "../tools-GgAy5rmD.mjs";
3
+ import { n as logger, r as getApiUrl, t as ConfigStore } from "../ConfigStore-D4gALtkZ.mjs";
4
4
  import { t as DEFAULT_SANDBOX_CONFIG } from "../types-LyRNHOiS.mjs";
5
5
  import { t as createSandboxRuntime } from "../SandboxRuntimeAdapter-ChGlxSGQ.mjs";
6
6
  import { t as SandboxOrchestrator } from "../SandboxOrchestrator-BoINxbX4.mjs";
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { t as ConfigStore } from "../ConfigStore-HRgwfPBk.mjs";
2
+ import { t as ConfigStore } from "../ConfigStore-D4gALtkZ.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 { t as version } from "../package-CyhCLcRb.mjs";
2
+ import { t as version } from "../package-CfGv2cC5.mjs";
3
3
  import { c as isNpmPrefixWritable, l as setAutoUpdatePreference, n as REEXEC_GUARD_ENV, o as forceCheckForUpdate, r as checkForUpdate, s as getAutoUpdatePreference, t as INSTALL_CMD, u as shouldAttemptAutoUpdate } from "../updateChecker-C8xsNY2L.mjs";
4
4
  import { t as checkRipgrep } from "../ripgrepCheck-BmkyTK2i.mjs";
5
5
  import { execSync, spawnSync } from "child_process";
package/dist/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
- import { $ as OAuthClient, A as substituteArguments, B as DEFAULT_THOROUGHNESS, C as WebSocketToolExecutor, D as ServerLlmBackend, E as WebSocketLlmBackend, F as generateCliTools, G as buildSystemPrompt, H as registerFeatureModuleTools, I as ALWAYS_DENIED_FOR_AGENTS, J as ReActAgent, K as buildSkillsPromptSection, L as DEFAULT_AGENT_MODEL, M as extractCompactInstructions, N as loadContextFiles, O as isTransientNetworkError, P as PermissionManager, Q as SessionStore, R as DEFAULT_MAX_ITERATIONS, S as ApiClient, T as FallbackLlmBackend, U as setWebSocketToolExecutor, V as clearFeatureModuleTools, W as getPlanModeFilePath, X as CheckpointStore, Y as CustomCommandStore, Z as CommandHistoryStore, _ as createAgentDelegateTool, a as createBlockerTools, at as searchFiles, b as createSkillTool, c as createDecisionStore, d as createFindDefinitionTool, et as hasFileReferences, f as createTodoStore, g as BackgroundAgentManager, h as createBackgroundAgentTools, i as createBlockerStore, it as formatFileSize, j as formatStep, k as McpManager, l as formatDecisionsOutput, m as createCoordinateTaskTool, n as createReviewGateTool, nt as searchCommands, o as formatBlockersOutput, ot as warmFileCache, p as createWriteTodosTool, q as isReadOnlyTool, r as formatReviewGatesOutput, rt as mergeCommands, s as createDecisionLogTool, t as createReviewGateStore, tt as processFileReferences, u as createGetFileStructureTool, v as AgentStore, w as WebSocketConnectionManager, x as parseAgentConfig, y as SubagentOrchestrator, z as DEFAULT_RETRY_CONFIG } from "./tools-Bu1iDd2p.mjs";
2
+ import { $ as OAuthClient, A as substituteArguments, B as DEFAULT_THOROUGHNESS, C as WebSocketToolExecutor, D as ServerLlmBackend, E as WebSocketLlmBackend, F as generateCliTools, G as buildSystemPrompt, H as registerFeatureModuleTools, I as ALWAYS_DENIED_FOR_AGENTS, J as ReActAgent, K as buildSkillsPromptSection, L as DEFAULT_AGENT_MODEL, M as extractCompactInstructions, N as loadContextFiles, O as isTransientNetworkError, P as PermissionManager, Q as SessionStore, R as DEFAULT_MAX_ITERATIONS, S as ApiClient, T as FallbackLlmBackend, U as setWebSocketToolExecutor, V as clearFeatureModuleTools, W as getPlanModeFilePath, X as CheckpointStore, Y as CustomCommandStore, Z as CommandHistoryStore, _ as createAgentDelegateTool, a as createBlockerTools, at as searchFiles, b as createSkillTool, c as createDecisionStore, d as createFindDefinitionTool, et as hasFileReferences, f as createTodoStore, g as BackgroundAgentManager, h as createBackgroundAgentTools, i as createBlockerStore, it as formatFileSize, j as formatStep, k as McpManager, l as formatDecisionsOutput, m as createCoordinateTaskTool, n as createReviewGateTool, nt as searchCommands, o as formatBlockersOutput, ot as warmFileCache, p as createWriteTodosTool, q as isReadOnlyTool, r as formatReviewGatesOutput, rt as mergeCommands, s as createDecisionLogTool, t as createReviewGateStore, tt as processFileReferences, u as createGetFileStructureTool, v as AgentStore, w as WebSocketConnectionManager, x as parseAgentConfig, y as SubagentOrchestrator, z as DEFAULT_RETRY_CONFIG } from "./tools-GgAy5rmD.mjs";
3
3
  import { n as useCliStore, t as selectActiveBackgroundAgents } from "./store-DV5s-qni.mjs";
4
- import { Gt as validateNotebookPath$1, Wt as validateJupyterKernelName, g as CREDIT_DEDUCT_TRANSACTION_TYPES, i as getEnvironmentName, n as logger, r as getApiUrl, t as ConfigStore, v as ChatModels } from "./ConfigStore-HRgwfPBk.mjs";
5
- import { t as version } from "./package-CyhCLcRb.mjs";
4
+ import { Gt as validateNotebookPath$1, Wt as validateJupyterKernelName, g as CREDIT_DEDUCT_TRANSACTION_TYPES, i as getEnvironmentName, n as logger, r as getApiUrl, t as ConfigStore, v as ChatModels } from "./ConfigStore-D4gALtkZ.mjs";
5
+ import { t as version } from "./package-CfGv2cC5.mjs";
6
6
  import { r as checkForUpdate } from "./updateChecker-C8xsNY2L.mjs";
7
7
  import React, { useCallback, useEffect, useMemo, useReducer, useRef, useState } from "react";
8
8
  import { Box, Static, Text, render, useApp, useInput, usePaste, useStdout } from "ink";
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
2
  //#region package.json
3
- var version = "0.15.1";
3
+ var version = "0.15.3";
4
4
  //#endregion
5
5
  export { version as t };
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
- import { $ as ProjectEvents, A as GenerateImageToolCallSchema, At as dayjsConfig_default, B as InviteEvents, Bt as resolveNavigationIntents, C as ElabsEvents, Ct as UnauthorizedError, D as ForbiddenError, Dt as VideoModels, E as FileEvents, Et as VideoGenerationUsageTransaction, F as ImageEditUsageTransaction, Ft as isGPTImage2Model, G as ModalEvents, H as KnowledgeType, Ht as secureParameters, I as ImageGenerationUsageTransaction, It as isGPTImageModel, J as OpenAIEmbeddingModel, Jt as isNearLimit, K as ModelBackend, Kt as buildRateLimitLogEntry, L as ImageModels, Lt as isSupportedEmbeddingModel, M as GenericCreditDeductTransaction, Mt as getDataLakeTags, N as HTTPError, Nt as getMcpProviderMetadata, O as FriendshipEvents, Ot as XAI_IMAGE_MODELS, P as HttpStatus, Pt as getViewById, Q as ProfileEvents, R as InboxEvents, Rt as isZodError, S as DashboardParamsSchema, St as UiNavigationEvents, T as FeedbackEvents, Tt as VIDEO_SIZE_CONSTRAINTS, U as LLMEvents, Ut as settingsMap, V as InviteType, Vt as sanitizeTelemetryError, W as MiscEvents, X as Permission, Xt as CollectionType, Y as OpenAIImageGenerationInput, Yt as parseRateLimitHeaders, Z as PermissionDeniedError, _ as ChatCompletionCreateInputSchema, _t as TaskScheduleHandler, a as ALERT_THRESHOLDS, at as ReceivedCreditTransaction, b as CompletionApiUsageTransaction, bt as ToolUsageTransaction, c as ApiKeyScope, ct as ResearchModeParamsSchema, d as ArtifactTypeSchema, dt as ResearchTaskType, et as PromptIntentSchema, f as AuthEvents, ft as SessionEvents, gt as TagType, h as BadRequestError, ht as SupportedFabFileMimeTypes, it as RealtimeVoiceUsageTransaction, j as GenericCreditAddTransaction, jt as getAccessibleDataLakes, k as GEMINI_IMAGE_MODELS, kt as b4mLLMTools, l as ApiKeyType, lt as ResearchTaskExecutionType, m as BFL_SAFETY_TOLERANCE, mt as SubscriptionCreditTransaction, n as logger, nt as PurchaseTransaction, o as AiEvents, ot as RechartsChartTypeList, p as BFL_IMAGE_MODELS, pt as SpeechToTextUsageTransaction, q as NotFoundError, qt as extractSnippetMeta, rt as QuestMasterParamsSchema, s as ApiKeyEvents, st as RegInviteEvents, t as ConfigStore, tt as PromptMetaZodSchema, u as AppFileEvents, ut as ResearchTaskPeriodicFrequencyType, v as ChatModels, vt as TextGenerationUsageTransaction, w as FavoriteDocumentType, wt as UnprocessableEntityError, x as CorruptedFileError, xt as TransferCreditTransaction, y as ClaudeArtifactMimeTypes, yt as TooManyRequestsError, z as InternalServerError, zt as obfuscateApiKey } from "./ConfigStore-HRgwfPBk.mjs";
2
+ import { $ as ProjectEvents, A as GenerateImageToolCallSchema, At as dayjsConfig_default, B as InviteEvents, Bt as resolveNavigationIntents, C as ElabsEvents, Ct as UnauthorizedError, D as ForbiddenError, Dt as VideoModels, E as FileEvents, Et as VideoGenerationUsageTransaction, F as ImageEditUsageTransaction, Ft as isGPTImage2Model, G as ModalEvents, H as KnowledgeType, Ht as secureParameters, I as ImageGenerationUsageTransaction, It as isGPTImageModel, J as OpenAIEmbeddingModel, Jt as isNearLimit, K as ModelBackend, Kt as buildRateLimitLogEntry, L as ImageModels, Lt as isSupportedEmbeddingModel, M as GenericCreditDeductTransaction, Mt as getDataLakeTags, N as HTTPError, Nt as getMcpProviderMetadata, O as FriendshipEvents, Ot as XAI_IMAGE_MODELS, P as HttpStatus, Pt as getViewById, Q as ProfileEvents, R as InboxEvents, Rt as isZodError, S as DashboardParamsSchema, St as UiNavigationEvents, T as FeedbackEvents, Tt as VIDEO_SIZE_CONSTRAINTS, U as LLMEvents, Ut as settingsMap, V as InviteType, Vt as sanitizeTelemetryError, W as MiscEvents, X as Permission, Xt as CollectionType, Y as OpenAIImageGenerationInput, Yt as parseRateLimitHeaders, Z as PermissionDeniedError, _ as ChatCompletionCreateInputSchema, _t as TaskScheduleHandler, a as ALERT_THRESHOLDS, at as ReceivedCreditTransaction, b as CompletionApiUsageTransaction, bt as ToolUsageTransaction, c as ApiKeyScope, ct as ResearchModeParamsSchema, d as ArtifactTypeSchema, dt as ResearchTaskType, et as PromptIntentSchema, f as AuthEvents, ft as SessionEvents, gt as TagType, h as BadRequestError, ht as SupportedFabFileMimeTypes, it as RealtimeVoiceUsageTransaction, j as GenericCreditAddTransaction, jt as getAccessibleDataLakes, k as GEMINI_IMAGE_MODELS, kt as b4mLLMTools, l as ApiKeyType, lt as ResearchTaskExecutionType, m as BFL_SAFETY_TOLERANCE, mt as SubscriptionCreditTransaction, n as logger, nt as PurchaseTransaction, o as AiEvents, ot as RechartsChartTypeList, p as BFL_IMAGE_MODELS, pt as SpeechToTextUsageTransaction, q as NotFoundError, qt as extractSnippetMeta, rt as QuestMasterParamsSchema, s as ApiKeyEvents, st as RegInviteEvents, t as ConfigStore, tt as PromptMetaZodSchema, u as AppFileEvents, ut as ResearchTaskPeriodicFrequencyType, v as ChatModels, vt as TextGenerationUsageTransaction, w as FavoriteDocumentType, wt as UnprocessableEntityError, x as CorruptedFileError, xt as TransferCreditTransaction, y as ClaudeArtifactMimeTypes, yt as TooManyRequestsError, z as InternalServerError, zt as obfuscateApiKey } from "./ConfigStore-D4gALtkZ.mjs";
3
3
  import { a as isUserLockedOut, c as userCanDisableMFA, d as userRequiresMFA, f as verifyBackupCode, i as getLockoutTimeRemaining, l as userEligibleForMFA, n as generateBackupCodes, o as recordFailedAttempt, p as verifyTOTPToken, r as generateTOTPSetup, s as shouldResetFailedAttempts, t as clearFailedAttempts, u as userHasMFAConfigured } from "./utils-PpNti-tY.mjs";
4
4
  import { n as isPathAllowed, t as assertPathAllowed } from "./pathValidation-D8tjkQXE-1HwvsuYT.mjs";
5
- import { t as version } from "./package-CyhCLcRb.mjs";
5
+ import { t as version } from "./package-CfGv2cC5.mjs";
6
6
  import { execFile, execFileSync, spawn } from "child_process";
7
7
  import crypto, { createHash, randomBytes, randomUUID } from "crypto";
8
8
  import { existsSync, promises, readFileSync, readdirSync, rmSync, statSync, unlinkSync, writeFileSync } from "fs";
@@ -2727,7 +2727,7 @@ Remember: You are an autonomous AGENT. Act independently and solve problems proa
2727
2727
  };
2728
2728
  }
2729
2729
  return {
2730
- step: iterationSteps.find((s) => s.type === "final_answer") || iterationSteps[iterationSteps.length - 1] || {
2730
+ step: iterationSteps.findLast((s) => s.type === "final_answer") || iterationSteps[iterationSteps.length - 1] || {
2731
2731
  type: "thought",
2732
2732
  content: currentText.trim() || "No output from this iteration",
2733
2733
  metadata: { timestamp: Date.now() }
@@ -4242,7 +4242,7 @@ function isWriteTargetingPlanFile(toolName, args, cwd = process.cwd()) {
4242
4242
  return rel === "" || !rel.startsWith("..") && !path.isAbsolute(rel);
4243
4243
  }
4244
4244
  //#endregion
4245
- //#region ../../b4m-core/services/dist/chunk-BBjsoOtd.mjs
4245
+ //#region ../../b4m-core/services/dist/rolldown-runtime-BBjsoOtd.mjs
4246
4246
  var __defProp$2 = Object.defineProperty;
4247
4247
  var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
4248
4248
  var __getOwnPropNames$1 = Object.getOwnPropertyNames;
@@ -4268,7 +4268,7 @@ var __copyProps$1 = (to, from, except, desc) => {
4268
4268
  };
4269
4269
  var __reExport$1 = (target, mod, secondTarget) => (__copyProps$1(target, mod, "default"), secondTarget && __copyProps$1(secondTarget, mod, "default"));
4270
4270
  //#endregion
4271
- //#region ../../b4m-core/utils/dist/chunk-BBjsoOtd.mjs
4271
+ //#region ../../b4m-core/utils/dist/rolldown-runtime-BBjsoOtd.mjs
4272
4272
  var __defProp$1 = Object.defineProperty;
4273
4273
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4274
4274
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -10040,7 +10040,7 @@ z.object({
10040
10040
  userId: z.string()
10041
10041
  });
10042
10042
  //#endregion
10043
- //#region ../../b4m-core/auth/dist/chunk-D7D4PA-g.mjs
10043
+ //#region ../../b4m-core/auth/dist/rolldown-runtime-D7D4PA-g.mjs
10044
10044
  var __defProp = Object.defineProperty;
10045
10045
  var __exportAll = (all, no_symbols) => {
10046
10046
  let target = {};
@@ -10251,6 +10251,13 @@ var apiKeyService_exports = /* @__PURE__ */ __exportAll$2({});
10251
10251
  __reExport$1(apiKeyService_exports, apiKeyService_exports$1);
10252
10252
  //#endregion
10253
10253
  //#region ../../b4m-core/services/dist/llm/tools/implementation/websearch/index.mjs
10254
+ function safeHostname(url) {
10255
+ try {
10256
+ return new URL(url).hostname;
10257
+ } catch {
10258
+ return url;
10259
+ }
10260
+ }
10254
10261
  async function serpApiSearch(adapters, query, num_results) {
10255
10262
  const apiKey = await (0, apiKeyService_exports.getSerperKey)(adapters);
10256
10263
  const url = new URL("https://serpapi.com/search");
@@ -10317,7 +10324,7 @@ async function performWebSearch(adapters, params) {
10317
10324
  fullContext: result.snippet
10318
10325
  }
10319
10326
  }));
10320
- const formattedResults = results.map((result, index) => `${index + 1}. **${result.title}**\n${result.snippet}\nSource: [${new URL(result.link).hostname}](${result.link})\n`).join("\n");
10327
+ const formattedResults = results.map((result, index) => `${index + 1}. **${result.title}**\n${result.snippet}\nSource: [${safeHostname(result.link)}](${result.link})\n`).join("\n");
10321
10328
  return {
10322
10329
  formattedResults: formattedResults ? `Here's what I found from searching the web:\n\n${formattedResults}` : "No results found from web search.",
10323
10330
  citables
@@ -19940,6 +19947,7 @@ z.object({
19940
19947
  disabledTools: z.array(z.string()).optional(),
19941
19948
  forceKnowledgeRetrieval: z.boolean().optional(),
19942
19949
  retrievalTags: z.array(z.string()).optional(),
19950
+ citationStyle: z.enum(["named", "indexed"]).optional(),
19943
19951
  temperature: z.number().optional(),
19944
19952
  tags: z.array(z.object({
19945
19953
  name: z.string(),
@@ -21574,6 +21582,30 @@ z.object({
21574
21582
  text: z.string(),
21575
21583
  context: z.string().optional()
21576
21584
  });
21585
+ `${[
21586
+ "needs_web_search",
21587
+ "needs_current_data",
21588
+ "needs_file_lookup",
21589
+ "needs_calculation",
21590
+ "multi_step_reasoning",
21591
+ "requires_retrieval",
21592
+ "compare_sources",
21593
+ "verify_facts"
21594
+ ].join(", ")}${[
21595
+ "personal_opinion",
21596
+ "creative_writing",
21597
+ "casual_chat",
21598
+ "self_contained",
21599
+ "definition_only",
21600
+ "follow_up_clarification",
21601
+ "roleplay"
21602
+ ].join(", ")}`;
21603
+ z.object({
21604
+ useAgent: z.boolean(),
21605
+ confidence: z.number().min(0).max(1),
21606
+ reason: z.string(),
21607
+ signals: z.array(z.string())
21608
+ });
21577
21609
  const SingleMementoEvalSchema = z.object({
21578
21610
  importance: z.number().min(1).max(10),
21579
21611
  summary: z.string(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bike4mind/cli",
3
- "version": "0.15.1",
3
+ "version": "0.15.3",
4
4
  "type": "module",
5
5
  "description": "Interactive CLI tool for Bike4Mind with ReAct agents",
6
6
  "license": "UNLICENSED",
@@ -35,15 +35,15 @@
35
35
  },
36
36
  "dependencies": {
37
37
  "@anthropic-ai/sdk": "^0.97.1",
38
- "@aws-sdk/client-apigatewaymanagementapi": "^3.1050.0",
39
- "@aws-sdk/client-bedrock-runtime": "^3.1050.0",
40
- "@aws-sdk/client-cloudwatch": "^3.1050.0",
41
- "@aws-sdk/client-lambda": "^3.1050.0",
42
- "@aws-sdk/client-s3": "^3.1050.0",
43
- "@aws-sdk/client-sqs": "^3.1050.0",
44
- "@aws-sdk/client-transcribe": "^3.1050.0",
45
- "@aws-sdk/credential-provider-node": "^3.972.43",
46
- "@aws-sdk/s3-request-presigner": "^3.1050.0",
38
+ "@aws-sdk/client-apigatewaymanagementapi": "^3.1069.0",
39
+ "@aws-sdk/client-bedrock-runtime": "^3.1069.0",
40
+ "@aws-sdk/client-cloudwatch": "^3.1069.0",
41
+ "@aws-sdk/client-lambda": "^3.1069.0",
42
+ "@aws-sdk/client-s3": "^3.1069.0",
43
+ "@aws-sdk/client-sqs": "^3.1069.0",
44
+ "@aws-sdk/client-transcribe": "^3.1069.0",
45
+ "@aws-sdk/credential-provider-node": "^3.972.56",
46
+ "@aws-sdk/s3-request-presigner": "^3.1069.0",
47
47
  "@casl/ability": "^6.8.1",
48
48
  "@google/genai": "^1.46.0",
49
49
  "@joplin/turndown-plugin-gfm": "^1.0.67",
@@ -51,7 +51,7 @@
51
51
  "@modelcontextprotocol/sdk": "1.29.0",
52
52
  "@octokit/rest": "^22.0.1",
53
53
  "@opensearch-project/opensearch": "2.11.0",
54
- "@smithy/node-http-handler": "^4.7.3",
54
+ "@smithy/node-http-handler": "^4.8.0",
55
55
  "async-mutex": "^0.5.0",
56
56
  "axios": "1.16.1",
57
57
  "bcryptjs": "^3.0.2",
@@ -107,8 +107,8 @@
107
107
  "zod": "^4.4.3",
108
108
  "zod-validation-error": "^5.0.0",
109
109
  "zustand": "^5.0.13",
110
- "@bike4mind/fab-pipeline": "0.3.1",
111
- "@bike4mind/llm-adapters": "0.4.1",
110
+ "@bike4mind/fab-pipeline": "0.3.3",
111
+ "@bike4mind/llm-adapters": "0.4.3",
112
112
  "@bike4mind/observability": "0.1.0"
113
113
  },
114
114
  "devDependencies": {
@@ -120,15 +120,15 @@
120
120
  "@types/ws": "^8.18.1",
121
121
  "@types/yargs": "^17.0.35",
122
122
  "ink-testing-library": "^4.0.0",
123
- "tsdown": "^0.22.0",
123
+ "tsdown": "^0.22.2",
124
124
  "tsx": "^4.22.3",
125
125
  "typescript": "^5.9.3",
126
- "vitest": "^4.1.7",
127
- "@bike4mind/agents": "0.14.1",
128
- "@bike4mind/common": "2.108.1",
129
- "@bike4mind/mcp": "1.37.25",
130
- "@bike4mind/services": "2.94.1",
131
- "@bike4mind/utils": "2.24.1"
126
+ "vitest": "^4.1.9",
127
+ "@bike4mind/agents": "0.15.0",
128
+ "@bike4mind/common": "2.110.0",
129
+ "@bike4mind/mcp": "1.37.27",
130
+ "@bike4mind/services": "2.95.0",
131
+ "@bike4mind/utils": "2.24.3"
132
132
  },
133
133
  "optionalDependencies": {
134
134
  "@vscode/ripgrep": "^1.18.0"