open-agents-ai 0.103.12 → 0.103.13
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/index.js +961 -739
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -39,7 +39,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
39
39
|
mod
|
|
40
40
|
));
|
|
41
41
|
|
|
42
|
-
//
|
|
42
|
+
// packages/cli/dist/config.js
|
|
43
43
|
import { readFileSync, existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
44
44
|
import { homedir } from "node:os";
|
|
45
45
|
import { join } from "node:path";
|
|
@@ -126,7 +126,7 @@ function coerceConfigValue(key, value) {
|
|
|
126
126
|
}
|
|
127
127
|
var DEFAULT_CONFIG, VALID_BACKEND_TYPES;
|
|
128
128
|
var init_config = __esm({
|
|
129
|
-
"
|
|
129
|
+
"packages/cli/dist/config.js"() {
|
|
130
130
|
"use strict";
|
|
131
131
|
DEFAULT_CONFIG = Object.freeze({
|
|
132
132
|
backendUrl: "http://127.0.0.1:11434",
|
|
@@ -143,7 +143,7 @@ var init_config = __esm({
|
|
|
143
143
|
}
|
|
144
144
|
});
|
|
145
145
|
|
|
146
|
-
//
|
|
146
|
+
// packages/cli/dist/ui/output.js
|
|
147
147
|
function ansi(code, text, tty) {
|
|
148
148
|
return tty ? `\x1B[${code}m${text}\x1B[0m` : text;
|
|
149
149
|
}
|
|
@@ -222,7 +222,7 @@ function printReport(opts) {
|
|
|
222
222
|
}
|
|
223
223
|
var isTTY, isStderrTTY, c, STATUS_ICON, STATUS_COLOR;
|
|
224
224
|
var init_output = __esm({
|
|
225
|
-
"
|
|
225
|
+
"packages/cli/dist/ui/output.js"() {
|
|
226
226
|
"use strict";
|
|
227
227
|
isTTY = process.stdout.isTTY;
|
|
228
228
|
isStderrTTY = process.stderr.isTTY;
|
|
@@ -254,7 +254,7 @@ var init_output = __esm({
|
|
|
254
254
|
}
|
|
255
255
|
});
|
|
256
256
|
|
|
257
|
-
//
|
|
257
|
+
// packages/cli/dist/updater.js
|
|
258
258
|
import { execSync } from "node:child_process";
|
|
259
259
|
import { existsSync as existsSync2, readFileSync as readFileSync2, writeFileSync as writeFileSync2, mkdirSync as mkdirSync2 } from "node:fs";
|
|
260
260
|
import { join as join2 } from "node:path";
|
|
@@ -362,7 +362,7 @@ function formatUpdateBanner(info) {
|
|
|
362
362
|
}
|
|
363
363
|
var PACKAGE_NAME, CHECK_INTERVAL_MS, CACHE_DIR, CACHE_FILE;
|
|
364
364
|
var init_updater = __esm({
|
|
365
|
-
"
|
|
365
|
+
"packages/cli/dist/updater.js"() {
|
|
366
366
|
"use strict";
|
|
367
367
|
PACKAGE_NAME = "open-agents-ai";
|
|
368
368
|
CHECK_INTERVAL_MS = 60 * 60 * 1e3;
|
|
@@ -371,10 +371,10 @@ var init_updater = __esm({
|
|
|
371
371
|
}
|
|
372
372
|
});
|
|
373
373
|
|
|
374
|
-
//
|
|
374
|
+
// packages/cli/dist/ui/spinner.js
|
|
375
375
|
var FRAMES, INTERVAL_MS, Spinner;
|
|
376
376
|
var init_spinner = __esm({
|
|
377
|
-
"
|
|
377
|
+
"packages/cli/dist/ui/spinner.js"() {
|
|
378
378
|
"use strict";
|
|
379
379
|
FRAMES = ["\u280B", "\u2819", "\u2839", "\u2838", "\u283C", "\u2834", "\u2826", "\u2827", "\u2807", "\u280F"];
|
|
380
380
|
INTERVAL_MS = 80;
|
|
@@ -472,10 +472,10 @@ var init_spinner = __esm({
|
|
|
472
472
|
}
|
|
473
473
|
});
|
|
474
474
|
|
|
475
|
-
//
|
|
475
|
+
// packages/backend-vllm/dist/sleep.js
|
|
476
476
|
var SleepManager;
|
|
477
477
|
var init_sleep = __esm({
|
|
478
|
-
"
|
|
478
|
+
"packages/backend-vllm/dist/sleep.js"() {
|
|
479
479
|
"use strict";
|
|
480
480
|
SleepManager = class {
|
|
481
481
|
baseUrl;
|
|
@@ -551,7 +551,7 @@ var init_sleep = __esm({
|
|
|
551
551
|
}
|
|
552
552
|
});
|
|
553
553
|
|
|
554
|
-
//
|
|
554
|
+
// packages/backend-vllm/dist/normalizeUrl.js
|
|
555
555
|
function normalizeBaseUrl(url) {
|
|
556
556
|
let u = url.trim();
|
|
557
557
|
u = u.replace(/\/+$/, "");
|
|
@@ -583,7 +583,7 @@ function detectProvider(url) {
|
|
|
583
583
|
}
|
|
584
584
|
var PROVIDERS;
|
|
585
585
|
var init_normalizeUrl = __esm({
|
|
586
|
-
"
|
|
586
|
+
"packages/backend-vllm/dist/normalizeUrl.js"() {
|
|
587
587
|
"use strict";
|
|
588
588
|
PROVIDERS = [
|
|
589
589
|
// --- Cloud providers (specific domains) ---
|
|
@@ -652,7 +652,7 @@ var init_normalizeUrl = __esm({
|
|
|
652
652
|
}
|
|
653
653
|
});
|
|
654
654
|
|
|
655
|
-
//
|
|
655
|
+
// packages/backend-vllm/dist/VllmBackend.js
|
|
656
656
|
function agentMessageToChatMessage(msg) {
|
|
657
657
|
return {
|
|
658
658
|
role: msg.role,
|
|
@@ -664,7 +664,7 @@ function buildEmptyUsage() {
|
|
|
664
664
|
}
|
|
665
665
|
var VllmBackend;
|
|
666
666
|
var init_VllmBackend = __esm({
|
|
667
|
-
"
|
|
667
|
+
"packages/backend-vllm/dist/VllmBackend.js"() {
|
|
668
668
|
"use strict";
|
|
669
669
|
init_sleep();
|
|
670
670
|
init_normalizeUrl();
|
|
@@ -807,7 +807,7 @@ var init_VllmBackend = __esm({
|
|
|
807
807
|
}
|
|
808
808
|
});
|
|
809
809
|
|
|
810
|
-
//
|
|
810
|
+
// packages/backend-vllm/dist/OllamaBackend.js
|
|
811
811
|
function agentMessageToChatMessage2(msg) {
|
|
812
812
|
return {
|
|
813
813
|
role: msg.role,
|
|
@@ -819,7 +819,7 @@ function buildEmptyUsage2() {
|
|
|
819
819
|
}
|
|
820
820
|
var OllamaBackend;
|
|
821
821
|
var init_OllamaBackend = __esm({
|
|
822
|
-
"
|
|
822
|
+
"packages/backend-vllm/dist/OllamaBackend.js"() {
|
|
823
823
|
"use strict";
|
|
824
824
|
init_normalizeUrl();
|
|
825
825
|
OllamaBackend = class _OllamaBackend {
|
|
@@ -998,7 +998,7 @@ var init_OllamaBackend = __esm({
|
|
|
998
998
|
}
|
|
999
999
|
});
|
|
1000
1000
|
|
|
1001
|
-
//
|
|
1001
|
+
// packages/backend-vllm/dist/FakeBackend.js
|
|
1002
1002
|
function fnv1a32(input) {
|
|
1003
1003
|
const FNV_PRIME = 16777619;
|
|
1004
1004
|
const FNV_OFFSET_BASIS = 2166136261;
|
|
@@ -1011,7 +1011,7 @@ function fnv1a32(input) {
|
|
|
1011
1011
|
}
|
|
1012
1012
|
var FakeBackend;
|
|
1013
1013
|
var init_FakeBackend = __esm({
|
|
1014
|
-
"
|
|
1014
|
+
"packages/backend-vllm/dist/FakeBackend.js"() {
|
|
1015
1015
|
"use strict";
|
|
1016
1016
|
FakeBackend = class {
|
|
1017
1017
|
options;
|
|
@@ -1111,7 +1111,7 @@ var init_FakeBackend = __esm({
|
|
|
1111
1111
|
}
|
|
1112
1112
|
});
|
|
1113
1113
|
|
|
1114
|
-
//
|
|
1114
|
+
// packages/backend-vllm/dist/backendFactory.js
|
|
1115
1115
|
function detectBackendType(baseUrl) {
|
|
1116
1116
|
if (!baseUrl) {
|
|
1117
1117
|
return "ollama";
|
|
@@ -1150,7 +1150,7 @@ function createBackend(opts) {
|
|
|
1150
1150
|
}
|
|
1151
1151
|
}
|
|
1152
1152
|
var init_backendFactory = __esm({
|
|
1153
|
-
"
|
|
1153
|
+
"packages/backend-vllm/dist/backendFactory.js"() {
|
|
1154
1154
|
"use strict";
|
|
1155
1155
|
init_OllamaBackend();
|
|
1156
1156
|
init_VllmBackend();
|
|
@@ -1158,7 +1158,7 @@ var init_backendFactory = __esm({
|
|
|
1158
1158
|
}
|
|
1159
1159
|
});
|
|
1160
1160
|
|
|
1161
|
-
//
|
|
1161
|
+
// packages/backend-vllm/dist/metrics.js
|
|
1162
1162
|
function parseMetricValue(prometheusText, metricName) {
|
|
1163
1163
|
const lines = prometheusText.split("\n");
|
|
1164
1164
|
for (const line of lines) {
|
|
@@ -1179,7 +1179,7 @@ function parseMetricValue(prometheusText, metricName) {
|
|
|
1179
1179
|
}
|
|
1180
1180
|
var MetricsCollector;
|
|
1181
1181
|
var init_metrics = __esm({
|
|
1182
|
-
"
|
|
1182
|
+
"packages/backend-vllm/dist/metrics.js"() {
|
|
1183
1183
|
"use strict";
|
|
1184
1184
|
MetricsCollector = class {
|
|
1185
1185
|
metricsUrl;
|
|
@@ -1234,16 +1234,16 @@ var init_metrics = __esm({
|
|
|
1234
1234
|
}
|
|
1235
1235
|
});
|
|
1236
1236
|
|
|
1237
|
-
//
|
|
1237
|
+
// packages/backend-vllm/dist/routing.js
|
|
1238
1238
|
var init_routing = __esm({
|
|
1239
|
-
"
|
|
1239
|
+
"packages/backend-vllm/dist/routing.js"() {
|
|
1240
1240
|
"use strict";
|
|
1241
1241
|
}
|
|
1242
1242
|
});
|
|
1243
1243
|
|
|
1244
|
-
//
|
|
1244
|
+
// packages/backend-vllm/dist/index.js
|
|
1245
1245
|
var init_dist = __esm({
|
|
1246
|
-
"
|
|
1246
|
+
"packages/backend-vllm/dist/index.js"() {
|
|
1247
1247
|
"use strict";
|
|
1248
1248
|
init_VllmBackend();
|
|
1249
1249
|
init_OllamaBackend();
|
|
@@ -1256,18 +1256,18 @@ var init_dist = __esm({
|
|
|
1256
1256
|
}
|
|
1257
1257
|
});
|
|
1258
1258
|
|
|
1259
|
-
//
|
|
1259
|
+
// packages/execution/dist/tool-executor.js
|
|
1260
1260
|
var init_tool_executor = __esm({
|
|
1261
|
-
"
|
|
1261
|
+
"packages/execution/dist/tool-executor.js"() {
|
|
1262
1262
|
"use strict";
|
|
1263
1263
|
}
|
|
1264
1264
|
});
|
|
1265
1265
|
|
|
1266
|
-
//
|
|
1266
|
+
// packages/execution/dist/tools/shell.js
|
|
1267
1267
|
import { spawn } from "node:child_process";
|
|
1268
1268
|
var PERMISSION_ERROR_RE, ShellTool;
|
|
1269
1269
|
var init_shell = __esm({
|
|
1270
|
-
"
|
|
1270
|
+
"packages/execution/dist/tools/shell.js"() {
|
|
1271
1271
|
"use strict";
|
|
1272
1272
|
PERMISSION_ERROR_RE = /Permission denied|Operation not permitted|EACCES|EPERM|PermissionError|sudo:|not permitted|password is required|authentication failure/i;
|
|
1273
1273
|
ShellTool = class {
|
|
@@ -1464,7 +1464,7 @@ ${stderr}` : ""),
|
|
|
1464
1464
|
}
|
|
1465
1465
|
});
|
|
1466
1466
|
|
|
1467
|
-
//
|
|
1467
|
+
// packages/execution/dist/tools/file-read.js
|
|
1468
1468
|
import { readFile } from "node:fs/promises";
|
|
1469
1469
|
import { resolve } from "node:path";
|
|
1470
1470
|
function extractPath(args) {
|
|
@@ -1493,7 +1493,7 @@ function extractPath(args) {
|
|
|
1493
1493
|
}
|
|
1494
1494
|
var FileReadTool;
|
|
1495
1495
|
var init_file_read = __esm({
|
|
1496
|
-
"
|
|
1496
|
+
"packages/execution/dist/tools/file-read.js"() {
|
|
1497
1497
|
"use strict";
|
|
1498
1498
|
FileReadTool = class {
|
|
1499
1499
|
name = "file_read";
|
|
@@ -1581,7 +1581,7 @@ var init_file_read = __esm({
|
|
|
1581
1581
|
}
|
|
1582
1582
|
});
|
|
1583
1583
|
|
|
1584
|
-
//
|
|
1584
|
+
// packages/execution/dist/tools/file-write.js
|
|
1585
1585
|
import { writeFile, mkdir } from "node:fs/promises";
|
|
1586
1586
|
import { resolve as resolve2, dirname } from "node:path";
|
|
1587
1587
|
function extractWritePath(args) {
|
|
@@ -1594,7 +1594,7 @@ function extractWritePath(args) {
|
|
|
1594
1594
|
}
|
|
1595
1595
|
var FileWriteTool;
|
|
1596
1596
|
var init_file_write = __esm({
|
|
1597
|
-
"
|
|
1597
|
+
"packages/execution/dist/tools/file-write.js"() {
|
|
1598
1598
|
"use strict";
|
|
1599
1599
|
FileWriteTool = class {
|
|
1600
1600
|
name = "file_write";
|
|
@@ -1653,13 +1653,13 @@ var init_file_write = __esm({
|
|
|
1653
1653
|
}
|
|
1654
1654
|
});
|
|
1655
1655
|
|
|
1656
|
-
//
|
|
1656
|
+
// packages/execution/dist/tools/grep-search.js
|
|
1657
1657
|
import { execFile } from "node:child_process";
|
|
1658
1658
|
import { promisify } from "node:util";
|
|
1659
1659
|
import { resolve as resolve3 } from "node:path";
|
|
1660
1660
|
var execFileAsync, MAX_OUTPUT_LINES, GrepSearchTool;
|
|
1661
1661
|
var init_grep_search = __esm({
|
|
1662
|
-
"
|
|
1662
|
+
"packages/execution/dist/tools/grep-search.js"() {
|
|
1663
1663
|
"use strict";
|
|
1664
1664
|
execFileAsync = promisify(execFile);
|
|
1665
1665
|
MAX_OUTPUT_LINES = 100;
|
|
@@ -1758,13 +1758,13 @@ var init_grep_search = __esm({
|
|
|
1758
1758
|
}
|
|
1759
1759
|
});
|
|
1760
1760
|
|
|
1761
|
-
//
|
|
1761
|
+
// packages/execution/dist/tools/glob-find.js
|
|
1762
1762
|
import { execFile as execFile2 } from "node:child_process";
|
|
1763
1763
|
import { promisify as promisify2 } from "node:util";
|
|
1764
1764
|
import { resolve as resolve4 } from "node:path";
|
|
1765
1765
|
var execFileAsync2, MAX_RESULTS, GlobFindTool;
|
|
1766
1766
|
var init_glob_find = __esm({
|
|
1767
|
-
"
|
|
1767
|
+
"packages/execution/dist/tools/glob-find.js"() {
|
|
1768
1768
|
"use strict";
|
|
1769
1769
|
execFileAsync2 = promisify2(execFile2);
|
|
1770
1770
|
MAX_RESULTS = 50;
|
|
@@ -1835,10 +1835,10 @@ var init_glob_find = __esm({
|
|
|
1835
1835
|
}
|
|
1836
1836
|
});
|
|
1837
1837
|
|
|
1838
|
-
//
|
|
1838
|
+
// packages/execution/dist/tools/web-fetch.js
|
|
1839
1839
|
var DEFAULT_MAX_LENGTH, WebFetchTool;
|
|
1840
1840
|
var init_web_fetch = __esm({
|
|
1841
|
-
"
|
|
1841
|
+
"packages/execution/dist/tools/web-fetch.js"() {
|
|
1842
1842
|
"use strict";
|
|
1843
1843
|
DEFAULT_MAX_LENGTH = 5e3;
|
|
1844
1844
|
WebFetchTool = class {
|
|
@@ -1910,7 +1910,7 @@ var init_web_fetch = __esm({
|
|
|
1910
1910
|
}
|
|
1911
1911
|
});
|
|
1912
1912
|
|
|
1913
|
-
//
|
|
1913
|
+
// packages/execution/dist/tools/web-search.js
|
|
1914
1914
|
function detectSearchProvider() {
|
|
1915
1915
|
if (process.env["TAVILY_API_KEY"])
|
|
1916
1916
|
return "tavily";
|
|
@@ -1920,7 +1920,7 @@ function detectSearchProvider() {
|
|
|
1920
1920
|
}
|
|
1921
1921
|
var DEFAULT_NUM_RESULTS, DUCKDUCKGO_HTML_URL, TAVILY_API_URL, JINA_SEARCH_URL, WebSearchTool;
|
|
1922
1922
|
var init_web_search = __esm({
|
|
1923
|
-
"
|
|
1923
|
+
"packages/execution/dist/tools/web-search.js"() {
|
|
1924
1924
|
"use strict";
|
|
1925
1925
|
DEFAULT_NUM_RESULTS = 5;
|
|
1926
1926
|
DUCKDUCKGO_HTML_URL = "https://html.duckduckgo.com/html/";
|
|
@@ -2184,14 +2184,14 @@ ${formatted}`,
|
|
|
2184
2184
|
}
|
|
2185
2185
|
});
|
|
2186
2186
|
|
|
2187
|
-
//
|
|
2187
|
+
// packages/execution/dist/tools/web-crawl.js
|
|
2188
2188
|
import { execFile as execFile3 } from "node:child_process";
|
|
2189
2189
|
import { dirname as dirname2, join as join3 } from "node:path";
|
|
2190
2190
|
import { fileURLToPath } from "node:url";
|
|
2191
2191
|
import { existsSync as existsSync3 } from "node:fs";
|
|
2192
2192
|
var DEFAULT_MAX_LENGTH2, WebCrawlTool;
|
|
2193
2193
|
var init_web_crawl = __esm({
|
|
2194
|
-
"
|
|
2194
|
+
"packages/execution/dist/tools/web-crawl.js"() {
|
|
2195
2195
|
"use strict";
|
|
2196
2196
|
DEFAULT_MAX_LENGTH2 = 8e3;
|
|
2197
2197
|
WebCrawlTool = class {
|
|
@@ -2465,7 +2465,7 @@ Meta: ${metaKeys.map((k) => `${k}="${meta[k]?.slice(0, 80)}"`).join(", ")}`);
|
|
|
2465
2465
|
}
|
|
2466
2466
|
});
|
|
2467
2467
|
|
|
2468
|
-
//
|
|
2468
|
+
// packages/execution/dist/tools/file-edit.js
|
|
2469
2469
|
import { readFile as readFile2, writeFile as writeFile2 } from "node:fs/promises";
|
|
2470
2470
|
import { resolve as resolve5 } from "node:path";
|
|
2471
2471
|
function extractEditPath(args) {
|
|
@@ -2500,7 +2500,7 @@ function replaceAllOccurrences(haystack, needle, replacement) {
|
|
|
2500
2500
|
}
|
|
2501
2501
|
var FileEditTool;
|
|
2502
2502
|
var init_file_edit = __esm({
|
|
2503
|
-
"
|
|
2503
|
+
"packages/execution/dist/tools/file-edit.js"() {
|
|
2504
2504
|
"use strict";
|
|
2505
2505
|
FileEditTool = class {
|
|
2506
2506
|
name = "file_edit";
|
|
@@ -2610,12 +2610,12 @@ var init_file_edit = __esm({
|
|
|
2610
2610
|
}
|
|
2611
2611
|
});
|
|
2612
2612
|
|
|
2613
|
-
//
|
|
2613
|
+
// packages/execution/dist/tools/memory-read.js
|
|
2614
2614
|
import { readFile as readFile3 } from "node:fs/promises";
|
|
2615
2615
|
import { resolve as resolve6, join as join4 } from "node:path";
|
|
2616
2616
|
var MemoryReadTool;
|
|
2617
2617
|
var init_memory_read = __esm({
|
|
2618
|
-
"
|
|
2618
|
+
"packages/execution/dist/tools/memory-read.js"() {
|
|
2619
2619
|
"use strict";
|
|
2620
2620
|
MemoryReadTool = class {
|
|
2621
2621
|
name = "memory_read";
|
|
@@ -2705,13 +2705,13 @@ ${JSON.stringify(entries, null, 2)}`,
|
|
|
2705
2705
|
}
|
|
2706
2706
|
});
|
|
2707
2707
|
|
|
2708
|
-
//
|
|
2708
|
+
// packages/execution/dist/tools/memory-write.js
|
|
2709
2709
|
import { readFile as readFile4, writeFile as writeFile3, mkdir as mkdir2 } from "node:fs/promises";
|
|
2710
2710
|
import { resolve as resolve7, join as join5 } from "node:path";
|
|
2711
2711
|
import { randomBytes } from "node:crypto";
|
|
2712
2712
|
var MemoryWriteTool;
|
|
2713
2713
|
var init_memory_write = __esm({
|
|
2714
|
-
"
|
|
2714
|
+
"packages/execution/dist/tools/memory-write.js"() {
|
|
2715
2715
|
"use strict";
|
|
2716
2716
|
MemoryWriteTool = class {
|
|
2717
2717
|
name = "memory_write";
|
|
@@ -2796,7 +2796,7 @@ var init_memory_write = __esm({
|
|
|
2796
2796
|
}
|
|
2797
2797
|
});
|
|
2798
2798
|
|
|
2799
|
-
//
|
|
2799
|
+
// packages/execution/dist/tools/memory-search.js
|
|
2800
2800
|
import { readFile as readFile5, readdir } from "node:fs/promises";
|
|
2801
2801
|
import { resolve as resolve8, join as join6, basename } from "node:path";
|
|
2802
2802
|
import { existsSync as existsSync4 } from "node:fs";
|
|
@@ -2902,7 +2902,7 @@ function tokenize(text) {
|
|
|
2902
2902
|
}
|
|
2903
2903
|
var MemorySearchTool;
|
|
2904
2904
|
var init_memory_search = __esm({
|
|
2905
|
-
"
|
|
2905
|
+
"packages/execution/dist/tools/memory-search.js"() {
|
|
2906
2906
|
"use strict";
|
|
2907
2907
|
MemorySearchTool = class {
|
|
2908
2908
|
name = "memory_search";
|
|
@@ -3026,10 +3026,10 @@ Try broader terms or use memory_read with a specific topic.`,
|
|
|
3026
3026
|
}
|
|
3027
3027
|
});
|
|
3028
3028
|
|
|
3029
|
-
//
|
|
3029
|
+
// packages/execution/dist/tools/explore-tools.js
|
|
3030
3030
|
var TOOL_CATALOG, ExploreToolsTool;
|
|
3031
3031
|
var init_explore_tools = __esm({
|
|
3032
|
-
"
|
|
3032
|
+
"packages/execution/dist/tools/explore-tools.js"() {
|
|
3033
3033
|
"use strict";
|
|
3034
3034
|
TOOL_CATALOG = {
|
|
3035
3035
|
grep_search: "Search file contents with regex patterns",
|
|
@@ -3193,12 +3193,12 @@ Examples:`);
|
|
|
3193
3193
|
}
|
|
3194
3194
|
});
|
|
3195
3195
|
|
|
3196
|
-
//
|
|
3196
|
+
// packages/execution/dist/tools/list-directory.js
|
|
3197
3197
|
import { readdirSync, statSync } from "node:fs";
|
|
3198
3198
|
import { resolve as resolve9, join as join7 } from "node:path";
|
|
3199
3199
|
var EXCLUDED, MAX_ENTRIES, ListDirectoryTool;
|
|
3200
3200
|
var init_list_directory = __esm({
|
|
3201
|
-
"
|
|
3201
|
+
"packages/execution/dist/tools/list-directory.js"() {
|
|
3202
3202
|
"use strict";
|
|
3203
3203
|
EXCLUDED = /* @__PURE__ */ new Set(["node_modules", ".git"]);
|
|
3204
3204
|
MAX_ENTRIES = 100;
|
|
@@ -3280,11 +3280,11 @@ var init_list_directory = __esm({
|
|
|
3280
3280
|
}
|
|
3281
3281
|
});
|
|
3282
3282
|
|
|
3283
|
-
//
|
|
3283
|
+
// packages/execution/dist/tools/aiwg-setup.js
|
|
3284
3284
|
import { execSync as execSync2 } from "node:child_process";
|
|
3285
3285
|
var AiwgSetupTool;
|
|
3286
3286
|
var init_aiwg_setup = __esm({
|
|
3287
|
-
"
|
|
3287
|
+
"packages/execution/dist/tools/aiwg-setup.js"() {
|
|
3288
3288
|
"use strict";
|
|
3289
3289
|
AiwgSetupTool = class {
|
|
3290
3290
|
name = "aiwg_setup";
|
|
@@ -3358,13 +3358,13 @@ ${output}`,
|
|
|
3358
3358
|
}
|
|
3359
3359
|
});
|
|
3360
3360
|
|
|
3361
|
-
//
|
|
3361
|
+
// packages/execution/dist/tools/aiwg-health.js
|
|
3362
3362
|
import { execSync as execSync3 } from "node:child_process";
|
|
3363
3363
|
import { existsSync as existsSync5, readdirSync as readdirSync2, readFileSync as readFileSync3, statSync as statSync2 } from "node:fs";
|
|
3364
3364
|
import { join as join8 } from "node:path";
|
|
3365
3365
|
var AiwgHealthTool;
|
|
3366
3366
|
var init_aiwg_health = __esm({
|
|
3367
|
-
"
|
|
3367
|
+
"packages/execution/dist/tools/aiwg-health.js"() {
|
|
3368
3368
|
"use strict";
|
|
3369
3369
|
AiwgHealthTool = class {
|
|
3370
3370
|
name = "aiwg_health";
|
|
@@ -3570,11 +3570,11 @@ var init_aiwg_health = __esm({
|
|
|
3570
3570
|
}
|
|
3571
3571
|
});
|
|
3572
3572
|
|
|
3573
|
-
//
|
|
3573
|
+
// packages/execution/dist/tools/aiwg-workflow.js
|
|
3574
3574
|
import { execSync as execSync4 } from "node:child_process";
|
|
3575
3575
|
var AiwgWorkflowTool;
|
|
3576
3576
|
var init_aiwg_workflow = __esm({
|
|
3577
|
-
"
|
|
3577
|
+
"packages/execution/dist/tools/aiwg-workflow.js"() {
|
|
3578
3578
|
"use strict";
|
|
3579
3579
|
AiwgWorkflowTool = class {
|
|
3580
3580
|
name = "aiwg_workflow";
|
|
@@ -3655,7 +3655,7 @@ var init_aiwg_workflow = __esm({
|
|
|
3655
3655
|
}
|
|
3656
3656
|
});
|
|
3657
3657
|
|
|
3658
|
-
//
|
|
3658
|
+
// packages/execution/dist/tools/batch-edit.js
|
|
3659
3659
|
import { readFile as readFile6, writeFile as writeFile4 } from "node:fs/promises";
|
|
3660
3660
|
import { resolve as resolve10 } from "node:path";
|
|
3661
3661
|
function countOccurrences2(haystack, needle) {
|
|
@@ -3669,7 +3669,7 @@ function countOccurrences2(haystack, needle) {
|
|
|
3669
3669
|
}
|
|
3670
3670
|
var BatchEditTool;
|
|
3671
3671
|
var init_batch_edit = __esm({
|
|
3672
|
-
"
|
|
3672
|
+
"packages/execution/dist/tools/batch-edit.js"() {
|
|
3673
3673
|
"use strict";
|
|
3674
3674
|
BatchEditTool = class {
|
|
3675
3675
|
name = "batch_edit";
|
|
@@ -3781,12 +3781,12 @@ ${results.join("\n")}`,
|
|
|
3781
3781
|
}
|
|
3782
3782
|
});
|
|
3783
3783
|
|
|
3784
|
-
//
|
|
3784
|
+
// packages/execution/dist/tools/file-patch.js
|
|
3785
3785
|
import { readFile as readFile7, writeFile as writeFile5, copyFile } from "node:fs/promises";
|
|
3786
3786
|
import { resolve as resolve11 } from "node:path";
|
|
3787
3787
|
var FilePatchTool;
|
|
3788
3788
|
var init_file_patch = __esm({
|
|
3789
|
-
"
|
|
3789
|
+
"packages/execution/dist/tools/file-patch.js"() {
|
|
3790
3790
|
"use strict";
|
|
3791
3791
|
FilePatchTool = class {
|
|
3792
3792
|
name = "file_patch";
|
|
@@ -3953,12 +3953,12 @@ ${diff}`,
|
|
|
3953
3953
|
}
|
|
3954
3954
|
});
|
|
3955
3955
|
|
|
3956
|
-
//
|
|
3956
|
+
// packages/execution/dist/tools/codebase-map.js
|
|
3957
3957
|
import { readdirSync as readdirSync3, statSync as statSync3, readFileSync as readFileSync4, existsSync as existsSync6 } from "node:fs";
|
|
3958
3958
|
import { join as join9, relative, extname } from "node:path";
|
|
3959
3959
|
var CodebaseMapTool;
|
|
3960
3960
|
var init_codebase_map = __esm({
|
|
3961
|
-
"
|
|
3961
|
+
"packages/execution/dist/tools/codebase-map.js"() {
|
|
3962
3962
|
"use strict";
|
|
3963
3963
|
CodebaseMapTool = class {
|
|
3964
3964
|
name = "codebase_map";
|
|
@@ -4241,13 +4241,13 @@ var init_codebase_map = __esm({
|
|
|
4241
4241
|
}
|
|
4242
4242
|
});
|
|
4243
4243
|
|
|
4244
|
-
//
|
|
4244
|
+
// packages/execution/dist/tools/diagnostic.js
|
|
4245
4245
|
import { execSync as execSync5 } from "node:child_process";
|
|
4246
4246
|
import { existsSync as existsSync7, readFileSync as readFileSync5 } from "node:fs";
|
|
4247
4247
|
import { join as join10 } from "node:path";
|
|
4248
4248
|
var DiagnosticTool;
|
|
4249
4249
|
var init_diagnostic = __esm({
|
|
4250
|
-
"
|
|
4250
|
+
"packages/execution/dist/tools/diagnostic.js"() {
|
|
4251
4251
|
"use strict";
|
|
4252
4252
|
DiagnosticTool = class {
|
|
4253
4253
|
name = "diagnostic";
|
|
@@ -4386,13 +4386,13 @@ ${err.stderr ?? ""}`.trim(),
|
|
|
4386
4386
|
}
|
|
4387
4387
|
});
|
|
4388
4388
|
|
|
4389
|
-
//
|
|
4389
|
+
// packages/execution/dist/tools/git-info.js
|
|
4390
4390
|
import { execSync as execSync6 } from "node:child_process";
|
|
4391
4391
|
import { existsSync as existsSync8 } from "node:fs";
|
|
4392
4392
|
import { join as join11 } from "node:path";
|
|
4393
4393
|
var GitInfoTool;
|
|
4394
4394
|
var init_git_info = __esm({
|
|
4395
|
-
"
|
|
4395
|
+
"packages/execution/dist/tools/git-info.js"() {
|
|
4396
4396
|
"use strict";
|
|
4397
4397
|
GitInfoTool = class {
|
|
4398
4398
|
name = "git_info";
|
|
@@ -4517,7 +4517,7 @@ var init_git_info = __esm({
|
|
|
4517
4517
|
}
|
|
4518
4518
|
});
|
|
4519
4519
|
|
|
4520
|
-
//
|
|
4520
|
+
// packages/execution/dist/tools/background-task.js
|
|
4521
4521
|
import { spawn as spawn2 } from "node:child_process";
|
|
4522
4522
|
function toInfo(entry) {
|
|
4523
4523
|
return {
|
|
@@ -4533,7 +4533,7 @@ function toInfo(entry) {
|
|
|
4533
4533
|
}
|
|
4534
4534
|
var BackgroundTaskManager, BackgroundRunTool, TaskStatusTool, TaskOutputTool, TaskStopTool;
|
|
4535
4535
|
var init_background_task = __esm({
|
|
4536
|
-
"
|
|
4536
|
+
"packages/execution/dist/tools/background-task.js"() {
|
|
4537
4537
|
"use strict";
|
|
4538
4538
|
BackgroundTaskManager = class {
|
|
4539
4539
|
tasks = /* @__PURE__ */ new Map();
|
|
@@ -4805,7 +4805,7 @@ Exit code: ${task.exitCode ?? "N/A"}`,
|
|
|
4805
4805
|
}
|
|
4806
4806
|
});
|
|
4807
4807
|
|
|
4808
|
-
//
|
|
4808
|
+
// packages/execution/dist/system-deps.js
|
|
4809
4809
|
import { execSync as execSync7 } from "node:child_process";
|
|
4810
4810
|
function detectPackageManager() {
|
|
4811
4811
|
if (_detectedPkgManager !== void 0)
|
|
@@ -4946,7 +4946,7 @@ function ensureCommand(command) {
|
|
|
4946
4946
|
}
|
|
4947
4947
|
var DESKTOP_DEPS, _detectedPkgManager, _cache, _sudoPassword;
|
|
4948
4948
|
var init_system_deps = __esm({
|
|
4949
|
-
"
|
|
4949
|
+
"packages/execution/dist/system-deps.js"() {
|
|
4950
4950
|
"use strict";
|
|
4951
4951
|
DESKTOP_DEPS = [
|
|
4952
4952
|
{
|
|
@@ -4997,7 +4997,7 @@ var init_system_deps = __esm({
|
|
|
4997
4997
|
}
|
|
4998
4998
|
});
|
|
4999
4999
|
|
|
5000
|
-
//
|
|
5000
|
+
// packages/execution/dist/tools/image.js
|
|
5001
5001
|
import { existsSync as existsSync9, readFileSync as readFileSync6, statSync as statSync4 } from "node:fs";
|
|
5002
5002
|
import { resolve as resolve12, extname as extname2, basename as basename2 } from "node:path";
|
|
5003
5003
|
import { execSync as execSync8 } from "node:child_process";
|
|
@@ -5086,7 +5086,7 @@ function runOCR(filePath) {
|
|
|
5086
5086
|
}
|
|
5087
5087
|
var IMAGE_EXTENSIONS, ImageReadTool, ScreenshotTool, OCRTool;
|
|
5088
5088
|
var init_image = __esm({
|
|
5089
|
-
"
|
|
5089
|
+
"packages/execution/dist/tools/image.js"() {
|
|
5090
5090
|
"use strict";
|
|
5091
5091
|
init_system_deps();
|
|
5092
5092
|
IMAGE_EXTENSIONS = /* @__PURE__ */ new Set([
|
|
@@ -5376,7 +5376,7 @@ ${text}`,
|
|
|
5376
5376
|
}
|
|
5377
5377
|
});
|
|
5378
5378
|
|
|
5379
|
-
//
|
|
5379
|
+
// packages/execution/dist/tools/custom-tool.js
|
|
5380
5380
|
var custom_tool_exports = {};
|
|
5381
5381
|
__export(custom_tool_exports, {
|
|
5382
5382
|
CustomTool: () => CustomTool,
|
|
@@ -5422,8 +5422,8 @@ function deleteCustomToolDefinition(name, scope, repoRoot) {
|
|
|
5422
5422
|
const dir = scope === "project" && repoRoot ? projectToolsDir(repoRoot) : globalToolsDir();
|
|
5423
5423
|
const filePath = join13(dir, `${name}.json`);
|
|
5424
5424
|
if (existsSync10(filePath)) {
|
|
5425
|
-
const { unlinkSync:
|
|
5426
|
-
|
|
5425
|
+
const { unlinkSync: unlinkSync8 } = __require("node:fs");
|
|
5426
|
+
unlinkSync8(filePath);
|
|
5427
5427
|
return true;
|
|
5428
5428
|
}
|
|
5429
5429
|
return false;
|
|
@@ -5479,7 +5479,7 @@ function loadFromDirectory(dir) {
|
|
|
5479
5479
|
}
|
|
5480
5480
|
var CustomTool;
|
|
5481
5481
|
var init_custom_tool = __esm({
|
|
5482
|
-
"
|
|
5482
|
+
"packages/execution/dist/tools/custom-tool.js"() {
|
|
5483
5483
|
"use strict";
|
|
5484
5484
|
CustomTool = class {
|
|
5485
5485
|
name;
|
|
@@ -5588,10 +5588,10 @@ ${stderr}` : ""),
|
|
|
5588
5588
|
}
|
|
5589
5589
|
});
|
|
5590
5590
|
|
|
5591
|
-
//
|
|
5591
|
+
// packages/execution/dist/tools/tool-creator.js
|
|
5592
5592
|
var CreateToolTool, ManageToolsTool;
|
|
5593
5593
|
var init_tool_creator = __esm({
|
|
5594
|
-
"
|
|
5594
|
+
"packages/execution/dist/tools/tool-creator.js"() {
|
|
5595
5595
|
"use strict";
|
|
5596
5596
|
init_custom_tool();
|
|
5597
5597
|
CreateToolTool = class {
|
|
@@ -5882,7 +5882,7 @@ var init_tool_creator = __esm({
|
|
|
5882
5882
|
}
|
|
5883
5883
|
});
|
|
5884
5884
|
|
|
5885
|
-
//
|
|
5885
|
+
// packages/execution/dist/tools/skill-tools.js
|
|
5886
5886
|
import { existsSync as existsSync11, readdirSync as readdirSync5, readFileSync as readFileSync8 } from "node:fs";
|
|
5887
5887
|
import { join as join14, basename as basename3, dirname as dirname3 } from "node:path";
|
|
5888
5888
|
import { homedir as homedir5 } from "node:os";
|
|
@@ -6197,7 +6197,7 @@ function parseTriggers(filePath) {
|
|
|
6197
6197
|
}
|
|
6198
6198
|
var _cachedAiwgPkgRoot, SkillListTool, SkillExecuteTool;
|
|
6199
6199
|
var init_skill_tools = __esm({
|
|
6200
|
-
"
|
|
6200
|
+
"packages/execution/dist/tools/skill-tools.js"() {
|
|
6201
6201
|
"use strict";
|
|
6202
6202
|
SkillListTool = class {
|
|
6203
6203
|
name = "skill_list";
|
|
@@ -6322,7 +6322,7 @@ ${content}`,
|
|
|
6322
6322
|
}
|
|
6323
6323
|
});
|
|
6324
6324
|
|
|
6325
|
-
//
|
|
6325
|
+
// packages/execution/dist/tools/skill-builder.js
|
|
6326
6326
|
import { existsSync as existsSync12, mkdirSync as mkdirSync4, readFileSync as readFileSync9, writeFileSync as writeFileSync4 } from "node:fs";
|
|
6327
6327
|
import { join as join15, dirname as dirname4 } from "node:path";
|
|
6328
6328
|
function loadBuilderPrompt(name, vars) {
|
|
@@ -6360,7 +6360,7 @@ function extractJSON(text) {
|
|
|
6360
6360
|
}
|
|
6361
6361
|
var SkillBuildTool;
|
|
6362
6362
|
var init_skill_builder = __esm({
|
|
6363
|
-
"
|
|
6363
|
+
"packages/execution/dist/tools/skill-builder.js"() {
|
|
6364
6364
|
"use strict";
|
|
6365
6365
|
SkillBuildTool = class {
|
|
6366
6366
|
name = "skill_build";
|
|
@@ -6567,7 +6567,7 @@ ${content}`
|
|
|
6567
6567
|
}
|
|
6568
6568
|
});
|
|
6569
6569
|
|
|
6570
|
-
//
|
|
6570
|
+
// packages/execution/dist/tools/transcribe-tool.js
|
|
6571
6571
|
import { existsSync as existsSync13, mkdirSync as mkdirSync5, writeFileSync as writeFileSync5, readFileSync as readFileSync10, unlinkSync } from "node:fs";
|
|
6572
6572
|
import { join as join16, basename as basename4, extname as extname3, resolve as resolve13 } from "node:path";
|
|
6573
6573
|
import { homedir as homedir6 } from "node:os";
|
|
@@ -6620,7 +6620,7 @@ function formatTime(seconds) {
|
|
|
6620
6620
|
}
|
|
6621
6621
|
var AUDIO_EXTS, VIDEO_EXTS, _tcModule, _tcChecked, TranscribeFileTool, TranscribeUrlTool;
|
|
6622
6622
|
var init_transcribe_tool = __esm({
|
|
6623
|
-
"
|
|
6623
|
+
"packages/execution/dist/tools/transcribe-tool.js"() {
|
|
6624
6624
|
"use strict";
|
|
6625
6625
|
AUDIO_EXTS = /* @__PURE__ */ new Set([
|
|
6626
6626
|
".mp3",
|
|
@@ -6861,7 +6861,7 @@ ${result.output}`,
|
|
|
6861
6861
|
}
|
|
6862
6862
|
});
|
|
6863
6863
|
|
|
6864
|
-
//
|
|
6864
|
+
// packages/execution/dist/tools/structured-file.js
|
|
6865
6865
|
import { writeFile as writeFile6, mkdir as mkdir3 } from "node:fs/promises";
|
|
6866
6866
|
import { resolve as resolve14, dirname as dirname5, extname as extname4 } from "node:path";
|
|
6867
6867
|
function jsonToCSV(data, separator = ",") {
|
|
@@ -6898,7 +6898,7 @@ function jsonToMarkdownTable(data) {
|
|
|
6898
6898
|
}
|
|
6899
6899
|
var StructuredFileTool;
|
|
6900
6900
|
var init_structured_file = __esm({
|
|
6901
|
-
"
|
|
6901
|
+
"packages/execution/dist/tools/structured-file.js"() {
|
|
6902
6902
|
"use strict";
|
|
6903
6903
|
StructuredFileTool = class {
|
|
6904
6904
|
name = "create_structured_file";
|
|
@@ -7041,7 +7041,7 @@ var init_structured_file = __esm({
|
|
|
7041
7041
|
}
|
|
7042
7042
|
});
|
|
7043
7043
|
|
|
7044
|
-
//
|
|
7044
|
+
// packages/execution/dist/tools/code-sandbox.js
|
|
7045
7045
|
import { spawn as spawn5 } from "node:child_process";
|
|
7046
7046
|
import { writeFile as writeFile7, mkdtemp, rm, readdir as readdir2, stat } from "node:fs/promises";
|
|
7047
7047
|
import { join as join17 } from "node:path";
|
|
@@ -7122,7 +7122,7 @@ async function listCreatedFiles(dir) {
|
|
|
7122
7122
|
}
|
|
7123
7123
|
var LANGUAGE_CONFIG, CodeSandboxTool;
|
|
7124
7124
|
var init_code_sandbox = __esm({
|
|
7125
|
-
"
|
|
7125
|
+
"packages/execution/dist/tools/code-sandbox.js"() {
|
|
7126
7126
|
"use strict";
|
|
7127
7127
|
LANGUAGE_CONFIG = {
|
|
7128
7128
|
javascript: { ext: ".js", cmd: "node", args: (f) => [f] },
|
|
@@ -7294,7 +7294,7 @@ ${result.filesCreated.join("\n")}`);
|
|
|
7294
7294
|
}
|
|
7295
7295
|
});
|
|
7296
7296
|
|
|
7297
|
-
//
|
|
7297
|
+
// packages/execution/dist/tools/structured-read.js
|
|
7298
7298
|
import { readFile as readFile8, stat as stat2 } from "node:fs/promises";
|
|
7299
7299
|
import { resolve as resolve15, extname as extname5 } from "node:path";
|
|
7300
7300
|
function parseCSV(text, separator = ",") {
|
|
@@ -7402,7 +7402,7 @@ function detectBinaryFormat(buffer) {
|
|
|
7402
7402
|
}
|
|
7403
7403
|
var StructuredReadTool;
|
|
7404
7404
|
var init_structured_read = __esm({
|
|
7405
|
-
"
|
|
7405
|
+
"packages/execution/dist/tools/structured-read.js"() {
|
|
7406
7406
|
"use strict";
|
|
7407
7407
|
StructuredReadTool = class {
|
|
7408
7408
|
name = "read_structured_file";
|
|
@@ -7629,7 +7629,7 @@ ${parts.join("\n\n")}`,
|
|
|
7629
7629
|
}
|
|
7630
7630
|
});
|
|
7631
7631
|
|
|
7632
|
-
//
|
|
7632
|
+
// packages/execution/dist/tools/vision.js
|
|
7633
7633
|
import { readFileSync as readFileSync11, existsSync as existsSync14, statSync as statSync5 } from "node:fs";
|
|
7634
7634
|
import { execSync as execSync11, spawn as spawn6 } from "node:child_process";
|
|
7635
7635
|
import { resolve as resolve16, extname as extname6, basename as basename5, dirname as dirname6, join as join18 } from "node:path";
|
|
@@ -7776,7 +7776,7 @@ function loadImageBuffer(workingDir, rawPath) {
|
|
|
7776
7776
|
}
|
|
7777
7777
|
var moondreamClient, moondreamError, stationProcess, IMAGE_EXTENSIONS2, VisionTool;
|
|
7778
7778
|
var init_vision = __esm({
|
|
7779
|
-
"
|
|
7779
|
+
"packages/execution/dist/tools/vision.js"() {
|
|
7780
7780
|
"use strict";
|
|
7781
7781
|
moondreamClient = null;
|
|
7782
7782
|
moondreamError = null;
|
|
@@ -7999,7 +7999,7 @@ ${response}`, durationMs: performance.now() - start };
|
|
|
7999
7999
|
}
|
|
8000
8000
|
});
|
|
8001
8001
|
|
|
8002
|
-
//
|
|
8002
|
+
// packages/execution/dist/tools/desktop-click.js
|
|
8003
8003
|
import { readFileSync as readFileSync12, existsSync as existsSync15 } from "node:fs";
|
|
8004
8004
|
import { execSync as execSync12 } from "node:child_process";
|
|
8005
8005
|
import { tmpdir as tmpdir3 } from "node:os";
|
|
@@ -8152,7 +8152,7 @@ for i in range(${clicks}):
|
|
|
8152
8152
|
}
|
|
8153
8153
|
var __dirname2, DesktopClickTool, DesktopDescribeTool;
|
|
8154
8154
|
var init_desktop_click = __esm({
|
|
8155
|
-
"
|
|
8155
|
+
"packages/execution/dist/tools/desktop-click.js"() {
|
|
8156
8156
|
"use strict";
|
|
8157
8157
|
init_system_deps();
|
|
8158
8158
|
__dirname2 = dirname7(fileURLToPath3(import.meta.url));
|
|
@@ -8508,13 +8508,13 @@ Screen: ${dims.width}x${dims.height}`);
|
|
|
8508
8508
|
}
|
|
8509
8509
|
});
|
|
8510
8510
|
|
|
8511
|
-
//
|
|
8511
|
+
// packages/execution/dist/tools/ocr-pdf.js
|
|
8512
8512
|
import { existsSync as existsSync16, statSync as statSync6 } from "node:fs";
|
|
8513
8513
|
import { resolve as resolve17, basename as basename6 } from "node:path";
|
|
8514
8514
|
import { execSync as execSync13 } from "node:child_process";
|
|
8515
8515
|
var OcrPdfTool;
|
|
8516
8516
|
var init_ocr_pdf = __esm({
|
|
8517
|
-
"
|
|
8517
|
+
"packages/execution/dist/tools/ocr-pdf.js"() {
|
|
8518
8518
|
"use strict";
|
|
8519
8519
|
init_system_deps();
|
|
8520
8520
|
OcrPdfTool = class {
|
|
@@ -8631,14 +8631,14 @@ Language: ${language}
|
|
|
8631
8631
|
}
|
|
8632
8632
|
});
|
|
8633
8633
|
|
|
8634
|
-
//
|
|
8634
|
+
// packages/execution/dist/tools/pdf-to-text.js
|
|
8635
8635
|
import { existsSync as existsSync17, statSync as statSync7, readFileSync as readFileSync13, unlinkSync as unlinkSync2 } from "node:fs";
|
|
8636
8636
|
import { resolve as resolve18, basename as basename7, join as join20 } from "node:path";
|
|
8637
8637
|
import { execSync as execSync14 } from "node:child_process";
|
|
8638
8638
|
import { tmpdir as tmpdir4 } from "node:os";
|
|
8639
8639
|
var PdfToTextTool;
|
|
8640
8640
|
var init_pdf_to_text = __esm({
|
|
8641
|
-
"
|
|
8641
|
+
"packages/execution/dist/tools/pdf-to-text.js"() {
|
|
8642
8642
|
"use strict";
|
|
8643
8643
|
init_system_deps();
|
|
8644
8644
|
PdfToTextTool = class {
|
|
@@ -8816,7 +8816,7 @@ ${text}`,
|
|
|
8816
8816
|
}
|
|
8817
8817
|
});
|
|
8818
8818
|
|
|
8819
|
-
//
|
|
8819
|
+
// packages/execution/dist/tools/ocr-image-advanced.js
|
|
8820
8820
|
import { existsSync as existsSync18, statSync as statSync8 } from "node:fs";
|
|
8821
8821
|
import { resolve as resolve19, basename as basename8, dirname as dirname8, join as join21 } from "node:path";
|
|
8822
8822
|
import { execSync as execSync15 } from "node:child_process";
|
|
@@ -8859,7 +8859,7 @@ function findPython() {
|
|
|
8859
8859
|
}
|
|
8860
8860
|
var OcrImageAdvancedTool;
|
|
8861
8861
|
var init_ocr_image_advanced = __esm({
|
|
8862
|
-
"
|
|
8862
|
+
"packages/execution/dist/tools/ocr-image-advanced.js"() {
|
|
8863
8863
|
"use strict";
|
|
8864
8864
|
init_system_deps();
|
|
8865
8865
|
OcrImageAdvancedTool = class {
|
|
@@ -9119,7 +9119,7 @@ Note: Advanced Python pipeline not available \u2014 install pytesseract, opencv-
|
|
|
9119
9119
|
}
|
|
9120
9120
|
});
|
|
9121
9121
|
|
|
9122
|
-
//
|
|
9122
|
+
// packages/execution/dist/tools/browser-action.js
|
|
9123
9123
|
import { execSync as execSync16, spawn as spawn7 } from "node:child_process";
|
|
9124
9124
|
import { existsSync as existsSync19, readFileSync as readFileSync14 } from "node:fs";
|
|
9125
9125
|
import { join as join22, dirname as dirname9 } from "node:path";
|
|
@@ -9211,7 +9211,7 @@ async function apiCall(endpoint, method = "POST", body) {
|
|
|
9211
9211
|
}
|
|
9212
9212
|
var __dirname3, SCRAPE_SCRIPT, DEFAULT_PORT, BASE_URL, serviceProcess, activeSessionId, BrowserActionTool;
|
|
9213
9213
|
var init_browser_action = __esm({
|
|
9214
|
-
"
|
|
9214
|
+
"packages/execution/dist/tools/browser-action.js"() {
|
|
9215
9215
|
"use strict";
|
|
9216
9216
|
__dirname3 = dirname9(fileURLToPath5(import.meta.url));
|
|
9217
9217
|
SCRAPE_SCRIPT = join22(__dirname3, "..", "..", "scripts", "web_scrape.py");
|
|
@@ -9372,7 +9372,7 @@ var init_browser_action = __esm({
|
|
|
9372
9372
|
}
|
|
9373
9373
|
});
|
|
9374
9374
|
|
|
9375
|
-
//
|
|
9375
|
+
// packages/execution/dist/tools/autoresearch.js
|
|
9376
9376
|
import { execSync as execSync17, spawn as spawn8 } from "node:child_process";
|
|
9377
9377
|
import { existsSync as existsSync20, readFileSync as readFileSync15, writeFileSync as writeFileSync6, mkdirSync as mkdirSync6, appendFileSync, copyFileSync } from "node:fs";
|
|
9378
9378
|
import { join as join23, resolve as resolve20, dirname as dirname10 } from "node:path";
|
|
@@ -9415,7 +9415,7 @@ function parseRunLog(logContent) {
|
|
|
9415
9415
|
}
|
|
9416
9416
|
var AutoresearchTool;
|
|
9417
9417
|
var init_autoresearch = __esm({
|
|
9418
|
-
"
|
|
9418
|
+
"packages/execution/dist/tools/autoresearch.js"() {
|
|
9419
9419
|
"use strict";
|
|
9420
9420
|
AutoresearchTool = class {
|
|
9421
9421
|
repoRoot;
|
|
@@ -9892,7 +9892,7 @@ train.py reverted to last kept state. Ready for next experiment.`,
|
|
|
9892
9892
|
}
|
|
9893
9893
|
});
|
|
9894
9894
|
|
|
9895
|
-
//
|
|
9895
|
+
// packages/execution/dist/tools/scheduler.js
|
|
9896
9896
|
import { execSync as execSync18, exec as execCb } from "node:child_process";
|
|
9897
9897
|
import { readFile as readFile9, writeFile as writeFile8, mkdir as mkdir4 } from "node:fs/promises";
|
|
9898
9898
|
import { resolve as resolve21, join as join24 } from "node:path";
|
|
@@ -10027,7 +10027,7 @@ async function saveStore(workingDir, store) {
|
|
|
10027
10027
|
}
|
|
10028
10028
|
var SCHEDULE_PRESETS, CRON_MARKER, SchedulerTool;
|
|
10029
10029
|
var init_scheduler = __esm({
|
|
10030
|
-
"
|
|
10030
|
+
"packages/execution/dist/tools/scheduler.js"() {
|
|
10031
10031
|
"use strict";
|
|
10032
10032
|
SCHEDULE_PRESETS = {
|
|
10033
10033
|
"every minute": "* * * * *",
|
|
@@ -10255,7 +10255,7 @@ ${truncated}`, durationMs: performance.now() - start };
|
|
|
10255
10255
|
}
|
|
10256
10256
|
});
|
|
10257
10257
|
|
|
10258
|
-
//
|
|
10258
|
+
// packages/execution/dist/tools/reminder.js
|
|
10259
10259
|
import { readFile as readFile10, writeFile as writeFile9, mkdir as mkdir5 } from "node:fs/promises";
|
|
10260
10260
|
import { resolve as resolve22, join as join25 } from "node:path";
|
|
10261
10261
|
import { randomBytes as randomBytes3 } from "node:crypto";
|
|
@@ -10349,7 +10349,7 @@ async function markRemindersSeen(workingDir, ids) {
|
|
|
10349
10349
|
}
|
|
10350
10350
|
var STORE_FILE, ReminderTool;
|
|
10351
10351
|
var init_reminder = __esm({
|
|
10352
|
-
"
|
|
10352
|
+
"packages/execution/dist/tools/reminder.js"() {
|
|
10353
10353
|
"use strict";
|
|
10354
10354
|
STORE_FILE = "reminders.json";
|
|
10355
10355
|
ReminderTool = class {
|
|
@@ -10568,7 +10568,7 @@ var init_reminder = __esm({
|
|
|
10568
10568
|
}
|
|
10569
10569
|
});
|
|
10570
10570
|
|
|
10571
|
-
//
|
|
10571
|
+
// packages/execution/dist/tools/agenda.js
|
|
10572
10572
|
import { readFile as readFile11, writeFile as writeFile10, mkdir as mkdir6 } from "node:fs/promises";
|
|
10573
10573
|
import { resolve as resolve23, join as join26 } from "node:path";
|
|
10574
10574
|
import { randomBytes as randomBytes4 } from "node:crypto";
|
|
@@ -10603,7 +10603,7 @@ async function getActiveAttentionItems(workingDir) {
|
|
|
10603
10603
|
}
|
|
10604
10604
|
var AgendaTool;
|
|
10605
10605
|
var init_agenda = __esm({
|
|
10606
|
-
"
|
|
10606
|
+
"packages/execution/dist/tools/agenda.js"() {
|
|
10607
10607
|
"use strict";
|
|
10608
10608
|
init_reminder();
|
|
10609
10609
|
AgendaTool = class {
|
|
@@ -10892,7 +10892,7 @@ ${sections.join("\n")}`,
|
|
|
10892
10892
|
}
|
|
10893
10893
|
});
|
|
10894
10894
|
|
|
10895
|
-
//
|
|
10895
|
+
// packages/execution/dist/tools/opencode.js
|
|
10896
10896
|
import { execSync as execSync19, spawn as spawn9 } from "node:child_process";
|
|
10897
10897
|
import { existsSync as existsSync21 } from "node:fs";
|
|
10898
10898
|
import { join as join27, resolve as resolve24 } from "node:path";
|
|
@@ -10953,7 +10953,7 @@ function installOpencode() {
|
|
|
10953
10953
|
}
|
|
10954
10954
|
var OpenCodeTool;
|
|
10955
10955
|
var init_opencode = __esm({
|
|
10956
|
-
"
|
|
10956
|
+
"packages/execution/dist/tools/opencode.js"() {
|
|
10957
10957
|
"use strict";
|
|
10958
10958
|
OpenCodeTool = class {
|
|
10959
10959
|
name = "opencode";
|
|
@@ -11166,7 +11166,7 @@ var init_opencode = __esm({
|
|
|
11166
11166
|
}
|
|
11167
11167
|
});
|
|
11168
11168
|
|
|
11169
|
-
//
|
|
11169
|
+
// packages/execution/dist/tools/factory.js
|
|
11170
11170
|
import { execSync as execSync20, spawn as spawn10 } from "node:child_process";
|
|
11171
11171
|
import { existsSync as existsSync22 } from "node:fs";
|
|
11172
11172
|
import { join as join28 } from "node:path";
|
|
@@ -11227,7 +11227,7 @@ function installDroid() {
|
|
|
11227
11227
|
}
|
|
11228
11228
|
var FactoryTool;
|
|
11229
11229
|
var init_factory = __esm({
|
|
11230
|
-
"
|
|
11230
|
+
"packages/execution/dist/tools/factory.js"() {
|
|
11231
11231
|
"use strict";
|
|
11232
11232
|
FactoryTool = class {
|
|
11233
11233
|
name = "factory";
|
|
@@ -11475,7 +11475,7 @@ var init_factory = __esm({
|
|
|
11475
11475
|
}
|
|
11476
11476
|
});
|
|
11477
11477
|
|
|
11478
|
-
//
|
|
11478
|
+
// packages/execution/dist/tools/cron-agent.js
|
|
11479
11479
|
import { execSync as execSync21 } from "node:child_process";
|
|
11480
11480
|
import { readFile as readFile12, writeFile as writeFile11, mkdir as mkdir7 } from "node:fs/promises";
|
|
11481
11481
|
import { resolve as resolve25, join as join29 } from "node:path";
|
|
@@ -11609,7 +11609,7 @@ async function saveStore2(workingDir, store) {
|
|
|
11609
11609
|
}
|
|
11610
11610
|
var LONG_HORIZON_PRESETS, CRON_AGENT_MARKER, CronAgentTool;
|
|
11611
11611
|
var init_cron_agent = __esm({
|
|
11612
|
-
"
|
|
11612
|
+
"packages/execution/dist/tools/cron-agent.js"() {
|
|
11613
11613
|
"use strict";
|
|
11614
11614
|
LONG_HORIZON_PRESETS = {
|
|
11615
11615
|
"every hour": "0 * * * *",
|
|
@@ -11940,7 +11940,7 @@ ${truncated}`, durationMs: performance.now() - start };
|
|
|
11940
11940
|
}
|
|
11941
11941
|
});
|
|
11942
11942
|
|
|
11943
|
-
//
|
|
11943
|
+
// packages/execution/dist/tools/nexus.js
|
|
11944
11944
|
import { readFile as readFile13, writeFile as writeFile12, mkdir as mkdir8, chmod, unlink, readdir as readdir3, open as fsOpen } from "node:fs/promises";
|
|
11945
11945
|
import { existsSync as existsSync23, readFileSync as readFileSync16 } from "node:fs";
|
|
11946
11946
|
import { resolve as resolve26, join as join30 } from "node:path";
|
|
@@ -11956,7 +11956,7 @@ function containsKeyMaterial(input) {
|
|
|
11956
11956
|
}
|
|
11957
11957
|
var DAEMON_SCRIPT, KEY_PATTERNS, NexusTool;
|
|
11958
11958
|
var init_nexus = __esm({
|
|
11959
|
-
"
|
|
11959
|
+
"packages/execution/dist/tools/nexus.js"() {
|
|
11960
11960
|
"use strict";
|
|
11961
11961
|
DAEMON_SCRIPT = `#!/usr/bin/env node
|
|
11962
11962
|
/**
|
|
@@ -14064,71 +14064,71 @@ process.on('SIGINT', () => process.emit('SIGTERM'));
|
|
|
14064
14064
|
}
|
|
14065
14065
|
});
|
|
14066
14066
|
|
|
14067
|
-
//
|
|
14067
|
+
// packages/execution/dist/shellRunner.js
|
|
14068
14068
|
var init_shellRunner = __esm({
|
|
14069
|
-
"
|
|
14069
|
+
"packages/execution/dist/shellRunner.js"() {
|
|
14070
14070
|
"use strict";
|
|
14071
14071
|
}
|
|
14072
14072
|
});
|
|
14073
14073
|
|
|
14074
|
-
//
|
|
14074
|
+
// packages/execution/dist/gitWorktree.js
|
|
14075
14075
|
var init_gitWorktree = __esm({
|
|
14076
|
-
"
|
|
14076
|
+
"packages/execution/dist/gitWorktree.js"() {
|
|
14077
14077
|
"use strict";
|
|
14078
14078
|
init_shellRunner();
|
|
14079
14079
|
}
|
|
14080
14080
|
});
|
|
14081
14081
|
|
|
14082
|
-
//
|
|
14082
|
+
// packages/execution/dist/patchApplier.js
|
|
14083
14083
|
var init_patchApplier = __esm({
|
|
14084
|
-
"
|
|
14084
|
+
"packages/execution/dist/patchApplier.js"() {
|
|
14085
14085
|
"use strict";
|
|
14086
14086
|
}
|
|
14087
14087
|
});
|
|
14088
14088
|
|
|
14089
|
-
//
|
|
14089
|
+
// packages/execution/dist/formatterRunner.js
|
|
14090
14090
|
var init_formatterRunner = __esm({
|
|
14091
|
-
"
|
|
14091
|
+
"packages/execution/dist/formatterRunner.js"() {
|
|
14092
14092
|
"use strict";
|
|
14093
14093
|
init_shellRunner();
|
|
14094
14094
|
}
|
|
14095
14095
|
});
|
|
14096
14096
|
|
|
14097
|
-
//
|
|
14097
|
+
// packages/execution/dist/linterRunner.js
|
|
14098
14098
|
var init_linterRunner = __esm({
|
|
14099
|
-
"
|
|
14099
|
+
"packages/execution/dist/linterRunner.js"() {
|
|
14100
14100
|
"use strict";
|
|
14101
14101
|
init_shellRunner();
|
|
14102
14102
|
}
|
|
14103
14103
|
});
|
|
14104
14104
|
|
|
14105
|
-
//
|
|
14105
|
+
// packages/execution/dist/typecheckRunner.js
|
|
14106
14106
|
var init_typecheckRunner = __esm({
|
|
14107
|
-
"
|
|
14107
|
+
"packages/execution/dist/typecheckRunner.js"() {
|
|
14108
14108
|
"use strict";
|
|
14109
14109
|
init_shellRunner();
|
|
14110
14110
|
}
|
|
14111
14111
|
});
|
|
14112
14112
|
|
|
14113
|
-
//
|
|
14113
|
+
// packages/execution/dist/testRunner.js
|
|
14114
14114
|
var init_testRunner = __esm({
|
|
14115
|
-
"
|
|
14115
|
+
"packages/execution/dist/testRunner.js"() {
|
|
14116
14116
|
"use strict";
|
|
14117
14117
|
init_shellRunner();
|
|
14118
14118
|
}
|
|
14119
14119
|
});
|
|
14120
14120
|
|
|
14121
|
-
//
|
|
14121
|
+
// packages/execution/dist/buildRunner.js
|
|
14122
14122
|
var init_buildRunner = __esm({
|
|
14123
|
-
"
|
|
14123
|
+
"packages/execution/dist/buildRunner.js"() {
|
|
14124
14124
|
"use strict";
|
|
14125
14125
|
init_shellRunner();
|
|
14126
14126
|
}
|
|
14127
14127
|
});
|
|
14128
14128
|
|
|
14129
|
-
//
|
|
14129
|
+
// packages/execution/dist/validationPipeline.js
|
|
14130
14130
|
var init_validationPipeline = __esm({
|
|
14131
|
-
"
|
|
14131
|
+
"packages/execution/dist/validationPipeline.js"() {
|
|
14132
14132
|
"use strict";
|
|
14133
14133
|
init_formatterRunner();
|
|
14134
14134
|
init_linterRunner();
|
|
@@ -14138,9 +14138,9 @@ var init_validationPipeline = __esm({
|
|
|
14138
14138
|
}
|
|
14139
14139
|
});
|
|
14140
14140
|
|
|
14141
|
-
//
|
|
14141
|
+
// packages/execution/dist/index.js
|
|
14142
14142
|
var init_dist2 = __esm({
|
|
14143
|
-
"
|
|
14143
|
+
"packages/execution/dist/index.js"() {
|
|
14144
14144
|
"use strict";
|
|
14145
14145
|
init_tool_executor();
|
|
14146
14146
|
init_shell();
|
|
@@ -14202,9 +14202,9 @@ var init_dist2 = __esm({
|
|
|
14202
14202
|
}
|
|
14203
14203
|
});
|
|
14204
14204
|
|
|
14205
|
-
//
|
|
14205
|
+
// packages/orchestrator/dist/agent-loop.js
|
|
14206
14206
|
var init_agent_loop = __esm({
|
|
14207
|
-
"
|
|
14207
|
+
"packages/orchestrator/dist/agent-loop.js"() {
|
|
14208
14208
|
"use strict";
|
|
14209
14209
|
init_dist();
|
|
14210
14210
|
init_dist2();
|
|
@@ -14212,11 +14212,11 @@ var init_agent_loop = __esm({
|
|
|
14212
14212
|
}
|
|
14213
14213
|
});
|
|
14214
14214
|
|
|
14215
|
-
//
|
|
14215
|
+
// packages/schemas/dist/messages.js
|
|
14216
14216
|
import { z } from "zod";
|
|
14217
14217
|
var AgentMessageSchema;
|
|
14218
14218
|
var init_messages = __esm({
|
|
14219
|
-
"
|
|
14219
|
+
"packages/schemas/dist/messages.js"() {
|
|
14220
14220
|
"use strict";
|
|
14221
14221
|
AgentMessageSchema = z.object({
|
|
14222
14222
|
id: z.string().uuid(),
|
|
@@ -14229,11 +14229,11 @@ var init_messages = __esm({
|
|
|
14229
14229
|
}
|
|
14230
14230
|
});
|
|
14231
14231
|
|
|
14232
|
-
//
|
|
14232
|
+
// packages/schemas/dist/tools.js
|
|
14233
14233
|
import { z as z2 } from "zod";
|
|
14234
14234
|
var ToolCallSchema;
|
|
14235
14235
|
var init_tools = __esm({
|
|
14236
|
-
"
|
|
14236
|
+
"packages/schemas/dist/tools.js"() {
|
|
14237
14237
|
"use strict";
|
|
14238
14238
|
ToolCallSchema = z2.object({
|
|
14239
14239
|
id: z2.string().uuid(),
|
|
@@ -14247,11 +14247,11 @@ var init_tools = __esm({
|
|
|
14247
14247
|
}
|
|
14248
14248
|
});
|
|
14249
14249
|
|
|
14250
|
-
//
|
|
14250
|
+
// packages/schemas/dist/session.js
|
|
14251
14251
|
import { z as z3 } from "zod";
|
|
14252
14252
|
var SessionSchema;
|
|
14253
14253
|
var init_session = __esm({
|
|
14254
|
-
"
|
|
14254
|
+
"packages/schemas/dist/session.js"() {
|
|
14255
14255
|
"use strict";
|
|
14256
14256
|
SessionSchema = z3.object({
|
|
14257
14257
|
id: z3.string().uuid(),
|
|
@@ -14265,11 +14265,11 @@ var init_session = __esm({
|
|
|
14265
14265
|
}
|
|
14266
14266
|
});
|
|
14267
14267
|
|
|
14268
|
-
//
|
|
14268
|
+
// packages/schemas/dist/task.js
|
|
14269
14269
|
import { z as z4 } from "zod";
|
|
14270
14270
|
var TaskClassSchema, UrgencySchema, NormalizedTaskSchema, TaskStatusSchema;
|
|
14271
14271
|
var init_task = __esm({
|
|
14272
|
-
"
|
|
14272
|
+
"packages/schemas/dist/task.js"() {
|
|
14273
14273
|
"use strict";
|
|
14274
14274
|
TaskClassSchema = z4.enum([
|
|
14275
14275
|
"bugfix",
|
|
@@ -14314,11 +14314,11 @@ var init_task = __esm({
|
|
|
14314
14314
|
}
|
|
14315
14315
|
});
|
|
14316
14316
|
|
|
14317
|
-
//
|
|
14317
|
+
// packages/schemas/dist/plan.js
|
|
14318
14318
|
import { z as z5 } from "zod";
|
|
14319
14319
|
var SubtaskKindSchema, SubtaskSchema, PlanSchema;
|
|
14320
14320
|
var init_plan = __esm({
|
|
14321
|
-
"
|
|
14321
|
+
"packages/schemas/dist/plan.js"() {
|
|
14322
14322
|
"use strict";
|
|
14323
14323
|
SubtaskKindSchema = z5.enum([
|
|
14324
14324
|
"inspect",
|
|
@@ -14352,11 +14352,11 @@ var init_plan = __esm({
|
|
|
14352
14352
|
}
|
|
14353
14353
|
});
|
|
14354
14354
|
|
|
14355
|
-
//
|
|
14355
|
+
// packages/schemas/dist/patch.js
|
|
14356
14356
|
import { z as z6 } from "zod";
|
|
14357
14357
|
var EditOperationSchema, FileEditSchema, NeedsMoreContextSchema, PatchProposalSchema;
|
|
14358
14358
|
var init_patch = __esm({
|
|
14359
|
-
"
|
|
14359
|
+
"packages/schemas/dist/patch.js"() {
|
|
14360
14360
|
"use strict";
|
|
14361
14361
|
EditOperationSchema = z6.enum([
|
|
14362
14362
|
"diff",
|
|
@@ -14395,11 +14395,11 @@ var init_patch = __esm({
|
|
|
14395
14395
|
}
|
|
14396
14396
|
});
|
|
14397
14397
|
|
|
14398
|
-
//
|
|
14398
|
+
// packages/schemas/dist/verification.js
|
|
14399
14399
|
import { z as z7 } from "zod";
|
|
14400
14400
|
var VerificationStatusSchema, VerificationNextActionSchema, VerificationDecisionSchema;
|
|
14401
14401
|
var init_verification = __esm({
|
|
14402
|
-
"
|
|
14402
|
+
"packages/schemas/dist/verification.js"() {
|
|
14403
14403
|
"use strict";
|
|
14404
14404
|
VerificationStatusSchema = z7.enum(["pass", "fail", "partial"]);
|
|
14405
14405
|
VerificationNextActionSchema = z7.enum([
|
|
@@ -14424,11 +14424,11 @@ var init_verification = __esm({
|
|
|
14424
14424
|
}
|
|
14425
14425
|
});
|
|
14426
14426
|
|
|
14427
|
-
//
|
|
14427
|
+
// packages/schemas/dist/repoProfile.js
|
|
14428
14428
|
import { z as z8 } from "zod";
|
|
14429
14429
|
var LanguageSchema, PackageManagerSchema, BuildSystemSchema, MigrationSystemSchema, RepoProfileSchema;
|
|
14430
14430
|
var init_repoProfile = __esm({
|
|
14431
|
-
"
|
|
14431
|
+
"packages/schemas/dist/repoProfile.js"() {
|
|
14432
14432
|
"use strict";
|
|
14433
14433
|
LanguageSchema = z8.enum([
|
|
14434
14434
|
"typescript",
|
|
@@ -14506,11 +14506,11 @@ var init_repoProfile = __esm({
|
|
|
14506
14506
|
}
|
|
14507
14507
|
});
|
|
14508
14508
|
|
|
14509
|
-
//
|
|
14509
|
+
// packages/schemas/dist/retrieval.js
|
|
14510
14510
|
import { z as z9 } from "zod";
|
|
14511
14511
|
var RetrievalRequestSchema, SnippetSchema, RetrievalPacketSchema;
|
|
14512
14512
|
var init_retrieval = __esm({
|
|
14513
|
-
"
|
|
14513
|
+
"packages/schemas/dist/retrieval.js"() {
|
|
14514
14514
|
"use strict";
|
|
14515
14515
|
RetrievalRequestSchema = z9.object({
|
|
14516
14516
|
/** Natural language description of what information is needed */
|
|
@@ -14558,11 +14558,11 @@ var init_retrieval = __esm({
|
|
|
14558
14558
|
}
|
|
14559
14559
|
});
|
|
14560
14560
|
|
|
14561
|
-
//
|
|
14561
|
+
// packages/schemas/dist/dispatch.js
|
|
14562
14562
|
import { z as z10 } from "zod";
|
|
14563
14563
|
var DispatchModeSchema, TaskComplexitySchema, AgentRoleSchema, BudgetsSchema, DispatchDecisionSchema;
|
|
14564
14564
|
var init_dispatch = __esm({
|
|
14565
|
-
"
|
|
14565
|
+
"packages/schemas/dist/dispatch.js"() {
|
|
14566
14566
|
"use strict";
|
|
14567
14567
|
DispatchModeSchema = z10.enum([
|
|
14568
14568
|
"single_pass",
|
|
@@ -14596,11 +14596,11 @@ var init_dispatch = __esm({
|
|
|
14596
14596
|
}
|
|
14597
14597
|
});
|
|
14598
14598
|
|
|
14599
|
-
//
|
|
14599
|
+
// packages/schemas/dist/memory.js
|
|
14600
14600
|
import { z as z11 } from "zod";
|
|
14601
14601
|
var RiskLevelSchema, FileSummarySchema, FailureCategorySchema, FailureFingerprintSchema, TaskMemorySchema;
|
|
14602
14602
|
var init_memory = __esm({
|
|
14603
|
-
"
|
|
14603
|
+
"packages/schemas/dist/memory.js"() {
|
|
14604
14604
|
"use strict";
|
|
14605
14605
|
RiskLevelSchema = z11.enum(["low", "medium", "high", "critical"]);
|
|
14606
14606
|
FileSummarySchema = z11.object({
|
|
@@ -14676,11 +14676,11 @@ var init_memory = __esm({
|
|
|
14676
14676
|
}
|
|
14677
14677
|
});
|
|
14678
14678
|
|
|
14679
|
-
//
|
|
14679
|
+
// packages/schemas/dist/backend.js
|
|
14680
14680
|
import { z as z12 } from "zod";
|
|
14681
14681
|
var MessageRoleSchema, ChatMessageSchema, CompletionRequestSchema, TokenUsageSchema, CompletionResponseSchema, StructuredCompletionRequestSchema, BackendHealthSchema, BackendMetricsSchema;
|
|
14682
14682
|
var init_backend = __esm({
|
|
14683
|
-
"
|
|
14683
|
+
"packages/schemas/dist/backend.js"() {
|
|
14684
14684
|
"use strict";
|
|
14685
14685
|
MessageRoleSchema = z12.enum([
|
|
14686
14686
|
"system",
|
|
@@ -14765,11 +14765,11 @@ var init_backend = __esm({
|
|
|
14765
14765
|
}
|
|
14766
14766
|
});
|
|
14767
14767
|
|
|
14768
|
-
//
|
|
14768
|
+
// packages/schemas/dist/config.js
|
|
14769
14769
|
import { z as z13 } from "zod";
|
|
14770
14770
|
var AgentConfigSchema;
|
|
14771
14771
|
var init_config2 = __esm({
|
|
14772
|
-
"
|
|
14772
|
+
"packages/schemas/dist/config.js"() {
|
|
14773
14773
|
"use strict";
|
|
14774
14774
|
AgentConfigSchema = z13.object({
|
|
14775
14775
|
// -----------------------------------------------------------------------
|
|
@@ -14828,11 +14828,11 @@ var init_config2 = __esm({
|
|
|
14828
14828
|
}
|
|
14829
14829
|
});
|
|
14830
14830
|
|
|
14831
|
-
//
|
|
14831
|
+
// packages/schemas/dist/queue.js
|
|
14832
14832
|
import { z as z14 } from "zod";
|
|
14833
14833
|
var QueueClassSchema;
|
|
14834
14834
|
var init_queue = __esm({
|
|
14835
|
-
"
|
|
14835
|
+
"packages/schemas/dist/queue.js"() {
|
|
14836
14836
|
"use strict";
|
|
14837
14837
|
QueueClassSchema = z14.enum([
|
|
14838
14838
|
/** CLI and direct user-facing requests; lowest latency target */
|
|
@@ -14851,9 +14851,9 @@ var init_queue = __esm({
|
|
|
14851
14851
|
}
|
|
14852
14852
|
});
|
|
14853
14853
|
|
|
14854
|
-
//
|
|
14854
|
+
// packages/schemas/dist/index.js
|
|
14855
14855
|
var init_dist3 = __esm({
|
|
14856
|
-
"
|
|
14856
|
+
"packages/schemas/dist/index.js"() {
|
|
14857
14857
|
"use strict";
|
|
14858
14858
|
init_messages();
|
|
14859
14859
|
init_tools();
|
|
@@ -14872,7 +14872,7 @@ var init_dist3 = __esm({
|
|
|
14872
14872
|
}
|
|
14873
14873
|
});
|
|
14874
14874
|
|
|
14875
|
-
//
|
|
14875
|
+
// packages/orchestrator/dist/promptLoader.js
|
|
14876
14876
|
import { readFileSync as readFileSync17, existsSync as existsSync24 } from "node:fs";
|
|
14877
14877
|
import { join as join31, dirname as dirname11 } from "node:path";
|
|
14878
14878
|
import { fileURLToPath as fileURLToPath7 } from "node:url";
|
|
@@ -14892,7 +14892,7 @@ function loadPrompt(promptPath, vars) {
|
|
|
14892
14892
|
}
|
|
14893
14893
|
var __filename, __dirname4, PROMPTS_DIR, cache;
|
|
14894
14894
|
var init_promptLoader = __esm({
|
|
14895
|
-
"
|
|
14895
|
+
"packages/orchestrator/dist/promptLoader.js"() {
|
|
14896
14896
|
"use strict";
|
|
14897
14897
|
__filename = fileURLToPath7(import.meta.url);
|
|
14898
14898
|
__dirname4 = dirname11(__filename);
|
|
@@ -14901,7 +14901,7 @@ var init_promptLoader = __esm({
|
|
|
14901
14901
|
}
|
|
14902
14902
|
});
|
|
14903
14903
|
|
|
14904
|
-
//
|
|
14904
|
+
// packages/orchestrator/dist/taskNormalizer.js
|
|
14905
14905
|
function parseJsonFromContent(content) {
|
|
14906
14906
|
const fencedMatch = content.match(/```(?:json)?\s*([\s\S]*?)```/);
|
|
14907
14907
|
const raw = fencedMatch ? fencedMatch[1] : content;
|
|
@@ -14916,7 +14916,7 @@ function normalizationPrompt(rawRequest, repoRoot) {
|
|
|
14916
14916
|
}
|
|
14917
14917
|
var TaskNormalizer;
|
|
14918
14918
|
var init_taskNormalizer = __esm({
|
|
14919
|
-
"
|
|
14919
|
+
"packages/orchestrator/dist/taskNormalizer.js"() {
|
|
14920
14920
|
"use strict";
|
|
14921
14921
|
init_dist3();
|
|
14922
14922
|
init_promptLoader();
|
|
@@ -14968,7 +14968,7 @@ var init_taskNormalizer = __esm({
|
|
|
14968
14968
|
}
|
|
14969
14969
|
});
|
|
14970
14970
|
|
|
14971
|
-
//
|
|
14971
|
+
// packages/orchestrator/dist/dispatcher.js
|
|
14972
14972
|
function estimateComplexity(task) {
|
|
14973
14973
|
const text = `${task.goal} ${task.constraints.join(" ")} ${task.successCriteria.join(" ")}`;
|
|
14974
14974
|
const wordCount = text.split(/\s+/).length;
|
|
@@ -15035,7 +15035,7 @@ function parseJsonFromContent2(content) {
|
|
|
15035
15035
|
}
|
|
15036
15036
|
var Dispatcher;
|
|
15037
15037
|
var init_dispatcher = __esm({
|
|
15038
|
-
"
|
|
15038
|
+
"packages/orchestrator/dist/dispatcher.js"() {
|
|
15039
15039
|
"use strict";
|
|
15040
15040
|
init_dist3();
|
|
15041
15041
|
init_promptLoader();
|
|
@@ -15095,7 +15095,7 @@ var init_dispatcher = __esm({
|
|
|
15095
15095
|
}
|
|
15096
15096
|
});
|
|
15097
15097
|
|
|
15098
|
-
//
|
|
15098
|
+
// packages/orchestrator/dist/plannerRunner.js
|
|
15099
15099
|
function plannerPrompt(task, repoProfile, retrievalPacket) {
|
|
15100
15100
|
const profileSection = repoProfile ? `REPOSITORY PROFILE:
|
|
15101
15101
|
${JSON.stringify(repoProfile, null, 2)}` : "REPOSITORY PROFILE: (not available)";
|
|
@@ -15116,7 +15116,7 @@ function parseJsonFromContent3(content) {
|
|
|
15116
15116
|
}
|
|
15117
15117
|
var PlannerRunner;
|
|
15118
15118
|
var init_plannerRunner = __esm({
|
|
15119
|
-
"
|
|
15119
|
+
"packages/orchestrator/dist/plannerRunner.js"() {
|
|
15120
15120
|
"use strict";
|
|
15121
15121
|
init_dist3();
|
|
15122
15122
|
init_promptLoader();
|
|
@@ -15169,12 +15169,12 @@ var init_plannerRunner = __esm({
|
|
|
15169
15169
|
}
|
|
15170
15170
|
});
|
|
15171
15171
|
|
|
15172
|
-
//
|
|
15172
|
+
// packages/retrieval/dist/grep-search.js
|
|
15173
15173
|
import { execFile as execFile4 } from "node:child_process";
|
|
15174
15174
|
import { promisify as promisify3 } from "node:util";
|
|
15175
15175
|
var execFileAsync3, GrepSearch;
|
|
15176
15176
|
var init_grep_search2 = __esm({
|
|
15177
|
-
"
|
|
15177
|
+
"packages/retrieval/dist/grep-search.js"() {
|
|
15178
15178
|
"use strict";
|
|
15179
15179
|
execFileAsync3 = promisify3(execFile4);
|
|
15180
15180
|
GrepSearch = class {
|
|
@@ -15231,10 +15231,10 @@ var init_grep_search2 = __esm({
|
|
|
15231
15231
|
}
|
|
15232
15232
|
});
|
|
15233
15233
|
|
|
15234
|
-
//
|
|
15234
|
+
// packages/retrieval/dist/code-retriever.js
|
|
15235
15235
|
var DEFAULT_CONFIG2, CodeRetriever;
|
|
15236
15236
|
var init_code_retriever = __esm({
|
|
15237
|
-
"
|
|
15237
|
+
"packages/retrieval/dist/code-retriever.js"() {
|
|
15238
15238
|
"use strict";
|
|
15239
15239
|
init_grep_search2();
|
|
15240
15240
|
DEFAULT_CONFIG2 = {
|
|
@@ -15272,7 +15272,7 @@ var init_code_retriever = __esm({
|
|
|
15272
15272
|
}
|
|
15273
15273
|
});
|
|
15274
15274
|
|
|
15275
|
-
//
|
|
15275
|
+
// packages/retrieval/dist/lexicalSearch.js
|
|
15276
15276
|
import { execFile as execFile5 } from "node:child_process";
|
|
15277
15277
|
import { promisify as promisify4 } from "node:util";
|
|
15278
15278
|
import { readFile as readFile14, readdir as readdir4, stat as stat3 } from "node:fs/promises";
|
|
@@ -15450,7 +15450,7 @@ function matchesGlob(filePath, glob2) {
|
|
|
15450
15450
|
}
|
|
15451
15451
|
var execFileAsync4, DEFAULT_INCLUDE_GLOBS, DEFAULT_EXCLUDE_GLOBS, DEFAULT_MAX_MATCHES, ALWAYS_SKIP, ALL_CODE_EXTS;
|
|
15452
15452
|
var init_lexicalSearch = __esm({
|
|
15453
|
-
"
|
|
15453
|
+
"packages/retrieval/dist/lexicalSearch.js"() {
|
|
15454
15454
|
"use strict";
|
|
15455
15455
|
execFileAsync4 = promisify4(execFile5);
|
|
15456
15456
|
DEFAULT_INCLUDE_GLOBS = ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx", "**/*.py"];
|
|
@@ -15461,7 +15461,7 @@ var init_lexicalSearch = __esm({
|
|
|
15461
15461
|
}
|
|
15462
15462
|
});
|
|
15463
15463
|
|
|
15464
|
-
//
|
|
15464
|
+
// packages/retrieval/dist/semanticSearch.js
|
|
15465
15465
|
function parseTagFilter(query) {
|
|
15466
15466
|
const required = [];
|
|
15467
15467
|
const anyOf = [];
|
|
@@ -15538,7 +15538,7 @@ function makePlaceholderSummary(filePath) {
|
|
|
15538
15538
|
}
|
|
15539
15539
|
var StubSemanticSearchEngine, IndexBackedSemanticSearchEngine, LazySemanticSearchEngine;
|
|
15540
15540
|
var init_semanticSearch = __esm({
|
|
15541
|
-
"
|
|
15541
|
+
"packages/retrieval/dist/semanticSearch.js"() {
|
|
15542
15542
|
"use strict";
|
|
15543
15543
|
StubSemanticSearchEngine = class {
|
|
15544
15544
|
isAvailable = false;
|
|
@@ -15658,7 +15658,7 @@ var init_semanticSearch = __esm({
|
|
|
15658
15658
|
}
|
|
15659
15659
|
});
|
|
15660
15660
|
|
|
15661
|
-
//
|
|
15661
|
+
// packages/retrieval/dist/graphExpand.js
|
|
15662
15662
|
function expandGraph(seeds, graph, opts = {}) {
|
|
15663
15663
|
const { direction = "both", maxHops = 1, maxNeighbors = 20, includeSeeds = false } = opts;
|
|
15664
15664
|
const seedSet = new Set(seeds);
|
|
@@ -15718,12 +15718,12 @@ function bfsExpand(seeds, adjacency, maxHops, maxNeighbors, excludeSet, result)
|
|
|
15718
15718
|
}
|
|
15719
15719
|
}
|
|
15720
15720
|
var init_graphExpand = __esm({
|
|
15721
|
-
"
|
|
15721
|
+
"packages/retrieval/dist/graphExpand.js"() {
|
|
15722
15722
|
"use strict";
|
|
15723
15723
|
}
|
|
15724
15724
|
});
|
|
15725
15725
|
|
|
15726
|
-
//
|
|
15726
|
+
// packages/retrieval/dist/snippetPacker.js
|
|
15727
15727
|
import { readFile as readFile15 } from "node:fs/promises";
|
|
15728
15728
|
import { join as join33 } from "node:path";
|
|
15729
15729
|
async function packSnippets(requests, opts = {}) {
|
|
@@ -15786,7 +15786,7 @@ async function packFiles(filePaths, repoRoot, maxTokens = DEFAULT_MAX_TOKENS) {
|
|
|
15786
15786
|
}
|
|
15787
15787
|
var DEFAULT_MAX_TOKENS, DEFAULT_CONTEXT_LINES, CHARS_PER_TOKEN;
|
|
15788
15788
|
var init_snippetPacker = __esm({
|
|
15789
|
-
"
|
|
15789
|
+
"packages/retrieval/dist/snippetPacker.js"() {
|
|
15790
15790
|
"use strict";
|
|
15791
15791
|
DEFAULT_MAX_TOKENS = 32e3;
|
|
15792
15792
|
DEFAULT_CONTEXT_LINES = 2;
|
|
@@ -15794,7 +15794,7 @@ var init_snippetPacker = __esm({
|
|
|
15794
15794
|
}
|
|
15795
15795
|
});
|
|
15796
15796
|
|
|
15797
|
-
//
|
|
15797
|
+
// packages/retrieval/dist/contextAssembler.js
|
|
15798
15798
|
async function assembleContext(request, opts) {
|
|
15799
15799
|
const { repoRoot, graph, semanticEngine, summaryMap, maxFiles = 8, maxSnippets = 20, maxLogs = 3, maxTokens = 24e3, expandNeighbors = true, architectureNote, priorAttemptNote } = opts;
|
|
15800
15800
|
const lexOpts = {
|
|
@@ -15950,7 +15950,7 @@ function estimatePacketTokens(packet) {
|
|
|
15950
15950
|
return fileTokens + snippetTokens;
|
|
15951
15951
|
}
|
|
15952
15952
|
var init_contextAssembler = __esm({
|
|
15953
|
-
"
|
|
15953
|
+
"packages/retrieval/dist/contextAssembler.js"() {
|
|
15954
15954
|
"use strict";
|
|
15955
15955
|
init_lexicalSearch();
|
|
15956
15956
|
init_graphExpand();
|
|
@@ -15958,7 +15958,7 @@ var init_contextAssembler = __esm({
|
|
|
15958
15958
|
}
|
|
15959
15959
|
});
|
|
15960
15960
|
|
|
15961
|
-
//
|
|
15961
|
+
// packages/retrieval/dist/index.js
|
|
15962
15962
|
var dist_exports = {};
|
|
15963
15963
|
__export(dist_exports, {
|
|
15964
15964
|
CodeRetriever: () => CodeRetriever,
|
|
@@ -15983,7 +15983,7 @@ __export(dist_exports, {
|
|
|
15983
15983
|
testsForFiles: () => testsForFiles
|
|
15984
15984
|
});
|
|
15985
15985
|
var init_dist4 = __esm({
|
|
15986
|
-
"
|
|
15986
|
+
"packages/retrieval/dist/index.js"() {
|
|
15987
15987
|
"use strict";
|
|
15988
15988
|
init_code_retriever();
|
|
15989
15989
|
init_grep_search2();
|
|
@@ -15995,7 +15995,7 @@ var init_dist4 = __esm({
|
|
|
15995
15995
|
}
|
|
15996
15996
|
});
|
|
15997
15997
|
|
|
15998
|
-
//
|
|
15998
|
+
// packages/orchestrator/dist/scoutRunner.js
|
|
15999
15999
|
async function loadCodeRetriever(rootDir) {
|
|
16000
16000
|
const mod = await Promise.resolve().then(() => (init_dist4(), dist_exports));
|
|
16001
16001
|
return new mod.CodeRetriever({ rootDir });
|
|
@@ -16026,7 +16026,7 @@ function scoutPrompt(task, repoProfile, candidateFiles, subtasks) {
|
|
|
16026
16026
|
}
|
|
16027
16027
|
var ScoutRunner;
|
|
16028
16028
|
var init_scoutRunner = __esm({
|
|
16029
|
-
"
|
|
16029
|
+
"packages/orchestrator/dist/scoutRunner.js"() {
|
|
16030
16030
|
"use strict";
|
|
16031
16031
|
init_dist3();
|
|
16032
16032
|
init_promptLoader();
|
|
@@ -16132,7 +16132,7 @@ var init_scoutRunner = __esm({
|
|
|
16132
16132
|
}
|
|
16133
16133
|
});
|
|
16134
16134
|
|
|
16135
|
-
//
|
|
16135
|
+
// packages/orchestrator/dist/editorRunner.js
|
|
16136
16136
|
function editorPrompt(task, subtask, retrievalPacket, previousVerification, retryNumber) {
|
|
16137
16137
|
const filesSection = Object.entries(retrievalPacket.files).map(([path, content]) => `=== ${path} ===
|
|
16138
16138
|
${content}`).join("\n\n");
|
|
@@ -16160,7 +16160,7 @@ function parseJsonFromContent5(content) {
|
|
|
16160
16160
|
}
|
|
16161
16161
|
var EditorRunner;
|
|
16162
16162
|
var init_editorRunner = __esm({
|
|
16163
|
-
"
|
|
16163
|
+
"packages/orchestrator/dist/editorRunner.js"() {
|
|
16164
16164
|
"use strict";
|
|
16165
16165
|
init_dist3();
|
|
16166
16166
|
init_promptLoader();
|
|
@@ -16218,7 +16218,7 @@ var init_editorRunner = __esm({
|
|
|
16218
16218
|
}
|
|
16219
16219
|
});
|
|
16220
16220
|
|
|
16221
|
-
//
|
|
16221
|
+
// packages/orchestrator/dist/verifierRunner.js
|
|
16222
16222
|
function verifierPrompt(task, subtask, patch, toolOutput) {
|
|
16223
16223
|
const toolSection = toolOutput ? `TOOL EXECUTION OUTPUT:
|
|
16224
16224
|
${toolOutput}` : "TOOL EXECUTION OUTPUT: (not executed)";
|
|
@@ -16246,7 +16246,7 @@ function parseJsonFromContent6(content) {
|
|
|
16246
16246
|
}
|
|
16247
16247
|
var VerifierRunner;
|
|
16248
16248
|
var init_verifierRunner = __esm({
|
|
16249
|
-
"
|
|
16249
|
+
"packages/orchestrator/dist/verifierRunner.js"() {
|
|
16250
16250
|
"use strict";
|
|
16251
16251
|
init_dist3();
|
|
16252
16252
|
init_promptLoader();
|
|
@@ -16290,8 +16290,8 @@ var init_verifierRunner = __esm({
|
|
|
16290
16290
|
if (patch.testsToRun.length === 0)
|
|
16291
16291
|
return "(no tests specified)";
|
|
16292
16292
|
const { execFile: execFile6 } = await import("node:child_process");
|
|
16293
|
-
const { promisify:
|
|
16294
|
-
const execFileAsync5 =
|
|
16293
|
+
const { promisify: promisify6 } = await import("node:util");
|
|
16294
|
+
const execFileAsync5 = promisify6(execFile6);
|
|
16295
16295
|
const outputs = [];
|
|
16296
16296
|
const workDir = this.options.workingDir || repoRoot;
|
|
16297
16297
|
for (const cmd of patch.testsToRun.slice(0, 3)) {
|
|
@@ -16341,10 +16341,10 @@ FAILED: ${execError.stderr ?? execError.stdout ?? execError.message ?? "unknown
|
|
|
16341
16341
|
}
|
|
16342
16342
|
});
|
|
16343
16343
|
|
|
16344
|
-
//
|
|
16344
|
+
// packages/orchestrator/dist/mergeRunner.js
|
|
16345
16345
|
var MergeRunner;
|
|
16346
16346
|
var init_mergeRunner = __esm({
|
|
16347
|
-
"
|
|
16347
|
+
"packages/orchestrator/dist/mergeRunner.js"() {
|
|
16348
16348
|
"use strict";
|
|
16349
16349
|
init_promptLoader();
|
|
16350
16350
|
MergeRunner = class {
|
|
@@ -16429,10 +16429,10 @@ var init_mergeRunner = __esm({
|
|
|
16429
16429
|
}
|
|
16430
16430
|
});
|
|
16431
16431
|
|
|
16432
|
-
//
|
|
16432
|
+
// packages/orchestrator/dist/retryController.js
|
|
16433
16433
|
var RetryController;
|
|
16434
16434
|
var init_retryController = __esm({
|
|
16435
|
-
"
|
|
16435
|
+
"packages/orchestrator/dist/retryController.js"() {
|
|
16436
16436
|
"use strict";
|
|
16437
16437
|
RetryController = class {
|
|
16438
16438
|
maxRetries;
|
|
@@ -16529,7 +16529,7 @@ var init_retryController = __esm({
|
|
|
16529
16529
|
}
|
|
16530
16530
|
});
|
|
16531
16531
|
|
|
16532
|
-
//
|
|
16532
|
+
// packages/orchestrator/dist/ralphLoop.js
|
|
16533
16533
|
function isoNow() {
|
|
16534
16534
|
return (/* @__PURE__ */ new Date()).toISOString();
|
|
16535
16535
|
}
|
|
@@ -16577,7 +16577,7 @@ function deriveTerminalStatus(executions) {
|
|
|
16577
16577
|
}
|
|
16578
16578
|
var RalphLoop;
|
|
16579
16579
|
var init_ralphLoop = __esm({
|
|
16580
|
-
"
|
|
16580
|
+
"packages/orchestrator/dist/ralphLoop.js"() {
|
|
16581
16581
|
"use strict";
|
|
16582
16582
|
init_taskNormalizer();
|
|
16583
16583
|
init_dispatcher();
|
|
@@ -16860,7 +16860,7 @@ var init_ralphLoop = __esm({
|
|
|
16860
16860
|
}
|
|
16861
16861
|
});
|
|
16862
16862
|
|
|
16863
|
-
//
|
|
16863
|
+
// packages/orchestrator/dist/personality.js
|
|
16864
16864
|
function compilePersonalityPrompt(profile, presetName) {
|
|
16865
16865
|
if (presetName === "stark") {
|
|
16866
16866
|
return loadPrompt("personality/level-stark.md");
|
|
@@ -16888,7 +16888,7 @@ function getPreset(name) {
|
|
|
16888
16888
|
}
|
|
16889
16889
|
var PERSONALITY_PRESETS, PRESET_NAMES;
|
|
16890
16890
|
var init_personality = __esm({
|
|
16891
|
-
"
|
|
16891
|
+
"packages/orchestrator/dist/personality.js"() {
|
|
16892
16892
|
"use strict";
|
|
16893
16893
|
init_promptLoader();
|
|
16894
16894
|
PERSONALITY_PRESETS = {
|
|
@@ -16909,7 +16909,7 @@ var init_personality = __esm({
|
|
|
16909
16909
|
}
|
|
16910
16910
|
});
|
|
16911
16911
|
|
|
16912
|
-
//
|
|
16912
|
+
// packages/orchestrator/dist/agenticRunner.js
|
|
16913
16913
|
function repairJson(raw) {
|
|
16914
16914
|
if (!raw || typeof raw !== "string")
|
|
16915
16915
|
return null;
|
|
@@ -16975,7 +16975,7 @@ function getSystemPromptForTier(tier) {
|
|
|
16975
16975
|
}
|
|
16976
16976
|
var SYSTEM_PROMPT, SYSTEM_PROMPT_MEDIUM, SYSTEM_PROMPT_SMALL, AgenticRunner, OllamaAgenticBackend;
|
|
16977
16977
|
var init_agenticRunner = __esm({
|
|
16978
|
-
"
|
|
16978
|
+
"packages/orchestrator/dist/agenticRunner.js"() {
|
|
16979
16979
|
"use strict";
|
|
16980
16980
|
init_dist();
|
|
16981
16981
|
init_personality();
|
|
@@ -18258,9 +18258,9 @@ ${marker}` : marker);
|
|
|
18258
18258
|
if (!this._workingDirectory)
|
|
18259
18259
|
return;
|
|
18260
18260
|
try {
|
|
18261
|
-
const { mkdirSync: mkdirSync19, writeFileSync:
|
|
18262
|
-
const { join:
|
|
18263
|
-
const sessionDir =
|
|
18261
|
+
const { mkdirSync: mkdirSync19, writeFileSync: writeFileSync18 } = __require("node:fs");
|
|
18262
|
+
const { join: join55 } = __require("node:path");
|
|
18263
|
+
const sessionDir = join55(this._workingDirectory, ".oa", "session", this._sessionId);
|
|
18264
18264
|
mkdirSync19(sessionDir, { recursive: true });
|
|
18265
18265
|
const checkpoint = {
|
|
18266
18266
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
@@ -18273,7 +18273,7 @@ ${marker}` : marker);
|
|
|
18273
18273
|
memexEntryCount: this._memexArchive.size,
|
|
18274
18274
|
fileRegistrySize: this._fileRegistry.size
|
|
18275
18275
|
};
|
|
18276
|
-
|
|
18276
|
+
writeFileSync18(join55(sessionDir, "checkpoint.json"), JSON.stringify(checkpoint, null, 2));
|
|
18277
18277
|
} catch {
|
|
18278
18278
|
}
|
|
18279
18279
|
}
|
|
@@ -19506,10 +19506,10 @@ ${transcript}`
|
|
|
19506
19506
|
}
|
|
19507
19507
|
});
|
|
19508
19508
|
|
|
19509
|
-
//
|
|
19509
|
+
// packages/orchestrator/dist/nexusBackend.js
|
|
19510
19510
|
var NexusAgenticBackend;
|
|
19511
19511
|
var init_nexusBackend = __esm({
|
|
19512
|
-
"
|
|
19512
|
+
"packages/orchestrator/dist/nexusBackend.js"() {
|
|
19513
19513
|
"use strict";
|
|
19514
19514
|
NexusAgenticBackend = class {
|
|
19515
19515
|
sendFn;
|
|
@@ -19664,10 +19664,10 @@ var init_nexusBackend = __esm({
|
|
|
19664
19664
|
}
|
|
19665
19665
|
});
|
|
19666
19666
|
|
|
19667
|
-
//
|
|
19667
|
+
// packages/orchestrator/dist/flowstatePrompt.js
|
|
19668
19668
|
var FLOWSTATE_PROMPT;
|
|
19669
19669
|
var init_flowstatePrompt = __esm({
|
|
19670
|
-
"
|
|
19670
|
+
"packages/orchestrator/dist/flowstatePrompt.js"() {
|
|
19671
19671
|
"use strict";
|
|
19672
19672
|
FLOWSTATE_PROMPT = `## FlowState Protocol (Active)
|
|
19673
19673
|
|
|
@@ -19718,10 +19718,10 @@ Constrain your context. Clarify your target. Focus your tools. Flow will follow.
|
|
|
19718
19718
|
}
|
|
19719
19719
|
});
|
|
19720
19720
|
|
|
19721
|
-
//
|
|
19721
|
+
// packages/orchestrator/dist/costTracker.js
|
|
19722
19722
|
var DEFAULT_PRICING, CostTracker;
|
|
19723
19723
|
var init_costTracker = __esm({
|
|
19724
|
-
"
|
|
19724
|
+
"packages/orchestrator/dist/costTracker.js"() {
|
|
19725
19725
|
"use strict";
|
|
19726
19726
|
DEFAULT_PRICING = [
|
|
19727
19727
|
// Cloud providers — typical pricing tiers
|
|
@@ -19869,7 +19869,7 @@ var init_costTracker = __esm({
|
|
|
19869
19869
|
}
|
|
19870
19870
|
});
|
|
19871
19871
|
|
|
19872
|
-
//
|
|
19872
|
+
// packages/orchestrator/dist/workEvaluator.js
|
|
19873
19873
|
function detectTaskType(taskDescription) {
|
|
19874
19874
|
let bestType = "general";
|
|
19875
19875
|
let bestScore = 0;
|
|
@@ -19904,7 +19904,7 @@ function buildEvaluationPrompt(task, summary, rubric) {
|
|
|
19904
19904
|
}
|
|
19905
19905
|
var RUBRICS, TASK_TYPE_PATTERNS, WorkEvaluator;
|
|
19906
19906
|
var init_workEvaluator = __esm({
|
|
19907
|
-
"
|
|
19907
|
+
"packages/orchestrator/dist/workEvaluator.js"() {
|
|
19908
19908
|
"use strict";
|
|
19909
19909
|
init_promptLoader();
|
|
19910
19910
|
RUBRICS = {
|
|
@@ -20075,10 +20075,10 @@ var init_workEvaluator = __esm({
|
|
|
20075
20075
|
}
|
|
20076
20076
|
});
|
|
20077
20077
|
|
|
20078
|
-
//
|
|
20078
|
+
// packages/orchestrator/dist/sessionMetrics.js
|
|
20079
20079
|
var SessionMetrics;
|
|
20080
20080
|
var init_sessionMetrics = __esm({
|
|
20081
|
-
"
|
|
20081
|
+
"packages/orchestrator/dist/sessionMetrics.js"() {
|
|
20082
20082
|
"use strict";
|
|
20083
20083
|
SessionMetrics = class {
|
|
20084
20084
|
sessionStart;
|
|
@@ -20175,16 +20175,16 @@ var init_sessionMetrics = __esm({
|
|
|
20175
20175
|
}
|
|
20176
20176
|
});
|
|
20177
20177
|
|
|
20178
|
-
//
|
|
20178
|
+
// packages/orchestrator/dist/taskLearning.js
|
|
20179
20179
|
var init_taskLearning = __esm({
|
|
20180
|
-
"
|
|
20180
|
+
"packages/orchestrator/dist/taskLearning.js"() {
|
|
20181
20181
|
"use strict";
|
|
20182
20182
|
}
|
|
20183
20183
|
});
|
|
20184
20184
|
|
|
20185
|
-
//
|
|
20185
|
+
// packages/orchestrator/dist/index.js
|
|
20186
20186
|
var init_dist5 = __esm({
|
|
20187
|
-
"
|
|
20187
|
+
"packages/orchestrator/dist/index.js"() {
|
|
20188
20188
|
"use strict";
|
|
20189
20189
|
init_agent_loop();
|
|
20190
20190
|
init_ralphLoop();
|
|
@@ -20207,7 +20207,7 @@ var init_dist5 = __esm({
|
|
|
20207
20207
|
}
|
|
20208
20208
|
});
|
|
20209
20209
|
|
|
20210
|
-
//
|
|
20210
|
+
// packages/cli/dist/tui/listen.js
|
|
20211
20211
|
var listen_exports = {};
|
|
20212
20212
|
__export(listen_exports, {
|
|
20213
20213
|
ListenEngine: () => ListenEngine,
|
|
@@ -20362,9 +20362,9 @@ function ensureTranscribeCliBackground() {
|
|
|
20362
20362
|
} catch {
|
|
20363
20363
|
}
|
|
20364
20364
|
try {
|
|
20365
|
-
const { exec:
|
|
20365
|
+
const { exec: exec3 } = await import("node:child_process");
|
|
20366
20366
|
return new Promise((resolve31) => {
|
|
20367
|
-
|
|
20367
|
+
exec3("npm i -g transcribe-cli", { timeout: 18e4 }, (err) => {
|
|
20368
20368
|
resolve31(!err);
|
|
20369
20369
|
});
|
|
20370
20370
|
});
|
|
@@ -20387,7 +20387,7 @@ function getListenEngine(config) {
|
|
|
20387
20387
|
}
|
|
20388
20388
|
var AUDIO_EXTENSIONS, VIDEO_EXTENSIONS, WhisperFallbackTranscriber, ListenEngine, _bgInstallPromise, _engine;
|
|
20389
20389
|
var init_listen = __esm({
|
|
20390
|
-
"
|
|
20390
|
+
"packages/cli/dist/tui/listen.js"() {
|
|
20391
20391
|
"use strict";
|
|
20392
20392
|
AUDIO_EXTENSIONS = /* @__PURE__ */ new Set([
|
|
20393
20393
|
".mp3",
|
|
@@ -20926,9 +20926,9 @@ transcribe-cli error: ${transcribeCliError}` : "";
|
|
|
20926
20926
|
}
|
|
20927
20927
|
});
|
|
20928
20928
|
|
|
20929
|
-
//
|
|
20929
|
+
// node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/constants.js
|
|
20930
20930
|
var require_constants = __commonJS({
|
|
20931
|
-
"
|
|
20931
|
+
"node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/constants.js"(exports, module) {
|
|
20932
20932
|
"use strict";
|
|
20933
20933
|
var BINARY_TYPES = ["nodebuffer", "arraybuffer", "fragments"];
|
|
20934
20934
|
var hasBlob = typeof Blob !== "undefined";
|
|
@@ -20949,9 +20949,9 @@ var require_constants = __commonJS({
|
|
|
20949
20949
|
}
|
|
20950
20950
|
});
|
|
20951
20951
|
|
|
20952
|
-
//
|
|
20952
|
+
// node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/buffer-util.js
|
|
20953
20953
|
var require_buffer_util = __commonJS({
|
|
20954
|
-
"
|
|
20954
|
+
"node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/buffer-util.js"(exports, module) {
|
|
20955
20955
|
"use strict";
|
|
20956
20956
|
var { EMPTY_BUFFER } = require_constants();
|
|
20957
20957
|
var FastBuffer = Buffer[Symbol.species];
|
|
@@ -21024,9 +21024,9 @@ var require_buffer_util = __commonJS({
|
|
|
21024
21024
|
}
|
|
21025
21025
|
});
|
|
21026
21026
|
|
|
21027
|
-
//
|
|
21027
|
+
// node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/limiter.js
|
|
21028
21028
|
var require_limiter = __commonJS({
|
|
21029
|
-
"
|
|
21029
|
+
"node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/limiter.js"(exports, module) {
|
|
21030
21030
|
"use strict";
|
|
21031
21031
|
var kDone = /* @__PURE__ */ Symbol("kDone");
|
|
21032
21032
|
var kRun = /* @__PURE__ */ Symbol("kRun");
|
|
@@ -21074,9 +21074,9 @@ var require_limiter = __commonJS({
|
|
|
21074
21074
|
}
|
|
21075
21075
|
});
|
|
21076
21076
|
|
|
21077
|
-
//
|
|
21077
|
+
// node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/permessage-deflate.js
|
|
21078
21078
|
var require_permessage_deflate = __commonJS({
|
|
21079
|
-
"
|
|
21079
|
+
"node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/permessage-deflate.js"(exports, module) {
|
|
21080
21080
|
"use strict";
|
|
21081
21081
|
var zlib = __require("zlib");
|
|
21082
21082
|
var bufferUtil = require_buffer_util();
|
|
@@ -21457,9 +21457,9 @@ var require_permessage_deflate = __commonJS({
|
|
|
21457
21457
|
}
|
|
21458
21458
|
});
|
|
21459
21459
|
|
|
21460
|
-
//
|
|
21460
|
+
// node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/validation.js
|
|
21461
21461
|
var require_validation = __commonJS({
|
|
21462
|
-
"
|
|
21462
|
+
"node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/validation.js"(exports, module) {
|
|
21463
21463
|
"use strict";
|
|
21464
21464
|
var { isUtf8 } = __require("buffer");
|
|
21465
21465
|
var { hasBlob } = require_constants();
|
|
@@ -21658,9 +21658,9 @@ var require_validation = __commonJS({
|
|
|
21658
21658
|
}
|
|
21659
21659
|
});
|
|
21660
21660
|
|
|
21661
|
-
//
|
|
21661
|
+
// node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/receiver.js
|
|
21662
21662
|
var require_receiver = __commonJS({
|
|
21663
|
-
"
|
|
21663
|
+
"node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/receiver.js"(exports, module) {
|
|
21664
21664
|
"use strict";
|
|
21665
21665
|
var { Writable: Writable2 } = __require("stream");
|
|
21666
21666
|
var PerMessageDeflate = require_permessage_deflate();
|
|
@@ -22250,9 +22250,9 @@ var require_receiver = __commonJS({
|
|
|
22250
22250
|
}
|
|
22251
22251
|
});
|
|
22252
22252
|
|
|
22253
|
-
//
|
|
22253
|
+
// node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/sender.js
|
|
22254
22254
|
var require_sender = __commonJS({
|
|
22255
|
-
"
|
|
22255
|
+
"node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/sender.js"(exports, module) {
|
|
22256
22256
|
"use strict";
|
|
22257
22257
|
var { Duplex } = __require("stream");
|
|
22258
22258
|
var { randomFillSync } = __require("crypto");
|
|
@@ -22738,9 +22738,9 @@ var require_sender = __commonJS({
|
|
|
22738
22738
|
}
|
|
22739
22739
|
});
|
|
22740
22740
|
|
|
22741
|
-
//
|
|
22741
|
+
// node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/event-target.js
|
|
22742
22742
|
var require_event_target = __commonJS({
|
|
22743
|
-
"
|
|
22743
|
+
"node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/event-target.js"(exports, module) {
|
|
22744
22744
|
"use strict";
|
|
22745
22745
|
var { kForOnEventAttribute, kListener } = require_constants();
|
|
22746
22746
|
var kCode = /* @__PURE__ */ Symbol("kCode");
|
|
@@ -22967,9 +22967,9 @@ var require_event_target = __commonJS({
|
|
|
22967
22967
|
}
|
|
22968
22968
|
});
|
|
22969
22969
|
|
|
22970
|
-
//
|
|
22970
|
+
// node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/extension.js
|
|
22971
22971
|
var require_extension = __commonJS({
|
|
22972
|
-
"
|
|
22972
|
+
"node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/extension.js"(exports, module) {
|
|
22973
22973
|
"use strict";
|
|
22974
22974
|
var { tokenChars } = require_validation();
|
|
22975
22975
|
function push(dest, name, elem) {
|
|
@@ -23120,9 +23120,9 @@ var require_extension = __commonJS({
|
|
|
23120
23120
|
}
|
|
23121
23121
|
});
|
|
23122
23122
|
|
|
23123
|
-
//
|
|
23123
|
+
// node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/websocket.js
|
|
23124
23124
|
var require_websocket = __commonJS({
|
|
23125
|
-
"
|
|
23125
|
+
"node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/websocket.js"(exports, module) {
|
|
23126
23126
|
"use strict";
|
|
23127
23127
|
var EventEmitter7 = __require("events");
|
|
23128
23128
|
var https = __require("https");
|
|
@@ -24006,9 +24006,9 @@ var require_websocket = __commonJS({
|
|
|
24006
24006
|
}
|
|
24007
24007
|
});
|
|
24008
24008
|
|
|
24009
|
-
//
|
|
24009
|
+
// node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/stream.js
|
|
24010
24010
|
var require_stream = __commonJS({
|
|
24011
|
-
"
|
|
24011
|
+
"node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/stream.js"(exports, module) {
|
|
24012
24012
|
"use strict";
|
|
24013
24013
|
var WebSocket2 = require_websocket();
|
|
24014
24014
|
var { Duplex } = __require("stream");
|
|
@@ -24104,9 +24104,9 @@ var require_stream = __commonJS({
|
|
|
24104
24104
|
}
|
|
24105
24105
|
});
|
|
24106
24106
|
|
|
24107
|
-
//
|
|
24107
|
+
// node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/subprotocol.js
|
|
24108
24108
|
var require_subprotocol = __commonJS({
|
|
24109
|
-
"
|
|
24109
|
+
"node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/subprotocol.js"(exports, module) {
|
|
24110
24110
|
"use strict";
|
|
24111
24111
|
var { tokenChars } = require_validation();
|
|
24112
24112
|
function parse(header) {
|
|
@@ -24149,9 +24149,9 @@ var require_subprotocol = __commonJS({
|
|
|
24149
24149
|
}
|
|
24150
24150
|
});
|
|
24151
24151
|
|
|
24152
|
-
//
|
|
24152
|
+
// node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/websocket-server.js
|
|
24153
24153
|
var require_websocket_server = __commonJS({
|
|
24154
|
-
"
|
|
24154
|
+
"node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/websocket-server.js"(exports, module) {
|
|
24155
24155
|
"use strict";
|
|
24156
24156
|
var EventEmitter7 = __require("events");
|
|
24157
24157
|
var http = __require("http");
|
|
@@ -24542,10 +24542,10 @@ var require_websocket_server = __commonJS({
|
|
|
24542
24542
|
}
|
|
24543
24543
|
});
|
|
24544
24544
|
|
|
24545
|
-
//
|
|
24545
|
+
// node_modules/.pnpm/ws@8.19.0/node_modules/ws/wrapper.mjs
|
|
24546
24546
|
var import_stream, import_receiver, import_sender, import_websocket, import_websocket_server;
|
|
24547
24547
|
var init_wrapper = __esm({
|
|
24548
|
-
"
|
|
24548
|
+
"node_modules/.pnpm/ws@8.19.0/node_modules/ws/wrapper.mjs"() {
|
|
24549
24549
|
import_stream = __toESM(require_stream(), 1);
|
|
24550
24550
|
import_receiver = __toESM(require_receiver(), 1);
|
|
24551
24551
|
import_sender = __toESM(require_sender(), 1);
|
|
@@ -24554,7 +24554,7 @@ var init_wrapper = __esm({
|
|
|
24554
24554
|
}
|
|
24555
24555
|
});
|
|
24556
24556
|
|
|
24557
|
-
//
|
|
24557
|
+
// packages/cli/dist/tui/render.js
|
|
24558
24558
|
function ansi2(code, text) {
|
|
24559
24559
|
return isTTY2 ? `\x1B[${code}m${text}\x1B[0m` : text;
|
|
24560
24560
|
}
|
|
@@ -25243,7 +25243,7 @@ function formatDuration2(ms) {
|
|
|
25243
25243
|
}
|
|
25244
25244
|
var isTTY2, c2, pastel, _emojisEnabled, _colorsEnabled, MD, TOOL_ICONS, TOOL_LABELS, TOOL_COLORS, _contentWriteHook, HINTS, TOOL_NAMES, COMMAND_NAMES;
|
|
25245
25245
|
var init_render = __esm({
|
|
25246
|
-
"
|
|
25246
|
+
"packages/cli/dist/tui/render.js"() {
|
|
25247
25247
|
"use strict";
|
|
25248
25248
|
isTTY2 = process.stdout.isTTY ?? false;
|
|
25249
25249
|
c2 = {
|
|
@@ -25468,7 +25468,7 @@ var init_render = __esm({
|
|
|
25468
25468
|
}
|
|
25469
25469
|
});
|
|
25470
25470
|
|
|
25471
|
-
//
|
|
25471
|
+
// packages/cli/dist/tui/voice-session.js
|
|
25472
25472
|
import { createServer } from "node:http";
|
|
25473
25473
|
import { spawn as spawn13, execSync as execSync24 } from "node:child_process";
|
|
25474
25474
|
import { EventEmitter as EventEmitter2 } from "node:events";
|
|
@@ -25849,7 +25849,7 @@ function renderVoiceSessionTranscript(speaker, text) {
|
|
|
25849
25849
|
}
|
|
25850
25850
|
var VoiceSession;
|
|
25851
25851
|
var init_voice_session = __esm({
|
|
25852
|
-
"
|
|
25852
|
+
"packages/cli/dist/tui/voice-session.js"() {
|
|
25853
25853
|
"use strict";
|
|
25854
25854
|
init_wrapper();
|
|
25855
25855
|
init_render();
|
|
@@ -26196,13 +26196,15 @@ var init_voice_session = __esm({
|
|
|
26196
26196
|
}
|
|
26197
26197
|
});
|
|
26198
26198
|
|
|
26199
|
-
//
|
|
26199
|
+
// packages/cli/dist/tui/expose.js
|
|
26200
26200
|
import { createServer as createServer2, request as httpRequest } from "node:http";
|
|
26201
26201
|
import { spawn as spawn14, exec } from "node:child_process";
|
|
26202
26202
|
import { EventEmitter as EventEmitter3 } from "node:events";
|
|
26203
26203
|
import { randomBytes as randomBytes7 } from "node:crypto";
|
|
26204
26204
|
import { URL as URL2 } from "node:url";
|
|
26205
26205
|
import { loadavg, cpus, totalmem, freemem } from "node:os";
|
|
26206
|
+
import { existsSync as existsSync26, readFileSync as readFileSync18, writeFileSync as writeFileSync8, unlinkSync as unlinkSync3 } from "node:fs";
|
|
26207
|
+
import { join as join35 } from "node:path";
|
|
26206
26208
|
function cleanForwardHeaders(raw, targetHost) {
|
|
26207
26209
|
const out = {};
|
|
26208
26210
|
for (const [key, value] of Object.entries(raw)) {
|
|
@@ -26221,6 +26223,40 @@ function cleanForwardHeaders(raw, targetHost) {
|
|
|
26221
26223
|
out.host = targetHost;
|
|
26222
26224
|
return out;
|
|
26223
26225
|
}
|
|
26226
|
+
function readExposeState(stateDir) {
|
|
26227
|
+
try {
|
|
26228
|
+
const path = join35(stateDir, STATE_FILE_NAME);
|
|
26229
|
+
if (!existsSync26(path))
|
|
26230
|
+
return null;
|
|
26231
|
+
const raw = readFileSync18(path, "utf8");
|
|
26232
|
+
const data = JSON.parse(raw);
|
|
26233
|
+
if (!data.pid || !data.tunnelUrl || !data.authKey || !data.proxyPort)
|
|
26234
|
+
return null;
|
|
26235
|
+
return data;
|
|
26236
|
+
} catch {
|
|
26237
|
+
return null;
|
|
26238
|
+
}
|
|
26239
|
+
}
|
|
26240
|
+
function writeExposeState(stateDir, state) {
|
|
26241
|
+
try {
|
|
26242
|
+
writeFileSync8(join35(stateDir, STATE_FILE_NAME), JSON.stringify(state, null, 2));
|
|
26243
|
+
} catch {
|
|
26244
|
+
}
|
|
26245
|
+
}
|
|
26246
|
+
function removeExposeState(stateDir) {
|
|
26247
|
+
try {
|
|
26248
|
+
unlinkSync3(join35(stateDir, STATE_FILE_NAME));
|
|
26249
|
+
} catch {
|
|
26250
|
+
}
|
|
26251
|
+
}
|
|
26252
|
+
function isProcessAlive(pid) {
|
|
26253
|
+
try {
|
|
26254
|
+
process.kill(pid, 0);
|
|
26255
|
+
return true;
|
|
26256
|
+
} catch {
|
|
26257
|
+
return false;
|
|
26258
|
+
}
|
|
26259
|
+
}
|
|
26224
26260
|
async function collectSystemMetricsAsync() {
|
|
26225
26261
|
const [l1, l5, l15] = loadavg();
|
|
26226
26262
|
const cores = cpus().length;
|
|
@@ -26269,9 +26305,9 @@ async function collectSystemMetricsAsync() {
|
|
|
26269
26305
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
26270
26306
|
};
|
|
26271
26307
|
}
|
|
26272
|
-
var HOP_BY_HOP_HEADERS, CF_HEADERS_PREFIX, DEFAULT_TARGETS, ExposeGateway;
|
|
26308
|
+
var HOP_BY_HOP_HEADERS, CF_HEADERS_PREFIX, DEFAULT_TARGETS, STATE_FILE_NAME, ExposeGateway;
|
|
26273
26309
|
var init_expose = __esm({
|
|
26274
|
-
"
|
|
26310
|
+
"packages/cli/dist/tui/expose.js"() {
|
|
26275
26311
|
"use strict";
|
|
26276
26312
|
init_render();
|
|
26277
26313
|
HOP_BY_HOP_HEADERS = /* @__PURE__ */ new Set([
|
|
@@ -26291,14 +26327,18 @@ var init_expose = __esm({
|
|
|
26291
26327
|
llvm: "http://127.0.0.1:8080",
|
|
26292
26328
|
custom: "http://127.0.0.1:11434"
|
|
26293
26329
|
};
|
|
26294
|
-
|
|
26330
|
+
STATE_FILE_NAME = "expose-state.json";
|
|
26331
|
+
ExposeGateway = class _ExposeGateway extends EventEmitter3 {
|
|
26295
26332
|
options;
|
|
26296
26333
|
server = null;
|
|
26297
26334
|
cloudflaredProcess = null;
|
|
26335
|
+
/** PID of detached cloudflared (for killing on stop, even across OA restarts) */
|
|
26336
|
+
_cloudflaredPid = null;
|
|
26298
26337
|
_tunnelUrl = null;
|
|
26299
26338
|
_authKey;
|
|
26300
26339
|
_targetUrl;
|
|
26301
26340
|
_kind;
|
|
26341
|
+
_stateDir;
|
|
26302
26342
|
_stats = {
|
|
26303
26343
|
status: "standby",
|
|
26304
26344
|
totalRequests: 0,
|
|
@@ -26326,6 +26366,7 @@ var init_expose = __esm({
|
|
|
26326
26366
|
this.options = options;
|
|
26327
26367
|
this._kind = options.kind;
|
|
26328
26368
|
this._targetUrl = options.targetUrl ?? DEFAULT_TARGETS[options.kind];
|
|
26369
|
+
this._stateDir = options.stateDir ?? null;
|
|
26329
26370
|
if (options.authKey === void 0 || options.authKey === "") {
|
|
26330
26371
|
this._authKey = randomBytes7(24).toString("base64url");
|
|
26331
26372
|
} else {
|
|
@@ -26345,24 +26386,101 @@ var init_expose = __esm({
|
|
|
26345
26386
|
this._tunnelUrl = await this.startCloudflared(port);
|
|
26346
26387
|
this._stats.status = "active";
|
|
26347
26388
|
this.emitStats();
|
|
26389
|
+
if (this._stateDir) {
|
|
26390
|
+
writeExposeState(this._stateDir, {
|
|
26391
|
+
pid: this._cloudflaredPid,
|
|
26392
|
+
tunnelUrl: this._tunnelUrl,
|
|
26393
|
+
authKey: this._authKey,
|
|
26394
|
+
proxyPort: port,
|
|
26395
|
+
targetUrl: this._targetUrl,
|
|
26396
|
+
kind: this._kind,
|
|
26397
|
+
startedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
26398
|
+
});
|
|
26399
|
+
}
|
|
26400
|
+
return this._tunnelUrl;
|
|
26401
|
+
}
|
|
26402
|
+
/**
|
|
26403
|
+
* Reconnect to an existing detached cloudflared tunnel from a previous
|
|
26404
|
+
* OA session. Starts the proxy on the same port so cloudflared routes
|
|
26405
|
+
* traffic to it seamlessly.
|
|
26406
|
+
*/
|
|
26407
|
+
async reconnect(state) {
|
|
26408
|
+
if (this.server)
|
|
26409
|
+
throw new Error("Gateway already running");
|
|
26410
|
+
if (!isProcessAlive(state.pid)) {
|
|
26411
|
+
if (this._stateDir)
|
|
26412
|
+
removeExposeState(this._stateDir);
|
|
26413
|
+
throw new Error("Cloudflared process is no longer running");
|
|
26414
|
+
}
|
|
26415
|
+
this._tunnelUrl = state.tunnelUrl;
|
|
26416
|
+
this._authKey = state.authKey;
|
|
26417
|
+
this._targetUrl = state.targetUrl;
|
|
26418
|
+
this._kind = state.kind;
|
|
26419
|
+
this._cloudflaredPid = state.pid;
|
|
26420
|
+
this._proxyPort = state.proxyPort;
|
|
26421
|
+
this.server = this.createProxyServer(state.proxyPort);
|
|
26422
|
+
await new Promise((resolve31, reject) => {
|
|
26423
|
+
this.server.listen(state.proxyPort, "127.0.0.1", () => resolve31());
|
|
26424
|
+
this.server.on("error", reject);
|
|
26425
|
+
});
|
|
26426
|
+
this._stats.status = "active";
|
|
26427
|
+
this.emitStats();
|
|
26348
26428
|
return this._tunnelUrl;
|
|
26349
26429
|
}
|
|
26350
26430
|
async stop() {
|
|
26431
|
+
if (this._cloudflaredPid && isProcessAlive(this._cloudflaredPid)) {
|
|
26432
|
+
try {
|
|
26433
|
+
process.kill(this._cloudflaredPid, "SIGTERM");
|
|
26434
|
+
} catch {
|
|
26435
|
+
}
|
|
26436
|
+
}
|
|
26351
26437
|
if (this.cloudflaredProcess) {
|
|
26352
|
-
|
|
26438
|
+
try {
|
|
26439
|
+
this.cloudflaredProcess.kill("SIGTERM");
|
|
26440
|
+
} catch {
|
|
26441
|
+
}
|
|
26353
26442
|
this.cloudflaredProcess = null;
|
|
26354
26443
|
}
|
|
26444
|
+
this._cloudflaredPid = null;
|
|
26355
26445
|
if (this.server) {
|
|
26356
26446
|
await new Promise((resolve31) => {
|
|
26357
26447
|
this.server.close(() => resolve31());
|
|
26358
26448
|
});
|
|
26359
26449
|
this.server = null;
|
|
26360
26450
|
}
|
|
26451
|
+
if (this._stateDir)
|
|
26452
|
+
removeExposeState(this._stateDir);
|
|
26361
26453
|
this._tunnelUrl = null;
|
|
26362
26454
|
this._stats.status = "standby";
|
|
26363
26455
|
this._stats.activeConnections = 0;
|
|
26364
26456
|
this.emitStats();
|
|
26365
26457
|
}
|
|
26458
|
+
/**
|
|
26459
|
+
* Check for and reconnect to a surviving expose tunnel from a previous session.
|
|
26460
|
+
* Returns the gateway if reconnection succeeded, or null if no valid state found.
|
|
26461
|
+
*/
|
|
26462
|
+
static async checkAndReconnect(stateDir, options) {
|
|
26463
|
+
const state = readExposeState(stateDir);
|
|
26464
|
+
if (!state)
|
|
26465
|
+
return null;
|
|
26466
|
+
if (!isProcessAlive(state.pid)) {
|
|
26467
|
+
removeExposeState(stateDir);
|
|
26468
|
+
return null;
|
|
26469
|
+
}
|
|
26470
|
+
const gateway = new _ExposeGateway({
|
|
26471
|
+
kind: state.kind,
|
|
26472
|
+
targetUrl: state.targetUrl,
|
|
26473
|
+
authKey: state.authKey,
|
|
26474
|
+
stateDir,
|
|
26475
|
+
...options
|
|
26476
|
+
});
|
|
26477
|
+
try {
|
|
26478
|
+
await gateway.reconnect(state);
|
|
26479
|
+
return gateway;
|
|
26480
|
+
} catch {
|
|
26481
|
+
return null;
|
|
26482
|
+
}
|
|
26483
|
+
}
|
|
26366
26484
|
// ── Proxy server ────────────────────────────────────────────────────────
|
|
26367
26485
|
createProxyServer(localPort) {
|
|
26368
26486
|
const target = new URL2(this._targetUrl);
|
|
@@ -26539,8 +26657,10 @@ var init_expose = __esm({
|
|
|
26539
26657
|
"--proxy-keepalive-timeout",
|
|
26540
26658
|
"300s"
|
|
26541
26659
|
], {
|
|
26660
|
+
detached: true,
|
|
26542
26661
|
stdio: ["ignore", "pipe", "pipe"]
|
|
26543
26662
|
});
|
|
26663
|
+
this._cloudflaredPid = this.cloudflaredProcess.pid ?? null;
|
|
26544
26664
|
let urlFound = false;
|
|
26545
26665
|
const handleOutput = (data) => {
|
|
26546
26666
|
const text = data.toString();
|
|
@@ -26548,6 +26668,9 @@ var init_expose = __esm({
|
|
|
26548
26668
|
if (urlMatch && !urlFound) {
|
|
26549
26669
|
urlFound = true;
|
|
26550
26670
|
clearTimeout(timeout);
|
|
26671
|
+
this.cloudflaredProcess?.unref();
|
|
26672
|
+
this.cloudflaredProcess?.stdout?.destroy();
|
|
26673
|
+
this.cloudflaredProcess?.stderr?.destroy();
|
|
26551
26674
|
resolve31(urlMatch[0]);
|
|
26552
26675
|
}
|
|
26553
26676
|
};
|
|
@@ -26580,6 +26703,17 @@ var init_expose = __esm({
|
|
|
26580
26703
|
this._stats.status = "active";
|
|
26581
26704
|
this.emitStats();
|
|
26582
26705
|
this.options.onInfo?.(`Tunnel restarted: ${this._tunnelUrl}`);
|
|
26706
|
+
if (this._stateDir) {
|
|
26707
|
+
writeExposeState(this._stateDir, {
|
|
26708
|
+
pid: this._cloudflaredPid,
|
|
26709
|
+
tunnelUrl: this._tunnelUrl,
|
|
26710
|
+
authKey: this._authKey,
|
|
26711
|
+
proxyPort: this._proxyPort,
|
|
26712
|
+
targetUrl: this._targetUrl,
|
|
26713
|
+
kind: this._kind,
|
|
26714
|
+
startedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
26715
|
+
});
|
|
26716
|
+
}
|
|
26583
26717
|
} catch (err) {
|
|
26584
26718
|
this.options.onError?.(`Tunnel restart failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
26585
26719
|
}
|
|
@@ -26638,25 +26772,25 @@ var init_expose = __esm({
|
|
|
26638
26772
|
}
|
|
26639
26773
|
});
|
|
26640
26774
|
|
|
26641
|
-
//
|
|
26775
|
+
// packages/cli/dist/tui/p2p/types.js
|
|
26642
26776
|
function trustLevel(tier) {
|
|
26643
26777
|
return TRUST_ORDER.indexOf(tier);
|
|
26644
26778
|
}
|
|
26645
26779
|
var TRUST_ORDER;
|
|
26646
26780
|
var init_types = __esm({
|
|
26647
|
-
"
|
|
26781
|
+
"packages/cli/dist/tui/p2p/types.js"() {
|
|
26648
26782
|
"use strict";
|
|
26649
26783
|
TRUST_ORDER = ["public", "verified", "tee", "local"];
|
|
26650
26784
|
}
|
|
26651
26785
|
});
|
|
26652
26786
|
|
|
26653
|
-
//
|
|
26787
|
+
// packages/cli/dist/tui/p2p/secret-vault.js
|
|
26654
26788
|
import { createCipheriv as createCipheriv2, createDecipheriv as createDecipheriv2, randomBytes as randomBytes8, scryptSync as scryptSync2, createHash as createHash2 } from "node:crypto";
|
|
26655
|
-
import { readFileSync as
|
|
26656
|
-
import { join as
|
|
26789
|
+
import { readFileSync as readFileSync19, writeFileSync as writeFileSync9, existsSync as existsSync27, mkdirSync as mkdirSync8 } from "node:fs";
|
|
26790
|
+
import { join as join36, dirname as dirname13 } from "node:path";
|
|
26657
26791
|
var PLACEHOLDER_PREFIX, PLACEHOLDER_SUFFIX, CIPHER_ALGO, SALT_LEN, IV_LEN, KEY_LEN, SecretVault;
|
|
26658
26792
|
var init_secret_vault = __esm({
|
|
26659
|
-
"
|
|
26793
|
+
"packages/cli/dist/tui/p2p/secret-vault.js"() {
|
|
26660
26794
|
"use strict";
|
|
26661
26795
|
init_types();
|
|
26662
26796
|
PLACEHOLDER_PREFIX = "{{OA_VAR_";
|
|
@@ -26865,18 +26999,18 @@ var init_secret_vault = __esm({
|
|
|
26865
26999
|
const tag = cipher.getAuthTag();
|
|
26866
27000
|
const blob = Buffer.concat([salt, iv, tag, encrypted]);
|
|
26867
27001
|
const dir = dirname13(this.storePath);
|
|
26868
|
-
if (!
|
|
27002
|
+
if (!existsSync27(dir))
|
|
26869
27003
|
mkdirSync8(dir, { recursive: true });
|
|
26870
|
-
|
|
27004
|
+
writeFileSync9(this.storePath, blob, { mode: 384 });
|
|
26871
27005
|
}
|
|
26872
27006
|
/**
|
|
26873
27007
|
* Load vault from disk, decrypting with the given passphrase.
|
|
26874
27008
|
* Returns the number of secrets loaded.
|
|
26875
27009
|
*/
|
|
26876
27010
|
load(passphrase) {
|
|
26877
|
-
if (!this.storePath || !
|
|
27011
|
+
if (!this.storePath || !existsSync27(this.storePath))
|
|
26878
27012
|
return 0;
|
|
26879
|
-
const blob =
|
|
27013
|
+
const blob = readFileSync19(this.storePath);
|
|
26880
27014
|
if (blob.length < SALT_LEN + IV_LEN + 16) {
|
|
26881
27015
|
throw new Error("Vault file is corrupted (too small)");
|
|
26882
27016
|
}
|
|
@@ -26914,13 +27048,13 @@ var init_secret_vault = __esm({
|
|
|
26914
27048
|
}
|
|
26915
27049
|
});
|
|
26916
27050
|
|
|
26917
|
-
//
|
|
27051
|
+
// packages/cli/dist/tui/p2p/peer-mesh.js
|
|
26918
27052
|
import { EventEmitter as EventEmitter4 } from "node:events";
|
|
26919
27053
|
import { createServer as createServer3 } from "node:http";
|
|
26920
27054
|
import { randomBytes as randomBytes9, createHash as createHash3, generateKeyPairSync } from "node:crypto";
|
|
26921
27055
|
var PING_INTERVAL_MS, PEER_TIMEOUT_MS, GOSSIP_INTERVAL_MS, MAX_PEERS, PeerMesh;
|
|
26922
27056
|
var init_peer_mesh = __esm({
|
|
26923
|
-
"
|
|
27057
|
+
"packages/cli/dist/tui/p2p/peer-mesh.js"() {
|
|
26924
27058
|
"use strict";
|
|
26925
27059
|
init_wrapper();
|
|
26926
27060
|
PING_INTERVAL_MS = 3e4;
|
|
@@ -27379,11 +27513,11 @@ var init_peer_mesh = __esm({
|
|
|
27379
27513
|
}
|
|
27380
27514
|
});
|
|
27381
27515
|
|
|
27382
|
-
//
|
|
27516
|
+
// packages/cli/dist/tui/p2p/inference-router.js
|
|
27383
27517
|
import { EventEmitter as EventEmitter5 } from "node:events";
|
|
27384
27518
|
var TRUST_WEIGHTS, InferenceRouter;
|
|
27385
27519
|
var init_inference_router = __esm({
|
|
27386
|
-
"
|
|
27520
|
+
"packages/cli/dist/tui/p2p/inference-router.js"() {
|
|
27387
27521
|
"use strict";
|
|
27388
27522
|
init_types();
|
|
27389
27523
|
TRUST_WEIGHTS = {
|
|
@@ -27577,9 +27711,9 @@ var init_inference_router = __esm({
|
|
|
27577
27711
|
}
|
|
27578
27712
|
});
|
|
27579
27713
|
|
|
27580
|
-
//
|
|
27714
|
+
// packages/cli/dist/tui/p2p/index.js
|
|
27581
27715
|
var init_p2p = __esm({
|
|
27582
|
-
"
|
|
27716
|
+
"packages/cli/dist/tui/p2p/index.js"() {
|
|
27583
27717
|
"use strict";
|
|
27584
27718
|
init_secret_vault();
|
|
27585
27719
|
init_peer_mesh();
|
|
@@ -27588,7 +27722,7 @@ var init_p2p = __esm({
|
|
|
27588
27722
|
}
|
|
27589
27723
|
});
|
|
27590
27724
|
|
|
27591
|
-
//
|
|
27725
|
+
// packages/cli/dist/tui/call-agent.js
|
|
27592
27726
|
import { EventEmitter as EventEmitter6 } from "node:events";
|
|
27593
27727
|
import crypto2 from "node:crypto";
|
|
27594
27728
|
function adaptTool(tool) {
|
|
@@ -27612,7 +27746,7 @@ function generateSessionKey() {
|
|
|
27612
27746
|
}
|
|
27613
27747
|
var ActivityFeed, _globalFeed, CallSubAgent;
|
|
27614
27748
|
var init_call_agent = __esm({
|
|
27615
|
-
"
|
|
27749
|
+
"packages/cli/dist/tui/call-agent.js"() {
|
|
27616
27750
|
"use strict";
|
|
27617
27751
|
init_dist5();
|
|
27618
27752
|
init_dist2();
|
|
@@ -27870,7 +28004,7 @@ ${activitySummary}
|
|
|
27870
28004
|
}
|
|
27871
28005
|
});
|
|
27872
28006
|
|
|
27873
|
-
//
|
|
28007
|
+
// packages/cli/dist/tui/model-picker.js
|
|
27874
28008
|
async function fetchOllamaModels(baseUrl) {
|
|
27875
28009
|
const url = `${normalizeBaseUrl(baseUrl)}/api/tags`;
|
|
27876
28010
|
const resp = await fetch(url, {
|
|
@@ -28075,38 +28209,38 @@ function formatRelativeTime(iso) {
|
|
|
28075
28209
|
return `${months}mo ago`;
|
|
28076
28210
|
}
|
|
28077
28211
|
var init_model_picker = __esm({
|
|
28078
|
-
"
|
|
28212
|
+
"packages/cli/dist/tui/model-picker.js"() {
|
|
28079
28213
|
"use strict";
|
|
28080
28214
|
init_dist();
|
|
28081
28215
|
}
|
|
28082
28216
|
});
|
|
28083
28217
|
|
|
28084
|
-
//
|
|
28218
|
+
// packages/prompts/dist/loader.js
|
|
28085
28219
|
var init_loader = __esm({
|
|
28086
|
-
"
|
|
28220
|
+
"packages/prompts/dist/loader.js"() {
|
|
28087
28221
|
"use strict";
|
|
28088
28222
|
}
|
|
28089
28223
|
});
|
|
28090
28224
|
|
|
28091
|
-
//
|
|
28225
|
+
// packages/prompts/dist/render.js
|
|
28092
28226
|
var init_render2 = __esm({
|
|
28093
|
-
"
|
|
28227
|
+
"packages/prompts/dist/render.js"() {
|
|
28094
28228
|
"use strict";
|
|
28095
28229
|
}
|
|
28096
28230
|
});
|
|
28097
28231
|
|
|
28098
|
-
//
|
|
28099
|
-
import { readFileSync as
|
|
28100
|
-
import { join as
|
|
28232
|
+
// packages/prompts/dist/promptLoader.js
|
|
28233
|
+
import { readFileSync as readFileSync20, existsSync as existsSync28 } from "node:fs";
|
|
28234
|
+
import { join as join37, dirname as dirname14 } from "node:path";
|
|
28101
28235
|
import { fileURLToPath as fileURLToPath9 } from "node:url";
|
|
28102
28236
|
function loadPrompt2(promptPath, vars) {
|
|
28103
28237
|
let content = cache2.get(promptPath);
|
|
28104
28238
|
if (content === void 0) {
|
|
28105
|
-
const fullPath =
|
|
28106
|
-
if (!
|
|
28239
|
+
const fullPath = join37(PROMPTS_DIR2, promptPath);
|
|
28240
|
+
if (!existsSync28(fullPath)) {
|
|
28107
28241
|
throw new Error(`Prompt file not found: ${fullPath}`);
|
|
28108
28242
|
}
|
|
28109
|
-
content =
|
|
28243
|
+
content = readFileSync20(fullPath, "utf-8");
|
|
28110
28244
|
cache2.set(promptPath, content);
|
|
28111
28245
|
}
|
|
28112
28246
|
if (!vars)
|
|
@@ -28115,18 +28249,18 @@ function loadPrompt2(promptPath, vars) {
|
|
|
28115
28249
|
}
|
|
28116
28250
|
var __filename2, __dirname5, devPath, publishedPath, PROMPTS_DIR2, cache2;
|
|
28117
28251
|
var init_promptLoader2 = __esm({
|
|
28118
|
-
"
|
|
28252
|
+
"packages/prompts/dist/promptLoader.js"() {
|
|
28119
28253
|
"use strict";
|
|
28120
28254
|
__filename2 = fileURLToPath9(import.meta.url);
|
|
28121
28255
|
__dirname5 = dirname14(__filename2);
|
|
28122
|
-
devPath =
|
|
28123
|
-
publishedPath =
|
|
28124
|
-
PROMPTS_DIR2 =
|
|
28256
|
+
devPath = join37(__dirname5, "..", "templates");
|
|
28257
|
+
publishedPath = join37(__dirname5, "..", "prompts", "templates");
|
|
28258
|
+
PROMPTS_DIR2 = existsSync28(devPath) ? devPath : publishedPath;
|
|
28125
28259
|
cache2 = /* @__PURE__ */ new Map();
|
|
28126
28260
|
}
|
|
28127
28261
|
});
|
|
28128
28262
|
|
|
28129
|
-
//
|
|
28263
|
+
// packages/prompts/dist/task-templates.js
|
|
28130
28264
|
function getTaskTemplate(type) {
|
|
28131
28265
|
return TEMPLATES[type];
|
|
28132
28266
|
}
|
|
@@ -28142,7 +28276,7 @@ ${template.outputGuidance}`;
|
|
|
28142
28276
|
}
|
|
28143
28277
|
var TEMPLATES;
|
|
28144
28278
|
var init_task_templates = __esm({
|
|
28145
|
-
"
|
|
28279
|
+
"packages/prompts/dist/task-templates.js"() {
|
|
28146
28280
|
"use strict";
|
|
28147
28281
|
init_promptLoader2();
|
|
28148
28282
|
TEMPLATES = {
|
|
@@ -28231,38 +28365,38 @@ var init_task_templates = __esm({
|
|
|
28231
28365
|
}
|
|
28232
28366
|
});
|
|
28233
28367
|
|
|
28234
|
-
//
|
|
28235
|
-
import { join as
|
|
28368
|
+
// packages/prompts/dist/index.js
|
|
28369
|
+
import { join as join38, dirname as dirname15 } from "node:path";
|
|
28236
28370
|
import { fileURLToPath as fileURLToPath10 } from "node:url";
|
|
28237
28371
|
var _dir, _packageRoot;
|
|
28238
28372
|
var init_dist6 = __esm({
|
|
28239
|
-
"
|
|
28373
|
+
"packages/prompts/dist/index.js"() {
|
|
28240
28374
|
"use strict";
|
|
28241
28375
|
init_loader();
|
|
28242
28376
|
init_render2();
|
|
28243
28377
|
init_task_templates();
|
|
28244
28378
|
init_render2();
|
|
28245
28379
|
_dir = dirname15(fileURLToPath10(import.meta.url));
|
|
28246
|
-
_packageRoot =
|
|
28380
|
+
_packageRoot = join38(_dir, "..");
|
|
28247
28381
|
}
|
|
28248
28382
|
});
|
|
28249
28383
|
|
|
28250
|
-
//
|
|
28251
|
-
import { existsSync as
|
|
28252
|
-
import { join as
|
|
28384
|
+
// packages/cli/dist/tui/oa-directory.js
|
|
28385
|
+
import { existsSync as existsSync29, mkdirSync as mkdirSync9, readFileSync as readFileSync21, writeFileSync as writeFileSync10, readdirSync as readdirSync7, statSync as statSync9, unlinkSync as unlinkSync4 } from "node:fs";
|
|
28386
|
+
import { join as join39, relative as relative2, basename as basename9, extname as extname8 } from "node:path";
|
|
28253
28387
|
import { homedir as homedir9 } from "node:os";
|
|
28254
28388
|
function initOaDirectory(repoRoot) {
|
|
28255
|
-
const oaPath =
|
|
28389
|
+
const oaPath = join39(repoRoot, OA_DIR);
|
|
28256
28390
|
for (const sub of SUBDIRS) {
|
|
28257
|
-
mkdirSync9(
|
|
28391
|
+
mkdirSync9(join39(oaPath, sub), { recursive: true });
|
|
28258
28392
|
}
|
|
28259
28393
|
try {
|
|
28260
|
-
const gitignorePath =
|
|
28394
|
+
const gitignorePath = join39(repoRoot, ".gitignore");
|
|
28261
28395
|
const settingsPattern = ".oa/settings.json";
|
|
28262
|
-
if (
|
|
28263
|
-
const content =
|
|
28396
|
+
if (existsSync29(gitignorePath)) {
|
|
28397
|
+
const content = readFileSync21(gitignorePath, "utf-8");
|
|
28264
28398
|
if (!content.includes(settingsPattern)) {
|
|
28265
|
-
|
|
28399
|
+
writeFileSync10(gitignorePath, content.trimEnd() + "\n" + settingsPattern + "\n", "utf-8");
|
|
28266
28400
|
}
|
|
28267
28401
|
}
|
|
28268
28402
|
} catch {
|
|
@@ -28270,41 +28404,41 @@ function initOaDirectory(repoRoot) {
|
|
|
28270
28404
|
return oaPath;
|
|
28271
28405
|
}
|
|
28272
28406
|
function hasOaDirectory(repoRoot) {
|
|
28273
|
-
return
|
|
28407
|
+
return existsSync29(join39(repoRoot, OA_DIR, "index"));
|
|
28274
28408
|
}
|
|
28275
28409
|
function loadProjectSettings(repoRoot) {
|
|
28276
|
-
const settingsPath =
|
|
28410
|
+
const settingsPath = join39(repoRoot, OA_DIR, "settings.json");
|
|
28277
28411
|
try {
|
|
28278
|
-
if (
|
|
28279
|
-
return JSON.parse(
|
|
28412
|
+
if (existsSync29(settingsPath)) {
|
|
28413
|
+
return JSON.parse(readFileSync21(settingsPath, "utf-8"));
|
|
28280
28414
|
}
|
|
28281
28415
|
} catch {
|
|
28282
28416
|
}
|
|
28283
28417
|
return {};
|
|
28284
28418
|
}
|
|
28285
28419
|
function saveProjectSettings(repoRoot, settings) {
|
|
28286
|
-
const oaPath =
|
|
28420
|
+
const oaPath = join39(repoRoot, OA_DIR);
|
|
28287
28421
|
mkdirSync9(oaPath, { recursive: true });
|
|
28288
28422
|
const existing = loadProjectSettings(repoRoot);
|
|
28289
28423
|
const merged = { ...existing, ...settings };
|
|
28290
|
-
|
|
28424
|
+
writeFileSync10(join39(oaPath, "settings.json"), JSON.stringify(merged, null, 2) + "\n", { encoding: "utf-8", mode: 384 });
|
|
28291
28425
|
}
|
|
28292
28426
|
function loadGlobalSettings() {
|
|
28293
|
-
const settingsPath =
|
|
28427
|
+
const settingsPath = join39(homedir9(), ".open-agents", "settings.json");
|
|
28294
28428
|
try {
|
|
28295
|
-
if (
|
|
28296
|
-
return JSON.parse(
|
|
28429
|
+
if (existsSync29(settingsPath)) {
|
|
28430
|
+
return JSON.parse(readFileSync21(settingsPath, "utf-8"));
|
|
28297
28431
|
}
|
|
28298
28432
|
} catch {
|
|
28299
28433
|
}
|
|
28300
28434
|
return {};
|
|
28301
28435
|
}
|
|
28302
28436
|
function saveGlobalSettings(settings) {
|
|
28303
|
-
const dir =
|
|
28437
|
+
const dir = join39(homedir9(), ".open-agents");
|
|
28304
28438
|
mkdirSync9(dir, { recursive: true });
|
|
28305
28439
|
const existing = loadGlobalSettings();
|
|
28306
28440
|
const merged = { ...existing, ...settings };
|
|
28307
|
-
|
|
28441
|
+
writeFileSync10(join39(dir, "settings.json"), JSON.stringify(merged, null, 2) + "\n", { encoding: "utf-8", mode: 384 });
|
|
28308
28442
|
}
|
|
28309
28443
|
function resolveSettings(repoRoot) {
|
|
28310
28444
|
const global = loadGlobalSettings();
|
|
@@ -28319,12 +28453,12 @@ function discoverContextFiles(repoRoot, maxContentLen = 8e3) {
|
|
|
28319
28453
|
while (dir && !visited.has(dir)) {
|
|
28320
28454
|
visited.add(dir);
|
|
28321
28455
|
for (const name of CONTEXT_FILES) {
|
|
28322
|
-
const filePath =
|
|
28456
|
+
const filePath = join39(dir, name);
|
|
28323
28457
|
const normalizedName = name.toLowerCase();
|
|
28324
|
-
if (
|
|
28458
|
+
if (existsSync29(filePath) && !seen.has(filePath)) {
|
|
28325
28459
|
seen.add(filePath);
|
|
28326
28460
|
try {
|
|
28327
|
-
let content =
|
|
28461
|
+
let content = readFileSync21(filePath, "utf-8");
|
|
28328
28462
|
if (content.length > maxContentLen) {
|
|
28329
28463
|
content = content.slice(0, maxContentLen) + "\n\n...(truncated)";
|
|
28330
28464
|
}
|
|
@@ -28338,11 +28472,11 @@ function discoverContextFiles(repoRoot, maxContentLen = 8e3) {
|
|
|
28338
28472
|
}
|
|
28339
28473
|
}
|
|
28340
28474
|
}
|
|
28341
|
-
const projectMap =
|
|
28342
|
-
if (
|
|
28475
|
+
const projectMap = join39(dir, OA_DIR, "context", "project-map.md");
|
|
28476
|
+
if (existsSync29(projectMap) && !seen.has(projectMap)) {
|
|
28343
28477
|
seen.add(projectMap);
|
|
28344
28478
|
try {
|
|
28345
|
-
let content =
|
|
28479
|
+
let content = readFileSync21(projectMap, "utf-8");
|
|
28346
28480
|
if (content.length > maxContentLen) {
|
|
28347
28481
|
content = content.slice(0, maxContentLen) + "\n\n...(truncated)";
|
|
28348
28482
|
}
|
|
@@ -28354,7 +28488,7 @@ function discoverContextFiles(repoRoot, maxContentLen = 8e3) {
|
|
|
28354
28488
|
} catch {
|
|
28355
28489
|
}
|
|
28356
28490
|
}
|
|
28357
|
-
const parent =
|
|
28491
|
+
const parent = join39(dir, "..");
|
|
28358
28492
|
if (parent === dir)
|
|
28359
28493
|
break;
|
|
28360
28494
|
dir = parent;
|
|
@@ -28372,9 +28506,9 @@ function discoverContextFiles(repoRoot, maxContentLen = 8e3) {
|
|
|
28372
28506
|
return found;
|
|
28373
28507
|
}
|
|
28374
28508
|
function readIndexMeta(repoRoot) {
|
|
28375
|
-
const metaPath =
|
|
28509
|
+
const metaPath = join39(repoRoot, OA_DIR, "index", "meta.json");
|
|
28376
28510
|
try {
|
|
28377
|
-
return JSON.parse(
|
|
28511
|
+
return JSON.parse(readFileSync21(metaPath, "utf-8"));
|
|
28378
28512
|
} catch {
|
|
28379
28513
|
return null;
|
|
28380
28514
|
}
|
|
@@ -28425,28 +28559,28 @@ ${tree}\`\`\`
|
|
|
28425
28559
|
sections.push("");
|
|
28426
28560
|
}
|
|
28427
28561
|
const content = sections.join("\n");
|
|
28428
|
-
const contextDir =
|
|
28562
|
+
const contextDir = join39(repoRoot, OA_DIR, "context");
|
|
28429
28563
|
mkdirSync9(contextDir, { recursive: true });
|
|
28430
|
-
|
|
28564
|
+
writeFileSync10(join39(contextDir, "project-map.md"), content, "utf-8");
|
|
28431
28565
|
return content;
|
|
28432
28566
|
}
|
|
28433
28567
|
function saveSession(repoRoot, session) {
|
|
28434
|
-
const historyDir =
|
|
28568
|
+
const historyDir = join39(repoRoot, OA_DIR, "history");
|
|
28435
28569
|
mkdirSync9(historyDir, { recursive: true });
|
|
28436
|
-
|
|
28570
|
+
writeFileSync10(join39(historyDir, `${session.id}.json`), JSON.stringify(session, null, 2), "utf-8");
|
|
28437
28571
|
}
|
|
28438
28572
|
function loadRecentSessions(repoRoot, limit = 5) {
|
|
28439
|
-
const historyDir =
|
|
28440
|
-
if (!
|
|
28573
|
+
const historyDir = join39(repoRoot, OA_DIR, "history");
|
|
28574
|
+
if (!existsSync29(historyDir))
|
|
28441
28575
|
return [];
|
|
28442
28576
|
try {
|
|
28443
28577
|
const files = readdirSync7(historyDir).filter((f) => f.endsWith(".json") && f !== "pending-task.json").map((f) => {
|
|
28444
|
-
const stat5 = statSync9(
|
|
28578
|
+
const stat5 = statSync9(join39(historyDir, f));
|
|
28445
28579
|
return { file: f, mtime: stat5.mtimeMs };
|
|
28446
28580
|
}).sort((a, b) => b.mtime - a.mtime).slice(0, limit);
|
|
28447
28581
|
return files.map((f) => {
|
|
28448
28582
|
try {
|
|
28449
|
-
return JSON.parse(
|
|
28583
|
+
return JSON.parse(readFileSync21(join39(historyDir, f.file), "utf-8"));
|
|
28450
28584
|
} catch {
|
|
28451
28585
|
return null;
|
|
28452
28586
|
}
|
|
@@ -28456,18 +28590,18 @@ function loadRecentSessions(repoRoot, limit = 5) {
|
|
|
28456
28590
|
}
|
|
28457
28591
|
}
|
|
28458
28592
|
function savePendingTask(repoRoot, task) {
|
|
28459
|
-
const historyDir =
|
|
28593
|
+
const historyDir = join39(repoRoot, OA_DIR, "history");
|
|
28460
28594
|
mkdirSync9(historyDir, { recursive: true });
|
|
28461
|
-
|
|
28595
|
+
writeFileSync10(join39(historyDir, PENDING_TASK_FILE), JSON.stringify(task, null, 2) + "\n", "utf-8");
|
|
28462
28596
|
}
|
|
28463
28597
|
function loadPendingTask(repoRoot) {
|
|
28464
|
-
const filePath =
|
|
28598
|
+
const filePath = join39(repoRoot, OA_DIR, "history", PENDING_TASK_FILE);
|
|
28465
28599
|
try {
|
|
28466
|
-
if (!
|
|
28600
|
+
if (!existsSync29(filePath))
|
|
28467
28601
|
return null;
|
|
28468
|
-
const data = JSON.parse(
|
|
28602
|
+
const data = JSON.parse(readFileSync21(filePath, "utf-8"));
|
|
28469
28603
|
try {
|
|
28470
|
-
|
|
28604
|
+
unlinkSync4(filePath);
|
|
28471
28605
|
} catch {
|
|
28472
28606
|
}
|
|
28473
28607
|
return data;
|
|
@@ -28476,13 +28610,13 @@ function loadPendingTask(repoRoot) {
|
|
|
28476
28610
|
}
|
|
28477
28611
|
}
|
|
28478
28612
|
function saveSessionContext(repoRoot, entry) {
|
|
28479
|
-
const contextDir =
|
|
28613
|
+
const contextDir = join39(repoRoot, OA_DIR, "context");
|
|
28480
28614
|
mkdirSync9(contextDir, { recursive: true });
|
|
28481
|
-
const filePath =
|
|
28615
|
+
const filePath = join39(contextDir, CONTEXT_SAVE_FILE);
|
|
28482
28616
|
let ctx;
|
|
28483
28617
|
try {
|
|
28484
|
-
if (
|
|
28485
|
-
ctx = JSON.parse(
|
|
28618
|
+
if (existsSync29(filePath)) {
|
|
28619
|
+
ctx = JSON.parse(readFileSync21(filePath, "utf-8"));
|
|
28486
28620
|
} else {
|
|
28487
28621
|
ctx = { entries: [], maxEntries: MAX_CONTEXT_ENTRIES, updatedAt: "" };
|
|
28488
28622
|
}
|
|
@@ -28494,14 +28628,14 @@ function saveSessionContext(repoRoot, entry) {
|
|
|
28494
28628
|
ctx.entries = ctx.entries.slice(-ctx.maxEntries);
|
|
28495
28629
|
}
|
|
28496
28630
|
ctx.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
28497
|
-
|
|
28631
|
+
writeFileSync10(filePath, JSON.stringify(ctx, null, 2) + "\n", "utf-8");
|
|
28498
28632
|
}
|
|
28499
28633
|
function loadSessionContext(repoRoot) {
|
|
28500
|
-
const filePath =
|
|
28634
|
+
const filePath = join39(repoRoot, OA_DIR, "context", CONTEXT_SAVE_FILE);
|
|
28501
28635
|
try {
|
|
28502
|
-
if (!
|
|
28636
|
+
if (!existsSync29(filePath))
|
|
28503
28637
|
return null;
|
|
28504
|
-
return JSON.parse(
|
|
28638
|
+
return JSON.parse(readFileSync21(filePath, "utf-8"));
|
|
28505
28639
|
} catch {
|
|
28506
28640
|
return null;
|
|
28507
28641
|
}
|
|
@@ -28548,12 +28682,12 @@ function detectManifests(repoRoot) {
|
|
|
28548
28682
|
{ file: "docker-compose.yaml", type: "Docker Compose" }
|
|
28549
28683
|
];
|
|
28550
28684
|
for (const check of checks) {
|
|
28551
|
-
const filePath =
|
|
28552
|
-
if (
|
|
28685
|
+
const filePath = join39(repoRoot, check.file);
|
|
28686
|
+
if (existsSync29(filePath)) {
|
|
28553
28687
|
let name;
|
|
28554
28688
|
if (check.nameField) {
|
|
28555
28689
|
try {
|
|
28556
|
-
const data = JSON.parse(
|
|
28690
|
+
const data = JSON.parse(readFileSync21(filePath, "utf-8"));
|
|
28557
28691
|
name = data[check.nameField];
|
|
28558
28692
|
} catch {
|
|
28559
28693
|
}
|
|
@@ -28582,7 +28716,7 @@ function findKeyFiles(repoRoot) {
|
|
|
28582
28716
|
{ pattern: "CLAUDE.md", description: "Claude Code context" }
|
|
28583
28717
|
];
|
|
28584
28718
|
for (const check of checks) {
|
|
28585
|
-
if (
|
|
28719
|
+
if (existsSync29(join39(repoRoot, check.pattern))) {
|
|
28586
28720
|
keyFiles.push({ path: check.pattern, description: check.description });
|
|
28587
28721
|
}
|
|
28588
28722
|
}
|
|
@@ -28608,12 +28742,12 @@ function buildDirTree(root, maxDepth, prefix = "", depth = 0) {
|
|
|
28608
28742
|
if (entry.isDirectory()) {
|
|
28609
28743
|
let fileCount = 0;
|
|
28610
28744
|
try {
|
|
28611
|
-
fileCount = readdirSync7(
|
|
28745
|
+
fileCount = readdirSync7(join39(root, entry.name)).filter((f) => !f.startsWith(".")).length;
|
|
28612
28746
|
} catch {
|
|
28613
28747
|
}
|
|
28614
28748
|
result += `${prefix}${connector}${entry.name}/ (${fileCount})
|
|
28615
28749
|
`;
|
|
28616
|
-
result += buildDirTree(
|
|
28750
|
+
result += buildDirTree(join39(root, entry.name), maxDepth, childPrefix, depth + 1);
|
|
28617
28751
|
} else if (depth < maxDepth) {
|
|
28618
28752
|
result += `${prefix}${connector}${entry.name}
|
|
28619
28753
|
`;
|
|
@@ -28625,17 +28759,17 @@ function buildDirTree(root, maxDepth, prefix = "", depth = 0) {
|
|
|
28625
28759
|
}
|
|
28626
28760
|
function loadUsageFile(filePath) {
|
|
28627
28761
|
try {
|
|
28628
|
-
if (
|
|
28629
|
-
return JSON.parse(
|
|
28762
|
+
if (existsSync29(filePath)) {
|
|
28763
|
+
return JSON.parse(readFileSync21(filePath, "utf-8"));
|
|
28630
28764
|
}
|
|
28631
28765
|
} catch {
|
|
28632
28766
|
}
|
|
28633
28767
|
return { records: [] };
|
|
28634
28768
|
}
|
|
28635
28769
|
function saveUsageFile(filePath, data) {
|
|
28636
|
-
const dir =
|
|
28770
|
+
const dir = join39(filePath, "..");
|
|
28637
28771
|
mkdirSync9(dir, { recursive: true });
|
|
28638
|
-
|
|
28772
|
+
writeFileSync10(filePath, JSON.stringify(data, null, 2) + "\n", { encoding: "utf-8", mode: 384 });
|
|
28639
28773
|
}
|
|
28640
28774
|
function recordUsage(kind, value, opts) {
|
|
28641
28775
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
@@ -28663,15 +28797,15 @@ function recordUsage(kind, value, opts) {
|
|
|
28663
28797
|
}
|
|
28664
28798
|
saveUsageFile(filePath, data);
|
|
28665
28799
|
};
|
|
28666
|
-
update(
|
|
28800
|
+
update(join39(homedir9(), ".open-agents", USAGE_HISTORY_FILE));
|
|
28667
28801
|
if (opts?.repoRoot) {
|
|
28668
|
-
update(
|
|
28802
|
+
update(join39(opts.repoRoot, OA_DIR, USAGE_HISTORY_FILE));
|
|
28669
28803
|
}
|
|
28670
28804
|
}
|
|
28671
28805
|
function loadUsageHistory(kind, repoRoot) {
|
|
28672
|
-
const globalPath =
|
|
28806
|
+
const globalPath = join39(homedir9(), ".open-agents", USAGE_HISTORY_FILE);
|
|
28673
28807
|
const globalData = loadUsageFile(globalPath);
|
|
28674
|
-
const localData = repoRoot ? loadUsageFile(
|
|
28808
|
+
const localData = repoRoot ? loadUsageFile(join39(repoRoot, OA_DIR, USAGE_HISTORY_FILE)) : { records: [] };
|
|
28675
28809
|
const map = /* @__PURE__ */ new Map();
|
|
28676
28810
|
for (const r of globalData.records) {
|
|
28677
28811
|
if (r.kind !== kind)
|
|
@@ -28695,7 +28829,7 @@ function loadUsageHistory(kind, repoRoot) {
|
|
|
28695
28829
|
}
|
|
28696
28830
|
var OA_DIR, SUBDIRS, CONTEXT_FILES, PENDING_TASK_FILE, CONTEXT_SAVE_FILE, MAX_CONTEXT_ENTRIES, SKIP_DIRS, USAGE_HISTORY_FILE, MAX_HISTORY_RECORDS;
|
|
28697
28831
|
var init_oa_directory = __esm({
|
|
28698
|
-
"
|
|
28832
|
+
"packages/cli/dist/tui/oa-directory.js"() {
|
|
28699
28833
|
"use strict";
|
|
28700
28834
|
OA_DIR = ".oa";
|
|
28701
28835
|
SUBDIRS = ["memory", "index", "context", "history", "notes", "embedded", "provenance", "tools", "dreams"];
|
|
@@ -28736,11 +28870,12 @@ var init_oa_directory = __esm({
|
|
|
28736
28870
|
}
|
|
28737
28871
|
});
|
|
28738
28872
|
|
|
28739
|
-
//
|
|
28873
|
+
// packages/cli/dist/tui/setup.js
|
|
28740
28874
|
import * as readline from "node:readline";
|
|
28741
|
-
import { execSync as execSync25, spawn as spawn15 } from "node:child_process";
|
|
28742
|
-
import {
|
|
28743
|
-
import {
|
|
28875
|
+
import { execSync as execSync25, spawn as spawn15, exec as exec2 } from "node:child_process";
|
|
28876
|
+
import { promisify as promisify5 } from "node:util";
|
|
28877
|
+
import { existsSync as existsSync30, writeFileSync as writeFileSync11, mkdirSync as mkdirSync10 } from "node:fs";
|
|
28878
|
+
import { join as join40 } from "node:path";
|
|
28744
28879
|
import { homedir as homedir10, platform } from "node:os";
|
|
28745
28880
|
function detectSystemSpecs() {
|
|
28746
28881
|
let totalRamGB = 0;
|
|
@@ -28789,6 +28924,50 @@ function detectSystemSpecs() {
|
|
|
28789
28924
|
gpuName
|
|
28790
28925
|
};
|
|
28791
28926
|
}
|
|
28927
|
+
async function detectSystemSpecsAsync() {
|
|
28928
|
+
let totalRamGB = 0;
|
|
28929
|
+
let availableRamGB = 0;
|
|
28930
|
+
let gpuVramGB = 0;
|
|
28931
|
+
let gpuName = "";
|
|
28932
|
+
try {
|
|
28933
|
+
const { stdout: memInfo } = await execAsync("free -b 2>/dev/null || sysctl -n hw.memsize 2>/dev/null", { timeout: 5e3 });
|
|
28934
|
+
if (memInfo.includes("Mem:")) {
|
|
28935
|
+
const match = memInfo.match(/^Mem:\s+(\d+)\s+\d+\s+\d+\s+\d+\s+\d+\s+(\d+)/m);
|
|
28936
|
+
if (match) {
|
|
28937
|
+
totalRamGB = parseInt(match[1], 10) / 1024 ** 3;
|
|
28938
|
+
availableRamGB = parseInt(match[2], 10) / 1024 ** 3;
|
|
28939
|
+
}
|
|
28940
|
+
} else {
|
|
28941
|
+
const bytes = parseInt(memInfo.trim(), 10);
|
|
28942
|
+
if (!isNaN(bytes)) {
|
|
28943
|
+
totalRamGB = bytes / 1024 ** 3;
|
|
28944
|
+
availableRamGB = totalRamGB * 0.7;
|
|
28945
|
+
}
|
|
28946
|
+
}
|
|
28947
|
+
} catch {
|
|
28948
|
+
}
|
|
28949
|
+
try {
|
|
28950
|
+
const { stdout: nvidiaSmi } = await execAsync("nvidia-smi --query-gpu=memory.total,name --format=csv,noheader,nounits 2>/dev/null", { timeout: 5e3 });
|
|
28951
|
+
const lines = nvidiaSmi.trim().split("\n");
|
|
28952
|
+
if (lines.length > 0) {
|
|
28953
|
+
for (const line of lines) {
|
|
28954
|
+
const parts = line.split(",").map((s) => s.trim());
|
|
28955
|
+
const vramMB = parseInt(parts[0] ?? "0", 10);
|
|
28956
|
+
if (!isNaN(vramMB))
|
|
28957
|
+
gpuVramGB += vramMB / 1024;
|
|
28958
|
+
if (!gpuName && parts[1])
|
|
28959
|
+
gpuName = parts[1];
|
|
28960
|
+
}
|
|
28961
|
+
}
|
|
28962
|
+
} catch {
|
|
28963
|
+
}
|
|
28964
|
+
return {
|
|
28965
|
+
totalRamGB: Math.round(totalRamGB * 10) / 10,
|
|
28966
|
+
availableRamGB: Math.round(availableRamGB * 10) / 10,
|
|
28967
|
+
gpuVramGB: Math.round(gpuVramGB * 10) / 10,
|
|
28968
|
+
gpuName
|
|
28969
|
+
};
|
|
28970
|
+
}
|
|
28792
28971
|
function recommendModel(specs) {
|
|
28793
28972
|
const effectiveGB = Math.max(specs.gpuVramGB, specs.availableRamGB);
|
|
28794
28973
|
const budget = effectiveGB * 0.8;
|
|
@@ -28973,7 +29152,7 @@ async function installOllamaMac(_rl) {
|
|
|
28973
29152
|
execSync25('/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"', { stdio: "inherit", timeout: 6e5 });
|
|
28974
29153
|
if (!hasCmd("brew")) {
|
|
28975
29154
|
try {
|
|
28976
|
-
const brewPrefix =
|
|
29155
|
+
const brewPrefix = existsSync30("/opt/homebrew/bin/brew") ? "/opt/homebrew" : "/usr/local";
|
|
28977
29156
|
process.env["PATH"] = `${brewPrefix}/bin:${process.env["PATH"]}`;
|
|
28978
29157
|
} catch {
|
|
28979
29158
|
}
|
|
@@ -29727,10 +29906,10 @@ async function doSetup(config, rl) {
|
|
|
29727
29906
|
`PARAMETER num_predict ${numPredict}`,
|
|
29728
29907
|
`PARAMETER stop "<|endoftext|>"`
|
|
29729
29908
|
].join("\n");
|
|
29730
|
-
const modelDir2 =
|
|
29909
|
+
const modelDir2 = join40(homedir10(), ".open-agents", "models");
|
|
29731
29910
|
mkdirSync10(modelDir2, { recursive: true });
|
|
29732
|
-
const modelfilePath =
|
|
29733
|
-
|
|
29911
|
+
const modelfilePath = join40(modelDir2, `Modelfile.${customName}`);
|
|
29912
|
+
writeFileSync11(modelfilePath, modelfileContent + "\n", "utf8");
|
|
29734
29913
|
process.stdout.write(` ${c2.dim("Creating model...")} `);
|
|
29735
29914
|
execSync25(`ollama create ${customName} -f ${modelfilePath}`, {
|
|
29736
29915
|
stdio: "pipe",
|
|
@@ -29775,7 +29954,7 @@ async function isModelAvailable(config) {
|
|
|
29775
29954
|
}
|
|
29776
29955
|
function isFirstRun() {
|
|
29777
29956
|
try {
|
|
29778
|
-
return !
|
|
29957
|
+
return !existsSync30(join40(homedir10(), ".open-agents", "config.json"));
|
|
29779
29958
|
} catch {
|
|
29780
29959
|
return true;
|
|
29781
29960
|
}
|
|
@@ -29812,7 +29991,7 @@ function detectPkgManager() {
|
|
|
29812
29991
|
return null;
|
|
29813
29992
|
}
|
|
29814
29993
|
function getVenvDir() {
|
|
29815
|
-
return
|
|
29994
|
+
return join40(homedir10(), ".open-agents", "venv");
|
|
29816
29995
|
}
|
|
29817
29996
|
function hasVenvModule() {
|
|
29818
29997
|
try {
|
|
@@ -29824,8 +30003,8 @@ function hasVenvModule() {
|
|
|
29824
30003
|
}
|
|
29825
30004
|
function ensureVenv(log) {
|
|
29826
30005
|
const venvDir = getVenvDir();
|
|
29827
|
-
const venvPip =
|
|
29828
|
-
if (
|
|
30006
|
+
const venvPip = join40(venvDir, "bin", "pip");
|
|
30007
|
+
if (existsSync30(venvPip))
|
|
29829
30008
|
return venvDir;
|
|
29830
30009
|
log("Creating Python venv for vision deps...");
|
|
29831
30010
|
if (!hasCmd("python3")) {
|
|
@@ -29837,9 +30016,9 @@ function ensureVenv(log) {
|
|
|
29837
30016
|
return null;
|
|
29838
30017
|
}
|
|
29839
30018
|
try {
|
|
29840
|
-
mkdirSync10(
|
|
30019
|
+
mkdirSync10(join40(homedir10(), ".open-agents"), { recursive: true });
|
|
29841
30020
|
execSync25(`python3 -m venv "${venvDir}"`, { stdio: "pipe", timeout: 3e4 });
|
|
29842
|
-
execSync25(`"${
|
|
30021
|
+
execSync25(`"${join40(venvDir, "bin", "pip")}" install --upgrade pip`, {
|
|
29843
30022
|
stdio: "pipe",
|
|
29844
30023
|
timeout: 6e4
|
|
29845
30024
|
});
|
|
@@ -30030,15 +30209,15 @@ async function ensureVisionDeps(onInfo, getSudoPassword) {
|
|
|
30030
30209
|
}
|
|
30031
30210
|
}
|
|
30032
30211
|
const venvDir = getVenvDir();
|
|
30033
|
-
const venvBin =
|
|
30034
|
-
const venvMoondream =
|
|
30212
|
+
const venvBin = join40(venvDir, "bin");
|
|
30213
|
+
const venvMoondream = join40(venvBin, "moondream-station");
|
|
30035
30214
|
const venv = ensureVenv(log);
|
|
30036
|
-
if (venv && !hasCmd("moondream-station") && !
|
|
30037
|
-
const venvPip =
|
|
30215
|
+
if (venv && !hasCmd("moondream-station") && !existsSync30(venvMoondream)) {
|
|
30216
|
+
const venvPip = join40(venvBin, "pip");
|
|
30038
30217
|
log("Installing moondream-station in ~/.open-agents/venv...");
|
|
30039
30218
|
try {
|
|
30040
30219
|
execSync25(`"${venvPip}" install moondream-station`, { stdio: "pipe", timeout: 3e5 });
|
|
30041
|
-
if (
|
|
30220
|
+
if (existsSync30(venvMoondream)) {
|
|
30042
30221
|
log("moondream-station installed successfully.");
|
|
30043
30222
|
} else {
|
|
30044
30223
|
try {
|
|
@@ -30055,8 +30234,8 @@ async function ensureVisionDeps(onInfo, getSudoPassword) {
|
|
|
30055
30234
|
}
|
|
30056
30235
|
}
|
|
30057
30236
|
if (venv) {
|
|
30058
|
-
const venvPython =
|
|
30059
|
-
const venvPip2 =
|
|
30237
|
+
const venvPython = join40(venvBin, "python");
|
|
30238
|
+
const venvPip2 = join40(venvBin, "pip");
|
|
30060
30239
|
let ocrStackInstalled = false;
|
|
30061
30240
|
try {
|
|
30062
30241
|
execSync25(`"${venvPython}" -c "import cv2, pytesseract, numpy, PIL"`, { stdio: "pipe", timeout: 1e4 });
|
|
@@ -30157,7 +30336,7 @@ function modelSizeGB(models, modelName) {
|
|
|
30157
30336
|
const known = QWEN_VARIANTS.find((v) => modelName.includes(v.tag.split(":")[1] ?? ""));
|
|
30158
30337
|
return known?.sizeGB ?? 4;
|
|
30159
30338
|
}
|
|
30160
|
-
function
|
|
30339
|
+
async function createExpandedVariantAsync(baseModel, specs, sizeGB) {
|
|
30161
30340
|
const customName = expandedModelName(baseModel);
|
|
30162
30341
|
const ctx = calculateContextWindow(specs, sizeGB);
|
|
30163
30342
|
try {
|
|
@@ -30169,12 +30348,11 @@ function createExpandedVariant(baseModel, specs, sizeGB) {
|
|
|
30169
30348
|
`PARAMETER num_predict ${numPredict}`,
|
|
30170
30349
|
`PARAMETER stop "<|endoftext|>"`
|
|
30171
30350
|
].join("\n");
|
|
30172
|
-
const modelDir2 =
|
|
30351
|
+
const modelDir2 = join40(homedir10(), ".open-agents", "models");
|
|
30173
30352
|
mkdirSync10(modelDir2, { recursive: true });
|
|
30174
|
-
const modelfilePath =
|
|
30175
|
-
|
|
30176
|
-
|
|
30177
|
-
stdio: "pipe",
|
|
30353
|
+
const modelfilePath = join40(modelDir2, `Modelfile.${customName}`);
|
|
30354
|
+
writeFileSync11(modelfilePath, modelfileContent + "\n", "utf8");
|
|
30355
|
+
await execAsync(`ollama create ${customName} -f ${modelfilePath}`, {
|
|
30178
30356
|
timeout: 12e4
|
|
30179
30357
|
});
|
|
30180
30358
|
return customName;
|
|
@@ -30184,7 +30362,7 @@ function createExpandedVariant(baseModel, specs, sizeGB) {
|
|
|
30184
30362
|
}
|
|
30185
30363
|
async function ensureExpandedContext(modelName, backendUrl) {
|
|
30186
30364
|
if (modelName.startsWith("open-agents-")) {
|
|
30187
|
-
const specs2 =
|
|
30365
|
+
const specs2 = await detectSystemSpecsAsync();
|
|
30188
30366
|
const ctx2 = calculateContextWindow(specs2, 4);
|
|
30189
30367
|
return { model: modelName, created: false, contextLabel: ctx2.label, numCtx: ctx2.numCtx };
|
|
30190
30368
|
}
|
|
@@ -30195,7 +30373,7 @@ async function ensureExpandedContext(modelName, backendUrl) {
|
|
|
30195
30373
|
if (existing === null) {
|
|
30196
30374
|
return { model: modelName, created: false, contextLabel: "", numCtx: 0 };
|
|
30197
30375
|
}
|
|
30198
|
-
const specs =
|
|
30376
|
+
const specs = await detectSystemSpecsAsync();
|
|
30199
30377
|
if (typeof existing === "string") {
|
|
30200
30378
|
let sizeGB2 = 4;
|
|
30201
30379
|
try {
|
|
@@ -30213,20 +30391,21 @@ async function ensureExpandedContext(modelName, backendUrl) {
|
|
|
30213
30391
|
} catch {
|
|
30214
30392
|
}
|
|
30215
30393
|
const ctx = calculateContextWindow(specs, sizeGB);
|
|
30216
|
-
const created =
|
|
30394
|
+
const created = await createExpandedVariantAsync(modelName, specs, sizeGB);
|
|
30217
30395
|
if (created) {
|
|
30218
30396
|
return { model: created, created: true, contextLabel: ctx.label, numCtx: ctx.numCtx };
|
|
30219
30397
|
}
|
|
30220
30398
|
return { model: modelName, created: false, contextLabel: ctx.label, numCtx: ctx.numCtx };
|
|
30221
30399
|
}
|
|
30222
|
-
var QWEN_VARIANTS, TOOL_CALLING_MODELS, _cloudflaredInstallPromise;
|
|
30400
|
+
var execAsync, QWEN_VARIANTS, TOOL_CALLING_MODELS, _cloudflaredInstallPromise;
|
|
30223
30401
|
var init_setup = __esm({
|
|
30224
|
-
"
|
|
30402
|
+
"packages/cli/dist/tui/setup.js"() {
|
|
30225
30403
|
"use strict";
|
|
30226
30404
|
init_model_picker();
|
|
30227
30405
|
init_render();
|
|
30228
30406
|
init_config();
|
|
30229
30407
|
init_dist();
|
|
30408
|
+
execAsync = promisify5(exec2);
|
|
30230
30409
|
QWEN_VARIANTS = [
|
|
30231
30410
|
{ tag: "qwen3.5:0.8b", sizeGB: 1, label: "0.8B params (1.0 GB)", cloud: false },
|
|
30232
30411
|
{ tag: "qwen3.5:2b", sizeGB: 2.7, label: "2B params (2.7 GB)", cloud: false },
|
|
@@ -30255,7 +30434,7 @@ var init_setup = __esm({
|
|
|
30255
30434
|
}
|
|
30256
30435
|
});
|
|
30257
30436
|
|
|
30258
|
-
//
|
|
30437
|
+
// packages/cli/dist/tui/tui-select.js
|
|
30259
30438
|
function ansi3(code, text) {
|
|
30260
30439
|
return isTTY3 ? `\x1B[${code}m${text}\x1B[0m` : text;
|
|
30261
30440
|
}
|
|
@@ -30565,7 +30744,7 @@ function tuiSelect(opts) {
|
|
|
30565
30744
|
}
|
|
30566
30745
|
var isTTY3, selectColors;
|
|
30567
30746
|
var init_tui_select = __esm({
|
|
30568
|
-
"
|
|
30747
|
+
"packages/cli/dist/tui/tui-select.js"() {
|
|
30569
30748
|
"use strict";
|
|
30570
30749
|
isTTY3 = process.stdout.isTTY ?? false;
|
|
30571
30750
|
selectColors = {
|
|
@@ -30582,7 +30761,7 @@ var init_tui_select = __esm({
|
|
|
30582
30761
|
}
|
|
30583
30762
|
});
|
|
30584
30763
|
|
|
30585
|
-
//
|
|
30764
|
+
// packages/cli/dist/tui/commands.js
|
|
30586
30765
|
async function handleSlashCommand(input, ctx) {
|
|
30587
30766
|
const trimmed = input.trim();
|
|
30588
30767
|
if (!trimmed.startsWith("/"))
|
|
@@ -32105,17 +32284,17 @@ async function handleUpdate(subcommand, ctx) {
|
|
|
32105
32284
|
try {
|
|
32106
32285
|
const { createRequire: createRequire4 } = await import("node:module");
|
|
32107
32286
|
const { fileURLToPath: fileURLToPath14 } = await import("node:url");
|
|
32108
|
-
const { dirname: dirname19, join:
|
|
32109
|
-
const { existsSync:
|
|
32287
|
+
const { dirname: dirname19, join: join55 } = await import("node:path");
|
|
32288
|
+
const { existsSync: existsSync41 } = await import("node:fs");
|
|
32110
32289
|
const req = createRequire4(import.meta.url);
|
|
32111
32290
|
const thisDir = dirname19(fileURLToPath14(import.meta.url));
|
|
32112
32291
|
const candidates = [
|
|
32113
|
-
|
|
32114
|
-
|
|
32115
|
-
|
|
32292
|
+
join55(thisDir, "..", "package.json"),
|
|
32293
|
+
join55(thisDir, "..", "..", "package.json"),
|
|
32294
|
+
join55(thisDir, "..", "..", "..", "package.json")
|
|
32116
32295
|
];
|
|
32117
32296
|
for (const pkgPath of candidates) {
|
|
32118
|
-
if (
|
|
32297
|
+
if (existsSync41(pkgPath)) {
|
|
32119
32298
|
const pkg = req(pkgPath);
|
|
32120
32299
|
if (pkg.name === "open-agents-ai" || pkg.name === "@open-agents/cli") {
|
|
32121
32300
|
currentVersion = pkg.version ?? "0.0.0";
|
|
@@ -32151,7 +32330,7 @@ async function handleUpdate(subcommand, ctx) {
|
|
|
32151
32330
|
return;
|
|
32152
32331
|
}
|
|
32153
32332
|
checkSpinner.stop(`Update available: v${info.currentVersion} \u2192 v${c2.bold(c2.green(info.latestVersion))}`);
|
|
32154
|
-
const { exec:
|
|
32333
|
+
const { exec: exec3, execSync: es2 } = await import("node:child_process");
|
|
32155
32334
|
let needsSudo = false;
|
|
32156
32335
|
try {
|
|
32157
32336
|
const prefix = es2("npm prefix -g", { encoding: "utf8", timeout: 5e3 }).trim();
|
|
@@ -32180,7 +32359,7 @@ async function handleUpdate(subcommand, ctx) {
|
|
|
32180
32359
|
let installOk = false;
|
|
32181
32360
|
let installError = "";
|
|
32182
32361
|
const runInstall2 = (cmd) => new Promise((resolve31) => {
|
|
32183
|
-
const child =
|
|
32362
|
+
const child = exec3(cmd, { timeout: 18e4 }, (err, _stdout, stderr) => {
|
|
32184
32363
|
if (err)
|
|
32185
32364
|
installError = (stderr || err.message || "").trim();
|
|
32186
32365
|
resolve31(!err);
|
|
@@ -32218,7 +32397,7 @@ async function handleUpdate(subcommand, ctx) {
|
|
|
32218
32397
|
installSpinner.stop(`Update installed (v${info.latestVersion}).`);
|
|
32219
32398
|
const rebuildSpinner = startInlineSpinner("Rebuilding native modules");
|
|
32220
32399
|
const rebuildOk = await new Promise((resolve31) => {
|
|
32221
|
-
const child =
|
|
32400
|
+
const child = exec3(`${sudoPrefix}npm rebuild -g open-agents-ai 2>/dev/null || true`, { timeout: 12e4 }, () => resolve31(true));
|
|
32222
32401
|
child.stdout?.resume();
|
|
32223
32402
|
child.stderr?.resume();
|
|
32224
32403
|
});
|
|
@@ -32251,7 +32430,7 @@ async function handleUpdate(subcommand, ctx) {
|
|
|
32251
32430
|
if (fsExists(venvPip)) {
|
|
32252
32431
|
const pySpinner = startInlineSpinner("Upgrading Python venv packages");
|
|
32253
32432
|
const pyOk = await new Promise((resolve31) => {
|
|
32254
|
-
const child =
|
|
32433
|
+
const child = exec3(`"${venvPip}" install --upgrade moondream-station pytesseract Pillow opencv-python-headless numpy 2>/dev/null || true`, { timeout: 3e5 }, (err) => resolve31(!err));
|
|
32255
32434
|
child.stdout?.resume();
|
|
32256
32435
|
child.stderr?.resume();
|
|
32257
32436
|
});
|
|
@@ -32382,7 +32561,7 @@ async function switchModel(query, ctx, local = false) {
|
|
|
32382
32561
|
}
|
|
32383
32562
|
}
|
|
32384
32563
|
var init_commands = __esm({
|
|
32385
|
-
"
|
|
32564
|
+
"packages/cli/dist/tui/commands.js"() {
|
|
32386
32565
|
"use strict";
|
|
32387
32566
|
init_model_picker();
|
|
32388
32567
|
init_render();
|
|
@@ -32399,9 +32578,9 @@ var init_commands = __esm({
|
|
|
32399
32578
|
}
|
|
32400
32579
|
});
|
|
32401
32580
|
|
|
32402
|
-
//
|
|
32403
|
-
import { existsSync as
|
|
32404
|
-
import { join as
|
|
32581
|
+
// packages/cli/dist/tui/project-context.js
|
|
32582
|
+
import { existsSync as existsSync31, readFileSync as readFileSync22, readdirSync as readdirSync8 } from "node:fs";
|
|
32583
|
+
import { join as join41, basename as basename10 } from "node:path";
|
|
32405
32584
|
import { execSync as execSync26 } from "node:child_process";
|
|
32406
32585
|
import { homedir as homedir11, platform as platform2, release } from "node:os";
|
|
32407
32586
|
function getModelTier(modelName) {
|
|
@@ -32436,10 +32615,10 @@ function loadProjectMap(repoRoot) {
|
|
|
32436
32615
|
if (!hasOaDirectory(repoRoot)) {
|
|
32437
32616
|
initOaDirectory(repoRoot);
|
|
32438
32617
|
}
|
|
32439
|
-
const mapPath =
|
|
32440
|
-
if (
|
|
32618
|
+
const mapPath = join41(repoRoot, OA_DIR, "context", "project-map.md");
|
|
32619
|
+
if (existsSync31(mapPath)) {
|
|
32441
32620
|
try {
|
|
32442
|
-
const content =
|
|
32621
|
+
const content = readFileSync22(mapPath, "utf-8");
|
|
32443
32622
|
return content;
|
|
32444
32623
|
} catch {
|
|
32445
32624
|
}
|
|
@@ -32480,31 +32659,31 @@ ${log}`);
|
|
|
32480
32659
|
}
|
|
32481
32660
|
function loadMemoryContext(repoRoot) {
|
|
32482
32661
|
const sections = [];
|
|
32483
|
-
const oaMemDir =
|
|
32662
|
+
const oaMemDir = join41(repoRoot, OA_DIR, "memory");
|
|
32484
32663
|
const oaEntries = loadMemoryDir(oaMemDir, "project");
|
|
32485
32664
|
if (oaEntries)
|
|
32486
32665
|
sections.push(oaEntries);
|
|
32487
|
-
const legacyMemDir =
|
|
32488
|
-
if (legacyMemDir !== oaMemDir &&
|
|
32666
|
+
const legacyMemDir = join41(repoRoot, ".open-agents", "memory");
|
|
32667
|
+
if (legacyMemDir !== oaMemDir && existsSync31(legacyMemDir)) {
|
|
32489
32668
|
const legacyEntries = loadMemoryDir(legacyMemDir, "project/legacy");
|
|
32490
32669
|
if (legacyEntries)
|
|
32491
32670
|
sections.push(legacyEntries);
|
|
32492
32671
|
}
|
|
32493
|
-
const globalMemDir =
|
|
32672
|
+
const globalMemDir = join41(homedir11(), ".open-agents", "memory");
|
|
32494
32673
|
const globalEntries = loadMemoryDir(globalMemDir, "global");
|
|
32495
32674
|
if (globalEntries)
|
|
32496
32675
|
sections.push(globalEntries);
|
|
32497
32676
|
return sections.join("\n\n");
|
|
32498
32677
|
}
|
|
32499
32678
|
function loadMemoryDir(memDir, scope) {
|
|
32500
|
-
if (!
|
|
32679
|
+
if (!existsSync31(memDir))
|
|
32501
32680
|
return "";
|
|
32502
32681
|
const lines = [];
|
|
32503
32682
|
try {
|
|
32504
32683
|
const files = readdirSync8(memDir).filter((f) => f.endsWith(".json"));
|
|
32505
32684
|
for (const file of files.slice(0, 10)) {
|
|
32506
32685
|
try {
|
|
32507
|
-
const raw =
|
|
32686
|
+
const raw = readFileSync22(join41(memDir, file), "utf-8");
|
|
32508
32687
|
const entries = JSON.parse(raw);
|
|
32509
32688
|
const topic = basename10(file, ".json");
|
|
32510
32689
|
const keys = Object.keys(entries);
|
|
@@ -32704,14 +32883,14 @@ These patterns have been repeated 3+ times. Consider using create_tool to automa
|
|
|
32704
32883
|
return sections.join("\n\n");
|
|
32705
32884
|
}
|
|
32706
32885
|
var init_project_context = __esm({
|
|
32707
|
-
"
|
|
32886
|
+
"packages/cli/dist/tui/project-context.js"() {
|
|
32708
32887
|
"use strict";
|
|
32709
32888
|
init_oa_directory();
|
|
32710
32889
|
init_dist2();
|
|
32711
32890
|
}
|
|
32712
32891
|
});
|
|
32713
32892
|
|
|
32714
|
-
//
|
|
32893
|
+
// packages/memory/dist/db.js
|
|
32715
32894
|
import Database from "better-sqlite3";
|
|
32716
32895
|
function initDb(dbPath) {
|
|
32717
32896
|
const db = new Database(dbPath);
|
|
@@ -32866,26 +33045,26 @@ function runMigrations(db) {
|
|
|
32866
33045
|
`);
|
|
32867
33046
|
}
|
|
32868
33047
|
var init_db = __esm({
|
|
32869
|
-
"
|
|
33048
|
+
"packages/memory/dist/db.js"() {
|
|
32870
33049
|
"use strict";
|
|
32871
33050
|
}
|
|
32872
33051
|
});
|
|
32873
33052
|
|
|
32874
|
-
//
|
|
33053
|
+
// packages/memory/dist/repoProfileStore.js
|
|
32875
33054
|
var init_repoProfileStore = __esm({
|
|
32876
|
-
"
|
|
33055
|
+
"packages/memory/dist/repoProfileStore.js"() {
|
|
32877
33056
|
"use strict";
|
|
32878
33057
|
}
|
|
32879
33058
|
});
|
|
32880
33059
|
|
|
32881
|
-
//
|
|
33060
|
+
// packages/memory/dist/fileSummaryStore.js
|
|
32882
33061
|
var init_fileSummaryStore = __esm({
|
|
32883
|
-
"
|
|
33062
|
+
"packages/memory/dist/fileSummaryStore.js"() {
|
|
32884
33063
|
"use strict";
|
|
32885
33064
|
}
|
|
32886
33065
|
});
|
|
32887
33066
|
|
|
32888
|
-
//
|
|
33067
|
+
// packages/memory/dist/taskMemoryStore.js
|
|
32889
33068
|
import { randomUUID } from "node:crypto";
|
|
32890
33069
|
function rowToTask(row) {
|
|
32891
33070
|
return {
|
|
@@ -32904,7 +33083,7 @@ function rowToTask(row) {
|
|
|
32904
33083
|
}
|
|
32905
33084
|
var TaskMemoryStore;
|
|
32906
33085
|
var init_taskMemoryStore = __esm({
|
|
32907
|
-
"
|
|
33086
|
+
"packages/memory/dist/taskMemoryStore.js"() {
|
|
32908
33087
|
"use strict";
|
|
32909
33088
|
TaskMemoryStore = class {
|
|
32910
33089
|
db;
|
|
@@ -32955,14 +33134,14 @@ var init_taskMemoryStore = __esm({
|
|
|
32955
33134
|
}
|
|
32956
33135
|
});
|
|
32957
33136
|
|
|
32958
|
-
//
|
|
33137
|
+
// packages/memory/dist/patchHistoryStore.js
|
|
32959
33138
|
var init_patchHistoryStore = __esm({
|
|
32960
|
-
"
|
|
33139
|
+
"packages/memory/dist/patchHistoryStore.js"() {
|
|
32961
33140
|
"use strict";
|
|
32962
33141
|
}
|
|
32963
33142
|
});
|
|
32964
33143
|
|
|
32965
|
-
//
|
|
33144
|
+
// packages/memory/dist/failureStore.js
|
|
32966
33145
|
import { randomUUID as randomUUID2 } from "node:crypto";
|
|
32967
33146
|
function rowToFailure(row) {
|
|
32968
33147
|
return {
|
|
@@ -32983,7 +33162,7 @@ function rowToFailure(row) {
|
|
|
32983
33162
|
}
|
|
32984
33163
|
var FailureStore;
|
|
32985
33164
|
var init_failureStore = __esm({
|
|
32986
|
-
"
|
|
33165
|
+
"packages/memory/dist/failureStore.js"() {
|
|
32987
33166
|
"use strict";
|
|
32988
33167
|
FailureStore = class {
|
|
32989
33168
|
db;
|
|
@@ -33038,18 +33217,18 @@ var init_failureStore = __esm({
|
|
|
33038
33217
|
}
|
|
33039
33218
|
});
|
|
33040
33219
|
|
|
33041
|
-
//
|
|
33220
|
+
// packages/memory/dist/validationStore.js
|
|
33042
33221
|
var init_validationStore = __esm({
|
|
33043
|
-
"
|
|
33222
|
+
"packages/memory/dist/validationStore.js"() {
|
|
33044
33223
|
"use strict";
|
|
33045
33224
|
}
|
|
33046
33225
|
});
|
|
33047
33226
|
|
|
33048
|
-
//
|
|
33227
|
+
// packages/memory/dist/toolPatternStore.js
|
|
33049
33228
|
import { randomUUID as randomUUID3 } from "node:crypto";
|
|
33050
33229
|
var ToolPatternStore;
|
|
33051
33230
|
var init_toolPatternStore = __esm({
|
|
33052
|
-
"
|
|
33231
|
+
"packages/memory/dist/toolPatternStore.js"() {
|
|
33053
33232
|
"use strict";
|
|
33054
33233
|
ToolPatternStore = class {
|
|
33055
33234
|
db;
|
|
@@ -33228,9 +33407,9 @@ var init_toolPatternStore = __esm({
|
|
|
33228
33407
|
}
|
|
33229
33408
|
});
|
|
33230
33409
|
|
|
33231
|
-
//
|
|
33410
|
+
// packages/memory/dist/index.js
|
|
33232
33411
|
var init_dist7 = __esm({
|
|
33233
|
-
"
|
|
33412
|
+
"packages/memory/dist/index.js"() {
|
|
33234
33413
|
"use strict";
|
|
33235
33414
|
init_db();
|
|
33236
33415
|
init_repoProfileStore();
|
|
@@ -33243,7 +33422,7 @@ var init_dist7 = __esm({
|
|
|
33243
33422
|
}
|
|
33244
33423
|
});
|
|
33245
33424
|
|
|
33246
|
-
//
|
|
33425
|
+
// packages/cli/dist/tui/carousel.js
|
|
33247
33426
|
function fg(code, text) {
|
|
33248
33427
|
return isTTY4 ? `\x1B[38;5;${code}m${text}\x1B[0m` : text;
|
|
33249
33428
|
}
|
|
@@ -33285,7 +33464,7 @@ function createRow(phraseIndices, speed, direction, bank) {
|
|
|
33285
33464
|
}
|
|
33286
33465
|
var isTTY4, PHRASES, Carousel;
|
|
33287
33466
|
var init_carousel = __esm({
|
|
33288
|
-
"
|
|
33467
|
+
"packages/cli/dist/tui/carousel.js"() {
|
|
33289
33468
|
"use strict";
|
|
33290
33469
|
isTTY4 = process.stdout.isTTY ?? false;
|
|
33291
33470
|
PHRASES = [
|
|
@@ -33408,11 +33587,7 @@ var init_carousel = __esm({
|
|
|
33408
33587
|
process.stdout.write(`\x1B[${this.reservedRows + 1};1H`);
|
|
33409
33588
|
this.resizeHandler = () => {
|
|
33410
33589
|
this.width = process.stdout.columns ?? 80;
|
|
33411
|
-
const newRows = process.stdout.rows ?? 24;
|
|
33412
33590
|
this.rebuildRibbons();
|
|
33413
|
-
if (this.started) {
|
|
33414
|
-
process.stdout.write(`\x1B[${this.reservedRows + 1};${newRows}r`);
|
|
33415
|
-
}
|
|
33416
33591
|
};
|
|
33417
33592
|
process.stdout.on("resize", this.resizeHandler);
|
|
33418
33593
|
this.renderFrame();
|
|
@@ -33530,23 +33705,23 @@ var init_carousel = __esm({
|
|
|
33530
33705
|
}
|
|
33531
33706
|
});
|
|
33532
33707
|
|
|
33533
|
-
//
|
|
33534
|
-
import { existsSync as
|
|
33535
|
-
import { join as
|
|
33708
|
+
// packages/cli/dist/tui/carousel-descriptors.js
|
|
33709
|
+
import { existsSync as existsSync32, readFileSync as readFileSync23, writeFileSync as writeFileSync12, mkdirSync as mkdirSync11, readdirSync as readdirSync9 } from "node:fs";
|
|
33710
|
+
import { join as join42, basename as basename11 } from "node:path";
|
|
33536
33711
|
function loadToolProfile(repoRoot) {
|
|
33537
|
-
const filePath =
|
|
33712
|
+
const filePath = join42(repoRoot, OA_DIR, "context", TOOL_PROFILE_FILE);
|
|
33538
33713
|
try {
|
|
33539
|
-
if (!
|
|
33714
|
+
if (!existsSync32(filePath))
|
|
33540
33715
|
return null;
|
|
33541
|
-
return JSON.parse(
|
|
33716
|
+
return JSON.parse(readFileSync23(filePath, "utf-8"));
|
|
33542
33717
|
} catch {
|
|
33543
33718
|
return null;
|
|
33544
33719
|
}
|
|
33545
33720
|
}
|
|
33546
33721
|
function saveToolProfile(repoRoot, profile) {
|
|
33547
|
-
const contextDir =
|
|
33722
|
+
const contextDir = join42(repoRoot, OA_DIR, "context");
|
|
33548
33723
|
mkdirSync11(contextDir, { recursive: true });
|
|
33549
|
-
|
|
33724
|
+
writeFileSync12(join42(contextDir, TOOL_PROFILE_FILE), JSON.stringify(profile, null, 2), "utf-8");
|
|
33550
33725
|
}
|
|
33551
33726
|
function categorizeToolCall(toolName) {
|
|
33552
33727
|
for (const cat of TOOL_CATEGORIES) {
|
|
@@ -33604,25 +33779,25 @@ function weightedColor(profile) {
|
|
|
33604
33779
|
return selectedCat.colors[Math.floor(Math.random() * selectedCat.colors.length)];
|
|
33605
33780
|
}
|
|
33606
33781
|
function loadCachedDescriptors(repoRoot) {
|
|
33607
|
-
const filePath =
|
|
33782
|
+
const filePath = join42(repoRoot, OA_DIR, "context", DESCRIPTOR_FILE);
|
|
33608
33783
|
try {
|
|
33609
|
-
if (!
|
|
33784
|
+
if (!existsSync32(filePath))
|
|
33610
33785
|
return null;
|
|
33611
|
-
const cached = JSON.parse(
|
|
33786
|
+
const cached = JSON.parse(readFileSync23(filePath, "utf-8"));
|
|
33612
33787
|
return cached.phrases.length > 0 ? cached.phrases : null;
|
|
33613
33788
|
} catch {
|
|
33614
33789
|
return null;
|
|
33615
33790
|
}
|
|
33616
33791
|
}
|
|
33617
33792
|
function saveCachedDescriptors(repoRoot, phrases, sourceHash) {
|
|
33618
|
-
const contextDir =
|
|
33793
|
+
const contextDir = join42(repoRoot, OA_DIR, "context");
|
|
33619
33794
|
mkdirSync11(contextDir, { recursive: true });
|
|
33620
33795
|
const cached = {
|
|
33621
33796
|
phrases,
|
|
33622
33797
|
generatedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
33623
33798
|
sourceHash
|
|
33624
33799
|
};
|
|
33625
|
-
|
|
33800
|
+
writeFileSync12(join42(contextDir, DESCRIPTOR_FILE), JSON.stringify(cached, null, 2), "utf-8");
|
|
33626
33801
|
}
|
|
33627
33802
|
function generateDescriptors(repoRoot) {
|
|
33628
33803
|
const profile = loadToolProfile(repoRoot);
|
|
@@ -33670,11 +33845,11 @@ function generateDescriptors(repoRoot) {
|
|
|
33670
33845
|
return phrases;
|
|
33671
33846
|
}
|
|
33672
33847
|
function extractFromPackageJson(repoRoot, tags) {
|
|
33673
|
-
const pkgPath =
|
|
33848
|
+
const pkgPath = join42(repoRoot, "package.json");
|
|
33674
33849
|
try {
|
|
33675
|
-
if (!
|
|
33850
|
+
if (!existsSync32(pkgPath))
|
|
33676
33851
|
return;
|
|
33677
|
-
const pkg = JSON.parse(
|
|
33852
|
+
const pkg = JSON.parse(readFileSync23(pkgPath, "utf-8"));
|
|
33678
33853
|
if (pkg.name && typeof pkg.name === "string") {
|
|
33679
33854
|
const parts = pkg.name.replace(/^@/, "").split("/");
|
|
33680
33855
|
for (const p of parts)
|
|
@@ -33718,7 +33893,7 @@ function extractFromManifests(repoRoot, tags) {
|
|
|
33718
33893
|
{ file: ".github/workflows", tag: "ci/cd" }
|
|
33719
33894
|
];
|
|
33720
33895
|
for (const check of manifestChecks) {
|
|
33721
|
-
if (
|
|
33896
|
+
if (existsSync32(join42(repoRoot, check.file))) {
|
|
33722
33897
|
tags.push(check.tag);
|
|
33723
33898
|
}
|
|
33724
33899
|
}
|
|
@@ -33740,16 +33915,16 @@ function extractFromSessions(repoRoot, tags) {
|
|
|
33740
33915
|
}
|
|
33741
33916
|
}
|
|
33742
33917
|
function extractFromMemory(repoRoot, tags) {
|
|
33743
|
-
const memoryDir =
|
|
33918
|
+
const memoryDir = join42(repoRoot, OA_DIR, "memory");
|
|
33744
33919
|
try {
|
|
33745
|
-
if (!
|
|
33920
|
+
if (!existsSync32(memoryDir))
|
|
33746
33921
|
return;
|
|
33747
33922
|
const files = readdirSync9(memoryDir).filter((f) => f.endsWith(".json"));
|
|
33748
33923
|
for (const file of files) {
|
|
33749
33924
|
const topic = file.replace(/\.json$/, "").replace(/[-_]/g, " ");
|
|
33750
33925
|
tags.push(topic);
|
|
33751
33926
|
try {
|
|
33752
|
-
const data = JSON.parse(
|
|
33927
|
+
const data = JSON.parse(readFileSync23(join42(memoryDir, file), "utf-8"));
|
|
33753
33928
|
if (data && typeof data === "object") {
|
|
33754
33929
|
const keys = Object.keys(data).slice(0, 3);
|
|
33755
33930
|
for (const key of keys) {
|
|
@@ -33777,7 +33952,7 @@ function extractFromToolProfile(profile, tags) {
|
|
|
33777
33952
|
}
|
|
33778
33953
|
var TOOL_CATEGORIES, TOOL_PROFILE_FILE, DESCRIPTOR_FILE, CATEGORY_LABELS, STOP_WORDS;
|
|
33779
33954
|
var init_carousel_descriptors = __esm({
|
|
33780
|
-
"
|
|
33955
|
+
"packages/cli/dist/tui/carousel-descriptors.js"() {
|
|
33781
33956
|
"use strict";
|
|
33782
33957
|
init_oa_directory();
|
|
33783
33958
|
TOOL_CATEGORIES = [
|
|
@@ -33883,26 +34058,26 @@ var init_carousel_descriptors = __esm({
|
|
|
33883
34058
|
}
|
|
33884
34059
|
});
|
|
33885
34060
|
|
|
33886
|
-
//
|
|
33887
|
-
import { existsSync as
|
|
33888
|
-
import { join as
|
|
34061
|
+
// packages/cli/dist/tui/voice.js
|
|
34062
|
+
import { existsSync as existsSync33, mkdirSync as mkdirSync12, writeFileSync as writeFileSync13, readFileSync as readFileSync24, unlinkSync as unlinkSync5 } from "node:fs";
|
|
34063
|
+
import { join as join43 } from "node:path";
|
|
33889
34064
|
import { homedir as homedir12, tmpdir as tmpdir6, platform as platform3 } from "node:os";
|
|
33890
34065
|
import { execSync as execSync27, spawn as nodeSpawn } from "node:child_process";
|
|
33891
34066
|
import { createRequire } from "node:module";
|
|
33892
34067
|
function voiceDir() {
|
|
33893
|
-
return
|
|
34068
|
+
return join43(homedir12(), ".open-agents", "voice");
|
|
33894
34069
|
}
|
|
33895
34070
|
function modelsDir() {
|
|
33896
|
-
return
|
|
34071
|
+
return join43(voiceDir(), "models");
|
|
33897
34072
|
}
|
|
33898
34073
|
function modelDir(id) {
|
|
33899
|
-
return
|
|
34074
|
+
return join43(modelsDir(), id);
|
|
33900
34075
|
}
|
|
33901
34076
|
function modelOnnxPath(id) {
|
|
33902
|
-
return
|
|
34077
|
+
return join43(modelDir(id), "model.onnx");
|
|
33903
34078
|
}
|
|
33904
34079
|
function modelConfigPath(id) {
|
|
33905
|
-
return
|
|
34080
|
+
return join43(modelDir(id), "config.json");
|
|
33906
34081
|
}
|
|
33907
34082
|
function emotionToPitchBias(emotion, stark = false, autist = false) {
|
|
33908
34083
|
if (autist)
|
|
@@ -34354,7 +34529,7 @@ function formatBytes2(bytes) {
|
|
|
34354
34529
|
}
|
|
34355
34530
|
var VOICE_MODELS, VoiceEngine, narration, FILE_READ_VARIANTS, FILE_WRITE_VARIANTS, FILE_EDIT_VARIANTS, GREP_VARIANTS, WEB_SEARCH_VARIANTS, WEB_FETCH_VARIANTS, MEMORY_READ_VARIANTS, MEMORY_WRITE_VARIANTS, SUB_AGENT_VARIANTS, SHELL_VARIANTS, RESULT_SUCCESS_VARIANTS, RESULT_FAIL_VARIANTS, RESULT_MULTI_FAIL_VARIANTS, TASK_COMPLETE_VARIANTS, TASK_INCOMPLETE_VARIANTS;
|
|
34356
34531
|
var init_voice = __esm({
|
|
34357
|
-
"
|
|
34532
|
+
"packages/cli/dist/tui/voice.js"() {
|
|
34358
34533
|
"use strict";
|
|
34359
34534
|
init_render();
|
|
34360
34535
|
VOICE_MODELS = {
|
|
@@ -34762,11 +34937,11 @@ var init_voice = __esm({
|
|
|
34762
34937
|
}
|
|
34763
34938
|
this.onPCMOutput(Buffer.from(int16.buffer), sampleRate);
|
|
34764
34939
|
}
|
|
34765
|
-
const wavPath =
|
|
34940
|
+
const wavPath = join43(tmpdir6(), `oa-voice-${Date.now()}.wav`);
|
|
34766
34941
|
this.writeWav(audioData, sampleRate, wavPath);
|
|
34767
34942
|
await this.playWav(wavPath);
|
|
34768
34943
|
try {
|
|
34769
|
-
|
|
34944
|
+
unlinkSync5(wavPath);
|
|
34770
34945
|
} catch {
|
|
34771
34946
|
}
|
|
34772
34947
|
}
|
|
@@ -34894,7 +35069,7 @@ var init_voice = __esm({
|
|
|
34894
35069
|
return buffer;
|
|
34895
35070
|
}
|
|
34896
35071
|
writeWav(samples, sampleRate, path) {
|
|
34897
|
-
|
|
35072
|
+
writeFileSync13(path, this.buildWavBuffer(samples, sampleRate));
|
|
34898
35073
|
}
|
|
34899
35074
|
// -------------------------------------------------------------------------
|
|
34900
35075
|
// Audio playback (system default speakers)
|
|
@@ -35053,7 +35228,7 @@ Error: ${err2 instanceof Error ? err2.message : String(err2)}`);
|
|
|
35053
35228
|
const mlxModelId = model.mlxModelId ?? "mlx-community/Kokoro-82M-bf16";
|
|
35054
35229
|
const mlxVoice = model.mlxVoice ?? "af_heart";
|
|
35055
35230
|
const mlxLangCode = model.mlxLangCode ?? "a";
|
|
35056
|
-
const wavPath =
|
|
35231
|
+
const wavPath = join43(tmpdir6(), `oa-mlx-${Date.now()}.wav`);
|
|
35057
35232
|
const pyScript = [
|
|
35058
35233
|
"import sys, json",
|
|
35059
35234
|
"from mlx_audio.tts import generate as tts_gen",
|
|
@@ -35070,11 +35245,11 @@ Error: ${err2 instanceof Error ? err2.message : String(err2)}`);
|
|
|
35070
35245
|
return;
|
|
35071
35246
|
}
|
|
35072
35247
|
}
|
|
35073
|
-
if (!
|
|
35248
|
+
if (!existsSync33(wavPath))
|
|
35074
35249
|
return;
|
|
35075
35250
|
if (volume !== 1) {
|
|
35076
35251
|
try {
|
|
35077
|
-
const wavData =
|
|
35252
|
+
const wavData = readFileSync24(wavPath);
|
|
35078
35253
|
if (wavData.length > 44) {
|
|
35079
35254
|
const header = wavData.subarray(0, 44);
|
|
35080
35255
|
const samples = new Int16Array(wavData.buffer, wavData.byteOffset + 44, (wavData.length - 44) / 2);
|
|
@@ -35082,14 +35257,14 @@ Error: ${err2 instanceof Error ? err2.message : String(err2)}`);
|
|
|
35082
35257
|
samples[i] = Math.round(samples[i] * volume);
|
|
35083
35258
|
}
|
|
35084
35259
|
const scaled = Buffer.concat([header, Buffer.from(samples.buffer, samples.byteOffset, samples.byteLength)]);
|
|
35085
|
-
|
|
35260
|
+
writeFileSync13(wavPath, scaled);
|
|
35086
35261
|
}
|
|
35087
35262
|
} catch {
|
|
35088
35263
|
}
|
|
35089
35264
|
}
|
|
35090
35265
|
if (this.onPCMOutput) {
|
|
35091
35266
|
try {
|
|
35092
|
-
const wavData =
|
|
35267
|
+
const wavData = readFileSync24(wavPath);
|
|
35093
35268
|
if (wavData.length > 44) {
|
|
35094
35269
|
const pcm = Buffer.from(wavData.buffer, wavData.byteOffset + 44, wavData.length - 44);
|
|
35095
35270
|
const sampleRate = wavData.readUInt32LE(24);
|
|
@@ -35100,7 +35275,7 @@ Error: ${err2 instanceof Error ? err2.message : String(err2)}`);
|
|
|
35100
35275
|
}
|
|
35101
35276
|
await this.playWav(wavPath);
|
|
35102
35277
|
try {
|
|
35103
|
-
|
|
35278
|
+
unlinkSync5(wavPath);
|
|
35104
35279
|
} catch {
|
|
35105
35280
|
}
|
|
35106
35281
|
}
|
|
@@ -35121,7 +35296,7 @@ Error: ${err2 instanceof Error ? err2.message : String(err2)}`);
|
|
|
35121
35296
|
const mlxModelId = model.mlxModelId ?? "mlx-community/Kokoro-82M-bf16";
|
|
35122
35297
|
const mlxVoice = model.mlxVoice ?? "af_heart";
|
|
35123
35298
|
const mlxLangCode = model.mlxLangCode ?? "a";
|
|
35124
|
-
const wavPath =
|
|
35299
|
+
const wavPath = join43(tmpdir6(), `oa-mlx-buf-${Date.now()}.wav`);
|
|
35125
35300
|
const pyScript = [
|
|
35126
35301
|
"import sys, json",
|
|
35127
35302
|
"from mlx_audio.tts import generate as tts_gen",
|
|
@@ -35138,11 +35313,11 @@ Error: ${err2 instanceof Error ? err2.message : String(err2)}`);
|
|
|
35138
35313
|
return null;
|
|
35139
35314
|
}
|
|
35140
35315
|
}
|
|
35141
|
-
if (!
|
|
35316
|
+
if (!existsSync33(wavPath))
|
|
35142
35317
|
return null;
|
|
35143
35318
|
try {
|
|
35144
|
-
const data =
|
|
35145
|
-
|
|
35319
|
+
const data = readFileSync24(wavPath);
|
|
35320
|
+
unlinkSync5(wavPath);
|
|
35146
35321
|
return data;
|
|
35147
35322
|
} catch {
|
|
35148
35323
|
return null;
|
|
@@ -35156,40 +35331,40 @@ Error: ${err2 instanceof Error ? err2.message : String(err2)}`);
|
|
|
35156
35331
|
return;
|
|
35157
35332
|
const arch = process.arch;
|
|
35158
35333
|
mkdirSync12(voiceDir(), { recursive: true });
|
|
35159
|
-
const pkgPath =
|
|
35334
|
+
const pkgPath = join43(voiceDir(), "package.json");
|
|
35160
35335
|
const expectedDeps = {
|
|
35161
35336
|
"onnxruntime-node": "^1.21.0",
|
|
35162
35337
|
"phonemizer": "^1.2.1"
|
|
35163
35338
|
};
|
|
35164
|
-
if (
|
|
35339
|
+
if (existsSync33(pkgPath)) {
|
|
35165
35340
|
try {
|
|
35166
|
-
const existing = JSON.parse(
|
|
35341
|
+
const existing = JSON.parse(readFileSync24(pkgPath, "utf8"));
|
|
35167
35342
|
if (!existing.dependencies?.["phonemizer"]) {
|
|
35168
35343
|
existing.dependencies = { ...existing.dependencies, ...expectedDeps };
|
|
35169
|
-
|
|
35344
|
+
writeFileSync13(pkgPath, JSON.stringify(existing, null, 2));
|
|
35170
35345
|
}
|
|
35171
35346
|
} catch {
|
|
35172
35347
|
}
|
|
35173
35348
|
}
|
|
35174
|
-
if (!
|
|
35175
|
-
|
|
35349
|
+
if (!existsSync33(pkgPath)) {
|
|
35350
|
+
writeFileSync13(pkgPath, JSON.stringify({
|
|
35176
35351
|
name: "open-agents-voice",
|
|
35177
35352
|
private: true,
|
|
35178
35353
|
dependencies: expectedDeps
|
|
35179
35354
|
}, null, 2));
|
|
35180
35355
|
}
|
|
35181
|
-
const voiceRequire = createRequire(
|
|
35356
|
+
const voiceRequire = createRequire(join43(voiceDir(), "index.js"));
|
|
35182
35357
|
const probeOnnx = () => {
|
|
35183
35358
|
try {
|
|
35184
|
-
const result = execSync27(`node -e "try { require('onnxruntime-node'); console.log('OK'); } catch(e) { console.log('FAIL:' + e.message); }"`, { cwd: voiceDir(), stdio: "pipe", timeout: 15e3, env: { ...process.env, NODE_PATH:
|
|
35359
|
+
const result = execSync27(`node -e "try { require('onnxruntime-node'); console.log('OK'); } catch(e) { console.log('FAIL:' + e.message); }"`, { cwd: voiceDir(), stdio: "pipe", timeout: 15e3, env: { ...process.env, NODE_PATH: join43(voiceDir(), "node_modules") } });
|
|
35185
35360
|
const output = result.toString().trim();
|
|
35186
35361
|
return output === "OK";
|
|
35187
35362
|
} catch {
|
|
35188
35363
|
return false;
|
|
35189
35364
|
}
|
|
35190
35365
|
};
|
|
35191
|
-
const onnxNodeModules =
|
|
35192
|
-
const onnxInstalled =
|
|
35366
|
+
const onnxNodeModules = join43(voiceDir(), "node_modules", "onnxruntime-node");
|
|
35367
|
+
const onnxInstalled = existsSync33(onnxNodeModules);
|
|
35193
35368
|
if (onnxInstalled && !probeOnnx()) {
|
|
35194
35369
|
throw new Error(`Voice synthesis unavailable: ONNX runtime crashes on this CPU (${process.platform}-${arch}). This is a known issue with some ARM SoCs where the CPU vendor is not recognized. Voice feedback will be disabled but all other features work normally.`);
|
|
35195
35370
|
}
|
|
@@ -35247,18 +35422,18 @@ Error: ${err instanceof Error ? err.message : String(err)}`);
|
|
|
35247
35422
|
const dir = modelDir(id);
|
|
35248
35423
|
const onnxPath = modelOnnxPath(id);
|
|
35249
35424
|
const configPath = modelConfigPath(id);
|
|
35250
|
-
if (
|
|
35425
|
+
if (existsSync33(onnxPath) && existsSync33(configPath))
|
|
35251
35426
|
return;
|
|
35252
35427
|
mkdirSync12(dir, { recursive: true });
|
|
35253
|
-
if (!
|
|
35428
|
+
if (!existsSync33(configPath)) {
|
|
35254
35429
|
renderInfo(`Downloading ${model.label} voice config...`);
|
|
35255
35430
|
const configResp = await fetch(model.configUrl);
|
|
35256
35431
|
if (!configResp.ok)
|
|
35257
35432
|
throw new Error(`Failed to download config: HTTP ${configResp.status}`);
|
|
35258
35433
|
const configText = await configResp.text();
|
|
35259
|
-
|
|
35434
|
+
writeFileSync13(configPath, configText);
|
|
35260
35435
|
}
|
|
35261
|
-
if (!
|
|
35436
|
+
if (!existsSync33(onnxPath)) {
|
|
35262
35437
|
renderInfo(`Downloading ${model.label} voice model (this may take a minute)...`);
|
|
35263
35438
|
const onnxResp = await fetch(model.onnxUrl);
|
|
35264
35439
|
if (!onnxResp.ok)
|
|
@@ -35283,7 +35458,7 @@ Error: ${err instanceof Error ? err.message : String(err)}`);
|
|
|
35283
35458
|
}
|
|
35284
35459
|
}
|
|
35285
35460
|
const fullBuffer = Buffer.concat(chunks);
|
|
35286
|
-
|
|
35461
|
+
writeFileSync13(onnxPath, fullBuffer);
|
|
35287
35462
|
renderInfo(`${model.label} model downloaded (${formatBytes2(fullBuffer.length)}).`);
|
|
35288
35463
|
}
|
|
35289
35464
|
}
|
|
@@ -35295,10 +35470,10 @@ Error: ${err instanceof Error ? err.message : String(err)}`);
|
|
|
35295
35470
|
throw new Error("ONNX runtime not loaded");
|
|
35296
35471
|
const onnxPath = modelOnnxPath(this.modelId);
|
|
35297
35472
|
const configPath = modelConfigPath(this.modelId);
|
|
35298
|
-
if (!
|
|
35473
|
+
if (!existsSync33(onnxPath) || !existsSync33(configPath)) {
|
|
35299
35474
|
throw new Error(`Model files not found for ${this.modelId}`);
|
|
35300
35475
|
}
|
|
35301
|
-
this.config = JSON.parse(
|
|
35476
|
+
this.config = JSON.parse(readFileSync24(configPath, "utf8"));
|
|
35302
35477
|
this.session = await this.ort.InferenceSession.create(onnxPath, {
|
|
35303
35478
|
executionProviders: ["cpu"],
|
|
35304
35479
|
graphOptimizationLevel: "all"
|
|
@@ -35671,7 +35846,7 @@ Error: ${err instanceof Error ? err.message : String(err)}`);
|
|
|
35671
35846
|
}
|
|
35672
35847
|
});
|
|
35673
35848
|
|
|
35674
|
-
//
|
|
35849
|
+
// packages/cli/dist/tui/stream-renderer.js
|
|
35675
35850
|
function fg2563(code, text) {
|
|
35676
35851
|
return isTTY5 ? `\x1B[38;5;${code}m${text}\x1B[0m` : text;
|
|
35677
35852
|
}
|
|
@@ -35689,7 +35864,7 @@ function boldText(text) {
|
|
|
35689
35864
|
}
|
|
35690
35865
|
var isTTY5, PASTEL, StreamRenderer;
|
|
35691
35866
|
var init_stream_renderer = __esm({
|
|
35692
|
-
"
|
|
35867
|
+
"packages/cli/dist/tui/stream-renderer.js"() {
|
|
35693
35868
|
"use strict";
|
|
35694
35869
|
isTTY5 = process.stdout.isTTY ?? false;
|
|
35695
35870
|
PASTEL = {
|
|
@@ -36158,12 +36333,12 @@ var init_stream_renderer = __esm({
|
|
|
36158
36333
|
}
|
|
36159
36334
|
});
|
|
36160
36335
|
|
|
36161
|
-
//
|
|
36336
|
+
// packages/cli/dist/tui/edit-history.js
|
|
36162
36337
|
import { appendFileSync as appendFileSync2, mkdirSync as mkdirSync13 } from "node:fs";
|
|
36163
|
-
import { join as
|
|
36338
|
+
import { join as join44 } from "node:path";
|
|
36164
36339
|
function createEditHistoryLogger(repoRoot, sessionId) {
|
|
36165
|
-
const historyDir =
|
|
36166
|
-
const logPath =
|
|
36340
|
+
const historyDir = join44(repoRoot, ".oa", "history");
|
|
36341
|
+
const logPath = join44(historyDir, "edits.jsonl");
|
|
36167
36342
|
try {
|
|
36168
36343
|
mkdirSync13(historyDir, { recursive: true });
|
|
36169
36344
|
} catch {
|
|
@@ -36262,7 +36437,7 @@ function sanitizeArgs(tool, args) {
|
|
|
36262
36437
|
}
|
|
36263
36438
|
var EDIT_TOOLS;
|
|
36264
36439
|
var init_edit_history = __esm({
|
|
36265
|
-
"
|
|
36440
|
+
"packages/cli/dist/tui/edit-history.js"() {
|
|
36266
36441
|
"use strict";
|
|
36267
36442
|
EDIT_TOOLS = /* @__PURE__ */ new Set([
|
|
36268
36443
|
"file_edit",
|
|
@@ -36273,18 +36448,18 @@ var init_edit_history = __esm({
|
|
|
36273
36448
|
}
|
|
36274
36449
|
});
|
|
36275
36450
|
|
|
36276
|
-
//
|
|
36277
|
-
import { readFileSync as
|
|
36278
|
-
import { join as
|
|
36451
|
+
// packages/cli/dist/tui/promptLoader.js
|
|
36452
|
+
import { readFileSync as readFileSync25, existsSync as existsSync34 } from "node:fs";
|
|
36453
|
+
import { join as join45, dirname as dirname16 } from "node:path";
|
|
36279
36454
|
import { fileURLToPath as fileURLToPath11 } from "node:url";
|
|
36280
36455
|
function loadPrompt3(promptPath, vars) {
|
|
36281
36456
|
let content = cache3.get(promptPath);
|
|
36282
36457
|
if (content === void 0) {
|
|
36283
|
-
const fullPath =
|
|
36284
|
-
if (!
|
|
36458
|
+
const fullPath = join45(PROMPTS_DIR3, promptPath);
|
|
36459
|
+
if (!existsSync34(fullPath)) {
|
|
36285
36460
|
throw new Error(`Prompt file not found: ${fullPath}`);
|
|
36286
36461
|
}
|
|
36287
|
-
content =
|
|
36462
|
+
content = readFileSync25(fullPath, "utf-8");
|
|
36288
36463
|
cache3.set(promptPath, content);
|
|
36289
36464
|
}
|
|
36290
36465
|
if (!vars)
|
|
@@ -36293,27 +36468,27 @@ function loadPrompt3(promptPath, vars) {
|
|
|
36293
36468
|
}
|
|
36294
36469
|
var __filename3, __dirname6, devPath2, publishedPath2, PROMPTS_DIR3, cache3;
|
|
36295
36470
|
var init_promptLoader3 = __esm({
|
|
36296
|
-
"
|
|
36471
|
+
"packages/cli/dist/tui/promptLoader.js"() {
|
|
36297
36472
|
"use strict";
|
|
36298
36473
|
__filename3 = fileURLToPath11(import.meta.url);
|
|
36299
36474
|
__dirname6 = dirname16(__filename3);
|
|
36300
|
-
devPath2 =
|
|
36301
|
-
publishedPath2 =
|
|
36302
|
-
PROMPTS_DIR3 =
|
|
36475
|
+
devPath2 = join45(__dirname6, "..", "..", "prompts");
|
|
36476
|
+
publishedPath2 = join45(__dirname6, "..", "prompts");
|
|
36477
|
+
PROMPTS_DIR3 = existsSync34(devPath2) ? devPath2 : publishedPath2;
|
|
36303
36478
|
cache3 = /* @__PURE__ */ new Map();
|
|
36304
36479
|
}
|
|
36305
36480
|
});
|
|
36306
36481
|
|
|
36307
|
-
//
|
|
36308
|
-
import { mkdirSync as mkdirSync14, writeFileSync as
|
|
36309
|
-
import { join as
|
|
36482
|
+
// packages/cli/dist/tui/dream-engine.js
|
|
36483
|
+
import { mkdirSync as mkdirSync14, writeFileSync as writeFileSync14, readFileSync as readFileSync26, existsSync as existsSync35, cpSync, rmSync, readdirSync as readdirSync10 } from "node:fs";
|
|
36484
|
+
import { join as join46, basename as basename12 } from "node:path";
|
|
36310
36485
|
import { execSync as execSync28 } from "node:child_process";
|
|
36311
36486
|
function loadAutoresearchMemory(repoRoot) {
|
|
36312
|
-
const memoryPath =
|
|
36313
|
-
if (!
|
|
36487
|
+
const memoryPath = join46(repoRoot, ".oa", "memory", "autoresearch.json");
|
|
36488
|
+
if (!existsSync35(memoryPath))
|
|
36314
36489
|
return "";
|
|
36315
36490
|
try {
|
|
36316
|
-
const raw =
|
|
36491
|
+
const raw = readFileSync26(memoryPath, "utf-8");
|
|
36317
36492
|
const data = JSON.parse(raw);
|
|
36318
36493
|
const sections = [];
|
|
36319
36494
|
for (const key of AUTORESEARCH_MEMORY_KEYS) {
|
|
@@ -36467,7 +36642,7 @@ function renderSwarmComplete(workspace) {
|
|
|
36467
36642
|
}
|
|
36468
36643
|
var SWARM_ROLE_CONFIG, AutoresearchFileWriteTool, AutoresearchFileEditTool, AUTORESEARCH_MEMORY_KEYS, SLEEP_STAGES, DreamFileWriteTool, DreamFileEditTool, DreamShellTool, DreamEngine;
|
|
36469
36644
|
var init_dream_engine = __esm({
|
|
36470
|
-
"
|
|
36645
|
+
"packages/cli/dist/tui/dream-engine.js"() {
|
|
36471
36646
|
"use strict";
|
|
36472
36647
|
init_dist5();
|
|
36473
36648
|
init_dist2();
|
|
@@ -36503,14 +36678,14 @@ var init_dream_engine = __esm({
|
|
|
36503
36678
|
const content = String(args["content"] ?? "");
|
|
36504
36679
|
if (!rawPath)
|
|
36505
36680
|
return { success: false, output: "", error: "path is required", durationMs: Date.now() - start };
|
|
36506
|
-
const targetPath = rawPath.startsWith("/") || rawPath.startsWith(".oa/autoresearch") ?
|
|
36681
|
+
const targetPath = rawPath.startsWith("/") || rawPath.startsWith(".oa/autoresearch") ? join46(this.autoresearchDir, basename12(rawPath)) : join46(this.autoresearchDir, rawPath);
|
|
36507
36682
|
if (!targetPath.startsWith(this.autoresearchDir)) {
|
|
36508
36683
|
return { success: false, output: "", error: "Autoresearch mode: writes are confined to .oa/autoresearch/", durationMs: Date.now() - start };
|
|
36509
36684
|
}
|
|
36510
36685
|
try {
|
|
36511
|
-
const dir =
|
|
36686
|
+
const dir = join46(targetPath, "..");
|
|
36512
36687
|
mkdirSync14(dir, { recursive: true });
|
|
36513
|
-
|
|
36688
|
+
writeFileSync14(targetPath, content, "utf-8");
|
|
36514
36689
|
return { success: true, output: `Wrote ${content.length} bytes to ${rawPath}`, durationMs: Date.now() - start };
|
|
36515
36690
|
} catch (err) {
|
|
36516
36691
|
return { success: false, output: "", error: String(err), durationMs: Date.now() - start };
|
|
@@ -36538,20 +36713,20 @@ var init_dream_engine = __esm({
|
|
|
36538
36713
|
const rawPath = String(args["path"] ?? "");
|
|
36539
36714
|
const oldStr = String(args["old_string"] ?? "");
|
|
36540
36715
|
const newStr = String(args["new_string"] ?? "");
|
|
36541
|
-
const targetPath = rawPath.startsWith("/") || rawPath.startsWith(".oa/autoresearch") ?
|
|
36716
|
+
const targetPath = rawPath.startsWith("/") || rawPath.startsWith(".oa/autoresearch") ? join46(this.autoresearchDir, basename12(rawPath)) : join46(this.autoresearchDir, rawPath);
|
|
36542
36717
|
if (!targetPath.startsWith(this.autoresearchDir)) {
|
|
36543
36718
|
return { success: false, output: "", error: "Autoresearch mode: edits are confined to .oa/autoresearch/", durationMs: Date.now() - start };
|
|
36544
36719
|
}
|
|
36545
36720
|
try {
|
|
36546
|
-
if (!
|
|
36721
|
+
if (!existsSync35(targetPath)) {
|
|
36547
36722
|
return { success: false, output: "", error: `File not found: ${rawPath}`, durationMs: Date.now() - start };
|
|
36548
36723
|
}
|
|
36549
|
-
let content =
|
|
36724
|
+
let content = readFileSync26(targetPath, "utf-8");
|
|
36550
36725
|
if (!content.includes(oldStr)) {
|
|
36551
36726
|
return { success: false, output: "", error: "old_string not found in file", durationMs: Date.now() - start };
|
|
36552
36727
|
}
|
|
36553
36728
|
content = content.replace(oldStr, newStr);
|
|
36554
|
-
|
|
36729
|
+
writeFileSync14(targetPath, content, "utf-8");
|
|
36555
36730
|
return { success: true, output: `Edited ${rawPath}`, durationMs: Date.now() - start };
|
|
36556
36731
|
} catch (err) {
|
|
36557
36732
|
return { success: false, output: "", error: String(err), durationMs: Date.now() - start };
|
|
@@ -36592,14 +36767,14 @@ var init_dream_engine = __esm({
|
|
|
36592
36767
|
const content = String(args["content"] ?? "");
|
|
36593
36768
|
if (!rawPath)
|
|
36594
36769
|
return { success: false, output: "", error: "path is required", durationMs: Date.now() - start };
|
|
36595
|
-
const targetPath = rawPath.startsWith("/") || rawPath.startsWith(".oa/dreams") ?
|
|
36770
|
+
const targetPath = rawPath.startsWith("/") || rawPath.startsWith(".oa/dreams") ? join46(this.dreamsDir, basename12(rawPath)) : join46(this.dreamsDir, rawPath);
|
|
36596
36771
|
if (!targetPath.startsWith(this.dreamsDir)) {
|
|
36597
36772
|
return { success: false, output: "", error: "Dream mode: writes are confined to .oa/dreams/", durationMs: Date.now() - start };
|
|
36598
36773
|
}
|
|
36599
36774
|
try {
|
|
36600
|
-
const dir =
|
|
36775
|
+
const dir = join46(targetPath, "..");
|
|
36601
36776
|
mkdirSync14(dir, { recursive: true });
|
|
36602
|
-
|
|
36777
|
+
writeFileSync14(targetPath, content, "utf-8");
|
|
36603
36778
|
return { success: true, output: `Wrote ${content.length} bytes to ${rawPath}`, durationMs: Date.now() - start };
|
|
36604
36779
|
} catch (err) {
|
|
36605
36780
|
return { success: false, output: "", error: String(err), durationMs: Date.now() - start };
|
|
@@ -36627,20 +36802,20 @@ var init_dream_engine = __esm({
|
|
|
36627
36802
|
const rawPath = String(args["path"] ?? "");
|
|
36628
36803
|
const oldStr = String(args["old_string"] ?? "");
|
|
36629
36804
|
const newStr = String(args["new_string"] ?? "");
|
|
36630
|
-
const targetPath = rawPath.startsWith("/") || rawPath.startsWith(".oa/dreams") ?
|
|
36805
|
+
const targetPath = rawPath.startsWith("/") || rawPath.startsWith(".oa/dreams") ? join46(this.dreamsDir, basename12(rawPath)) : join46(this.dreamsDir, rawPath);
|
|
36631
36806
|
if (!targetPath.startsWith(this.dreamsDir)) {
|
|
36632
36807
|
return { success: false, output: "", error: "Dream mode: edits are confined to .oa/dreams/", durationMs: Date.now() - start };
|
|
36633
36808
|
}
|
|
36634
36809
|
try {
|
|
36635
|
-
if (!
|
|
36810
|
+
if (!existsSync35(targetPath)) {
|
|
36636
36811
|
return { success: false, output: "", error: `File not found: ${rawPath}`, durationMs: Date.now() - start };
|
|
36637
36812
|
}
|
|
36638
|
-
let content =
|
|
36813
|
+
let content = readFileSync26(targetPath, "utf-8");
|
|
36639
36814
|
if (!content.includes(oldStr)) {
|
|
36640
36815
|
return { success: false, output: "", error: "old_string not found in file", durationMs: Date.now() - start };
|
|
36641
36816
|
}
|
|
36642
36817
|
content = content.replace(oldStr, newStr);
|
|
36643
|
-
|
|
36818
|
+
writeFileSync14(targetPath, content, "utf-8");
|
|
36644
36819
|
return { success: true, output: `Edited ${rawPath}`, durationMs: Date.now() - start };
|
|
36645
36820
|
} catch (err) {
|
|
36646
36821
|
return { success: false, output: "", error: String(err), durationMs: Date.now() - start };
|
|
@@ -36694,7 +36869,7 @@ var init_dream_engine = __esm({
|
|
|
36694
36869
|
constructor(config, repoRoot) {
|
|
36695
36870
|
this.config = config;
|
|
36696
36871
|
this.repoRoot = repoRoot;
|
|
36697
|
-
this.dreamsDir =
|
|
36872
|
+
this.dreamsDir = join46(repoRoot, ".oa", "dreams");
|
|
36698
36873
|
this.state = {
|
|
36699
36874
|
mode: "default",
|
|
36700
36875
|
active: false,
|
|
@@ -36778,8 +36953,8 @@ ${result.summary}`;
|
|
|
36778
36953
|
if (mode !== "default" || cycle === totalCycles) {
|
|
36779
36954
|
renderDreamContraction(cycle);
|
|
36780
36955
|
const cycleSummary = this.buildCycleSummary(cycle, previousFindings);
|
|
36781
|
-
const summaryPath =
|
|
36782
|
-
|
|
36956
|
+
const summaryPath = join46(this.dreamsDir, `cycle-${cycle}-summary.md`);
|
|
36957
|
+
writeFileSync14(summaryPath, cycleSummary, "utf-8");
|
|
36783
36958
|
}
|
|
36784
36959
|
if (mode === "lucid" && !this.abortController.signal.aborted) {
|
|
36785
36960
|
this.saveVersionCheckpoint(cycle);
|
|
@@ -36991,7 +37166,7 @@ After synthesis, call task_complete with the final prioritized summary.`, toolMo
|
|
|
36991
37166
|
}
|
|
36992
37167
|
/** Build role-specific tool sets for swarm agents */
|
|
36993
37168
|
buildSwarmTools(role, _workspace) {
|
|
36994
|
-
const autoresearchDir =
|
|
37169
|
+
const autoresearchDir = join46(this.repoRoot, ".oa", "autoresearch");
|
|
36995
37170
|
const taskComplete = this.createSwarmTaskCompleteTool(role);
|
|
36996
37171
|
switch (role) {
|
|
36997
37172
|
case "researcher": {
|
|
@@ -37355,7 +37530,7 @@ INSTRUCTIONS:
|
|
|
37355
37530
|
2. Summarize the key learnings and next steps
|
|
37356
37531
|
|
|
37357
37532
|
Call task_complete with a human-readable summary of the autoresearch session.`, workspace, onEvent);
|
|
37358
|
-
const reportPath =
|
|
37533
|
+
const reportPath = join46(this.dreamsDir, `cycle-${cycleNum}-autoresearch-report.md`);
|
|
37359
37534
|
const report = `# Autoresearch Swarm Report \u2014 Cycle ${cycleNum}
|
|
37360
37535
|
|
|
37361
37536
|
**Date**: ${(/* @__PURE__ */ new Date()).toISOString().split("T")[0]}
|
|
@@ -37378,7 +37553,7 @@ ${summaryResult}
|
|
|
37378
37553
|
`;
|
|
37379
37554
|
try {
|
|
37380
37555
|
mkdirSync14(this.dreamsDir, { recursive: true });
|
|
37381
|
-
|
|
37556
|
+
writeFileSync14(reportPath, report, "utf-8");
|
|
37382
37557
|
} catch {
|
|
37383
37558
|
}
|
|
37384
37559
|
renderSwarmComplete(workspace);
|
|
@@ -37444,7 +37619,7 @@ ${summaryResult}
|
|
|
37444
37619
|
}
|
|
37445
37620
|
/** Save workspace backup for lucid mode */
|
|
37446
37621
|
saveVersionCheckpoint(cycle) {
|
|
37447
|
-
const checkpointDir =
|
|
37622
|
+
const checkpointDir = join46(this.dreamsDir, "checkpoints", `cycle-${cycle}`);
|
|
37448
37623
|
try {
|
|
37449
37624
|
mkdirSync14(checkpointDir, { recursive: true });
|
|
37450
37625
|
try {
|
|
@@ -37463,10 +37638,10 @@ ${summaryResult}
|
|
|
37463
37638
|
encoding: "utf-8",
|
|
37464
37639
|
timeout: 5e3
|
|
37465
37640
|
}).trim();
|
|
37466
|
-
|
|
37467
|
-
|
|
37468
|
-
|
|
37469
|
-
|
|
37641
|
+
writeFileSync14(join46(checkpointDir, "git-status.txt"), gitStatus, "utf-8");
|
|
37642
|
+
writeFileSync14(join46(checkpointDir, "git-diff.patch"), gitDiff, "utf-8");
|
|
37643
|
+
writeFileSync14(join46(checkpointDir, "git-hash.txt"), gitHash, "utf-8");
|
|
37644
|
+
writeFileSync14(join46(checkpointDir, "checkpoint.json"), JSON.stringify({
|
|
37470
37645
|
cycle,
|
|
37471
37646
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
37472
37647
|
gitHash,
|
|
@@ -37474,7 +37649,7 @@ ${summaryResult}
|
|
|
37474
37649
|
}, null, 2), "utf-8");
|
|
37475
37650
|
renderInfo(`Checkpoint saved: cycle ${cycle} (${gitHash.slice(0, 8)})`);
|
|
37476
37651
|
} catch {
|
|
37477
|
-
|
|
37652
|
+
writeFileSync14(join46(checkpointDir, "checkpoint.json"), JSON.stringify({ cycle, timestamp: (/* @__PURE__ */ new Date()).toISOString(), mode: this.state.mode }, null, 2), "utf-8");
|
|
37478
37653
|
renderInfo(`Checkpoint saved: cycle ${cycle} (no git)`);
|
|
37479
37654
|
}
|
|
37480
37655
|
} catch (err) {
|
|
@@ -37532,14 +37707,14 @@ ${files.map((f) => `- [\`${f}\`](./${f})`).join("\n")}
|
|
|
37532
37707
|
---
|
|
37533
37708
|
*Auto-generated by open-agents dream engine*
|
|
37534
37709
|
`;
|
|
37535
|
-
|
|
37710
|
+
writeFileSync14(join46(this.dreamsDir, "PROPOSAL-INDEX.md"), index, "utf-8");
|
|
37536
37711
|
} catch {
|
|
37537
37712
|
}
|
|
37538
37713
|
}
|
|
37539
37714
|
/** Save dream state for resume/inspection */
|
|
37540
37715
|
saveDreamState() {
|
|
37541
37716
|
try {
|
|
37542
|
-
|
|
37717
|
+
writeFileSync14(join46(this.dreamsDir, "dream-state.json"), JSON.stringify(this.state, null, 2) + "\n", "utf-8");
|
|
37543
37718
|
} catch {
|
|
37544
37719
|
}
|
|
37545
37720
|
}
|
|
@@ -37547,7 +37722,7 @@ ${files.map((f) => `- [\`${f}\`](./${f})`).join("\n")}
|
|
|
37547
37722
|
}
|
|
37548
37723
|
});
|
|
37549
37724
|
|
|
37550
|
-
//
|
|
37725
|
+
// packages/cli/dist/tui/priority-ingress.js
|
|
37551
37726
|
function classifyPriority(prompt, source, origin) {
|
|
37552
37727
|
for (const rule of CLASSIFICATION_RULES) {
|
|
37553
37728
|
if (rule.sourceType !== "any" && rule.sourceType !== source)
|
|
@@ -37572,7 +37747,7 @@ function classifyPriority(prompt, source, origin) {
|
|
|
37572
37747
|
}
|
|
37573
37748
|
var PRIORITY_WEIGHT, PRIORITY_POLICIES, CLASSIFICATION_RULES, PriorityIngressEngine;
|
|
37574
37749
|
var init_priority_ingress = __esm({
|
|
37575
|
-
"
|
|
37750
|
+
"packages/cli/dist/tui/priority-ingress.js"() {
|
|
37576
37751
|
"use strict";
|
|
37577
37752
|
PRIORITY_WEIGHT = {
|
|
37578
37753
|
critical: 100,
|
|
@@ -37757,7 +37932,7 @@ var init_priority_ingress = __esm({
|
|
|
37757
37932
|
}
|
|
37758
37933
|
});
|
|
37759
37934
|
|
|
37760
|
-
//
|
|
37935
|
+
// packages/cli/dist/tui/bless-engine.js
|
|
37761
37936
|
function renderBlessStart() {
|
|
37762
37937
|
process.stdout.write(`
|
|
37763
37938
|
${c2.green("\u26A1")} ${c2.bold("BLESSED")} \u2014 Infinite warm loop activated
|
|
@@ -37781,7 +37956,7 @@ function renderBlessStop(state) {
|
|
|
37781
37956
|
}
|
|
37782
37957
|
var BlessEngine;
|
|
37783
37958
|
var init_bless_engine = __esm({
|
|
37784
|
-
"
|
|
37959
|
+
"packages/cli/dist/tui/bless-engine.js"() {
|
|
37785
37960
|
"use strict";
|
|
37786
37961
|
init_render();
|
|
37787
37962
|
init_dist2();
|
|
@@ -37912,9 +38087,9 @@ var init_bless_engine = __esm({
|
|
|
37912
38087
|
}
|
|
37913
38088
|
});
|
|
37914
38089
|
|
|
37915
|
-
//
|
|
37916
|
-
import { existsSync as
|
|
37917
|
-
import { join as
|
|
38090
|
+
// packages/cli/dist/tui/dmn-engine.js
|
|
38091
|
+
import { existsSync as existsSync36, readFileSync as readFileSync27, writeFileSync as writeFileSync15, mkdirSync as mkdirSync15, readdirSync as readdirSync11, unlinkSync as unlinkSync6 } from "node:fs";
|
|
38092
|
+
import { join as join47, basename as basename13 } from "node:path";
|
|
37918
38093
|
function buildDMNGatherPrompt(recentTaskSummaries, dueReminders, attentionItems, memoryTopics, capabilities, competence, reflectionBuffer) {
|
|
37919
38094
|
const competenceReport = competence.length > 0 ? competence.map((c3) => {
|
|
37920
38095
|
const rate = c3.attempts > 0 ? Math.round(c3.successes / c3.attempts * 100) : 0;
|
|
@@ -38000,7 +38175,7 @@ function renderDMNResting(consecutiveNulls) {
|
|
|
38000
38175
|
}
|
|
38001
38176
|
var DMNEngine;
|
|
38002
38177
|
var init_dmn_engine = __esm({
|
|
38003
|
-
"
|
|
38178
|
+
"packages/cli/dist/tui/dmn-engine.js"() {
|
|
38004
38179
|
"use strict";
|
|
38005
38180
|
init_dist5();
|
|
38006
38181
|
init_dist2();
|
|
@@ -38027,8 +38202,8 @@ var init_dmn_engine = __esm({
|
|
|
38027
38202
|
constructor(config, repoRoot) {
|
|
38028
38203
|
this.config = config;
|
|
38029
38204
|
this.repoRoot = repoRoot;
|
|
38030
|
-
this.stateDir =
|
|
38031
|
-
this.historyDir =
|
|
38205
|
+
this.stateDir = join47(repoRoot, ".oa", "dmn");
|
|
38206
|
+
this.historyDir = join47(repoRoot, ".oa", "dmn", "cycles");
|
|
38032
38207
|
mkdirSync15(this.historyDir, { recursive: true });
|
|
38033
38208
|
this.loadState();
|
|
38034
38209
|
}
|
|
@@ -38618,11 +38793,11 @@ OUTPUT: Call task_complete with JSON:
|
|
|
38618
38793
|
async gatherMemoryTopics() {
|
|
38619
38794
|
const topics = [];
|
|
38620
38795
|
const dirs = [
|
|
38621
|
-
|
|
38622
|
-
|
|
38796
|
+
join47(this.repoRoot, ".oa", "memory"),
|
|
38797
|
+
join47(this.repoRoot, ".open-agents", "memory")
|
|
38623
38798
|
];
|
|
38624
38799
|
for (const dir of dirs) {
|
|
38625
|
-
if (!
|
|
38800
|
+
if (!existsSync36(dir))
|
|
38626
38801
|
continue;
|
|
38627
38802
|
try {
|
|
38628
38803
|
const files = readdirSync11(dir).filter((f) => f.endsWith(".json"));
|
|
@@ -38638,29 +38813,29 @@ OUTPUT: Call task_complete with JSON:
|
|
|
38638
38813
|
}
|
|
38639
38814
|
// ── State persistence ─────────────────────────────────────────────────
|
|
38640
38815
|
loadState() {
|
|
38641
|
-
const path =
|
|
38642
|
-
if (
|
|
38816
|
+
const path = join47(this.stateDir, "state.json");
|
|
38817
|
+
if (existsSync36(path)) {
|
|
38643
38818
|
try {
|
|
38644
|
-
this.state = JSON.parse(
|
|
38819
|
+
this.state = JSON.parse(readFileSync27(path, "utf-8"));
|
|
38645
38820
|
} catch {
|
|
38646
38821
|
}
|
|
38647
38822
|
}
|
|
38648
38823
|
}
|
|
38649
38824
|
saveState() {
|
|
38650
38825
|
try {
|
|
38651
|
-
|
|
38826
|
+
writeFileSync15(join47(this.stateDir, "state.json"), JSON.stringify(this.state, null, 2) + "\n", "utf-8");
|
|
38652
38827
|
} catch {
|
|
38653
38828
|
}
|
|
38654
38829
|
}
|
|
38655
38830
|
saveCycleResult(result) {
|
|
38656
38831
|
try {
|
|
38657
38832
|
const filename = `cycle-${result.cycleNumber}-${Date.now()}.json`;
|
|
38658
|
-
|
|
38833
|
+
writeFileSync15(join47(this.historyDir, filename), JSON.stringify(result, null, 2) + "\n", "utf-8");
|
|
38659
38834
|
const files = readdirSync11(this.historyDir).filter((f) => f.startsWith("cycle-") && f.endsWith(".json")).sort();
|
|
38660
38835
|
if (files.length > 50) {
|
|
38661
38836
|
for (const old of files.slice(0, files.length - 50)) {
|
|
38662
38837
|
try {
|
|
38663
|
-
|
|
38838
|
+
unlinkSync6(join47(this.historyDir, old));
|
|
38664
38839
|
} catch {
|
|
38665
38840
|
}
|
|
38666
38841
|
}
|
|
@@ -38672,9 +38847,9 @@ OUTPUT: Call task_complete with JSON:
|
|
|
38672
38847
|
}
|
|
38673
38848
|
});
|
|
38674
38849
|
|
|
38675
|
-
//
|
|
38676
|
-
import { existsSync as
|
|
38677
|
-
import { join as
|
|
38850
|
+
// packages/cli/dist/tui/snr-engine.js
|
|
38851
|
+
import { existsSync as existsSync37, readdirSync as readdirSync12, readFileSync as readFileSync28 } from "node:fs";
|
|
38852
|
+
import { join as join48, basename as basename14 } from "node:path";
|
|
38678
38853
|
function computeDPrime(signalScores, noiseScores) {
|
|
38679
38854
|
if (signalScores.length === 0 || noiseScores.length === 0)
|
|
38680
38855
|
return 0;
|
|
@@ -38732,7 +38907,7 @@ function adaptTool4(tool) {
|
|
|
38732
38907
|
}
|
|
38733
38908
|
var SNREngine;
|
|
38734
38909
|
var init_snr_engine = __esm({
|
|
38735
|
-
"
|
|
38910
|
+
"packages/cli/dist/tui/snr-engine.js"() {
|
|
38736
38911
|
"use strict";
|
|
38737
38912
|
init_dist5();
|
|
38738
38913
|
init_dist2();
|
|
@@ -38914,11 +39089,11 @@ Call task_complete with the JSON array when done.`, onEvent)
|
|
|
38914
39089
|
loadMemoryEntries(topics) {
|
|
38915
39090
|
const entries = [];
|
|
38916
39091
|
const dirs = [
|
|
38917
|
-
|
|
38918
|
-
|
|
39092
|
+
join48(this.repoRoot, ".oa", "memory"),
|
|
39093
|
+
join48(this.repoRoot, ".open-agents", "memory")
|
|
38919
39094
|
];
|
|
38920
39095
|
for (const dir of dirs) {
|
|
38921
|
-
if (!
|
|
39096
|
+
if (!existsSync37(dir))
|
|
38922
39097
|
continue;
|
|
38923
39098
|
try {
|
|
38924
39099
|
const files = readdirSync12(dir).filter((f) => f.endsWith(".json"));
|
|
@@ -38927,7 +39102,7 @@ Call task_complete with the JSON array when done.`, onEvent)
|
|
|
38927
39102
|
if (topics.length > 0 && !topics.includes(topic))
|
|
38928
39103
|
continue;
|
|
38929
39104
|
try {
|
|
38930
|
-
const data = JSON.parse(
|
|
39105
|
+
const data = JSON.parse(readFileSync28(join48(dir, f), "utf-8"));
|
|
38931
39106
|
for (const [key, val] of Object.entries(data)) {
|
|
38932
39107
|
const value = typeof val === "object" && val !== null && "value" in val ? String(val.value) : String(val);
|
|
38933
39108
|
entries.push({ topic, key, value });
|
|
@@ -39007,7 +39182,7 @@ Call task_complete with the JSON array when done.`, onEvent)
|
|
|
39007
39182
|
}
|
|
39008
39183
|
});
|
|
39009
39184
|
|
|
39010
|
-
//
|
|
39185
|
+
// packages/cli/dist/tui/emotion-engine.js
|
|
39011
39186
|
function labelFromCoordinates(valence, arousal) {
|
|
39012
39187
|
if (valence > 0.6 && arousal > 0.6)
|
|
39013
39188
|
return { label: "exhilarated", emoji: "\u{1F929}" };
|
|
@@ -39068,7 +39243,7 @@ function clamp(value, min, max) {
|
|
|
39068
39243
|
}
|
|
39069
39244
|
var BASELINE_VALENCE, BASELINE_AROUSAL, DECAY_HALF_LIFE_MS, LABEL_UPDATE_INTERVAL_MS, EXCITEMENT_THRESHOLD, DISTRESS_THRESHOLD, OUTREACH_COOLDOWN_MS, OUTREACH_MIN_STREAK, LABEL_REGEN_THRESHOLD, EmotionEngine;
|
|
39070
39245
|
var init_emotion_engine = __esm({
|
|
39071
|
-
"
|
|
39246
|
+
"packages/cli/dist/tui/emotion-engine.js"() {
|
|
39072
39247
|
"use strict";
|
|
39073
39248
|
init_dist5();
|
|
39074
39249
|
init_promptLoader3();
|
|
@@ -39414,7 +39589,7 @@ var init_emotion_engine = __esm({
|
|
|
39414
39589
|
}
|
|
39415
39590
|
});
|
|
39416
39591
|
|
|
39417
|
-
//
|
|
39592
|
+
// packages/cli/dist/tui/tool-policy.js
|
|
39418
39593
|
function getDefaultPolicy(context) {
|
|
39419
39594
|
switch (context) {
|
|
39420
39595
|
case "terminal":
|
|
@@ -39464,7 +39639,7 @@ function applyToolPolicy(tools, context, userConfig) {
|
|
|
39464
39639
|
}
|
|
39465
39640
|
var SAFE_PUBLIC_TOOLS, SAFE_GROUP_ADMIN_TOOLS;
|
|
39466
39641
|
var init_tool_policy = __esm({
|
|
39467
|
-
"
|
|
39642
|
+
"packages/cli/dist/tui/tool-policy.js"() {
|
|
39468
39643
|
"use strict";
|
|
39469
39644
|
SAFE_PUBLIC_TOOLS = /* @__PURE__ */ new Set([
|
|
39470
39645
|
"memory_read",
|
|
@@ -39493,9 +39668,9 @@ var init_tool_policy = __esm({
|
|
|
39493
39668
|
}
|
|
39494
39669
|
});
|
|
39495
39670
|
|
|
39496
|
-
//
|
|
39497
|
-
import { mkdirSync as mkdirSync16, existsSync as
|
|
39498
|
-
import { join as
|
|
39671
|
+
// packages/cli/dist/tui/telegram-bridge.js
|
|
39672
|
+
import { mkdirSync as mkdirSync16, existsSync as existsSync38, unlinkSync as unlinkSync7, readdirSync as readdirSync13, statSync as statSync10 } from "node:fs";
|
|
39673
|
+
import { join as join49, resolve as resolve27 } from "node:path";
|
|
39499
39674
|
import { writeFile as writeFileAsync } from "node:fs/promises";
|
|
39500
39675
|
function convertMarkdownToTelegramHTML(md) {
|
|
39501
39676
|
let html = md;
|
|
@@ -39630,7 +39805,7 @@ function renderTelegramSubAgentError(username, error) {
|
|
|
39630
39805
|
}
|
|
39631
39806
|
var TELEGRAM_SAFETY_PROMPT, ADMIN_DM_PROMPT, ADMIN_GROUP_PROMPT, GROUP_REPLY_DISCRETION_PROMPT, MEDIA_CACHE_TTL_MS, TelegramBridge;
|
|
39632
39807
|
var init_telegram_bridge = __esm({
|
|
39633
|
-
"
|
|
39808
|
+
"packages/cli/dist/tui/telegram-bridge.js"() {
|
|
39634
39809
|
"use strict";
|
|
39635
39810
|
init_dist5();
|
|
39636
39811
|
init_dist2();
|
|
@@ -40260,7 +40435,7 @@ Telegram admin: @${msg.username}` : `Telegram ${isGroup ? "group" : "public"} ch
|
|
|
40260
40435
|
return null;
|
|
40261
40436
|
const buffer = Buffer.from(await res.arrayBuffer());
|
|
40262
40437
|
const fileName = `${Date.now()}-${fileId.slice(0, 8)}${extension}`;
|
|
40263
|
-
const localPath =
|
|
40438
|
+
const localPath = join49(this.mediaCacheDir, fileName);
|
|
40264
40439
|
await writeFileAsync(localPath, buffer);
|
|
40265
40440
|
return localPath;
|
|
40266
40441
|
} catch {
|
|
@@ -40348,7 +40523,7 @@ Telegram admin: @${msg.username}` : `Telegram ${isGroup ? "group" : "public"} ch
|
|
|
40348
40523
|
for (const [key, entry] of this.mediaCache) {
|
|
40349
40524
|
if (now - entry.cachedAt > MEDIA_CACHE_TTL_MS) {
|
|
40350
40525
|
try {
|
|
40351
|
-
|
|
40526
|
+
unlinkSync7(entry.localPath);
|
|
40352
40527
|
} catch {
|
|
40353
40528
|
}
|
|
40354
40529
|
this.mediaCache.delete(key);
|
|
@@ -40669,7 +40844,7 @@ ${caption}\r
|
|
|
40669
40844
|
}
|
|
40670
40845
|
});
|
|
40671
40846
|
|
|
40672
|
-
//
|
|
40847
|
+
// packages/cli/dist/tui/braille-spinner.js
|
|
40673
40848
|
function buildColorRamp(ramp) {
|
|
40674
40849
|
return [...ramp, ...ramp.slice(1, -1).reverse()];
|
|
40675
40850
|
}
|
|
@@ -40711,7 +40886,7 @@ function themeForTool(toolName) {
|
|
|
40711
40886
|
}
|
|
40712
40887
|
var DENSITY, WAVE, THEME_DEFAULT, THEME_FILE, THEME_SHELL, THEME_WEB, THEME_SEARCH, THEME_MEMORY, THEME_SKILL, THEME_TOOL_CREATE, THEME_DREAM, DEFAULT_METRICS, BrailleSpinner;
|
|
40713
40888
|
var init_braille_spinner = __esm({
|
|
40714
|
-
"
|
|
40889
|
+
"packages/cli/dist/tui/braille-spinner.js"() {
|
|
40715
40890
|
"use strict";
|
|
40716
40891
|
DENSITY = [
|
|
40717
40892
|
"\u2800",
|
|
@@ -40908,10 +41083,10 @@ var init_braille_spinner = __esm({
|
|
|
40908
41083
|
}
|
|
40909
41084
|
});
|
|
40910
41085
|
|
|
40911
|
-
//
|
|
41086
|
+
// packages/cli/dist/tui/status-bar.js
|
|
40912
41087
|
var EXPERT_TOOL_BASELINES, CONTEXT_SWITCH_OVERHEAD, TURN_PLANNING_OVERHEAD, DEFAULT_TOOL_BASELINE, CODE_READ_CHARS_PER_SEC, PROSE_READ_CHARS_PER_SEC, MIN_CONTENT_FOR_READING, CODE_CONTENT_TOOLS, PROSE_CONTENT_TOOLS, HumanSpeedTracker, StatusBar;
|
|
40913
41088
|
var init_status_bar = __esm({
|
|
40914
|
-
"
|
|
41089
|
+
"packages/cli/dist/tui/status-bar.js"() {
|
|
40915
41090
|
"use strict";
|
|
40916
41091
|
init_render();
|
|
40917
41092
|
init_braille_spinner();
|
|
@@ -42089,15 +42264,15 @@ var init_status_bar = __esm({
|
|
|
42089
42264
|
}
|
|
42090
42265
|
});
|
|
42091
42266
|
|
|
42092
|
-
//
|
|
42267
|
+
// packages/cli/dist/tui/interactive.js
|
|
42093
42268
|
import * as readline2 from "node:readline";
|
|
42094
42269
|
import { Writable } from "node:stream";
|
|
42095
42270
|
import { cwd } from "node:process";
|
|
42096
|
-
import { resolve as resolve28, join as
|
|
42271
|
+
import { resolve as resolve28, join as join50, dirname as dirname17, extname as extname9 } from "node:path";
|
|
42097
42272
|
import { createRequire as createRequire2 } from "node:module";
|
|
42098
42273
|
import { fileURLToPath as fileURLToPath12 } from "node:url";
|
|
42099
|
-
import { readFileSync as
|
|
42100
|
-
import { existsSync as
|
|
42274
|
+
import { readFileSync as readFileSync29, writeFileSync as writeFileSync16, appendFileSync as appendFileSync3, rmSync as rmSync2, readdirSync as readdirSync14, mkdirSync as mkdirSync17 } from "node:fs";
|
|
42275
|
+
import { existsSync as existsSync39 } from "node:fs";
|
|
42101
42276
|
import { homedir as homedir13 } from "node:os";
|
|
42102
42277
|
function formatTimeAgo(date) {
|
|
42103
42278
|
const seconds = Math.floor((Date.now() - date.getTime()) / 1e3);
|
|
@@ -42117,12 +42292,12 @@ function getVersion3() {
|
|
|
42117
42292
|
const require2 = createRequire2(import.meta.url);
|
|
42118
42293
|
const thisDir = dirname17(fileURLToPath12(import.meta.url));
|
|
42119
42294
|
const candidates = [
|
|
42120
|
-
|
|
42121
|
-
|
|
42122
|
-
|
|
42295
|
+
join50(thisDir, "..", "package.json"),
|
|
42296
|
+
join50(thisDir, "..", "..", "package.json"),
|
|
42297
|
+
join50(thisDir, "..", "..", "..", "package.json")
|
|
42123
42298
|
];
|
|
42124
42299
|
for (const pkgPath of candidates) {
|
|
42125
|
-
if (
|
|
42300
|
+
if (existsSync39(pkgPath)) {
|
|
42126
42301
|
const pkg = require2(pkgPath);
|
|
42127
42302
|
if (pkg.name === "open-agents-ai" || pkg.name === "@open-agents/cli") {
|
|
42128
42303
|
return pkg.version ?? "0.0.0";
|
|
@@ -42328,15 +42503,15 @@ Use task_status("${taskId}") or task_output("${taskId}") to check progress.`
|
|
|
42328
42503
|
function gatherMemorySnippets(root) {
|
|
42329
42504
|
const snippets = [];
|
|
42330
42505
|
const dirs = [
|
|
42331
|
-
|
|
42332
|
-
|
|
42506
|
+
join50(root, ".oa", "memory"),
|
|
42507
|
+
join50(root, ".open-agents", "memory")
|
|
42333
42508
|
];
|
|
42334
42509
|
for (const dir of dirs) {
|
|
42335
|
-
if (!
|
|
42510
|
+
if (!existsSync39(dir))
|
|
42336
42511
|
continue;
|
|
42337
42512
|
try {
|
|
42338
42513
|
for (const f of readdirSync14(dir).filter((f2) => f2.endsWith(".json"))) {
|
|
42339
|
-
const data = JSON.parse(
|
|
42514
|
+
const data = JSON.parse(readFileSync29(join50(dir, f), "utf-8"));
|
|
42340
42515
|
for (const val of Object.values(data)) {
|
|
42341
42516
|
const v = typeof val === "object" && val !== null && "value" in val ? String(val.value) : String(val);
|
|
42342
42517
|
if (v.length > 10)
|
|
@@ -42926,48 +43101,14 @@ async function startInteractive(config, repoPath) {
|
|
|
42926
43101
|
setEmojisEnabled(savedSettings.emojis);
|
|
42927
43102
|
if (savedSettings.colors !== void 0)
|
|
42928
43103
|
setColorsEnabled(savedSettings.colors);
|
|
42929
|
-
if (!isResumed) {
|
|
42930
|
-
const needsSetup =
|
|
42931
|
-
if (needsSetup
|
|
43104
|
+
if (!isResumed && isFirstRun() && config.backendType === "ollama") {
|
|
43105
|
+
const needsSetup = !await isModelAvailable(config);
|
|
43106
|
+
if (needsSetup) {
|
|
42932
43107
|
const setupModel = await runSetupWizard(config);
|
|
42933
43108
|
const freshConfig = loadConfig();
|
|
42934
43109
|
config = { ...config, ...freshConfig, model: setupModel ?? freshConfig.model };
|
|
42935
43110
|
}
|
|
42936
43111
|
}
|
|
42937
|
-
if (config.backendType === "ollama" && !config.model.startsWith("open-agents-")) {
|
|
42938
|
-
try {
|
|
42939
|
-
const expandResult = await ensureExpandedContext(config.model, config.backendUrl);
|
|
42940
|
-
if (expandResult.created) {
|
|
42941
|
-
renderInfo(`Created expanded context model: ${expandResult.model} (${expandResult.contextLabel}, ${expandResult.numCtx} tokens)`);
|
|
42942
|
-
config = { ...config, model: expandResult.model };
|
|
42943
|
-
} else if (expandResult.model !== config.model) {
|
|
42944
|
-
renderInfo(`Using expanded context model: ${expandResult.model} (${expandResult.contextLabel})`);
|
|
42945
|
-
config = { ...config, model: expandResult.model };
|
|
42946
|
-
}
|
|
42947
|
-
} catch {
|
|
42948
|
-
}
|
|
42949
|
-
}
|
|
42950
|
-
if (!isResumed) {
|
|
42951
|
-
try {
|
|
42952
|
-
const baseUrl = normalizeBaseUrl(config.backendUrl);
|
|
42953
|
-
const provider2 = detectProvider(config.backendUrl);
|
|
42954
|
-
const healthUrl = `${baseUrl}${provider2.modelsPath}`;
|
|
42955
|
-
const headers = {};
|
|
42956
|
-
if (config.apiKey) {
|
|
42957
|
-
headers["Authorization"] = `Bearer ${config.apiKey}`;
|
|
42958
|
-
}
|
|
42959
|
-
const resp = await fetch(healthUrl, { headers, signal: AbortSignal.timeout(1e4) });
|
|
42960
|
-
if (!resp.ok)
|
|
42961
|
-
throw new Error(`HTTP ${resp.status}`);
|
|
42962
|
-
} catch {
|
|
42963
|
-
const provider2 = detectProvider(config.backendUrl);
|
|
42964
|
-
renderWarning(`Cannot reach ${provider2.label} at ${config.backendUrl}`);
|
|
42965
|
-
if (provider2.id === "ollama") {
|
|
42966
|
-
renderInfo("Use /endpoint http://127.0.0.1:11434 to auto-install & start Ollama.");
|
|
42967
|
-
}
|
|
42968
|
-
renderInfo("Use /endpoint to configure a different backend. Starting anyway...");
|
|
42969
|
-
}
|
|
42970
|
-
}
|
|
42971
43112
|
let carouselPhrases = null;
|
|
42972
43113
|
try {
|
|
42973
43114
|
carouselPhrases = loadCachedDescriptors(repoRoot) ?? generateDescriptors(repoRoot);
|
|
@@ -43102,7 +43243,7 @@ async function startInteractive(config, repoPath) {
|
|
|
43102
43243
|
let exposeGateway = null;
|
|
43103
43244
|
let peerMesh = null;
|
|
43104
43245
|
let inferenceRouter = null;
|
|
43105
|
-
const secretVault = new SecretVault(
|
|
43246
|
+
const secretVault = new SecretVault(join50(repoRoot, ".oa", "vault.enc"));
|
|
43106
43247
|
let adminSessionKey = null;
|
|
43107
43248
|
const callSubAgents = /* @__PURE__ */ new Map();
|
|
43108
43249
|
const streamRenderer = new StreamRenderer();
|
|
@@ -43307,13 +43448,13 @@ Rationale: ${proposal.rationale}${provenanceNote}`;
|
|
|
43307
43448
|
const hits = allCompletions.filter((c3) => c3.toLowerCase().startsWith(lower));
|
|
43308
43449
|
return [hits, line];
|
|
43309
43450
|
}
|
|
43310
|
-
const HISTORY_DIR =
|
|
43311
|
-
const HISTORY_FILE =
|
|
43451
|
+
const HISTORY_DIR = join50(homedir13(), ".open-agents");
|
|
43452
|
+
const HISTORY_FILE = join50(HISTORY_DIR, "repl-history");
|
|
43312
43453
|
const MAX_HISTORY_LINES = 500;
|
|
43313
43454
|
let savedHistory = [];
|
|
43314
43455
|
try {
|
|
43315
|
-
if (
|
|
43316
|
-
const raw =
|
|
43456
|
+
if (existsSync39(HISTORY_FILE)) {
|
|
43457
|
+
const raw = readFileSync29(HISTORY_FILE, "utf8").trim();
|
|
43317
43458
|
if (raw)
|
|
43318
43459
|
savedHistory = raw.split("\n").reverse();
|
|
43319
43460
|
}
|
|
@@ -43335,9 +43476,9 @@ Rationale: ${proposal.rationale}${provenanceNote}`;
|
|
|
43335
43476
|
mkdirSync17(HISTORY_DIR, { recursive: true });
|
|
43336
43477
|
appendFileSync3(HISTORY_FILE, line + "\n", "utf8");
|
|
43337
43478
|
if (Math.random() < 0.02) {
|
|
43338
|
-
const all =
|
|
43479
|
+
const all = readFileSync29(HISTORY_FILE, "utf8").trim().split("\n");
|
|
43339
43480
|
if (all.length > MAX_HISTORY_LINES) {
|
|
43340
|
-
|
|
43481
|
+
writeFileSync16(HISTORY_FILE, all.slice(-MAX_HISTORY_LINES).join("\n") + "\n", "utf8");
|
|
43341
43482
|
}
|
|
43342
43483
|
}
|
|
43343
43484
|
} catch {
|
|
@@ -43358,8 +43499,11 @@ Rationale: ${proposal.rationale}${provenanceNote}`;
|
|
|
43358
43499
|
const termRows = process.stdout.rows ?? 24;
|
|
43359
43500
|
const scrollStart = carousel.reservedRows + 1;
|
|
43360
43501
|
const scrollEnd = Math.max(termRows - statusBar.reservedRows, scrollStart + 1);
|
|
43361
|
-
|
|
43362
|
-
|
|
43502
|
+
let clearBuf = "";
|
|
43503
|
+
for (let r = scrollStart; r <= scrollEnd; r++) {
|
|
43504
|
+
clearBuf += `\x1B[${r};1H\x1B[2K`;
|
|
43505
|
+
}
|
|
43506
|
+
process.stdout.write(clearBuf);
|
|
43363
43507
|
renderRichHeader({
|
|
43364
43508
|
model: currentConfig.model,
|
|
43365
43509
|
version,
|
|
@@ -43390,6 +43534,88 @@ Rationale: ${proposal.rationale}${provenanceNote}`;
|
|
|
43390
43534
|
fn();
|
|
43391
43535
|
}
|
|
43392
43536
|
}
|
|
43537
|
+
(async () => {
|
|
43538
|
+
if (!isResumed && !isFirstRun()) {
|
|
43539
|
+
try {
|
|
43540
|
+
const available = await isModelAvailable(config);
|
|
43541
|
+
if (!available && config.backendType === "ollama") {
|
|
43542
|
+
writeContent(() => {
|
|
43543
|
+
renderWarning(`Model "${config.model}" not available. Use /model to pick one.`);
|
|
43544
|
+
});
|
|
43545
|
+
}
|
|
43546
|
+
} catch {
|
|
43547
|
+
}
|
|
43548
|
+
}
|
|
43549
|
+
if (config.backendType === "ollama" && !config.model.startsWith("open-agents-")) {
|
|
43550
|
+
try {
|
|
43551
|
+
const expandResult = await ensureExpandedContext(config.model, config.backendUrl);
|
|
43552
|
+
if (expandResult.created) {
|
|
43553
|
+
config = { ...config, model: expandResult.model };
|
|
43554
|
+
currentConfig = { ...currentConfig, model: expandResult.model };
|
|
43555
|
+
statusBar.setModelName(expandResult.model);
|
|
43556
|
+
writeContent(() => renderInfo(`Created expanded context model: ${expandResult.model} (${expandResult.contextLabel}, ${expandResult.numCtx} tokens)`));
|
|
43557
|
+
} else if (expandResult.model !== config.model) {
|
|
43558
|
+
config = { ...config, model: expandResult.model };
|
|
43559
|
+
currentConfig = { ...currentConfig, model: expandResult.model };
|
|
43560
|
+
statusBar.setModelName(expandResult.model);
|
|
43561
|
+
writeContent(() => renderInfo(`Using expanded context model: ${expandResult.model} (${expandResult.contextLabel})`));
|
|
43562
|
+
}
|
|
43563
|
+
} catch {
|
|
43564
|
+
}
|
|
43565
|
+
}
|
|
43566
|
+
if (!isResumed) {
|
|
43567
|
+
try {
|
|
43568
|
+
const baseUrl = normalizeBaseUrl(config.backendUrl);
|
|
43569
|
+
const prov = detectProvider(config.backendUrl);
|
|
43570
|
+
const healthUrl = `${baseUrl}${prov.modelsPath}`;
|
|
43571
|
+
const headers = {};
|
|
43572
|
+
if (config.apiKey)
|
|
43573
|
+
headers["Authorization"] = `Bearer ${config.apiKey}`;
|
|
43574
|
+
const resp = await fetch(healthUrl, { headers, signal: AbortSignal.timeout(1e4) });
|
|
43575
|
+
if (!resp.ok)
|
|
43576
|
+
throw new Error(`HTTP ${resp.status}`);
|
|
43577
|
+
} catch {
|
|
43578
|
+
const prov = detectProvider(config.backendUrl);
|
|
43579
|
+
writeContent(() => {
|
|
43580
|
+
renderWarning(`Cannot reach ${prov.label} at ${config.backendUrl}`);
|
|
43581
|
+
if (prov.id === "ollama") {
|
|
43582
|
+
renderInfo("Use /endpoint http://127.0.0.1:11434 to auto-install & start Ollama.");
|
|
43583
|
+
}
|
|
43584
|
+
renderInfo("Use /endpoint to configure a different backend.");
|
|
43585
|
+
});
|
|
43586
|
+
}
|
|
43587
|
+
}
|
|
43588
|
+
try {
|
|
43589
|
+
const oaDir = join50(repoRoot, ".oa");
|
|
43590
|
+
const reconnected = await ExposeGateway.checkAndReconnect(oaDir, {
|
|
43591
|
+
onInfo: (msg) => writeContent(() => renderInfo(msg)),
|
|
43592
|
+
onError: (msg) => writeContent(() => renderWarning(msg))
|
|
43593
|
+
});
|
|
43594
|
+
if (reconnected) {
|
|
43595
|
+
exposeGateway = reconnected;
|
|
43596
|
+
reconnected.on("stats", (stats) => {
|
|
43597
|
+
statusBar.setExposeStatus({
|
|
43598
|
+
status: stats.status,
|
|
43599
|
+
totalRequests: stats.totalRequests,
|
|
43600
|
+
activeConnections: stats.activeConnections,
|
|
43601
|
+
modelUsage: stats.modelUsage
|
|
43602
|
+
});
|
|
43603
|
+
});
|
|
43604
|
+
writeContent(() => {
|
|
43605
|
+
renderInfo(`Reconnected to existing expose tunnel: ${reconnected.tunnelUrl}`);
|
|
43606
|
+
});
|
|
43607
|
+
}
|
|
43608
|
+
} catch {
|
|
43609
|
+
}
|
|
43610
|
+
try {
|
|
43611
|
+
const isRemote = !currentConfig.backendUrl.includes("127.0.0.1") && !currentConfig.backendUrl.includes("localhost");
|
|
43612
|
+
if (isRemote) {
|
|
43613
|
+
statusBar.startRemoteMetricsPolling(currentConfig.backendUrl, currentConfig.apiKey);
|
|
43614
|
+
}
|
|
43615
|
+
} catch {
|
|
43616
|
+
}
|
|
43617
|
+
})().catch(() => {
|
|
43618
|
+
});
|
|
43393
43619
|
function handleSudoRequest(_command) {
|
|
43394
43620
|
if (sudoPromptPending)
|
|
43395
43621
|
return;
|
|
@@ -44021,7 +44247,7 @@ Respond concisely and safely. Remember: you are talking to the general public.`;
|
|
|
44021
44247
|
kind = "custom";
|
|
44022
44248
|
targetUrl = kindOrUrl.includes("://") ? kindOrUrl : `http://${kindOrUrl}`;
|
|
44023
44249
|
}
|
|
44024
|
-
exposeGateway = new ExposeGateway({ kind, targetUrl, authKey });
|
|
44250
|
+
exposeGateway = new ExposeGateway({ kind, targetUrl, authKey, stateDir: join50(repoRoot, ".oa") });
|
|
44025
44251
|
exposeGateway.on("stats", (stats) => {
|
|
44026
44252
|
statusBar.setExposeStatus({
|
|
44027
44253
|
status: stats.status,
|
|
@@ -44208,8 +44434,8 @@ Respond concisely and safely. Remember: you are talking to the general public.`;
|
|
|
44208
44434
|
return true;
|
|
44209
44435
|
},
|
|
44210
44436
|
destroyProject() {
|
|
44211
|
-
const oaPath =
|
|
44212
|
-
if (
|
|
44437
|
+
const oaPath = join50(repoRoot, OA_DIR);
|
|
44438
|
+
if (existsSync39(oaPath)) {
|
|
44213
44439
|
try {
|
|
44214
44440
|
rmSync2(oaPath, { recursive: true, force: true });
|
|
44215
44441
|
writeContent(() => renderInfo(`Removed ${OA_DIR}/ directory.`));
|
|
@@ -44540,13 +44766,13 @@ Execute this skill now. Follow the behavioral guidance above.`;
|
|
|
44540
44766
|
}
|
|
44541
44767
|
}
|
|
44542
44768
|
const cleanPath = input.replace(/^['"]|['"]$/g, "").trim();
|
|
44543
|
-
const isImage = isImagePath(cleanPath) &&
|
|
44544
|
-
const isMedia = !isImage && isTranscribablePath(cleanPath) &&
|
|
44769
|
+
const isImage = isImagePath(cleanPath) && existsSync39(resolve28(repoRoot, cleanPath));
|
|
44770
|
+
const isMedia = !isImage && isTranscribablePath(cleanPath) && existsSync39(resolve28(repoRoot, cleanPath));
|
|
44545
44771
|
if (activeTask) {
|
|
44546
44772
|
if (isImage) {
|
|
44547
44773
|
try {
|
|
44548
44774
|
const imgPath = resolve28(repoRoot, cleanPath);
|
|
44549
|
-
const imgBuffer =
|
|
44775
|
+
const imgBuffer = readFileSync29(imgPath);
|
|
44550
44776
|
const base64 = imgBuffer.toString("base64");
|
|
44551
44777
|
const ext = extname9(cleanPath).toLowerCase();
|
|
44552
44778
|
const mime = ext === ".png" ? "image/png" : ext === ".gif" ? "image/gif" : ext === ".webp" ? "image/webp" : "image/jpeg";
|
|
@@ -44793,8 +45019,8 @@ NEW TASK: ${fullInput}`;
|
|
|
44793
45019
|
try {
|
|
44794
45020
|
const updateInfo = await checkForUpdate(version);
|
|
44795
45021
|
if (updateInfo) {
|
|
44796
|
-
const { exec:
|
|
44797
|
-
|
|
45022
|
+
const { exec: exec3 } = await import("node:child_process");
|
|
45023
|
+
exec3(`npm install -g open-agents-ai@latest --prefer-online`, { timeout: 18e4 }, (err) => {
|
|
44798
45024
|
if (!err) {
|
|
44799
45025
|
writeContent(() => renderInfo(`Updated to v${updateInfo.latestVersion} in background. Takes effect next session.`));
|
|
44800
45026
|
}
|
|
@@ -44898,10 +45124,6 @@ Rationale: ${proposal.rationale}${provenanceNote}`;
|
|
|
44898
45124
|
showPrompt();
|
|
44899
45125
|
}
|
|
44900
45126
|
rl.on("close", () => {
|
|
44901
|
-
if (exposeGateway?.isActive) {
|
|
44902
|
-
exposeGateway.stop().catch(() => {
|
|
44903
|
-
});
|
|
44904
|
-
}
|
|
44905
45127
|
if (peerMesh) {
|
|
44906
45128
|
peerMesh.stop().catch(() => {
|
|
44907
45129
|
});
|
|
@@ -44992,7 +45214,7 @@ async function runWithTUI(task, config, repoPath) {
|
|
|
44992
45214
|
}
|
|
44993
45215
|
var taskManager;
|
|
44994
45216
|
var init_interactive = __esm({
|
|
44995
|
-
"
|
|
45217
|
+
"packages/cli/dist/tui/interactive.js"() {
|
|
44996
45218
|
"use strict";
|
|
44997
45219
|
init_dist5();
|
|
44998
45220
|
init_dist5();
|
|
@@ -45029,7 +45251,7 @@ var init_interactive = __esm({
|
|
|
45029
45251
|
}
|
|
45030
45252
|
});
|
|
45031
45253
|
|
|
45032
|
-
//
|
|
45254
|
+
// packages/cli/dist/commands/run.js
|
|
45033
45255
|
var run_exports = {};
|
|
45034
45256
|
__export(run_exports, {
|
|
45035
45257
|
runCommand: () => runCommand
|
|
@@ -45049,21 +45271,21 @@ async function runCommand(opts, config) {
|
|
|
45049
45271
|
}
|
|
45050
45272
|
}
|
|
45051
45273
|
var init_run = __esm({
|
|
45052
|
-
"
|
|
45274
|
+
"packages/cli/dist/commands/run.js"() {
|
|
45053
45275
|
"use strict";
|
|
45054
45276
|
init_interactive();
|
|
45055
45277
|
}
|
|
45056
45278
|
});
|
|
45057
45279
|
|
|
45058
|
-
//
|
|
45280
|
+
// packages/indexer/dist/codebase-indexer.js
|
|
45059
45281
|
import { glob } from "glob";
|
|
45060
45282
|
import ignore from "ignore";
|
|
45061
45283
|
import { readFile as readFile16, stat as stat4 } from "node:fs/promises";
|
|
45062
45284
|
import { createHash as createHash4 } from "node:crypto";
|
|
45063
|
-
import { join as
|
|
45285
|
+
import { join as join51, relative as relative3, extname as extname10, basename as basename15 } from "node:path";
|
|
45064
45286
|
var DEFAULT_EXCLUDE, LANGUAGE_MAP, CodebaseIndexer;
|
|
45065
45287
|
var init_codebase_indexer = __esm({
|
|
45066
|
-
"
|
|
45288
|
+
"packages/indexer/dist/codebase-indexer.js"() {
|
|
45067
45289
|
"use strict";
|
|
45068
45290
|
DEFAULT_EXCLUDE = [
|
|
45069
45291
|
"node_modules",
|
|
@@ -45104,7 +45326,7 @@ var init_codebase_indexer = __esm({
|
|
|
45104
45326
|
const ig = ignore.default();
|
|
45105
45327
|
if (this.config.respectGitignore) {
|
|
45106
45328
|
try {
|
|
45107
|
-
const gitignoreContent = await readFile16(
|
|
45329
|
+
const gitignoreContent = await readFile16(join51(this.config.rootDir, ".gitignore"), "utf-8");
|
|
45108
45330
|
ig.add(gitignoreContent);
|
|
45109
45331
|
} catch {
|
|
45110
45332
|
}
|
|
@@ -45119,7 +45341,7 @@ var init_codebase_indexer = __esm({
|
|
|
45119
45341
|
for (const relativePath of files) {
|
|
45120
45342
|
if (ig.ignores(relativePath))
|
|
45121
45343
|
continue;
|
|
45122
|
-
const fullPath =
|
|
45344
|
+
const fullPath = join51(this.config.rootDir, relativePath);
|
|
45123
45345
|
try {
|
|
45124
45346
|
const fileStat = await stat4(fullPath);
|
|
45125
45347
|
if (fileStat.size > this.config.maxFileSize)
|
|
@@ -45165,7 +45387,7 @@ var init_codebase_indexer = __esm({
|
|
|
45165
45387
|
if (!child) {
|
|
45166
45388
|
child = {
|
|
45167
45389
|
name: part,
|
|
45168
|
-
path:
|
|
45390
|
+
path: join51(current.path, part),
|
|
45169
45391
|
type: "directory",
|
|
45170
45392
|
children: []
|
|
45171
45393
|
};
|
|
@@ -45181,25 +45403,25 @@ var init_codebase_indexer = __esm({
|
|
|
45181
45403
|
}
|
|
45182
45404
|
});
|
|
45183
45405
|
|
|
45184
|
-
//
|
|
45406
|
+
// packages/indexer/dist/repoScanner.js
|
|
45185
45407
|
import ignore2 from "ignore";
|
|
45186
45408
|
var init_repoScanner = __esm({
|
|
45187
|
-
"
|
|
45409
|
+
"packages/indexer/dist/repoScanner.js"() {
|
|
45188
45410
|
"use strict";
|
|
45189
45411
|
}
|
|
45190
45412
|
});
|
|
45191
45413
|
|
|
45192
|
-
//
|
|
45414
|
+
// packages/indexer/dist/symbolExtractor.js
|
|
45193
45415
|
var init_symbolExtractor = __esm({
|
|
45194
|
-
"
|
|
45416
|
+
"packages/indexer/dist/symbolExtractor.js"() {
|
|
45195
45417
|
"use strict";
|
|
45196
45418
|
}
|
|
45197
45419
|
});
|
|
45198
45420
|
|
|
45199
|
-
//
|
|
45421
|
+
// packages/indexer/dist/graphBuilder.js
|
|
45200
45422
|
var TS_EXTENSIONS, JS_EXTENSIONS, ALL_EXTENSIONS;
|
|
45201
45423
|
var init_graphBuilder = __esm({
|
|
45202
|
-
"
|
|
45424
|
+
"packages/indexer/dist/graphBuilder.js"() {
|
|
45203
45425
|
"use strict";
|
|
45204
45426
|
TS_EXTENSIONS = [".ts", ".tsx", ".mts", ".cts"];
|
|
45205
45427
|
JS_EXTENSIONS = [".js", ".jsx", ".mjs", ".cjs"];
|
|
@@ -45207,30 +45429,30 @@ var init_graphBuilder = __esm({
|
|
|
45207
45429
|
}
|
|
45208
45430
|
});
|
|
45209
45431
|
|
|
45210
|
-
//
|
|
45432
|
+
// packages/indexer/dist/fileSummarizer.js
|
|
45211
45433
|
var init_fileSummarizer = __esm({
|
|
45212
|
-
"
|
|
45434
|
+
"packages/indexer/dist/fileSummarizer.js"() {
|
|
45213
45435
|
"use strict";
|
|
45214
45436
|
}
|
|
45215
45437
|
});
|
|
45216
45438
|
|
|
45217
|
-
//
|
|
45439
|
+
// packages/indexer/dist/embeddings.js
|
|
45218
45440
|
var init_embeddings = __esm({
|
|
45219
|
-
"
|
|
45441
|
+
"packages/indexer/dist/embeddings.js"() {
|
|
45220
45442
|
"use strict";
|
|
45221
45443
|
}
|
|
45222
45444
|
});
|
|
45223
45445
|
|
|
45224
|
-
//
|
|
45446
|
+
// packages/indexer/dist/ollamaEmbeddings.js
|
|
45225
45447
|
var init_ollamaEmbeddings = __esm({
|
|
45226
|
-
"
|
|
45448
|
+
"packages/indexer/dist/ollamaEmbeddings.js"() {
|
|
45227
45449
|
"use strict";
|
|
45228
45450
|
}
|
|
45229
45451
|
});
|
|
45230
45452
|
|
|
45231
|
-
//
|
|
45453
|
+
// packages/indexer/dist/index.js
|
|
45232
45454
|
var init_dist8 = __esm({
|
|
45233
|
-
"
|
|
45455
|
+
"packages/indexer/dist/index.js"() {
|
|
45234
45456
|
"use strict";
|
|
45235
45457
|
init_codebase_indexer();
|
|
45236
45458
|
init_repoScanner();
|
|
@@ -45242,19 +45464,19 @@ var init_dist8 = __esm({
|
|
|
45242
45464
|
}
|
|
45243
45465
|
});
|
|
45244
45466
|
|
|
45245
|
-
//
|
|
45467
|
+
// packages/cli/dist/commands/index-repo.js
|
|
45246
45468
|
var index_repo_exports = {};
|
|
45247
45469
|
__export(index_repo_exports, {
|
|
45248
45470
|
indexRepoCommand: () => indexRepoCommand
|
|
45249
45471
|
});
|
|
45250
45472
|
import { resolve as resolve29 } from "node:path";
|
|
45251
|
-
import { existsSync as
|
|
45473
|
+
import { existsSync as existsSync40, statSync as statSync11 } from "node:fs";
|
|
45252
45474
|
import { cwd as cwd2 } from "node:process";
|
|
45253
45475
|
async function indexRepoCommand(opts, _config) {
|
|
45254
45476
|
const repoRoot = resolve29(opts.repoPath ?? cwd2());
|
|
45255
45477
|
printHeader("Index Repository");
|
|
45256
45478
|
printInfo(`Indexing: ${repoRoot}`);
|
|
45257
|
-
if (!
|
|
45479
|
+
if (!existsSync40(repoRoot)) {
|
|
45258
45480
|
printError(`Path does not exist: ${repoRoot}`);
|
|
45259
45481
|
process.exit(1);
|
|
45260
45482
|
}
|
|
@@ -45335,7 +45557,7 @@ async function indexRepoCommand(opts, _config) {
|
|
|
45335
45557
|
printSuccess("Repository indexed successfully");
|
|
45336
45558
|
}
|
|
45337
45559
|
var init_index_repo = __esm({
|
|
45338
|
-
"
|
|
45560
|
+
"packages/cli/dist/commands/index-repo.js"() {
|
|
45339
45561
|
"use strict";
|
|
45340
45562
|
init_dist8();
|
|
45341
45563
|
init_spinner();
|
|
@@ -45343,7 +45565,7 @@ var init_index_repo = __esm({
|
|
|
45343
45565
|
}
|
|
45344
45566
|
});
|
|
45345
45567
|
|
|
45346
|
-
//
|
|
45568
|
+
// packages/cli/dist/commands/status.js
|
|
45347
45569
|
var status_exports = {};
|
|
45348
45570
|
__export(status_exports, {
|
|
45349
45571
|
statusCommand: () => statusCommand
|
|
@@ -45493,7 +45715,7 @@ async function statusVllm(opts, config) {
|
|
|
45493
45715
|
printSuccess("vLLM backend is operational");
|
|
45494
45716
|
}
|
|
45495
45717
|
var init_status = __esm({
|
|
45496
|
-
"
|
|
45718
|
+
"packages/cli/dist/commands/status.js"() {
|
|
45497
45719
|
"use strict";
|
|
45498
45720
|
init_dist();
|
|
45499
45721
|
init_spinner();
|
|
@@ -45501,12 +45723,12 @@ var init_status = __esm({
|
|
|
45501
45723
|
}
|
|
45502
45724
|
});
|
|
45503
45725
|
|
|
45504
|
-
//
|
|
45726
|
+
// packages/cli/dist/commands/config.js
|
|
45505
45727
|
var config_exports = {};
|
|
45506
45728
|
__export(config_exports, {
|
|
45507
45729
|
configCommand: () => configCommand
|
|
45508
45730
|
});
|
|
45509
|
-
import { join as
|
|
45731
|
+
import { join as join52, resolve as resolve30 } from "node:path";
|
|
45510
45732
|
import { homedir as homedir14 } from "node:os";
|
|
45511
45733
|
import { cwd as cwd3 } from "node:process";
|
|
45512
45734
|
function redactIfSensitive(key, value) {
|
|
@@ -45589,7 +45811,7 @@ function handleShow(opts, config) {
|
|
|
45589
45811
|
}
|
|
45590
45812
|
}
|
|
45591
45813
|
printSection("Config File");
|
|
45592
|
-
printInfo(`~/.open-agents/config.json (${
|
|
45814
|
+
printInfo(`~/.open-agents/config.json (${join52(homedir14(), ".open-agents", "config.json")})`);
|
|
45593
45815
|
printSection("Priority Chain");
|
|
45594
45816
|
printInfo(" 1. CLI flags (--model, --backend-url, etc.)");
|
|
45595
45817
|
printInfo(" 2. Project .oa/settings.json (--local)");
|
|
@@ -45628,7 +45850,7 @@ function handleSet(opts, _config) {
|
|
|
45628
45850
|
const coerced = coerceForSettings(key, value);
|
|
45629
45851
|
saveProjectSettings(repoRoot, { [key]: coerced });
|
|
45630
45852
|
printSuccess(`Project override set: ${key} = ${redactIfSensitive(key, value)}`);
|
|
45631
|
-
printInfo(`Saved to ${
|
|
45853
|
+
printInfo(`Saved to ${join52(repoRoot, ".oa", "settings.json")}`);
|
|
45632
45854
|
printInfo("This override applies only when running in this workspace.");
|
|
45633
45855
|
} catch (err) {
|
|
45634
45856
|
printError(`Failed to save: ${err instanceof Error ? err.message : String(err)}`);
|
|
@@ -45676,7 +45898,7 @@ function handleKeys() {
|
|
|
45676
45898
|
}
|
|
45677
45899
|
var CONFIG_KEYS, SENSITIVE_KEYS, INT_KEYS, BOOL_KEYS, ENUM_KEYS;
|
|
45678
45900
|
var init_config3 = __esm({
|
|
45679
|
-
"
|
|
45901
|
+
"packages/cli/dist/commands/config.js"() {
|
|
45680
45902
|
"use strict";
|
|
45681
45903
|
init_config();
|
|
45682
45904
|
init_oa_directory();
|
|
@@ -45723,7 +45945,7 @@ var init_config3 = __esm({
|
|
|
45723
45945
|
}
|
|
45724
45946
|
});
|
|
45725
45947
|
|
|
45726
|
-
//
|
|
45948
|
+
// packages/cli/dist/commands/serve.js
|
|
45727
45949
|
var serve_exports = {};
|
|
45728
45950
|
__export(serve_exports, {
|
|
45729
45951
|
serveCommand: () => serveCommand
|
|
@@ -45873,21 +46095,21 @@ async function runVllmServer(args, verbose) {
|
|
|
45873
46095
|
});
|
|
45874
46096
|
}
|
|
45875
46097
|
var init_serve = __esm({
|
|
45876
|
-
"
|
|
46098
|
+
"packages/cli/dist/commands/serve.js"() {
|
|
45877
46099
|
"use strict";
|
|
45878
46100
|
init_dist();
|
|
45879
46101
|
init_output();
|
|
45880
46102
|
}
|
|
45881
46103
|
});
|
|
45882
46104
|
|
|
45883
|
-
//
|
|
46105
|
+
// packages/cli/dist/commands/eval.js
|
|
45884
46106
|
var eval_exports = {};
|
|
45885
46107
|
__export(eval_exports, {
|
|
45886
46108
|
evalCommand: () => evalCommand
|
|
45887
46109
|
});
|
|
45888
46110
|
import { tmpdir as tmpdir7 } from "node:os";
|
|
45889
|
-
import { mkdirSync as mkdirSync18, writeFileSync as
|
|
45890
|
-
import { join as
|
|
46111
|
+
import { mkdirSync as mkdirSync18, writeFileSync as writeFileSync17 } from "node:fs";
|
|
46112
|
+
import { join as join53 } from "node:path";
|
|
45891
46113
|
async function evalCommand(opts, config) {
|
|
45892
46114
|
const suiteName = opts.suite ?? "basic";
|
|
45893
46115
|
const suite = SUITES[suiteName];
|
|
@@ -46012,14 +46234,14 @@ async function evalCommand(opts, config) {
|
|
|
46012
46234
|
process.exit(failed > 0 ? 1 : 0);
|
|
46013
46235
|
}
|
|
46014
46236
|
function createTempEvalRepo() {
|
|
46015
|
-
const dir =
|
|
46237
|
+
const dir = join53(tmpdir7(), `open-agents-eval-${Date.now()}`);
|
|
46016
46238
|
mkdirSync18(dir, { recursive: true });
|
|
46017
|
-
|
|
46239
|
+
writeFileSync17(join53(dir, "package.json"), JSON.stringify({ name: "eval-repo", version: "0.0.0" }, null, 2) + "\n", "utf8");
|
|
46018
46240
|
return dir;
|
|
46019
46241
|
}
|
|
46020
46242
|
var BASIC_SUITE, FULL_SUITE, SUITES;
|
|
46021
46243
|
var init_eval = __esm({
|
|
46022
|
-
"
|
|
46244
|
+
"packages/cli/dist/commands/eval.js"() {
|
|
46023
46245
|
"use strict";
|
|
46024
46246
|
init_dist5();
|
|
46025
46247
|
init_dist();
|
|
@@ -46067,16 +46289,16 @@ var init_eval = __esm({
|
|
|
46067
46289
|
}
|
|
46068
46290
|
});
|
|
46069
46291
|
|
|
46070
|
-
//
|
|
46292
|
+
// packages/cli/dist/index.js
|
|
46071
46293
|
init_config();
|
|
46072
46294
|
init_output();
|
|
46073
46295
|
init_updater();
|
|
46074
46296
|
import { parseArgs as nodeParseArgs2 } from "node:util";
|
|
46075
46297
|
import { createRequire as createRequire3 } from "node:module";
|
|
46076
46298
|
import { fileURLToPath as fileURLToPath13 } from "node:url";
|
|
46077
|
-
import { dirname as dirname18, join as
|
|
46299
|
+
import { dirname as dirname18, join as join54 } from "node:path";
|
|
46078
46300
|
|
|
46079
|
-
//
|
|
46301
|
+
// packages/cli/dist/cli.js
|
|
46080
46302
|
import { createInterface } from "node:readline";
|
|
46081
46303
|
function createCli(options) {
|
|
46082
46304
|
return {
|
|
@@ -46115,10 +46337,10 @@ function createCli(options) {
|
|
|
46115
46337
|
};
|
|
46116
46338
|
}
|
|
46117
46339
|
|
|
46118
|
-
//
|
|
46340
|
+
// packages/cli/dist/args.js
|
|
46119
46341
|
import { parseArgs as nodeParseArgs } from "node:util";
|
|
46120
46342
|
|
|
46121
|
-
//
|
|
46343
|
+
// packages/cli/dist/types.js
|
|
46122
46344
|
var DEFAULT_OPTIONS = {
|
|
46123
46345
|
model: "qwen-2.5-coder-32b",
|
|
46124
46346
|
backendUrl: "http://localhost:8000/v1",
|
|
@@ -46128,7 +46350,7 @@ var DEFAULT_OPTIONS = {
|
|
|
46128
46350
|
verbose: false
|
|
46129
46351
|
};
|
|
46130
46352
|
|
|
46131
|
-
//
|
|
46353
|
+
// packages/cli/dist/args.js
|
|
46132
46354
|
function parseArgs(argv) {
|
|
46133
46355
|
const { values } = nodeParseArgs({
|
|
46134
46356
|
args: argv.slice(2),
|
|
@@ -46174,14 +46396,14 @@ Options:
|
|
|
46174
46396
|
console.log(help.trim());
|
|
46175
46397
|
}
|
|
46176
46398
|
|
|
46177
|
-
//
|
|
46399
|
+
// packages/cli/dist/index.js
|
|
46178
46400
|
init_config();
|
|
46179
46401
|
init_spinner();
|
|
46180
46402
|
init_output();
|
|
46181
46403
|
function getVersion4() {
|
|
46182
46404
|
try {
|
|
46183
46405
|
const require2 = createRequire3(import.meta.url);
|
|
46184
|
-
const pkgPath =
|
|
46406
|
+
const pkgPath = join54(dirname18(fileURLToPath13(import.meta.url)), "..", "package.json");
|
|
46185
46407
|
const pkg = require2(pkgPath);
|
|
46186
46408
|
return pkg.version;
|
|
46187
46409
|
} catch {
|