openfox 1.6.16 → 1.6.17
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/{auto-compaction-2RKC6DC2.js → auto-compaction-VOWM5ZHF.js} +2 -2
- package/dist/{chat-handler-IY2XVOO6.js → chat-handler-7HWNXQ4G.js} +4 -4
- package/dist/{chunk-T5PBG2PE.js → chunk-EAQNNNUR.js} +2 -2
- package/dist/{chunk-4OI4VPZ6.js → chunk-R7U3CD2U.js} +62 -47
- package/dist/{chunk-U54QVKL2.js → chunk-RPPEIB3F.js} +2 -2
- package/dist/{chunk-NN65D5SI.js → chunk-UJANEDP5.js} +65 -119
- package/dist/cli/dev.js +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/{orchestrator-U5VCLBYQ.js → orchestrator-DJZZPPE7.js} +3 -3
- package/dist/package.json +2 -2
- package/dist/{processor-VUEJM73B.js → processor-PVYCX5GK.js} +2 -2
- package/dist/{serve-GOLQMQFA.js → serve-FEG4BUYZ.js} +4 -4
- package/dist/server/index.js +3 -3
- package/dist/{tools-55YICCVH.js → tools-YRDPOS6P.js} +2 -2
- package/package.json +2 -2
- /package/dist/{server/commands/defaults → command-defaults}/commit-push.command.md +0 -0
- /package/dist/{server/commands/defaults → command-defaults}/init.command.md +0 -0
- /package/dist/{server/commands/defaults → command-defaults}/test-ui.command.md +0 -0
- /package/dist/{server/skills/defaults → skill-defaults}/browser.skill.md +0 -0
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
maybeAutoCompactContext,
|
|
3
3
|
performManualContextCompaction,
|
|
4
4
|
resolveCompactionStatsIdentity
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-R7U3CD2U.js";
|
|
6
6
|
import "./chunk-NBU6KIOD.js";
|
|
7
7
|
import "./chunk-574HZVLE.js";
|
|
8
8
|
import "./chunk-55N6FAAZ.js";
|
|
@@ -22,4 +22,4 @@ export {
|
|
|
22
22
|
performManualContextCompaction,
|
|
23
23
|
resolveCompactionStatsIdentity
|
|
24
24
|
};
|
|
25
|
-
//# sourceMappingURL=auto-compaction-
|
|
25
|
+
//# sourceMappingURL=auto-compaction-VOWM5ZHF.js.map
|
|
@@ -10,8 +10,8 @@ import {
|
|
|
10
10
|
} from "./chunk-F54ZJN4X.js";
|
|
11
11
|
import {
|
|
12
12
|
runChatTurn
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-RPPEIB3F.js";
|
|
14
|
+
import "./chunk-R7U3CD2U.js";
|
|
15
15
|
import "./chunk-NBU6KIOD.js";
|
|
16
16
|
import "./chunk-574HZVLE.js";
|
|
17
17
|
import "./chunk-55N6FAAZ.js";
|
|
@@ -61,7 +61,7 @@ async function startChatSession(sessionId, content, deps, options) {
|
|
|
61
61
|
sessionManager.setRunning(sessionId, true);
|
|
62
62
|
broadcastForSession(sessionId, createSessionRunningMessage(true));
|
|
63
63
|
try {
|
|
64
|
-
const { maybeAutoCompactContext } = await import("./auto-compaction-
|
|
64
|
+
const { maybeAutoCompactContext } = await import("./auto-compaction-VOWM5ZHF.js");
|
|
65
65
|
await maybeAutoCompactContext({
|
|
66
66
|
sessionManager,
|
|
67
67
|
sessionId,
|
|
@@ -170,4 +170,4 @@ export {
|
|
|
170
170
|
startChatSession,
|
|
171
171
|
stopSessionExecution
|
|
172
172
|
};
|
|
173
|
-
//# sourceMappingURL=chat-handler-
|
|
173
|
+
//# sourceMappingURL=chat-handler-7HWNXQ4G.js.map
|
|
@@ -154,7 +154,7 @@ async function runCli(options) {
|
|
|
154
154
|
if (!configExists) {
|
|
155
155
|
await runNetworkSetup(mode);
|
|
156
156
|
}
|
|
157
|
-
const { runServe } = await import("./serve-
|
|
157
|
+
const { runServe } = await import("./serve-FEG4BUYZ.js");
|
|
158
158
|
await runServe({
|
|
159
159
|
mode,
|
|
160
160
|
port: values.port ? parseInt(values.port) : void 0,
|
|
@@ -167,4 +167,4 @@ async function runCli(options) {
|
|
|
167
167
|
export {
|
|
168
168
|
runCli
|
|
169
169
|
};
|
|
170
|
-
//# sourceMappingURL=chunk-
|
|
170
|
+
//# sourceMappingURL=chunk-EAQNNNUR.js.map
|
|
@@ -2477,19 +2477,16 @@ function createToolProgressHandler(messageId, callId, onMessage) {
|
|
|
2477
2477
|
}
|
|
2478
2478
|
|
|
2479
2479
|
// src/server/skills/registry.ts
|
|
2480
|
-
import {
|
|
2481
|
-
import { join as
|
|
2482
|
-
import { constants as constants3 } from "fs";
|
|
2480
|
+
import { writeFile as writeFile4, mkdir as mkdir3, unlink as unlink2 } from "fs/promises";
|
|
2481
|
+
import { join as join5, dirname as dirname4 } from "path";
|
|
2483
2482
|
import { fileURLToPath as fileURLToPath2 } from "url";
|
|
2483
|
+
import matter3 from "gray-matter";
|
|
2484
|
+
|
|
2485
|
+
// src/server/shared/item-loader.ts
|
|
2486
|
+
import { readdir as readdir2, readFile as readFile6, access as access3 } from "fs/promises";
|
|
2487
|
+
import { join as join4 } from "path";
|
|
2488
|
+
import { constants as constants3 } from "fs";
|
|
2484
2489
|
import matter2 from "gray-matter";
|
|
2485
|
-
var __bundleDir2 = dirname4(fileURLToPath2(import.meta.url));
|
|
2486
|
-
var DEFAULTS_DIR2 = join4(__bundleDir2, "defaults");
|
|
2487
|
-
var DEFAULTS_DIR_ALT2 = join4(__bundleDir2, "skill-defaults");
|
|
2488
|
-
var SKILL_EXTENSION = ".skill.md";
|
|
2489
|
-
var SKILL_SETTING_PREFIX = "skill.enabled.";
|
|
2490
|
-
function getSkillsDir(configDir) {
|
|
2491
|
-
return join4(configDir, "skills");
|
|
2492
|
-
}
|
|
2493
2490
|
async function pathExists2(path) {
|
|
2494
2491
|
try {
|
|
2495
2492
|
await access3(path, constants3.R_OK);
|
|
@@ -2498,51 +2495,74 @@ async function pathExists2(path) {
|
|
|
2498
2495
|
return false;
|
|
2499
2496
|
}
|
|
2500
2497
|
}
|
|
2501
|
-
async function
|
|
2502
|
-
let defaults = [];
|
|
2498
|
+
async function getDefaultIds(dir, extension) {
|
|
2503
2499
|
try {
|
|
2504
|
-
|
|
2500
|
+
const files = (await readdir2(dir)).filter((f) => f.endsWith(extension));
|
|
2501
|
+
return files.map((f) => f.replace(extension, ""));
|
|
2505
2502
|
} catch {
|
|
2503
|
+
return [];
|
|
2506
2504
|
}
|
|
2507
|
-
if (!defaults.length) {
|
|
2508
|
-
try {
|
|
2509
|
-
defaults = await loadSkillsFromDir(DEFAULTS_DIR_ALT2);
|
|
2510
|
-
} catch {
|
|
2511
|
-
}
|
|
2512
|
-
}
|
|
2513
|
-
return defaults;
|
|
2514
2505
|
}
|
|
2515
|
-
async function
|
|
2506
|
+
async function loadItemsFromDir(dir, options) {
|
|
2516
2507
|
if (!await pathExists2(dir)) {
|
|
2517
2508
|
return [];
|
|
2518
2509
|
}
|
|
2519
2510
|
let files;
|
|
2520
2511
|
try {
|
|
2521
|
-
files = (await readdir2(dir)).filter((f) => f.endsWith(
|
|
2512
|
+
files = (await readdir2(dir)).filter((f) => f.endsWith(options.extension));
|
|
2522
2513
|
} catch {
|
|
2523
2514
|
return [];
|
|
2524
2515
|
}
|
|
2525
|
-
const
|
|
2516
|
+
const items = [];
|
|
2526
2517
|
for (const file of files) {
|
|
2527
2518
|
try {
|
|
2528
2519
|
const raw = await readFile6(join4(dir, file), "utf-8");
|
|
2529
2520
|
const { data, content } = matter2(raw);
|
|
2530
2521
|
if (data.id && content.trim()) {
|
|
2531
|
-
|
|
2522
|
+
items.push({
|
|
2532
2523
|
metadata: data,
|
|
2533
2524
|
prompt: content.trim()
|
|
2534
2525
|
});
|
|
2535
2526
|
} else {
|
|
2536
|
-
logger.warn(
|
|
2527
|
+
logger.warn(`Skipping invalid ${options.logName} file`, { file });
|
|
2537
2528
|
}
|
|
2538
2529
|
} catch (err) {
|
|
2539
|
-
logger.warn(
|
|
2530
|
+
logger.warn(`Failed to parse ${options.logName} file`, {
|
|
2531
|
+
file,
|
|
2532
|
+
error: err instanceof Error ? err.message : String(err)
|
|
2533
|
+
});
|
|
2540
2534
|
}
|
|
2541
2535
|
}
|
|
2542
|
-
return
|
|
2536
|
+
return items;
|
|
2537
|
+
}
|
|
2538
|
+
|
|
2539
|
+
// src/server/skills/registry.ts
|
|
2540
|
+
var __bundleDir2 = dirname4(fileURLToPath2(import.meta.url));
|
|
2541
|
+
var DEFAULTS_DIR2 = join5(__bundleDir2, "defaults");
|
|
2542
|
+
var DEFAULTS_DIR_ALT2 = join5(__bundleDir2, "skill-defaults");
|
|
2543
|
+
var SKILL_EXTENSION = ".skill.md";
|
|
2544
|
+
var SKILL_SETTING_PREFIX = "skill.enabled.";
|
|
2545
|
+
function getSkillsDir(configDir) {
|
|
2546
|
+
return join5(configDir, "skills");
|
|
2547
|
+
}
|
|
2548
|
+
async function loadDefaultSkills() {
|
|
2549
|
+
let defaults = await loadItemsFromDir(DEFAULTS_DIR2, {
|
|
2550
|
+
extension: SKILL_EXTENSION,
|
|
2551
|
+
logName: "skill"
|
|
2552
|
+
});
|
|
2553
|
+
if (!defaults.length) {
|
|
2554
|
+
defaults = await loadItemsFromDir(DEFAULTS_DIR_ALT2, {
|
|
2555
|
+
extension: SKILL_EXTENSION,
|
|
2556
|
+
logName: "skill"
|
|
2557
|
+
});
|
|
2558
|
+
}
|
|
2559
|
+
return defaults;
|
|
2543
2560
|
}
|
|
2544
2561
|
async function loadUserSkills(configDir) {
|
|
2545
|
-
return
|
|
2562
|
+
return loadItemsFromDir(getSkillsDir(configDir), {
|
|
2563
|
+
extension: SKILL_EXTENSION,
|
|
2564
|
+
logName: "skill"
|
|
2565
|
+
});
|
|
2546
2566
|
}
|
|
2547
2567
|
async function loadAllSkills(configDir) {
|
|
2548
2568
|
const [defaultSkills, userSkills] = await Promise.all([
|
|
@@ -2574,14 +2594,6 @@ function isSkillEnabled(skillId) {
|
|
|
2574
2594
|
function setSkillEnabled(skillId, enabled) {
|
|
2575
2595
|
setSetting(`${SKILL_SETTING_PREFIX}${skillId}`, String(enabled));
|
|
2576
2596
|
}
|
|
2577
|
-
async function getDefaultIds(dir, extension) {
|
|
2578
|
-
try {
|
|
2579
|
-
const files = (await readdir2(dir)).filter((f) => f.endsWith(extension));
|
|
2580
|
-
return files.map((f) => f.replace(extension, ""));
|
|
2581
|
-
} catch {
|
|
2582
|
-
return [];
|
|
2583
|
-
}
|
|
2584
|
-
}
|
|
2585
2597
|
async function getDefaultSkillIds() {
|
|
2586
2598
|
const ids = await getDefaultIds(DEFAULTS_DIR2, SKILL_EXTENSION);
|
|
2587
2599
|
if (ids.length) return ids;
|
|
@@ -2599,15 +2611,15 @@ function findSkillById(skillId, skills) {
|
|
|
2599
2611
|
return skills.find((s) => s.metadata.id === skillId);
|
|
2600
2612
|
}
|
|
2601
2613
|
async function skillExists(configDir, skillId) {
|
|
2602
|
-
return pathExists2(
|
|
2614
|
+
return pathExists2(join5(getSkillsDir(configDir), `${skillId}${SKILL_EXTENSION}`));
|
|
2603
2615
|
}
|
|
2604
2616
|
async function saveSkill(configDir, skill) {
|
|
2605
2617
|
const skillsDir = getSkillsDir(configDir);
|
|
2606
2618
|
if (!await pathExists2(skillsDir)) {
|
|
2607
2619
|
await mkdir3(skillsDir, { recursive: true });
|
|
2608
2620
|
}
|
|
2609
|
-
const filePath =
|
|
2610
|
-
const content =
|
|
2621
|
+
const filePath = join5(skillsDir, `${skill.metadata.id}${SKILL_EXTENSION}`);
|
|
2622
|
+
const content = matter3.stringify(skill.prompt, skill.metadata);
|
|
2611
2623
|
await writeFile4(filePath, content, "utf-8");
|
|
2612
2624
|
}
|
|
2613
2625
|
async function deleteSkill(configDir, skillId) {
|
|
@@ -2615,7 +2627,7 @@ async function deleteSkill(configDir, skillId) {
|
|
|
2615
2627
|
if (isDefault) {
|
|
2616
2628
|
return { success: false, reason: "Cannot delete built-in defaults" };
|
|
2617
2629
|
}
|
|
2618
|
-
const filePath =
|
|
2630
|
+
const filePath = join5(getSkillsDir(configDir), `${skillId}${SKILL_EXTENSION}`);
|
|
2619
2631
|
try {
|
|
2620
2632
|
await unlink2(filePath);
|
|
2621
2633
|
deleteSetting(`${SKILL_SETTING_PREFIX}${skillId}`);
|
|
@@ -3291,7 +3303,7 @@ var callSubAgentTool = {
|
|
|
3291
3303
|
};
|
|
3292
3304
|
}
|
|
3293
3305
|
try {
|
|
3294
|
-
const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-
|
|
3306
|
+
const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-YRDPOS6P.js");
|
|
3295
3307
|
const toolRegistry = getToolRegistryForAgent2(agentDef);
|
|
3296
3308
|
const turnMetrics = new TurnMetrics();
|
|
3297
3309
|
const result = await executeSubAgent({
|
|
@@ -3547,7 +3559,7 @@ var webFetchTool = createTool(
|
|
|
3547
3559
|
// src/server/dev-server/manager.ts
|
|
3548
3560
|
import { spawn as spawn4 } from "child_process";
|
|
3549
3561
|
import { readFile as readFile7, writeFile as writeFile5, mkdir as mkdir4 } from "fs/promises";
|
|
3550
|
-
import { resolve as resolve5, join as
|
|
3562
|
+
import { resolve as resolve5, join as join6 } from "path";
|
|
3551
3563
|
var MAX_LOG_LINES = 2e3;
|
|
3552
3564
|
var MAX_LOG_BYTES = 1e5;
|
|
3553
3565
|
var CONFIG_PATH = ".openfox/dev.json";
|
|
@@ -3603,7 +3615,7 @@ var DevServerManager = class {
|
|
|
3603
3615
|
}
|
|
3604
3616
|
async loadConfig(workdir) {
|
|
3605
3617
|
try {
|
|
3606
|
-
const configPath =
|
|
3618
|
+
const configPath = join6(this.resolveWorkdir(workdir), CONFIG_PATH);
|
|
3607
3619
|
const raw = await readFile7(configPath, "utf-8");
|
|
3608
3620
|
const parsed = JSON.parse(raw);
|
|
3609
3621
|
if (!parsed.command || !parsed.url) return null;
|
|
@@ -3618,9 +3630,9 @@ var DevServerManager = class {
|
|
|
3618
3630
|
}
|
|
3619
3631
|
async saveConfig(workdir, config) {
|
|
3620
3632
|
const resolved = this.resolveWorkdir(workdir);
|
|
3621
|
-
const dirPath =
|
|
3633
|
+
const dirPath = join6(resolved, ".openfox");
|
|
3622
3634
|
await mkdir4(dirPath, { recursive: true });
|
|
3623
|
-
const configPath =
|
|
3635
|
+
const configPath = join6(resolved, CONFIG_PATH);
|
|
3624
3636
|
await writeFile5(configPath, JSON.stringify(config, null, 2) + "\n", "utf-8");
|
|
3625
3637
|
}
|
|
3626
3638
|
async start(workdir) {
|
|
@@ -4390,6 +4402,9 @@ export {
|
|
|
4390
4402
|
createChatDoneEvent,
|
|
4391
4403
|
getAllInstructions,
|
|
4392
4404
|
assembleAgentRequest,
|
|
4405
|
+
pathExists2 as pathExists,
|
|
4406
|
+
getDefaultIds,
|
|
4407
|
+
loadItemsFromDir,
|
|
4393
4408
|
loadDefaultSkills,
|
|
4394
4409
|
loadUserSkills,
|
|
4395
4410
|
loadAllSkills,
|
|
@@ -4417,4 +4432,4 @@ export {
|
|
|
4417
4432
|
getToolRegistryForAgent,
|
|
4418
4433
|
createToolRegistry
|
|
4419
4434
|
};
|
|
4420
|
-
//# sourceMappingURL=chunk-
|
|
4435
|
+
//# sourceMappingURL=chunk-R7U3CD2U.js.map
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
getToolRegistryForAgent,
|
|
14
14
|
loadAllAgentsDefault,
|
|
15
15
|
runTopLevelAgentLoop
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-R7U3CD2U.js";
|
|
17
17
|
import {
|
|
18
18
|
getCurrentContextWindowId,
|
|
19
19
|
getEventStore
|
|
@@ -293,4 +293,4 @@ export {
|
|
|
293
293
|
runBuilderTurn,
|
|
294
294
|
runVerifierTurn
|
|
295
295
|
};
|
|
296
|
-
//# sourceMappingURL=chunk-
|
|
296
|
+
//# sourceMappingURL=chunk-RPPEIB3F.js.map
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
createVerifierNudgeConfig,
|
|
7
7
|
runBuilderTurn,
|
|
8
8
|
runChatTurn
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-RPPEIB3F.js";
|
|
10
10
|
import {
|
|
11
11
|
TurnMetrics,
|
|
12
12
|
agentExists,
|
|
@@ -25,6 +25,7 @@ import {
|
|
|
25
25
|
getAllInstructions,
|
|
26
26
|
getDefaultAgentContent,
|
|
27
27
|
getDefaultAgentIds,
|
|
28
|
+
getDefaultIds,
|
|
28
29
|
getDefaultSkillContent,
|
|
29
30
|
getDefaultSkillIds,
|
|
30
31
|
getEnabledSkillMetadata,
|
|
@@ -35,16 +36,18 @@ import {
|
|
|
35
36
|
loadAllSkills,
|
|
36
37
|
loadDefaultAgents,
|
|
37
38
|
loadDefaultSkills,
|
|
39
|
+
loadItemsFromDir,
|
|
38
40
|
loadUserAgents,
|
|
39
41
|
loadUserSkills,
|
|
40
42
|
maybeAutoCompactContext,
|
|
43
|
+
pathExists,
|
|
41
44
|
performManualContextCompaction,
|
|
42
45
|
saveAgent,
|
|
43
46
|
saveSkill,
|
|
44
47
|
setSkillEnabled,
|
|
45
48
|
skillExists,
|
|
46
49
|
spawnShellProcess
|
|
47
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-R7U3CD2U.js";
|
|
48
51
|
import {
|
|
49
52
|
getPathSeparator,
|
|
50
53
|
getPlatformShell,
|
|
@@ -145,8 +148,8 @@ import express from "express";
|
|
|
145
148
|
import cors from "cors";
|
|
146
149
|
import { createServer as createHttpServer } from "http";
|
|
147
150
|
import { fileURLToPath as fileURLToPath4 } from "url";
|
|
148
|
-
import { dirname as dirname5, resolve, join as
|
|
149
|
-
import { readFile as
|
|
151
|
+
import { dirname as dirname5, resolve, join as join5 } from "path";
|
|
152
|
+
import { readFile as readFile3 } from "fs/promises";
|
|
150
153
|
import { createServer as createViteServer } from "vite";
|
|
151
154
|
|
|
152
155
|
// src/server/llm/mock.ts
|
|
@@ -1425,7 +1428,7 @@ var WORKFLOW_EXTENSION = ".workflow.json";
|
|
|
1425
1428
|
function getWorkflowsDir(configDir) {
|
|
1426
1429
|
return join(configDir, "workflows");
|
|
1427
1430
|
}
|
|
1428
|
-
async function
|
|
1431
|
+
async function pathExists2(path) {
|
|
1429
1432
|
try {
|
|
1430
1433
|
await access(path, constants.R_OK);
|
|
1431
1434
|
return true;
|
|
@@ -1434,7 +1437,7 @@ async function pathExists(path) {
|
|
|
1434
1437
|
}
|
|
1435
1438
|
}
|
|
1436
1439
|
async function loadWorkflowsFromDir(dir) {
|
|
1437
|
-
if (!await
|
|
1440
|
+
if (!await pathExists2(dir)) {
|
|
1438
1441
|
return [];
|
|
1439
1442
|
}
|
|
1440
1443
|
let files;
|
|
@@ -1506,11 +1509,11 @@ function findWorkflowById(workflowId, workflows) {
|
|
|
1506
1509
|
}
|
|
1507
1510
|
async function workflowExists(configDir, workflowId) {
|
|
1508
1511
|
const filePath = join(getWorkflowsDir(configDir), `${workflowId}${WORKFLOW_EXTENSION}`);
|
|
1509
|
-
return
|
|
1512
|
+
return pathExists2(filePath);
|
|
1510
1513
|
}
|
|
1511
1514
|
async function saveWorkflow(configDir, workflow) {
|
|
1512
1515
|
const workflowsDir = getWorkflowsDir(configDir);
|
|
1513
|
-
if (!await
|
|
1516
|
+
if (!await pathExists2(workflowsDir)) {
|
|
1514
1517
|
await mkdir(workflowsDir, { recursive: true });
|
|
1515
1518
|
}
|
|
1516
1519
|
const filePath = join(workflowsDir, `${workflow.metadata.id}${WORKFLOW_EXTENSION}`);
|
|
@@ -4982,102 +4985,35 @@ function createSkillRoutes(configDir) {
|
|
|
4982
4985
|
import { Router as Router2 } from "express";
|
|
4983
4986
|
|
|
4984
4987
|
// src/server/commands/registry.ts
|
|
4985
|
-
import {
|
|
4986
|
-
|
|
4987
|
-
// src/server/commands/registry-utils.ts
|
|
4988
|
-
import { readdir as readdir2, readFile as readFile3, writeFile as writeFile3, mkdir as mkdir3, access as access3, unlink as unlink2 } from "fs/promises";
|
|
4988
|
+
import { writeFile as writeFile3, mkdir as mkdir3, unlink as unlink2 } from "fs/promises";
|
|
4989
4989
|
import { join as join4, dirname as dirname4 } from "path";
|
|
4990
|
-
import { constants as constants3 } from "fs";
|
|
4991
4990
|
import { fileURLToPath as fileURLToPath3 } from "url";
|
|
4992
4991
|
import matter from "gray-matter";
|
|
4993
|
-
|
|
4994
|
-
|
|
4995
|
-
|
|
4996
|
-
async function dirExists(path) {
|
|
4997
|
-
try {
|
|
4998
|
-
await access3(path, constants3.R_OK);
|
|
4999
|
-
return true;
|
|
5000
|
-
} catch {
|
|
5001
|
-
return false;
|
|
5002
|
-
}
|
|
5003
|
-
}
|
|
5004
|
-
async function ensureDir(path) {
|
|
5005
|
-
if (!await dirExists(path)) {
|
|
5006
|
-
await mkdir3(path, { recursive: true });
|
|
5007
|
-
}
|
|
5008
|
-
}
|
|
5009
|
-
async function loadItems(dir, extension) {
|
|
5010
|
-
if (!await dirExists(dir)) return [];
|
|
5011
|
-
let files;
|
|
5012
|
-
try {
|
|
5013
|
-
files = (await readdir2(dir)).filter((f) => f.endsWith(extension));
|
|
5014
|
-
} catch {
|
|
5015
|
-
return [];
|
|
5016
|
-
}
|
|
5017
|
-
const items = [];
|
|
5018
|
-
for (const file of files) {
|
|
5019
|
-
try {
|
|
5020
|
-
const raw = await readFile3(join4(dir, file), "utf-8");
|
|
5021
|
-
const { data, content } = matter(raw);
|
|
5022
|
-
if (data.id && content.trim()) {
|
|
5023
|
-
items.push({ metadata: data, prompt: content.trim() });
|
|
5024
|
-
} else {
|
|
5025
|
-
logger.warn(`Skipping invalid ${extension} file`, { file });
|
|
5026
|
-
}
|
|
5027
|
-
} catch (err) {
|
|
5028
|
-
logger.warn(`Failed to parse ${extension} file`, { file, error: err instanceof Error ? err.message : String(err) });
|
|
5029
|
-
}
|
|
5030
|
-
}
|
|
5031
|
-
return items;
|
|
5032
|
-
}
|
|
5033
|
-
async function saveItem(dir, id, extension, item) {
|
|
5034
|
-
await ensureDir(dir);
|
|
5035
|
-
const filePath = join4(dir, `${id}${extension}`);
|
|
5036
|
-
const content = matter.stringify(item.prompt, item.metadata);
|
|
5037
|
-
await writeFile3(filePath, content, "utf-8");
|
|
5038
|
-
}
|
|
5039
|
-
async function deleteItem(dir, id, extension) {
|
|
5040
|
-
const filePath = join4(dir, `${id}${extension}`);
|
|
5041
|
-
try {
|
|
5042
|
-
await unlink2(filePath);
|
|
5043
|
-
return true;
|
|
5044
|
-
} catch {
|
|
5045
|
-
return false;
|
|
5046
|
-
}
|
|
5047
|
-
}
|
|
5048
|
-
function findById(id, items) {
|
|
5049
|
-
return items.find((i) => i.metadata.id === id);
|
|
5050
|
-
}
|
|
5051
|
-
async function getDefaultIds(bundleDir, defaultsDir, extension) {
|
|
5052
|
-
try {
|
|
5053
|
-
const files = (await readdir2(join4(bundleDir, defaultsDir))).filter((f) => f.endsWith(extension));
|
|
5054
|
-
return files.map((f) => f.replace(extension, ""));
|
|
5055
|
-
} catch {
|
|
5056
|
-
return [];
|
|
5057
|
-
}
|
|
5058
|
-
}
|
|
5059
|
-
async function loadDefaults(bundleDir, defaultsDir, extension) {
|
|
5060
|
-
const dir = join4(bundleDir, defaultsDir);
|
|
5061
|
-
return loadItems(dir, extension);
|
|
5062
|
-
}
|
|
5063
|
-
|
|
5064
|
-
// src/server/commands/registry.ts
|
|
5065
|
-
var DEFAULTS_DIR2 = "defaults";
|
|
5066
|
-
var DEFAULTS_DIR_ALT2 = "command-defaults";
|
|
4992
|
+
var __bundleDir2 = dirname4(fileURLToPath3(import.meta.url));
|
|
4993
|
+
var DEFAULTS_DIR2 = join4(__bundleDir2, "defaults");
|
|
4994
|
+
var DEFAULTS_DIR_ALT2 = join4(__bundleDir2, "command-defaults");
|
|
5067
4995
|
var COMMAND_EXTENSION = ".command.md";
|
|
5068
4996
|
function getCommandsDir(configDir) {
|
|
5069
|
-
return
|
|
4997
|
+
return join4(configDir, "commands");
|
|
5070
4998
|
}
|
|
5071
4999
|
async function loadDefaultCommands() {
|
|
5072
|
-
|
|
5073
|
-
|
|
5000
|
+
let defaults = await loadItemsFromDir(DEFAULTS_DIR2, {
|
|
5001
|
+
extension: COMMAND_EXTENSION,
|
|
5002
|
+
logName: "command"
|
|
5003
|
+
});
|
|
5074
5004
|
if (!defaults.length) {
|
|
5075
|
-
defaults = await
|
|
5005
|
+
defaults = await loadItemsFromDir(DEFAULTS_DIR_ALT2, {
|
|
5006
|
+
extension: COMMAND_EXTENSION,
|
|
5007
|
+
logName: "command"
|
|
5008
|
+
});
|
|
5076
5009
|
}
|
|
5077
5010
|
return defaults;
|
|
5078
5011
|
}
|
|
5079
5012
|
async function loadUserCommands(configDir) {
|
|
5080
|
-
return
|
|
5013
|
+
return loadItemsFromDir(getCommandsDir(configDir), {
|
|
5014
|
+
extension: COMMAND_EXTENSION,
|
|
5015
|
+
logName: "command"
|
|
5016
|
+
});
|
|
5081
5017
|
}
|
|
5082
5018
|
async function loadAllCommands(configDir) {
|
|
5083
5019
|
const [defaultCommands, userCommands] = await Promise.all([
|
|
@@ -5094,10 +5030,9 @@ async function loadAllCommands(configDir) {
|
|
|
5094
5030
|
return Array.from(commandMap.values());
|
|
5095
5031
|
}
|
|
5096
5032
|
async function getDefaultCommandIds() {
|
|
5097
|
-
const
|
|
5098
|
-
const ids = await getDefaultIds(bundleDir, DEFAULTS_DIR2, COMMAND_EXTENSION);
|
|
5033
|
+
const ids = await getDefaultIds(DEFAULTS_DIR2, COMMAND_EXTENSION);
|
|
5099
5034
|
if (ids.length) return ids;
|
|
5100
|
-
return getDefaultIds(
|
|
5035
|
+
return getDefaultIds(DEFAULTS_DIR_ALT2, COMMAND_EXTENSION);
|
|
5101
5036
|
}
|
|
5102
5037
|
async function getDefaultCommandContent(commandId) {
|
|
5103
5038
|
const defaults = await loadDefaultCommands();
|
|
@@ -5108,21 +5043,32 @@ async function isDefaultCommand(commandId) {
|
|
|
5108
5043
|
return defaultIds.includes(commandId);
|
|
5109
5044
|
}
|
|
5110
5045
|
function findCommandById(commandId, commands) {
|
|
5111
|
-
return
|
|
5046
|
+
return commands.find((c) => c.metadata.id === commandId);
|
|
5112
5047
|
}
|
|
5113
5048
|
async function commandExists(configDir, commandId) {
|
|
5114
|
-
return
|
|
5049
|
+
return pathExists(join4(getCommandsDir(configDir), `${commandId}${COMMAND_EXTENSION}`));
|
|
5115
5050
|
}
|
|
5116
5051
|
async function saveCommand(configDir, command) {
|
|
5117
|
-
|
|
5052
|
+
const commandsDir = getCommandsDir(configDir);
|
|
5053
|
+
if (!await pathExists(commandsDir)) {
|
|
5054
|
+
await mkdir3(commandsDir, { recursive: true });
|
|
5055
|
+
}
|
|
5056
|
+
const filePath = join4(commandsDir, `${command.metadata.id}${COMMAND_EXTENSION}`);
|
|
5057
|
+
const content = matter.stringify(command.prompt, command.metadata);
|
|
5058
|
+
await writeFile3(filePath, content, "utf-8");
|
|
5118
5059
|
}
|
|
5119
5060
|
async function deleteCommand(configDir, commandId) {
|
|
5120
5061
|
const isDefault = await isDefaultCommand(commandId);
|
|
5121
5062
|
if (isDefault) {
|
|
5122
5063
|
return { success: false, reason: "Cannot delete built-in defaults" };
|
|
5123
5064
|
}
|
|
5124
|
-
const
|
|
5125
|
-
|
|
5065
|
+
const filePath = join4(getCommandsDir(configDir), `${commandId}${COMMAND_EXTENSION}`);
|
|
5066
|
+
try {
|
|
5067
|
+
await unlink2(filePath);
|
|
5068
|
+
return { success: true };
|
|
5069
|
+
} catch {
|
|
5070
|
+
return { success: false };
|
|
5071
|
+
}
|
|
5126
5072
|
}
|
|
5127
5073
|
|
|
5128
5074
|
// src/server/routes/commands.ts
|
|
@@ -5526,7 +5472,7 @@ function createTerminalRoutes() {
|
|
|
5526
5472
|
}
|
|
5527
5473
|
|
|
5528
5474
|
// src/constants.ts
|
|
5529
|
-
var VERSION = "1.6.
|
|
5475
|
+
var VERSION = "1.6.17";
|
|
5530
5476
|
|
|
5531
5477
|
// src/server/index.ts
|
|
5532
5478
|
var __dirname2 = dirname5(fileURLToPath4(import.meta.url));
|
|
@@ -5828,7 +5774,7 @@ async function createServerHandle(config) {
|
|
|
5828
5774
|
if (!callId || approved === void 0) {
|
|
5829
5775
|
return res.status(400).json({ error: "callId and approved are required" });
|
|
5830
5776
|
}
|
|
5831
|
-
const { providePathConfirmation: providePathConfirmation2 } = await import("./tools-
|
|
5777
|
+
const { providePathConfirmation: providePathConfirmation2 } = await import("./tools-YRDPOS6P.js");
|
|
5832
5778
|
const result = providePathConfirmation2(callId, approved, alwaysAllow);
|
|
5833
5779
|
if (!result.found) {
|
|
5834
5780
|
return res.status(404).json({ error: "No pending path confirmation with that ID" });
|
|
@@ -5853,7 +5799,7 @@ async function createServerHandle(config) {
|
|
|
5853
5799
|
if (!callId || !answer) {
|
|
5854
5800
|
return res.status(400).json({ error: "callId and answer are required" });
|
|
5855
5801
|
}
|
|
5856
|
-
const { provideAnswer: provideAnswer2 } = await import("./tools-
|
|
5802
|
+
const { provideAnswer: provideAnswer2 } = await import("./tools-YRDPOS6P.js");
|
|
5857
5803
|
const found = provideAnswer2(callId, answer);
|
|
5858
5804
|
if (!found) {
|
|
5859
5805
|
return res.status(404).json({ error: "No pending question with that ID" });
|
|
@@ -5889,8 +5835,8 @@ async function createServerHandle(config) {
|
|
|
5889
5835
|
if (!session) {
|
|
5890
5836
|
return res.status(404).json({ error: "Session not found" });
|
|
5891
5837
|
}
|
|
5892
|
-
const { stopSessionExecution } = await import("./chat-handler-
|
|
5893
|
-
const { cancelQuestionsForSession: cancelQuestionsForSession2, cancelPathConfirmationsForSession: cancelPathConfirmationsForSession2 } = await import("./tools-
|
|
5838
|
+
const { stopSessionExecution } = await import("./chat-handler-7HWNXQ4G.js");
|
|
5839
|
+
const { cancelQuestionsForSession: cancelQuestionsForSession2, cancelPathConfirmationsForSession: cancelPathConfirmationsForSession2 } = await import("./tools-YRDPOS6P.js");
|
|
5894
5840
|
stopSessionExecution(sessionId, sessionManager);
|
|
5895
5841
|
abortSession(sessionId);
|
|
5896
5842
|
cancelQuestionsForSession2(sessionId, "Session stopped by user");
|
|
@@ -6210,7 +6156,7 @@ async function createServerHandle(config) {
|
|
|
6210
6156
|
const entries = await import("fs/promises").then((m) => m.readdir(resolvedPath, { withFileTypes: true }));
|
|
6211
6157
|
const directories = entries.filter((entry) => entry.isDirectory() && !entry.name.startsWith(".")).map((entry) => ({
|
|
6212
6158
|
name: entry.name,
|
|
6213
|
-
path:
|
|
6159
|
+
path: join5(resolvedPath, entry.name)
|
|
6214
6160
|
})).sort((a, b) => a.name.localeCompare(b.name));
|
|
6215
6161
|
const parent = dirname5(resolvedPath);
|
|
6216
6162
|
const hasParent = parent !== resolvedPath;
|
|
@@ -6257,7 +6203,7 @@ async function createServerHandle(config) {
|
|
|
6257
6203
|
}
|
|
6258
6204
|
});
|
|
6259
6205
|
app.get("/fox.svg", (_req, res) => {
|
|
6260
|
-
|
|
6206
|
+
readFile3(join5(webDir, "fox.svg")).then((content) => {
|
|
6261
6207
|
res.set("Content-Type", "image/svg+xml");
|
|
6262
6208
|
res.send(content);
|
|
6263
6209
|
}).catch(() => {
|
|
@@ -6266,7 +6212,7 @@ async function createServerHandle(config) {
|
|
|
6266
6212
|
});
|
|
6267
6213
|
app.use(
|
|
6268
6214
|
"/sounds",
|
|
6269
|
-
express.static(
|
|
6215
|
+
express.static(join5(webDir, "public", "sounds"), {
|
|
6270
6216
|
setHeaders: (res) => {
|
|
6271
6217
|
res.set("Content-Type", "audio/mpeg");
|
|
6272
6218
|
}
|
|
@@ -6276,7 +6222,7 @@ async function createServerHandle(config) {
|
|
|
6276
6222
|
if (req.path.startsWith("/api/")) {
|
|
6277
6223
|
return;
|
|
6278
6224
|
}
|
|
6279
|
-
|
|
6225
|
+
readFile3(join5(webDir, "index.html"), "utf-8").then((indexHtml) => viteServer.transformIndexHtml(req.originalUrl, indexHtml)).then((transformed) => res.send(transformed)).catch((err) => {
|
|
6280
6226
|
logger.error("Error serving index.html", { error: err });
|
|
6281
6227
|
res.status(500).send("Server error");
|
|
6282
6228
|
});
|
|
@@ -6287,7 +6233,7 @@ async function createServerHandle(config) {
|
|
|
6287
6233
|
const distWebDir = resolve(__dirname2, "web");
|
|
6288
6234
|
app.use(
|
|
6289
6235
|
"/assets",
|
|
6290
|
-
express.static(
|
|
6236
|
+
express.static(join5(distWebDir, "assets"), {
|
|
6291
6237
|
setHeaders: (res, filepath) => {
|
|
6292
6238
|
if (filepath.endsWith(".css")) {
|
|
6293
6239
|
res.set("Content-Type", "text/css");
|
|
@@ -6295,11 +6241,11 @@ async function createServerHandle(config) {
|
|
|
6295
6241
|
}
|
|
6296
6242
|
})
|
|
6297
6243
|
);
|
|
6298
|
-
app.use("/manifest.webmanifest", express.static(
|
|
6299
|
-
app.use("/registerSW.js", express.static(
|
|
6300
|
-
app.use("/sw.js", express.static(
|
|
6244
|
+
app.use("/manifest.webmanifest", express.static(join5(distWebDir, "manifest.webmanifest")));
|
|
6245
|
+
app.use("/registerSW.js", express.static(join5(distWebDir, "registerSW.js")));
|
|
6246
|
+
app.use("/sw.js", express.static(join5(distWebDir, "sw.js")));
|
|
6301
6247
|
app.get("/fox.svg", (_req, res) => {
|
|
6302
|
-
|
|
6248
|
+
readFile3(join5(distWebDir, "fox.svg")).then((content) => {
|
|
6303
6249
|
res.set("Content-Type", "image/svg+xml");
|
|
6304
6250
|
res.send(content);
|
|
6305
6251
|
}).catch(() => {
|
|
@@ -6308,14 +6254,14 @@ async function createServerHandle(config) {
|
|
|
6308
6254
|
});
|
|
6309
6255
|
app.use(
|
|
6310
6256
|
"/sounds",
|
|
6311
|
-
express.static(
|
|
6257
|
+
express.static(join5(distWebDir, "sounds"), {
|
|
6312
6258
|
setHeaders: (res) => {
|
|
6313
6259
|
res.set("Content-Type", "audio/mpeg");
|
|
6314
6260
|
}
|
|
6315
6261
|
})
|
|
6316
6262
|
);
|
|
6317
6263
|
app.get("/", (_req, res) => {
|
|
6318
|
-
|
|
6264
|
+
readFile3(join5(distWebDir, "index.html"), "utf-8").then((content) => res.send(content)).catch(() => {
|
|
6319
6265
|
res.status(404).send("Web UI not built. Run `npm run build:web`");
|
|
6320
6266
|
});
|
|
6321
6267
|
});
|
|
@@ -6323,7 +6269,7 @@ async function createServerHandle(config) {
|
|
|
6323
6269
|
if (req.path.startsWith("/api/") || req.path.startsWith("/assets/") || req.path.startsWith("/sounds/") || req.path.startsWith("/manifest.webmanifest") || req.path.startsWith("/registerSW.js") || req.path.startsWith("/sw.js") || req.path === "/fox.svg") {
|
|
6324
6270
|
return;
|
|
6325
6271
|
}
|
|
6326
|
-
|
|
6272
|
+
readFile3(join5(distWebDir, "index.html"), "utf-8").then((content) => res.send(content)).catch(() => {
|
|
6327
6273
|
res.status(404).send("Web UI not built");
|
|
6328
6274
|
});
|
|
6329
6275
|
});
|
|
@@ -6338,7 +6284,7 @@ async function createServerHandle(config) {
|
|
|
6338
6284
|
providerManager
|
|
6339
6285
|
);
|
|
6340
6286
|
const wss = wssExports.wss;
|
|
6341
|
-
const { QueueProcessor } = await import("./processor-
|
|
6287
|
+
const { QueueProcessor } = await import("./processor-PVYCX5GK.js");
|
|
6342
6288
|
const queueProcessor = new QueueProcessor({
|
|
6343
6289
|
sessionManager,
|
|
6344
6290
|
providerManager,
|
|
@@ -6411,4 +6357,4 @@ export {
|
|
|
6411
6357
|
createServerHandle,
|
|
6412
6358
|
createServer
|
|
6413
6359
|
};
|
|
6414
|
-
//# sourceMappingURL=chunk-
|
|
6360
|
+
//# sourceMappingURL=chunk-UJANEDP5.js.map
|
package/dist/cli/dev.js
CHANGED
package/dist/cli/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
runBuilderTurn,
|
|
4
4
|
runChatTurn,
|
|
5
5
|
runVerifierTurn
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-RPPEIB3F.js";
|
|
7
7
|
import {
|
|
8
8
|
TurnMetrics,
|
|
9
9
|
createChatDoneEvent,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
createMessageStartEvent,
|
|
12
12
|
createToolCallEvent,
|
|
13
13
|
createToolResultEvent
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-R7U3CD2U.js";
|
|
15
15
|
import "./chunk-NBU6KIOD.js";
|
|
16
16
|
import "./chunk-574HZVLE.js";
|
|
17
17
|
import "./chunk-55N6FAAZ.js";
|
|
@@ -38,4 +38,4 @@ export {
|
|
|
38
38
|
runChatTurn,
|
|
39
39
|
runVerifierTurn
|
|
40
40
|
};
|
|
41
|
-
//# sourceMappingURL=orchestrator-
|
|
41
|
+
//# sourceMappingURL=orchestrator-DJZZPPE7.js.map
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openfox",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.17",
|
|
4
4
|
"description": "Local-LLM-first agentic coding assistant",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"dev": "OPENFOX_DEV=true tsx watch src/cli/dev.ts --no-browser",
|
|
28
28
|
"dev:web": "vite --config web/vite.config.ts",
|
|
29
29
|
"build": "FORCE_COLOR=1 npm run build:server && FORCE_COLOR=1 npm run build:web",
|
|
30
|
-
"build:server": "FORCE_COLOR=1 tsup && mkdir -p dist/
|
|
30
|
+
"build:server": "FORCE_COLOR=1 tsup && mkdir -p dist/command-defaults dist/skill-defaults dist/agent-defaults dist/workflow-defaults && cp src/server/commands/defaults/*.md dist/command-defaults/ && cp src/server/skills/defaults/*.md dist/skill-defaults/ && cp src/server/agents/defaults/*.md dist/agent-defaults/ && cp src/server/workflows/defaults/*.json dist/workflow-defaults/ && cp package.json dist/",
|
|
31
31
|
"build:web": "cd web && FORCE_COLOR=1 vite build --outDir ../dist/web",
|
|
32
32
|
"start": "node dist/cli/index.js",
|
|
33
33
|
"start:dev": "node dist/cli/dev.js",
|
|
@@ -175,7 +175,7 @@ var QueueProcessor = class {
|
|
|
175
175
|
backend: provider?.backend ?? llmClient.getBackend(),
|
|
176
176
|
model: llmClient.getModel()
|
|
177
177
|
};
|
|
178
|
-
const { runChatTurn } = await import("./orchestrator-
|
|
178
|
+
const { runChatTurn } = await import("./orchestrator-DJZZPPE7.js");
|
|
179
179
|
const runChatTurnParams = buildRunChatTurnParams({
|
|
180
180
|
sessionManager,
|
|
181
181
|
sessionId,
|
|
@@ -208,4 +208,4 @@ var QueueProcessor = class {
|
|
|
208
208
|
export {
|
|
209
209
|
QueueProcessor
|
|
210
210
|
};
|
|
211
|
-
//# sourceMappingURL=processor-
|
|
211
|
+
//# sourceMappingURL=processor-PVYCX5GK.js.map
|
|
@@ -6,10 +6,10 @@ import {
|
|
|
6
6
|
import {
|
|
7
7
|
VERSION,
|
|
8
8
|
createServer
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-UJANEDP5.js";
|
|
10
10
|
import "./chunk-F54ZJN4X.js";
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-RPPEIB3F.js";
|
|
12
|
+
import "./chunk-R7U3CD2U.js";
|
|
13
13
|
import "./chunk-NBU6KIOD.js";
|
|
14
14
|
import "./chunk-574HZVLE.js";
|
|
15
15
|
import "./chunk-KOUMYBYM.js";
|
|
@@ -188,4 +188,4 @@ async function runServe(options) {
|
|
|
188
188
|
export {
|
|
189
189
|
runServe
|
|
190
190
|
};
|
|
191
|
-
//# sourceMappingURL=serve-
|
|
191
|
+
//# sourceMappingURL=serve-FEG4BUYZ.js.map
|
package/dist/server/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createServer,
|
|
3
3
|
createServerHandle
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-UJANEDP5.js";
|
|
5
5
|
import "../chunk-F54ZJN4X.js";
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-RPPEIB3F.js";
|
|
7
|
+
import "../chunk-R7U3CD2U.js";
|
|
8
8
|
import "../chunk-NBU6KIOD.js";
|
|
9
9
|
import "../chunk-574HZVLE.js";
|
|
10
10
|
import "../chunk-KOUMYBYM.js";
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
requestPathAccess,
|
|
12
12
|
stepDoneTool,
|
|
13
13
|
validateToolAction
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-R7U3CD2U.js";
|
|
15
15
|
import "./chunk-NBU6KIOD.js";
|
|
16
16
|
import "./chunk-574HZVLE.js";
|
|
17
17
|
import "./chunk-55N6FAAZ.js";
|
|
@@ -47,4 +47,4 @@ export {
|
|
|
47
47
|
stepDoneTool,
|
|
48
48
|
validateToolAction
|
|
49
49
|
};
|
|
50
|
-
//# sourceMappingURL=tools-
|
|
50
|
+
//# sourceMappingURL=tools-YRDPOS6P.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openfox",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.17",
|
|
4
4
|
"description": "Local-LLM-first agentic coding assistant",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"dev": "OPENFOX_DEV=true tsx watch src/cli/dev.ts --no-browser",
|
|
28
28
|
"dev:web": "vite --config web/vite.config.ts",
|
|
29
29
|
"build": "FORCE_COLOR=1 npm run build:server && FORCE_COLOR=1 npm run build:web",
|
|
30
|
-
"build:server": "FORCE_COLOR=1 tsup && mkdir -p dist/
|
|
30
|
+
"build:server": "FORCE_COLOR=1 tsup && mkdir -p dist/command-defaults dist/skill-defaults dist/agent-defaults dist/workflow-defaults && cp src/server/commands/defaults/*.md dist/command-defaults/ && cp src/server/skills/defaults/*.md dist/skill-defaults/ && cp src/server/agents/defaults/*.md dist/agent-defaults/ && cp src/server/workflows/defaults/*.json dist/workflow-defaults/ && cp package.json dist/",
|
|
31
31
|
"build:web": "cd web && FORCE_COLOR=1 vite build --outDir ../dist/web",
|
|
32
32
|
"start": "node dist/cli/index.js",
|
|
33
33
|
"start:dev": "node dist/cli/dev.js",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|