openfox 2.0.101 → 2.0.103
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/CHANGELOG.md +25 -0
- package/dist/CHANGELOG.md +25 -0
- package/dist/{chat-handler-YPWT4MAQ.js → chat-handler-IBFSBSGV.js} +22 -21
- package/dist/{chunk-O2PLNJIU.js → chunk-2EYTYXWN.js} +2 -2
- package/dist/{chunk-MRWR3SIT.js → chunk-4Z2ARCY3.js} +2 -2
- package/dist/{chunk-AY37NB76.js → chunk-5ZJYEINJ.js} +2 -2
- package/dist/{chunk-XTKLA4AK.js → chunk-73EV6QYX.js} +4 -4
- package/dist/{chunk-XLI6PDJG.js → chunk-7HIJP4PC.js} +2 -2
- package/dist/{chunk-W77HIJGH.js → chunk-AI27N57J.js} +3 -3
- package/dist/{chunk-VJILJ22N.js → chunk-BJDQPILB.js} +3 -3
- package/dist/{chunk-MO3GJIT3.js → chunk-DPRJYQ5U.js} +132 -43
- package/dist/{chunk-3LRYZ7R3.js → chunk-FQS7A5M4.js} +2 -2
- package/dist/{chunk-NWO6GRYE.js → chunk-JE7LW7Y6.js} +2 -1
- package/dist/{chunk-MBYXZ5V5.js → chunk-JL657X72.js} +5 -5
- package/dist/{chunk-C6QW2IDH.js → chunk-K6VVTE6C.js} +30 -28
- package/dist/{chunk-UIK6GA3P.js → chunk-KCED2X4H.js} +2 -2
- package/dist/{chunk-NLN5LPQ4.js → chunk-KKEBXFB3.js} +2 -2
- package/dist/{chunk-HAFRPV7I.js → chunk-KLK5N4OX.js} +3 -3
- package/dist/{chunk-KQPDU65K.js → chunk-MGKS2NG2.js} +3 -3
- package/dist/{chunk-TDHDLDGQ.js → chunk-MR7ZEGOF.js} +2 -2
- package/dist/{chunk-CFTT46KH.js → chunk-QL2G5UWE.js} +26 -24
- package/dist/{chunk-7GBFQ2PE.js → chunk-REQIAJTV.js} +245 -111
- package/dist/{chunk-ZIMGU5ZH.js → chunk-RZC6DAT2.js} +2 -2
- package/dist/chunk-SQYMFWY7.js +7 -0
- package/dist/chunk-W5FTCTGY.js +72 -0
- package/dist/{chunk-E2CSSHSI.js → chunk-W5RC44R6.js} +10 -10
- package/dist/{chunk-KNYPBXPW.js → chunk-WPCYFH6X.js} +4 -4
- package/dist/{chunk-UEOEA6BB.js → chunk-YZSBJUGC.js} +3 -2
- package/dist/{chunk-IXFEXEUL.js → chunk-Z753S3X7.js} +6 -6
- package/dist/{chunk-G5JFKTSR.js → chunk-ZLCPNTRT.js} +4 -4
- package/dist/cli/dev.js +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/{client-CFTJH6BY.js → client-Q7BHKOCD.js} +5 -5
- package/dist/{client-pure-DCEZBFKW.js → client-pure-ONSVWEG5.js} +2 -2
- package/dist/{compactor-B4V75Q3A.js → compactor-43P3LGDU.js} +11 -11
- package/dist/{dynamic-context-MA5BIJ52.js → dynamic-context-AMPVZXUU.js} +7 -7
- package/dist/{events-4THEZWVL.js → events-RCC32JOA.js} +6 -6
- package/dist/{folding-OYBO2NTH.js → folding-ZNUXPQUD.js} +4 -4
- package/dist/{http-client-U6DVFL7F.js → http-client-WGNBG7PC.js} +3 -3
- package/dist/{manager-53J5P4EZ.js → manager-HFGJLW7Q.js} +4 -4
- package/dist/model-overrides-DQDT5Y7R.js +21 -0
- package/dist/{orchestrator-DHBU7LRB.js → orchestrator-QDXKDLOW.js} +26 -25
- package/dist/package.json +1 -1
- package/dist/{path-security-6GYETPWN.js → path-security-SUFEIBTC.js} +7 -7
- package/dist/{platform-7KXP3VVA.js → platform-2RLL7RAE.js} +3 -3
- package/dist/{processor-RC3IBY2J.js → processor-YWNLWAZW.js} +21 -20
- package/dist/{provider-PEJ27FBM.js → provider-FX3QCGAF.js} +6 -6
- package/dist/{provider-manager-EJGPSLOZ.js → provider-manager-GLG6BA32.js} +6 -6
- package/dist/{registry-QEOTM3IG.js → registry-GBNLVWYQ.js} +3 -3
- package/dist/{serve-KM2RVX2U.js → serve-FE4UAXGE.js} +27 -26
- package/dist/server/index.d.ts +15 -0
- package/dist/server/index.js +26 -25
- package/dist/server-QGQGSHW6.js +47 -0
- package/dist/{service-2PW2V25M.js → service-CXWJQFOZ.js} +62 -20
- package/dist/{session-overrides-BQSE3V3F.js → session-overrides-MBGBX6TM.js} +5 -5
- package/dist/{sessions-AUDWMF55.js → sessions-FEIFYGH7.js} +4 -4
- package/dist/{settings-2WVGUPYV.js → settings-FT7HF7ZB.js} +2 -2
- package/dist/skill-defaults/browser/SKILL.md +8 -1
- package/dist/{tool-adapter-MOGEI6TP.js → tool-adapter-FEAHWU5C.js} +2 -2
- package/dist/{tools-X5FONL4Q.js → tools-M5DKWCJJ.js} +19 -16
- package/dist/{update-GHS75L7T.js → update-KMPQUPQT.js} +2 -2
- package/dist/web/assets/{index-BG5sD2ez.css → index-B0CNNl1k.css} +1 -1
- package/dist/web/assets/{index-CCBacuE6.js → index-FWViKQkM.js} +83 -83
- package/dist/web/index.html +2 -2
- package/dist/web/sw.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-UCNMVJXD.js +0 -7
- package/dist/server-ORYMG5HD.js +0 -46
|
@@ -21,37 +21,20 @@ import {
|
|
|
21
21
|
tokenFromPassword,
|
|
22
22
|
verifyPassword,
|
|
23
23
|
workflowExists
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-K6VVTE6C.js";
|
|
25
25
|
import {
|
|
26
26
|
openFolder
|
|
27
27
|
} from "./chunk-62QCBNPE.js";
|
|
28
28
|
import {
|
|
29
29
|
createToolRegistry,
|
|
30
30
|
devServerManager,
|
|
31
|
+
getBuiltInToolNames,
|
|
31
32
|
setMcpConfigMode,
|
|
32
33
|
setMcpConfigPath,
|
|
33
34
|
setMcpManagerForTools,
|
|
34
35
|
setMcpTools,
|
|
35
36
|
setNotifyMcpServersChanged
|
|
36
|
-
} from "./chunk-
|
|
37
|
-
import {
|
|
38
|
-
createMcpTools
|
|
39
|
-
} from "./chunk-NWO6GRYE.js";
|
|
40
|
-
import {
|
|
41
|
-
deleteWorkspace,
|
|
42
|
-
ensureWorkspace,
|
|
43
|
-
getCommitsBehind,
|
|
44
|
-
getGitBranch,
|
|
45
|
-
getGlobalDataDir,
|
|
46
|
-
getWorkspacesDir,
|
|
47
|
-
loadWorkspaceConfig,
|
|
48
|
-
resolveAndValidateSourceBranch,
|
|
49
|
-
runGit,
|
|
50
|
-
saveWorkspaceConfig,
|
|
51
|
-
validateRef,
|
|
52
|
-
validateWorkspaceName,
|
|
53
|
-
workspaceExists
|
|
54
|
-
} from "./chunk-D3SXT3BL.js";
|
|
37
|
+
} from "./chunk-DPRJYQ5U.js";
|
|
55
38
|
import {
|
|
56
39
|
deleteOwnedSkill,
|
|
57
40
|
deleteProjectSkill,
|
|
@@ -70,27 +53,34 @@ import {
|
|
|
70
53
|
setSkillEnabled,
|
|
71
54
|
skillExists,
|
|
72
55
|
updateOwnedSkill
|
|
73
|
-
} from "./chunk-
|
|
74
|
-
import {
|
|
75
|
-
getSessionDisabledServers,
|
|
76
|
-
setSessionDisabledServers
|
|
77
|
-
} from "./chunk-XLI6PDJG.js";
|
|
78
|
-
import {
|
|
79
|
-
createContextStateMessage
|
|
80
|
-
} from "./chunk-27SDWNKL.js";
|
|
81
|
-
import {
|
|
82
|
-
EventEmitter
|
|
83
|
-
} from "./chunk-EU3WWTFH.js";
|
|
84
|
-
import {
|
|
85
|
-
getProject,
|
|
86
|
-
getProjectByWorkdir,
|
|
87
|
-
updateProject
|
|
88
|
-
} from "./chunk-WWFH5GAR.js";
|
|
56
|
+
} from "./chunk-MGKS2NG2.js";
|
|
89
57
|
import {
|
|
90
58
|
ALWAYS_ALLOWED,
|
|
91
59
|
ALWAYS_ALLOWED_FOR_SUBAGENTS,
|
|
92
60
|
TOP_LEVEL_ONLY_TOOLS
|
|
93
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-4Z2ARCY3.js";
|
|
62
|
+
import {
|
|
63
|
+
createMcpTools
|
|
64
|
+
} from "./chunk-JE7LW7Y6.js";
|
|
65
|
+
import {
|
|
66
|
+
deleteWorkspace,
|
|
67
|
+
ensureWorkspace,
|
|
68
|
+
getCommitsBehind,
|
|
69
|
+
getGitBranch,
|
|
70
|
+
getGlobalDataDir,
|
|
71
|
+
getWorkspacesDir,
|
|
72
|
+
loadWorkspaceConfig,
|
|
73
|
+
resolveAndValidateSourceBranch,
|
|
74
|
+
runGit,
|
|
75
|
+
saveWorkspaceConfig,
|
|
76
|
+
validateRef,
|
|
77
|
+
validateWorkspaceName,
|
|
78
|
+
workspaceExists
|
|
79
|
+
} from "./chunk-D3SXT3BL.js";
|
|
80
|
+
import {
|
|
81
|
+
getSessionDisabledServers,
|
|
82
|
+
setSessionDisabledServers
|
|
83
|
+
} from "./chunk-7HIJP4PC.js";
|
|
94
84
|
import {
|
|
95
85
|
emitAssistantMessageStart,
|
|
96
86
|
emitContextState,
|
|
@@ -107,14 +97,31 @@ import {
|
|
|
107
97
|
getEventStore,
|
|
108
98
|
getSessionState,
|
|
109
99
|
initEventStore
|
|
110
|
-
} from "./chunk-
|
|
100
|
+
} from "./chunk-WPCYFH6X.js";
|
|
101
|
+
import {
|
|
102
|
+
createContextStateMessage
|
|
103
|
+
} from "./chunk-27SDWNKL.js";
|
|
104
|
+
import {
|
|
105
|
+
EventEmitter
|
|
106
|
+
} from "./chunk-EU3WWTFH.js";
|
|
111
107
|
import {
|
|
112
108
|
getPathSeparator,
|
|
113
109
|
isAbsolutePath
|
|
114
|
-
} from "./chunk-
|
|
110
|
+
} from "./chunk-KKEBXFB3.js";
|
|
111
|
+
import {
|
|
112
|
+
getAgentModelOverride,
|
|
113
|
+
getAgentModelOverrides,
|
|
114
|
+
resolveLLMClientForAgent,
|
|
115
|
+
setAgentModelOverride
|
|
116
|
+
} from "./chunk-W5FTCTGY.js";
|
|
117
|
+
import {
|
|
118
|
+
getProject,
|
|
119
|
+
getProjectByWorkdir,
|
|
120
|
+
updateProject
|
|
121
|
+
} from "./chunk-WWFH5GAR.js";
|
|
115
122
|
import {
|
|
116
123
|
VERSION
|
|
117
|
-
} from "./chunk-
|
|
124
|
+
} from "./chunk-SQYMFWY7.js";
|
|
118
125
|
import {
|
|
119
126
|
clearWorkflowExecution,
|
|
120
127
|
createSession,
|
|
@@ -134,7 +141,7 @@ import {
|
|
|
134
141
|
updateSessionRunning,
|
|
135
142
|
updateSessionWorkdir,
|
|
136
143
|
updateWorkflowExecutionStatus
|
|
137
|
-
} from "./chunk-
|
|
144
|
+
} from "./chunk-RZC6DAT2.js";
|
|
138
145
|
import {
|
|
139
146
|
agentExists,
|
|
140
147
|
deleteAgent,
|
|
@@ -157,13 +164,13 @@ import {
|
|
|
157
164
|
saveAgentToProject,
|
|
158
165
|
saveItemToDir,
|
|
159
166
|
setRuntimeConfig
|
|
160
|
-
} from "./chunk-
|
|
167
|
+
} from "./chunk-FQS7A5M4.js";
|
|
161
168
|
import {
|
|
162
169
|
createProviderManager,
|
|
163
170
|
detectModel,
|
|
164
171
|
getLlmStatus,
|
|
165
172
|
parseDefaultModelSelection
|
|
166
|
-
} from "./chunk-
|
|
173
|
+
} from "./chunk-AI27N57J.js";
|
|
167
174
|
import {
|
|
168
175
|
getModelProfile
|
|
169
176
|
} from "./chunk-V4IE7HJY.js";
|
|
@@ -176,12 +183,12 @@ import {
|
|
|
176
183
|
import {
|
|
177
184
|
SessionNotFoundError,
|
|
178
185
|
WorkspaceInUseError
|
|
179
|
-
} from "./chunk-
|
|
186
|
+
} from "./chunk-MR7ZEGOF.js";
|
|
180
187
|
import {
|
|
181
188
|
deleteSetting,
|
|
182
189
|
getSetting,
|
|
183
190
|
setSetting
|
|
184
|
-
} from "./chunk-
|
|
191
|
+
} from "./chunk-YZSBJUGC.js";
|
|
185
192
|
import {
|
|
186
193
|
initDatabase
|
|
187
194
|
} from "./chunk-GLF65XDS.js";
|
|
@@ -1725,7 +1732,30 @@ var DiagnosticSeverity = {
|
|
|
1725
1732
|
function hoverInfo(contents, range) {
|
|
1726
1733
|
return range ? { contents, range } : { contents };
|
|
1727
1734
|
}
|
|
1735
|
+
function withTimeout(promise, ms, label) {
|
|
1736
|
+
const outer = new Promise((resolve9, reject) => {
|
|
1737
|
+
const timer = setTimeout(() => {
|
|
1738
|
+
reject(new Error(`${label} timed out after ${ms}ms`));
|
|
1739
|
+
}, ms);
|
|
1740
|
+
promise.then(
|
|
1741
|
+
(val) => {
|
|
1742
|
+
clearTimeout(timer);
|
|
1743
|
+
resolve9(val);
|
|
1744
|
+
},
|
|
1745
|
+
(err) => {
|
|
1746
|
+
clearTimeout(timer);
|
|
1747
|
+
reject(err);
|
|
1748
|
+
}
|
|
1749
|
+
);
|
|
1750
|
+
promise.catch(() => {
|
|
1751
|
+
});
|
|
1752
|
+
});
|
|
1753
|
+
outer.catch(() => {
|
|
1754
|
+
});
|
|
1755
|
+
return outer;
|
|
1756
|
+
}
|
|
1728
1757
|
var DIAGNOSTIC_WAIT_MS = 2e3;
|
|
1758
|
+
var DEFAULT_INIT_TIMEOUT_MS = 5e3;
|
|
1729
1759
|
var SYMBOL_KIND_NAMES = {
|
|
1730
1760
|
1: "File",
|
|
1731
1761
|
2: "Module",
|
|
@@ -1788,10 +1818,12 @@ var LspServer = class {
|
|
|
1788
1818
|
// resolving the waiter so all waves are captured.
|
|
1789
1819
|
pendingDiagnosticDebounce = /* @__PURE__ */ new Map();
|
|
1790
1820
|
commandPath;
|
|
1791
|
-
|
|
1821
|
+
initTimeoutMs;
|
|
1822
|
+
constructor(config3, workdir, commandPath, initTimeoutMs) {
|
|
1792
1823
|
this.config = config3;
|
|
1793
1824
|
this.workdir = workdir;
|
|
1794
1825
|
this.commandPath = commandPath ?? config3.serverCommand;
|
|
1826
|
+
this.initTimeoutMs = initTimeoutMs ?? DEFAULT_INIT_TIMEOUT_MS;
|
|
1795
1827
|
}
|
|
1796
1828
|
// ============================================================================
|
|
1797
1829
|
// Lifecycle
|
|
@@ -1815,10 +1847,23 @@ var LspServer = class {
|
|
|
1815
1847
|
windowsHide: true,
|
|
1816
1848
|
shell: needsShell
|
|
1817
1849
|
});
|
|
1850
|
+
this.process.on("exit", (code) => {
|
|
1851
|
+
if (this.state === "running" || this.state === "starting") {
|
|
1852
|
+
logger.warn("LSP server exited unexpectedly", {
|
|
1853
|
+
language: this.config.id,
|
|
1854
|
+
code,
|
|
1855
|
+
state: this.state
|
|
1856
|
+
});
|
|
1857
|
+
this.handleProcessExit();
|
|
1858
|
+
}
|
|
1859
|
+
});
|
|
1818
1860
|
await new Promise((resolve9, reject) => {
|
|
1819
1861
|
this.process.once("spawn", resolve9);
|
|
1820
1862
|
this.process.once("error", reject);
|
|
1821
1863
|
});
|
|
1864
|
+
if (this.state !== "starting") {
|
|
1865
|
+
throw new Error(`LSP server process exited during startup (state: ${this.state})`);
|
|
1866
|
+
}
|
|
1822
1867
|
if (!this.process.stdin || !this.process.stdout) {
|
|
1823
1868
|
throw new Error("Failed to get stdio streams from language server process");
|
|
1824
1869
|
}
|
|
@@ -1838,12 +1883,6 @@ var LspServer = class {
|
|
|
1838
1883
|
logger.error("LSP server process error", { language: this.config.id, error: err.message });
|
|
1839
1884
|
this.handleProcessExit();
|
|
1840
1885
|
});
|
|
1841
|
-
this.process.on("exit", (code) => {
|
|
1842
|
-
if (this.state === "running") {
|
|
1843
|
-
logger.warn("LSP server exited unexpectedly", { language: this.config.id, code });
|
|
1844
|
-
this.handleProcessExit();
|
|
1845
|
-
}
|
|
1846
|
-
});
|
|
1847
1886
|
this.process.stderr?.on("data", (data) => {
|
|
1848
1887
|
const msg = data.toString().trim();
|
|
1849
1888
|
if (msg) {
|
|
@@ -1871,7 +1910,11 @@ var LspServer = class {
|
|
|
1871
1910
|
},
|
|
1872
1911
|
initializationOptions: this.config.initOptions
|
|
1873
1912
|
};
|
|
1874
|
-
const result = await
|
|
1913
|
+
const result = await withTimeout(
|
|
1914
|
+
this.connection.sendRequest(LSP.initialize, initParams),
|
|
1915
|
+
this.initTimeoutMs,
|
|
1916
|
+
"LSP initialize"
|
|
1917
|
+
);
|
|
1875
1918
|
logger.debug("LSP server initialized", {
|
|
1876
1919
|
language: this.config.id,
|
|
1877
1920
|
capabilities: result
|
|
@@ -2675,6 +2718,31 @@ var SessionManager = class {
|
|
|
2675
2718
|
constructor(providerManager) {
|
|
2676
2719
|
this.providerManager = providerManager;
|
|
2677
2720
|
}
|
|
2721
|
+
getProviderManager() {
|
|
2722
|
+
return this.providerManager;
|
|
2723
|
+
}
|
|
2724
|
+
/**
|
|
2725
|
+
* Create an LLM client for a specific agent, respecting its model override.
|
|
2726
|
+
*
|
|
2727
|
+
* If the agent has a model override stored in settings, creates a dedicated
|
|
2728
|
+
* client for that provider+model. Falls back to the global client if no
|
|
2729
|
+
* override is set or the provider no longer exists.
|
|
2730
|
+
*
|
|
2731
|
+
* @param preferredFallback - When provided, used as fallback instead of
|
|
2732
|
+
* providerManager.getLLMClient(). This is important in mock/test mode
|
|
2733
|
+
* where the caller already has a mock client that should be preserved.
|
|
2734
|
+
*/
|
|
2735
|
+
createClientForAgent(agentId, preferredFallback) {
|
|
2736
|
+
const fallback = preferredFallback ?? this.providerManager.getLLMClient();
|
|
2737
|
+
const resolved = resolveLLMClientForAgent(agentId, fallback, this.providerManager);
|
|
2738
|
+
if (resolved.warning) {
|
|
2739
|
+
logger.warn("Agent model override unavailable, falling back", {
|
|
2740
|
+
agentId,
|
|
2741
|
+
warning: resolved.warning
|
|
2742
|
+
});
|
|
2743
|
+
}
|
|
2744
|
+
return resolved.client;
|
|
2745
|
+
}
|
|
2678
2746
|
getCurrentModelSettings(sessionId) {
|
|
2679
2747
|
let providerId;
|
|
2680
2748
|
let model;
|
|
@@ -4426,7 +4494,37 @@ var config2 = {
|
|
|
4426
4494
|
}
|
|
4427
4495
|
return null;
|
|
4428
4496
|
},
|
|
4429
|
-
mapToResponse: (a) => a.metadata
|
|
4497
|
+
mapToResponse: (a) => a.metadata,
|
|
4498
|
+
extraGetData: async () => {
|
|
4499
|
+
const overrides = getAgentModelOverrides();
|
|
4500
|
+
const modelOverrides = {};
|
|
4501
|
+
for (const [agentId, override] of Object.entries(overrides)) {
|
|
4502
|
+
modelOverrides[agentId] = `${override.providerId}/${override.model}`;
|
|
4503
|
+
}
|
|
4504
|
+
return { modelOverrides };
|
|
4505
|
+
},
|
|
4506
|
+
extraRoutes: (router) => {
|
|
4507
|
+
router.get("/:id/model", (req, res) => {
|
|
4508
|
+
const { id } = req.params;
|
|
4509
|
+
const override = getAgentModelOverride(id);
|
|
4510
|
+
res.json(override ?? { providerId: null, model: null });
|
|
4511
|
+
});
|
|
4512
|
+
router.put("/:id/model", (req, res) => {
|
|
4513
|
+
const { id } = req.params;
|
|
4514
|
+
const { providerId, model } = req.body;
|
|
4515
|
+
if (providerId && model) {
|
|
4516
|
+
setAgentModelOverride(id, { providerId, model });
|
|
4517
|
+
} else {
|
|
4518
|
+
setAgentModelOverride(id, null);
|
|
4519
|
+
}
|
|
4520
|
+
res.json({ success: true });
|
|
4521
|
+
});
|
|
4522
|
+
router.delete("/:id/model", (req, res) => {
|
|
4523
|
+
const { id } = req.params;
|
|
4524
|
+
setAgentModelOverride(id, null);
|
|
4525
|
+
res.json({ success: true });
|
|
4526
|
+
});
|
|
4527
|
+
}
|
|
4430
4528
|
};
|
|
4431
4529
|
function createAgentRoutes(configDir, projectDir) {
|
|
4432
4530
|
return createCrudRoutes(config2, configDir, projectDir);
|
|
@@ -5715,7 +5813,7 @@ async function createServerHandle(config3) {
|
|
|
5715
5813
|
initLLM().catch(
|
|
5716
5814
|
(err) => logger.error("LLM initialization failed", { error: err instanceof Error ? err.message : String(err) })
|
|
5717
5815
|
);
|
|
5718
|
-
|
|
5816
|
+
let toolRegistry = createToolRegistry();
|
|
5719
5817
|
const mcpManager = new McpManager({
|
|
5720
5818
|
onToolsDiscovered: async (name, tools) => {
|
|
5721
5819
|
try {
|
|
@@ -5748,9 +5846,10 @@ async function createServerHandle(config3) {
|
|
|
5748
5846
|
const mcpTools = createMcpTools(mcpManager);
|
|
5749
5847
|
if (mcpTools.length > 0) {
|
|
5750
5848
|
setMcpTools(mcpTools);
|
|
5849
|
+
toolRegistry = createToolRegistry();
|
|
5751
5850
|
logger.info("MCP tools registered", { count: mcpTools.length });
|
|
5752
5851
|
}
|
|
5753
|
-
const { signalMcpReady } = await import("./server-
|
|
5852
|
+
const { signalMcpReady } = await import("./server-QGQGSHW6.js");
|
|
5754
5853
|
signalMcpReady();
|
|
5755
5854
|
});
|
|
5756
5855
|
const app = express();
|
|
@@ -5819,17 +5918,20 @@ async function createServerHandle(config3) {
|
|
|
5819
5918
|
res.json({ token });
|
|
5820
5919
|
});
|
|
5821
5920
|
app.get("/api/tools", (_req, res) => {
|
|
5921
|
+
const builtInNames = getBuiltInToolNames();
|
|
5822
5922
|
const tools = toolRegistry.tools.map((t) => ({
|
|
5823
5923
|
name: t.name,
|
|
5824
5924
|
actions: t.permittedActions || [],
|
|
5825
5925
|
alwaysAllowed: ALWAYS_ALLOWED.has(t.name) || ALWAYS_ALLOWED_FOR_SUBAGENTS.has(t.name),
|
|
5826
|
-
topLevelOnly: TOP_LEVEL_ONLY_TOOLS.has(t.name)
|
|
5926
|
+
topLevelOnly: TOP_LEVEL_ONLY_TOOLS.has(t.name),
|
|
5927
|
+
isMcp: !builtInNames.has(t.name),
|
|
5928
|
+
mcpServer: t.mcpServer
|
|
5827
5929
|
}));
|
|
5828
5930
|
res.json({ tools });
|
|
5829
5931
|
});
|
|
5830
5932
|
app.get("/api/projects", async (_req, res) => {
|
|
5831
|
-
const { listProjects } = await import("./projects-M5XKC7O6.js");
|
|
5832
|
-
const projects =
|
|
5933
|
+
const { listProjects: listProjects2 } = await import("./projects-M5XKC7O6.js");
|
|
5934
|
+
const projects = listProjects2();
|
|
5833
5935
|
res.json({ projects });
|
|
5834
5936
|
});
|
|
5835
5937
|
app.post("/api/projects", async (req, res) => {
|
|
@@ -5957,7 +6059,7 @@ async function createServerHandle(config3) {
|
|
|
5957
6059
|
}
|
|
5958
6060
|
try {
|
|
5959
6061
|
await checkoutBranch(project.workdir, branch);
|
|
5960
|
-
const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-
|
|
6062
|
+
const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-FEIFYGH7.js");
|
|
5961
6063
|
const allSessions = sessionManager.listSessions();
|
|
5962
6064
|
for (const s of allSessions) {
|
|
5963
6065
|
if (sessionManager.getEffectiveWorkdir(s.id) === project.workdir) {
|
|
@@ -5993,7 +6095,7 @@ async function createServerHandle(config3) {
|
|
|
5993
6095
|
);
|
|
5994
6096
|
}
|
|
5995
6097
|
await createBranch(project.workdir, name, sb);
|
|
5996
|
-
const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-
|
|
6098
|
+
const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-FEIFYGH7.js");
|
|
5997
6099
|
const allSessions = sessionManager.listSessions();
|
|
5998
6100
|
for (const s of allSessions) {
|
|
5999
6101
|
if (sessionManager.getEffectiveWorkdir(s.id) === project.workdir) {
|
|
@@ -6025,7 +6127,7 @@ async function createServerHandle(config3) {
|
|
|
6025
6127
|
if (!branch || typeof branch !== "string") return res.status(400).json({ error: "branch is required" });
|
|
6026
6128
|
const effectiveWorkdir = sessionManager.getEffectiveWorkdir(req.params.id);
|
|
6027
6129
|
const { checkoutBranch, validateRef: validateRef2 } = await import("./workspace-2NDXTCVR.js");
|
|
6028
|
-
const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-
|
|
6130
|
+
const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-FEIFYGH7.js");
|
|
6029
6131
|
try {
|
|
6030
6132
|
await validateRef2(effectiveWorkdir, branch);
|
|
6031
6133
|
await checkoutBranch(effectiveWorkdir, branch);
|
|
@@ -6068,7 +6170,7 @@ All file and git operations should use this branch.
|
|
|
6068
6170
|
if (!name || typeof name !== "string") return res.status(400).json({ error: "name is required" });
|
|
6069
6171
|
const effectiveWorkdir = sessionManager.getEffectiveWorkdir(req.params.id);
|
|
6070
6172
|
const { validateRef: validateRef2 } = await import("./workspace-2NDXTCVR.js");
|
|
6071
|
-
const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-
|
|
6173
|
+
const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-FEIFYGH7.js");
|
|
6072
6174
|
try {
|
|
6073
6175
|
await validateRef2(effectiveWorkdir, name);
|
|
6074
6176
|
if (sourceBranch) {
|
|
@@ -6123,8 +6225,8 @@ All file and git operations should use this branch.
|
|
|
6123
6225
|
res.json({ workspaces: workspacesList });
|
|
6124
6226
|
});
|
|
6125
6227
|
app.get("/api/sessions", async (req, res) => {
|
|
6126
|
-
const { getRecentUserPromptsForSession } = await import("./events-
|
|
6127
|
-
const { getPendingConfirmationsBySession } = await import("./path-security-
|
|
6228
|
+
const { getRecentUserPromptsForSession } = await import("./events-RCC32JOA.js");
|
|
6229
|
+
const { getPendingConfirmationsBySession } = await import("./path-security-SUFEIBTC.js");
|
|
6128
6230
|
const projectId = req.query["projectId"];
|
|
6129
6231
|
const limit = Math.min(parseInt(req.query["limit"]) || 20, 100);
|
|
6130
6232
|
const offset = parseInt(req.query["offset"]) || 0;
|
|
@@ -6170,7 +6272,7 @@ All file and git operations should use this branch.
|
|
|
6170
6272
|
disabledServers = mcpManager.getAllServers().filter((s) => s.config.disabled).map((s) => s.name);
|
|
6171
6273
|
}
|
|
6172
6274
|
if (disabledServers.length > 0) {
|
|
6173
|
-
const { setSessionDisabledServers: setSessionDisabledServers2 } = await import("./session-overrides-
|
|
6275
|
+
const { setSessionDisabledServers: setSessionDisabledServers2 } = await import("./session-overrides-MBGBX6TM.js");
|
|
6174
6276
|
setSessionDisabledServers2(session.id, disabledServers);
|
|
6175
6277
|
}
|
|
6176
6278
|
} catch {
|
|
@@ -6243,14 +6345,23 @@ All file and git operations should use this branch.
|
|
|
6243
6345
|
}
|
|
6244
6346
|
});
|
|
6245
6347
|
app.get("/api/sessions/:id", async (req, res) => {
|
|
6246
|
-
const { getEventStore: getEventStore2, combineEventsWithSnapshot } = await import("./events-
|
|
6247
|
-
const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-
|
|
6248
|
-
const { getPendingQuestionsForSession } = await import("./tools-
|
|
6249
|
-
const { getMaxVisibleItems } = await import("./settings-
|
|
6250
|
-
const
|
|
6348
|
+
const { getEventStore: getEventStore2, combineEventsWithSnapshot } = await import("./events-RCC32JOA.js");
|
|
6349
|
+
const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-ZNUXPQUD.js");
|
|
6350
|
+
const { getPendingQuestionsForSession } = await import("./tools-M5DKWCJJ.js");
|
|
6351
|
+
const { getMaxVisibleItems } = await import("./settings-FT7HF7ZB.js");
|
|
6352
|
+
const { getAgentModelOverride: getAgentModelOverride2 } = await import("./model-overrides-DQDT5Y7R.js");
|
|
6353
|
+
const { updateSessionProvider: updateSessionProvider2 } = await import("./sessions-FEIFYGH7.js");
|
|
6354
|
+
let session = sessionManager.getSession(req.params.id);
|
|
6251
6355
|
if (!session) {
|
|
6252
6356
|
return res.status(404).json({ error: "Session not found" });
|
|
6253
6357
|
}
|
|
6358
|
+
if (!session.providerId && session.mode) {
|
|
6359
|
+
const override = getAgentModelOverride2(session.mode);
|
|
6360
|
+
if (override) {
|
|
6361
|
+
updateSessionProvider2(session.id, override.providerId, override.model);
|
|
6362
|
+
session = sessionManager.getSession(session.id);
|
|
6363
|
+
}
|
|
6364
|
+
}
|
|
6254
6365
|
const eventStore = getEventStore2();
|
|
6255
6366
|
const { snapshot, events: eventsSinceSnapshot } = eventStore.getEventsSinceSnapshot(req.params.id);
|
|
6256
6367
|
const events = combineEventsWithSnapshot(req.params.id, snapshot, eventsSinceSnapshot);
|
|
@@ -6278,8 +6389,8 @@ All file and git operations should use this branch.
|
|
|
6278
6389
|
if (!session) {
|
|
6279
6390
|
return res.status(404).json({ error: "Session not found" });
|
|
6280
6391
|
}
|
|
6281
|
-
const { stopSessionExecution } = await import("./chat-handler-
|
|
6282
|
-
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-
|
|
6392
|
+
const { stopSessionExecution } = await import("./chat-handler-IBFSBSGV.js");
|
|
6393
|
+
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-M5DKWCJJ.js");
|
|
6283
6394
|
sessionManager.clearMessageQueue(sessionId);
|
|
6284
6395
|
stopSessionExecution(sessionId, sessionManager);
|
|
6285
6396
|
abortSession(sessionId);
|
|
@@ -6308,9 +6419,9 @@ All file and git operations should use this branch.
|
|
|
6308
6419
|
res.json({ success: true });
|
|
6309
6420
|
});
|
|
6310
6421
|
app.post("/api/sessions/:id/provider", async (req, res) => {
|
|
6311
|
-
const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-
|
|
6312
|
-
const { buildMessagesFromStoredEvents } = await import("./folding-
|
|
6313
|
-
const { getMaxVisibleItems } = await import("./settings-
|
|
6422
|
+
const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-RCC32JOA.js");
|
|
6423
|
+
const { buildMessagesFromStoredEvents } = await import("./folding-ZNUXPQUD.js");
|
|
6424
|
+
const { getMaxVisibleItems } = await import("./settings-FT7HF7ZB.js");
|
|
6314
6425
|
const sessionId = req.params.id;
|
|
6315
6426
|
const session = sessionManager.getSession(sessionId);
|
|
6316
6427
|
if (!session) {
|
|
@@ -6423,9 +6534,11 @@ All file and git operations should use this branch.
|
|
|
6423
6534
|
res.json({ success: true });
|
|
6424
6535
|
});
|
|
6425
6536
|
app.put("/api/sessions/:id/mode", async (req, res) => {
|
|
6426
|
-
const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-
|
|
6427
|
-
const { buildMessagesFromStoredEvents } = await import("./folding-
|
|
6428
|
-
const { getMaxVisibleItems } = await import("./settings-
|
|
6537
|
+
const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-RCC32JOA.js");
|
|
6538
|
+
const { buildMessagesFromStoredEvents } = await import("./folding-ZNUXPQUD.js");
|
|
6539
|
+
const { getMaxVisibleItems } = await import("./settings-FT7HF7ZB.js");
|
|
6540
|
+
const { getAgentModelOverride: getAgentModelOverride2 } = await import("./model-overrides-DQDT5Y7R.js");
|
|
6541
|
+
const { updateSessionProvider: updateSessionProvider2 } = await import("./sessions-FEIFYGH7.js");
|
|
6429
6542
|
const sessionId = req.params.id;
|
|
6430
6543
|
const session = sessionManager.getSession(sessionId);
|
|
6431
6544
|
if (!session) {
|
|
@@ -6441,6 +6554,22 @@ All file and git operations should use this branch.
|
|
|
6441
6554
|
return res.status(400).json({ error: `Invalid mode. Must be one of: ${topLevelIds.join(", ")}` });
|
|
6442
6555
|
}
|
|
6443
6556
|
sessionManager.setMode(sessionId, mode);
|
|
6557
|
+
const override = getAgentModelOverride2(mode);
|
|
6558
|
+
if (override) {
|
|
6559
|
+
updateSessionProvider2(sessionId, override.providerId, override.model);
|
|
6560
|
+
} else {
|
|
6561
|
+
updateSessionProvider2(sessionId, null, null);
|
|
6562
|
+
const { providerId: defaultProviderId, model: defaultModel } = parseDefaultModelSelection(
|
|
6563
|
+
config3.defaultModelSelection
|
|
6564
|
+
);
|
|
6565
|
+
if (defaultProviderId && defaultModel) {
|
|
6566
|
+
const currentActiveProviderId = providerManager.getActiveProviderId();
|
|
6567
|
+
const currentModel = providerManager.getCurrentModel();
|
|
6568
|
+
if (currentActiveProviderId !== defaultProviderId || currentModel !== defaultModel) {
|
|
6569
|
+
await providerManager.activateProvider(defaultProviderId, { model: defaultModel });
|
|
6570
|
+
}
|
|
6571
|
+
}
|
|
6572
|
+
}
|
|
6444
6573
|
const eventStore = getEventStore2();
|
|
6445
6574
|
const { snapshot, events: eventsSinceSnapshot } = eventStore.getEventsSinceSnapshot(sessionId);
|
|
6446
6575
|
const events = combineEv(sessionId, snapshot, eventsSinceSnapshot);
|
|
@@ -6511,7 +6640,7 @@ All file and git operations should use this branch.
|
|
|
6511
6640
|
if (alwaysAllow !== void 0 && typeof alwaysAllow !== "boolean") {
|
|
6512
6641
|
return res.status(400).json({ error: "alwaysAllow must be a boolean if provided" });
|
|
6513
6642
|
}
|
|
6514
|
-
const { providePathConfirmation, getConfirmationSessionId } = await import("./tools-
|
|
6643
|
+
const { providePathConfirmation, getConfirmationSessionId } = await import("./tools-M5DKWCJJ.js");
|
|
6515
6644
|
const pendingSessionId = getConfirmationSessionId(callId);
|
|
6516
6645
|
if (!pendingSessionId) {
|
|
6517
6646
|
return res.status(404).json({ error: "No pending path confirmation with that ID" });
|
|
@@ -6523,11 +6652,11 @@ All file and git operations should use this branch.
|
|
|
6523
6652
|
if (!result.found) {
|
|
6524
6653
|
return res.status(404).json({ error: "No pending path confirmation with that ID" });
|
|
6525
6654
|
}
|
|
6526
|
-
const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEvents } = await import("./events-
|
|
6527
|
-
const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-
|
|
6655
|
+
const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEvents } = await import("./events-RCC32JOA.js");
|
|
6656
|
+
const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-ZNUXPQUD.js");
|
|
6528
6657
|
const { createSessionStateMessage } = await import("./protocol-YDNGGADL.js");
|
|
6529
|
-
const { getPendingQuestionsForSession } = await import("./tools-
|
|
6530
|
-
const { getMaxVisibleItems } = await import("./settings-
|
|
6658
|
+
const { getPendingQuestionsForSession } = await import("./tools-M5DKWCJJ.js");
|
|
6659
|
+
const { getMaxVisibleItems } = await import("./settings-FT7HF7ZB.js");
|
|
6531
6660
|
const eventStore = getEventStore2();
|
|
6532
6661
|
const { snapshot, events: eventsSinceSnapshot } = eventStore.getEventsSinceSnapshot(sessionId);
|
|
6533
6662
|
const events = combineEvents(sessionId, snapshot, eventsSinceSnapshot);
|
|
@@ -6563,7 +6692,7 @@ All file and git operations should use this branch.
|
|
|
6563
6692
|
if (!skip && typeof answer !== "string") {
|
|
6564
6693
|
return res.status(400).json({ error: "answer is required when not skipping" });
|
|
6565
6694
|
}
|
|
6566
|
-
const { provideAnswer } = await import("./tools-
|
|
6695
|
+
const { provideAnswer } = await import("./tools-M5DKWCJJ.js");
|
|
6567
6696
|
const found = provideAnswer(callId, answer ?? "", skip ?? false);
|
|
6568
6697
|
if (!found) {
|
|
6569
6698
|
return res.status(404).json({ error: "No pending question with that ID" });
|
|
@@ -6596,7 +6725,7 @@ All file and git operations should use this branch.
|
|
|
6596
6725
|
if (!session) {
|
|
6597
6726
|
return res.status(404).json({ error: "Session not found" });
|
|
6598
6727
|
}
|
|
6599
|
-
const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-
|
|
6728
|
+
const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-FT7HF7ZB.js");
|
|
6600
6729
|
if (getSetting2(SETTINGS_KEYS.CACHE_WARMING) !== "true") {
|
|
6601
6730
|
return res.json({ success: false, reason: "disabled" });
|
|
6602
6731
|
}
|
|
@@ -6628,7 +6757,7 @@ All file and git operations should use this branch.
|
|
|
6628
6757
|
backend: activeProvider?.backend ?? llmClient.getBackend(),
|
|
6629
6758
|
model: llmClient.getModel()
|
|
6630
6759
|
};
|
|
6631
|
-
const { runAgentTurn, TurnMetrics } = await import("./orchestrator-
|
|
6760
|
+
const { runAgentTurn, TurnMetrics } = await import("./orchestrator-QDXKDLOW.js");
|
|
6632
6761
|
runAgentTurn(
|
|
6633
6762
|
{
|
|
6634
6763
|
sessionManager,
|
|
@@ -6666,15 +6795,15 @@ All file and git operations should use this branch.
|
|
|
6666
6795
|
if (!session) {
|
|
6667
6796
|
return res.status(404).json({ error: "Session not found" });
|
|
6668
6797
|
}
|
|
6669
|
-
const { stopSessionExecution } = await import("./chat-handler-
|
|
6670
|
-
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-
|
|
6798
|
+
const { stopSessionExecution } = await import("./chat-handler-IBFSBSGV.js");
|
|
6799
|
+
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-M5DKWCJJ.js");
|
|
6671
6800
|
const queuedMessages = sessionManager.getQueueState(sessionId);
|
|
6672
6801
|
sessionManager.clearMessageQueue(sessionId);
|
|
6673
6802
|
stopSessionExecution(sessionId, sessionManager);
|
|
6674
6803
|
abortSession(sessionId);
|
|
6675
6804
|
cancelQuestionsForSession(sessionId, "Session stopped by user");
|
|
6676
6805
|
cancelPathConfirmationsForSession(sessionId, "Session stopped by user");
|
|
6677
|
-
const eventStore = (await import("./events-
|
|
6806
|
+
const eventStore = (await import("./events-RCC32JOA.js")).getEventStore();
|
|
6678
6807
|
eventStore.append(sessionId, { type: "running.changed", data: { isRunning: false } });
|
|
6679
6808
|
res.json({ success: true, queuedMessages });
|
|
6680
6809
|
});
|
|
@@ -6688,7 +6817,7 @@ All file and git operations should use this branch.
|
|
|
6688
6817
|
if (typeof messageIndex !== "number" || messageIndex < 0) {
|
|
6689
6818
|
return res.status(400).json({ error: "messageIndex must be a non-negative number" });
|
|
6690
6819
|
}
|
|
6691
|
-
const { truncateSessionMessages } = await import("./events-
|
|
6820
|
+
const { truncateSessionMessages } = await import("./events-RCC32JOA.js");
|
|
6692
6821
|
truncateSessionMessages(sessionId, messageIndex);
|
|
6693
6822
|
res.json({ success: true });
|
|
6694
6823
|
});
|
|
@@ -6705,8 +6834,8 @@ All file and git operations should use this branch.
|
|
|
6705
6834
|
if (content !== void 0 && (typeof content !== "string" || !content.trim())) {
|
|
6706
6835
|
return res.status(400).json({ error: "content must be a non-empty string if provided" });
|
|
6707
6836
|
}
|
|
6708
|
-
const { getEventStore: getEventStore2 } = await import("./events-
|
|
6709
|
-
const { buildMessagesFromStoredEvents } = await import("./folding-
|
|
6837
|
+
const { getEventStore: getEventStore2 } = await import("./events-RCC32JOA.js");
|
|
6838
|
+
const { buildMessagesFromStoredEvents } = await import("./folding-ZNUXPQUD.js");
|
|
6710
6839
|
const eventStore = getEventStore2();
|
|
6711
6840
|
const events = eventStore.getEvents(sessionId);
|
|
6712
6841
|
const { messages } = buildMessagesFromStoredEvents(events);
|
|
@@ -6718,7 +6847,7 @@ All file and git operations should use this branch.
|
|
|
6718
6847
|
if (msg.role !== "user" || msg.isSystemGenerated) {
|
|
6719
6848
|
return res.status(400).json({ error: "Can only replay user messages" });
|
|
6720
6849
|
}
|
|
6721
|
-
const { truncateSessionMessages } = await import("./events-
|
|
6850
|
+
const { truncateSessionMessages } = await import("./events-RCC32JOA.js");
|
|
6722
6851
|
truncateSessionMessages(sessionId, msgIndex - 1);
|
|
6723
6852
|
sessionManager.queueMessage(sessionId, "asap", content ?? msg.content, msg.attachments, msg.messageKind);
|
|
6724
6853
|
res.json({ success: true });
|
|
@@ -6774,7 +6903,7 @@ All file and git operations should use this branch.
|
|
|
6774
6903
|
res.json({ accepted: true });
|
|
6775
6904
|
});
|
|
6776
6905
|
app.get("/api/settings", async (req, res) => {
|
|
6777
|
-
const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-
|
|
6906
|
+
const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-FT7HF7ZB.js");
|
|
6778
6907
|
const keysParam = req.query["keys"];
|
|
6779
6908
|
if (!keysParam) {
|
|
6780
6909
|
return res.status(400).json({ error: "keys query parameter is required" });
|
|
@@ -6787,19 +6916,19 @@ All file and git operations should use this branch.
|
|
|
6787
6916
|
res.json(result);
|
|
6788
6917
|
});
|
|
6789
6918
|
app.get("/api/settings/:key", async (req, res) => {
|
|
6790
|
-
const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-
|
|
6919
|
+
const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-FT7HF7ZB.js");
|
|
6791
6920
|
const key = req.params.key;
|
|
6792
6921
|
const value = getSetting2(key) ?? SETTINGS_DEFAULTS[key] ?? null;
|
|
6793
6922
|
res.json({ key, value });
|
|
6794
6923
|
});
|
|
6795
6924
|
app.get("/api/settings/:key", async (req, res) => {
|
|
6796
|
-
const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-
|
|
6925
|
+
const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-FT7HF7ZB.js");
|
|
6797
6926
|
const key = req.params.key;
|
|
6798
6927
|
const value = getSetting2(key) ?? SETTINGS_DEFAULTS[key] ?? null;
|
|
6799
6928
|
res.json({ key, value });
|
|
6800
6929
|
});
|
|
6801
6930
|
app.put("/api/settings/:key", async (req, res) => {
|
|
6802
|
-
const { setSetting: setSetting2 } = await import("./settings-
|
|
6931
|
+
const { setSetting: setSetting2 } = await import("./settings-FT7HF7ZB.js");
|
|
6803
6932
|
const key = req.params.key;
|
|
6804
6933
|
const { value } = req.body;
|
|
6805
6934
|
if (value === void 0) {
|
|
@@ -6826,7 +6955,7 @@ All file and git operations should use this branch.
|
|
|
6826
6955
|
}
|
|
6827
6956
|
});
|
|
6828
6957
|
app.get("/api/tools/shells", async (_req, res) => {
|
|
6829
|
-
const { listAvailableShells } = await import("./platform-
|
|
6958
|
+
const { listAvailableShells } = await import("./platform-2RLL7RAE.js");
|
|
6830
6959
|
res.json({ shells: listAvailableShells() });
|
|
6831
6960
|
});
|
|
6832
6961
|
app.get("/api/config", async (_req, res) => {
|
|
@@ -6916,7 +7045,7 @@ All file and git operations should use this branch.
|
|
|
6916
7045
|
}));
|
|
6917
7046
|
}
|
|
6918
7047
|
app.post("/api/proxy/test", async (_req, res) => {
|
|
6919
|
-
const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-
|
|
7048
|
+
const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-FT7HF7ZB.js");
|
|
6920
7049
|
const proxyUrl = getSetting2(SETTINGS_KEYS.PROXY_URL);
|
|
6921
7050
|
if (!proxyUrl) {
|
|
6922
7051
|
return res.status(400).json({ success: false, error: "No proxy URL configured" });
|
|
@@ -7008,7 +7137,7 @@ All file and git operations should use this branch.
|
|
|
7008
7137
|
}
|
|
7009
7138
|
});
|
|
7010
7139
|
app.post("/api/proxy/test", async (_req, res) => {
|
|
7011
|
-
const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-
|
|
7140
|
+
const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-FT7HF7ZB.js");
|
|
7012
7141
|
const proxyUrl = getSetting2(SETTINGS_KEYS.PROXY_URL);
|
|
7013
7142
|
if (!proxyUrl) {
|
|
7014
7143
|
return res.status(400).json({ success: false, error: "No proxy URL configured" });
|
|
@@ -7035,7 +7164,7 @@ All file and git operations should use this branch.
|
|
|
7035
7164
|
const backend = req.query["backend"];
|
|
7036
7165
|
if (!url) return res.status(400).json({ error: "url is required" });
|
|
7037
7166
|
try {
|
|
7038
|
-
const { fetchModelsWithContext } = await import("./provider-manager-
|
|
7167
|
+
const { fetchModelsWithContext } = await import("./provider-manager-GLG6BA32.js");
|
|
7039
7168
|
const { getModelProfile: getModelProfile2 } = await import("./profiles-5J7F4BML.js");
|
|
7040
7169
|
const models = await fetchModelsWithContext(
|
|
7041
7170
|
url,
|
|
@@ -7105,8 +7234,8 @@ All file and git operations should use this branch.
|
|
|
7105
7234
|
}
|
|
7106
7235
|
const { getModelProfile: getModelProfile2 } = await import("./profiles-5J7F4BML.js");
|
|
7107
7236
|
const { getBackendCapabilities } = await import("./backend-P3GHHLHJ.js");
|
|
7108
|
-
const { buildNonStreamingCreateParams } = await import("./client-pure-
|
|
7109
|
-
const { OpenAIHttpClient } = await import("./http-client-
|
|
7237
|
+
const { buildNonStreamingCreateParams } = await import("./client-pure-ONSVWEG5.js");
|
|
7238
|
+
const { OpenAIHttpClient } = await import("./http-client-WGNBG7PC.js");
|
|
7110
7239
|
const { ensureVersionPrefix } = await import("./url-utils-SAJP7AEX.js");
|
|
7111
7240
|
const profile = getModelProfile2(model);
|
|
7112
7241
|
const capabilities = getBackendCapabilities(backend || "unknown");
|
|
@@ -7455,10 +7584,11 @@ All file and git operations should use this branch.
|
|
|
7455
7584
|
});
|
|
7456
7585
|
});
|
|
7457
7586
|
async function rebuildMcpTools() {
|
|
7458
|
-
const { createMcpTools: createMcpTools2 } = await import("./tool-adapter-
|
|
7459
|
-
const { setMcpTools: setMcpTools2 } = await import("./tools-
|
|
7587
|
+
const { createMcpTools: createMcpTools2 } = await import("./tool-adapter-FEAHWU5C.js");
|
|
7588
|
+
const { setMcpTools: setMcpTools2 } = await import("./tools-M5DKWCJJ.js");
|
|
7460
7589
|
const mcpTools = createMcpTools2(mcpManager);
|
|
7461
7590
|
setMcpTools2(mcpTools);
|
|
7591
|
+
toolRegistry = createToolRegistry();
|
|
7462
7592
|
}
|
|
7463
7593
|
app.get("/api/mcp/servers", (_req, res) => {
|
|
7464
7594
|
const servers = mcpManager.getAllServers();
|
|
@@ -7689,7 +7819,11 @@ All file and git operations should use this branch.
|
|
|
7689
7819
|
res.status(400).json({ error: error instanceof Error ? error.message : String(error) });
|
|
7690
7820
|
}
|
|
7691
7821
|
});
|
|
7692
|
-
const
|
|
7822
|
+
const { listProjects } = await import("./projects-M5XKC7O6.js");
|
|
7823
|
+
const allProjects = listProjects();
|
|
7824
|
+
const projectDir = allProjects.find(
|
|
7825
|
+
(p) => p.workdir === config3.workdir || config3.workdir && p.workdir.startsWith(config3.workdir + "/")
|
|
7826
|
+
)?.workdir ?? config3.workdir;
|
|
7693
7827
|
app.use("/api/skills", createSkillRoutes(configDir, projectDir));
|
|
7694
7828
|
app.use("/api/commands", createCommandRoutes(configDir, projectDir));
|
|
7695
7829
|
app.use("/api/agents", createAgentRoutes(configDir, projectDir));
|
|
@@ -7712,13 +7846,13 @@ All file and git operations should use this branch.
|
|
|
7712
7846
|
})
|
|
7713
7847
|
);
|
|
7714
7848
|
app.get("/api/sessions/:id/background-processes", async (req, res) => {
|
|
7715
|
-
const { getSessionProcesses } = await import("./manager-
|
|
7849
|
+
const { getSessionProcesses } = await import("./manager-HFGJLW7Q.js");
|
|
7716
7850
|
const sessionId = req.params.id;
|
|
7717
7851
|
const processes = getSessionProcesses(sessionId);
|
|
7718
7852
|
res.json({ processes });
|
|
7719
7853
|
});
|
|
7720
7854
|
app.post("/api/sessions/:id/background-process/:processId/stop", async (req, res) => {
|
|
7721
|
-
const { stopProcess } = await import("./manager-
|
|
7855
|
+
const { stopProcess } = await import("./manager-HFGJLW7Q.js");
|
|
7722
7856
|
const sessionId = req.params.id;
|
|
7723
7857
|
const processId = req.params.processId;
|
|
7724
7858
|
const session = sessionManager.getSession(sessionId);
|
|
@@ -7863,7 +7997,7 @@ All file and git operations should use this branch.
|
|
|
7863
7997
|
const state = sessionManager.getContextState(sessionId);
|
|
7864
7998
|
wssExports.broadcastForSession(sessionId, createContextStateMessage(state));
|
|
7865
7999
|
});
|
|
7866
|
-
const { QueueProcessor } = await import("./processor-
|
|
8000
|
+
const { QueueProcessor } = await import("./processor-YWNLWAZW.js");
|
|
7867
8001
|
const queueProcessor = new QueueProcessor({
|
|
7868
8002
|
sessionManager,
|
|
7869
8003
|
providerManager,
|
|
@@ -7947,4 +8081,4 @@ export {
|
|
|
7947
8081
|
createServerHandle,
|
|
7948
8082
|
createServer
|
|
7949
8083
|
};
|
|
7950
|
-
//# sourceMappingURL=chunk-
|
|
8084
|
+
//# sourceMappingURL=chunk-REQIAJTV.js.map
|