@bike4mind/cli 0.10.1 → 0.10.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.
- package/dist/{ConfigStore-aeJGqjKm.mjs → ConfigStore-tjtx9TU6.mjs} +57 -47
- package/dist/commands/apiCommand.mjs +1 -1
- package/dist/commands/doctorCommand.mjs +1 -1
- package/dist/commands/headlessCommand.mjs +2 -2
- package/dist/commands/mcpCommand.mjs +1 -1
- package/dist/commands/updateCommand.mjs +1 -1
- package/dist/index.mjs +4 -3
- package/dist/{tools-RdGu37Lw.mjs → tools-DyWEu4_d.mjs} +311 -8971
- package/dist/{updateChecker-CP_jeER9.mjs → updateChecker-CS84T-KX.mjs} +1 -1
- package/package.json +10 -7
|
@@ -12,7 +12,7 @@ import timezone from "dayjs/plugin/timezone.js";
|
|
|
12
12
|
import utc from "dayjs/plugin/utc.js";
|
|
13
13
|
import relativeTime from "dayjs/plugin/relativeTime.js";
|
|
14
14
|
import localizedFormat from "dayjs/plugin/localizedFormat.js";
|
|
15
|
-
import fs
|
|
15
|
+
import fs from "fs/promises";
|
|
16
16
|
//#region ../../b4m-core/common/dist/types/entities/UserTypes.mjs
|
|
17
17
|
let CollectionType = /* @__PURE__ */ function(CollectionType) {
|
|
18
18
|
CollectionType["NOTEBOOK"] = "notebook";
|
|
@@ -299,6 +299,8 @@ let ImageModels = /* @__PURE__ */ function(ImageModels) {
|
|
|
299
299
|
ImageModels["GROK_IMAGINE_IMAGE_QUALITY"] = "grok-imagine-image-quality";
|
|
300
300
|
ImageModels["GEMINI_2_5_FLASH_IMAGE"] = "gemini-2.5-flash-image";
|
|
301
301
|
ImageModels["GEMINI_3_PRO_IMAGE_PREVIEW"] = "gemini-3-pro-image-preview";
|
|
302
|
+
ImageModels["GEMINI_3_1_FLASH_IMAGE"] = "gemini-3.1-flash-image";
|
|
303
|
+
ImageModels["GEMINI_3_PRO_IMAGE"] = "gemini-3-pro-image";
|
|
302
304
|
return ImageModels;
|
|
303
305
|
}({});
|
|
304
306
|
Object.values(ImageModels);
|
|
@@ -377,9 +379,11 @@ let ChatModels = /* @__PURE__ */ function(ChatModels) {
|
|
|
377
379
|
ChatModels["CLAUDE_4_8_OPUS"] = "claude-opus-4-8";
|
|
378
380
|
ChatModels["JURASSIC2_ULTRA"] = "ai21.j2-ultra-v1";
|
|
379
381
|
ChatModels["JURASSIC2_MID"] = "ai21.j2-mid-v1";
|
|
382
|
+
ChatModels["GEMINI_3_5_FLASH"] = "gemini-3.5-flash";
|
|
380
383
|
ChatModels["GEMINI_3_1_PRO_PREVIEW"] = "gemini-3.1-pro-preview";
|
|
381
|
-
ChatModels["
|
|
384
|
+
ChatModels["GEMINI_3_1_FLASH_LITE"] = "gemini-3.1-flash-lite";
|
|
382
385
|
ChatModels["GEMINI_3_FLASH_PREVIEW"] = "gemini-3-flash-preview";
|
|
386
|
+
ChatModels["GEMINI_3_PRO_PREVIEW"] = "gemini-3-pro-preview";
|
|
383
387
|
ChatModels["GEMINI_2_5_PRO"] = "gemini-2.5-pro";
|
|
384
388
|
ChatModels["GEMINI_2_5_FLASH"] = "gemini-2.5-flash";
|
|
385
389
|
ChatModels["GEMINI_2_5_FLASH_LITE"] = "gemini-2.5-flash-lite";
|
|
@@ -418,44 +422,13 @@ const REASONING_SUPPORTED_MODELS = new Set([
|
|
|
418
422
|
"gpt-5.1",
|
|
419
423
|
"gpt-5.2"
|
|
420
424
|
]);
|
|
421
|
-
|
|
422
|
-
* Models that only support temperature=1 (no custom temperature).
|
|
423
|
-
* Includes:
|
|
424
|
-
* - All reasoning models (OpenAI requires temp=1 when reasoning is active)
|
|
425
|
-
* - chat-latest variants that enforce this constraint
|
|
426
|
-
* - GPT-5.5, which rejects custom temperature even though it does not expose
|
|
427
|
-
* reasoning controls
|
|
428
|
-
*/
|
|
429
|
-
const FIXED_TEMPERATURE_MODELS = new Set([
|
|
425
|
+
new Set([
|
|
430
426
|
...Array.from(REASONING_SUPPORTED_MODELS),
|
|
431
427
|
"gpt-5.1-chat-latest",
|
|
432
428
|
"gpt-5.2-chat-latest",
|
|
433
429
|
"gpt-5.5"
|
|
434
430
|
]);
|
|
435
431
|
/**
|
|
436
|
-
* Models that do not accept the temperature parameter at all.
|
|
437
|
-
* The API will reject requests that include temperature for these models.
|
|
438
|
-
*/
|
|
439
|
-
const NO_TEMPERATURE_MODELS = new Set([
|
|
440
|
-
"claude-opus-4-7",
|
|
441
|
-
"global.anthropic.claude-opus-4-7",
|
|
442
|
-
"claude-opus-4-8",
|
|
443
|
-
"global.anthropic.claude-opus-4-8"
|
|
444
|
-
]);
|
|
445
|
-
/**
|
|
446
|
-
* Bedrock-hosted Claude models that do NOT support prompt caching (`cache_control`).
|
|
447
|
-
* Sending `cache_control` to these models triggers a Bedrock deserialization error:
|
|
448
|
-
* `tools.N.cache_control: Extra inputs are not permitted`
|
|
449
|
-
*
|
|
450
|
-
* AWS Bedrock added prompt caching for Claude 3.5 Haiku and Claude 3.7 Sonnet (and later);
|
|
451
|
-
* the OG Claude 3 Haiku and the v1 Claude 3.5 Sonnet were not retrofitted.
|
|
452
|
-
*
|
|
453
|
-
* Keep this set narrow — default behavior is to apply caching when `cacheStrategy.enableCaching`
|
|
454
|
-
* is true. Add a model here only when we have concrete evidence (a Bedrock validation error)
|
|
455
|
-
* that it rejects `cache_control`.
|
|
456
|
-
*/
|
|
457
|
-
const BEDROCK_NO_PROMPT_CACHING_MODELS = new Set(["anthropic.claude-3-haiku-20240307-v1:0", "anthropic.claude-3-5-sonnet-20240620-v1:0"]);
|
|
458
|
-
/**
|
|
459
432
|
* Speech to Text Models
|
|
460
433
|
*
|
|
461
434
|
*/
|
|
@@ -500,13 +473,6 @@ z.enum({
|
|
|
500
473
|
...SpeechToTextModels,
|
|
501
474
|
...VideoModels
|
|
502
475
|
});
|
|
503
|
-
/** Returns true if the model is deprecated on or before the provided date (default: now). */
|
|
504
|
-
const isModelDeprecated = (model, now = /* @__PURE__ */ new Date()) => {
|
|
505
|
-
if (!model.deprecationDate) return false;
|
|
506
|
-
const todayYMD = new Date(now.toISOString().slice(0, 10));
|
|
507
|
-
const cutoff = /* @__PURE__ */ new Date(model.deprecationDate + "T00:00:00Z");
|
|
508
|
-
return todayYMD.getTime() >= cutoff.getTime();
|
|
509
|
-
};
|
|
510
476
|
z$1.enum([
|
|
511
477
|
"openai",
|
|
512
478
|
"test",
|
|
@@ -1004,6 +970,8 @@ let ApiKeyScope = /* @__PURE__ */ function(ApiKeyScope) {
|
|
|
1004
970
|
ApiKeyScope["ADMIN"] = "admin:*";
|
|
1005
971
|
ApiKeyScope["MARKETING_REPORTS_READ"] = "marketing-reports:read";
|
|
1006
972
|
ApiKeyScope["MARKETING_REPORTS_WRITE"] = "marketing-reports:write";
|
|
973
|
+
/** Server-to-server ingest scope for Overwatch analytics. Admin-provisioned only — never shown in user-facing key creation UI. */
|
|
974
|
+
ApiKeyScope["OVERWATCH_INGEST_WRITE"] = "overwatch-ingest:write";
|
|
1007
975
|
return ApiKeyScope;
|
|
1008
976
|
}({});
|
|
1009
977
|
/** Valid document types that can be favorited */
|
|
@@ -3442,7 +3410,12 @@ const XAI_IMAGE_MODELS = ["grok-imagine-image-quality"];
|
|
|
3442
3410
|
* Gemini Image Models (Nano Banana)
|
|
3443
3411
|
* Based on https://ai.google.dev/gemini-api/docs/image-generation
|
|
3444
3412
|
*/
|
|
3445
|
-
const GEMINI_IMAGE_MODELS = [
|
|
3413
|
+
const GEMINI_IMAGE_MODELS = [
|
|
3414
|
+
"gemini-2.5-flash-image",
|
|
3415
|
+
"gemini-3-pro-image-preview",
|
|
3416
|
+
"gemini-3-pro-image",
|
|
3417
|
+
"gemini-3.1-flash-image"
|
|
3418
|
+
];
|
|
3446
3419
|
z.object({
|
|
3447
3420
|
prompt: z.string().min(1),
|
|
3448
3421
|
n: z.number().min(1).max(8).prefault(1).optional(),
|
|
@@ -8435,6 +8408,39 @@ function sanitizeTelemetryError(error, maxLength = MAX_ERROR_LENGTH) {
|
|
|
8435
8408
|
if (sanitized.length > maxLength) sanitized = sanitized.substring(0, maxLength - 3) + "...";
|
|
8436
8409
|
return sanitized;
|
|
8437
8410
|
}
|
|
8411
|
+
/**
|
|
8412
|
+
* Trigger-word validation, shared between client form and server agent
|
|
8413
|
+
* endpoints so the validation rules can't drift.
|
|
8414
|
+
*
|
|
8415
|
+
* Rules (GitHub-handle style):
|
|
8416
|
+
* - Must start with `@`
|
|
8417
|
+
* - Followed by 1–31 chars of alphanumeric, hyphens, or underscores
|
|
8418
|
+
* - May not start or end with a hyphen
|
|
8419
|
+
* - Total length 2–32 chars (including the `@`)
|
|
8420
|
+
*
|
|
8421
|
+
* Why these rules: the chat-side mention parser (`detectAgentMentions`)
|
|
8422
|
+
* matches `[a-zA-Z0-9_](?:[a-zA-Z0-9_-]*[a-zA-Z0-9_])?`. Any trigger word
|
|
8423
|
+
* the agent form lets through but the parser can't read is a silent
|
|
8424
|
+
* routing failure with no user feedback. Validating at save time closes
|
|
8425
|
+
* that gap.
|
|
8426
|
+
*/
|
|
8427
|
+
const TRIGGER_WORD_BODY = /^[a-zA-Z0-9_](?:[a-zA-Z0-9_-]{0,30}[a-zA-Z0-9_])?$/;
|
|
8428
|
+
const TRIGGER_WORD_ERROR_MESSAGE = "Trigger words must start with @ followed by 1–31 letters, numbers, underscores, or hyphens, and may not start or end with a hyphen.";
|
|
8429
|
+
/**
|
|
8430
|
+
* Validate a single trigger word (the full `@handle` form).
|
|
8431
|
+
*/
|
|
8432
|
+
const triggerWordSchema = z.string().min(2, TRIGGER_WORD_ERROR_MESSAGE).max(32, TRIGGER_WORD_ERROR_MESSAGE).refine((value) => value.startsWith("@") && TRIGGER_WORD_BODY.test(value.slice(1)), TRIGGER_WORD_ERROR_MESSAGE);
|
|
8433
|
+
z.array(triggerWordSchema).max(20, "Up to 20 trigger words allowed.").transform((words) => {
|
|
8434
|
+
const seen = /* @__PURE__ */ new Set();
|
|
8435
|
+
const out = [];
|
|
8436
|
+
for (const word of words) {
|
|
8437
|
+
const key = word.toLowerCase();
|
|
8438
|
+
if (seen.has(key)) continue;
|
|
8439
|
+
seen.add(key);
|
|
8440
|
+
out.push(word);
|
|
8441
|
+
}
|
|
8442
|
+
return out;
|
|
8443
|
+
});
|
|
8438
8444
|
const VIEW_REGISTRY = [
|
|
8439
8445
|
{
|
|
8440
8446
|
id: "opti.root",
|
|
@@ -9351,6 +9357,10 @@ const VIEW_REGISTRY = [
|
|
|
9351
9357
|
function getViewById(viewId) {
|
|
9352
9358
|
return VIEW_REGISTRY.find((v) => v.id === viewId);
|
|
9353
9359
|
}
|
|
9360
|
+
Array.from(new Set(VIEW_REGISTRY.filter((v) => v.navigationType === "route" && v.target.startsWith("/") && v.target !== "/").map((v) => {
|
|
9361
|
+
const [, top] = v.target.split("/");
|
|
9362
|
+
return `/${top}`;
|
|
9363
|
+
})));
|
|
9354
9364
|
/**
|
|
9355
9365
|
* Resolve an array of viewIds + reasons into hydrated NavigationIntents.
|
|
9356
9366
|
* Skips unknown IDs and respects admin filtering.
|
|
@@ -9395,7 +9405,7 @@ const logger = class Logger {
|
|
|
9395
9405
|
async initialize(sessionId) {
|
|
9396
9406
|
this.sessionId = sessionId;
|
|
9397
9407
|
const debugDir = path.join(os.homedir(), ".bike4mind", "debug");
|
|
9398
|
-
await fs
|
|
9408
|
+
await fs.mkdir(debugDir, { recursive: true });
|
|
9399
9409
|
this.logFilePath = path.join(debugDir, `${sessionId}.txt`);
|
|
9400
9410
|
await this.writeToFile("INFO", "=== CLI SESSION START ===");
|
|
9401
9411
|
}
|
|
@@ -9447,7 +9457,7 @@ const logger = class Logger {
|
|
|
9447
9457
|
if (!this.fileLoggingEnabled || !this.logFilePath) return;
|
|
9448
9458
|
try {
|
|
9449
9459
|
const logEntry = `[${(/* @__PURE__ */ new Date()).toISOString().replace("T", " ").substring(0, 19)}] [${level}] ${message}\n`;
|
|
9450
|
-
await fs
|
|
9460
|
+
await fs.appendFile(this.logFilePath, logEntry, "utf-8");
|
|
9451
9461
|
} catch (error) {
|
|
9452
9462
|
console.error("File logging failed:", error);
|
|
9453
9463
|
}
|
|
@@ -9564,11 +9574,11 @@ const logger = class Logger {
|
|
|
9564
9574
|
if (!this.fileLoggingEnabled) return;
|
|
9565
9575
|
try {
|
|
9566
9576
|
const debugDir = path.join(os.homedir(), ".bike4mind", "debug");
|
|
9567
|
-
const files = await fs
|
|
9577
|
+
const files = await fs.readdir(debugDir);
|
|
9568
9578
|
const thirtyDaysAgo = Date.now() - 720 * 60 * 60 * 1e3;
|
|
9569
9579
|
for (const file of files) {
|
|
9570
9580
|
const filePath = path.join(debugDir, file);
|
|
9571
|
-
if ((await fs
|
|
9581
|
+
if ((await fs.stat(filePath)).mtime.getTime() < thirtyDaysAgo) await fs.unlink(filePath);
|
|
9572
9582
|
}
|
|
9573
9583
|
} catch (error) {
|
|
9574
9584
|
console.error("Failed to cleanup old logs:", error);
|
|
@@ -10388,4 +10398,4 @@ var ConfigStore = class {
|
|
|
10388
10398
|
}
|
|
10389
10399
|
};
|
|
10390
10400
|
//#endregion
|
|
10391
|
-
export {
|
|
10401
|
+
export { PromptMetaZodSchema as $, GenericCreditDeductTransaction as A, getDataLakeTags as At, KnowledgeType as B, settingsMap as Bt, FeedbackEvents as C, VIDEO_SIZE_CONSTRAINTS as Ct, GEMINI_IMAGE_MODELS as D, b4mLLMTools as Dt, FriendshipEvents as E, XAI_IMAGE_MODELS as Et, ImageModels as F, isZodError as Ft, NotFoundError as G, isNearLimit as Gt, MiscEvents as H, validateNotebookPath as Ht, InboxEvents as I, obfuscateApiKey as It, Permission as J, OpenAIEmbeddingModel as K, parseRateLimitHeaders as Kt, InternalServerError as L, resolveNavigationIntents as Lt, HttpStatus as M, getViewById as Mt, ImageEditUsageTransaction as N, isGPTImage2Model as Nt, GenerateImageToolCallSchema as O, dayjsConfig_default as Ot, ImageGenerationUsageTransaction as P, isGPTImageModel as Pt, PromptIntentSchema as Q, InviteEvents as R, sanitizeTelemetryError as Rt, FavoriteDocumentType as S, UnprocessableEntityError as St, ForbiddenError as T, VideoModels as Tt, ModalEvents as U, buildRateLimitLogEntry as Ut, LLMEvents as V, validateJupyterKernelName as Vt, ModelBackend as W, extractSnippetMeta as Wt, ProfileEvents as X, PermissionDeniedError as Y, ProjectEvents as Z, ClaudeArtifactMimeTypes as _, TooManyRequestsError as _t, ApiKeyEvents as a, RegInviteEvents as at, DashboardParamsSchema as b, UiNavigationEvents as bt, AppFileEvents as c, ResearchTaskPeriodicFrequencyType as ct, BFL_IMAGE_MODELS as d, SpeechToTextUsageTransaction as dt, PurchaseTransaction as et, BFL_SAFETY_TOLERANCE as f, SubscriptionCreditTransaction as ft, ChatModels as g, TextGenerationUsageTransaction as gt, ChatCompletionCreateInputSchema as h, TaskScheduleHandler as ht, AiEvents as i, RechartsChartTypeList as it, HTTPError as j, getMcpProviderMetadata as jt, GenericCreditAddTransaction as k, getAccessibleDataLakes as kt, ArtifactTypeSchema as l, ResearchTaskType as lt, CREDIT_DEDUCT_TRANSACTION_TYPES as m, TagType as mt, logger as n, RealtimeVoiceUsageTransaction as nt, ApiKeyScope as o, ResearchModeParamsSchema as ot, BadRequestError as p, SupportedFabFileMimeTypes as pt, OpenAIImageGenerationInput as q, CollectionType as qt, ALERT_THRESHOLDS as r, ReceivedCreditTransaction as rt, ApiKeyType as s, ResearchTaskExecutionType as st, ConfigStore as t, QuestMasterParamsSchema as tt, AuthEvents as u, SessionEvents as ut, CompletionApiUsageTransaction as v, ToolUsageTransaction as vt, FileEvents as w, VideoGenerationUsageTransaction as wt, ElabsEvents as x, UnauthorizedError as xt, CorruptedFileError as y, TransferCreditTransaction as yt, InviteType as z, secureParameters as zt };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { a as version, n as compareSemver, r as fetchLatestVersion } from "../updateChecker-
|
|
2
|
+
import { a as version, n as compareSemver, r as fetchLatestVersion } from "../updateChecker-CS84T-KX.mjs";
|
|
3
3
|
import { t as checkRipgrep } from "../ripgrepCheck-BmkyTK2i.mjs";
|
|
4
4
|
import { execSync } from "child_process";
|
|
5
5
|
import { constants, existsSync, promises } from "fs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { C as WebSocketToolExecutor, D as ServerLlmBackend, E as WebSocketLlmBackend, F as PermissionManager, I as generateCliTools, M as loadContextFiles, N as getApiUrl, O as McpManager,
|
|
3
|
-
import { n as logger, t as ConfigStore } from "../ConfigStore-
|
|
2
|
+
import { $ as SessionStore, C as WebSocketToolExecutor, D as ServerLlmBackend, E as WebSocketLlmBackend, F as PermissionManager, I as generateCliTools, J as isReadOnlyTool, K as buildSystemPrompt, M as loadContextFiles, N as getApiUrl, O as McpManager, S as ApiClient, T as FallbackLlmBackend, W as setWebSocketToolExecutor, X as CustomCommandStore, Y as ReActAgent, Z as CheckpointStore, _ as createAgentDelegateTool, b as createSkillTool, d as createFindDefinitionTool, f as createTodoStore, g as BackgroundAgentManager, h as createBackgroundAgentTools, m as createCoordinateTaskTool, p as createWriteTodosTool, u as createGetFileStructureTool, v as AgentStore, w as WebSocketConnectionManager, y as SubagentOrchestrator } from "../tools-DyWEu4_d.mjs";
|
|
3
|
+
import { n as logger, t as ConfigStore } from "../ConfigStore-tjtx9TU6.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 { a as version, i as forceCheckForUpdate } from "../updateChecker-
|
|
2
|
+
import { a as version, i as forceCheckForUpdate } from "../updateChecker-CS84T-KX.mjs";
|
|
3
3
|
import { t as checkRipgrep } from "../ripgrepCheck-BmkyTK2i.mjs";
|
|
4
4
|
import { execSync } from "child_process";
|
|
5
5
|
//#region src/commands/updateCommand.ts
|
package/dist/index.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { $ as
|
|
2
|
+
import { $ as SessionStore, A as formatStep, B as DEFAULT_RETRY_CONFIG, C as WebSocketToolExecutor, D as ServerLlmBackend, E as WebSocketLlmBackend, F as PermissionManager, G as getPlanModeFilePath, H as clearFeatureModuleTools, I as generateCliTools, J as isReadOnlyTool, K as buildSystemPrompt, L as ALWAYS_DENIED_FOR_AGENTS, M as loadContextFiles, N as getApiUrl, O as McpManager, P as getEnvironmentName, Q as CommandHistoryStore, R as DEFAULT_AGENT_MODEL, S as ApiClient, T as FallbackLlmBackend, U as registerFeatureModuleTools, V as DEFAULT_THOROUGHNESS, W as setWebSocketToolExecutor, X as CustomCommandStore, Y as ReActAgent, Z as CheckpointStore, _ as createAgentDelegateTool, a as createBlockerTools, at as formatFileSize, b as createSkillTool, c as createDecisionStore, d as createFindDefinitionTool, et as OAuthClient, f as createTodoStore, g as BackgroundAgentManager, h as createBackgroundAgentTools, i as createBlockerStore, it as mergeCommands, j as extractCompactInstructions, k as substituteArguments, l as formatDecisionsOutput, m as createCoordinateTaskTool, n as createReviewGateTool, nt as processFileReferences, o as formatBlockersOutput, ot as searchFiles, p as createWriteTodosTool, q as buildSkillsPromptSection, r as formatReviewGatesOutput, rt as searchCommands, s as createDecisionLogTool, st as warmFileCache, t as createReviewGateStore, tt as hasFileReferences, u as createGetFileStructureTool, v as AgentStore, w as WebSocketConnectionManager, x as parseAgentConfig, y as SubagentOrchestrator, z as DEFAULT_MAX_ITERATIONS } from "./tools-DyWEu4_d.mjs";
|
|
3
3
|
import { n as useCliStore, t as selectActiveBackgroundAgents } from "./store-DV5s-qni.mjs";
|
|
4
|
-
import {
|
|
5
|
-
import { a as version, t as checkForUpdate } from "./updateChecker-
|
|
4
|
+
import { Ht as validateNotebookPath$1, Vt as validateJupyterKernelName, g as ChatModels, m as CREDIT_DEDUCT_TRANSACTION_TYPES, n as logger, t as ConfigStore } from "./ConfigStore-tjtx9TU6.mjs";
|
|
5
|
+
import { a as version, t as checkForUpdate } from "./updateChecker-CS84T-KX.mjs";
|
|
6
6
|
import React, { useCallback, useEffect, useMemo, useReducer, useRef, useState } from "react";
|
|
7
7
|
import { Box, Static, Text, render, useApp, useInput, usePaste, useStdout } from "ink";
|
|
8
8
|
import { execSync } from "child_process";
|
|
@@ -22,6 +22,7 @@ import SelectInput from "ink-select-input";
|
|
|
22
22
|
import jwt from "jsonwebtoken";
|
|
23
23
|
import open from "open";
|
|
24
24
|
import axios, { isAxiosError } from "axios";
|
|
25
|
+
import { OllamaBackend } from "@bike4mind/llm-adapters";
|
|
25
26
|
import { get_encoding } from "tiktoken";
|
|
26
27
|
import WsWebSocket from "ws";
|
|
27
28
|
//#region src/components/StatusBar.tsx
|