reasonix 0.35.0 → 0.36.1
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 +17 -0
- package/README.zh-CN.md +17 -0
- package/dashboard/dist/app.js +42 -3
- package/dashboard/dist/app.js.map +1 -1
- package/dist/cli/{chat-AB5D7I3V.js → chat-7AF5SPAJ.js} +16 -15
- package/dist/cli/{chunk-RJ5GUVS2.js → chunk-2MCYGFLK.js} +10 -10
- package/dist/cli/chunk-2MCYGFLK.js.map +1 -0
- package/dist/cli/{chunk-GPHBJWCV.js → chunk-3OBWN2NH.js} +650 -493
- package/dist/cli/chunk-3OBWN2NH.js.map +1 -0
- package/dist/cli/{chunk-SW3CCXEV.js → chunk-4Q3GRJIU.js} +2 -2
- package/dist/cli/{chunk-5JXXEPDM.js → chunk-BHLHOS5Y.js} +8 -2
- package/dist/cli/chunk-BHLHOS5Y.js.map +1 -0
- package/dist/cli/{chunk-IDP65VCC.js → chunk-BJ376EN3.js} +9 -8
- package/dist/cli/chunk-BJ376EN3.js.map +1 -0
- package/dist/cli/{chunk-2AWTGJ2C.js → chunk-CRPQUBP6.js} +26 -9
- package/dist/cli/{chunk-2AWTGJ2C.js.map → chunk-CRPQUBP6.js.map} +1 -1
- package/dist/cli/{chunk-JJTOZPM3.js → chunk-IPCPEZWQ.js} +2 -2
- package/dist/cli/{chunk-SN7YH6FC.js → chunk-MLXUGPJE.js} +168 -35
- package/dist/cli/chunk-MLXUGPJE.js.map +1 -0
- package/dist/cli/{chunk-SX6L4HZZ.js → chunk-QPNZWUZF.js} +53 -6
- package/dist/cli/chunk-QPNZWUZF.js.map +1 -0
- package/dist/cli/{chunk-N2IC4XDL.js → chunk-QRUQ2BFT.js} +13 -8
- package/dist/cli/{chunk-N2IC4XDL.js.map → chunk-QRUQ2BFT.js.map} +1 -1
- package/dist/cli/{chunk-KZHMKOJH.js → chunk-T52GAWPP.js} +25 -3
- package/dist/cli/chunk-T52GAWPP.js.map +1 -0
- package/dist/cli/{chunk-I6YIAK6C.js → chunk-UNMYFZPZ.js} +2 -2
- package/dist/cli/{update-4TJWRUIN.js → chunk-WJ3YX4PZ.js} +51 -12
- package/dist/cli/chunk-WJ3YX4PZ.js.map +1 -0
- package/dist/cli/{chunk-RXGEGA7K.js → chunk-XQIFIB3U.js} +18 -7
- package/dist/cli/{chunk-RXGEGA7K.js.map → chunk-XQIFIB3U.js.map} +1 -1
- package/dist/cli/{chunk-2EBODRRO.js → chunk-ZJR4QLXB.js} +5 -1
- package/dist/cli/{chunk-2EBODRRO.js.map → chunk-ZJR4QLXB.js.map} +1 -1
- package/dist/cli/{code-XBEFHXVM.js → code-SWI4EBME.js} +19 -17
- package/dist/cli/code-SWI4EBME.js.map +1 -0
- package/dist/cli/{commands-MEZPSEHV.js → commands-FE2UDFBC.js} +3 -3
- package/dist/cli/{commit-CE4EFTUQ.js → commit-3IAGB22T.js} +5 -4
- package/dist/cli/commit-3IAGB22T.js.map +1 -0
- package/dist/cli/{doctor-A565GMWD.js → doctor-DKD34EFD.js} +7 -7
- package/dist/cli/index.js +33 -31
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/{mcp-LDFK5QJI.js → mcp-2RDEQST6.js} +2 -2
- package/dist/cli/{mcp-browse-FYHEITCM.js → mcp-browse-VM5GLRBQ.js} +2 -2
- package/dist/cli/{mcp-inspect-T2HBR22P.js → mcp-inspect-CWSVCZUQ.js} +3 -3
- package/dist/cli/{replay-P2WC5N5X.js → replay-D7RT2DR7.js} +2 -2
- package/dist/cli/{run-QBWJETS3.js → run-FK5UBIIM.js} +11 -10
- package/dist/cli/run-FK5UBIIM.js.map +1 -0
- package/dist/cli/{server-SMLVXIW4.js → server-W4XJK4GX.js} +16 -16
- package/dist/cli/{server-SMLVXIW4.js.map → server-W4XJK4GX.js.map} +1 -1
- package/dist/cli/{sessions-55RIZVWG.js → sessions-YZXWMIWW.js} +8 -8
- package/dist/cli/{setup-QXMONZ4P.js → setup-IIAJXHP4.js} +196 -130
- package/dist/cli/setup-IIAJXHP4.js.map +1 -0
- package/dist/cli/update-GUCWB4UN.js +13 -0
- package/dist/cli/update-GUCWB4UN.js.map +1 -0
- package/dist/cli/{version-Q2HA3AAC.js → version-DWD6RLIU.js} +10 -10
- package/dist/index.d.ts +14 -2
- package/dist/index.js +270 -47
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/cli/chunk-5JXXEPDM.js.map +0 -1
- package/dist/cli/chunk-GPHBJWCV.js.map +0 -1
- package/dist/cli/chunk-IDP65VCC.js.map +0 -1
- package/dist/cli/chunk-KZHMKOJH.js.map +0 -1
- package/dist/cli/chunk-RJ5GUVS2.js.map +0 -1
- package/dist/cli/chunk-SN7YH6FC.js.map +0 -1
- package/dist/cli/chunk-SX6L4HZZ.js.map +0 -1
- package/dist/cli/code-XBEFHXVM.js.map +0 -1
- package/dist/cli/commit-CE4EFTUQ.js.map +0 -1
- package/dist/cli/run-QBWJETS3.js.map +0 -1
- package/dist/cli/setup-QXMONZ4P.js.map +0 -1
- package/dist/cli/update-4TJWRUIN.js.map +0 -1
- /package/dist/cli/{chat-AB5D7I3V.js.map → chat-7AF5SPAJ.js.map} +0 -0
- /package/dist/cli/{chunk-SW3CCXEV.js.map → chunk-4Q3GRJIU.js.map} +0 -0
- /package/dist/cli/{chunk-JJTOZPM3.js.map → chunk-IPCPEZWQ.js.map} +0 -0
- /package/dist/cli/{chunk-I6YIAK6C.js.map → chunk-UNMYFZPZ.js.map} +0 -0
- /package/dist/cli/{commands-MEZPSEHV.js.map → commands-FE2UDFBC.js.map} +0 -0
- /package/dist/cli/{doctor-A565GMWD.js.map → doctor-DKD34EFD.js.map} +0 -0
- /package/dist/cli/{mcp-LDFK5QJI.js.map → mcp-2RDEQST6.js.map} +0 -0
- /package/dist/cli/{mcp-browse-FYHEITCM.js.map → mcp-browse-VM5GLRBQ.js.map} +0 -0
- /package/dist/cli/{mcp-inspect-T2HBR22P.js.map → mcp-inspect-CWSVCZUQ.js.map} +0 -0
- /package/dist/cli/{replay-P2WC5N5X.js.map → replay-D7RT2DR7.js.map} +0 -0
- /package/dist/cli/{sessions-55RIZVWG.js.map → sessions-YZXWMIWW.js.map} +0 -0
- /package/dist/cli/{version-Q2HA3AAC.js.map → version-DWD6RLIU.js.map} +0 -0
|
@@ -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 readConfig,\n saveApiKey,\n} from \"../../config.js\";\nimport { loadDotenv } from \"../../env.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 { parseMcpSpec } from \"../../mcp/spec.js\";\nimport { SseTransport } from \"../../mcp/sse.js\";\nimport { type McpTransport, StdioTransport } from \"../../mcp/stdio.js\";\nimport { StreamableHttpTransport } from \"../../mcp/streamable-http.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(\n \"DEEPSEEK_API_KEY is not set and stdin is not a TTY (cannot prompt).\\n\" +\n \"Set the env var, or run `reasonix chat` once interactively to save a key.\\n\",\n );\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 requestedSpecs = opts.mcp ?? [];\n const clients: McpClient[] = [];\n let tools: ToolRegistry | undefined;\n let successCount = 0;\n const disabledNames = new Set(readConfig().mcpDisabled ?? []);\n if (requestedSpecs.length > 0) {\n tools = new ToolRegistry();\n for (const raw of requestedSpecs) {\n let label = \"anon\";\n let mcp: McpClient | undefined;\n try {\n const spec = parseMcpSpec(raw);\n label = spec.name ?? \"anon\";\n if (spec.name && disabledNames.has(spec.name)) {\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 : requestedSpecs.length === 1 && opts.mcpPrefix\n ? opts.mcpPrefix\n : \"\";\n if (spec.transport === \"stdio\") preflightStdioSpec(spec);\n const transport: McpTransport =\n spec.transport === \"sse\"\n ? new SseTransport({ url: spec.url })\n : spec.transport === \"streamable-http\"\n ? new StreamableHttpTransport({ url: spec.url })\n : new StdioTransport({ command: spec.command, args: spec.args });\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 → run \\`reasonix setup\\` to remove broken entries from your saved config.\\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"]}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
registerSemanticSearchTool
|
|
4
|
+
} from "./chunk-4Q3GRJIU.js";
|
|
2
5
|
import {
|
|
3
6
|
readEventLogFile,
|
|
4
7
|
recentEventFiles
|
|
5
8
|
} from "./chunk-FWGEHRB7.js";
|
|
6
|
-
import {
|
|
7
|
-
registerSemanticSearchTool
|
|
8
|
-
} from "./chunk-SW3CCXEV.js";
|
|
9
9
|
import {
|
|
10
10
|
SLASH_COMMANDS,
|
|
11
11
|
listPlanArchives
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-G3XNWSFN.js";
|
|
12
|
+
} from "./chunk-2MCYGFLK.js";
|
|
14
13
|
import {
|
|
15
14
|
fetchSmitheryDetail,
|
|
16
15
|
handleToFetchResult,
|
|
@@ -18,9 +17,10 @@ import {
|
|
|
18
17
|
openRegistry,
|
|
19
18
|
specStringFor
|
|
20
19
|
} from "./chunk-SOZE7V7V.js";
|
|
20
|
+
import "./chunk-G3XNWSFN.js";
|
|
21
21
|
import {
|
|
22
22
|
BUILTIN_ALLOWLIST
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-QPNZWUZF.js";
|
|
24
24
|
import {
|
|
25
25
|
PROJECT_MEMORY_FILE,
|
|
26
26
|
SKILLS_DIRNAME,
|
|
@@ -38,16 +38,13 @@ import {
|
|
|
38
38
|
readIndexMeta,
|
|
39
39
|
startOllamaDaemon,
|
|
40
40
|
walkChunks
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-XQIFIB3U.js";
|
|
42
42
|
import {
|
|
43
43
|
HOOK_EVENTS,
|
|
44
44
|
globalSettingsPath,
|
|
45
45
|
loadHooks,
|
|
46
46
|
projectSettingsPath
|
|
47
|
-
} from "./chunk-
|
|
48
|
-
import {
|
|
49
|
-
VERSION
|
|
50
|
-
} from "./chunk-2AWTGJ2C.js";
|
|
47
|
+
} from "./chunk-IPCPEZWQ.js";
|
|
51
48
|
import "./chunk-5X7LZJDE.js";
|
|
52
49
|
import {
|
|
53
50
|
listSessions,
|
|
@@ -58,7 +55,7 @@ import {
|
|
|
58
55
|
getLanguage,
|
|
59
56
|
getSupportedLanguages,
|
|
60
57
|
setLanguage
|
|
61
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-MLXUGPJE.js";
|
|
62
59
|
import {
|
|
63
60
|
DEFAULT_INDEX_EXCLUDES,
|
|
64
61
|
DEFAULT_MAX_FILE_BYTES,
|
|
@@ -78,7 +75,7 @@ import {
|
|
|
78
75
|
resolveSemanticEmbeddingConfig,
|
|
79
76
|
saveSemanticEmbeddingConfig,
|
|
80
77
|
writeConfig
|
|
81
|
-
} from "./chunk-
|
|
78
|
+
} from "./chunk-BHLHOS5Y.js";
|
|
82
79
|
import "./chunk-WUI3P4RA.js";
|
|
83
80
|
import {
|
|
84
81
|
aggregateUsage,
|
|
@@ -90,6 +87,9 @@ import {
|
|
|
90
87
|
DEEPSEEK_PRICING,
|
|
91
88
|
cacheSavingsUsd
|
|
92
89
|
} from "./chunk-ORM6PK57.js";
|
|
90
|
+
import {
|
|
91
|
+
VERSION
|
|
92
|
+
} from "./chunk-CRPQUBP6.js";
|
|
93
93
|
|
|
94
94
|
// src/server/index.ts
|
|
95
95
|
import { randomBytes } from "crypto";
|
|
@@ -2194,7 +2194,7 @@ async function getProviderStatusFromConfig(config) {
|
|
|
2194
2194
|
);
|
|
2195
2195
|
return {
|
|
2196
2196
|
kind: "ollama",
|
|
2197
|
-
ready: ollama.
|
|
2197
|
+
ready: ollama.daemonRunning && ollama.modelPulled,
|
|
2198
2198
|
baseUrl: config.ollama.baseUrl,
|
|
2199
2199
|
...ollama
|
|
2200
2200
|
};
|
|
@@ -2336,7 +2336,7 @@ async function handleSettings(method, _rest, body, ctx) {
|
|
|
2336
2336
|
}
|
|
2337
2337
|
if (fields.apiKey !== void 0) {
|
|
2338
2338
|
if (typeof fields.apiKey !== "string" || !isPlausibleKey(fields.apiKey)) {
|
|
2339
|
-
return { status: 400, body: { error: "apiKey must be
|
|
2339
|
+
return { status: 400, body: { error: "apiKey must be 16+ chars with no whitespace" } };
|
|
2340
2340
|
}
|
|
2341
2341
|
cfg.apiKey = fields.apiKey.trim();
|
|
2342
2342
|
changed.push("apiKey");
|
|
@@ -2965,4 +2965,4 @@ export {
|
|
|
2965
2965
|
readBody,
|
|
2966
2966
|
startDashboardServer
|
|
2967
2967
|
};
|
|
2968
|
-
//# sourceMappingURL=server-
|
|
2968
|
+
//# sourceMappingURL=server-W4XJK4GX.js.map
|