@ia-ccun/code-agent-cli 0.0.57-beta.3 → 0.0.58-beta.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/bin/cli.js +0 -4
- package/config/agent/models.json +27 -1
- package/package.json +5 -5
- package/scripts/postinstall.js +230 -155
- package/scripts/regression/cases/01-version-and-deps.sh +4 -6
- package/scripts/regression/cases/03-rpc-protocol.sh +28 -11
- package/scripts/regression/cases/04-prompt-stream.sh +23 -12
- package/scripts/regression/cases/07-pi-new-features.sh +2 -2
- package/scripts/regression/results/.last_pid +1 -1
- package/scripts/regression/results/.last_workdir +1 -1
- package/scripts/regression/results/02-extension-loading.log +14 -15
- package/scripts/regression/results/03-prompt-stream.log +30 -12
- package/scripts/regression/results/03-rpc-protocol.log +59 -21
- package/scripts/regression/results/04-slash-commands-and-skills.log +11 -12
- package/scripts/regression/results/05-tool-execution.log +5 -5
- package/scripts/regression/results/06-pi-new-features.log +24 -45
- package/scripts/regression/run-all.sh +26 -32
- package/config/agent/extensions/aicode-llm-provider.ts +0 -168
|
@@ -33,10 +33,8 @@ header "$CURRENT_CASE" "pi package dependencies"
|
|
|
33
33
|
|
|
34
34
|
# 找到 aicode 安装路径里的 package.json
|
|
35
35
|
AICODE_PATH=$(command -v "$AICODE_BIN")
|
|
36
|
-
#
|
|
37
|
-
|
|
38
|
-
AICODE_PATH=$(readlink "$AICODE_PATH")
|
|
39
|
-
fi
|
|
36
|
+
# 解析成绝对真实路径(symlink 可能是相对路径,如 ../lib/node_modules/...)
|
|
37
|
+
AICODE_PATH=$(node -e "console.log(require('fs').realpathSync(process.argv[1]))" "$AICODE_PATH" 2>/dev/null || echo "$AICODE_PATH")
|
|
40
38
|
|
|
41
39
|
# 找 package.json
|
|
42
40
|
RESOLVED_PATH=$(node -e "
|
|
@@ -75,7 +73,7 @@ for pkg in @earendil-works/pi-agent-core @earendil-works/pi-ai @earendil-works/p
|
|
|
75
73
|
pass "$pkg declared as $declared"
|
|
76
74
|
|
|
77
75
|
# 检查实际安装版本
|
|
78
|
-
actual=$(
|
|
76
|
+
actual=$(node -e "console.log(require(process.argv[1]).version)" "$AICODE_ROOT/node_modules/$pkg/package.json" 2>/dev/null)
|
|
79
77
|
if [[ -n "$actual" ]]; then
|
|
80
78
|
# 解析 semver 主要版本
|
|
81
79
|
declared_major=$(echo "$declared" | sed -E 's/^[^0-9]*([0-9]+).*/\1/')
|
|
@@ -91,4 +89,4 @@ for pkg in @earendil-works/pi-agent-core @earendil-works/pi-ai @earendil-works/p
|
|
|
91
89
|
done
|
|
92
90
|
|
|
93
91
|
summary
|
|
94
|
-
exit $?
|
|
92
|
+
exit $?
|
|
@@ -132,8 +132,25 @@ echo " RPC 命令小计: $cmd_pass pass / $cmd_fail fail / $cmd_skip skip"
|
|
|
132
132
|
# ----- Part 2: 事件类型 + 字段格式(通过实际 prompt 触发)-----
|
|
133
133
|
header "$CURRENT_CASE" "part 2: event type + field schema"
|
|
134
134
|
|
|
135
|
+
# 先开启思考,否则模型不会输出 thinking_delta(set_thinking_level 在此顺序执行,非并发)
|
|
136
|
+
send '{"type":"set_thinking_level","level":"high","id":"th1"}'
|
|
137
|
+
th_waited=0
|
|
138
|
+
while [[ $th_waited -lt 20 ]]; do
|
|
139
|
+
if jq -e 'select(.id=="th1" and .type=="response")' "$REGRESSION_LOG" >/dev/null 2>&1; then
|
|
140
|
+
break
|
|
141
|
+
fi
|
|
142
|
+
sleep 0.5
|
|
143
|
+
th_waited=$((th_waited + 1))
|
|
144
|
+
done
|
|
145
|
+
th_ok=$(jq -c 'select(.id=="th1" and .type=="response") | .success // false' "$REGRESSION_LOG" 2>/dev/null | head -1)
|
|
146
|
+
if [[ "$th_ok" == "true" ]]; then
|
|
147
|
+
pass "set_thinking_level low 成功(thinking_delta 前置)"
|
|
148
|
+
else
|
|
149
|
+
fail "set_thinking_level low" "got: ${th_ok:-no response}"
|
|
150
|
+
fi
|
|
151
|
+
|
|
135
152
|
# 发 prompt 触发完整事件流
|
|
136
|
-
send '{"type":"prompt","message":"
|
|
153
|
+
send '{"type":"prompt","message":"计算 17*23,并简要说明你的推理过程","id":"ev1"}'
|
|
137
154
|
|
|
138
155
|
# 等 LLM 完成(以 agent_end 为信号,最长 120s)
|
|
139
156
|
waited=0
|
|
@@ -243,17 +260,17 @@ fi
|
|
|
243
260
|
# message_end.stopReason 必须是已知值(0.85+ 新增 "stop" 通用值 + rawStopReason 保留 provider 原值)
|
|
244
261
|
stop_reason=$(jq -c 'select(.type=="message_end" and .message.role=="assistant") | .message.stopReason // "missing"' "$REGRESSION_LOG" 2>/dev/null | sort -u | head -1)
|
|
245
262
|
case "$stop_reason" in
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
263
|
+
'"end_turn"' | '"tool_use"' | '"error"' | '"max_tokens"' | '"stop_sequence"' | '"aborted"' | '"stop"')
|
|
264
|
+
pass "stopReason 合法 ($stop_reason)"
|
|
265
|
+
;;
|
|
266
|
+
'"missing"')
|
|
267
|
+
fail "stopReason 字段" "未出现"
|
|
268
|
+
;;
|
|
269
|
+
*)
|
|
270
|
+
skip "stopReason 已知值" "新值: $stop_reason(需人工确认是否要更新 AicodeRpcClient.kt)"
|
|
271
|
+
;;
|
|
255
272
|
esac
|
|
256
273
|
|
|
257
274
|
cleanup_rpc
|
|
258
275
|
summary
|
|
259
|
-
exit $?
|
|
276
|
+
exit $?
|
|
@@ -33,8 +33,19 @@ if ! spawn_rpc 60; then
|
|
|
33
33
|
fi
|
|
34
34
|
pass "spawn aicode RPC (pid=$REGRESSION_PID)"
|
|
35
35
|
|
|
36
|
-
#
|
|
37
|
-
send '{"type":"
|
|
36
|
+
# 开启思考,否则模型不会输出 thinking_* 事件(顺序执行,非并发)
|
|
37
|
+
send '{"type":"set_thinking_level","level":"high","id":"th1"}'
|
|
38
|
+
th_waited=0
|
|
39
|
+
while [[ $th_waited -lt 20 ]]; do
|
|
40
|
+
if jq -e 'select(.id=="th1" and .type=="response")' "$REGRESSION_LOG" >/dev/null 2>&1; then
|
|
41
|
+
break
|
|
42
|
+
fi
|
|
43
|
+
sleep 0.5
|
|
44
|
+
th_waited=$((th_waited + 1))
|
|
45
|
+
done
|
|
46
|
+
|
|
47
|
+
# 发 prompt(需要推理的提示词才会触发 thinking_* 事件流)
|
|
48
|
+
send '{"type":"prompt","message":"计算 17*23,并简要说明你的推理过程","id":"p1"}'
|
|
38
49
|
|
|
39
50
|
# 等 LLM 完成(agent_end 作为信号,最长 120s)
|
|
40
51
|
waited=0
|
|
@@ -98,15 +109,15 @@ assert_event_count "assistant message_end 出现" \
|
|
|
98
109
|
# stopReason 字段(end_turn / tool_use / error / stop 0.85+)
|
|
99
110
|
stop_reason=$(jq -c 'select(.type=="message_end" and .message.role=="assistant") | .message.stopReason // "missing"' "$REGRESSION_LOG" 2>/dev/null | head -1)
|
|
100
111
|
case "$stop_reason" in
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
112
|
+
'"end_turn"' | '"tool_use"' | '"error"' | '"max_tokens"' | '"stop_sequence"' | '"aborted"' | '"stop"')
|
|
113
|
+
pass "assistant stopReason 是 $stop_reason"
|
|
114
|
+
;;
|
|
115
|
+
'"missing"')
|
|
116
|
+
fail "assistant stopReason 字段" "未出现"
|
|
117
|
+
;;
|
|
118
|
+
*)
|
|
119
|
+
fail "assistant stopReason 合法" "未知值: $stop_reason"
|
|
120
|
+
;;
|
|
110
121
|
esac
|
|
111
122
|
|
|
112
123
|
# turn_end 带 usage
|
|
@@ -127,4 +138,4 @@ assert_event_count "agent_end 事件出现" \
|
|
|
127
138
|
|
|
128
139
|
cleanup_rpc
|
|
129
140
|
summary
|
|
130
|
-
exit $?
|
|
141
|
+
exit $?
|
|
@@ -126,7 +126,7 @@ send '{"type":"get_available_thinking_levels","id":"n5"}'
|
|
|
126
126
|
sleep 0.5
|
|
127
127
|
|
|
128
128
|
if jq -e 'select(.id=="n5" and .type=="response" and .success==true)' "$REGRESSION_LOG" >/dev/null 2>&1; then
|
|
129
|
-
levels=$(jq -c 'select(.id=="n5" and .type=="response") | .data | length' "$REGRESSION_LOG" 2>/dev/null | head -1)
|
|
129
|
+
levels=$(jq -c 'select(.id=="n5" and .type=="response") | (.data.levels // .data) | length' "$REGRESSION_LOG" 2>/dev/null | head -1)
|
|
130
130
|
if [[ -n "$levels" && "$levels" -gt 0 ]]; then
|
|
131
131
|
pass "get_available_thinking_levels 返回 $levels 个级别"
|
|
132
132
|
else
|
|
@@ -138,4 +138,4 @@ fi
|
|
|
138
138
|
|
|
139
139
|
cleanup_rpc
|
|
140
140
|
summary
|
|
141
|
-
exit $?
|
|
141
|
+
exit $?
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
43741
|
|
@@ -1 +1 @@
|
|
|
1
|
-
/Users/jianjiang/.aicode-regression-
|
|
1
|
+
/Users/jianjiang/.aicode-regression-43719-6291000
|