@proxysoul/soulforge 1.9.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +159 -656
- package/dist/index.js +26156 -16994
- package/dist/workers/intelligence.worker.js +24 -4
- package/dist/workers/io.worker.js +35 -10
- package/package.json +9 -8
|
@@ -22689,6 +22689,7 @@ var init_tree_sitter2 = __esm(() => {
|
|
|
22689
22689
|
tier = 3;
|
|
22690
22690
|
parser = null;
|
|
22691
22691
|
languages = new Map;
|
|
22692
|
+
failedLanguages = new Set;
|
|
22692
22693
|
initPromise = null;
|
|
22693
22694
|
cache = null;
|
|
22694
22695
|
treeCache = new Map;
|
|
@@ -23400,9 +23401,12 @@ var init_tree_sitter2 = __esm(() => {
|
|
|
23400
23401
|
return join4(BUNDLED_WASM_DIR, basename3);
|
|
23401
23402
|
}
|
|
23402
23403
|
async doInit() {
|
|
23403
|
-
|
|
23404
|
+
let wasmPath = this.resolveWasm("tree-sitter.wasm");
|
|
23404
23405
|
if (!existsSync2(wasmPath)) {
|
|
23405
|
-
|
|
23406
|
+
wasmPath = this.resolveWasm("web-tree-sitter.wasm");
|
|
23407
|
+
}
|
|
23408
|
+
if (!existsSync2(wasmPath)) {
|
|
23409
|
+
throw new Error(`tree-sitter.wasm not found in ${BUNDLED_WASM_DIR} or node_modules`);
|
|
23406
23410
|
}
|
|
23407
23411
|
const mod = await Promise.resolve().then(() => (init_tree_sitter(), exports_tree_sitter));
|
|
23408
23412
|
TSQueryClass = mod.Query;
|
|
@@ -23415,6 +23419,8 @@ var init_tree_sitter2 = __esm(() => {
|
|
|
23415
23419
|
const cached = this.languages.get(language);
|
|
23416
23420
|
if (cached)
|
|
23417
23421
|
return cached;
|
|
23422
|
+
if (this.failedLanguages.has(language))
|
|
23423
|
+
return null;
|
|
23418
23424
|
const wasmFile = GRAMMAR_FILES[language];
|
|
23419
23425
|
if (!wasmFile)
|
|
23420
23426
|
return null;
|
|
@@ -23422,9 +23428,15 @@ var init_tree_sitter2 = __esm(() => {
|
|
|
23422
23428
|
const mod = await Promise.resolve().then(() => (init_tree_sitter(), exports_tree_sitter));
|
|
23423
23429
|
const wasmPath = this.resolveWasm(`tree-sitter-wasms/out/${wasmFile}`);
|
|
23424
23430
|
const lang254 = await mod.Language.load(wasmPath);
|
|
23431
|
+
if (this.parser) {
|
|
23432
|
+
this.parser.setLanguage(lang254);
|
|
23433
|
+
const tree = this.parser.parse("# validate");
|
|
23434
|
+
tree?.delete();
|
|
23435
|
+
}
|
|
23425
23436
|
this.languages.set(language, lang254);
|
|
23426
23437
|
return lang254;
|
|
23427
23438
|
} catch {
|
|
23439
|
+
this.failedLanguages.add(language);
|
|
23428
23440
|
return null;
|
|
23429
23441
|
}
|
|
23430
23442
|
}
|
|
@@ -23444,7 +23456,14 @@ var init_tree_sitter2 = __esm(() => {
|
|
|
23444
23456
|
if (!lang254)
|
|
23445
23457
|
return null;
|
|
23446
23458
|
this.parser.setLanguage(lang254);
|
|
23447
|
-
|
|
23459
|
+
let tree;
|
|
23460
|
+
try {
|
|
23461
|
+
tree = this.parser.parse(content);
|
|
23462
|
+
} catch {
|
|
23463
|
+
this.failedLanguages.add(grammarKey);
|
|
23464
|
+
this.languages.delete(grammarKey);
|
|
23465
|
+
return null;
|
|
23466
|
+
}
|
|
23448
23467
|
if (!tree)
|
|
23449
23468
|
return null;
|
|
23450
23469
|
if (cached)
|
|
@@ -28146,7 +28165,8 @@ var init_config = __esm(() => {
|
|
|
28146
28165
|
args: []
|
|
28147
28166
|
},
|
|
28148
28167
|
theme: {
|
|
28149
|
-
name: "dark"
|
|
28168
|
+
name: "dark",
|
|
28169
|
+
transparent: true
|
|
28150
28170
|
},
|
|
28151
28171
|
nvimConfig: "default",
|
|
28152
28172
|
editorIntegration: {
|
|
@@ -575,6 +575,26 @@ var init_file_tree = __esm(() => {
|
|
|
575
575
|
IGNORED_DIRS = new Set(["node_modules", ".git", "dist", "build", ".next", ".nuxt", "target", "__pycache__", ".cache", ".soulforge", "coverage"]);
|
|
576
576
|
});
|
|
577
577
|
|
|
578
|
+
// src/core/spawn.ts
|
|
579
|
+
function buildSafeEnv() {
|
|
580
|
+
const env = {};
|
|
581
|
+
for (const [key, value] of Object.entries(process.env)) {
|
|
582
|
+
if (ENV_ALLOWLIST.has(key) || key.startsWith("LC_") || key.startsWith("XDG_")) {
|
|
583
|
+
env[key] = value;
|
|
584
|
+
} else if (!SECRET_ENV_PATTERN.test(key)) {
|
|
585
|
+
env[key] = value;
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
env.GIT_TERMINAL_PROMPT = "0";
|
|
589
|
+
return env;
|
|
590
|
+
}
|
|
591
|
+
var SECRET_ENV_PATTERN, ENV_ALLOWLIST, SAFE_STDIO;
|
|
592
|
+
var init_spawn = __esm(() => {
|
|
593
|
+
SECRET_ENV_PATTERN = /_API_KEY$|_SECRET$|_TOKEN$|_PASSWORD$|_CREDENTIAL$|_PRIVATE_KEY$/;
|
|
594
|
+
ENV_ALLOWLIST = new Set(["PATH", "HOME", "USER", "SHELL", "LANG", "TERM", "TERM_PROGRAM", "EDITOR", "VISUAL", "TMPDIR", "GOPATH", "GOROOT", "CARGO_HOME", "RUSTUP_HOME", "NVM_DIR", "BUN_INSTALL", "NODE_PATH", "PYTHONPATH", "VIRTUAL_ENV", "CONDA_PREFIX", "SSH_AUTH_SOCK", "GPG_TTY", "GIT_AUTHOR_NAME", "GIT_AUTHOR_EMAIL", "GIT_COMMITTER_NAME", "GIT_COMMITTER_EMAIL", "SOULFORGE_NO_REPOMAP", "NVIM_APPNAME", "KITTY_WINDOW_ID", "WEZTERM_PANE", "OTUI_TREE_SITTER_WORKER_PATH"]);
|
|
595
|
+
SAFE_STDIO = ["ignore", "pipe", "pipe"];
|
|
596
|
+
});
|
|
597
|
+
|
|
578
598
|
// node_modules/zustand/esm/vanilla.mjs
|
|
579
599
|
var createStoreImpl = (createState) => {
|
|
580
600
|
let state;
|
|
@@ -1660,11 +1680,10 @@ function run(args, cwd, timeout = 5000) {
|
|
|
1660
1680
|
const proc = spawn("git", args, {
|
|
1661
1681
|
cwd,
|
|
1662
1682
|
timeout,
|
|
1663
|
-
env:
|
|
1664
|
-
|
|
1665
|
-
}
|
|
1683
|
+
env: buildSafeEnv(),
|
|
1684
|
+
stdio: SAFE_STDIO
|
|
1666
1685
|
});
|
|
1667
|
-
proc.stdout
|
|
1686
|
+
proc.stdout?.on("data", (d) => chunks.push(d.toString()));
|
|
1668
1687
|
proc.on("close", (code) => resolve({
|
|
1669
1688
|
ok: code === 0,
|
|
1670
1689
|
stdout: chunks.join("")
|
|
@@ -1866,9 +1885,11 @@ function setCoAuthorEnabled(enabled) {
|
|
|
1866
1885
|
_coAuthorEnabled = enabled;
|
|
1867
1886
|
}
|
|
1868
1887
|
async function gitCommit(cwd, message, amend) {
|
|
1869
|
-
const
|
|
1888
|
+
const cleaned = message.replace(/\\n/g, `
|
|
1889
|
+
`);
|
|
1890
|
+
const fullMessage = _coAuthorEnabled ? `${cleaned}
|
|
1870
1891
|
|
|
1871
|
-
${CO_AUTHOR_LINE}` :
|
|
1892
|
+
${CO_AUTHOR_LINE}` : cleaned;
|
|
1872
1893
|
const args = amend ? ["commit", "--amend", "-m", fullMessage] : ["commit", "-m", fullMessage];
|
|
1873
1894
|
const {
|
|
1874
1895
|
ok,
|
|
@@ -2266,6 +2287,7 @@ async function buildGitContext(cwd) {
|
|
|
2266
2287
|
}
|
|
2267
2288
|
var encoder, NAMED_ESCAPES, CO_AUTHOR_LINE = "Co-Authored-By: SoulForge <soulforge@proxysoul.com>", _coAuthorEnabled = true;
|
|
2268
2289
|
var init_status = __esm(() => {
|
|
2290
|
+
init_spawn();
|
|
2269
2291
|
encoder = new TextEncoder;
|
|
2270
2292
|
NAMED_ESCAPES = {
|
|
2271
2293
|
n: `
|
|
@@ -20681,10 +20703,13 @@ function validateDownloadUrl(url2) {
|
|
|
20681
20703
|
message: `Invalid URL: ${url2}`
|
|
20682
20704
|
});
|
|
20683
20705
|
}
|
|
20706
|
+
if (parsed.protocol === "data:") {
|
|
20707
|
+
return;
|
|
20708
|
+
}
|
|
20684
20709
|
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
20685
20710
|
throw new DownloadError({
|
|
20686
20711
|
url: url2,
|
|
20687
|
-
message: `URL scheme must be http or
|
|
20712
|
+
message: `URL scheme must be http, https, or data, got ${parsed.protocol}`
|
|
20688
20713
|
});
|
|
20689
20714
|
}
|
|
20690
20715
|
const hostname3 = parsed.hostname;
|
|
@@ -21944,7 +21969,7 @@ var btoa2, atob2, name14 = "AI_DownloadError", marker15, symbol17, _a17, _b15, D
|
|
|
21944
21969
|
});
|
|
21945
21970
|
}
|
|
21946
21971
|
return () => `${prefix}${separator}${generator()}`;
|
|
21947
|
-
}, generateId, FETCH_FAILED_ERROR_MESSAGES, BUN_ERROR_CODES, VERSION = "4.0.
|
|
21972
|
+
}, generateId, FETCH_FAILED_ERROR_MESSAGES, BUN_ERROR_CODES, VERSION = "4.0.22", getOriginalFetch = () => globalThis.fetch, getFromApi = async ({
|
|
21948
21973
|
url: url2,
|
|
21949
21974
|
headers = {},
|
|
21950
21975
|
successfulResponseHandler,
|
|
@@ -23959,7 +23984,7 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
|
|
|
23959
23984
|
"ai-model-id": this.modelId
|
|
23960
23985
|
};
|
|
23961
23986
|
}
|
|
23962
|
-
}, providerMetadataEntrySchema2, gatewayVideoDataSchema, gatewayVideoWarningSchema, gatewayVideoEventSchema, parallelSearchInputSchema, parallelSearchOutputSchema, parallelSearchToolFactory, parallelSearch = (config2 = {}) => parallelSearchToolFactory(config2), perplexitySearchInputSchema, perplexitySearchOutputSchema, perplexitySearchToolFactory, perplexitySearch = (config2 = {}) => perplexitySearchToolFactory(config2), gatewayTools, VERSION2 = "3.0.
|
|
23987
|
+
}, providerMetadataEntrySchema2, gatewayVideoDataSchema, gatewayVideoWarningSchema, gatewayVideoEventSchema, parallelSearchInputSchema, parallelSearchOutputSchema, parallelSearchToolFactory, parallelSearch = (config2 = {}) => parallelSearchToolFactory(config2), perplexitySearchInputSchema, perplexitySearchOutputSchema, perplexitySearchToolFactory, perplexitySearch = (config2 = {}) => perplexitySearchToolFactory(config2), gatewayTools, VERSION2 = "3.0.88", AI_GATEWAY_PROTOCOL_VERSION = "0.0.1", gateway;
|
|
23963
23988
|
var init_dist4 = __esm(() => {
|
|
23964
23989
|
init_dist3();
|
|
23965
23990
|
init_dist();
|
|
@@ -28655,7 +28680,7 @@ var import_api, import_api2, __defProp2, __export2 = (target, all) => {
|
|
|
28655
28680
|
const bytes = typeof data === "string" ? convertBase64ToUint8Array(data) : data;
|
|
28656
28681
|
const id3Size = (bytes[6] & 127) << 21 | (bytes[7] & 127) << 14 | (bytes[8] & 127) << 7 | bytes[9] & 127;
|
|
28657
28682
|
return bytes.slice(id3Size + 10);
|
|
28658
|
-
}, VERSION3 = "6.0.
|
|
28683
|
+
}, VERSION3 = "6.0.146", download = async ({
|
|
28659
28684
|
url: url2,
|
|
28660
28685
|
maxBytes,
|
|
28661
28686
|
abortSignal
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@proxysoul/soulforge",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Graph-powered code intelligence — multi-agent coding with codebase-aware AI",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -54,23 +54,23 @@
|
|
|
54
54
|
"@types/babel__core": "7.20.5",
|
|
55
55
|
"@types/bun": "1.3.11",
|
|
56
56
|
"@types/linkify-it": "5.0.0",
|
|
57
|
-
"@types/node": "25.5.
|
|
57
|
+
"@types/node": "25.5.2",
|
|
58
58
|
"@types/react": "19.2.14",
|
|
59
59
|
"babel-plugin-react-compiler": "1.0.0",
|
|
60
60
|
"bun-types": "1.3.11",
|
|
61
61
|
"typescript": "6.0.2"
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@ai-sdk/anthropic": "3.0.
|
|
65
|
-
"@ai-sdk/google": "3.0.
|
|
66
|
-
"@ai-sdk/openai": "3.0.
|
|
67
|
-
"@ai-sdk/xai": "3.0.
|
|
64
|
+
"@ai-sdk/anthropic": "3.0.66",
|
|
65
|
+
"@ai-sdk/google": "3.0.58",
|
|
66
|
+
"@ai-sdk/openai": "3.0.50",
|
|
67
|
+
"@ai-sdk/xai": "3.0.77",
|
|
68
68
|
"@anthropic-ai/sdk": "0.82.0",
|
|
69
69
|
"@llmgateway/ai-sdk-provider": "3.5.0",
|
|
70
70
|
"@mozilla/readability": "0.6.0",
|
|
71
71
|
"@openrouter/ai-sdk-provider": "2.3.3",
|
|
72
|
-
"@opentui/react": "0.1.
|
|
73
|
-
"ai": "6.0.
|
|
72
|
+
"@opentui/react": "0.1.96",
|
|
73
|
+
"ai": "6.0.146",
|
|
74
74
|
"ghostty-opentui": "1.4.10",
|
|
75
75
|
"isbinaryfile": "6.0.0",
|
|
76
76
|
"linkedom": "0.18.12",
|
|
@@ -82,6 +82,7 @@
|
|
|
82
82
|
"strip-ansi": "7.2.0",
|
|
83
83
|
"tree-sitter-wasms": "0.1.13",
|
|
84
84
|
"ts-morph": "27.0.2",
|
|
85
|
+
"vercel-minimax-ai-provider": "^0.0.2",
|
|
85
86
|
"web-tree-sitter": "0.25.10",
|
|
86
87
|
"zod": "4.3.6",
|
|
87
88
|
"zustand": "5.0.12"
|