@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.
@@ -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
- # 解析 symlink
37
- if [[ -L "$AICODE_PATH" ]]; then
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=$("$AICODE_ROOT/node_modules/$pkg/package.json" -e "console.log(require('$AICODE_ROOT/node_modules/$pkg/package.json').version)" 2>/dev/null)
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":"just say hi","id":"ev1"}'
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
- '"end_turn"'|'"tool_use"'|'"error"'|'"max_tokens"'|'"stop_sequence"'|'"aborted"'|'"stop"')
247
- pass "stopReason 合法 ($stop_reason)"
248
- ;;
249
- '"missing"')
250
- fail "stopReason 字段" "未出现"
251
- ;;
252
- *)
253
- skip "stopReason 已知值" "新值: $stop_reason(需人工确认是否要更新 AicodeRpcClient.kt)"
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
- # 发 prompt
37
- send '{"type":"prompt","message":"reply with just: ok","id":"p1"}'
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
- '"end_turn"'|'"tool_use"'|'"error"'|'"max_tokens"'|'"stop_sequence"'|'"aborted"'|'"stop"')
102
- pass "assistant stopReason 是 $stop_reason"
103
- ;;
104
- '"missing"')
105
- fail "assistant stopReason 字段" "未出现"
106
- ;;
107
- *)
108
- fail "assistant stopReason 合法" "未知值: $stop_reason"
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
- 7895
1
+ 43741
@@ -1 +1 @@
1
- /Users/jianjiang/.aicode-regression-7873-4949000
1
+ /Users/jianjiang/.aicode-regression-43719-6291000