玉澜
51dc237d8a
feat: declarative LeafSpec command framework + schema generation/consumption separation
...
== LeafSpec command framework (internal/helpers/leaf.go) ==
Declarative command construction: LeafSpec/LeafFlag/NewLeafCommand with
Call (pluggable dispatch), LeafInt, PostMount, Trim, Validate. Collapses
per-command hand-written required validation, alias/env fallback, value
transform, and toolArgs assembly into one declarative path.
== devapp migration (28/31 commands) ==
All MCP-direct devapp leaf commands migrated to LeafSpec. Factories
(devAppCall/devAppCallCursor/devAppMeta) fold 33 repeated closures.
fakeDevAppRunner asserts toolArgs for every migrated command. 4 complex
commands (delete/robot submit/result/config) kept hand-written.
== Schema generation/consumption separation ==
- gen.go: isolated //go:generate pragmas from business code.
- command_meta.go: ResolveMeta(cliPath) -> CommandMeta{Identity,Safety,Selection}.
- command_safety.go: SafetyForCLIPath + RenderSafetyAnnotation; safety metadata
flows from embedded catalog into --help output.
- calendar.go HelpFunc fix: delegates to root HelpFunc at help-time.
- schema_catalog_structure.go: closed catalog structure validation gate.
== Registry + catalog per-product sharding ==
schema_command_registry and schema_catalog split into per-product shards,
eliminating concurrent-PR merge conflicts on these files.
== MCP metadata refresh tool ==
cmd/fetch_mcp_metadata: iterates 26 MCP server endpoints, merges with previous
data for cross-server interface_ref. make fetch-mcp-metadata target.
== AGENTS.md ==
Documents the generation/consumption split.
Verified: make policy exit 0, drift zero, all tests pass.
2026-07-19 09:38:43 +08:00
修雨
ec9ae33a43
Merge pull request #651 from wxianfeng/feat/dws-event-im-2phase
...
feat(event): expand personal IM events and flatten output
2026-07-17 16:04:50 +08:00
修雨
ae9b14e536
Merge main into feat/dws-event-im-2phase
2026-07-17 15:46:38 +08:00
修雨
996c4ab250
fix: propagate structured output write failures
2026-07-17 15:04:13 +08:00
修雨
cf36ccb46e
Merge remote-tracking branch 'origin/main' into codex/pr662-current
2026-07-17 14:56:36 +08:00
修雨
361115956f
Merge pull request #648 from LastdianXuan/agent/fix-chat-update-icon-media-id
...
fix: accept uploaded media IDs for group icons
2026-07-17 14:50:51 +08:00
修雨
7cb0398bae
Merge pull request #653 from audanye-sudo/feat/multi-account-profile-support
...
feat(auth): support multiple accounts in one organization
2026-07-17 13:45:34 +08:00
张卓澎
91bd7c7802
fix: emit structured audit verification output
2026-07-17 13:44:18 +08:00
张卓澎
5a8376ac0f
fix: keep JSON command output machine-readable
2026-07-17 13:44:18 +08:00
张卓澎
31c984e18c
fix: use MCP group ID key for message lists
2026-07-17 13:44:18 +08:00
修雨
69c0eb1a49
Merge remote-tracking branch 'origin/main' into codex/pr648-current
2026-07-17 12:25:43 +08:00
张卓澎
82e98d98a3
test: cover group icon validation on all platforms
2026-07-17 12:15:22 +08:00
张卓澎
8a7e1c7be7
fix: accept uploaded media IDs for group icons
2026-07-17 12:01:25 +08:00
wxianfeng
f59be6c19a
fix(event): address PR review gates
2026-07-17 11:57:27 +08:00
audanye-sudo
fbc2575c93
fix(auth): address multi-account review feedback
2026-07-17 11:45:03 +08:00
修雨
58cb4789cd
test(aitable): cover import upload in owning package
2026-07-17 11:31:53 +08:00
修雨
63b5fe3143
Merge remote-tracking branch 'origin/main' into codex/pr654-coverage-fix
2026-07-17 11:26:10 +08:00
修雨
03796388c3
test(shortcut): cover platform compatibility paths
2026-07-17 11:03:09 +08:00
audanye-sudo
69b31da4ba
fix(auth): gate identity diagnostics behind opt-in
2026-07-17 10:47:24 +08:00
修雨
833d0cc05e
Merge main into bugfix-im-shortcut-ai-tag
...
Resolve the shortcut catalog constraint migration and preserve both fake caller response modes.
2026-07-17 10:37:55 +08:00
张卓澎
b7cbef1c6f
fix(aitable): require import upload file size
2026-07-17 10:23:40 +08:00
Dennis
8d1ccd1b98
fit chat shortcut aliases
2026-07-17 09:36:28 +08:00
Dennis
c84b5d05f4
fix chat search shortcut keyword alias
2026-07-17 09:29:06 +08:00
audanye-sudo
5224d9c527
fix(auth): harden multi-account profile compatibility
...
Preserve manual-token defaults across explicit profile refreshes and selective logout while keeping legacy marker behavior compatible.
Make profile login, refresh, switch, and logout writes rollback-safe; reject unsupported future profile versions before remote side effects; and prevent cross-profile token fallback.
Forward token overrides through usage recording, use the newly authenticated identity for post-login authorization, distinguish unavailable profile state, and propagate Windows registry deletion failures.
2026-07-17 02:11:45 +08:00
audanye-sudo
2d143589f8
feat(cli): add deterministic multi-account profile workflows
...
Accept corpId:userId and friendly organization/account selectors across global --profile, profile switch/use, event child processes, and multi-profile command execution.
List every local account in storage order with live identity-token status, preserve exact current and previous identities, and require explicit selection when an organization has no deterministic current account.
Extend auth logout to remove one exact account, every account in one organization, or all local accounts while revoking each token with its persisted credentials.
Use in-memory login tokens for identity enrichment before persistence, refresh generated Schema artifacts, and cover the complete CLI flow with isolated beta.3 end-to-end tests.
2026-07-17 00:56:57 +08:00
audanye-sudo
93854178e3
feat(auth): support exact multi-account profile identities
...
Store DingTalk credentials in corpId:userId identity slots while retaining organization and legacy mirrors for forward compatibility.
Resolve organization, account, friendly-name, current, previous, and deletion selectors without silently choosing among ambiguous accounts.
Make identity tokens the source of truth, serialize migration and refresh reads, reject unsafe mirror recovery, and sweep orphan token entries during reset.
Persist token source and client ID for exact remote revocation, require user identity before first-login persistence, and add cross-platform regression coverage for migration, deletion, refresh, and keychain failures.
2026-07-17 00:56:43 +08:00
wxianfeng
c7c9a6f926
Merge remote-tracking branch 'upstream/main' into feat/dws-event-im-2phase
...
# Conflicts:
# CHANGELOG.md
# internal/cli/schema_agent_metadata/index.json
# internal/cli/schema_agent_metadata_audit.json
# internal/cli/schema_catalog.json
2026-07-16 23:20:35 +08:00
wxianfeng
a0224e1cbd
fix(event): refine schema contracts and metadata
2026-07-16 17:45:03 +08:00
Dennis
0d81f061d8
fix shortcut IM AI message tag
2026-07-16 15:39:39 +08:00
wxianfeng
cd22cfb530
chore(event): switch personal events to production
2026-07-16 15:04:04 +08:00
修雨
950de23e74
Merge branch 'main' into codex/fix-windows-portable-export-contract
2026-07-16 14:31:53 +08:00
wxianfeng
adc528c206
Merge remote-tracking branch 'upstream/main' into feat/dws-event-im-2phase
...
# Conflicts:
# .github/badges/coverage.svg
# internal/cli/schema_agent_metadata/index.json
# internal/cli/schema_agent_metadata_audit.json
# internal/cli/schema_catalog.json
# internal/event/consume/formatter.go
2026-07-16 14:27:39 +08:00
修雨
07d2e4597e
test(auth): keep portable fixtures platform-neutral
2026-07-16 13:55:58 +08:00
修雨
57d753cd1d
Merge remote-tracking branch 'origin/main' into codex/pr628-main-sync-20260716
...
# Conflicts:
# CHANGELOG.md
# internal/app/auth_command.go
# internal/app/auth_command_test.go
# internal/app/config_test.go
# internal/app/root.go
# internal/app/skill_setup_test.go
# internal/app/timing_test.go
# internal/auth/portable_store.go
# internal/logging/logger.go
2026-07-16 13:42:38 +08:00
修雨
9e12da0219
Merge remote-tracking branch 'origin/main' into codex/feat-contact-enterprise-onboarding
2026-07-16 13:18:04 +08:00
修雨
d202d58963
Merge remote-tracking branch 'origin/main' into codex/pr628-main-sync-20260716
2026-07-16 12:40:55 +08:00
修雨
4068847742
Merge remote-tracking branch 'origin/main' into codex/test-coverage-100-v2
2026-07-16 12:40:55 +08:00
修雨
a519a2ff8a
fix(contact): validate enterprise onboarding writes
2026-07-16 12:38:05 +08:00
修雨
270771de0c
test(contact): include onboarding cases in coverage gate
2026-07-16 12:27:25 +08:00
修雨
3ec8320680
feat(contact): add enterprise onboarding commands
2026-07-16 12:27:24 +08:00
修雨
2c4d539a02
Merge remote-tracking branch 'origin/main' into codex/test-coverage-100-v2
2026-07-16 12:26:53 +08:00
修雨
59abfc7dfd
Merge remote-tracking branch 'origin/main' into codex/pr620-fix
2026-07-16 12:24:23 +08:00
修雨
c79c5dfffe
test(windows): isolate portable import side effects
2026-07-16 12:21:27 +08:00
修雨
7dc5b6f2ed
test(coverage): exercise portable auth platform guards
2026-07-16 12:12:26 +08:00
修雨
f9b37486fd
Merge remote-tracking branch 'origin/main' into codex/pr620-fix
2026-07-16 12:10:39 +08:00
修雨
ad6e22d8cf
fix(coverage): keep keychain GCM seam in profiled file
2026-07-16 12:09:38 +08:00
修雨
05c0f1af1e
Merge main@f56de38b into agent/fix-calendar-rooms-help
2026-07-16 12:08:28 +08:00
修雨
fb4e6a0fdb
Merge origin/main into codex/fix-windows-portable-export-contract
2026-07-16 12:05:22 +08:00
修雨
2b715e35ad
test(calendar): include help check in platform coverage
2026-07-16 12:04:31 +08:00
修雨
f56de38b79
Merge pull request #634 from typefield/feat/dws-devapp-get-by-appkey
...
feat(devapp): support get by app-key for app detail lookup
2026-07-16 12:01:17 +08:00