@bike4mind/cli 0.2.11-feat-api-key-rate-limiting.17313 → 0.2.11-feat-cli-no-project-config-flag.17320
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.
- package/bin/bike4mind-cli.mjs +9 -1
- package/dist/{artifactExtractor-BORBLP7A.js → artifactExtractor-3KB44W7B.js} +1 -1
- package/dist/{chunk-S42YW3EI.js → chunk-3OX632TE.js} +3 -11
- package/dist/{chunk-X5H7N2CY.js → chunk-7JR6VASX.js} +2 -2
- package/dist/{chunk-7TW7K6CW.js → chunk-7ORA6KGN.js} +2 -18
- package/dist/{chunk-Y5NGQESV.js → chunk-HPYQM2B7.js} +2 -2
- package/dist/{chunk-BBQI2EAJ.js → chunk-JYH72REB.js} +24 -5
- package/dist/{create-SVWYWOLQ.js → create-MSSVWSVO.js} +3 -3
- package/dist/index.js +105 -77
- package/dist/{llmMarkdownGenerator-LS3QLJSO.js → llmMarkdownGenerator-LCCZ76BQ.js} +1 -1
- package/dist/{markdownGenerator-VABUPFUQ.js → markdownGenerator-4OF7GEBT.js} +1 -1
- package/dist/{mementoService-5OJIK55M.js → mementoService-A6UR5AZY.js} +3 -3
- package/dist/{src-7B5ZU7YS.js → src-7UYCXFTE.js} +1 -3
- package/dist/{src-A2VWZOJV.js → src-GFWGZLJE.js} +2 -2
- package/dist/{subtractCredits-UO2UFWAC.js → subtractCredits-L52DZ3SP.js} +3 -3
- package/package.json +6 -6
package/bin/bike4mind-cli.mjs
CHANGED
|
@@ -36,16 +36,24 @@ const argv = yargs(hideBin(process.argv))
|
|
|
36
36
|
description: 'Show debug logs in console',
|
|
37
37
|
default: false,
|
|
38
38
|
})
|
|
39
|
+
.option('no-project-config', {
|
|
40
|
+
type: 'boolean',
|
|
41
|
+
description: 'Disable loading project-specific configuration (.bike4mind/)',
|
|
42
|
+
default: false,
|
|
43
|
+
})
|
|
39
44
|
.help()
|
|
40
45
|
.alias('help', 'h')
|
|
41
46
|
.version()
|
|
42
47
|
.alias('version', 'V')
|
|
43
48
|
.parse();
|
|
44
49
|
|
|
45
|
-
// Set environment
|
|
50
|
+
// Set environment variables from CLI flags
|
|
46
51
|
if (argv.verbose) {
|
|
47
52
|
process.env.B4M_VERBOSE = '1';
|
|
48
53
|
}
|
|
54
|
+
if (argv['no-project-config']) {
|
|
55
|
+
process.env.B4M_NO_PROJECT_CONFIG = '1';
|
|
56
|
+
}
|
|
49
57
|
|
|
50
58
|
// Auto-detect environment: prefer production mode when dist exists
|
|
51
59
|
const distPath = join(__dirname, '../dist/index.js');
|
|
@@ -672,14 +672,6 @@ var RealtimeVoiceUsageTransaction = BaseCreditTransaction.extend({
|
|
|
672
672
|
model: z7.string(),
|
|
673
673
|
sessionId: z7.string()
|
|
674
674
|
});
|
|
675
|
-
var CompletionApiUsageTransaction = BaseCreditTransaction.extend({
|
|
676
|
-
type: z7.literal("completion_api_usage"),
|
|
677
|
-
model: z7.string(),
|
|
678
|
-
apiKeyId: z7.string().optional(),
|
|
679
|
-
// Optional - present for API key auth, undefined for JWT
|
|
680
|
-
inputTokens: z7.number(),
|
|
681
|
-
outputTokens: z7.number()
|
|
682
|
-
});
|
|
683
675
|
var TransferCreditTransaction = BaseCreditTransaction.extend({
|
|
684
676
|
type: z7.literal("transfer_credit"),
|
|
685
677
|
recipientId: z7.string(),
|
|
@@ -694,7 +686,6 @@ var CreditTransaction = z7.discriminatedUnion("type", [
|
|
|
694
686
|
ImageGenerationUsageTransaction,
|
|
695
687
|
ImageEditUsageTransaction,
|
|
696
688
|
RealtimeVoiceUsageTransaction,
|
|
697
|
-
CompletionApiUsageTransaction,
|
|
698
689
|
TransferCreditTransaction,
|
|
699
690
|
ReceivedCreditTransaction
|
|
700
691
|
]);
|
|
@@ -709,7 +700,6 @@ var CREDIT_DEDUCT_TRANSACTION_TYPES = [
|
|
|
709
700
|
"image_generation_usage",
|
|
710
701
|
"image_edit_usage",
|
|
711
702
|
"realtime_voice_usage",
|
|
712
|
-
"completion_api_usage",
|
|
713
703
|
"transfer_credit",
|
|
714
704
|
"generic_deduct"
|
|
715
705
|
];
|
|
@@ -5911,6 +5901,9 @@ function buildSSEEvent(text, info) {
|
|
|
5911
5901
|
outputTokens: info.outputTokens
|
|
5912
5902
|
};
|
|
5913
5903
|
}
|
|
5904
|
+
if (info?.thinking && info.thinking.length > 0) {
|
|
5905
|
+
event.thinking = info.thinking;
|
|
5906
|
+
}
|
|
5914
5907
|
return event;
|
|
5915
5908
|
}
|
|
5916
5909
|
function formatSSEError(error) {
|
|
@@ -6008,7 +6001,6 @@ export {
|
|
|
6008
6001
|
ImageGenerationUsageTransaction,
|
|
6009
6002
|
ImageEditUsageTransaction,
|
|
6010
6003
|
RealtimeVoiceUsageTransaction,
|
|
6011
|
-
CompletionApiUsageTransaction,
|
|
6012
6004
|
TransferCreditTransaction,
|
|
6013
6005
|
CreditTransaction,
|
|
6014
6006
|
CREDIT_ADD_TRANSACTION_TYPES,
|
|
@@ -6,12 +6,12 @@ import {
|
|
|
6
6
|
getSettingsByNames,
|
|
7
7
|
obfuscateApiKey,
|
|
8
8
|
secureParameters
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-JYH72REB.js";
|
|
10
10
|
import {
|
|
11
11
|
ApiKeyType,
|
|
12
12
|
MementoTier,
|
|
13
13
|
isSupportedEmbeddingModel
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-3OX632TE.js";
|
|
15
15
|
|
|
16
16
|
// ../../b4m-core/packages/services/dist/src/apiKeyService/get.js
|
|
17
17
|
import { z } from "zod";
|
|
@@ -2,16 +2,15 @@
|
|
|
2
2
|
import {
|
|
3
3
|
BadRequestError,
|
|
4
4
|
secureParameters
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-JYH72REB.js";
|
|
6
6
|
import {
|
|
7
|
-
CompletionApiUsageTransaction,
|
|
8
7
|
GenericCreditDeductTransaction,
|
|
9
8
|
ImageEditUsageTransaction,
|
|
10
9
|
ImageGenerationUsageTransaction,
|
|
11
10
|
RealtimeVoiceUsageTransaction,
|
|
12
11
|
TextGenerationUsageTransaction,
|
|
13
12
|
TransferCreditTransaction
|
|
14
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-3OX632TE.js";
|
|
15
14
|
|
|
16
15
|
// ../../b4m-core/packages/services/dist/src/creditService/subtractCredits.js
|
|
17
16
|
import { z } from "zod";
|
|
@@ -21,7 +20,6 @@ var SubtractCreditsSchema = z.discriminatedUnion("type", [
|
|
|
21
20
|
ImageGenerationUsageTransaction.omit({ createdAt: true, updatedAt: true }),
|
|
22
21
|
RealtimeVoiceUsageTransaction.omit({ createdAt: true, updatedAt: true }),
|
|
23
22
|
ImageEditUsageTransaction.omit({ createdAt: true, updatedAt: true }),
|
|
24
|
-
CompletionApiUsageTransaction.omit({ createdAt: true, updatedAt: true }),
|
|
25
23
|
TransferCreditTransaction.omit({ createdAt: true, updatedAt: true })
|
|
26
24
|
]);
|
|
27
25
|
async function subtractCredits(parameters, { db, creditHolderMethods, skipBalanceUpdate, currentCreditHolder }) {
|
|
@@ -65,20 +63,6 @@ async function subtractCredits(parameters, { db, creditHolderMethods, skipBalanc
|
|
|
65
63
|
inputTokens: params.inputTokens,
|
|
66
64
|
outputTokens: params.outputTokens
|
|
67
65
|
});
|
|
68
|
-
} else if (type === "completion_api_usage") {
|
|
69
|
-
await db.creditTransactions.createTransaction("completion_api_usage", {
|
|
70
|
-
ownerId,
|
|
71
|
-
ownerType,
|
|
72
|
-
credits: -Math.abs(credits),
|
|
73
|
-
// Negative for usage
|
|
74
|
-
description: description || "Completion API usage",
|
|
75
|
-
metadata,
|
|
76
|
-
model: params.model,
|
|
77
|
-
apiKeyId: params.apiKeyId,
|
|
78
|
-
// Optional - present for API key auth, undefined for JWT
|
|
79
|
-
inputTokens: params.inputTokens,
|
|
80
|
-
outputTokens: params.outputTokens
|
|
81
|
-
});
|
|
82
66
|
} else if (type === "image_generation_usage") {
|
|
83
67
|
await db.creditTransactions.createTransaction("image_generation_usage", {
|
|
84
68
|
ownerId,
|
|
@@ -7,11 +7,11 @@ import {
|
|
|
7
7
|
getSettingsMap,
|
|
8
8
|
getSettingsValue,
|
|
9
9
|
secureParameters
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-JYH72REB.js";
|
|
11
11
|
import {
|
|
12
12
|
KnowledgeType,
|
|
13
13
|
SupportedFabFileMimeTypes
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-3OX632TE.js";
|
|
15
15
|
|
|
16
16
|
// ../../b4m-core/packages/services/dist/src/fabFileService/create.js
|
|
17
17
|
import { z } from "zod";
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
dayjsConfig_default,
|
|
17
17
|
extractSnippetMeta,
|
|
18
18
|
settingsMap
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-3OX632TE.js";
|
|
20
20
|
|
|
21
21
|
// ../../b4m-core/packages/utils/dist/src/storage/S3Storage.js
|
|
22
22
|
import { S3Client, PutObjectCommand, DeleteObjectCommand, GetObjectCommand, HeadObjectCommand } from "@aws-sdk/client-s3";
|
|
@@ -249,6 +249,17 @@ var AnthropicBackend = class {
|
|
|
249
249
|
this._api = new Anthropic({ apiKey });
|
|
250
250
|
this.logger = logger ?? new Logger();
|
|
251
251
|
}
|
|
252
|
+
/**
|
|
253
|
+
* Get thinking blocks from the last assistant content.
|
|
254
|
+
* Filters to only include thinking/redacted_thinking blocks.
|
|
255
|
+
* Returns undefined if thinking is disabled or no blocks are present.
|
|
256
|
+
*/
|
|
257
|
+
getThinkingBlocks() {
|
|
258
|
+
if (!this.isThinkingEnabled)
|
|
259
|
+
return void 0;
|
|
260
|
+
const blocks = this.lastAssistantContent.filter((block) => block?.type === "thinking" || block?.type === "redacted_thinking");
|
|
261
|
+
return blocks.length > 0 ? blocks : void 0;
|
|
262
|
+
}
|
|
252
263
|
async getModelInfo() {
|
|
253
264
|
return [
|
|
254
265
|
{
|
|
@@ -701,8 +712,12 @@ var AnthropicBackend = class {
|
|
|
701
712
|
this.logger.debug(`[Tool Execution] Last few messages:`, JSON.stringify(messages.slice(-3), null, 2));
|
|
702
713
|
await this.complete(model, messages, options, cb, toolsUsed);
|
|
703
714
|
} else {
|
|
704
|
-
|
|
705
|
-
|
|
715
|
+
const thinkingBlocks = this.getThinkingBlocks();
|
|
716
|
+
this.logger.debug(`[Tool Execution] executeTools=false, passing tool calls to callback with ${thinkingBlocks?.length || 0} thinking blocks`);
|
|
717
|
+
await cb([null], {
|
|
718
|
+
toolsUsed,
|
|
719
|
+
thinking: thinkingBlocks
|
|
720
|
+
});
|
|
706
721
|
}
|
|
707
722
|
return;
|
|
708
723
|
}
|
|
@@ -774,8 +789,12 @@ var AnthropicBackend = class {
|
|
|
774
789
|
await this.complete(model, messages, { ...options, tools: void 0, _internal: void 0 }, cb, toolsUsed);
|
|
775
790
|
}
|
|
776
791
|
} else {
|
|
777
|
-
|
|
778
|
-
|
|
792
|
+
const thinkingBlocks = this.getThinkingBlocks();
|
|
793
|
+
this.logger.debug(`[Tool Execution] executeTools=false, passing tool calls to callback with ${thinkingBlocks?.length || 0} thinking blocks`);
|
|
794
|
+
await cb([null], {
|
|
795
|
+
toolsUsed,
|
|
796
|
+
thinking: thinkingBlocks
|
|
797
|
+
});
|
|
779
798
|
}
|
|
780
799
|
return;
|
|
781
800
|
}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import {
|
|
3
3
|
createFabFile,
|
|
4
4
|
createFabFileSchema
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-HPYQM2B7.js";
|
|
6
|
+
import "./chunk-JYH72REB.js";
|
|
7
7
|
import "./chunk-AMDXHL6S.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-3OX632TE.js";
|
|
9
9
|
import "./chunk-PDX44BCA.js";
|
|
10
10
|
export {
|
|
11
11
|
createFabFile,
|
package/dist/index.js
CHANGED
|
@@ -4,9 +4,9 @@ import {
|
|
|
4
4
|
getEffectiveApiKey,
|
|
5
5
|
getOpenWeatherKey,
|
|
6
6
|
getSerperKey
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-7JR6VASX.js";
|
|
8
|
+
import "./chunk-7ORA6KGN.js";
|
|
9
|
+
import "./chunk-HPYQM2B7.js";
|
|
10
10
|
import {
|
|
11
11
|
BFLImageService,
|
|
12
12
|
BaseStorage,
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
OpenAIBackend,
|
|
16
16
|
OpenAIImageService,
|
|
17
17
|
XAIImageService
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-JYH72REB.js";
|
|
19
19
|
import {
|
|
20
20
|
Logger
|
|
21
21
|
} from "./chunk-AMDXHL6S.js";
|
|
@@ -73,7 +73,7 @@ import {
|
|
|
73
73
|
XAI_IMAGE_MODELS,
|
|
74
74
|
b4mLLMTools,
|
|
75
75
|
getMcpProviderMetadata
|
|
76
|
-
} from "./chunk-
|
|
76
|
+
} from "./chunk-3OX632TE.js";
|
|
77
77
|
import {
|
|
78
78
|
__require
|
|
79
79
|
} from "./chunk-PDX44BCA.js";
|
|
@@ -107,7 +107,8 @@ function CustomTextInput({
|
|
|
107
107
|
onChange,
|
|
108
108
|
onSubmit,
|
|
109
109
|
placeholder = "",
|
|
110
|
-
showCursor = true
|
|
110
|
+
showCursor = true,
|
|
111
|
+
disabled = false
|
|
111
112
|
}) {
|
|
112
113
|
const [cursorOffset, setCursorOffset] = useState(value.length);
|
|
113
114
|
useInput(
|
|
@@ -188,7 +189,7 @@ function CustomTextInput({
|
|
|
188
189
|
setCursorOffset(cursorOffset + 1);
|
|
189
190
|
}
|
|
190
191
|
},
|
|
191
|
-
{ isActive:
|
|
192
|
+
{ isActive: !disabled }
|
|
192
193
|
);
|
|
193
194
|
const hasValue = value.length > 0;
|
|
194
195
|
if (!hasValue) {
|
|
@@ -827,56 +828,59 @@ function InputPrompt({
|
|
|
827
828
|
useEffect(() => {
|
|
828
829
|
setFileSelectedIndex(0);
|
|
829
830
|
}, [filteredFiles]);
|
|
830
|
-
useInput2(
|
|
831
|
-
|
|
832
|
-
if (
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
831
|
+
useInput2(
|
|
832
|
+
(_input, key) => {
|
|
833
|
+
if (fileAutocomplete?.active && filteredFiles.length > 0) {
|
|
834
|
+
if (key.upArrow) {
|
|
835
|
+
setFileSelectedIndex((prev) => prev > 0 ? prev - 1 : filteredFiles.length - 1);
|
|
836
|
+
return;
|
|
837
|
+
} else if (key.downArrow) {
|
|
838
|
+
setFileSelectedIndex((prev) => prev < filteredFiles.length - 1 ? prev + 1 : 0);
|
|
839
|
+
return;
|
|
840
|
+
} else if (key.tab) {
|
|
841
|
+
const selectedFile = filteredFiles[fileSelectedIndex];
|
|
842
|
+
if (selectedFile) {
|
|
843
|
+
insertSelectedFile(selectedFile);
|
|
844
|
+
}
|
|
845
|
+
return;
|
|
846
|
+
} else if (key.escape) {
|
|
847
|
+
setFileAutocomplete(null);
|
|
848
|
+
return;
|
|
842
849
|
}
|
|
843
|
-
return;
|
|
844
|
-
} else if (key.escape) {
|
|
845
|
-
setFileAutocomplete(null);
|
|
846
|
-
return;
|
|
847
|
-
}
|
|
848
|
-
}
|
|
849
|
-
if (shouldShowCommandAutocomplete && filteredCommands.length > 0) {
|
|
850
|
-
if (key.upArrow) {
|
|
851
|
-
setSelectedIndex((prev) => prev > 0 ? prev - 1 : filteredCommands.length - 1);
|
|
852
|
-
} else if (key.downArrow) {
|
|
853
|
-
setSelectedIndex((prev) => prev < filteredCommands.length - 1 ? prev + 1 : 0);
|
|
854
850
|
}
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
setTempInput(value);
|
|
861
|
-
setHistoryIndex(0);
|
|
862
|
-
setValue(history[0]);
|
|
863
|
-
} else if (historyIndex < history.length - 1) {
|
|
864
|
-
const newIndex = historyIndex + 1;
|
|
865
|
-
setHistoryIndex(newIndex);
|
|
866
|
-
setValue(history[newIndex]);
|
|
851
|
+
if (shouldShowCommandAutocomplete && filteredCommands.length > 0) {
|
|
852
|
+
if (key.upArrow) {
|
|
853
|
+
setSelectedIndex((prev) => prev > 0 ? prev - 1 : filteredCommands.length - 1);
|
|
854
|
+
} else if (key.downArrow) {
|
|
855
|
+
setSelectedIndex((prev) => prev < filteredCommands.length - 1 ? prev + 1 : 0);
|
|
867
856
|
}
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
857
|
+
return;
|
|
858
|
+
}
|
|
859
|
+
if (!shouldShowCommandAutocomplete && !fileAutocomplete?.active && history.length > 0) {
|
|
860
|
+
if (key.upArrow) {
|
|
861
|
+
if (historyIndex === -1) {
|
|
862
|
+
setTempInput(value);
|
|
863
|
+
setHistoryIndex(0);
|
|
864
|
+
setValue(history[0]);
|
|
865
|
+
} else if (historyIndex < history.length - 1) {
|
|
866
|
+
const newIndex = historyIndex + 1;
|
|
867
|
+
setHistoryIndex(newIndex);
|
|
868
|
+
setValue(history[newIndex]);
|
|
869
|
+
}
|
|
870
|
+
} else if (key.downArrow) {
|
|
871
|
+
if (historyIndex > 0) {
|
|
872
|
+
const newIndex = historyIndex - 1;
|
|
873
|
+
setHistoryIndex(newIndex);
|
|
874
|
+
setValue(history[newIndex]);
|
|
875
|
+
} else if (historyIndex === 0) {
|
|
876
|
+
setHistoryIndex(-1);
|
|
877
|
+
setValue(tempInput);
|
|
878
|
+
}
|
|
876
879
|
}
|
|
877
880
|
}
|
|
878
|
-
}
|
|
879
|
-
|
|
881
|
+
},
|
|
882
|
+
{ isActive: !disabled }
|
|
883
|
+
);
|
|
880
884
|
const insertSelectedFile = (file) => {
|
|
881
885
|
if (!fileAutocomplete) return;
|
|
882
886
|
const beforeAt = value.slice(0, fileAutocomplete.startIndex);
|
|
@@ -970,7 +974,8 @@ function InputPrompt({
|
|
|
970
974
|
onChange: handleChange,
|
|
971
975
|
onSubmit: handleSubmit,
|
|
972
976
|
placeholder: getPlaceholder(),
|
|
973
|
-
showCursor: !disabled
|
|
977
|
+
showCursor: !disabled,
|
|
978
|
+
disabled
|
|
974
979
|
}
|
|
975
980
|
)), shouldShowCommandAutocomplete && /* @__PURE__ */ React5.createElement(CommandAutocomplete, { commands: filteredCommands, selectedIndex }), fileAutocomplete?.active && /* @__PURE__ */ React5.createElement(FileAutocomplete, { files: filteredFiles, selectedIndex: fileSelectedIndex, query: fileAutocomplete.query }));
|
|
976
981
|
}
|
|
@@ -1538,7 +1543,7 @@ ${errorBlock}`;
|
|
|
1538
1543
|
onSubmit: handleSubmit,
|
|
1539
1544
|
onBashCommand,
|
|
1540
1545
|
onImageDetected,
|
|
1541
|
-
disabled: isThinking,
|
|
1546
|
+
disabled: isThinking || !!permissionPrompt,
|
|
1542
1547
|
history: commandHistory,
|
|
1543
1548
|
commands,
|
|
1544
1549
|
prefillInput,
|
|
@@ -2376,15 +2381,19 @@ var ConfigStore = class {
|
|
|
2376
2381
|
throw error;
|
|
2377
2382
|
}
|
|
2378
2383
|
}
|
|
2379
|
-
this.projectConfigDir = findProjectConfigDir();
|
|
2380
2384
|
let projectConfig = null;
|
|
2381
2385
|
let projectLocalConfig = null;
|
|
2382
|
-
if (
|
|
2383
|
-
|
|
2384
|
-
|
|
2385
|
-
|
|
2386
|
-
|
|
2386
|
+
if (process.env.B4M_NO_PROJECT_CONFIG !== "1") {
|
|
2387
|
+
this.projectConfigDir = findProjectConfigDir();
|
|
2388
|
+
if (this.projectConfigDir) {
|
|
2389
|
+
projectConfig = await loadProjectConfig(this.projectConfigDir);
|
|
2390
|
+
projectLocalConfig = await loadProjectLocalConfig(this.projectConfigDir);
|
|
2391
|
+
if (projectConfig) {
|
|
2392
|
+
console.log(`\u{1F4C1} Project config loaded from: ${this.projectConfigDir}/.bike4mind/`);
|
|
2393
|
+
}
|
|
2387
2394
|
}
|
|
2395
|
+
} else {
|
|
2396
|
+
this.projectConfigDir = null;
|
|
2388
2397
|
}
|
|
2389
2398
|
this.config = mergeConfigs(globalConfig, projectConfig, projectLocalConfig);
|
|
2390
2399
|
return this.config;
|
|
@@ -3144,6 +3153,7 @@ ${options.context}` : this.getSystemPrompt()
|
|
|
3144
3153
|
}
|
|
3145
3154
|
if (completionInfo.toolsUsed && completionInfo.toolsUsed.length > 0) {
|
|
3146
3155
|
hadToolCalls = true;
|
|
3156
|
+
const thinkingBlocks = completionInfo.thinking || [];
|
|
3147
3157
|
for (const toolUse of completionInfo.toolsUsed) {
|
|
3148
3158
|
const toolCallId = `${toolUse.name}_${JSON.stringify(toolUse.arguments)}`;
|
|
3149
3159
|
if (processedToolIds.has(toolCallId)) {
|
|
@@ -3176,16 +3186,23 @@ ${options.context}` : this.getSystemPrompt()
|
|
|
3176
3186
|
const params = typeof toolUse.arguments === "string" ? JSON.parse(toolUse.arguments) : toolUse.arguments;
|
|
3177
3187
|
observation = await tool.toolFn(params);
|
|
3178
3188
|
const toolCallId2 = `${toolUse.name}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
3189
|
+
const assistantContent = [
|
|
3190
|
+
// Include thinking blocks first (required by Anthropic when thinking is enabled)
|
|
3191
|
+
...thinkingBlocks,
|
|
3192
|
+
// Then the tool use
|
|
3193
|
+
{
|
|
3194
|
+
type: "tool_use",
|
|
3195
|
+
id: toolCallId2,
|
|
3196
|
+
name: toolUse.name,
|
|
3197
|
+
input: params
|
|
3198
|
+
}
|
|
3199
|
+
];
|
|
3200
|
+
this.context.logger.debug(
|
|
3201
|
+
`[assistantContent] ${assistantContent.length} blocks (${thinkingBlocks.length} thinking, 1 tool_use)`
|
|
3202
|
+
);
|
|
3179
3203
|
messages.push({
|
|
3180
3204
|
role: "assistant",
|
|
3181
|
-
content:
|
|
3182
|
-
{
|
|
3183
|
-
type: "tool_use",
|
|
3184
|
-
id: toolCallId2,
|
|
3185
|
-
name: toolUse.name,
|
|
3186
|
-
input: params
|
|
3187
|
-
}
|
|
3188
|
-
]
|
|
3205
|
+
content: assistantContent
|
|
3189
3206
|
});
|
|
3190
3207
|
messages.push({
|
|
3191
3208
|
role: "user",
|
|
@@ -11134,6 +11151,7 @@ var ServerLlmBackend = class {
|
|
|
11134
11151
|
let accumulatedText = "";
|
|
11135
11152
|
let lastUsageInfo = {};
|
|
11136
11153
|
let toolsUsed = [];
|
|
11154
|
+
let thinkingBlocks = [];
|
|
11137
11155
|
let receivedDone = false;
|
|
11138
11156
|
const parser = createParser({
|
|
11139
11157
|
onEvent: (event) => {
|
|
@@ -11147,9 +11165,12 @@ var ServerLlmBackend = class {
|
|
|
11147
11165
|
if (toolsUsed.length > 0) {
|
|
11148
11166
|
const info = {
|
|
11149
11167
|
toolsUsed,
|
|
11168
|
+
thinking: thinkingBlocks.length > 0 ? thinkingBlocks : void 0,
|
|
11150
11169
|
...lastUsageInfo
|
|
11151
11170
|
};
|
|
11152
|
-
logger.debug(
|
|
11171
|
+
logger.debug(
|
|
11172
|
+
`[ServerLlmBackend] Calling callback with tools, thinking blocks: ${thinkingBlocks.length}`
|
|
11173
|
+
);
|
|
11153
11174
|
callback([cleanedText], info).catch((err) => {
|
|
11154
11175
|
logger.error("[ServerLlmBackend] Callback error:", err);
|
|
11155
11176
|
reject(err);
|
|
@@ -11205,6 +11226,10 @@ var ServerLlmBackend = class {
|
|
|
11205
11226
|
if (parsed.tools && parsed.tools.length > 0) {
|
|
11206
11227
|
toolsUsed = parsed.tools;
|
|
11207
11228
|
}
|
|
11229
|
+
if (parsed.thinking && parsed.thinking.length > 0) {
|
|
11230
|
+
thinkingBlocks = parsed.thinking;
|
|
11231
|
+
logger.debug(`[ServerLlmBackend] Received ${thinkingBlocks.length} thinking blocks`);
|
|
11232
|
+
}
|
|
11208
11233
|
if (parsed.usage) {
|
|
11209
11234
|
lastUsageInfo = {
|
|
11210
11235
|
inputTokens: parsed.usage.inputTokens,
|
|
@@ -11527,7 +11552,7 @@ import { isAxiosError as isAxiosError2 } from "axios";
|
|
|
11527
11552
|
// package.json
|
|
11528
11553
|
var package_default = {
|
|
11529
11554
|
name: "@bike4mind/cli",
|
|
11530
|
-
version: "0.2.11-feat-
|
|
11555
|
+
version: "0.2.11-feat-cli-no-project-config-flag.17320+1968df1c7",
|
|
11531
11556
|
type: "module",
|
|
11532
11557
|
description: "Interactive CLI tool for Bike4Mind with ReAct agents",
|
|
11533
11558
|
license: "UNLICENSED",
|
|
@@ -11631,10 +11656,10 @@ var package_default = {
|
|
|
11631
11656
|
},
|
|
11632
11657
|
devDependencies: {
|
|
11633
11658
|
"@bike4mind/agents": "0.1.0",
|
|
11634
|
-
"@bike4mind/common": "2.40.1-feat-
|
|
11635
|
-
"@bike4mind/mcp": "1.20.5-feat-
|
|
11636
|
-
"@bike4mind/services": "2.35.1-feat-
|
|
11637
|
-
"@bike4mind/utils": "2.1.5-feat-
|
|
11659
|
+
"@bike4mind/common": "2.40.1-feat-cli-no-project-config-flag.17320+1968df1c7",
|
|
11660
|
+
"@bike4mind/mcp": "1.20.5-feat-cli-no-project-config-flag.17320+1968df1c7",
|
|
11661
|
+
"@bike4mind/services": "2.35.1-feat-cli-no-project-config-flag.17320+1968df1c7",
|
|
11662
|
+
"@bike4mind/utils": "2.1.5-feat-cli-no-project-config-flag.17320+1968df1c7",
|
|
11638
11663
|
"@types/better-sqlite3": "^7.6.13",
|
|
11639
11664
|
"@types/diff": "^5.0.9",
|
|
11640
11665
|
"@types/jsonwebtoken": "^9.0.4",
|
|
@@ -11647,7 +11672,7 @@ var package_default = {
|
|
|
11647
11672
|
typescript: "^5.9.3",
|
|
11648
11673
|
vitest: "^3.2.4"
|
|
11649
11674
|
},
|
|
11650
|
-
gitHead: "
|
|
11675
|
+
gitHead: "1968df1c7e973aac79e48cd2e6dc1c418b4d47d7"
|
|
11651
11676
|
};
|
|
11652
11677
|
|
|
11653
11678
|
// src/config/constants.ts
|
|
@@ -12032,7 +12057,8 @@ function CliApp() {
|
|
|
12032
12057
|
permissionPrompt: null,
|
|
12033
12058
|
trustLocationSelector: null,
|
|
12034
12059
|
rewindSelector: null,
|
|
12035
|
-
sessionSelector: null
|
|
12060
|
+
sessionSelector: null,
|
|
12061
|
+
orchestrator: null
|
|
12036
12062
|
});
|
|
12037
12063
|
const [isInitialized, setIsInitialized] = useState8(false);
|
|
12038
12064
|
const [initError, setInitError] = useState8(null);
|
|
@@ -12378,8 +12404,10 @@ Remember: Use context from previous messages to understand follow-up questions.$
|
|
|
12378
12404
|
permissionManager,
|
|
12379
12405
|
config,
|
|
12380
12406
|
// Store config for synchronous access
|
|
12381
|
-
availableModels: models
|
|
12407
|
+
availableModels: models,
|
|
12382
12408
|
// Store models for ConfigEditor
|
|
12409
|
+
orchestrator
|
|
12410
|
+
// Store orchestrator for step handler updates
|
|
12383
12411
|
}));
|
|
12384
12412
|
setStoreSession(newSession);
|
|
12385
12413
|
setIsInitialized(true);
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import {
|
|
3
3
|
findMostSimilarMemento,
|
|
4
4
|
getRelevantMementos
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-7JR6VASX.js";
|
|
6
|
+
import "./chunk-JYH72REB.js";
|
|
7
7
|
import "./chunk-AMDXHL6S.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-3OX632TE.js";
|
|
9
9
|
import "./chunk-PDX44BCA.js";
|
|
10
10
|
export {
|
|
11
11
|
findMostSimilarMemento,
|
|
@@ -40,7 +40,6 @@ import {
|
|
|
40
40
|
CitableSourceSchema,
|
|
41
41
|
ClaudeArtifactMimeTypes,
|
|
42
42
|
CollectionType,
|
|
43
|
-
CompletionApiUsageTransaction,
|
|
44
43
|
CompletionRequestSchema,
|
|
45
44
|
ConfluenceApi,
|
|
46
45
|
CreateFabFileRequestInput,
|
|
@@ -294,7 +293,7 @@ import {
|
|
|
294
293
|
validateQuestMasterArtifactV2,
|
|
295
294
|
validateReactArtifactV2,
|
|
296
295
|
validateSvgArtifactV2
|
|
297
|
-
} from "./chunk-
|
|
296
|
+
} from "./chunk-3OX632TE.js";
|
|
298
297
|
import "./chunk-PDX44BCA.js";
|
|
299
298
|
export {
|
|
300
299
|
ALL_IMAGE_MODELS,
|
|
@@ -337,7 +336,6 @@ export {
|
|
|
337
336
|
CitableSourceSchema,
|
|
338
337
|
ClaudeArtifactMimeTypes,
|
|
339
338
|
CollectionType,
|
|
340
|
-
CompletionApiUsageTransaction,
|
|
341
339
|
CompletionRequestSchema,
|
|
342
340
|
ConfluenceApi,
|
|
343
341
|
CreateFabFileRequestInput,
|
|
@@ -120,7 +120,7 @@ import {
|
|
|
120
120
|
validateMermaidSyntax,
|
|
121
121
|
warmUpSettingsCache,
|
|
122
122
|
withRetry
|
|
123
|
-
} from "./chunk-
|
|
123
|
+
} from "./chunk-JYH72REB.js";
|
|
124
124
|
import {
|
|
125
125
|
Logger,
|
|
126
126
|
NotificationDeduplicator,
|
|
@@ -129,7 +129,7 @@ import {
|
|
|
129
129
|
postLowCreditsNotificationToSlack,
|
|
130
130
|
postMessageToSlack
|
|
131
131
|
} from "./chunk-AMDXHL6S.js";
|
|
132
|
-
import "./chunk-
|
|
132
|
+
import "./chunk-3OX632TE.js";
|
|
133
133
|
import "./chunk-PDX44BCA.js";
|
|
134
134
|
export {
|
|
135
135
|
AWSBackend,
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import {
|
|
3
3
|
SubtractCreditsSchema,
|
|
4
4
|
subtractCredits
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-7ORA6KGN.js";
|
|
6
|
+
import "./chunk-JYH72REB.js";
|
|
7
7
|
import "./chunk-AMDXHL6S.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-3OX632TE.js";
|
|
9
9
|
import "./chunk-PDX44BCA.js";
|
|
10
10
|
export {
|
|
11
11
|
SubtractCreditsSchema,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bike4mind/cli",
|
|
3
|
-
"version": "0.2.11-feat-
|
|
3
|
+
"version": "0.2.11-feat-cli-no-project-config-flag.17320+1968df1c7",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Interactive CLI tool for Bike4Mind with ReAct agents",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -104,10 +104,10 @@
|
|
|
104
104
|
},
|
|
105
105
|
"devDependencies": {
|
|
106
106
|
"@bike4mind/agents": "0.1.0",
|
|
107
|
-
"@bike4mind/common": "2.40.1-feat-
|
|
108
|
-
"@bike4mind/mcp": "1.20.5-feat-
|
|
109
|
-
"@bike4mind/services": "2.35.1-feat-
|
|
110
|
-
"@bike4mind/utils": "2.1.5-feat-
|
|
107
|
+
"@bike4mind/common": "2.40.1-feat-cli-no-project-config-flag.17320+1968df1c7",
|
|
108
|
+
"@bike4mind/mcp": "1.20.5-feat-cli-no-project-config-flag.17320+1968df1c7",
|
|
109
|
+
"@bike4mind/services": "2.35.1-feat-cli-no-project-config-flag.17320+1968df1c7",
|
|
110
|
+
"@bike4mind/utils": "2.1.5-feat-cli-no-project-config-flag.17320+1968df1c7",
|
|
111
111
|
"@types/better-sqlite3": "^7.6.13",
|
|
112
112
|
"@types/diff": "^5.0.9",
|
|
113
113
|
"@types/jsonwebtoken": "^9.0.4",
|
|
@@ -120,5 +120,5 @@
|
|
|
120
120
|
"typescript": "^5.9.3",
|
|
121
121
|
"vitest": "^3.2.4"
|
|
122
122
|
},
|
|
123
|
-
"gitHead": "
|
|
123
|
+
"gitHead": "1968df1c7e973aac79e48cd2e6dc1c418b4d47d7"
|
|
124
124
|
}
|