@bike4mind/cli 0.2.36-propagate-thinking-option-to-agents.20068 → 0.2.36

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-63ROENM5.js";
4
+ } from "./chunk-EY65E4W4.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;
@@ -19,7 +19,7 @@ import {
19
19
  dayjsConfig_default,
20
20
  extractSnippetMeta,
21
21
  settingsMap
22
- } from "./chunk-63ROENM5.js";
22
+ } from "./chunk-EY65E4W4.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";
@@ -2643,7 +2643,7 @@ var AnthropicBackend = class {
2643
2643
  rank: 5,
2644
2644
  supportsTools: true,
2645
2645
  trainingCutoff: "2024-07-01",
2646
- deprecationDate: "2025-12-19",
2646
+ deprecationDate: "2026-02-19",
2647
2647
  description: "Anthropic's fast and efficient Claude 3.5 Haiku model with improved reasoning capabilities. Cost-effective for high-volume tasks."
2648
2648
  },
2649
2649
  {
@@ -2995,7 +2995,7 @@ IMPORTANT! Only when someone asks, remember that you are specifically the ${mode
2995
2995
  const modelInfo = await this.getModelInfo();
2996
2996
  const currentModelInfo = modelInfo.find((m) => m.id === model);
2997
2997
  if (currentModelInfo?.can_think) {
2998
- if (options.thinking?.enabled === true) {
2998
+ if (options.thinking?.enabled !== false) {
2999
2999
  const thinkingBudget = options.thinking?.budget_tokens ?? 16e3;
3000
3000
  apiParams.max_tokens = Math.max(apiParams.max_tokens ?? 4096, thinkingBudget + 1e3);
3001
3001
  apiParams.temperature = 1;
@@ -3700,9 +3700,6 @@ var AWSBackend = class {
3700
3700
  this.currentModel = model;
3701
3701
  throw new Error("AWSBackend does not support text completion, only speech-to-text transcription");
3702
3702
  }
3703
- pushToolMessages(_messages, _tool, _result) {
3704
- throw new Error("AWSBackend does not support tool messages");
3705
- }
3706
3703
  async getModelInfo() {
3707
3704
  return [
3708
3705
  {
@@ -4044,7 +4041,7 @@ var AnthropicBedrockBackend = class extends BaseBedrockBackend {
4044
4041
  rank: 5,
4045
4042
  supportsTools: true,
4046
4043
  trainingCutoff: "2024-07-01",
4047
- deprecationDate: "2025-12-19",
4044
+ deprecationDate: "2026-02-19",
4048
4045
  description: "Anthropic's Claude 3.5 Haiku model via AWS Bedrock. Fast and efficient with improved reasoning capabilities."
4049
4046
  },
4050
4047
  {
@@ -4354,7 +4351,7 @@ ${modelIdentity}` : modelIdentity;
4354
4351
  }
4355
4352
  const supportsThinking = model.includes("claude-3-7") || model.includes("claude-opus-4") || model.includes("claude-sonnet-4");
4356
4353
  if (supportsThinking) {
4357
- if (options.thinking?.enabled === true) {
4354
+ if (options.thinking?.enabled !== false) {
4358
4355
  const thinkingBudget = options.thinking?.budget_tokens ?? 16e3;
4359
4356
  body.max_tokens = Math.max(maxTokens, thinkingBudget + 1e3);
4360
4357
  body.temperature = 1;
@@ -5297,9 +5294,6 @@ var BFLBackend = class {
5297
5294
  this.currentModel = model;
5298
5295
  throw new Error("BFLBackend does not support text completion, only image generation");
5299
5296
  }
5300
- pushToolMessages(_messages, _tool, _result) {
5301
- throw new Error("BFLBackend does not support tool messages");
5302
- }
5303
5297
  async getModelInfo() {
5304
5298
  return [
5305
5299
  // BFL Models first - modern, state-of-the-art image generation
@@ -5485,17 +5479,15 @@ var GeminiBackend = class {
5485
5479
  } else {
5486
5480
  this.logger.warn("[Gemini] Missing thought_signature for tool call:", { toolName });
5487
5481
  }
5488
- const toolId = uuidv4();
5489
5482
  toolCalls.push({
5490
- id: toolId,
5483
+ id: uuidv4(),
5491
5484
  name: toolName,
5492
5485
  parameters: toolArgs,
5493
5486
  thought_signature: thoughtSignature
5494
5487
  });
5495
5488
  toolsUsed.push({
5496
5489
  name: toolName,
5497
- arguments: JSON.stringify(toolArgs),
5498
- id: toolId
5490
+ arguments: JSON.stringify(toolArgs)
5499
5491
  });
5500
5492
  }
5501
5493
  async getModelInfo() {
@@ -5870,9 +5862,8 @@ var GeminiBackend = class {
5870
5862
  description: tool.toolSchema.description,
5871
5863
  parameters: {
5872
5864
  ...params,
5873
- type: params.type.toUpperCase(),
5865
+ type: params.type.toUpperCase()
5874
5866
  // "object" -> "OBJECT"
5875
- properties: params.properties ? this.sanitizeProperties(params.properties) : params.properties
5876
5867
  }
5877
5868
  };
5878
5869
  })
@@ -6055,24 +6046,7 @@ var GeminiBackend = class {
6055
6046
  logCacheStats(this.logger, cacheStats, { streaming: false });
6056
6047
  }
6057
6048
  }
6058
- const textParts = [];
6059
- r.candidates?.forEach((candidate) => {
6060
- candidate.content?.parts?.forEach((part) => {
6061
- if (part.text) {
6062
- textParts.push(part.text);
6063
- }
6064
- if (part.functionCall) {
6065
- this.registerToolCall(part.functionCall, part, toolCalls, toolsUsed);
6066
- }
6067
- if (part.function_call) {
6068
- this.registerToolCall(part.function_call, part, toolCalls, toolsUsed);
6069
- }
6070
- if (part.name && part.args && !part.text) {
6071
- this.registerToolCall({ name: part.name, args: part.args }, part, toolCalls, toolsUsed);
6072
- }
6073
- });
6074
- });
6075
- await callback(textParts.length ? textParts : [], {
6049
+ await callback(r.candidates?.map((candidate) => candidate.content?.parts?.[0]?.text) ?? [], {
6076
6050
  inputTokens: r.usageMetadata?.promptTokenCount ?? 0,
6077
6051
  outputTokens: r.usageMetadata?.candidatesTokenCount ?? 0,
6078
6052
  toolsUsed,
@@ -6278,80 +6252,12 @@ var GeminiBackend = class {
6278
6252
  }
6279
6253
  ];
6280
6254
  }
6281
- /**
6282
- * Strip JSON Schema fields that Gemini's API doesn't support
6283
- * (e.g., exclusiveMinimum, exclusiveMaximum, additionalProperties on nested objects).
6284
- */
6285
- sanitizeProperties(properties) {
6286
- const unsupportedFields = [
6287
- "exclusiveMinimum",
6288
- "exclusiveMaximum",
6289
- "minLength",
6290
- "maxLength",
6291
- "pattern",
6292
- "minItems",
6293
- "maxItems",
6294
- "uniqueItems",
6295
- "additionalProperties",
6296
- "default",
6297
- "$schema"
6298
- ];
6299
- const sanitized = {};
6300
- for (const [key, value] of Object.entries(properties)) {
6301
- if (value && typeof value === "object" && !Array.isArray(value)) {
6302
- const prop = { ...value };
6303
- for (const field of unsupportedFields) {
6304
- delete prop[field];
6305
- }
6306
- if (prop.properties && typeof prop.properties === "object") {
6307
- prop.properties = this.sanitizeProperties(prop.properties);
6308
- }
6309
- if (prop.items && typeof prop.items === "object") {
6310
- const items = { ...prop.items };
6311
- for (const field of unsupportedFields) {
6312
- delete items[field];
6313
- }
6314
- if (items.properties && typeof items.properties === "object") {
6315
- items.properties = this.sanitizeProperties(items.properties);
6316
- }
6317
- prop.items = items;
6318
- }
6319
- sanitized[key] = prop;
6320
- } else {
6321
- sanitized[key] = value;
6322
- }
6323
- }
6324
- return sanitized;
6325
- }
6326
6255
  getGenerationConfig(model, options) {
6327
6256
  return {
6328
6257
  temperature: options.temperature ?? 0.9,
6329
6258
  maxOutputTokens: options.maxTokens ?? 8192
6330
6259
  };
6331
6260
  }
6332
- pushToolMessages(messages, tool, result) {
6333
- messages.push({
6334
- role: "assistant",
6335
- content: [
6336
- {
6337
- type: "tool_use",
6338
- id: tool.id,
6339
- name: tool.name,
6340
- input: JSON.parse(tool.parameters || "{}")
6341
- }
6342
- ]
6343
- });
6344
- messages.push({
6345
- role: "tool",
6346
- content: [
6347
- {
6348
- type: "tool_result",
6349
- tool_use_id: tool.id,
6350
- content: result
6351
- }
6352
- ]
6353
- });
6354
- }
6355
6261
  };
6356
6262
 
6357
6263
  // ../../b4m-core/packages/utils/dist/src/llm/ollamaBackend.js
@@ -6475,27 +6381,29 @@ var OllamaBackend = class {
6475
6381
  };
6476
6382
  });
6477
6383
  }
6478
- pushToolMessages(messages, tool, result) {
6479
- messages.push({
6480
- content: null,
6481
- role: "assistant",
6482
- tool_calls: [
6483
- {
6484
- id: tool.id,
6485
- type: "function",
6486
- function: {
6487
- name: tool.name,
6488
- arguments: tool.parameters
6489
- }
6490
- }
6491
- ]
6492
- });
6493
- messages.push({
6494
- role: "tool",
6495
- content: result,
6496
- tool_call_id: tool.id
6497
- });
6498
- }
6384
+ // TODO: Tool support will be added in a future epic
6385
+ // private pushToolMessages(messages: IMessage[], tool: IChoiceEndToolUse['tool'], result: string) {
6386
+ // const toolCallMessage: ExtendedIMessage = {
6387
+ // content: '',
6388
+ // role: 'assistant',
6389
+ // tool_calls: [
6390
+ // {
6391
+ // id: tool.id,
6392
+ // type: 'function',
6393
+ // function: {
6394
+ // name: tool.name,
6395
+ // arguments: tool.parameters,
6396
+ // },
6397
+ // },
6398
+ // ],
6399
+ // };
6400
+ // const resultMessage: ExtendedIMessage = {
6401
+ // role: 'tool',
6402
+ // content: JSON.stringify({ result }),
6403
+ // tool_call_id: tool.id,
6404
+ // };
6405
+ // messages.push(toolCallMessage, resultMessage);
6406
+ // }
6499
6407
  // private formatTools(tools: ICompletionOptionTools[]): Tool[] {
6500
6408
  // return tools.map(tool => ({
6501
6409
  // type: 'function' as const,
@@ -7261,8 +7169,7 @@ var OpenAIBackend = class {
7261
7169
  if (toolCall.function.arguments) {
7262
7170
  toolsUsed.push({
7263
7171
  name: toolCall.function.name,
7264
- arguments: toolCall.function.arguments,
7265
- id: toolCall.id
7172
+ arguments: toolCall.function.arguments
7266
7173
  });
7267
7174
  }
7268
7175
  }
@@ -7436,8 +7343,7 @@ var OpenAIBackend = class {
7436
7343
  if (tool.name && tool.parameters) {
7437
7344
  toolsUsed.push({
7438
7345
  name: tool.name,
7439
- arguments: tool.parameters,
7440
- id: tool.id
7346
+ arguments: tool.parameters
7441
7347
  });
7442
7348
  }
7443
7349
  }
@@ -7820,7 +7726,7 @@ var XAIBackend = class {
7820
7726
  parameters.tools = this.formatTools(options.tools);
7821
7727
  }
7822
7728
  const supportsThinking = await this.modelSupportsThinking(model);
7823
- const thinkingEnabled = supportsThinking && options.thinking?.enabled === true;
7729
+ const thinkingEnabled = supportsThinking && options.thinking?.enabled !== false;
7824
7730
  const cacheStrategy = options.cacheStrategy;
7825
7731
  let headers = {};
7826
7732
  if (cacheStrategy?.enableCaching) {
@@ -7858,8 +7764,7 @@ var XAIBackend = class {
7858
7764
  if (toolCall.function.arguments) {
7859
7765
  toolsUsed.push({
7860
7766
  name: toolCall.function.name,
7861
- arguments: toolCall.function.arguments,
7862
- id: toolCall.id
7767
+ arguments: toolCall.function.arguments
7863
7768
  });
7864
7769
  }
7865
7770
  }
@@ -8000,12 +7905,11 @@ var XAIBackend = class {
8000
7905
  }
8001
7906
  if (func.length > 0) {
8002
7907
  for await (const tool of func) {
8003
- const { name, parameters: parameters2, id } = tool;
7908
+ const { name, parameters: parameters2 } = tool;
8004
7909
  if (name) {
8005
7910
  toolsUsed.push({
8006
7911
  name,
8007
- arguments: parameters2 || "{}",
8008
- id
7912
+ arguments: parameters2 || "{}"
8009
7913
  });
8010
7914
  }
8011
7915
  }
@@ -12294,6 +12198,9 @@ function findAutomaticFallback(originalModel, availableModels, apiKeyTable, logg
12294
12198
  "claude-opus-4-6": ["claude-sonnet-4-6", "claude-sonnet-4-5-20250929", "gpt-5", "claude-haiku-4-5-20251001"],
12295
12199
  "claude-sonnet-4-6": ["claude-sonnet-4-5-20250929", "claude-opus-4-5-20251101", "gpt-5"],
12296
12200
  "claude-sonnet-4-5-20250929": ["claude-sonnet-4-6", "claude-haiku-4-5-20251001", "gpt-5"],
12201
+ // Deprecated Claude models fallback to newer versions
12202
+ "claude-3-5-haiku-20241022": ["claude-haiku-4-5-20251001", "gpt-4o-mini"],
12203
+ "us.anthropic.claude-3-5-haiku-20241022-v1:0": ["us.anthropic.claude-haiku-4-5-20251001-v1:0", "gpt-4o-mini"],
12297
12204
  // Claude models fallback to other Claude models or GPT
12298
12205
  "claude-3-5-sonnet-20241022": ["claude-3-opus-20240229", "gpt-4o", "claude-3-sonnet-20240229"],
12299
12206
  "claude-3-opus-20240229": ["claude-3-5-sonnet-20241022", "gpt-4o", "claude-3-sonnet-20240229"],
@@ -7,11 +7,11 @@ import {
7
7
  getSettingsMap,
8
8
  getSettingsValue,
9
9
  secureParameters
10
- } from "./chunk-SLX2KTAZ.js";
10
+ } from "./chunk-5YLGNW2B.js";
11
11
  import {
12
12
  KnowledgeType,
13
13
  SupportedFabFileMimeTypes
14
- } from "./chunk-63ROENM5.js";
14
+ } from "./chunk-EY65E4W4.js";
15
15
 
16
16
  // ../../b4m-core/packages/services/dist/src/fabFileService/create.js
17
17
  import { z } from "zod";
@@ -9170,7 +9170,17 @@ var atlassianDescriptions = {
9170
9170
  jira_get_current_user: "Get information about the currently authenticated Jira user. Returns user account details.",
9171
9171
  jira_list_watchers: "Get all watchers for a Jira issue. Returns the list of users watching the issue and the total watcher count.",
9172
9172
  jira_add_watcher: "Add a user as a watcher to a Jira issue. Requires the user's Atlassian account ID.",
9173
- jira_remove_watcher: "Remove a watcher from a Jira issue. Requires the user's Atlassian account ID."
9173
+ jira_remove_watcher: "Remove a watcher from a Jira issue. Requires the user's Atlassian account ID.",
9174
+ // Jira Attachment tools
9175
+ jira_list_attachments: "List all attachments on a Jira issue. Returns filenames, sizes, MIME types, authors, and download URLs.",
9176
+ jira_upload_attachment: "Upload a file attachment to a Jira issue. Supports Slack files and base64-encoded content (max 20MB).",
9177
+ jira_download_attachment: "Download a Jira attachment by ID. Returns base64-encoded content.",
9178
+ jira_delete_attachment: "\u26A0\uFE0F DESTRUCTIVE PREVIEW-FIRST TOOL: ALWAYS call TWICE. First call: MUST use confirmed=false (or omit) to show preview. Second call: Use confirmed=true ONLY after user explicitly confirms. Delete an attachment from a Jira issue.",
9179
+ // Confluence Attachment tools
9180
+ confluence_list_attachments: "List all attachments on a Confluence page. Returns filenames, sizes, and MIME types.",
9181
+ confluence_upload_attachment: "Upload a file to a Confluence page. Supports Slack files and base64 (max 25MB). Auto-embeds in page.",
9182
+ confluence_download_attachment: "Download a Confluence attachment by ID. Returns base64-encoded content.",
9183
+ confluence_delete_attachment: "\u26A0\uFE0F DESTRUCTIVE PREVIEW-FIRST TOOL: ALWAYS call TWICE. First call: MUST use confirmed=false (or omit) to show preview. Second call: Use confirmed=true ONLY after user explicitly confirms. Delete an attachment from a Confluence page."
9174
9184
  };
9175
9185
  var MCP_PROVIDER_METADATA = {
9176
9186
  atlassian: {
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ChatModels
4
- } from "./chunk-63ROENM5.js";
4
+ } from "./chunk-EY65E4W4.js";
5
5
  import {
6
6
  DEFAULT_SANDBOX_CONFIG
7
7
  } from "./chunk-4BIBE3J7.js";
@@ -3,7 +3,7 @@
3
3
  // package.json
4
4
  var package_default = {
5
5
  name: "@bike4mind/cli",
6
- version: "0.2.36-propagate-thinking-option-to-agents.20068+a9be74566",
6
+ version: "0.2.36",
7
7
  type: "module",
8
8
  description: "Interactive CLI tool for Bike4Mind with ReAct agents",
9
9
  license: "UNLICENSED",
@@ -114,10 +114,10 @@ var package_default = {
114
114
  },
115
115
  devDependencies: {
116
116
  "@bike4mind/agents": "0.1.0",
117
- "@bike4mind/common": "2.57.1-propagate-thinking-option-to-agents.20068+a9be74566",
118
- "@bike4mind/mcp": "1.32.5-propagate-thinking-option-to-agents.20068+a9be74566",
119
- "@bike4mind/services": "2.54.1-propagate-thinking-option-to-agents.20068+a9be74566",
120
- "@bike4mind/utils": "2.10.1-propagate-thinking-option-to-agents.20068+a9be74566",
117
+ "@bike4mind/common": "2.58.0",
118
+ "@bike4mind/mcp": "1.32.5",
119
+ "@bike4mind/services": "2.54.1",
120
+ "@bike4mind/utils": "2.11.0",
121
121
  "@types/better-sqlite3": "^7.6.13",
122
122
  "@types/diff": "^5.0.9",
123
123
  "@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: "a9be74566f9c672ccd104890ca6f81ec9537f883"
141
+ gitHead: "06f1ccd1ed28502c0fd1de725763584658e9c014"
142
142
  };
143
143
 
144
144
  // src/utils/updateChecker.ts
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  BadRequestError,
4
4
  secureParameters
5
- } from "./chunk-SLX2KTAZ.js";
5
+ } from "./chunk-5YLGNW2B.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-63ROENM5.js";
16
+ } from "./chunk-EY65E4W4.js";
17
17
 
18
18
  // ../../b4m-core/packages/services/dist/src/creditService/subtractCredits.js
19
19
  import { z } from "zod";
@@ -6,12 +6,12 @@ import {
6
6
  getSettingsByNames,
7
7
  obfuscateApiKey,
8
8
  secureParameters
9
- } from "./chunk-SLX2KTAZ.js";
9
+ } from "./chunk-5YLGNW2B.js";
10
10
  import {
11
11
  ApiKeyType,
12
12
  MementoTier,
13
13
  isSupportedEmbeddingModel
14
- } from "./chunk-63ROENM5.js";
14
+ } from "./chunk-EY65E4W4.js";
15
15
 
16
16
  // ../../b4m-core/packages/services/dist/src/apiKeyService/get.js
17
17
  import { z } from "zod";
@@ -4,7 +4,7 @@ import {
4
4
  getOpenWeatherKey,
5
5
  getSerperKey,
6
6
  getWolframAlphaKey
7
- } from "./chunk-IG2XD7EO.js";
7
+ } from "./chunk-NJQYWIDJ.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-SLX2KTAZ.js";
19
+ } from "./chunk-5YLGNW2B.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-WVER5CH6.js";
26
+ } from "./chunk-H7RVLAQD.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-63ROENM5.js";
83
+ } from "./chunk-EY65E4W4.js";
84
84
 
85
85
  // src/utils/fileSearch.ts
86
86
  import * as fs from "fs";
@@ -2146,19 +2146,34 @@ Remember: You are an autonomous AGENT. Act independently and solve problems proa
2146
2146
  }
2147
2147
  }
2148
2148
  /**
2149
- * Build and append tool call/result messages for the conversation history.
2150
- * Delegates to the backend's pushToolMessages so each provider formats
2151
- * messages according to its own API requirements.
2149
+ * Build and append tool call/result messages for the conversation history
2152
2150
  */
2153
- appendToolMessages(messages, toolUse, observation, _thinkingBlocks) {
2151
+ appendToolMessages(messages, toolUse, observation, thinkingBlocks) {
2154
2152
  const params = this.parseToolArguments(toolUse.arguments);
2155
- const toolId = toolUse.id || `${toolUse.name}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
2156
- const parameters = typeof toolUse.arguments === "string" ? toolUse.arguments : JSON.stringify(params);
2157
- this.context.llm.pushToolMessages(
2158
- messages,
2159
- { id: toolId, name: toolUse.name, parameters },
2160
- observation
2161
- );
2153
+ const msgToolCallId = `${toolUse.name}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
2154
+ const assistantContent = [
2155
+ ...thinkingBlocks,
2156
+ {
2157
+ type: "tool_use",
2158
+ id: msgToolCallId,
2159
+ name: toolUse.name,
2160
+ input: params
2161
+ }
2162
+ ];
2163
+ messages.push({
2164
+ role: "assistant",
2165
+ content: assistantContent
2166
+ });
2167
+ messages.push({
2168
+ role: "user",
2169
+ content: [
2170
+ {
2171
+ type: "tool_result",
2172
+ tool_use_id: msgToolCallId,
2173
+ content: observation
2174
+ }
2175
+ ]
2176
+ });
2162
2177
  }
2163
2178
  };
2164
2179
 
@@ -13313,7 +13328,7 @@ Focus on actionable, specific feedback referencing exact code locations. Your re
13313
13328
  // ../../b4m-core/packages/services/dist/src/llm/agents/ProjectManagerAgent.js
13314
13329
  var ProjectManagerAgent = (config) => ({
13315
13330
  name: "project_manager",
13316
- description: "Project management via Jira and Confluence (create issues, search, update status, write docs). ALWAYS delegate Jira/Confluence requests to this agent \u2014 you do not have direct access to these tools",
13331
+ description: "Project management via Jira and Confluence (create issues, search, update status, manage attachments, write docs). ALWAYS delegate Jira/Confluence requests to this agent \u2014 you do not have direct access to these tools",
13317
13332
  model: config?.model ?? ChatModels.CLAUDE_4_6_SONNET_BEDROCK,
13318
13333
  fallbackModels: [ChatModels.GPT4_1, ChatModels.GPT4_1_MINI],
13319
13334
  defaultThoroughness: config?.defaultThoroughness ?? "medium",
@@ -13330,11 +13345,13 @@ var ProjectManagerAgent = (config) => ({
13330
13345
  - Create, update, and transition issues
13331
13346
  - Add comments and manage watchers
13332
13347
  - List projects and issue types
13348
+ - List, upload, download, and delete attachments on issues
13333
13349
 
13334
13350
  ### Confluence
13335
13351
  - Search for documentation
13336
13352
  - Create and update pages
13337
13353
  - Browse spaces and page hierarchies
13354
+ - List, upload, download, and delete attachments on pages
13338
13355
 
13339
13356
  ### Account & Identity
13340
13357
  - Check connected Jira account using \`atlassian__jira_get_current_user\`
@@ -13349,6 +13366,7 @@ var ProjectManagerAgent = (config) => ({
13349
13366
  5. Always confirm destructive operations (delete) with the user before proceeding
13350
13367
  6. When asked about the connected Atlassian account call BOTH \`atlassian__jira_get_current_user\` and \`atlassian__confluence_get_current_user\` to show the full picture. Present results clearly labeled by product, and note if either service is not connected. NEVER say you don't have access to account information \u2014 you DO have these tools.
13351
13368
  7. When asked specifically about "Jira account" or "Confluence account" only, use the respective tool alone.
13369
+ 8. When asked about attachments, ALWAYS use the attachment tools \u2014 never guess or fabricate attachment details. For uploading files shared in Slack, pass the \`fabFileId\` from the message context to \`atlassian__jira_upload_attachment\` or \`atlassian__confluence_upload_attachment\`.
13352
13370
 
13353
13371
  ## Output Format
13354
13372
  Provide a clear summary of actions taken:
@@ -13364,6 +13382,7 @@ var GithubManagerAgent = (config) => ({
13364
13382
  name: "github_manager",
13365
13383
  description: "GitHub operations (issues, pull requests, code search, branches, workflows, reviews). ALWAYS delegate GitHub requests to this agent \u2014 you do not have direct access to these tools",
13366
13384
  model: config?.model ?? ChatModels.CLAUDE_4_6_SONNET_BEDROCK,
13385
+ fallbackModels: [ChatModels.GPT4_1, ChatModels.GPT4_1_MINI],
13367
13386
  defaultThoroughness: config?.defaultThoroughness ?? "medium",
13368
13387
  maxIterations: { quick: 3, medium: 8, very_thorough: 15 },
13369
13388
  allowedTools: [...config?.extraAllowedTools ?? []],
@@ -15885,9 +15904,6 @@ var ServerLlmBackend = class {
15885
15904
  });
15886
15905
  });
15887
15906
  }
15888
- pushToolMessages(_messages, _tool, _result) {
15889
- throw new Error("ServerLlmBackend does not support pushToolMessages \u2014 tools are executed server-side");
15890
- }
15891
15907
  /**
15892
15908
  * Get available models from server
15893
15909
  * Fetches from /api/models and filters for CLI-compatible models
@@ -16107,9 +16123,6 @@ var WebSocketLlmBackend = class {
16107
16123
  });
16108
16124
  });
16109
16125
  }
16110
- pushToolMessages(_messages, _tool, _result) {
16111
- throw new Error("WebSocketLlmBackend does not support pushToolMessages \u2014 tools are executed server-side");
16112
- }
16113
16126
  /**
16114
16127
  * Get available models from server (REST call, not streaming).
16115
16128
  * Delegates to ApiClient -- same as ServerLlmBackend.
@@ -17158,7 +17171,7 @@ var MODEL_ALIASES = {
17158
17171
  "claude-4.1-opus": ChatModels.CLAUDE_4_1_OPUS,
17159
17172
  "claude-3.7-sonnet": ChatModels.CLAUDE_3_7_SONNET_ANTHROPIC,
17160
17173
  "claude-3.5-sonnet": ChatModels.CLAUDE_3_5_SONNET_ANTHROPIC,
17161
- "claude-3.5-haiku": ChatModels.CLAUDE_3_5_HAIKU_ANTHROPIC,
17174
+ "claude-3.5-haiku": ChatModels.CLAUDE_4_5_HAIKU,
17162
17175
  "claude-3-opus": ChatModels.CLAUDE_3_OPUS,
17163
17176
  // ===================
17164
17177
  // OpenAI Models
@@ -17436,7 +17449,7 @@ var AgentStore = class {
17436
17449
  await fs13.mkdir(targetDir, { recursive: true });
17437
17450
  const template = `---
17438
17451
  description: ${name} agent description
17439
- model: ${ChatModels.CLAUDE_3_5_HAIKU_ANTHROPIC}
17452
+ model: ${ChatModels.CLAUDE_4_5_HAIKU}
17440
17453
  allowed-tools:
17441
17454
  - file_read
17442
17455
  - grep_search
@@ -3,7 +3,7 @@ import {
3
3
  fetchLatestVersion,
4
4
  forceCheckForUpdate,
5
5
  package_default
6
- } from "../chunk-UEBWSMWG.js";
6
+ } from "../chunk-HEUKY54H.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-VZRKTECL.js";
39
+ } from "../chunk-XIB66EG7.js";
40
40
  import "../chunk-BDQBOLYG.js";
41
- import "../chunk-IG2XD7EO.js";
41
+ import "../chunk-NJQYWIDJ.js";
42
42
  import "../chunk-GQGOWACU.js";
43
- import "../chunk-YK643YJM.js";
44
- import "../chunk-Q6LSPKZF.js";
45
- import "../chunk-SLX2KTAZ.js";
43
+ import "../chunk-LJG44UT3.js";
44
+ import "../chunk-AOP6RYDY.js";
45
+ import "../chunk-5YLGNW2B.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-WVER5CH6.js";
52
- import "../chunk-63ROENM5.js";
51
+ } from "../chunk-H7RVLAQD.js";
52
+ import "../chunk-EY65E4W4.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-WVER5CH6.js";
5
- import "../chunk-63ROENM5.js";
4
+ } from "../chunk-H7RVLAQD.js";
5
+ import "../chunk-EY65E4W4.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-UEBWSMWG.js";
5
+ } from "../chunk-HEUKY54H.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-Q6LSPKZF.js";
6
- import "./chunk-SLX2KTAZ.js";
5
+ } from "./chunk-AOP6RYDY.js";
6
+ import "./chunk-5YLGNW2B.js";
7
7
  import "./chunk-PFBYGCOW.js";
8
- import "./chunk-63ROENM5.js";
8
+ import "./chunk-EY65E4W4.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-VZRKTECL.js";
49
+ } from "./chunk-XIB66EG7.js";
50
50
  import "./chunk-BDQBOLYG.js";
51
- import "./chunk-IG2XD7EO.js";
51
+ import "./chunk-NJQYWIDJ.js";
52
52
  import "./chunk-GQGOWACU.js";
53
- import "./chunk-YK643YJM.js";
54
- import "./chunk-Q6LSPKZF.js";
55
- import "./chunk-SLX2KTAZ.js";
53
+ import "./chunk-LJG44UT3.js";
54
+ import "./chunk-AOP6RYDY.js";
55
+ import "./chunk-5YLGNW2B.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-WVER5CH6.js";
61
+ } from "./chunk-H7RVLAQD.js";
62
62
  import {
63
63
  checkForUpdate,
64
64
  package_default
65
- } from "./chunk-UEBWSMWG.js";
65
+ } from "./chunk-HEUKY54H.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-63ROENM5.js";
73
+ } from "./chunk-EY65E4W4.js";
74
74
  import "./chunk-4BIBE3J7.js";
75
75
 
76
76
  // src/index.tsx
@@ -2454,9 +2454,6 @@ Please acknowledge these background agent results and incorporate them into your
2454
2454
  }
2455
2455
  return this.inner.complete(model, effectiveMessages, options, callback);
2456
2456
  }
2457
- pushToolMessages(messages, tool, result) {
2458
- return this.inner.pushToolMessages(messages, tool, result);
2459
- }
2460
2457
  async getModelInfo() {
2461
2458
  return this.inner.getModelInfo();
2462
2459
  }
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  CurationArtifactType
4
- } from "./chunk-63ROENM5.js";
4
+ } from "./chunk-EY65E4W4.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-63ROENM5.js";
4
+ } from "./chunk-EY65E4W4.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-IG2XD7EO.js";
6
- import "./chunk-SLX2KTAZ.js";
5
+ } from "./chunk-NJQYWIDJ.js";
6
+ import "./chunk-5YLGNW2B.js";
7
7
  import "./chunk-PFBYGCOW.js";
8
- import "./chunk-63ROENM5.js";
8
+ import "./chunk-EY65E4W4.js";
9
9
  export {
10
10
  findMostSimilarMemento,
11
11
  getRelevantMementos
@@ -139,7 +139,7 @@ import {
139
139
  validateUrlForFetch,
140
140
  warmUpSettingsCache,
141
141
  withRetry
142
- } from "./chunk-SLX2KTAZ.js";
142
+ } from "./chunk-5YLGNW2B.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-63ROENM5.js";
155
+ } from "./chunk-EY65E4W4.js";
156
156
  export {
157
157
  AIVideoService,
158
158
  AWSBackend,
@@ -457,7 +457,7 @@ import {
457
457
  validateReactArtifactV2,
458
458
  validateSvgArtifactV2,
459
459
  wikiMarkupToAdf
460
- } from "./chunk-63ROENM5.js";
460
+ } from "./chunk-EY65E4W4.js";
461
461
  export {
462
462
  ALL_IMAGE_MODELS,
463
463
  ALL_IMAGE_SIZES,
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  SubtractCreditsSchema,
4
4
  subtractCredits
5
- } from "./chunk-YK643YJM.js";
6
- import "./chunk-SLX2KTAZ.js";
5
+ } from "./chunk-LJG44UT3.js";
6
+ import "./chunk-5YLGNW2B.js";
7
7
  import "./chunk-PFBYGCOW.js";
8
- import "./chunk-63ROENM5.js";
8
+ import "./chunk-EY65E4W4.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.36-propagate-thinking-option-to-agents.20068+a9be74566",
3
+ "version": "0.2.36",
4
4
  "type": "module",
5
5
  "description": "Interactive CLI tool for Bike4Mind with ReAct agents",
6
6
  "license": "UNLICENSED",
@@ -111,10 +111,10 @@
111
111
  },
112
112
  "devDependencies": {
113
113
  "@bike4mind/agents": "0.1.0",
114
- "@bike4mind/common": "2.57.1-propagate-thinking-option-to-agents.20068+a9be74566",
115
- "@bike4mind/mcp": "1.32.5-propagate-thinking-option-to-agents.20068+a9be74566",
116
- "@bike4mind/services": "2.54.1-propagate-thinking-option-to-agents.20068+a9be74566",
117
- "@bike4mind/utils": "2.10.1-propagate-thinking-option-to-agents.20068+a9be74566",
114
+ "@bike4mind/common": "2.58.0",
115
+ "@bike4mind/mcp": "1.32.5",
116
+ "@bike4mind/services": "2.54.1",
117
+ "@bike4mind/utils": "2.11.0",
118
118
  "@types/better-sqlite3": "^7.6.13",
119
119
  "@types/diff": "^5.0.9",
120
120
  "@types/jsonwebtoken": "^9.0.4",
@@ -135,5 +135,5 @@
135
135
  "optionalDependencies": {
136
136
  "@vscode/ripgrep": "^1.17.0"
137
137
  },
138
- "gitHead": "a9be74566f9c672ccd104890ca6f81ec9537f883"
138
+ "gitHead": "06f1ccd1ed28502c0fd1de725763584658e9c014"
139
139
  }