jinzd-ai-cli 0.4.271 → 0.4.273
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{batch-FPDT2USZ.js → batch-LOW3GM26.js} +2 -2
- package/dist/{chat-index-7MMTGQNA.js → chat-index-2D5GK2DB.js} +2 -2
- package/dist/{chat-index-Q6BKWWAM.js → chat-index-TDU3S2MG.js} +2 -2
- package/dist/{chunk-B5TYJO7V.js → chunk-3FEZSLGI.js} +51 -6
- package/dist/{chunk-BFPF3JF2.js → chunk-4FIDMC2K.js} +3 -3
- package/dist/{chunk-OBULDJSU.js → chunk-CGDYO52A.js} +1 -1
- package/dist/{chunk-FT3WS5PG.js → chunk-EDAUDILT.js} +1 -1
- package/dist/{chunk-PDRAOFGI.js → chunk-FHXLAJJG.js} +1 -1
- package/dist/{chunk-RNDHIERN.js → chunk-FN7DE4HA.js} +3 -3
- package/dist/{chunk-RLAUMACS.js → chunk-FNLWPYP5.js} +1 -1
- package/dist/{chunk-YVTASHS5.js → chunk-FSC6KEWU.js} +51 -6
- package/dist/{chunk-6RPGQ5CG.js → chunk-GHWZVPUV.js} +1 -1
- package/dist/{chunk-5JFRM47R.js → chunk-LEK5WGKV.js} +1 -1
- package/dist/{chunk-VPXNLE7E.js → chunk-M3NXF4GD.js} +2 -2
- package/dist/{chunk-PG7O7N7D.js → chunk-MTQBSOZW.js} +3 -3
- package/dist/{chunk-JQXXPTWL.js → chunk-MX75TNE5.js} +1 -1
- package/dist/{chunk-V26ZMB3D.js → chunk-R4YGDJPL.js} +5 -5
- package/dist/{chunk-PMRU2CAF.js → chunk-T65VFCID.js} +1 -1
- package/dist/{chunk-OSYK6D4G.js → chunk-WSCZRQDR.js} +1 -1
- package/dist/{chunk-ZWEZNKDW.js → chunk-YOVHMQEJ.js} +1 -1
- package/dist/{chunk-4UNRDXZV.js → chunk-Z3UXZ5EI.js} +2 -2
- package/dist/{chunk-2RN4T4XD.js → chunk-ZWCQQZT5.js} +1 -1
- package/dist/{ci-VPN5RWCO.js → ci-C5YMQXCS.js} +4 -4
- package/dist/{ci-format-GKXVCVME.js → ci-format-R6EMNOGZ.js} +2 -2
- package/dist/{constants-Y43DJFGV.js → constants-QJCNMBPJ.js} +1 -1
- package/dist/{doctor-cli-RZGZB2TF.js → doctor-cli-5CM2I6OF.js} +4 -4
- package/dist/electron-server.js +162 -80
- package/dist/{hub-FJWP6SDG.js → hub-7JBSZOSD.js} +2 -2
- package/dist/index.js +23 -23
- package/dist/{persist-A2QSXYFY.js → persist-PQM4BRI4.js} +3 -3
- package/dist/{persistent-memory-IR47JCTF.js → persistent-memory-4E53HW3U.js} +3 -3
- package/dist/{persistent-memory-KX2R67AT.js → persistent-memory-KYRY56PG.js} +3 -3
- package/dist/{pr-NTQ3N4B4.js → pr-NPUGZSXB.js} +4 -4
- package/dist/{run-tests-25CNXJ4N.js → run-tests-5FHQ5IBX.js} +2 -2
- package/dist/{run-tests-UTES6HCT.js → run-tests-SU5CDQKF.js} +2 -2
- package/dist/{server-IGCCSX4B.js → server-77YS5NNN.js} +7 -7
- package/dist/{server-R56CVHCM.js → server-ER36M7TR.js} +149 -67
- package/dist/{task-orchestrator-MFYEKR2I.js → task-orchestrator-56PQ7LGV.js} +7 -7
- package/dist/{usage-FHX7PQQH.js → usage-3YATXRFZ.js} +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
sessionHasMeaningfulContent,
|
|
26
26
|
setupProxy,
|
|
27
27
|
stripRoutingTags
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-4FIDMC2K.js";
|
|
29
29
|
import {
|
|
30
30
|
CostTracker,
|
|
31
31
|
computeCost,
|
|
@@ -54,7 +54,7 @@ import {
|
|
|
54
54
|
setMaxOutputCap,
|
|
55
55
|
spawnAgentContext,
|
|
56
56
|
undoStack
|
|
57
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-R4YGDJPL.js";
|
|
58
58
|
import {
|
|
59
59
|
buildReviewPrompt,
|
|
60
60
|
buildSecurityReviewPrompt
|
|
@@ -70,7 +70,7 @@ import {
|
|
|
70
70
|
clearChatIndex,
|
|
71
71
|
getChatIndexStatus,
|
|
72
72
|
searchChatMemory
|
|
73
|
-
} from "./chunk-
|
|
73
|
+
} from "./chunk-GHWZVPUV.js";
|
|
74
74
|
import {
|
|
75
75
|
addMemoryEntry,
|
|
76
76
|
backupMemoryStore,
|
|
@@ -95,7 +95,7 @@ import {
|
|
|
95
95
|
touchMemoryReferences,
|
|
96
96
|
updateMemoryApproval,
|
|
97
97
|
updateMemoryEntry
|
|
98
|
-
} from "./chunk-
|
|
98
|
+
} from "./chunk-Z3UXZ5EI.js";
|
|
99
99
|
import "./chunk-GLSR2NR3.js";
|
|
100
100
|
import "./chunk-UUSRWSSX.js";
|
|
101
101
|
import "./chunk-CKH4KQ4E.js";
|
|
@@ -108,18 +108,18 @@ import {
|
|
|
108
108
|
import {
|
|
109
109
|
SessionManager,
|
|
110
110
|
getContentText
|
|
111
|
-
} from "./chunk-
|
|
111
|
+
} from "./chunk-CGDYO52A.js";
|
|
112
112
|
import "./chunk-NYNSYLFY.js";
|
|
113
113
|
import {
|
|
114
114
|
DEFAULT_PATTERNS,
|
|
115
115
|
scanString
|
|
116
|
-
} from "./chunk-
|
|
116
|
+
} from "./chunk-3FEZSLGI.js";
|
|
117
117
|
import {
|
|
118
118
|
buildDoctorReport,
|
|
119
119
|
formatDoctorReport,
|
|
120
120
|
loadContextFiles,
|
|
121
121
|
writeCrashLog
|
|
122
|
-
} from "./chunk-
|
|
122
|
+
} from "./chunk-MTQBSOZW.js";
|
|
123
123
|
import {
|
|
124
124
|
describePlugin,
|
|
125
125
|
getActivePluginAssets,
|
|
@@ -136,14 +136,14 @@ import {
|
|
|
136
136
|
trustHook,
|
|
137
137
|
trustPlugin,
|
|
138
138
|
untrustHook
|
|
139
|
-
} from "./chunk-
|
|
139
|
+
} from "./chunk-FHXLAJJG.js";
|
|
140
140
|
import {
|
|
141
141
|
ProviderRegistry,
|
|
142
142
|
listBuiltInProviderMetadata
|
|
143
143
|
} from "./chunk-AUEX6RNY.js";
|
|
144
144
|
import {
|
|
145
145
|
ConfigManager
|
|
146
|
-
} from "./chunk-
|
|
146
|
+
} from "./chunk-T65VFCID.js";
|
|
147
147
|
import {
|
|
148
148
|
CONTENT_ONLY_STREAM_REMINDER,
|
|
149
149
|
TEE_FINAL_USER_NUDGE,
|
|
@@ -183,7 +183,7 @@ import {
|
|
|
183
183
|
import {
|
|
184
184
|
fileCheckpoints
|
|
185
185
|
} from "./chunk-4BKXL7SM.js";
|
|
186
|
-
import "./chunk-
|
|
186
|
+
import "./chunk-WSCZRQDR.js";
|
|
187
187
|
import {
|
|
188
188
|
AGENTIC_BEHAVIOR_GUIDELINE,
|
|
189
189
|
AUTHOR,
|
|
@@ -201,7 +201,7 @@ import {
|
|
|
201
201
|
SKILLS_DIR_NAME,
|
|
202
202
|
VERSION,
|
|
203
203
|
buildUserIdentityPrompt
|
|
204
|
-
} from "./chunk-
|
|
204
|
+
} from "./chunk-EDAUDILT.js";
|
|
205
205
|
|
|
206
206
|
// src/index.ts
|
|
207
207
|
import { program } from "commander";
|
|
@@ -1407,7 +1407,7 @@ No tools match "${filter}".
|
|
|
1407
1407
|
const { join: join6 } = await import("path");
|
|
1408
1408
|
const { existsSync: existsSync6 } = await import("fs");
|
|
1409
1409
|
const { getGitRoot: getGitRoot2 } = await import("./git-context-EXOEHQSF.js");
|
|
1410
|
-
const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-
|
|
1410
|
+
const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-QJCNMBPJ.js");
|
|
1411
1411
|
const { approveProject, hashMcpFile } = await import("./project-trust-NKYHL3VZ.js");
|
|
1412
1412
|
const cwd = process.cwd();
|
|
1413
1413
|
const projectRoot = getGitRoot2(cwd) ?? cwd;
|
|
@@ -2327,7 +2327,7 @@ function createReviewCommands() {
|
|
|
2327
2327
|
usage: "/test [command|filter]",
|
|
2328
2328
|
async execute(args, ctx) {
|
|
2329
2329
|
try {
|
|
2330
|
-
const { executeTests } = await import("./run-tests-
|
|
2330
|
+
const { executeTests } = await import("./run-tests-SU5CDQKF.js");
|
|
2331
2331
|
const argStr = args.join(" ").trim();
|
|
2332
2332
|
let testArgs = {};
|
|
2333
2333
|
if (argStr) {
|
|
@@ -5710,7 +5710,7 @@ Session '${this.resumeSessionId}' not found.
|
|
|
5710
5710
|
})();
|
|
5711
5711
|
void (async () => {
|
|
5712
5712
|
try {
|
|
5713
|
-
const { getChatIndexStatus: getChatIndexStatus2, buildChatIndex: buildChatIndex2 } = await import("./chat-index-
|
|
5713
|
+
const { getChatIndexStatus: getChatIndexStatus2, buildChatIndex: buildChatIndex2 } = await import("./chat-index-2D5GK2DB.js");
|
|
5714
5714
|
const initial = getChatIndexStatus2();
|
|
5715
5715
|
this.chatMemoryStatus = {
|
|
5716
5716
|
exists: initial.exists,
|
|
@@ -7546,7 +7546,7 @@ program.command("web").description("Start Web UI server with browser-based chat
|
|
|
7546
7546
|
console.error("Error: Invalid port number. Must be between 1 and 65535.");
|
|
7547
7547
|
process.exit(1);
|
|
7548
7548
|
}
|
|
7549
|
-
const { startWebServer } = await import("./server-
|
|
7549
|
+
const { startWebServer } = await import("./server-ER36M7TR.js");
|
|
7550
7550
|
await startWebServer({ port, host: options.host });
|
|
7551
7551
|
});
|
|
7552
7552
|
program.command("user [action] [username]").description("Manage Web UI users (list | create <name> | delete <name> | reset-password <name> | logout-all <name> | migrate <name>)").action(async (action, username) => {
|
|
@@ -7713,11 +7713,11 @@ program.command("sessions").description("List recent conversation sessions").opt
|
|
|
7713
7713
|
console.log(footer + "\n");
|
|
7714
7714
|
});
|
|
7715
7715
|
program.command("usage").description("Show token + cost usage grouped by provider/model (cross-session)").option("--days <n>", "Only the last N days (inclusive of today)").option("--month <ym>", "Only a specific month, format YYYY-MM (e.g. 2026-06)").option("--json", "Output as JSON (for scripting)").action(async (options) => {
|
|
7716
|
-
const { runUsageCli } = await import("./usage-
|
|
7716
|
+
const { runUsageCli } = await import("./usage-3YATXRFZ.js");
|
|
7717
7717
|
await runUsageCli(options);
|
|
7718
7718
|
});
|
|
7719
7719
|
program.command("doctor").description("Health check: API keys, config, MCP, recent crashes, tool usage, disk usage").option("--json", "Output as JSON (for scripting)").option("--reset-stats", "Reset accumulated tool usage statistics").action(async (options) => {
|
|
7720
|
-
const { runDoctorCli } = await import("./doctor-cli-
|
|
7720
|
+
const { runDoctorCli } = await import("./doctor-cli-5CM2I6OF.js");
|
|
7721
7721
|
const argv = process.argv.slice(2);
|
|
7722
7722
|
await runDoctorCli({
|
|
7723
7723
|
json: !!options.json || argv.includes("--json"),
|
|
@@ -7726,7 +7726,7 @@ program.command("doctor").description("Health check: API keys, config, MCP, rece
|
|
|
7726
7726
|
});
|
|
7727
7727
|
program.command("batch <action> [arg] [arg2]").description("Anthropic Message Batches: submit | list | status <id> | results <id> [out] | cancel <id>").option("--dry-run", "Parse and validate input without submitting (submit only)").action(async (action, arg, arg2, options) => {
|
|
7728
7728
|
try {
|
|
7729
|
-
const batch = await import("./batch-
|
|
7729
|
+
const batch = await import("./batch-LOW3GM26.js");
|
|
7730
7730
|
switch (action) {
|
|
7731
7731
|
case "submit":
|
|
7732
7732
|
if (!arg) {
|
|
@@ -7769,7 +7769,7 @@ program.command("batch <action> [arg] [arg2]").description("Anthropic Message Ba
|
|
|
7769
7769
|
}
|
|
7770
7770
|
});
|
|
7771
7771
|
program.command("mcp-serve").description("Start an MCP server over STDIO, exposing aicli's built-in tools to Claude Desktop / Cursor / other MCP clients").option("--allow-destructive", "Allow bash / run_interactive / task_create (always destructive in MCP mode)").option("--allow-outside-cwd", "Allow tool path arguments to escape the sandbox root \u2014 disabled by default").option("--tools <list>", "Comma-separated whitelist of tools to expose (default: all eligible tools)").option("--cwd <path>", "Working directory AND sandbox root (default: current directory)").action(async (options) => {
|
|
7772
|
-
const { startMcpServer } = await import("./server-
|
|
7772
|
+
const { startMcpServer } = await import("./server-77YS5NNN.js");
|
|
7773
7773
|
await startMcpServer({
|
|
7774
7774
|
allowDestructive: !!options.allowDestructive,
|
|
7775
7775
|
allowOutsideCwd: !!options.allowOutsideCwd,
|
|
@@ -7782,7 +7782,7 @@ program.command("pr <action> [target]").description("PR review helpers: review |
|
|
|
7782
7782
|
console.error(`Unknown pr action: ${action}. Use review | security-review | summarize.`);
|
|
7783
7783
|
process.exit(1);
|
|
7784
7784
|
}
|
|
7785
|
-
const { runPrCli } = await import("./pr-
|
|
7785
|
+
const { runPrCli } = await import("./pr-NPUGZSXB.js");
|
|
7786
7786
|
const result = await runPrCli({
|
|
7787
7787
|
action,
|
|
7788
7788
|
target,
|
|
@@ -7802,8 +7802,8 @@ program.command("pr <action> [target]").description("PR review helpers: review |
|
|
|
7802
7802
|
process.exit(result.exitCode);
|
|
7803
7803
|
});
|
|
7804
7804
|
program.command("ci").description("Headless PR review (code + security) \u2014 reads git/gh diff, optionally posts to PR. Designed for GitHub Actions.").option("--pr <num>", "PR number or URL; diff fetched via gh pr diff <value>", (v) => /^#?\d+$/.test(v) ? parseInt(v.replace(/^#/, ""), 10) : v).option("--base <ref>", "Base ref for git diff <ref>...HEAD (ignored when --pr set)").option("--post", "Post review as a PR comment (requires gh CLI + GH_TOKEN, needs --pr)").option("--no-update", "Always create a new comment instead of updating the previous aicli review").option("--skip-code", "Skip the code review section").option("--skip-security", "Skip the security review section").option("--detailed", "Use the detailed code-review prompt").option("--max-diff <n>", "Max diff chars sent to the model (default 30000)", (v) => parseInt(v, 10)).option("--provider <id>", "Override provider (default: config.defaultProvider)").option("--model <id>", "Override model").option("--dry-run", "Print result to stdout instead of posting (overrides --post)").option("--json", "Output a structured JSON report").option("--markdown", "Output Markdown report (default)").option("--sarif", "Output SARIF 2.1.0 for code scanning artifacts").option("--fail-on-security-high", "Fail when the security review contains HIGH/CRITICAL findings (default)").option("--no-fail-on-security-high", "Do not fail on security HIGH/CRITICAL findings").option("--fail-on-test-failure", "Fail when the report mentions test failures (default)").option("--no-fail-on-test-failure", "Do not fail on test failure findings").option("--fail-on-lint-failure", "Fail when the report mentions lint/typecheck failures (default)").option("--no-fail-on-lint-failure", "Do not fail on lint/typecheck failure findings").action(async (options) => {
|
|
7805
|
-
const { runCi } = await import("./ci-
|
|
7806
|
-
const { formatCiResult } = await import("./ci-format-
|
|
7805
|
+
const { runCi } = await import("./ci-C5YMQXCS.js");
|
|
7806
|
+
const { formatCiResult } = await import("./ci-format-R6EMNOGZ.js");
|
|
7807
7807
|
const formats = [options.json, options.markdown, options.sarif].filter(Boolean).length;
|
|
7808
7808
|
if (formats > 1) {
|
|
7809
7809
|
console.error("Choose only one output format: --json, --markdown, or --sarif.");
|
|
@@ -7961,7 +7961,7 @@ program.command("hub [topic]").description("Start multi-agent hub (discuss / bra
|
|
|
7961
7961
|
config.get("customProviders"),
|
|
7962
7962
|
config.getConfigDir()
|
|
7963
7963
|
);
|
|
7964
|
-
const { startHub } = await import("./hub-
|
|
7964
|
+
const { startHub } = await import("./hub-7JBSZOSD.js");
|
|
7965
7965
|
await startHub(
|
|
7966
7966
|
{
|
|
7967
7967
|
topic: topic ?? "",
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import {
|
|
3
3
|
discussionToMessages,
|
|
4
4
|
persistDiscussion
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-MX75TNE5.js";
|
|
6
|
+
import "./chunk-CGDYO52A.js";
|
|
7
7
|
import "./chunk-NYNSYLFY.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-3FEZSLGI.js";
|
|
9
9
|
import "./chunk-IW3Q7AE5.js";
|
|
10
10
|
export {
|
|
11
11
|
discussionToMessages,
|
|
@@ -28,11 +28,11 @@ import {
|
|
|
28
28
|
touchMemoryReferences,
|
|
29
29
|
updateMemoryApproval,
|
|
30
30
|
updateMemoryEntry
|
|
31
|
-
} from "./chunk-
|
|
32
|
-
import "./chunk-
|
|
31
|
+
} from "./chunk-Z3UXZ5EI.js";
|
|
32
|
+
import "./chunk-3FEZSLGI.js";
|
|
33
33
|
import "./chunk-HOSJZMQS.js";
|
|
34
34
|
import "./chunk-IW3Q7AE5.js";
|
|
35
|
-
import "./chunk-
|
|
35
|
+
import "./chunk-EDAUDILT.js";
|
|
36
36
|
export {
|
|
37
37
|
addMemoryEntry,
|
|
38
38
|
backupMemoryStore,
|
|
@@ -27,9 +27,9 @@ import {
|
|
|
27
27
|
touchMemoryReferences,
|
|
28
28
|
updateMemoryApproval,
|
|
29
29
|
updateMemoryEntry
|
|
30
|
-
} from "./chunk-
|
|
31
|
-
import "./chunk-
|
|
32
|
-
import "./chunk-
|
|
30
|
+
} from "./chunk-M3NXF4GD.js";
|
|
31
|
+
import "./chunk-FSC6KEWU.js";
|
|
32
|
+
import "./chunk-LEK5WGKV.js";
|
|
33
33
|
import "./chunk-6BUTA5VW.js";
|
|
34
34
|
export {
|
|
35
35
|
addMemoryEntry,
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import {
|
|
3
3
|
countSeverity,
|
|
4
4
|
runCi
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-FN7DE4HA.js";
|
|
6
|
+
import "./chunk-ZWCQQZT5.js";
|
|
7
7
|
import {
|
|
8
8
|
buildReviewPrompt,
|
|
9
9
|
buildSecurityReviewPrompt,
|
|
@@ -17,13 +17,13 @@ import {
|
|
|
17
17
|
} from "./chunk-AUEX6RNY.js";
|
|
18
18
|
import {
|
|
19
19
|
ConfigManager
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-T65VFCID.js";
|
|
21
21
|
import "./chunk-3OBY7WSS.js";
|
|
22
22
|
import "./chunk-TU3L3PW7.js";
|
|
23
23
|
import "./chunk-IW3Q7AE5.js";
|
|
24
24
|
import {
|
|
25
25
|
VERSION
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-EDAUDILT.js";
|
|
27
27
|
|
|
28
28
|
// src/cli/pr.ts
|
|
29
29
|
import { execFileSync } from "child_process";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
ToolRegistry
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-R4YGDJPL.js";
|
|
5
|
+
import "./chunk-GHWZVPUV.js";
|
|
6
|
+
import "./chunk-Z3UXZ5EI.js";
|
|
7
7
|
import "./chunk-GLSR2NR3.js";
|
|
8
8
|
import "./chunk-UUSRWSSX.js";
|
|
9
9
|
import "./chunk-CKH4KQ4E.js";
|
|
@@ -11,10 +11,10 @@ import "./chunk-BXP6YZ2P.js";
|
|
|
11
11
|
import "./chunk-KHYD3WXE.js";
|
|
12
12
|
import "./chunk-5C76XDDF.js";
|
|
13
13
|
import "./chunk-NYNSYLFY.js";
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-3FEZSLGI.js";
|
|
15
15
|
import {
|
|
16
16
|
runTool
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-FHXLAJJG.js";
|
|
18
18
|
import {
|
|
19
19
|
getDangerLevel,
|
|
20
20
|
schemaToJsonSchema
|
|
@@ -23,10 +23,10 @@ import "./chunk-TU3L3PW7.js";
|
|
|
23
23
|
import "./chunk-HOSJZMQS.js";
|
|
24
24
|
import "./chunk-IW3Q7AE5.js";
|
|
25
25
|
import "./chunk-4BKXL7SM.js";
|
|
26
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-WSCZRQDR.js";
|
|
27
27
|
import {
|
|
28
28
|
VERSION
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-EDAUDILT.js";
|
|
30
30
|
|
|
31
31
|
// src/mcp/server.ts
|
|
32
32
|
import { createInterface } from "readline";
|