Commit Graph
44 Commits
Author SHA1 Message Date
fantiu 8406355e7f fix(auth): prevent auth code expiration error on OAuth callback page refresh 2026-04-01 14:48:58 +08:00
fantiu 2a056cc5d0 feat(auth): persist OAuth credentials for reliable token refresh 2026-04-01 11:03:08 +08:00
audanye-sudo 8fb0ecb9ba fix: resolve verbosity flag lookup, FileLogger lazy binding, and business error logging
- resolveVerbosity: use cmd.Flags() instead of PersistentFlags() to correctly
  pick up inherited --verbose/--debug flags on subcommands
- FileLogger lazy binding: bind in executeInvocation since configureLogLevel
  initializes it after runner construction
- logBusinessError: log MCP tool errors and business errors (HTTP 200 +
  success=false) to file logger for offline diagnosis
2026-04-01 09:33:09 +08:00
audanye-sudo ce6c32bf53 feat: enhance error diagnostics with trace ID, server error code, and comprehensive logging
Improve CLI error output and local logging to enable offline issue diagnosis:

- Add ServerDiagnostics struct to extract and propagate trace_id, server_error_code,
  technical_detail, and server_retryable from MCP server responses
- Extract diagnostics from JSON-RPC error.data, tool call result content, and HTTP
  response headers (X-Trace-Id, X-Request-Id, x-dingtalk-trace-id)
- Redesign PrintHuman with three verbosity levels (Normal/Verbose/Debug):
  Normal shows trace ID + server code; Verbose adds technical detail;
  Debug adds internal diagnostics (RPC code, operation, reason)
- Add PrintHumanAt for explicit verbosity control, PrintHuman defaults to Normal
- Enhance local logging with request body (sanitized), response body (on error),
  retry attempts, and error classification events
- Add TruncateBody, SanitizeArguments, RedactHeaders logging utilities with
  sensitive key detection via substring matching
- Fix respRetryAfter called before nil guard in doWithRetry retry loop
- Use GetBool instead of string comparison for flag resolution
2026-04-01 09:32:59 +08:00
fantiu 773804ee80 feat(auth): enhance device flow with CLI auth check and admin guidance 2026-04-01 00:47:49 +08:00
shenyunliang 345156c605 fix: correct import path for errors package in skill_command.go 2026-03-31 16:21:22 +08:00
audanye-sudoandClaude Opus 4.6 7fda120d5a feat: enhance error diagnostics with trace ID, server error code, and comprehensive logging
Improve CLI error output and local logging to enable offline issue diagnosis:

- Add ServerDiagnostics struct to extract and propagate trace_id, server_error_code,
  technical_detail, and server_retryable from MCP server responses
- Extract diagnostics from JSON-RPC error.data, tool call result content, and HTTP
  response headers (X-Trace-Id, X-Request-Id, x-dingtalk-trace-id)
- Redesign PrintHuman with three verbosity levels (Normal/Verbose/Debug):
  Normal shows trace ID + server code; Verbose adds technical detail;
  Debug adds internal diagnostics (RPC code, operation, reason)
- Add PrintHumanAt for explicit verbosity control, PrintHuman defaults to Normal
- Enhance local logging with request body (sanitized), response body (on error),
  retry attempts, and error classification events
- Add TruncateBody, SanitizeArguments, RedactHeaders logging utilities with
  sensitive key detection via substring matching
- Fix respRetryAfter called before nil guard in doWithRetry retry loop
- Use GetBool instead of string comparison for flag resolution

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 09:01:41 +08:00
fantiu a0bf715ddf Merge branch 'main' of github.com:fantiu/dingtalk-workspace-cli into feat-performance
解决Windows issue bug,修改readme回调地址格式
2026-03-30 15:11:29 +08:00
tianlei.qjb 11199e6848 add interactive confirmation for destructive dynamic commands 2026-03-30 14:23:50 +08:00
tianlei.qjb 19c38d4b94 add report helper with flexible date parsing and defaults 2026-03-30 13:44:01 +08:00
fantiu 26263f8a17 feat(auth): persist client credentials and optimize keychain access
- Auto-persist client-id/client-secret after successful login (stored in keychain)
- Enhanced logout to clean up app.json, keychain secrets, and token.json
- Fixed OAuth callback race condition (write response before sending code)
- Added credentials cache to avoid repeated keychain access (improves CLI speed)
- Updated README with credential priority docs and bumped to v1.0.4
2026-03-30 11:57:07 +08:00
fantiu 654bcc4ecb feat(auth): persist client credentials for token refresh
When logging in with --client-id and --client-secret, credentials are now
automatically persisted to enable automatic token refresh after expiration.
Client secret is securely stored in system Keychain, config file only
contains a reference.
2026-03-30 11:34:11 +08:00
fantiu 2175f2fe59 merge 2026-03-30 11:15:53 +08:00
fantiu 3e3c17d686 Merge branch 'main' of github.com:fantiu/dingtalk-workspace-cli into feat-application
feat(auth): persist client credentials for token refresh

When logging in with --client-id and --client-secret, credentials are now
automatically persisted to enable automatic token refresh after expiration.
Client secret is securely stored in system Keychain, config file only
contains a reference.
2026-03-30 10:58:37 +08:00
fantiu 964855373e feat(auth): persist client credentials for token refresh
When logging in with --client-id and --client-secret, credentials are now
automatically persisted to enable automatic token refresh after expiration.
Client secret is securely stored in system Keychain, config file only
contains a reference.
2026-03-30 10:53:26 +08:00
wxianfeng 9dc4f95f60 Merge remote-tracking branch 'refs/remotes/origin/main' 2026-03-29 22:30:17 +08:00
wxianfeng 15f53c0a6b feat(todo): add helper overrides for all task subcommands
- Implement create/update/done/get/delete with preferLegacyLeaf to replace
  dynamic commands; align MCP tools with production (create_personal_todo,
  update_todo_task, update_todo_done_status, query_todo_detail, delete_todo)
- Add ISO-8601 due time parsing, hidden title aliases, delete confirmation
- Extend zh/en i18n for todo strings; fix multiple en.json spacing/wording issues
- Expand cli_compat todo tests; adjust .gitignore for cli_compat testdata

Made-with: Cursor
2026-03-29 22:29:50 +08:00
audanye-sudo 8a61c038ff feat: add schema command enhancements and todo helper improvements
- Support schema output in table format for human-readable display
- Add product-level endpoint loading in CLI loader
- Wire schema-text rendering into runner output pipeline
- Add priority field support for todo task helper
2026-03-29 22:23:08 +08:00
audanye-sudo b5f3603be5 feat: enhance output filtering with nested field paths and array indexing
- Support dot-notation for nested fields (e.g. --fields response.content)
- Support array index access in --fields (e.g. response.items[0])
- Add field path parsing and recursive extraction logic
- Expand test coverage for nested and edge-case filtering
2026-03-29 22:21:48 +08:00
audanye-sudo 9c69dcc3e5 chore: wire pipeline engine into root command and bump version to v1.0.2
- Integrate pipeline engine with pre-parse input correction
- Unhide schema command
- Update CHANGELOG for v1.0.2
- Update README documentation
2026-03-29 16:30:20 +08:00
audanye-sudo c4bc460dc7 feat: add @file input support for chat helper commands 2026-03-29 16:29:56 +08:00
audanye-sudo c1893f40fc feat: add tool-level endpoint routing for multi-endpoint products
- Build tool → endpoint mapping from CLI tools and overrides
- directRuntimeEndpoint resolves by tool name before product fallback
- Support dynamic command routing with compat layer updates
2026-03-29 16:29:35 +08:00
audanye-sudo 13f248b285 feat: enhance stdin handling with StdinGuard and @file/@- support
- Add StdinGuard for safe single-read stdin across multiple flags
- Add ResolveInputSource unified resolver for @file, @-, and pipe
- Support @file / @- syntax for all string-typed override flags
- Remove unused writeSchemaText function
2026-03-29 16:29:13 +08:00
audanye-sudo 9bf51322cc feat: add --fields and --jq output filtering flags
- Add --fields for comma-separated field selection on JSON output
- Add --jq for jq expression filtering powered by gojq library
- Integrate filters into output formatter pipeline
2026-03-29 16:28:49 +08:00
audanye-sudo f75227aad1 feat: add pipeline engine for pre-parse and post-parse input correction
- AliasHandler: normalise model-generated flag casing (--userId → --user-id)
- StickyHandler: split glued flag values (--limit100 → --limit 100)
- ParamNameHandler: fix near-miss flag typos (--limt → --limit)
- ParamValueHandler: normalise structured parameter values after parsing
2026-03-29 16:28:19 +08:00
coffeeBigSir 4fab1610a2 Merge pull request #16 from audanye-sudo/feat/foundational-feature-upgrade
feat: foundational feature upgrades for validation, logging, and input
2026-03-29 00:47:54 +08:00
audanye-sudo c8f1a9a912 chore: fix staticcheck warnings and restore missing .env.example
- Replace nil context with context.TODO() in logger calls
- Fix import ordering and struct field alignment
- Restore .env.example required by open-source audit tests
2026-03-29 00:30:27 +08:00
audanye-sudo 9d90474fd3 feat: integrate file logger and transport-level input validation
- Wire file logger into root command lifecycle (init + close)
- Pass file logger to transport client for request/response logging
- Add control char and dangerous Unicode validation on tool calls
- Strip query/fragment from endpoints to prevent parameter injection
2026-03-28 23:39:05 +08:00
audanye-sudo 7fdabb6230 feat: improve MAC address selection with virtual NIC fallback
- Extract selectMAC for testable interface selection logic
- Prefer physical NICs, fall back to virtual MACs (e.g. Docker)
- Add comprehensive unit tests for all MAC selection scenarios
2026-03-28 23:38:55 +08:00
audanye-sudo d0ab1ff641 feat: add stdin pipe and @file input support for tool commands
- Add stdin.go with ReadStdinIfPiped and ReadFileArg helpers
- Support @file syntax for --json flag to read payload from file
- Fall back to stdin pipe when no --json argument is provided
2026-03-28 23:38:45 +08:00
audanye-sudo 53bd013899 feat: add structured file logger with rotation and redaction
- Add internal/logging package with JSON file logger
- Support log rotation at 10MB with 3 backup files
- Add MultiHandler for dual output (stderr + file)
- Include automatic secret redaction in log entries
- Add transport-level request/response logging helpers
2026-03-28 23:38:36 +08:00
audanye-sudo 464d571eb3 feat: add centralized input validation and sanitization package
- Add internal/validate with control char rejection, ANSI stripping,
  URL query/fragment stripping, and terminal sanitization
- Refactor output/sanitize.go to delegate to validate package
- Update sanitize test to reflect ANSI escape stripping behavior
2026-03-28 23:38:24 +08:00
tianlei.qjb f3eb2bcb83 GitHub Actions CI 2026-03-28 22:21:20 +08:00
xianfeng wang ee9e5671c4 Merge branch 'DingTalk-Real-AI:main' into main 2026-03-28 21:46:03 +08:00
wxianfeng 4446a3ad7a default output json 2026-03-28 21:44:08 +08:00
xiaojin.hxj aa3f8f3990 feat: integrate open recovery workflow and bump v1.1.0 2026-03-28 20:41:56 +08:00
柏荣 a1dffe454d 逻辑优化 2026-03-28 17:51:22 +08:00
tianlei.qjb 76df9bfcf1 Merge branch 'main' of https://github.com/DingTalk-Real-AI/dingtalk-workspace-cli 2026-03-28 01:10:52 +08:00
tianlei.qjb f3a4bcfc1f init 2026-03-28 01:10:38 +08:00
柏荣 045a3dcf31 优化auth命令 2026-03-27 22:13:02 +08:00
柏荣 cc04a082b1 init 2026-03-27 21:12:49 +08:00
柏荣 f3418a04de init 2026-03-27 20:17:18 +08:00
tianlei.qjb 58e807b81e init 2026-03-27 19:47:19 +08:00
tianlei.qjb 5f938d3675 init 2026-03-27 17:55:57 +08:00