Merge pull request #9 from wxianfeng/main

output default json for ai agent
This commit is contained in:
fantiu authored and GitHub committed 2026-03-28 21:48:47 +08:00
commit 3c104fcd03
5 files changed
+15 -18

No files matched your search

+1 -1
View File
@@ -70,7 +70,7 @@ func TestAuthStatusRefreshFailureLeavesStoredTokenIntact(t *testing.T) {
t.Fatal("secure token data should remain in keychain after refresh failure")
}
if !bytes.Contains(out.Bytes(), []byte("已登录")) {
if !bytes.Contains(out.Bytes(), []byte("\"authenticated\"")) {
t.Fatalf("output should still report authenticated status:\n%s", out.String())
}
}
+1 -1
View File
@@ -37,7 +37,7 @@ func bindPersistentFlags(cmd *cobra.Command, flags *GlobalFlags) {
cmd.PersistentFlags().StringVar(&flags.ClientSecret, "client-secret", "", "Override OAuth client secret (DingTalk AppSecret)")
cmd.PersistentFlags().BoolVar(&flags.Debug, "debug", false, "显示调试日志")
cmd.PersistentFlags().BoolVar(&flags.DryRun, "dry-run", false, "预览操作内容,不实际执行")
cmd.PersistentFlags().StringVarP(&flags.Format, "format", "f", "table", "输出格式: json|table|raw")
cmd.PersistentFlags().StringVarP(&flags.Format, "format", "f", "json", "输出格式: json|table|raw")
cmd.PersistentFlags().BoolVar(&flags.Mock, "mock", false, "使用 Mock 数据 (开发调试用)")
cmd.PersistentFlags().StringVarP(&flags.Output, "output", "o", "", "Write command output to a file")
_ = cmd.PersistentFlags().MarkHidden("output")
+9 -12
View File
@@ -29,7 +29,7 @@ import (
mockmcp "github.com/DingTalk-Real-AI/dingtalk-workspace-cli/test/mock_mcp"
)
func TestPrintExecutionErrorDefaultsToHumanReadable(t *testing.T) {
func TestPrintExecutionErrorDefaultsToJSON(t *testing.T) {
t.Parallel()
root := NewRootCommand()
@@ -43,14 +43,11 @@ func TestPrintExecutionErrorDefaultsToHumanReadable(t *testing.T) {
if err != nil {
t.Fatalf("printExecutionError() error = %v", err)
}
if stdout.Len() != 0 {
t.Fatalf("stdout = %q, want empty for human-readable error output", stdout.String())
if stderr.Len() != 0 {
t.Fatalf("stderr = %q, want empty for JSON error output", stderr.String())
}
if !strings.Contains(stderr.String(), "Error: [VALIDATION] bad flag") {
t.Fatalf("stderr = %q, want human-readable header", stderr.String())
}
if !strings.Contains(stderr.String(), "Hint: Pass the required flag and retry.") {
t.Fatalf("stderr = %q, want hint line", stderr.String())
if !strings.Contains(stdout.String(), "\"category\": \"validation\"") {
t.Fatalf("stdout = %q, want JSON error payload", stdout.String())
}
}
@@ -175,8 +172,8 @@ func TestVersionCommandDoesNotRequirePINOrLogin(t *testing.T) {
if err := root.Execute(); err != nil {
t.Fatalf("Execute(version) error = %v", err)
}
if !strings.Contains(out.String(), "版本:") {
t.Fatalf("version output missing version header:\n%s", out.String())
if !strings.Contains(out.String(), "\"version\"") {
t.Fatalf("version output missing version key:\n%s", out.String())
}
}
@@ -216,8 +213,8 @@ func TestVersionCommandUsesCachedRegistryWithoutBlockingAgedDiscovery(t *testing
if elapsed := time.Since(start); elapsed >= 200*time.Millisecond {
t.Fatalf("Execute(version) took %v, want cached startup under 200ms", elapsed)
}
if !strings.Contains(out.String(), "版本:") {
t.Fatalf("version output missing version header:\n%s", out.String())
if !strings.Contains(out.String(), "\"version\"") {
t.Fatalf("version output missing version key:\n%s", out.String())
}
}
+1 -1
View File
@@ -394,7 +394,7 @@ func renderSharedSkill(catalog ir.Catalog) string {
builder.WriteString("dws auth status\n")
builder.WriteString("```\n\n")
builder.WriteString("## Global Rules\n\n")
builder.WriteString("- Always prefer `--format json` for agent-readable output.\n")
builder.WriteString("- Output defaults to JSON. Use `--format table` for human-readable output.\n")
builder.WriteString("- Confirm with user before any write/delete/revoke action.\n")
builder.WriteString("- Never fabricate IDs; always extract from command output.\n")
builder.WriteString("- For risky operations, run a read/list check before executing write operations.\n\n")
+3 -3
View File
@@ -58,7 +58,7 @@ dws recovery finalize --event-id <event_id> --outcome recovered|failed|handoff -
| 标志 | 短名 | 说明 | 默认 |
|------|:---:|------|------|
| `--format` | `-f` | 输出格式: json / table / raw | table |
| `--format` | `-f` | 输出格式: json / table / raw | json |
| `--verbose` | `-v` | 详细日志 | false |
| `--debug` | | 调试日志 | false |
| `--yes` | `-y` | 跳过确认提示 | false |
@@ -71,13 +71,13 @@ dws recovery finalize --event-id <event_id> --outcome recovered|failed|handoff -
## 输出格式
### --format json (机器可读, Agent 必须使用)
### --format json (机器可读, 默认)
```json
{"success": true, "body": {...}}
```
### --format table (人类可读, 默认)
### --format table (人类可读)
```
已创建 AI 表格 "项目管理" (UUID: abc123)