reasonix 0.46.0 → 0.47.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 +64 -12
- package/README.zh-CN.md +54 -9
- package/dashboard/dist/app.js +293 -66
- package/dashboard/dist/app.js.map +1 -1
- package/dist/cli/{acp-LGBLHBKY.js → acp-QK3DMC53.js} +22 -22
- package/dist/cli/chat-VV5UWY4V.js +51 -0
- package/dist/cli/{chunk-AVFXO2EZ.js → chunk-24A7FHGJ.js} +148 -16
- package/dist/cli/chunk-24A7FHGJ.js.map +1 -0
- package/dist/cli/chunk-25T6CVUP.js +0 -0
- package/dist/cli/chunk-2UQP6H6T.js +0 -0
- package/dist/cli/chunk-5QCB62C4.js +0 -0
- package/dist/cli/{chunk-YY227BIQ.js → chunk-6J6BSUCR.js} +2 -2
- package/dist/cli/chunk-6OWJV3YW.js +0 -0
- package/dist/cli/{chunk-A3TSSDS2.js → chunk-BWYVFFKR.js} +2 -2
- package/dist/cli/{chunk-C53JQES5.js → chunk-BYYVYJDX.js} +3 -3
- package/dist/cli/{chunk-HNXDZGC6.js → chunk-CI2PF5QX.js} +2 -2
- package/dist/cli/{chunk-GTZTQNX5.js → chunk-COWPEX54.js} +19 -9
- package/dist/cli/chunk-COWPEX54.js.map +1 -0
- package/dist/cli/{chunk-QJDDIK3Z.js → chunk-E5WCLUIU.js} +2 -2
- package/dist/cli/{chunk-NVURFF27.js → chunk-EQATK2L2.js} +2 -2
- package/dist/cli/{chunk-HKWSPKMU.js → chunk-FDKOUJKZ.js} +8 -8
- package/dist/cli/chunk-FEZK652I.js +0 -0
- package/dist/cli/{chunk-TEUDEGX2.js → chunk-FY4S7TJZ.js} +19 -5
- package/dist/cli/chunk-FY4S7TJZ.js.map +1 -0
- package/dist/cli/{chunk-RDRC3XDT.js → chunk-GDKB2PPK.js} +2 -2
- package/dist/cli/{chunk-XSU4QVFW.js → chunk-HIYTRCSW.js} +27 -14
- package/dist/cli/chunk-HIYTRCSW.js.map +1 -0
- package/dist/cli/{chunk-WL6SNQ5T.js → chunk-ICAFSZHS.js} +307 -114
- package/dist/cli/chunk-ICAFSZHS.js.map +1 -0
- package/dist/cli/{chunk-KQU2TYIL.js → chunk-ICSYGIPN.js} +1916 -1098
- package/dist/cli/chunk-ICSYGIPN.js.map +1 -0
- package/dist/cli/chunk-J5XJHLWM.js +0 -0
- package/dist/cli/chunk-JMBMLOBP.js +0 -0
- package/dist/cli/{chunk-MJ6W5UN3.js → chunk-K6GUKSXH.js} +3 -2
- package/dist/cli/chunk-K6GUKSXH.js.map +1 -0
- package/dist/cli/{chunk-IJ7JA32V.js → chunk-KDRUEXII.js} +189 -26
- package/dist/cli/chunk-KDRUEXII.js.map +1 -0
- package/dist/cli/{chunk-4HCP2UQW.js → chunk-LBLR4CUZ.js} +2 -2
- package/dist/cli/{chunk-2425HK6U.js → chunk-LGEKVMMV.js} +7 -2
- package/dist/cli/{chunk-2425HK6U.js.map → chunk-LGEKVMMV.js.map} +1 -1
- package/dist/cli/{chunk-I4L2GTSE.js → chunk-OJVITDGB.js} +2 -2
- package/dist/cli/chunk-PLHAZOLZ.js +0 -0
- package/dist/cli/{chunk-W7YGWUWU.js → chunk-QVDWH2A2.js} +3 -3
- package/dist/cli/{chunk-R3CTO2HM.js → chunk-QVUFWDD2.js} +2 -2
- package/dist/cli/{chunk-HVUZWNSP.js → chunk-R6GQKKBW.js} +2 -2
- package/dist/cli/{chunk-5ACMUK4Q.js → chunk-RRXUIPWG.js} +20 -18
- package/dist/cli/chunk-RRXUIPWG.js.map +1 -0
- package/dist/cli/chunk-S4XVGLRW.js +0 -0
- package/dist/cli/chunk-SZ5XES2N.js +0 -0
- package/dist/cli/{chunk-CXVWUPA3.js → chunk-TKVXTQ3T.js} +26 -26
- package/dist/cli/chunk-TKVXTQ3T.js.map +1 -0
- package/dist/cli/chunk-TUK7OWJA.js +0 -0
- package/dist/cli/{chunk-JNAQYELD.js → chunk-UDVFBEXC.js} +3 -3
- package/dist/cli/{chunk-CBIQWMS6.js → chunk-VC2CQA5D.js} +9 -9
- package/dist/cli/{chunk-ZZYBBX5N.js → chunk-VJMBISEI.js} +23 -9
- package/dist/cli/chunk-VJMBISEI.js.map +1 -0
- package/dist/cli/{chunk-WK3UFQY3.js → chunk-VKYSZKH2.js} +2 -2
- package/dist/cli/{chunk-LIR2HBQH.js → chunk-VMUUFWFF.js} +2 -2
- package/dist/cli/{chunk-V26WPN3J.js → chunk-VNQGCA3Q.js} +28 -1
- package/dist/cli/chunk-VNQGCA3Q.js.map +1 -0
- package/dist/cli/{chunk-5I2C4JEO.js → chunk-WF7TPVZM.js} +6 -6
- package/dist/cli/{chunk-5I2C4JEO.js.map → chunk-WF7TPVZM.js.map} +1 -1
- package/dist/cli/chunk-X53B3JIX.js +0 -0
- package/dist/cli/chunk-XJXDHAES.js +0 -0
- package/dist/cli/chunk-XXC2BYTV.js +0 -0
- package/dist/cli/{chunk-4CTDEJUF.js → chunk-YDPLF7XR.js} +26 -14
- package/dist/cli/chunk-YDPLF7XR.js.map +1 -0
- package/dist/cli/chunk-ZZM6QJ4W.js +0 -0
- package/dist/cli/{code-DFHSASJ4.js → code-C24TUAE5.js} +39 -35
- package/dist/cli/code-C24TUAE5.js.map +1 -0
- package/dist/cli/{commands-OCU42XG4.js → commands-RR3GIYOK.js} +4 -4
- package/dist/cli/{commit-XCQIQCYG.js → commit-FSHPIINM.js} +3 -3
- package/dist/cli/{desktop-ZCUG7LMF.js → desktop-7NCHPEFB.js} +263 -36
- package/dist/cli/desktop-7NCHPEFB.js.map +1 -0
- package/dist/cli/devtools-HW3WDT3Q.js +0 -0
- package/dist/cli/{diff-66B2KWOJ.js → diff-RAAHHLHV.js} +8 -8
- package/dist/cli/{doctor-Y73CPPRZ.js → doctor-PKVQIXRT.js} +9 -9
- package/dist/cli/{events-NGZ2OJYH.js → events-VRYXOSKI.js} +3 -3
- package/dist/cli/index.js +84 -92
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/{mcp-MPVGBBJF.js → mcp-CRJ26PP4.js} +2 -2
- package/dist/cli/{mcp-browse-4XOTC3FJ.js → mcp-browse-QPAOWZOP.js} +2 -2
- package/dist/cli/{mcp-inspect-CEMGKKAH.js → mcp-inspect-CVCLABRS.js} +4 -4
- package/dist/cli/{prompt-2D7ID24X.js → prompt-SKYXERSI.js} +4 -4
- package/dist/cli/{prune-sessions-OJEYYLHY.js → prune-sessions-SEWX7GP6.js} +2 -2
- package/dist/cli/{replay-AKYQNAQJ.js → replay-KPDW2ZMJ.js} +9 -9
- package/dist/cli/{run-5DPQFSP6.js → run-WIKDIXTG.js} +18 -19
- package/dist/cli/run-WIKDIXTG.js.map +1 -0
- package/dist/cli/{server-TQ2IHYQJ.js → server-P6V2G3P6.js} +82 -34
- package/dist/cli/server-P6V2G3P6.js.map +1 -0
- package/dist/cli/{sessions-KY54NG45.js → sessions-2NULRMSA.js} +29 -15
- package/dist/cli/sessions-2NULRMSA.js.map +1 -0
- package/dist/cli/{setup-XPIOZWS7.js → setup-Y5WDBQFL.js} +8 -8
- package/dist/cli/setup-Y5WDBQFL.js.map +1 -0
- package/dist/cli/{stats-X2VTWKNS.js → stats-T7BL2YOR.js} +6 -6
- package/dist/cli/update-6ITLPRDV.js +0 -0
- package/dist/cli/{version-7O6A5T7Q.js → version-3KWDNWLN.js} +15 -15
- package/dist/index.d.ts +54 -23
- package/dist/index.js +1613 -1152
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/cli/.-3G6VX5S7.js +0 -327
- package/dist/cli/.-6YRPB2C7.js +0 -329
- package/dist/cli/.-EYSVINK3.js +0 -317
- package/dist/cli/chat-ECK5ZGMV.js +0 -51
- package/dist/cli/chunk-4CTDEJUF.js.map +0 -1
- package/dist/cli/chunk-5ACMUK4Q.js.map +0 -1
- package/dist/cli/chunk-AVFXO2EZ.js.map +0 -1
- package/dist/cli/chunk-CXVWUPA3.js.map +0 -1
- package/dist/cli/chunk-GTZTQNX5.js.map +0 -1
- package/dist/cli/chunk-IJ7JA32V.js.map +0 -1
- package/dist/cli/chunk-KQU2TYIL.js.map +0 -1
- package/dist/cli/chunk-MJ6W5UN3.js.map +0 -1
- package/dist/cli/chunk-TEUDEGX2.js.map +0 -1
- package/dist/cli/chunk-V26WPN3J.js.map +0 -1
- package/dist/cli/chunk-WL6SNQ5T.js.map +0 -1
- package/dist/cli/chunk-XSU4QVFW.js.map +0 -1
- package/dist/cli/chunk-ZZYBBX5N.js.map +0 -1
- package/dist/cli/code-DFHSASJ4.js.map +0 -1
- package/dist/cli/desktop-ZCUG7LMF.js.map +0 -1
- package/dist/cli/doctor-Y73CPPRZ.js.map +0 -1
- package/dist/cli/prompt-2D7ID24X.js.map +0 -1
- package/dist/cli/run-5DPQFSP6.js.map +0 -1
- package/dist/cli/server-TQ2IHYQJ.js.map +0 -1
- package/dist/cli/sessions-KY54NG45.js.map +0 -1
- package/dist/cli/setup-XPIOZWS7.js.map +0 -1
- package/dist/cli/stats-X2VTWKNS.js.map +0 -1
- /package/dist/cli/{acp-LGBLHBKY.js.map → acp-QK3DMC53.js.map} +0 -0
- /package/dist/cli/{.-3G6VX5S7.js.map → chat-VV5UWY4V.js.map} +0 -0
- /package/dist/cli/{chunk-YY227BIQ.js.map → chunk-6J6BSUCR.js.map} +0 -0
- /package/dist/cli/{chunk-A3TSSDS2.js.map → chunk-BWYVFFKR.js.map} +0 -0
- /package/dist/cli/{chunk-C53JQES5.js.map → chunk-BYYVYJDX.js.map} +0 -0
- /package/dist/cli/{chunk-HNXDZGC6.js.map → chunk-CI2PF5QX.js.map} +0 -0
- /package/dist/cli/{chunk-QJDDIK3Z.js.map → chunk-E5WCLUIU.js.map} +0 -0
- /package/dist/cli/{chunk-NVURFF27.js.map → chunk-EQATK2L2.js.map} +0 -0
- /package/dist/cli/{chunk-HKWSPKMU.js.map → chunk-FDKOUJKZ.js.map} +0 -0
- /package/dist/cli/{chunk-RDRC3XDT.js.map → chunk-GDKB2PPK.js.map} +0 -0
- /package/dist/cli/{chunk-4HCP2UQW.js.map → chunk-LBLR4CUZ.js.map} +0 -0
- /package/dist/cli/{chunk-I4L2GTSE.js.map → chunk-OJVITDGB.js.map} +0 -0
- /package/dist/cli/{chunk-W7YGWUWU.js.map → chunk-QVDWH2A2.js.map} +0 -0
- /package/dist/cli/{chunk-R3CTO2HM.js.map → chunk-QVUFWDD2.js.map} +0 -0
- /package/dist/cli/{chunk-HVUZWNSP.js.map → chunk-R6GQKKBW.js.map} +0 -0
- /package/dist/cli/{chunk-JNAQYELD.js.map → chunk-UDVFBEXC.js.map} +0 -0
- /package/dist/cli/{chunk-CBIQWMS6.js.map → chunk-VC2CQA5D.js.map} +0 -0
- /package/dist/cli/{chunk-WK3UFQY3.js.map → chunk-VKYSZKH2.js.map} +0 -0
- /package/dist/cli/{chunk-LIR2HBQH.js.map → chunk-VMUUFWFF.js.map} +0 -0
- /package/dist/cli/{commands-OCU42XG4.js.map → commands-RR3GIYOK.js.map} +0 -0
- /package/dist/cli/{commit-XCQIQCYG.js.map → commit-FSHPIINM.js.map} +0 -0
- /package/dist/cli/{diff-66B2KWOJ.js.map → diff-RAAHHLHV.js.map} +0 -0
- /package/dist/cli/{.-6YRPB2C7.js.map → doctor-PKVQIXRT.js.map} +0 -0
- /package/dist/cli/{events-NGZ2OJYH.js.map → events-VRYXOSKI.js.map} +0 -0
- /package/dist/cli/{mcp-MPVGBBJF.js.map → mcp-CRJ26PP4.js.map} +0 -0
- /package/dist/cli/{mcp-browse-4XOTC3FJ.js.map → mcp-browse-QPAOWZOP.js.map} +0 -0
- /package/dist/cli/{mcp-inspect-CEMGKKAH.js.map → mcp-inspect-CVCLABRS.js.map} +0 -0
- /package/dist/cli/{.-EYSVINK3.js.map → prompt-SKYXERSI.js.map} +0 -0
- /package/dist/cli/{prune-sessions-OJEYYLHY.js.map → prune-sessions-SEWX7GP6.js.map} +0 -0
- /package/dist/cli/{replay-AKYQNAQJ.js.map → replay-KPDW2ZMJ.js.map} +0 -0
- /package/dist/cli/{chat-ECK5ZGMV.js.map → stats-T7BL2YOR.js.map} +0 -0
- /package/dist/cli/{version-7O6A5T7Q.js.map → version-3KWDNWLN.js.map} +0 -0
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
defaultConfigPath,
|
|
16
16
|
readConfig,
|
|
17
17
|
writeConfig
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-24A7FHGJ.js";
|
|
19
19
|
import "./chunk-TUK7OWJA.js";
|
|
20
20
|
|
|
21
21
|
// src/cli/commands/mcp.ts
|
|
@@ -274,4 +274,4 @@ export {
|
|
|
274
274
|
mcpListCommand,
|
|
275
275
|
mcpSearchCommand
|
|
276
276
|
};
|
|
277
|
-
//# sourceMappingURL=mcp-
|
|
277
|
+
//# sourceMappingURL=mcp-CRJ26PP4.js.map
|
|
@@ -23,7 +23,7 @@ import "./chunk-PLHAZOLZ.js";
|
|
|
23
23
|
import {
|
|
24
24
|
readConfig,
|
|
25
25
|
writeConfig
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-24A7FHGJ.js";
|
|
27
27
|
import {
|
|
28
28
|
__toESM
|
|
29
29
|
} from "./chunk-TUK7OWJA.js";
|
|
@@ -175,4 +175,4 @@ async function mcpBrowseCommand(_opts = {}) {
|
|
|
175
175
|
export {
|
|
176
176
|
mcpBrowseCommand
|
|
177
177
|
};
|
|
178
|
-
//# sourceMappingURL=mcp-browse-
|
|
178
|
+
//# sourceMappingURL=mcp-browse-QPAOWZOP.js.map
|
|
@@ -3,18 +3,18 @@ import { createRequire as __cr } from 'node:module'; if (typeof globalThis.requi
|
|
|
3
3
|
import {
|
|
4
4
|
buildTransportFromSpec,
|
|
5
5
|
preflightStdioSpec
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-EQATK2L2.js";
|
|
7
7
|
import {
|
|
8
8
|
McpClient,
|
|
9
9
|
inspectMcpServer
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-HIYTRCSW.js";
|
|
11
11
|
import "./chunk-25T6CVUP.js";
|
|
12
12
|
import {
|
|
13
13
|
normalizeMcpConfig,
|
|
14
14
|
overlayMatchedSpec,
|
|
15
15
|
parseMcpSpec,
|
|
16
16
|
readConfig
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-24A7FHGJ.js";
|
|
18
18
|
import "./chunk-XXC2BYTV.js";
|
|
19
19
|
import "./chunk-TUK7OWJA.js";
|
|
20
20
|
|
|
@@ -145,4 +145,4 @@ export {
|
|
|
145
145
|
formatMcpInspectFailure,
|
|
146
146
|
mcpInspectCommand
|
|
147
147
|
};
|
|
148
|
-
//# sourceMappingURL=mcp-inspect-
|
|
148
|
+
//# sourceMappingURL=mcp-inspect-CVCLABRS.js.map
|
|
@@ -4,13 +4,13 @@ import {
|
|
|
4
4
|
CODE_SYSTEM_PROMPT,
|
|
5
5
|
codeSystemBase,
|
|
6
6
|
codeSystemPrompt
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-UDVFBEXC.js";
|
|
8
|
+
import "./chunk-FY4S7TJZ.js";
|
|
9
|
+
import "./chunk-24A7FHGJ.js";
|
|
10
10
|
import "./chunk-TUK7OWJA.js";
|
|
11
11
|
export {
|
|
12
12
|
CODE_SYSTEM_PROMPT,
|
|
13
13
|
codeSystemBase,
|
|
14
14
|
codeSystemPrompt
|
|
15
15
|
};
|
|
16
|
-
//# sourceMappingURL=prompt-
|
|
16
|
+
//# sourceMappingURL=prompt-SKYXERSI.js.map
|
|
@@ -3,7 +3,7 @@ import { createRequire as __cr } from 'node:module'; if (typeof globalThis.requi
|
|
|
3
3
|
import {
|
|
4
4
|
listSessions,
|
|
5
5
|
pruneStaleSessions
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-RRXUIPWG.js";
|
|
7
7
|
import "./chunk-TUK7OWJA.js";
|
|
8
8
|
|
|
9
9
|
// src/cli/commands/prune-sessions.ts
|
|
@@ -41,4 +41,4 @@ function pruneSessionsCommand(opts) {
|
|
|
41
41
|
export {
|
|
42
42
|
pruneSessionsCommand
|
|
43
43
|
};
|
|
44
|
-
//# sourceMappingURL=prune-sessions-
|
|
44
|
+
//# sourceMappingURL=prune-sessions-SEWX7GP6.js.map
|
|
@@ -2,21 +2,21 @@
|
|
|
2
2
|
import { createRequire as __cr } from 'node:module'; if (typeof globalThis.require === 'undefined') { globalThis.require = __cr(import.meta.url); }
|
|
3
3
|
import {
|
|
4
4
|
RecordView
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-R6GQKKBW.js";
|
|
6
6
|
import {
|
|
7
7
|
Bar,
|
|
8
8
|
ChromeRule,
|
|
9
9
|
stringWidth
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-TKVXTQ3T.js";
|
|
11
11
|
import {
|
|
12
12
|
computeCumulativeStats,
|
|
13
13
|
groupRecordsByTurn,
|
|
14
14
|
replayFromFile
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-BYYVYJDX.js";
|
|
16
16
|
import {
|
|
17
17
|
COLOR,
|
|
18
18
|
GRADIENT
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-OJVITDGB.js";
|
|
20
20
|
import {
|
|
21
21
|
Box_default,
|
|
22
22
|
Static,
|
|
@@ -27,16 +27,16 @@ import {
|
|
|
27
27
|
use_input_default,
|
|
28
28
|
use_stdout_default
|
|
29
29
|
} from "./chunk-X53B3JIX.js";
|
|
30
|
-
import "./chunk-
|
|
30
|
+
import "./chunk-VNQGCA3Q.js";
|
|
31
31
|
import "./chunk-25T6CVUP.js";
|
|
32
|
-
import "./chunk-
|
|
32
|
+
import "./chunk-VJMBISEI.js";
|
|
33
33
|
import {
|
|
34
34
|
t
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-KDRUEXII.js";
|
|
36
36
|
import {
|
|
37
37
|
formatBalance,
|
|
38
38
|
formatCost
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-24A7FHGJ.js";
|
|
40
40
|
import {
|
|
41
41
|
__toESM
|
|
42
42
|
} from "./chunk-TUK7OWJA.js";
|
|
@@ -288,4 +288,4 @@ function oneLine(s, max = 200) {
|
|
|
288
288
|
export {
|
|
289
289
|
replayCommand
|
|
290
290
|
};
|
|
291
|
-
//# sourceMappingURL=replay-
|
|
291
|
+
//# sourceMappingURL=replay-KPDW2ZMJ.js.map
|
|
@@ -3,47 +3,47 @@ import { createRequire as __cr } from 'node:module'; if (typeof globalThis.requi
|
|
|
3
3
|
import {
|
|
4
4
|
formatMcpLifecycleEvent,
|
|
5
5
|
formatMcpSlowToast
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-LBLR4CUZ.js";
|
|
7
7
|
import {
|
|
8
8
|
buildTransportFromSpec,
|
|
9
9
|
preflightStdioSpec
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-EQATK2L2.js";
|
|
11
11
|
import {
|
|
12
12
|
CacheFirstLoop,
|
|
13
13
|
ImmutablePrefix,
|
|
14
14
|
ToolRegistry,
|
|
15
15
|
bridgeMcpTools
|
|
16
|
-
} from "./chunk-
|
|
17
|
-
import "./chunk-
|
|
16
|
+
} from "./chunk-ICAFSZHS.js";
|
|
17
|
+
import "./chunk-VKYSZKH2.js";
|
|
18
18
|
import {
|
|
19
19
|
openTranscriptFile,
|
|
20
20
|
recordFromLoopEvent,
|
|
21
21
|
writeRecord
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-BYYVYJDX.js";
|
|
23
23
|
import {
|
|
24
24
|
McpClient
|
|
25
|
-
} from "./chunk-
|
|
26
|
-
import "./chunk-
|
|
25
|
+
} from "./chunk-HIYTRCSW.js";
|
|
26
|
+
import "./chunk-UDVFBEXC.js";
|
|
27
27
|
import "./chunk-6OWJV3YW.js";
|
|
28
28
|
import {
|
|
29
29
|
DeepSeekClient
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-VNQGCA3Q.js";
|
|
31
31
|
import "./chunk-25T6CVUP.js";
|
|
32
32
|
import {
|
|
33
33
|
loadDotenv
|
|
34
34
|
} from "./chunk-2UQP6H6T.js";
|
|
35
|
-
import "./chunk-
|
|
36
|
-
import "./chunk-
|
|
37
|
-
import "./chunk-
|
|
35
|
+
import "./chunk-GDKB2PPK.js";
|
|
36
|
+
import "./chunk-FY4S7TJZ.js";
|
|
37
|
+
import "./chunk-BWYVFFKR.js";
|
|
38
38
|
import "./chunk-S4XVGLRW.js";
|
|
39
|
-
import "./chunk-
|
|
39
|
+
import "./chunk-RRXUIPWG.js";
|
|
40
40
|
import {
|
|
41
41
|
appendUsage
|
|
42
|
-
} from "./chunk-
|
|
43
|
-
import "./chunk-
|
|
42
|
+
} from "./chunk-QVUFWDD2.js";
|
|
43
|
+
import "./chunk-VJMBISEI.js";
|
|
44
44
|
import {
|
|
45
45
|
t
|
|
46
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-KDRUEXII.js";
|
|
47
47
|
import {
|
|
48
48
|
defaultConfigPath,
|
|
49
49
|
isPlausibleKey,
|
|
@@ -52,7 +52,7 @@ import {
|
|
|
52
52
|
normalizeMcpConfig,
|
|
53
53
|
readConfig,
|
|
54
54
|
saveApiKey
|
|
55
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-24A7FHGJ.js";
|
|
56
56
|
import "./chunk-XXC2BYTV.js";
|
|
57
57
|
import "./chunk-TUK7OWJA.js";
|
|
58
58
|
|
|
@@ -161,8 +161,7 @@ async function runCommand(opts) {
|
|
|
161
161
|
prefix,
|
|
162
162
|
tools,
|
|
163
163
|
model: opts.model,
|
|
164
|
-
budgetUsd: opts.budgetUsd
|
|
165
|
-
failureThreshold: opts.failureThreshold
|
|
164
|
+
budgetUsd: opts.budgetUsd
|
|
166
165
|
});
|
|
167
166
|
const prefixHash = prefix.fingerprint;
|
|
168
167
|
let transcriptStream = null;
|
|
@@ -218,4 +217,4 @@ transcript: ${opts.transcript}
|
|
|
218
217
|
export {
|
|
219
218
|
runCommand
|
|
220
219
|
};
|
|
221
|
-
//# sourceMappingURL=run-
|
|
220
|
+
//# sourceMappingURL=run-WIKDIXTG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/cli/commands/run.ts"],"sourcesContent":["import type { WriteStream } from \"node:fs\";\nimport { stdin, stdout } from \"node:process\";\nimport { createInterface } from \"node:readline/promises\";\nimport {\n defaultConfigPath,\n isPlausibleKey,\n loadApiKey,\n loadBaseUrl,\n normalizeMcpConfig,\n readConfig,\n saveApiKey,\n} from \"../../config.js\";\nimport { loadDotenv } from \"../../env.js\";\nimport { t } from \"../../i18n/index.js\";\nimport { CacheFirstLoop, DeepSeekClient, ImmutablePrefix } from \"../../index.js\";\nimport { McpClient } from \"../../mcp/client.js\";\nimport { preflightStdioSpec } from \"../../mcp/preflight.js\";\nimport { bridgeMcpTools } from \"../../mcp/registry.js\";\nimport { buildTransportFromSpec } from \"../../mcp/transport-from-spec.js\";\nimport { appendUsage } from \"../../telemetry/usage.js\";\nimport { ToolRegistry } from \"../../tools.js\";\nimport { openTranscriptFile, recordFromLoopEvent, writeRecord } from \"../../transcript/log.js\";\nimport { formatMcpLifecycleEvent } from \"../ui/mcp-lifecycle.js\";\nimport { formatMcpSlowToast } from \"../ui/mcp-toast.js\";\n\nexport interface RunOptions {\n task: string;\n model: string;\n system: string;\n budgetUsd?: number;\n /** JSONL transcript path — lets `reasonix replay` / `diff` audit this run. */\n transcript?: string;\n /** Zero or more MCP server specs. Each: `\"name=cmd args...\"` or `\"cmd args...\"`. */\n mcp?: string[];\n /** Global prefix — only honored when a single anonymous server is given. */\n mcpPrefix?: string;\n}\n\nasync function ensureApiKey(): Promise<string> {\n const existing = loadApiKey();\n if (existing) return existing;\n\n if (!stdin.isTTY) {\n process.stderr.write(t(\"run.missingApiKey\"));\n process.exit(1);\n }\n\n process.stdout.write(\n \"DeepSeek API key not configured.\\nGet one at https://platform.deepseek.com/api_keys\\n\",\n );\n const rl = createInterface({ input: stdin, output: stdout });\n try {\n while (true) {\n const answer = (await rl.question(\"API key › \")).trim();\n if (!answer) continue;\n if (!isPlausibleKey(answer)) {\n process.stdout.write(\"Key looks too short. Paste the full token (16+ chars, no spaces).\\n\");\n continue;\n }\n saveApiKey(answer);\n process.stdout.write(`Saved to ${defaultConfigPath()}\\n\\n`);\n return answer;\n }\n } finally {\n rl.close();\n }\n}\n\nexport async function runCommand(opts: RunOptions): Promise<void> {\n loadDotenv();\n const apiKey = await ensureApiKey();\n process.env.DEEPSEEK_API_KEY = apiKey;\n\n // Optional MCP setup — mirrors chat's flow. Must happen before loop\n // construction so the tools make it into the prefix.\n const cfg = readConfig();\n const normalizedSpecs = normalizeMcpConfig(\n cfg,\n opts.mcp && opts.mcp.length > 0 ? opts.mcp : undefined,\n );\n const clients: McpClient[] = [];\n let tools: ToolRegistry | undefined;\n let successCount = 0;\n if (normalizedSpecs.length > 0) {\n tools = new ToolRegistry();\n for (const spec of normalizedSpecs) {\n let label = \"anon\";\n let mcp: McpClient | undefined;\n try {\n label = spec.name ?? \"anon\";\n if (spec.disabled) {\n process.stderr.write(`${formatMcpLifecycleEvent({ state: \"disabled\", name: label })}\\n`);\n continue;\n }\n process.stderr.write(`${formatMcpLifecycleEvent({ state: \"handshake\", name: label })}\\n`);\n const t0 = Date.now();\n const prefix = spec.name\n ? `${spec.name}_`\n : normalizedSpecs.length === 1 && opts.mcpPrefix\n ? opts.mcpPrefix\n : \"\";\n if (spec.transport === \"stdio\") preflightStdioSpec(spec);\n const transport = buildTransportFromSpec(spec);\n mcp = new McpClient({ transport });\n await mcp.initialize();\n const bridge = await bridgeMcpTools(mcp, {\n registry: tools,\n namePrefix: prefix,\n serverName: label,\n onSlow: (info) =>\n process.stderr.write(\n `${formatMcpSlowToast({ name: info.serverName, p95Ms: info.p95Ms, sampleSize: info.sampleSize })}\\n`,\n ),\n });\n process.stderr.write(\n `${formatMcpLifecycleEvent({\n state: \"connected\",\n name: label,\n tools: bridge.registeredNames.length,\n ms: Date.now() - t0,\n })}\\n`,\n );\n clients.push(mcp);\n successCount++;\n } catch (err) {\n // Non-fatal — skip and continue, same as `reasonix chat`. A\n // one-shot `run` invocation with a broken MCP server otherwise\n // fails the whole run over a side-concern tool the task might\n // not even touch.\n await mcp?.close().catch(() => undefined);\n process.stderr.write(\n `${formatMcpLifecycleEvent({ state: \"failed\", name: label, reason: (err as Error).message })}\\n ${t(\"mcpLifecycle.failedSetupConfigHint\")}\\n`,\n );\n }\n }\n if (successCount === 0) tools = undefined;\n }\n\n const client = new DeepSeekClient({ baseUrl: loadBaseUrl() });\n const prefix = new ImmutablePrefix({\n system: opts.system,\n toolSpecs: tools?.specs(),\n });\n const loop = new CacheFirstLoop({\n client,\n prefix,\n tools,\n model: opts.model,\n budgetUsd: opts.budgetUsd,\n });\n const prefixHash = prefix.fingerprint;\n\n let transcriptStream: WriteStream | null = null;\n if (opts.transcript) {\n transcriptStream = openTranscriptFile(opts.transcript, {\n version: 1,\n source: \"reasonix run\",\n model: opts.model,\n startedAt: new Date().toISOString(),\n });\n // Also persist the user turn itself (the loop's event stream starts with\n // assistant output, not the prompt we're about to send).\n writeRecord(transcriptStream, {\n ts: new Date().toISOString(),\n turn: 1,\n role: \"user\",\n content: opts.task,\n });\n }\n\n try {\n for await (const ev of loop.step(opts.task)) {\n if (ev.role === \"assistant_delta\" && ev.content) process.stdout.write(ev.content);\n if (ev.role === \"tool\") process.stdout.write(`\\n[tool ${ev.toolName}] ${ev.content}\\n`);\n if (ev.role === \"error\") process.stderr.write(`\\n[error] ${ev.error}\\n`);\n if (ev.role === \"done\") process.stdout.write(\"\\n\");\n if (ev.role === \"assistant_final\" && ev.stats?.usage) {\n // `reasonix run` is often used in CI / scripting — we want\n // those turns to show up in `reasonix stats` too so the\n // dashboard reflects all DeepSeek spend, not just TUI sessions.\n appendUsage({ session: null, model: ev.stats.model, usage: ev.stats.usage });\n }\n // Persist every non-streaming event — deltas would flood the file and\n // aren't useful for replay (replay renders final content, not keystrokes).\n if (transcriptStream && ev.role !== \"assistant_delta\") {\n writeRecord(transcriptStream, recordFromLoopEvent(ev, { model: opts.model, prefixHash }));\n }\n }\n } finally {\n transcriptStream?.end();\n }\n\n const s = loop.stats.summary();\n process.stdout.write(\n `\\n— turns:${s.turns} cache:${(s.cacheHitRatio * 100).toFixed(1)}% ` +\n `cost:$${s.totalCostUsd.toFixed(6)} save-vs-claude:${s.savingsVsClaudePct.toFixed(1)}%\\n`,\n );\n if (opts.transcript) {\n process.stdout.write(`\\ntranscript: ${opts.transcript}\\n`);\n process.stdout.write(` → npx reasonix replay ${opts.transcript}\\n`);\n }\n\n for (const c of clients) await c.close();\n}\n"],"mappings":"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","names":["prefix"]}
|
|
@@ -13,8 +13,8 @@ import {
|
|
|
13
13
|
listCheckpoints,
|
|
14
14
|
loadCheckpoint,
|
|
15
15
|
restoreCheckpoint
|
|
16
|
-
} from "./chunk-
|
|
17
|
-
import "./chunk-
|
|
16
|
+
} from "./chunk-WF7TPVZM.js";
|
|
17
|
+
import "./chunk-E5WCLUIU.js";
|
|
18
18
|
import {
|
|
19
19
|
fetchSmitheryDetail,
|
|
20
20
|
handleToFetchResult,
|
|
@@ -24,11 +24,11 @@ import {
|
|
|
24
24
|
} from "./chunk-XJXDHAES.js";
|
|
25
25
|
import {
|
|
26
26
|
registerSemanticSearchTool
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-K6GUKSXH.js";
|
|
28
28
|
import {
|
|
29
29
|
BUILTIN_ALLOWLIST,
|
|
30
30
|
lineDiff
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-GDKB2PPK.js";
|
|
32
32
|
import {
|
|
33
33
|
PROJECT_MEMORY_FILE,
|
|
34
34
|
SKILLS_DIRNAME,
|
|
@@ -38,13 +38,13 @@ import {
|
|
|
38
38
|
parseFrontmatter,
|
|
39
39
|
resolveProjectMemoryWritePath,
|
|
40
40
|
validateSkillFrontmatter
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-FY4S7TJZ.js";
|
|
42
42
|
import "./chunk-PLHAZOLZ.js";
|
|
43
43
|
import {
|
|
44
44
|
checkOllamaStatus,
|
|
45
45
|
pullOllamaModel,
|
|
46
46
|
startOllamaDaemon
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-VMUUFWFF.js";
|
|
48
48
|
import {
|
|
49
49
|
INDEX_DIR_NAME,
|
|
50
50
|
buildIndex,
|
|
@@ -53,34 +53,35 @@ import {
|
|
|
53
53
|
querySemantic,
|
|
54
54
|
readIndexMeta,
|
|
55
55
|
walkChunks
|
|
56
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-YDPLF7XR.js";
|
|
57
57
|
import {
|
|
58
58
|
HOOK_EVENTS,
|
|
59
59
|
globalSettingsPath,
|
|
60
60
|
loadHooks,
|
|
61
61
|
projectSettingsPath
|
|
62
|
-
} from "./chunk-
|
|
62
|
+
} from "./chunk-BWYVFFKR.js";
|
|
63
63
|
import "./chunk-S4XVGLRW.js";
|
|
64
64
|
import {
|
|
65
|
+
deleteSession,
|
|
65
66
|
listSessions,
|
|
66
67
|
sessionPath,
|
|
67
68
|
sessionsDir
|
|
68
|
-
} from "./chunk-
|
|
69
|
+
} from "./chunk-RRXUIPWG.js";
|
|
69
70
|
import {
|
|
70
71
|
aggregateUsage,
|
|
71
72
|
bucketCacheHitRatio,
|
|
72
73
|
formatLogSize,
|
|
73
74
|
readUsageLog
|
|
74
|
-
} from "./chunk-
|
|
75
|
+
} from "./chunk-QVUFWDD2.js";
|
|
75
76
|
import {
|
|
76
77
|
DEEPSEEK_PRICING,
|
|
77
78
|
cacheSavingsUsd
|
|
78
|
-
} from "./chunk-
|
|
79
|
+
} from "./chunk-VJMBISEI.js";
|
|
79
80
|
import {
|
|
80
81
|
getLanguage,
|
|
81
82
|
getSupportedLanguages,
|
|
82
83
|
setLanguage
|
|
83
|
-
} from "./chunk-
|
|
84
|
+
} from "./chunk-KDRUEXII.js";
|
|
84
85
|
import {
|
|
85
86
|
DEFAULT_INDEX_EXCLUDES,
|
|
86
87
|
DEFAULT_MAX_FILE_BYTES,
|
|
@@ -103,7 +104,7 @@ import {
|
|
|
103
104
|
resolveSemanticEmbeddingConfig,
|
|
104
105
|
saveSemanticEmbeddingConfig,
|
|
105
106
|
writeConfig
|
|
106
|
-
} from "./chunk-
|
|
107
|
+
} from "./chunk-24A7FHGJ.js";
|
|
107
108
|
import {
|
|
108
109
|
VERSION
|
|
109
110
|
} from "./chunk-XXC2BYTV.js";
|
|
@@ -1196,7 +1197,10 @@ async function handleMcp(method, rest, body, ctx, query = new URLSearchParams())
|
|
|
1196
1197
|
}
|
|
1197
1198
|
if (method === "GET" && rest[0] === "specs") {
|
|
1198
1199
|
const cfg = readConfig(ctx.configPath);
|
|
1199
|
-
return {
|
|
1200
|
+
return {
|
|
1201
|
+
status: 200,
|
|
1202
|
+
body: { specs: cfg.mcp ?? [], failures: ctx.getMcpFailures?.() ?? [] }
|
|
1203
|
+
};
|
|
1200
1204
|
}
|
|
1201
1205
|
if (method === "POST" && rest[0] === "specs") {
|
|
1202
1206
|
const { spec } = parseBody5(body);
|
|
@@ -2582,7 +2586,8 @@ function saveSemanticConfigApi(rawBody, ctx) {
|
|
|
2582
2586
|
baseUrl: typeof parsed.openaiCompat?.baseUrl === "string" ? parsed.openaiCompat.baseUrl : existing.openaiCompat?.baseUrl,
|
|
2583
2587
|
apiKey: typeof parsed.openaiCompat?.apiKey === "string" ? parsed.openaiCompat.apiKey.trim() || existing.openaiCompat?.apiKey : existing.openaiCompat?.apiKey,
|
|
2584
2588
|
model: typeof parsed.openaiCompat?.model === "string" ? parsed.openaiCompat.model : existing.openaiCompat?.model,
|
|
2585
|
-
extraBody: parsed.openaiCompat?.extraBody === void 0 ? existing.openaiCompat?.extraBody : parsed.openaiCompat.extraBody
|
|
2589
|
+
extraBody: parsed.openaiCompat?.extraBody === void 0 ? existing.openaiCompat?.extraBody : parsed.openaiCompat.extraBody,
|
|
2590
|
+
batchSize: parsed.openaiCompat?.batchSize === void 0 ? existing.openaiCompat?.batchSize : Number.isInteger(parsed.openaiCompat.batchSize) && parsed.openaiCompat.batchSize > 0 ? parsed.openaiCompat.batchSize : void 0
|
|
2586
2591
|
}
|
|
2587
2592
|
};
|
|
2588
2593
|
try {
|
|
@@ -2619,7 +2624,8 @@ async function getProviderStatusFromConfig(config) {
|
|
|
2619
2624
|
baseUrl: config.openaiCompat.baseUrl,
|
|
2620
2625
|
apiKeySet: config.openaiCompat.apiKeySet,
|
|
2621
2626
|
model: config.openaiCompat.model,
|
|
2622
|
-
extraBodyKeys: Object.keys(config.openaiCompat.extraBody)
|
|
2627
|
+
extraBodyKeys: Object.keys(config.openaiCompat.extraBody),
|
|
2628
|
+
batchSize: config.openaiCompat.batchSize
|
|
2623
2629
|
};
|
|
2624
2630
|
}
|
|
2625
2631
|
const ollama = await checkOllamaStatus(config.ollama.model, config.ollama.baseUrl).catch(
|
|
@@ -2674,12 +2680,10 @@ function parseTranscript(path, maxBytes = 4 * 1024 * 1024) {
|
|
|
2674
2680
|
}
|
|
2675
2681
|
return out;
|
|
2676
2682
|
}
|
|
2677
|
-
async function handleSessions(method, rest, _body,
|
|
2678
|
-
if (method
|
|
2679
|
-
return { status: 405, body: { error: "GET only" } };
|
|
2680
|
-
}
|
|
2681
|
-
if (rest.length === 0) {
|
|
2683
|
+
async function handleSessions(method, rest, _body, ctx) {
|
|
2684
|
+
if (method === "GET" && rest.length === 0) {
|
|
2682
2685
|
const sessions = listSessions();
|
|
2686
|
+
const currentName2 = ctx.getSessionName?.() ?? null;
|
|
2683
2687
|
return {
|
|
2684
2688
|
status: 200,
|
|
2685
2689
|
body: {
|
|
@@ -2689,25 +2693,69 @@ async function handleSessions(method, rest, _body, _ctx) {
|
|
|
2689
2693
|
size: s.size,
|
|
2690
2694
|
messageCount: s.messageCount,
|
|
2691
2695
|
mtime: s.mtime.getTime()
|
|
2692
|
-
}))
|
|
2696
|
+
})),
|
|
2697
|
+
currentSession: currentName2,
|
|
2698
|
+
canSwitch: Boolean(ctx.switchSession)
|
|
2693
2699
|
}
|
|
2694
2700
|
};
|
|
2695
2701
|
}
|
|
2702
|
+
if (method === "POST" && rest.length === 1 && rest[0] === "new") {
|
|
2703
|
+
if (!ctx.switchSession) {
|
|
2704
|
+
return {
|
|
2705
|
+
status: 503,
|
|
2706
|
+
body: { error: "live session swap requires an attached CLI session." }
|
|
2707
|
+
};
|
|
2708
|
+
}
|
|
2709
|
+
const result = ctx.switchSession(void 0);
|
|
2710
|
+
if (!result.ok) return { status: 500, body: { error: result.reason } };
|
|
2711
|
+
return { status: 200, body: { ok: true } };
|
|
2712
|
+
}
|
|
2713
|
+
if (rest.length === 0) {
|
|
2714
|
+
return { status: 405, body: { error: `method ${method} not supported on /sessions` } };
|
|
2715
|
+
}
|
|
2696
2716
|
const name = decodeURIComponent(rest[0]);
|
|
2697
2717
|
const path = sessionPath(name);
|
|
2698
|
-
|
|
2699
|
-
|
|
2718
|
+
const currentName = ctx.getSessionName?.() ?? null;
|
|
2719
|
+
if (method === "POST" && rest[1] === "switch") {
|
|
2720
|
+
if (!ctx.switchSession) {
|
|
2721
|
+
return {
|
|
2722
|
+
status: 503,
|
|
2723
|
+
body: { error: "live session swap requires an attached CLI session." }
|
|
2724
|
+
};
|
|
2725
|
+
}
|
|
2726
|
+
if (!existsSync8(path)) return { status: 404, body: { error: `no such session: ${name}` } };
|
|
2727
|
+
const result = ctx.switchSession(name);
|
|
2728
|
+
if (!result.ok) return { status: 500, body: { error: result.reason } };
|
|
2729
|
+
return { status: 200, body: { ok: true } };
|
|
2700
2730
|
}
|
|
2701
|
-
|
|
2702
|
-
|
|
2703
|
-
|
|
2704
|
-
body: {
|
|
2705
|
-
name,
|
|
2706
|
-
path,
|
|
2707
|
-
messages,
|
|
2708
|
-
messageCount: messages.length
|
|
2731
|
+
if (method === "DELETE") {
|
|
2732
|
+
if (rest.length !== 1) {
|
|
2733
|
+
return { status: 405, body: { error: `method ${method} not supported on this path` } };
|
|
2709
2734
|
}
|
|
2710
|
-
|
|
2735
|
+
if (currentName && name === currentName) {
|
|
2736
|
+
return {
|
|
2737
|
+
status: 409,
|
|
2738
|
+
body: { error: "cannot delete the currently-active session \u2014 switch away first." }
|
|
2739
|
+
};
|
|
2740
|
+
}
|
|
2741
|
+
if (!existsSync8(path)) return { status: 404, body: { error: `no such session: ${name}` } };
|
|
2742
|
+
const removed = deleteSession(name);
|
|
2743
|
+
if (!removed) return { status: 500, body: { error: `failed to delete ${name}` } };
|
|
2744
|
+
ctx.audit?.({ ts: Date.now(), action: "delete-session", payload: { name } });
|
|
2745
|
+
return { status: 200, body: { ok: true, deleted: name } };
|
|
2746
|
+
}
|
|
2747
|
+
if (method === "GET") {
|
|
2748
|
+
if (rest.length !== 1) {
|
|
2749
|
+
return { status: 405, body: { error: `method ${method} not supported on this path` } };
|
|
2750
|
+
}
|
|
2751
|
+
if (!existsSync8(path)) return { status: 404, body: { error: `no such session: ${name}` } };
|
|
2752
|
+
const messages = parseTranscript(path);
|
|
2753
|
+
return {
|
|
2754
|
+
status: 200,
|
|
2755
|
+
body: { name, path, messages, messageCount: messages.length }
|
|
2756
|
+
};
|
|
2757
|
+
}
|
|
2758
|
+
return { status: 405, body: { error: `method ${method} not supported on this path` } };
|
|
2711
2759
|
}
|
|
2712
2760
|
|
|
2713
2761
|
// src/server/api/settings.ts
|
|
@@ -3500,4 +3548,4 @@ export {
|
|
|
3500
3548
|
readBody,
|
|
3501
3549
|
startDashboardServer
|
|
3502
3550
|
};
|
|
3503
|
-
//# sourceMappingURL=server-
|
|
3551
|
+
//# sourceMappingURL=server-P6V2G3P6.js.map
|