Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
267 commits
Select commit Hold shift + click to select a range
ce4d70b
feat: hide thinking chain in compact mode
Mar 30, 2026
7eddfa4
feat: wire VerboseModeContext into AppContainer with Ctrl+O toggle an…
Mar 30, 2026
836f8e1
feat: add verbose mode indicator to Footer
Mar 30, 2026
c1d22b6
feat: add i18n keys for verbose/compact mode messages
Mar 30, 2026
6d4a8ea
docs: update Ctrl+O keyboard shortcut description for verbose mode
Mar 30, 2026
b7e208d
docs: add verbose design doc
Mar 30, 2026
593abf6
refactor: update verbose mode and docks
Mar 31, 2026
b1ed0ab
build: sync package versions to 0.13.2 and fix repository URLs
Mar 31, 2026
791a6b2
refactor: update intl messages
Mar 31, 2026
2f30a61
Merge remote-tracking branch 'origin/main' into dataworks
Mar 31, 2026
879c6e8
build: bump versions to 0.13.2-dataworks.1
Mar 31, 2026
f1ead36
chore: remove package-lock.json from git tracking (already in .gitign…
Mar 31, 2026
5475f37
Merge branch 'dataworks' of gitlab.alibaba-inc.com:alishu/qwen-code i…
Mar 31, 2026
8c566af
refactor: fix cr comments
Mar 31, 2026
455d1e5
Merge branch feat/add-verbose-mode-switcher into dataworks
Mar 31, 2026
f1b3429
build: bump versions to 0.13.2-dataworks.2
Mar 31, 2026
0ecd5bd
docs: capitalize Ctrl+O in settings schema description
Mar 31, 2026
b621fe8
feat: dataworks tips
jifeng Apr 1, 2026
4c3ef39
Merge branch dataworks_20260401210947 into dataworks
Apr 1, 2026
f0a84ee
feat: powered by
jifeng Apr 1, 2026
d431830
Merge branch dataworks_20260401210947 into dataworks
Apr 1, 2026
e7f251d
build: bump versions to 0.13.2-dataworks.3
Apr 1, 2026
aa99b2a
refactor: fix build error
Apr 1, 2026
c196f8e
Merge branch 'dataworks' of gitlab.alibaba-inc.com:alishu/qwen-code i…
Apr 1, 2026
0b25af9
build: bump versions to 0.13.2-dataworks.4
Apr 1, 2026
bdbe67c
refactor: compact tool group display
Apr 1, 2026
2f910f0
Merge branch 'dataworks' of gitlab.alibaba-inc.com:alishu/qwen-code i…
Apr 1, 2026
a159cbc
ci: puhlish v0.13.2-dataworks.5
Apr 1, 2026
38da678
Merge branch feat/fold-all-tool-output into dataworks
Apr 2, 2026
f316099
refactor: update tips message
Apr 2, 2026
aa41e60
update message folding style
Apr 2, 2026
2a8f3fa
refactor: update tool call label
Apr 2, 2026
81d7829
Merge branch feat/fold-all-tool-output into dataworks
Apr 2, 2026
8f92fa3
ci: publish v0.13.2-dataworks.6
Apr 2, 2026
a72d6fe
ci: publish v0.13.2-dataworks.6
Apr 2, 2026
ca92479
feat: squash merge QwenLM/qwen-code#2525
yiliang114 Apr 2, 2026
017b556
build: bump cli package version to 0.13.2-dataworks.7
yiliang114 Apr 2, 2026
9dcb527
chore(channels): update package names and publish config for dataworks
yiliang114 Apr 2, 2026
a54bec1
chore(core,cli): bump version to 0.13.2-dataworks.7/8
yiliang114 Apr 2, 2026
9266b36
feat(vscode-ide-companion): add fastModel config and core dist alias
yiliang114 Apr 2, 2026
3e2ab7e
fix(webui): update types path and add css module declaration
yiliang114 Apr 2, 2026
a35c971
fix(core): filter thinking/reasoning parts from followup suggestion text
yiliang114 Apr 2, 2026
8d65b63
chore(core,cli): bump versions and publish
yiliang114 Apr 2, 2026
ef4328e
build: bump cli package version to 0.13.2-dataworks.10
yiliang114 Apr 2, 2026
1e554bf
feat(cli): keep user shell commands expanded in compact mode
Apr 2, 2026
4985603
Merge branch feat/tui-folding-optimization into dataworks
Apr 2, 2026
0d11c07
build: fix build error
Apr 2, 2026
286e862
fix(core): support dedicated fast model generator and streaming for f…
yiliang114 Apr 2, 2026
4ee2dd6
Merge branch 'dataworks' of gitlab.alibaba-inc.com:alishu/qwen-code i…
yiliang114 Apr 2, 2026
eaea0b9
bump cli package version to 0.14.0-dataworks.2
yiliang114 Apr 2, 2026
074af7b
feat(core): implement mid-turn queue drain for agent execution
wenshao Apr 3, 2026
e34d3f2
feat(cli): add mid-turn queue drain to main session
wenshao Apr 3, 2026
cd21267
fix: address Copilot review feedback on mid-turn drain
wenshao Apr 3, 2026
2f77922
refactor: scope mid-turn drain to main session only
wenshao Apr 3, 2026
92a14fa
fix: address Copilot review on main session mid-turn drain
wenshao Apr 3, 2026
bcf44c8
fix: guard mid-turn drain against cancelled turns
wenshao Apr 3, 2026
725ca99
fix(permissions): match env-prefixed shell commands against saved per…
yiliang114 Apr 4, 2026
1d7b246
build: bump cli package version to 0.14.0-dataworks.4
yiliang114 Apr 4, 2026
845f6ef
feat: delele model show
jifeng Apr 4, 2026
ceb12f0
Merge branch dataworks_models into dataworks
yiliang114 Apr 4, 2026
0fc44d4
refactor: remove unused imports and props in Header component
yiliang114 Apr 4, 2026
47a8ec3
[to #80958901] fix(cli): get all packages/cli unit tests passing
Apr 7, 2026
a544016
refactor: update copy script path structure and timestamps
Apr 7, 2026
1d687e2
[to #80958901] fix(core): convert brittle vi.mock factories to import…
Apr 7, 2026
ff83fd9
fix(cli): cherry-pick verbose/compact mode improvements from QwenLM/q…
Apr 8, 2026
1098cec
【Github DDAR】 feat(cli): add queue input editing via Up arrow key
yiliang114 Apr 8, 2026
9e5a2ee
【Github DDAR】 feat(core): intelligent tool parallelism with Kind-base…
yiliang114 Apr 8, 2026
e0841ec
fix(core): accept partial stream content when finish reason is missing
yiliang114 Apr 8, 2026
53e839b
【Github DDAR】 feat(core): implement mid-turn queue drain for agent ex…
yiliang114 Apr 8, 2026
950589c
【Github DDAR】 fix(followup): prevent tool call UI leak and Enter acce…
yiliang114 Apr 8, 2026
d3873ae
【Github DDAR】 feat(prompt): add dangerous actions behavior guidance i…
yiliang114 Apr 8, 2026
be73fba
docs(core): add root cause analysis comments to stream validation logic
yiliang114 Apr 8, 2026
3afd173
fix: guard mid-turn drain against cancelled turns
yiliang114 Apr 8, 2026
8e22c23
fix: restore verbose/compact mode i18n keys for future use
Apr 8, 2026
b753b05
Merge branch fix/cherry-pick-pr2770-review-feedback into dataworks
yiliang114 Apr 8, 2026
cfbf538
feat(core): add retry logic for subagent transient stream errors
yiliang114 Apr 8, 2026
f735292
qwen-code支持双输出模式
Apr 8, 2026
c921613
fix: remove duplicate imports and exports causing build failure
Apr 8, 2026
0c2cb47
Merge branch 'dataworks' into fix/core-unit-tests
Apr 8, 2026
2b162d5
fix(core): increase retry backoff to survive DashScope degradation st…
yiliang114 Apr 8, 2026
209a380
fix(core): increase GeminiChat internal stream retries from 2 to 3
yiliang114 Apr 8, 2026
fdfbb51
fix(build): fix webui types resolution and eslint no-internal-modules…
yiliang114 Apr 8, 2026
0ee0110
Merge branch 'dataworks' of gitlab.alibaba-inc.com:alishu/qwen-code i…
yiliang114 Apr 8, 2026
81267f1
fix(build): fix webui types resolution and eslint no-internal-modules…
yiliang114 Apr 8, 2026
c244131
Merge branch 'dataworks' into feat/mid-turn-queue-drain-dataworks
yiliang114 Apr 8, 2026
24f33e8
Merge branch feat/mid-turn-queue-drain-dataworks into dataworks
yiliang114 Apr 8, 2026
73042e3
fix(build): fix webui dist/index.d.ts empty export for NodeNext consu…
yiliang114 Apr 8, 2026
9ce4152
[to #80958901] fix(core): import ApprovalMode directly to bypass barr…
Apr 8, 2026
b77d4e8
[to #80958901] fix(cli): regenerate Footer/HistoryItemDisplay snapsho…
Apr 8, 2026
2dc0799
[to #80958901] fix(vscode-ide-companion): unblock test suite (postcss…
Apr 8, 2026
f87780b
Merge commit '73042e3e68cfb9098e0db1a9af9de26a0cfe1ba7' into 'main'
Apr 8, 2026
625c0b3
refactor: enhance release mode logic in copy script
yiliang114 Apr 9, 2026
95b00eb
修复 compact mode 下选择 "Allow always" 后权限不持久化的 bug
yiliang114 Apr 10, 2026
9034663
Merge '625c0b3' into 'def_releases_2026041015395050_alishu_qwen-code/…
Apr 10, 2026
3a240e4
Merge commit '9034663bbc7080b85b627029537b6394ea90de89' into 'main'
Apr 10, 2026
aef3b55
Merge remote-tracking branch 'origin/fix/dataworks-unit-tests' into f…
yiliang114 Apr 10, 2026
7cee461
build: switch package dependencies from npm to local file references
yiliang114 Apr 10, 2026
9f87609
Merge branch 'main' of gitlab.alibaba-inc.com:alishu/qwen-code into f…
yiliang114 Apr 10, 2026
c1f512e
Merge remote-tracking branch 'origin/main' into fix/dataworks-unit-te…
yiliang114 Apr 10, 2026
e3edf05
chore: bump package versions to 0.14.2 across multiple packages
yiliang114 Apr 10, 2026
197957f
Merge branch 'fix/dataworks-unit-tests' of gitlab.alibaba-inc.com:ali…
yiliang114 Apr 10, 2026
9d10502
chore: bump package versions to 0.14.2
yiliang114 Apr 10, 2026
4d8a561
build: update package dependencies to use npm registry instead of fil…
yiliang114 Apr 11, 2026
915dc22
chore: sync upstream QwenLM/qwen-code to latest (399 commits)
yiliang114 Apr 11, 2026
accea6a
fix(webui): restore rolled-up type declarations
yiliang114 Apr 13, 2026
3ab9f83
fix(core): fallback after empty stream retries
yiliang114 Apr 13, 2026
dee9dce
test: add verification for telemetry events in geminiChat test case
yiliang114 Apr 13, 2026
d2c25bb
fix(build): restore workspace file deps and add lockfile
yiliang114 Apr 13, 2026
b57ec05
Merge branch sync/upstream-20260411 into main
yiliang114 Apr 13, 2026
4a52f32
refactor: remove unused fs import and cleanup vite config comments
yiliang114 Apr 13, 2026
5d72143
feat: add support for setting initial model ID and improve chat funct…
yiliang114 Apr 13, 2026
54f46c5
Merge origin/main into fix/dataworks-unit-tests
yiliang114 Apr 13, 2026
67ee5fc
Merge branch fix/dataworks-unit-tests into main
yiliang114 Apr 13, 2026
04c7725
Merge branch 'main' of gitlab.alibaba-inc.com:alishu/qwen-code into f…
yiliang114 Apr 13, 2026
a4c6fb3
refactor(vite.config): remove unused imports and simplify path handling
yiliang114 Apr 13, 2026
1f149c7
Revert "refactor(vite.config): remove unused imports and simplify pat…
yiliang114 Apr 13, 2026
5d76eb0
Merge branch main (fix/dataworks-unit-tests) into fix/restore-file-deps
yiliang114 Apr 13, 2026
a15d8ca
build: add npm publish workflow for CI/CD pipeline
yiliang114 Apr 13, 2026
fde65e7
fix: sync package-lock.json with @alife workspace package names
yiliang114 Apr 13, 2026
5540ac3
fix: resolve 3 CI test failures and add skip_tests option to publish …
yiliang114 Apr 13, 2026
e982bd5
ci: rename parameters to
yiliang114 Apr 13, 2026
ee42859
ci: update npm publish config parameters format
yiliang114 Apr 13, 2026
af74591
fix: correct skip_tests condition syntax for AoneCI
yiliang114 Apr 13, 2026
33ce472
fix(sdk): clean up process exit listeners in ProcessTransport tests
yiliang114 Apr 13, 2026
a627407
fix: use shell-level check for skip_tests instead of step if
yiliang114 Apr 13, 2026
d1bac65
ci: comment out test step in npm publish workflow
yiliang114 Apr 13, 2026
f632f8f
build: update package.json workspaces list
yiliang114 Apr 13, 2026
a7cde18
test: remove unnecessary mocks and skips in tests
yiliang114 Apr 13, 2026
34b328a
Merge branch fix/openai-empty-stream-fallback into main
yiliang114 Apr 13, 2026
651fe7b
Merge branch 'main' of gitlab.alibaba-inc.com:alishu/qwen-code into f…
yiliang114 Apr 13, 2026
8351df2
build: add publishConfig.registry to all @alife packages
yiliang114 Apr 13, 2026
45967da
build: pass npm token from secrets to npm-publisher
yiliang114 Apr 13, 2026
e2fa1f8
build: update package names and ci config for publishing
yiliang114 Apr 13, 2026
3ac560d
build: update package names and ci config for publishing
yiliang114 Apr 13, 2026
a7f362e
ci: update npm publish config with new token format
yiliang114 Apr 13, 2026
68408a7
build: write .npmrc with auth token before npm publish
yiliang114 Apr 13, 2026
0729cd3
fix: simplify .npmrc to single line with registry + authToken
yiliang114 Apr 13, 2026
77c8cea
ci: update npm publish config with new token format
yiliang114 Apr 13, 2026
0ba10b8
fix: write .npmrc to project directory instead of home
yiliang114 Apr 13, 2026
353353a
ci: enable npm publish token in ci config
yiliang114 Apr 13, 2026
87605a3
chore: bump version to 0.14.4 across multiple package.json files
yiliang114 Apr 13, 2026
488ce54
恢复部分合并丢失的 qwen-code支持双输出模式 代码
yiliang114 Apr 14, 2026
af8684c
ci: update npm publish config for internal registry
yiliang114 Apr 14, 2026
2e4cf42
Merge branch 'main' of gitlab.alibaba-inc.com:alishu/qwen-code into f…
yiliang114 Apr 14, 2026
5d0b4fe
ci: comment out npm publish trigger branches
yiliang114 Apr 14, 2026
fc1e209
恢复部分合并丢失的 qwen code cli 代码
yiliang114 Apr 14, 2026
0ce14f9
构建 qwen code 打包的二进制脚本
yiliang114 Apr 15, 2026
0b8ed08
Merge branch fix/restore-file-deps into main
yiliang114 Apr 15, 2026
b1f6455
fix(dingtalk): prioritize senderStaffId over senderId and add debug log
yiliang114 Apr 15, 2026
116f798
Merge branch fix/dingtalk-senderid-priority into main
yiliang114 Apr 15, 2026
ca172b6
fix(i18n): restore DataWorks input placeholder and usage example tips
yiliang114 Apr 16, 2026
be2e074
refactor: clean up bundle-publish branch
yiliang114 Apr 16, 2026
7f76481
fix(core): allow thought-only responses in GeminiChat stream valida…
yiliang114 Apr 16, 2026
19f7da9
chore: sync upstream QwenLM/qwen-code to latest (56 commits — 0.14.5)
yiliang114 Apr 17, 2026
be928ad
Merge branch sync/upstream-20260417 into main
yiliang114 Apr 17, 2026
a8f9a4f
feat(subagents): propagate approval mode to sub-agents (#3066)
tanzhenxin Apr 13, 2026
f33e231
feat(core): implement fork subagent for context sharing (#2936)
wenshao Apr 14, 2026
5274e8e
fix(core): add retry mechanism for subagent stream errors + retryNote
yiliang114 Apr 17, 2026
683d7d7
refactor(mcp-oauth): move copy hint directly under the auth URL
Apr 17, 2026
405901d
Merge branch feat/agent-fork-approval into main
yiliang114 Apr 17, 2026
98695c4
feat(cli): Add OAuth flags to mcp add command
Apr 20, 2026
124cd12
style: quote workflow job names and actions for consistency
yiliang114 Apr 20, 2026
4fc4973
fix: align StreamJsonOutputAdapter, DingtalkAdapter, WebViewProvider.…
yiliang114 Apr 20, 2026
e3566cb
fix: align DualOutputBridge and RemoteInputWatcher with upstream (PR …
yiliang114 Apr 20, 2026
99d0ba4
fix: align cli/config.ts and PanelManager.ts with upstream
yiliang114 Apr 20, 2026
aeb95e3
fix: align gemini.tsx and DualOutputBridge.test.ts with upstream
yiliang114 Apr 20, 2026
a7ddd85
fix: align mcp/add.test.ts type cast and core/config.ts JSDoc with up…
yiliang114 Apr 20, 2026
d321c56
chore: sync upstream QwenLM/qwen-code 2026-04-20 (48 commits)
yiliang114 Apr 20, 2026
a49ee09
feat(ui): 在 Header 信息面板中展示当前 model 名称
yiliang114 Apr 20, 2026
0d06454
Merge branch sync/resolve-upstream-20260420 into main
yiliang114 Apr 20, 2026
6fccf40
fix(build): bundle i18n locales and extension examples into dist/
Apr 21, 2026
54d3a11
fix(mcp): make the OAuth authorization URL clickable when wrapped
Apr 21, 2026
8ed4295
chore(release): bump version to 0.14.7 across all packages
yiliang114 Apr 22, 2026
d939701
refactor: add BFF endpoint logic for OAuth redirect URI generation
Apr 24, 2026
91125d4
fix(cli): stabilize startup tip across Static remounts
Apr 24, 2026
3400703
chore(release): bump version to 0.14.8
yiliang114 May 6, 2026
3ce1b1b
test(cli): 精简 CLI 定制测试修复
yiliang114 May 7, 2026
7073c34
test(cli): pre-resolve AppContainer sync conflict
yiliang114 May 7, 2026
a370a54
chore: sync upstream 2026-05-07
May 7, 2026
b716631
fix(cli): validate model slash command arguments
yiliang114 May 8, 2026
ffebdd3
fix(cli): unfreeze Ctrl+O compact-mode toggle on long conversations
May 8, 2026
369af25
Merge branch 'dataworks-20260508' of gitlab.alibaba-inc.com:alishu/qw…
yiliang114 May 8, 2026
10239d3
Merge remote-tracking branch 'upstream/main' into sync/upstream-20260511
yiliang114 May 11, 2026
40f349f
fix(core): restore internal web search tool glue
yiliang114 May 11, 2026
6040fe7
Merge remote-tracking branch 'origin/dataworks-20260511' into sync/up…
yiliang114 May 11, 2026
be160f6
fix(cli): stabilize remote input bridge tests
yiliang114 May 11, 2026
cecd293
test(cli): stabilize auth and theme CI tests
yiliang114 May 11, 2026
7f474d8
test(core): avoid cold import timeout in skill activation
yiliang114 May 11, 2026
279f76b
fix(build): restore dataworks npm publish metadata
yiliang114 May 11, 2026
6db7947
ci: update OSS endpoint and bucket config
yiliang114 May 13, 2026
ffa1356
ci: update oss secrets in ci workflows
yiliang114 May 13, 2026
74325e4
ci: remove oss upload smoke workflow
yiliang114 May 13, 2026
fc3bb35
fix(ci): publish qwen oss channel metadata
yiliang114 May 13, 2026
4a25240
fix:put ding talk card
May 13, 2026
40ba9f9
Merge branch 'feat/ding_talk_channel_card' of gitlab.alibaba-inc.com:…
yiliang114 May 13, 2026
ab0edd3
fix(cli): restore DataWorks DataAgent branding lost during upstream sync
May 13, 2026
07246a1
fix(cli): restore DataWorks tips and i18n translations lost during up…
May 13, 2026
1b9d1b2
fix(cli): prioritize DataWorks tips over qwen-code native tips
May 13, 2026
f4b624d
fix(cli): fix failing test assertions for DataWorks branding
May 13, 2026
851d8c6
Merge branch sync/upstream-20260511 into dataworks-20260511
yiliang114 May 14, 2026
d4cbb7c
Merge branch dataworks-20260511 into main
yiliang114 May 14, 2026
122e06d
Merge remote-tracking branch 'origin/main' into sync/upstream-20260514
yiliang114 May 14, 2026
4ca5a58
feat(cli): wrap markdown links in OSC 8 so wrapped URLs stay clickabl…
May 14, 2026
0982a02
Merge remote-tracking branch 'origin/main' into sync/upstream-20260514
yiliang114 May 14, 2026
1046651
Merge remote-tracking branch 'upstream/main' into sync/upstream-20260514
yiliang114 May 14, 2026
bc3703a
Merge branch sync/upstream-20260514 into main
yiliang114 May 14, 2026
bc31520
优化发布脚本
yiliang114 May 14, 2026
aa94e51
fix:update card bug and add stop btn with new module
May 14, 2026
c2bf54e
feat: add default OAuth redirect URI builder
May 15, 2026
6b37a47
fix(cli): restore alishu / internal-deployment OSC 8 signals
May 15, 2026
498267a
fix(ci): add always:true to schedule trigger for upstream sync pipeline
yiliang114 May 21, 2026
f607af2
fix: remove built-in web_search tool, align with upstream MCP-based a…
yiliang114 May 21, 2026
9e4b33f
feishu channel
May 21, 2026
c6b168e
fix(core): extend DashScope provider detection & remove broken remote…
yiliang114 May 22, 2026
026f2f7
fix(build): tree-shake React reconciler dev build to prevent Performa…
yiliang114 May 25, 2026
7eb650b
fix(dingtalk): remove default cardTemplateId, fallback to markdown wh…
May 27, 2026
ab38e03
feat(fork): add patch-based upstream sync infrastructure
yiliang114 May 29, 2026
2f5b9a9
fix(ci): rewrite upstream sync to patch-apply model
yiliang114 May 31, 2026
c11d65b
fix(ci): collapse LLM_PROMPT to single line to fix YAML parse error
yiliang114 May 31, 2026
8dba911
chore: sync upstream 2026-05-31
May 31, 2026
e0370b8
fix: sync package-lock.json after identity rewrite
Jun 1, 2026
63aa60f
fix(test): skip chmod-based tests when running as root
Jun 1, 2026
ea6b404
fix(sync): restore fork-only files missing from sync branch
Jun 1, 2026
de49900
fix(build): add SWARM tool constant and remove uncompilable fork modules
Jun 1, 2026
17e8f75
fix(test): align eventBus overflow test with upstream behavior
Jun 1, 2026
777f5e8
fix(test): skip flaky eventBus overflow eviction test
Jun 1, 2026
2f3e017
ci: retrigger pipeline
Jun 1, 2026
e38c5ca
fix(ci): align standalone tarball output path with prepare-artifact l…
Jun 1, 2026
8254a2a
fix(ci): export env vars so build-standalone-ci.sh inherits them
Jun 1, 2026
d47e0cf
Merge branch sync/upstream-20260531 into main
yiliang114 Jun 2, 2026
3ad9b35
fix(release): rename @qwen-code/acp-bridge to @alife/dataworks-qwen-c…
yiliang114 Jun 2, 2026
5df9472
fix(release): sync package-lock.json with renamed acp-bridge package
yiliang114 Jun 2, 2026
e417c65
chore: sync upstream 2026-06-03
Jun 3, 2026
e5a85f9
fix(publish): rename @qwen-code/sdk to @alife/dataworks-qwen-code-sdk
yiliang114 Jun 4, 2026
82b7d29
fix: restore fork-specific files overwritten by upstream sync
Jun 5, 2026
1008a7f
fix(ci): prevent silent patch-apply failures in upstream sync
Jun 6, 2026
88b29cf
fix(ci): add -h flag to grep in patch file exclusion
Jun 6, 2026
9683da3
Merge remote-tracking branch 'origin/main' into sync/upstream-20260603
Jun 8, 2026
3557c9d
fix(build): restore SWARM constant in ToolNames
Jun 8, 2026
12d4219
fix(test): restore fork test adaptations overwritten by sync
Jun 8, 2026
92f70cb
fix(test): skip chmod cleanup test when running as root
Jun 8, 2026
111054b
fix(ci): add testTimeout for core tests and restore fork test adapts
Jun 8, 2026
447f07f
chore(fork): remove patch 0006 (DingTalk card enhancements)
Jun 8, 2026
0bc615a
Merge branch sync/upstream-20260603 into main
yiliang114 Jun 8, 2026
2ca4d3c
fix(fork): restore lost patches and add CI verification gate
yiliang114 Jun 10, 2026
98ddaff
fix(ci): 修复 upstream sync patch apply 失败与 LLM 修复判定 bug
yiliang114 Jun 12, 2026
9622592
fix(ci): refresh upstream sync patches
yiliang114 Jun 22, 2026
bb23a00
fix(mcp): 统一 OAuth redirect_uri 拼接并支持 ACS_SANDBOX 代理段
Jun 23, 2026
20cf931
ci: use zero-trust OSS dual-cloud upload
callmeYe Jul 7, 2026
476dfd0
fix(cli): prevent silent VP-mode crash by adding uncaughtException ha…
Jul 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
180 changes: 180 additions & 0 deletions .aoneci/npm-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
# .aoneci/workflows/npm-publish.yml
# 发布 npm 包到 anpm
#
# 版本策略:
# - main 分支 + release_mode=true:x.y.z-dataworks.N + dist-tag=latest(正式版)
# - 其他所有情况: x.y.z-beta.N + dist-tag=beta(预发布版)
# - 版本号自动查询 registry 递增 N
#
# 流程:
# 1. npm ci — 安装依赖
# 2. npm run build — tsc 编译所有 workspace 包
# 3. npm run bundle — esbuild 首次打包 CLI(使用 package.json 原始版本)
# 4. publish-packages.js:
# a. 写入 .npmrc 认证
# b. auto-version → 更新所有 package.json 版本号
# c. re-bundle → 重新 esbuild 打包(使用新版本号,嵌入 CLI_VERSION)
# d. npm publish --workspaces → 发布所有非 private 包
# 5. 打包 bundle tarball 并上传 OSS
# - latest 发布更新 latest/dataworks 指针
# - beta 发布更新 beta 指针

name: 'NPM Publish'

# 仅手动触发,避免误发布。在 Aone CI 平台手动选择分支和参数执行。
# 默认 dry-run,真实发布需手动关闭。

params:
dry_run:
description: '是否 dry-run(勾选=仅模拟,不勾选=真实发布)'
type: boolean
default: true
release_mode:
description: '正式版发布(仅 main 分支生效,开启后发布 dataworks + latest)'
type: boolean
default: false

jobs:
npm-build-publish:
runs-on:
- 32-128Gi
name: 'Build & Publish'
image: alios-8u
envs:
BOOTSTRAP_TOKEN: ${{secrets.BOOTSTRAP_TOKEN}}
OSS_UPLOAD_TARGETS: "public finance"
steps:
- uses: checkout
- uses: setup-env
inputs:
node-version: '22'
tnpm-version: '10'
python-version: '3.10'
rust-toolchain-version: stable
tnpm-cache: true

- name: 'Install dependencies'
run: 'npm ci'

- name: 'Build project (tsc)'
run: 'npm run build'

- name: 'Run tests'
run: |
# Root `npm run test` runs workspaces in parallel, which makes AoneCI
# failure logs hard to locate. Run publish checks sequentially so the
# first failing package is visible in the job output.
set -e
npm -w packages/cli run test -- \
--testTimeout=30000 \
--hookTimeout=30000
npm -w packages/core run test -- \
--testTimeout=30000
npm -w packages/sdk-typescript run test
npm -w packages/vscode-ide-companion run test

- name: 'Bundle CLI (esbuild)'
run: 'npm run bundle'

- name: 'Verify bundle'
run: |
echo "=== dist/cli.js ==="
ls -lh dist/cli.js
echo ""
echo "=== dist/ structure ==="
ls dist/

- name: 'Publish packages'
run: |
# 仅 main 分支 + release_mode=true 才发正式版,其他一律 beta
if [ "${{git.branch}}" = "main" ] && [ "${{ params.release_mode }}" = "true" ]; then
PUBLISH_TAG="latest"
PUBLISH_PRE_ID="dataworks"
else
PUBLISH_TAG="beta"
PUBLISH_PRE_ID="beta"
fi
echo "Branch: ${{git.branch}} release_mode=${{params.release_mode}} → tag=$PUBLISH_TAG, pre_id=$PUBLISH_PRE_ID"
ARGS="--token ${{ secrets.inner_npm_publish_token }} --tag $PUBLISH_TAG --pre-id $PUBLISH_PRE_ID --auto-version"
[ "${{ params.dry_run }}" = "true" ] && ARGS="$ARGS --dry-run"
node scripts/publish-packages.js $ARGS

- name: 'Verify published CLI package'
run: |
DRY_RUN="${{ params.dry_run }}"
if [ "$DRY_RUN" = "true" ]; then
echo "Skipped (dry-run mode)"
exit 0
fi
sleep 5
echo "=== @alife/dataworks-qwen-code ==="
npm view @alife/dataworks-qwen-code --registry=https://registry.anpm.alibaba-inc.com/ --json 2>&1 | node -e "
const j = JSON.parse(require('fs').readFileSync('/dev/stdin','utf8'));
const tags = j['dist-tags'] || {};
for (const [tag, ver] of Object.entries(tags)) {
console.log(tag + ':', ver);
}
" || echo "View failed"

# ── OSS Bundle 发布 ──

- name: 'Resolve version & OSS policy'
run: |
VERSION=$(node -e "process.stdout.write(require('./package.json').version)")
mkdir -p /workspace
echo "${VERSION}" > /workspace/.resolved_version
date -u +%Y-%m-%dT%H:%M:%SZ > /workspace/.build_time
if [ "${{git.branch}}" = "main" ] && [ "${{ params.release_mode }}" = "true" ]; then
OSS_RELEASE_CHANNELS="dataworks"
SKIP_LATEST_POINTER=""
else
OSS_RELEASE_CHANNELS="beta"
SKIP_LATEST_POINTER="1"
fi
{
printf 'OSS_RELEASE_CHANNELS=%s\n' "${OSS_RELEASE_CHANNELS}"
printf 'SKIP_LATEST_POINTER=%s\n' "${SKIP_LATEST_POINTER}"
printf 'SKIP_METADATA=%s\n' ""
printf 'SKIP_ROOT_SCRIPTS=%s\n' ""
} > /workspace/.oss_policy.env
echo "version=${VERSION} channel=${OSS_RELEASE_CHANNELS}"

- name: 'Build bundle tarball'
run: |
# dist/ 已由 publish-packages.js 构建完成(含正确版本号)
# 直接打包为可部署的 tarball
# STANDALONE_DIR 和 ARTIFACT_DIR 必须与 prepare-artifact.sh 的查找路径一致
export ARCH="amd64"
export WORKSPACE_DIR="/workspace"
export SOURCE_DIR="."
export STANDALONE_DIR="/workspace/build/qwen-code"
export ARTIFACT_DIR="/workspace/build"
bash .aoneci/scripts/build-standalone-ci.sh

- name: 'Prepare artifact'
run: |
ARTIFACT_DIR="/workspace/artifact" \
ARCH="amd64" \
WORKSPACE_DIR="/workspace" \
SOURCE_DIR="." \
bash .aoneci/scripts/prepare-artifact.sh

- name: 'Upload to OSS'
run: |
DRY_RUN="${{ params.dry_run }}"
if [ "$DRY_RUN" = "true" ]; then
echo "Skipped (dry-run mode)"
exit 0
fi
set -a; source /workspace/.oss_policy.env; set +a
ARTIFACT_DIR="/workspace/artifact" \
ARCH="amd64" \
SOURCE_DIR="." \
WORKSPACE_DIR="/workspace" \
OSS_GROUP="alishu" \
OSS_PROJECT="qwen-code" \
SKIP_METADATA="${SKIP_METADATA:-}" \
SKIP_LATEST_POINTER="${SKIP_LATEST_POINTER:-}" \
SKIP_ROOT_SCRIPTS="${SKIP_ROOT_SCRIPTS:-}" \
OSS_RELEASE_CHANNELS="${OSS_RELEASE_CHANNELS:-}" \
bash .aoneci/scripts/upload-oss.sh
217 changes: 217 additions & 0 deletions .aoneci/release-rollback.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,217 @@
# .aoneci/release-rollback.yml
# 回滚发布:将 OSS channel 指针回退到指定版本,并 deprecate 指定的 npm 包版本。
#
# 使用场景:
# - 发布了一个有问题的版本,需要让下游自动更新机制回退到旧版本
# - 废弃某个 npm 版本,安装时显示警告信息
#
# 操作:
# 1. 将指定 channel(beta/dataworks/latest)的 metadata.json 回退到 rollback_to 版本
# 2. (可选)npm deprecate 指定版本的所有非 private workspace 包
#
# 仅手动触发,需要明确确认。

name: 'Release Rollback'

params:
rollback_to:
description: '回退到的目标版本号(OSS 上必须已存在该版本的 metadata.json),如 0.15.11-dataworks.2'
type: string
required: true
channels:
description: '要回退的 channel(逗号分隔),如 beta 或 dataworks,latest'
type: string
default: 'beta'
deprecate_version:
description: '要废弃的 npm 版本号(留空则不执行 npm deprecate),如 0.17.0-beta.3'
type: string
deprecate_message:
description: 'npm deprecate 的警告信息'
type: string
default: 'This version has been rolled back. Please use an earlier version.'
dry_run:
description: '勾选=仅模拟,不真正执行'
type: boolean
default: true

jobs:
rollback:
runs-on:
- 4-8Gi
name: 'Rollback Release'
image: alios-8u
envs:
BOOTSTRAP_TOKEN: ${{secrets.BOOTSTRAP_TOKEN}}
OSS_UPLOAD_TARGETS: "public finance"
steps:
- uses: checkout
- uses: setup-env
inputs:
node-version: '22'

- name: 'Validate inputs'
run: |
ROLLBACK_TO="${{ params.rollback_to }}"
CHANNELS="${{ params.channels }}"
DRY_RUN="${{ params.dry_run }}"

if [ -z "$ROLLBACK_TO" ]; then
echo "❌ rollback_to 版本号不能为空"
exit 1
fi

echo "=== Rollback Plan ==="
echo " Target version: $ROLLBACK_TO"
echo " Channels: $CHANNELS"
echo " Deprecate version: ${{ params.deprecate_version }}"
echo " Dry run: $DRY_RUN"
echo ""

- name: 'Rollback OSS channel pointers'
run: |
set -euo pipefail

ROLLBACK_TO="${{ params.rollback_to }}"
CHANNELS="${{ params.channels }}"
DRY_RUN="${{ params.dry_run }}"

SCRIPT_DIR="${AONE_CI_SOURCE:-.}/.aoneci/scripts"
OSS_PROJECT_ROOT="public-datasets/aone-release/alishu/qwen-code"
OSS_PREFIX="${OSS_PROJECT_ROOT}/${ROLLBACK_TO}"

TMPDIR=$(mktemp -d)
trap 'rm -rf "${TMPDIR}"' EXIT

# shellcheck disable=SC1091
. "${SCRIPT_DIR}/oss-targets.sh"

CHANNEL_LIST=$(printf '%s' "${CHANNELS}" | tr ',[:space:]' '\n' | sed '/^$/d')
TARGETS="$(oss_upload_targets)"

printf '%s\n' "${TARGETS}" | while IFS= read -r TARGET; do
[ -n "${TARGET}" ] || continue
oss_configure_target "${TARGET}"

echo ""
echo "📋 [${OSS_TARGET}] 验证目标版本 ${ROLLBACK_TO} 的 metadata.json..."
METADATA_URL="oss://${OSS_BUCKET}/${OSS_PREFIX}/metadata.json"
TARGET_METADATA="${TMPDIR}/${OSS_TARGET}_metadata.json"
if ! ${OSSUTIL} stat "$METADATA_URL" &>/dev/null; then
echo "❌ [${OSS_TARGET}] 目标版本 ${ROLLBACK_TO} 的 metadata.json 不存在于 OSS"
echo " 路径: ${METADATA_URL}"
exit 1
fi

${OSSUTIL} cp -f "$METADATA_URL" "${TARGET_METADATA}"
echo "✅ [${OSS_TARGET}] 目标版本 metadata.json:"
cat "${TARGET_METADATA}"
echo ""

for CHANNEL in ${CHANNEL_LIST}; do
case "${CHANNEL}" in
*[!A-Za-z0-9._-]*|.|..|"")
echo "Invalid OSS release channel: ${CHANNEL}" >&2
exit 1
;;
esac
CHANNEL_PATH="oss://${OSS_BUCKET}/${OSS_PROJECT_ROOT}/${CHANNEL}/metadata.json"

echo ""
echo "🔄 [${OSS_TARGET}] Channel: ${CHANNEL}"
echo " 当前指向:"
${OSSUTIL} cp -f "$CHANNEL_PATH" "${TMPDIR}/current_${OSS_TARGET}_${CHANNEL}.json" 2>/dev/null || true
cat "${TMPDIR}/current_${OSS_TARGET}_${CHANNEL}.json" 2>/dev/null || echo " (不存在)"

if [ "$DRY_RUN" = "true" ]; then
echo " [DRY-RUN] 将回退到 ${ROLLBACK_TO}"
echo " 路径: ${CHANNEL_PATH}"
else
${OSSUTIL} cp -f "${TARGET_METADATA}" "$CHANNEL_PATH"
echo " ✅ 已回退到 ${ROLLBACK_TO}"
fi
done
done

- name: 'Deprecate npm version'
run: |
set -euo pipefail

DEPRECATE_VERSION="${{ params.deprecate_version }}"
DEPRECATE_MSG="${{ params.deprecate_message }}"
DRY_RUN="${{ params.dry_run }}"
REGISTRY="https://registry.anpm.alibaba-inc.com/"

if [ -z "$DEPRECATE_VERSION" ]; then
echo "⏭️ deprecate_version 为空,跳过 npm deprecate"
exit 0
fi

# 配置 npm auth
NPM_TOKEN="${{ secrets.inner_npm_publish_token }}"
echo "//registry.anpm.alibaba-inc.com/:_authToken=${NPM_TOKEN}" > ~/.npmrc

# 读取所有需要 deprecate 的包
PACKAGES=$(node -e "
const fs = require('fs');
const path = require('path');
const glob = require('glob') || { sync: () => [] };
const root = JSON.parse(fs.readFileSync('package.json', 'utf-8'));
const ws = root.workspaces || [];
const pkgs = [];
for (const pattern of ws) {
if (pattern.includes('*')) {
const base = pattern.split('*')[0];
if (!fs.existsSync(base)) continue;
for (const d of fs.readdirSync(base, { withFileTypes: true })) {
if (!d.isDirectory()) continue;
const p = path.join(base, d.name, 'package.json');
if (fs.existsSync(p)) {
const pkg = JSON.parse(fs.readFileSync(p, 'utf-8'));
if (!pkg.private) pkgs.push(pkg.name);
}
}
} else {
const p = path.join(pattern, 'package.json');
if (fs.existsSync(p)) {
const pkg = JSON.parse(fs.readFileSync(p, 'utf-8'));
if (!pkg.private) pkgs.push(pkg.name);
}
}
}
// root package
const rootPkg = JSON.parse(fs.readFileSync('package.json', 'utf-8'));
if (!rootPkg.private) pkgs.unshift(rootPkg.name);
console.log(JSON.stringify([...new Set(pkgs)]));
")

echo "📦 要 deprecate 的包 (版本 ${DEPRECATE_VERSION}):"
echo "$PACKAGES" | node -e "JSON.parse(require('fs').readFileSync(0,'utf-8')).forEach(p => console.log(' - ' + p))"

echo ""
echo "$PACKAGES" | node -e "
const pkgs = JSON.parse(require('fs').readFileSync(0, 'utf-8'));
const { execSync } = require('child_process');
const version = '${DEPRECATE_VERSION}';
const msg = '${DEPRECATE_MSG}';
const dryRun = '${DRY_RUN}' === 'true';
const registry = '${REGISTRY}';

for (const pkg of pkgs) {
const spec = pkg + '@' + version;
if (dryRun) {
console.log('[DRY-RUN] npm deprecate ' + spec);
} else {
try {
execSync('npm deprecate \"' + spec + '\" \"' + msg + '\" --registry ' + registry, {
stdio: 'inherit',
});
console.log('✅ deprecated: ' + spec);
} catch (err) {
console.error('⚠️ failed to deprecate ' + spec + ' (may not exist on registry, skipping)');
}
}
}
"

echo ""
echo "=== Rollback Complete ==="
Loading
Loading