@bike4mind/cli 0.9.3 → 0.10.0

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.
Files changed (41) hide show
  1. package/README.md +13 -3
  2. package/bin/bike4mind-cli.mjs +44 -1
  3. package/dist/{BubblewrapRuntime-CUD3bsgG.mjs → BubblewrapRuntime-CkL9-gnG.mjs} +1 -1
  4. package/dist/{ConfigStore-BauEpjvT.mjs → ConfigStore-DPWN3-0c.mjs} +60 -8
  5. package/dist/ProxyManager-ByuAHFMq.mjs +3 -0
  6. package/dist/{SandboxOrchestrator-C4oDqltp.mjs → SandboxOrchestrator-BS6gALNq.mjs} +1 -1
  7. package/dist/{SandboxOrchestrator-B4GcZdBc.mjs → SandboxOrchestrator-BoINxbX4.mjs} +1 -1
  8. package/dist/{SandboxRuntimeAdapter-DXa3nFOw.mjs → SandboxRuntimeAdapter-CKelGICD.mjs} +1 -1
  9. package/dist/{SandboxRuntimeAdapter-D1RUReNL.mjs → SandboxRuntimeAdapter-ChGlxSGQ.mjs} +2 -2
  10. package/dist/{SeatbeltRuntime-CTElMR9Q.mjs → SeatbeltRuntime-Qqt19cAN.mjs} +1 -1
  11. package/dist/{bashExecute-pYljpfPn-BZXHMQEl.mjs → bashExecute-B1N1lMOS-TZVDbcQ4.mjs} +1 -1
  12. package/dist/commands/apiCommand.mjs +45 -0
  13. package/dist/commands/doctorCommand.mjs +2 -2
  14. package/dist/commands/headlessCommand.mjs +6 -6
  15. package/dist/commands/mcpCommand.mjs +1 -1
  16. package/dist/commands/updateCommand.mjs +2 -2
  17. package/dist/{createFile-C1JoeuYh-metInFKd.mjs → createFile-DPv180yF-BnWFIxey.mjs} +2 -2
  18. package/dist/{deleteFile-BTberNGj-CW922hRM.mjs → deleteFile-BdjUwUQF-B3XOJmg3.mjs} +2 -2
  19. package/dist/{globFiles-Bez8QCbS-DZb6McbJ.mjs → globFiles-DjfDGaUK-CNR8pMRC.mjs} +2 -2
  20. package/dist/{grepSearch-BxucZWO8-lPRv6R6F.mjs → grepSearch-DJs-cubo-Bm0Y8oS3.mjs} +2 -2
  21. package/dist/index.mjs +19 -18
  22. package/dist/{pathValidation-CIytuhr3-Dt5dntLx.mjs → pathValidation-D8tjkQXE-1HwvsuYT.mjs} +1 -1
  23. package/dist/store-DgzCTRkN.mjs +3 -0
  24. package/dist/{tools-CpWE3Qif.mjs → tools-_X4rUM4L.mjs} +11132 -10244
  25. package/dist/types-CqscS34o.mjs +3 -0
  26. package/dist/{updateChecker-DhWcEKAu.mjs → updateChecker-C3DYG0Gn.mjs} +1 -1
  27. package/dist/utils-BGtSXfce.mjs +3 -0
  28. package/dist/utils-PpNti-tY.mjs +146 -0
  29. package/package.json +31 -31
  30. package/dist/ProxyManager-DIAAw902.mjs +0 -3
  31. package/dist/store-5PXzE9DM.mjs +0 -3
  32. package/dist/types-DK3P88Px.mjs +0 -3
  33. /package/dist/{ImageStore-BFp_d12J.mjs → ImageStore-BVmEG1xc.mjs} +0 -0
  34. /package/dist/{ProxyManager-BsCoxpns.mjs → ProxyManager-CV94yZUW.mjs} +0 -0
  35. /package/dist/{StderrViolationParser-BFP4bo7I.mjs → StderrViolationParser-CS43a-TP.mjs} +0 -0
  36. /package/dist/{ViolationLogStore-Dp6HF0nz.mjs → ViolationLogStore-B-plqJfn.mjs} +0 -0
  37. /package/dist/{ripgrepCheck-DIu4apVE.mjs → ripgrepCheck-BmkyTK2i.mjs} +0 -0
  38. /package/dist/{store-BonrwrMi.mjs → store-DV5s-qni.mjs} +0 -0
  39. /package/dist/{terminalSetup-DxloCowq.mjs → terminalSetup-BbJt04ZG.mjs} +0 -0
  40. /package/dist/{treeSitterEngine-Cw2LbVZT.mjs → treeSitterEngine-BRbQ9b7I.mjs} +0 -0
  41. /package/dist/{types-DBEjF9YS.mjs → types-LyRNHOiS.mjs} +0 -0
package/dist/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
- import { $ as CommandHistoryStore, A as formatStep, B as DEFAULT_RETRY_CONFIG, C as WebSocketToolExecutor, D as ServerLlmBackend, E as WebSocketLlmBackend, F as PermissionManager, G as OllamaBackend, H as clearFeatureModuleTools, I as generateCliTools, J as buildSkillsPromptSection, K as getPlanModeFilePath, L as ALWAYS_DENIED_FOR_AGENTS, M as loadContextFiles, N as getApiUrl, O as McpManager, P as getEnvironmentName, Q as CheckpointStore, R as DEFAULT_AGENT_MODEL, S as ApiClient, T as FallbackLlmBackend, U as registerFeatureModuleTools, V as DEFAULT_THOROUGHNESS, W as setWebSocketToolExecutor, X as ReActAgent, Y as isReadOnlyTool, Z as CustomCommandStore, _ as createAgentDelegateTool, a as createBlockerTools, at as mergeCommands, b as createSkillTool, c as createDecisionStore, ct as warmFileCache, d as createFindDefinitionTool, et as SessionStore, f as createTodoStore, g as BackgroundAgentManager, h as createBackgroundAgentTools, i as createBlockerStore, it as searchCommands, j as extractCompactInstructions, k as substituteArguments, l as formatDecisionsOutput, m as createCoordinateTaskTool, n as createReviewGateTool, nt as hasFileReferences, o as formatBlockersOutput, ot as formatFileSize, p as createWriteTodosTool, q as buildSystemPrompt, r as formatReviewGatesOutput, rt as processFileReferences, s as createDecisionLogTool, st as searchFiles, t as createReviewGateStore, tt as OAuthClient, u as createGetFileStructureTool, v as AgentStore, w as WebSocketConnectionManager, x as parseAgentConfig, y as SubagentOrchestrator, z as DEFAULT_MAX_ITERATIONS } from "./tools-CpWE3Qif.mjs";
3
- import { n as useCliStore, t as selectActiveBackgroundAgents } from "./store-BonrwrMi.mjs";
4
- import { Xt as validateNotebookPath$1, Yt as validateJupyterKernelName, g as CREDIT_DEDUCT_TRANSACTION_TYPES, n as logger, t as ConfigStore, v as ChatModels } from "./ConfigStore-BauEpjvT.mjs";
5
- import { a as version, t as checkForUpdate } from "./updateChecker-DhWcEKAu.mjs";
2
+ import { $ as CommandHistoryStore, A as formatStep, B as DEFAULT_RETRY_CONFIG, C as WebSocketToolExecutor, D as ServerLlmBackend, E as WebSocketLlmBackend, F as PermissionManager, G as OllamaBackend, H as clearFeatureModuleTools, I as generateCliTools, J as buildSkillsPromptSection, K as getPlanModeFilePath, L as ALWAYS_DENIED_FOR_AGENTS, M as loadContextFiles, N as getApiUrl, O as McpManager, P as getEnvironmentName, Q as CheckpointStore, R as DEFAULT_AGENT_MODEL, S as ApiClient, T as FallbackLlmBackend, U as registerFeatureModuleTools, V as DEFAULT_THOROUGHNESS, W as setWebSocketToolExecutor, X as ReActAgent, Y as isReadOnlyTool, Z as CustomCommandStore, _ as createAgentDelegateTool, a as createBlockerTools, at as mergeCommands, b as createSkillTool, c as createDecisionStore, ct as warmFileCache, d as createFindDefinitionTool, et as SessionStore, f as createTodoStore, g as BackgroundAgentManager, h as createBackgroundAgentTools, i as createBlockerStore, it as searchCommands, j as extractCompactInstructions, k as substituteArguments, l as formatDecisionsOutput, m as createCoordinateTaskTool, n as createReviewGateTool, nt as hasFileReferences, o as formatBlockersOutput, ot as formatFileSize, p as createWriteTodosTool, q as buildSystemPrompt, r as formatReviewGatesOutput, rt as processFileReferences, s as createDecisionLogTool, st as searchFiles, t as createReviewGateStore, tt as OAuthClient, u as createGetFileStructureTool, v as AgentStore, w as WebSocketConnectionManager, x as parseAgentConfig, y as SubagentOrchestrator, z as DEFAULT_MAX_ITERATIONS } from "./tools-_X4rUM4L.mjs";
3
+ import { n as useCliStore, t as selectActiveBackgroundAgents } from "./store-DV5s-qni.mjs";
4
+ import { Xt as validateNotebookPath$1, Yt as validateJupyterKernelName, g as CREDIT_DEDUCT_TRANSACTION_TYPES, n as logger, t as ConfigStore, v as ChatModels } from "./ConfigStore-DPWN3-0c.mjs";
5
+ import { a as version, t as checkForUpdate } from "./updateChecker-C3DYG0Gn.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";
@@ -287,8 +287,7 @@ function CommandAutocomplete({ commands, selectedIndex }) {
287
287
  let startIndex = 0;
288
288
  let endIndex = Math.min(VIEWPORT_SIZE, totalCommands);
289
289
  if (totalCommands > VIEWPORT_SIZE) {
290
- const halfViewport = Math.floor(VIEWPORT_SIZE / 2);
291
- startIndex = Math.max(0, selectedIndex - halfViewport);
290
+ startIndex = Math.max(0, selectedIndex - Math.floor(VIEWPORT_SIZE / 2));
292
291
  endIndex = Math.min(totalCommands, startIndex + VIEWPORT_SIZE);
293
292
  if (endIndex === totalCommands) startIndex = Math.max(0, totalCommands - VIEWPORT_SIZE);
294
293
  }
@@ -329,8 +328,7 @@ function FileAutocomplete({ files, selectedIndex, query }) {
329
328
  let startIndex = 0;
330
329
  let endIndex = Math.min(VIEWPORT_SIZE, totalFiles);
331
330
  if (totalFiles > VIEWPORT_SIZE) {
332
- const halfViewport = Math.floor(VIEWPORT_SIZE / 2);
333
- startIndex = Math.max(0, selectedIndex - halfViewport);
331
+ startIndex = Math.max(0, selectedIndex - Math.floor(VIEWPORT_SIZE / 2));
334
332
  endIndex = Math.min(totalFiles, startIndex + VIEWPORT_SIZE);
335
333
  if (endIndex === totalFiles) startIndex = Math.max(0, totalFiles - VIEWPORT_SIZE);
336
334
  }
@@ -2164,6 +2162,10 @@ function App({ onMessage, onBackgroundCompletion, onCommand, onBashCommand, onPe
2164
2162
  await onCommand(command, args);
2165
2163
  return;
2166
2164
  }
2165
+ if (trimmed === "exit" || trimmed === "quit") {
2166
+ await onCommand(trimmed, []);
2167
+ return;
2168
+ }
2167
2169
  let messageToSend = trimmed;
2168
2170
  if (hasFileReferences(trimmed)) {
2169
2171
  const processed = await processFileReferences(trimmed);
@@ -2668,7 +2670,7 @@ const ROLE_LABELS = {
2668
2670
  function buildHandoffPrompt(session) {
2669
2671
  if (session.messages.length < 4) return "";
2670
2672
  const filtered = session.messages.filter((m) => !isInjectedHandoff(m));
2671
- const conversation = filtered.length > MAX_CONVERSATION_MESSAGES ? filtered.slice(-MAX_CONVERSATION_MESSAGES) : filtered;
2673
+ const conversation = filtered.length > MAX_CONVERSATION_MESSAGES ? filtered.slice(-50) : filtered;
2672
2674
  let prompt = `You are generating a structured session handoff so the next session (or another agent) can pick up seamlessly without re-reading the full chat history.
2673
2675
 
2674
2676
  Output a single JSON object — no prose, no markdown fences — with exactly these fields:
@@ -5854,11 +5856,11 @@ function CliApp() {
5854
5856
  };
5855
5857
  const permissionManager = new PermissionManager(config.trustedTools || [], void 0, config.tools.disabled || []);
5856
5858
  const [{ createSandboxRuntime }, { SandboxOrchestrator }, { DEFAULT_SANDBOX_CONFIG }, { ProxyManager }, { ViolationLogStore }] = await Promise.all([
5857
- import("./SandboxRuntimeAdapter-DXa3nFOw.mjs"),
5858
- import("./SandboxOrchestrator-C4oDqltp.mjs"),
5859
- import("./types-DK3P88Px.mjs"),
5860
- import("./ProxyManager-DIAAw902.mjs"),
5861
- import("./ViolationLogStore-Dp6HF0nz.mjs")
5859
+ import("./SandboxRuntimeAdapter-CKelGICD.mjs"),
5860
+ import("./SandboxOrchestrator-BS6gALNq.mjs"),
5861
+ import("./types-CqscS34o.mjs"),
5862
+ import("./ProxyManager-ByuAHFMq.mjs"),
5863
+ import("./ViolationLogStore-B-plqJfn.mjs")
5862
5864
  ]);
5863
5865
  const sandboxConfig = config.sandbox ?? DEFAULT_SANDBOX_CONFIG;
5864
5866
  const checkpointStore = new CheckpointStore(state.configStore.getProjectConfigDir() || process.cwd());
@@ -6875,7 +6877,7 @@ function CliApp() {
6875
6877
  let imageStore = state.imageStore;
6876
6878
  if (!imageStore) {
6877
6879
  if (!imageStoreInitPromise.current) imageStoreInitPromise.current = (async () => {
6878
- const { ImageStore: ImageStoreClass } = await import("./ImageStore-BFp_d12J.mjs");
6880
+ const { ImageStore: ImageStoreClass } = await import("./ImageStore-BVmEG1xc.mjs");
6879
6881
  const newImageStore = new ImageStoreClass();
6880
6882
  setState((prev) => ({
6881
6883
  ...prev,
@@ -6924,8 +6926,7 @@ function CliApp() {
6924
6926
  console.log(`${emoji} ${label}:`);
6925
6927
  const terminalWidth = process.stdout.columns || 80;
6926
6928
  const nameWidth = 25;
6927
- const prefixWidth = 2 + nameWidth + 3;
6928
- const maxDescLength = Math.max(20, terminalWidth - prefixWidth);
6929
+ const maxDescLength = Math.max(20, terminalWidth - 30);
6929
6930
  agents.forEach((agent) => {
6930
6931
  const desc = agent.description.length > maxDescLength ? agent.description.slice(0, maxDescLength - 3) + "..." : agent.description;
6931
6932
  console.log(` ${agent.name.padEnd(nameWidth)} - ${desc}`);
@@ -8154,7 +8155,7 @@ Multi-line Input:
8154
8155
  break;
8155
8156
  }
8156
8157
  case "terminal-setup": {
8157
- const { runTerminalSetup } = await import("./terminalSetup-DxloCowq.mjs");
8158
+ const { runTerminalSetup } = await import("./terminalSetup-BbJt04ZG.mjs");
8158
8159
  await runTerminalSetup();
8159
8160
  break;
8160
8161
  }
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { realpathSync } from "fs";
3
3
  import path from "path";
4
- //#region ../../b4m-core/services/dist/pathValidation-CIytuhr3.mjs
4
+ //#region ../../b4m-core/services/dist/pathValidation-D8tjkQXE.mjs
5
5
  /**
6
6
  * Resolves a path to its canonical form, following symlinks.
7
7
  * If the path doesn't exist (e.g., file being created), resolves the
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ import { n as useCliStore } from "./store-DV5s-qni.mjs";
3
+ export { useCliStore };