@bike4mind/cli 0.9.2 → 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.
- package/README.md +13 -3
- package/bin/bike4mind-cli.mjs +44 -1
- package/dist/{BubblewrapRuntime-CUD3bsgG.mjs → BubblewrapRuntime-CkL9-gnG.mjs} +1 -1
- package/dist/{ConfigStore-CAKSUXCi.mjs → ConfigStore-DPWN3-0c.mjs} +1948 -1186
- package/dist/ProxyManager-ByuAHFMq.mjs +3 -0
- package/dist/{SandboxOrchestrator-C4oDqltp.mjs → SandboxOrchestrator-BS6gALNq.mjs} +1 -1
- package/dist/{SandboxOrchestrator-B4GcZdBc.mjs → SandboxOrchestrator-BoINxbX4.mjs} +1 -1
- package/dist/{SandboxRuntimeAdapter-DXa3nFOw.mjs → SandboxRuntimeAdapter-CKelGICD.mjs} +1 -1
- package/dist/{SandboxRuntimeAdapter-D1RUReNL.mjs → SandboxRuntimeAdapter-ChGlxSGQ.mjs} +2 -2
- package/dist/{SeatbeltRuntime-CTElMR9Q.mjs → SeatbeltRuntime-Qqt19cAN.mjs} +1 -1
- package/dist/{bashExecute-pYljpfPn-BZXHMQEl.mjs → bashExecute-B1N1lMOS-TZVDbcQ4.mjs} +1 -1
- package/dist/commands/apiCommand.mjs +45 -0
- package/dist/commands/doctorCommand.mjs +2 -2
- package/dist/commands/headlessCommand.mjs +6 -6
- package/dist/commands/mcpCommand.mjs +1 -1
- package/dist/commands/updateCommand.mjs +2 -2
- package/dist/{createFile-C1JoeuYh-metInFKd.mjs → createFile-DPv180yF-BnWFIxey.mjs} +2 -2
- package/dist/{deleteFile-BTberNGj-CW922hRM.mjs → deleteFile-BdjUwUQF-B3XOJmg3.mjs} +2 -2
- package/dist/{globFiles-Bez8QCbS-DZb6McbJ.mjs → globFiles-DjfDGaUK-CNR8pMRC.mjs} +2 -2
- package/dist/{grepSearch-BxucZWO8-lPRv6R6F.mjs → grepSearch-DJs-cubo-Bm0Y8oS3.mjs} +2 -2
- package/dist/index.mjs +19 -18
- package/dist/{pathValidation-CIytuhr3-Dt5dntLx.mjs → pathValidation-D8tjkQXE-1HwvsuYT.mjs} +1 -1
- package/dist/store-DgzCTRkN.mjs +3 -0
- package/dist/{tools-AWSBVqG5.mjs → tools-_X4rUM4L.mjs} +14941 -3277
- package/dist/types-CqscS34o.mjs +3 -0
- package/dist/{updateChecker-Bml_XTCM.mjs → updateChecker-C3DYG0Gn.mjs} +1 -1
- package/dist/utils-BGtSXfce.mjs +3 -0
- package/dist/utils-PpNti-tY.mjs +146 -0
- package/package.json +32 -32
- package/dist/ProxyManager-DIAAw902.mjs +0 -3
- package/dist/store-YhSkjsW4.mjs +0 -3
- package/dist/types-DK3P88Px.mjs +0 -3
- /package/dist/{ImageStore-BFp_d12J.mjs → ImageStore-BVmEG1xc.mjs} +0 -0
- /package/dist/{ProxyManager-BsCoxpns.mjs → ProxyManager-CV94yZUW.mjs} +0 -0
- /package/dist/{StderrViolationParser-BFP4bo7I.mjs → StderrViolationParser-CS43a-TP.mjs} +0 -0
- /package/dist/{ViolationLogStore-Dp6HF0nz.mjs → ViolationLogStore-B-plqJfn.mjs} +0 -0
- /package/dist/{ripgrepCheck-DIu4apVE.mjs → ripgrepCheck-BmkyTK2i.mjs} +0 -0
- /package/dist/{store-DLduYYGR.mjs → store-DV5s-qni.mjs} +0 -0
- /package/dist/{terminalSetup-DxloCowq.mjs → terminalSetup-BbJt04ZG.mjs} +0 -0
- /package/dist/{treeSitterEngine-Cw2LbVZT.mjs → treeSitterEngine-BRbQ9b7I.mjs} +0 -0
- /package/dist/{types-DBEjF9YS.mjs → types-LyRNHOiS.mjs} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { t as DEFAULT_SANDBOX_CONFIG } from "./types-
|
|
2
|
+
import { t as DEFAULT_SANDBOX_CONFIG } from "./types-LyRNHOiS.mjs";
|
|
3
3
|
//#region src/sandbox/SandboxOrchestrator.ts
|
|
4
4
|
var SandboxOrchestrator = class {
|
|
5
5
|
constructor(config, runtime, proxyManager) {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { i as isBinaryAvailable, n as detectPlatform, r as expandPath, t as createSandboxRuntime } from "./SandboxRuntimeAdapter-
|
|
2
|
+
import { i as isBinaryAvailable, n as detectPlatform, r as expandPath, t as createSandboxRuntime } from "./SandboxRuntimeAdapter-ChGlxSGQ.mjs";
|
|
3
3
|
export { createSandboxRuntime, detectPlatform, expandPath, isBinaryAvailable };
|
|
@@ -42,12 +42,12 @@ async function createSandboxRuntime() {
|
|
|
42
42
|
const platform = detectPlatform();
|
|
43
43
|
if (!platform) return null;
|
|
44
44
|
if (platform === "darwin") {
|
|
45
|
-
const { SeatbeltRuntime } = await import("./SeatbeltRuntime-
|
|
45
|
+
const { SeatbeltRuntime } = await import("./SeatbeltRuntime-Qqt19cAN.mjs");
|
|
46
46
|
const runtime = new SeatbeltRuntime();
|
|
47
47
|
return runtime.isAvailable() ? runtime : null;
|
|
48
48
|
}
|
|
49
49
|
if (platform === "linux") {
|
|
50
|
-
const { BubblewrapRuntime } = await import("./BubblewrapRuntime-
|
|
50
|
+
const { BubblewrapRuntime } = await import("./BubblewrapRuntime-CkL9-gnG.mjs");
|
|
51
51
|
const runtime = new BubblewrapRuntime();
|
|
52
52
|
return runtime.isAvailable() ? runtime : null;
|
|
53
53
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { i as isBinaryAvailable, r as expandPath } from "./SandboxRuntimeAdapter-
|
|
2
|
+
import { i as isBinaryAvailable, r as expandPath } from "./SandboxRuntimeAdapter-ChGlxSGQ.mjs";
|
|
3
3
|
import { mkdtempSync, writeFileSync } from "fs";
|
|
4
4
|
import os from "os";
|
|
5
5
|
import path from "path";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { spawn } from "child_process";
|
|
3
3
|
import path from "path";
|
|
4
|
-
//#region ../../b4m-core/services/dist/bashExecute-
|
|
4
|
+
//#region ../../b4m-core/services/dist/bashExecute-B1N1lMOS.mjs
|
|
5
5
|
const DEFAULT_TIMEOUT_MS = 6e4;
|
|
6
6
|
const MAX_OUTPUT_SIZE = 100 * 1024;
|
|
7
7
|
/**
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { t as ConfigStore } from "../ConfigStore-DPWN3-0c.mjs";
|
|
3
|
+
//#region src/commands/apiCommand.ts
|
|
4
|
+
/**
|
|
5
|
+
* External API config command (--api-url / --reset-api)
|
|
6
|
+
* Runs outside the interactive CLI session, before any auth flow.
|
|
7
|
+
*
|
|
8
|
+
* - `--reset-api`: clears customUrl, falling back to the Bike4Mind default
|
|
9
|
+
* - `--api-url <url>`: sets a custom API URL (e.g. http://localhost:3000)
|
|
10
|
+
*
|
|
11
|
+
* Both clear auth tokens because they're bound to the old origin, and both
|
|
12
|
+
* exit on completion so the user can re-run `b4m` with a clean auth state.
|
|
13
|
+
*/
|
|
14
|
+
async function handleApiCommand(options) {
|
|
15
|
+
const configStore = new ConfigStore();
|
|
16
|
+
if (options.mode === "set") {
|
|
17
|
+
const url = options.url.trim().replace(/\/+$/, "");
|
|
18
|
+
let parsed;
|
|
19
|
+
try {
|
|
20
|
+
parsed = new URL(url);
|
|
21
|
+
} catch {
|
|
22
|
+
console.error(`❌ Invalid URL: ${url}`);
|
|
23
|
+
console.error(" Example: --api-url http://localhost:3000");
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
27
|
+
console.error(`❌ Only http:// and https:// URLs are supported (got ${parsed.protocol}//)`);
|
|
28
|
+
console.error(" Example: --api-url http://localhost:3000");
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
await configStore.setCustomApiUrl(url);
|
|
32
|
+
await configStore.clearAuthTokens();
|
|
33
|
+
console.log(`\n✅ API URL set to ${url}`);
|
|
34
|
+
console.log("🔓 Authentication cleared");
|
|
35
|
+
console.log("💡 Run `b4m` to authenticate against the new API.\n");
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
await configStore.setCustomApiUrl(null);
|
|
39
|
+
await configStore.clearAuthTokens();
|
|
40
|
+
console.log("\n✅ API URL reset to Bike4Mind main service");
|
|
41
|
+
console.log("🔓 Authentication cleared");
|
|
42
|
+
console.log("💡 Run `b4m` to authenticate.\n");
|
|
43
|
+
}
|
|
44
|
+
//#endregion
|
|
45
|
+
export { handleApiCommand };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { a as version, n as compareSemver, r as fetchLatestVersion } from "../updateChecker-
|
|
3
|
-
import { t as checkRipgrep } from "../ripgrepCheck-
|
|
2
|
+
import { a as version, n as compareSemver, r as fetchLatestVersion } from "../updateChecker-C3DYG0Gn.mjs";
|
|
3
|
+
import { t as checkRipgrep } from "../ripgrepCheck-BmkyTK2i.mjs";
|
|
4
4
|
import { execSync } from "child_process";
|
|
5
5
|
import { constants, existsSync, promises } from "fs";
|
|
6
6
|
import { homedir } from "os";
|
|
@@ -1,10 +1,10 @@
|
|
|
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, Q as CheckpointStore, S as ApiClient, T as FallbackLlmBackend, W as setWebSocketToolExecutor, X as ReActAgent, Y as isReadOnlyTool, Z as CustomCommandStore, _ as createAgentDelegateTool, b as createSkillTool, d as createFindDefinitionTool, et as SessionStore, f as createTodoStore, g as BackgroundAgentManager, h as createBackgroundAgentTools, m as createCoordinateTaskTool, p as createWriteTodosTool, q as buildSystemPrompt, u as createGetFileStructureTool, v as AgentStore, w as WebSocketConnectionManager, y as SubagentOrchestrator } from "../tools-
|
|
3
|
-
import { n as logger, t as ConfigStore } from "../ConfigStore-
|
|
4
|
-
import { t as DEFAULT_SANDBOX_CONFIG } from "../types-
|
|
5
|
-
import { t as createSandboxRuntime } from "../SandboxRuntimeAdapter-
|
|
6
|
-
import { t as SandboxOrchestrator } from "../SandboxOrchestrator-
|
|
7
|
-
import { t as ProxyManager } from "../ProxyManager-
|
|
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, Q as CheckpointStore, S as ApiClient, T as FallbackLlmBackend, W as setWebSocketToolExecutor, X as ReActAgent, Y as isReadOnlyTool, Z as CustomCommandStore, _ as createAgentDelegateTool, b as createSkillTool, d as createFindDefinitionTool, et as SessionStore, f as createTodoStore, g as BackgroundAgentManager, h as createBackgroundAgentTools, m as createCoordinateTaskTool, p as createWriteTodosTool, q as buildSystemPrompt, u as createGetFileStructureTool, v as AgentStore, w as WebSocketConnectionManager, y as SubagentOrchestrator } from "../tools-_X4rUM4L.mjs";
|
|
3
|
+
import { n as logger, t as ConfigStore } from "../ConfigStore-DPWN3-0c.mjs";
|
|
4
|
+
import { t as DEFAULT_SANDBOX_CONFIG } from "../types-LyRNHOiS.mjs";
|
|
5
|
+
import { t as createSandboxRuntime } from "../SandboxRuntimeAdapter-ChGlxSGQ.mjs";
|
|
6
|
+
import { t as SandboxOrchestrator } from "../SandboxOrchestrator-BoINxbX4.mjs";
|
|
7
|
+
import { t as ProxyManager } from "../ProxyManager-CV94yZUW.mjs";
|
|
8
8
|
import { randomBytes } from "crypto";
|
|
9
9
|
import { v4 } from "uuid";
|
|
10
10
|
//#region src/commands/headlessCommand.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { a as version, i as forceCheckForUpdate } from "../updateChecker-
|
|
3
|
-
import { t as checkRipgrep } from "../ripgrepCheck-
|
|
2
|
+
import { a as version, i as forceCheckForUpdate } from "../updateChecker-C3DYG0Gn.mjs";
|
|
3
|
+
import { t as checkRipgrep } from "../ripgrepCheck-BmkyTK2i.mjs";
|
|
4
4
|
import { execSync } from "child_process";
|
|
5
5
|
//#region src/commands/updateCommand.ts
|
|
6
6
|
/**
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { t as assertPathAllowed } from "./pathValidation-
|
|
2
|
+
import { t as assertPathAllowed } from "./pathValidation-D8tjkQXE-1HwvsuYT.mjs";
|
|
3
3
|
import { existsSync, promises } from "fs";
|
|
4
4
|
import path from "path";
|
|
5
|
-
//#region ../../b4m-core/services/dist/createFile-
|
|
5
|
+
//#region ../../b4m-core/services/dist/createFile-DPv180yF.mjs
|
|
6
6
|
async function createFile(params, allowedDirectories) {
|
|
7
7
|
const { path: filePath, content, createDirectories = true } = params;
|
|
8
8
|
const resolvedPath = assertPathAllowed(filePath, allowedDirectories, "create");
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { t as assertPathAllowed } from "./pathValidation-
|
|
2
|
+
import { t as assertPathAllowed } from "./pathValidation-D8tjkQXE-1HwvsuYT.mjs";
|
|
3
3
|
import { existsSync, promises, statSync } from "fs";
|
|
4
4
|
import path from "path";
|
|
5
|
-
//#region ../../b4m-core/services/dist/deleteFile-
|
|
5
|
+
//#region ../../b4m-core/services/dist/deleteFile-BdjUwUQF.mjs
|
|
6
6
|
async function deleteFile(params, allowedDirectories) {
|
|
7
7
|
const { path: filePath, recursive = false } = params;
|
|
8
8
|
const resolvedPath = assertPathAllowed(filePath, allowedDirectories, "delete");
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { n as isPathAllowed } from "./pathValidation-
|
|
2
|
+
import { n as isPathAllowed } from "./pathValidation-D8tjkQXE-1HwvsuYT.mjs";
|
|
3
3
|
import path from "path";
|
|
4
4
|
import { stat } from "fs/promises";
|
|
5
5
|
import { glob } from "glob";
|
|
6
|
-
//#region ../../b4m-core/services/dist/globFiles-
|
|
6
|
+
//#region ../../b4m-core/services/dist/globFiles-DjfDGaUK.mjs
|
|
7
7
|
const DEFAULT_IGNORE_PATTERNS = [
|
|
8
8
|
"**/node_modules/**",
|
|
9
9
|
"**/.git/**",
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { n as isPathAllowed } from "./pathValidation-
|
|
2
|
+
import { n as isPathAllowed } from "./pathValidation-D8tjkQXE-1HwvsuYT.mjs";
|
|
3
3
|
import { execFile } from "child_process";
|
|
4
4
|
import { existsSync } from "fs";
|
|
5
5
|
import path from "path";
|
|
6
6
|
import { stat } from "fs/promises";
|
|
7
7
|
import { promisify } from "util";
|
|
8
|
-
//#region ../../b4m-core/services/dist/grepSearch-
|
|
8
|
+
//#region ../../b4m-core/services/dist/grepSearch-DJs-cubo.mjs
|
|
9
9
|
const execFileAsync = promisify(execFile);
|
|
10
10
|
/** Cached ripgrep binary path after first resolution */
|
|
11
11
|
let cachedRgPath = null;
|
package/dist/index.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { n as
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { a as version, t as checkForUpdate } from "./updateChecker-
|
|
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
|
-
|
|
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
|
-
|
|
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(-
|
|
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-
|
|
5858
|
-
import("./SandboxOrchestrator-
|
|
5859
|
-
import("./types-
|
|
5860
|
-
import("./ProxyManager-
|
|
5861
|
-
import("./ViolationLogStore-
|
|
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-
|
|
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
|
|
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-
|
|
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-
|
|
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
|