jinzd-ai-cli 0.4.2 → 0.4.3
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/{chunk-UB6BRUQ4.js → chunk-3LKIHGAR.js} +3 -3
- package/dist/{chunk-E2HVDEWW.js → chunk-AQ4O6SVK.js} +1 -1
- package/dist/{chunk-54EGIKT5.js → chunk-ROFUA4O3.js} +3 -3
- package/dist/{chunk-LP2ZH4HH.js → chunk-VC6DFUFP.js} +2 -2
- package/dist/{hub-OXZNGBAY.js → hub-UQ2IWPJK.js} +2 -2
- package/dist/index.js +6 -6
- package/dist/{run-tests-4WOG5THP.js → run-tests-W2RQN33S.js} +1 -1
- package/dist/{run-tests-DRN42YLI.js → run-tests-Y4YPN654.js} +1 -1
- package/dist/{server-JNWKHPBS.js → server-WPLQ2AII.js} +4 -4
- package/dist/{task-orchestrator-GONUQ6TN.js → task-orchestrator-7NTCIVCF.js} +20 -6
- package/package.json +1 -1
|
@@ -8,7 +8,7 @@ import { platform } from "os";
|
|
|
8
8
|
import chalk from "chalk";
|
|
9
9
|
|
|
10
10
|
// src/core/constants.ts
|
|
11
|
-
var VERSION = "0.4.
|
|
11
|
+
var VERSION = "0.4.3";
|
|
12
12
|
var APP_NAME = "ai-cli";
|
|
13
13
|
var CONFIG_DIR_NAME = ".aicli";
|
|
14
14
|
var CONFIG_FILE_NAME = "config.json";
|
|
@@ -62,8 +62,8 @@ You are currently in read-only planning (Plan) mode.
|
|
|
62
62
|
- Focus your analysis on reading files and producing actionable plans.
|
|
63
63
|
|
|
64
64
|
Once planning is complete, clearly inform the user: type \`/plan execute\` to begin executing the plan, or \`/plan exit\` to discard it.`;
|
|
65
|
-
var SUBAGENT_DEFAULT_MAX_ROUNDS =
|
|
66
|
-
var SUBAGENT_MAX_ROUNDS_LIMIT =
|
|
65
|
+
var SUBAGENT_DEFAULT_MAX_ROUNDS = 15;
|
|
66
|
+
var SUBAGENT_MAX_ROUNDS_LIMIT = 30;
|
|
67
67
|
var SUBAGENT_ALLOWED_TOOLS = /* @__PURE__ */ new Set([
|
|
68
68
|
"bash",
|
|
69
69
|
"read_file",
|
|
@@ -6,7 +6,7 @@ import { platform } from "os";
|
|
|
6
6
|
import chalk from "chalk";
|
|
7
7
|
|
|
8
8
|
// src/core/constants.ts
|
|
9
|
-
var VERSION = "0.4.
|
|
9
|
+
var VERSION = "0.4.3";
|
|
10
10
|
var APP_NAME = "ai-cli";
|
|
11
11
|
var CONFIG_DIR_NAME = ".aicli";
|
|
12
12
|
var CONFIG_FILE_NAME = "config.json";
|
|
@@ -59,8 +59,8 @@ You are currently in read-only planning (Plan) mode.
|
|
|
59
59
|
- Focus your analysis on reading files and producing actionable plans.
|
|
60
60
|
|
|
61
61
|
Once planning is complete, clearly inform the user: type \`/plan execute\` to begin executing the plan, or \`/plan exit\` to discard it.`;
|
|
62
|
-
var SUBAGENT_DEFAULT_MAX_ROUNDS =
|
|
63
|
-
var SUBAGENT_MAX_ROUNDS_LIMIT =
|
|
62
|
+
var SUBAGENT_DEFAULT_MAX_ROUNDS = 15;
|
|
63
|
+
var SUBAGENT_MAX_ROUNDS_LIMIT = 30;
|
|
64
64
|
var SUBAGENT_ALLOWED_TOOLS = /* @__PURE__ */ new Set([
|
|
65
65
|
"bash",
|
|
66
66
|
"read_file",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
EnvLoader,
|
|
4
4
|
schemaToJsonSchema
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-AQ4O6SVK.js";
|
|
6
6
|
import {
|
|
7
7
|
APP_NAME,
|
|
8
8
|
CONFIG_DIR_NAME,
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
MCP_TOOL_PREFIX,
|
|
16
16
|
PLUGINS_DIR_NAME,
|
|
17
17
|
VERSION
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-3LKIHGAR.js";
|
|
19
19
|
|
|
20
20
|
// src/config/config-manager.ts
|
|
21
21
|
import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
|
|
@@ -366,7 +366,7 @@ ${content}`);
|
|
|
366
366
|
defaultModel,
|
|
367
367
|
maxRounds: options.maxRounds ?? (mode === "task" ? 15 : 10),
|
|
368
368
|
enableTools: mode === "task",
|
|
369
|
-
maxToolRoundsPerTurn: mode === "task" ?
|
|
369
|
+
maxToolRoundsPerTurn: mode === "task" ? 30 : void 0,
|
|
370
370
|
context,
|
|
371
371
|
contextFiles: contextFileNames.length > 0 ? contextFileNames : void 0
|
|
372
372
|
};
|
|
@@ -381,7 +381,7 @@ ${content}`);
|
|
|
381
381
|
}
|
|
382
382
|
}
|
|
383
383
|
async function runTaskMode(config, providers, configManager, topic) {
|
|
384
|
-
const { TaskOrchestrator } = await import("./task-orchestrator-
|
|
384
|
+
const { TaskOrchestrator } = await import("./task-orchestrator-7NTCIVCF.js");
|
|
385
385
|
const orchestrator = new TaskOrchestrator(config, providers, configManager);
|
|
386
386
|
let interrupted = false;
|
|
387
387
|
const onSigint = () => {
|
package/dist/index.js
CHANGED
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
saveDevState,
|
|
24
24
|
sessionHasMeaningfulContent,
|
|
25
25
|
setupProxy
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-VC6DFUFP.js";
|
|
27
27
|
import {
|
|
28
28
|
ToolRegistry,
|
|
29
29
|
askUserContext,
|
|
@@ -38,7 +38,7 @@ import {
|
|
|
38
38
|
theme,
|
|
39
39
|
truncateOutput,
|
|
40
40
|
undoStack
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-AQ4O6SVK.js";
|
|
42
42
|
import {
|
|
43
43
|
AGENTIC_BEHAVIOR_GUIDELINE,
|
|
44
44
|
AUTHOR,
|
|
@@ -58,7 +58,7 @@ import {
|
|
|
58
58
|
REPO_URL,
|
|
59
59
|
SKILLS_DIR_NAME,
|
|
60
60
|
VERSION
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-3LKIHGAR.js";
|
|
62
62
|
|
|
63
63
|
// src/index.ts
|
|
64
64
|
import { program } from "commander";
|
|
@@ -1914,7 +1914,7 @@ ${hint}` : "")
|
|
|
1914
1914
|
description: "Run project tests and show structured report",
|
|
1915
1915
|
usage: "/test [command|filter]",
|
|
1916
1916
|
async execute(args, _ctx) {
|
|
1917
|
-
const { executeTests } = await import("./run-tests-
|
|
1917
|
+
const { executeTests } = await import("./run-tests-W2RQN33S.js");
|
|
1918
1918
|
const argStr = args.join(" ").trim();
|
|
1919
1919
|
let testArgs = {};
|
|
1920
1920
|
if (argStr) {
|
|
@@ -5524,7 +5524,7 @@ program.command("web").description("Start Web UI server with browser-based chat
|
|
|
5524
5524
|
console.error("Error: Invalid port number. Must be between 1 and 65535.");
|
|
5525
5525
|
process.exit(1);
|
|
5526
5526
|
}
|
|
5527
|
-
const { startWebServer } = await import("./server-
|
|
5527
|
+
const { startWebServer } = await import("./server-WPLQ2AII.js");
|
|
5528
5528
|
await startWebServer({ port, host: options.host });
|
|
5529
5529
|
});
|
|
5530
5530
|
program.command("user [action] [username]").description("Manage Web UI users (list | create <name> | delete <name> | reset-password <name> | migrate <name>)").action(async (action, username) => {
|
|
@@ -5757,7 +5757,7 @@ program.command("hub [topic]").description("Start multi-agent hub (discuss / bra
|
|
|
5757
5757
|
}),
|
|
5758
5758
|
config.get("customProviders")
|
|
5759
5759
|
);
|
|
5760
|
-
const { startHub } = await import("./hub-
|
|
5760
|
+
const { startHub } = await import("./hub-UQ2IWPJK.js");
|
|
5761
5761
|
await startHub(
|
|
5762
5762
|
{
|
|
5763
5763
|
topic: topic ?? "",
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
renderDiff,
|
|
19
19
|
runHook,
|
|
20
20
|
setupProxy
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-VC6DFUFP.js";
|
|
22
22
|
import {
|
|
23
23
|
AuthManager
|
|
24
24
|
} from "./chunk-CPLT6CD3.js";
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
spawnAgentContext,
|
|
33
33
|
truncateOutput,
|
|
34
34
|
undoStack
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-AQ4O6SVK.js";
|
|
36
36
|
import {
|
|
37
37
|
AGENTIC_BEHAVIOR_GUIDELINE,
|
|
38
38
|
CONTEXT_FILE_CANDIDATES,
|
|
@@ -44,7 +44,7 @@ import {
|
|
|
44
44
|
PLAN_MODE_SYSTEM_ADDON,
|
|
45
45
|
SKILLS_DIR_NAME,
|
|
46
46
|
VERSION
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-3LKIHGAR.js";
|
|
48
48
|
|
|
49
49
|
// src/web/server.ts
|
|
50
50
|
import express from "express";
|
|
@@ -1440,7 +1440,7 @@ ${undoResults.map((r) => ` \u2022 ${r}`).join("\n")}` });
|
|
|
1440
1440
|
case "test": {
|
|
1441
1441
|
this.send({ type: "info", message: "\u{1F9EA} Running tests..." });
|
|
1442
1442
|
try {
|
|
1443
|
-
const { executeTests } = await import("./run-tests-
|
|
1443
|
+
const { executeTests } = await import("./run-tests-W2RQN33S.js");
|
|
1444
1444
|
const argStr = args.join(" ").trim();
|
|
1445
1445
|
let testArgs = {};
|
|
1446
1446
|
if (argStr) {
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
getDangerLevel,
|
|
5
5
|
googleSearchContext,
|
|
6
6
|
truncateOutput
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-AQ4O6SVK.js";
|
|
8
8
|
import {
|
|
9
9
|
SUBAGENT_ALLOWED_TOOLS
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-3LKIHGAR.js";
|
|
11
11
|
|
|
12
12
|
// src/hub/task-orchestrator.ts
|
|
13
13
|
import { createInterface } from "readline";
|
|
@@ -63,6 +63,7 @@ ${task}`, timestamp: /* @__PURE__ */ new Date() }
|
|
|
63
63
|
let finalContent = "";
|
|
64
64
|
let roundsUsed = 0;
|
|
65
65
|
const executor = new TaskToolExecutor(registry, onToolCall, onToolResult);
|
|
66
|
+
let toolCallCount = 0;
|
|
66
67
|
try {
|
|
67
68
|
for (let round = 0; round < maxRounds; round++) {
|
|
68
69
|
roundsUsed = round + 1;
|
|
@@ -71,17 +72,24 @@ ${task}`, timestamp: /* @__PURE__ */ new Date() }
|
|
|
71
72
|
if (configManager) {
|
|
72
73
|
googleSearchContext.configManager = configManager;
|
|
73
74
|
}
|
|
75
|
+
let activeSystemPrompt = systemPrompt;
|
|
76
|
+
if (round === maxRounds - 2) {
|
|
77
|
+
activeSystemPrompt += "\n\n\u26A0\uFE0F You have 2 rounds remaining. Start wrapping up \u2014 finish current work and prepare your summary.";
|
|
78
|
+
} else if (round === maxRounds - 1) {
|
|
79
|
+
activeSystemPrompt += "\n\n\u{1F6D1} LAST ROUND. Do NOT call any more tools. You MUST respond with a text summary of what you accomplished. List files created/modified and the current state.";
|
|
80
|
+
}
|
|
74
81
|
const result = await provider.chatWithTools(
|
|
75
82
|
{
|
|
76
83
|
messages,
|
|
77
84
|
model,
|
|
78
|
-
systemPrompt,
|
|
85
|
+
systemPrompt: activeSystemPrompt,
|
|
79
86
|
stream: false,
|
|
80
87
|
temperature: 0.3,
|
|
81
88
|
maxTokens: 8192,
|
|
82
89
|
...extraMessages.length > 0 ? { _extraMessages: extraMessages } : {}
|
|
83
90
|
},
|
|
84
|
-
|
|
91
|
+
// On the very last round, send empty tools to force text response
|
|
92
|
+
round === maxRounds - 1 ? [] : toolDefs
|
|
85
93
|
);
|
|
86
94
|
if (result.usage) {
|
|
87
95
|
totalUsage.inputTokens += result.usage.inputTokens;
|
|
@@ -91,13 +99,18 @@ ${task}`, timestamp: /* @__PURE__ */ new Date() }
|
|
|
91
99
|
finalContent = result.content;
|
|
92
100
|
break;
|
|
93
101
|
}
|
|
102
|
+
toolCallCount += result.toolCalls.length;
|
|
94
103
|
const toolResults = await executor.executeAll(result.toolCalls);
|
|
95
104
|
const reasoningContent = "reasoningContent" in result ? result.reasoningContent : void 0;
|
|
96
105
|
const newMsgs = provider.buildToolResultMessages(result.toolCalls, toolResults, reasoningContent);
|
|
97
106
|
extraMessages.push(...newMsgs);
|
|
98
107
|
}
|
|
99
108
|
if (!finalContent) {
|
|
100
|
-
|
|
109
|
+
if (toolCallCount > 0) {
|
|
110
|
+
finalContent = `(Task completed work using ${toolCallCount} tool calls across ${maxRounds} rounds, but did not produce a final summary)`;
|
|
111
|
+
} else {
|
|
112
|
+
finalContent = `(Task agent reached maximum rounds (${maxRounds}) without producing output)`;
|
|
113
|
+
}
|
|
101
114
|
}
|
|
102
115
|
} catch (err) {
|
|
103
116
|
const errMsg = err instanceof Error ? err.message : String(err);
|
|
@@ -105,7 +118,8 @@ ${task}`, timestamp: /* @__PURE__ */ new Date() }
|
|
|
105
118
|
}
|
|
106
119
|
return {
|
|
107
120
|
content: finalContent,
|
|
108
|
-
|
|
121
|
+
// Success if: got a real response, OR did useful tool work (soft success)
|
|
122
|
+
success: !finalContent.startsWith("(Task") || toolCallCount > 0,
|
|
109
123
|
roundsUsed,
|
|
110
124
|
usage: totalUsage
|
|
111
125
|
};
|