zhayujie and cowagent
1533a9d45d
fix: keep scheduler loadable on Python < 3.9 without zoneinfo
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-01 10:03:13 +08:00
zhayujie and cowagent
dae6bc6d8a
fix: drop doc wording assertions from MCP console contract test
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-10-01 10:02:11 +08:00
zhayujie and cowagent
8d3138a93b
docs: add console screenshots to the MCP guide and move the console section first
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-30 18:46:47 +08:00
zhayujie
5a195795a7
Merge pull request #3408 from 6vision/fix/mcp-windows-npx
...
fix(mcp): resolve stdio command via PATHEXT on Windows
2026-09-30 17:35:43 +08:00
zhayujie and cowagent
c94f3bba90
feat: release v2.2.0
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-30 09:59:40 +08:00
zhayujie and cowagent
4f08165f48
feat: add gpt-6.1-sol as the default OpenAI model
...
Put gpt-6.1-sol ahead of gpt-6-luna in the model selector, install scripts,
README and docs. It routes through the Responses API via the existing gpt-6
prefix rule.
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-30 09:53:51 +08:00
zhayujie and cowagent
a0c5063bc6
fix(desktop): re-scan an existing WeChat instance instead of minting a new one
...
When a live WeChat instance lost its session, the scan panel fetched a
standalone QR and connected with an empty instance id on confirm, which
created a second WeChat card. The panel now reads the instance's own QR,
reconnects under the same id, and the page polls instance cards that are
waiting for a scan.
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-30 09:17:13 +08:00
zhayujie and cowagent
77f7f608cc
fix(skills): delete a skill from the folder it was loaded from
...
A skill's folder need not match its frontmatter name (e.g. wecom-cli holding
wecom-unified), so deleting by name silently left it on disk. Builtin skills
outside the workspace skills directory are now rejected instead.
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-30 09:17:13 +08:00
zhayujie and cowagent
08f64f7087
ci(desktop): fail the overlay mac build when an extension links OpenSSL dynamically
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 23:22:18 +08:00
zhayujie and cowagent
6ed2a80243
fix(desktop): install cryptography from wheels so the Intel mac backend loads it
...
cryptography dropped macOS x86_64 wheels at 49.0, so the Intel build compiled it
against the runner's Homebrew OpenSSL while the bundle only ships Python's older
libssl.3.dylib, and importing it failed with a missing SSL_get0_group_name.
Also fail the mac build when any bundled extension links OpenSSL dynamically.
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 23:15:43 +08:00
zhayujie and cowagent
25a44908cc
fix(voice): drop return-in-finally so interrupts propagate from openai and pytts
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 22:38:26 +08:00
zhayujie and cowagent
e5b535db5e
fix: keep the agent profile form in sync when the roster refreshes
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 22:37:52 +08:00
zhayujie
96f633b1d5
Merge pull request #3325 from Lesereingrape/fix/skill-zip-tempdir-leak
...
fix(cli): remove the temp dir when a repo archive cannot be extracted
2026-09-29 22:37:23 +08:00
zhayujie
89eac32d95
Merge pull request #3326 from aniruddhaadak80/fix/google-voice-finally-swallows-errors
...
fix(voice): stop google_voice from turning errors into UnboundLocalError
2026-09-29 22:37:16 +08:00
zhayujie and cowagent
353eb7b95a
fix(dingtalk): cap remote download time and keep URL query out of temp file names
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 22:29:04 +08:00
zhayujie
0198418729
Merge pull request #3322 from c020627/fix-dingtalk-bounded-download
...
fix(dingtalk): cap remote media download at MAX_FILE_BYTES
2026-09-29 22:28:08 +08:00
zhayujie and cowagent
9e8eb1192e
docs: add wechatmp video reply and backup restore fixes to v2.2.0 notes
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 21:55:53 +08:00
zhayujie
724ecb045c
Merge pull request #3319 from Lesereingrape/fix/restore-live-agent-roster
...
fix(cli): overlay the live roster when restoring a backup
2026-09-29 21:55:30 +08:00
zhayujie
c7ce0e72ef
Merge pull request #3321 from Lesereingrape/fix/wechatmp-local-video
...
fix(wechatmp): upload a local video reply instead of crashing on its path
2026-09-29 21:55:24 +08:00
zhayujie and cowagent
f9d6565d25
fix: allow cancelling the skill add dialog while a preview is being fetched
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 21:21:35 +08:00
zhayujie and cowagent
f184c4b5e4
fix: support owner-qualified ClawHub installs for ambiguous skill names
...
ClawHub slugs are only unique per publisher, so a bare slug shared by
several publishers returns 409. Accept owner/slug, @owner/slug and skill
page URLs, pass the owner as ownerHandle, skip the slug-only mirror when
an owner is given, and explain the conflict instead of surfacing a raw 409.
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 21:21:34 +08:00
zhayujie and cowagent
3e74cd0739
fix(web): scope queue and run cancellation to the agent when deleting a session
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 20:44:34 +08:00
zhayujie
3c9b7d5deb
Merge pull request #3316 from Lesereingrape/fix/cancel-session-queue-key
...
fix(channel): cancel queued work under the agent-scoped session key
2026-09-29 20:43:31 +08:00
zhayujie
2fa6a53e43
Merge pull request #3314 from Lesereingrape/fix/plugin-store-entry-shape
...
fix(plugins): normalize a damaged plugins.json entry instead of losing every plugin
2026-09-29 20:43:25 +08:00
zhayujie and cowagent
04eb97cfe8
fix: resolve non-default agents from team.json when installing skills
...
get_workspace_dir built its registry from config.json alone, but the roster
now lives in agents/team.json, so installing or uploading a skill for any
agent other than the default failed with a KeyError. Also read config.json
from COW_DATA_DIR in the desktop build, matching config.get_data_root().
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 20:13:48 +08:00
zhayujie and cowagent
44e84d1ede
fix: keep /skill hub commands in renamed builds, hide the hub URL there
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 19:36:24 +08:00
zhayujie and cowagent
06bd817b57
fix(wechatcom): cap total remote download time and keep URLs out of the error log
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 19:31:21 +08:00
zhayujie
66fcc0b874
Merge pull request #3312 from Lesereingrape/fix/wechatcom-local-image
...
fix(wechatcom): read a locally generated image instead of fetching it
2026-09-29 19:27:59 +08:00
zhayujie and cowagent
e58424e84e
docs: update the 2.2.0 release notes
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 19:21:45 +08:00
zhayujie and cowagent
159be14de9
refactor: use the shared safe_filename in QQ and DingTalk, tighten the #model message
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 19:21:45 +08:00
zhayujie
37879dd399
Merge pull request #3301 from c020627/fix-qq-safe-filename
...
fix(qq): cap attachment filename at 180 chars in safe_filename
2026-09-29 19:12:27 +08:00
zhayujie
8fd55bce67
Merge pull request #3310 from Bdysj/fix/dashscope-session-system-prompt
...
fix(dashscope): keep the system prompt a session is built with
2026-09-29 19:12:14 +08:00
zhayujie
0d24c3a15a
Merge pull request #3309 from Bdysj/fix/chunker-preface-and-skipped-levels
...
fix(memory): index markdown preface and stop duplicating skipped-level sections
2026-09-29 19:11:59 +08:00
zhayujie
641c349324
Merge pull request #3307 from Bdysj/fix/decorate-dropped-reply
...
fix(channel): drop a plugin-discarded reply without crashing in voice-reply chats
2026-09-29 19:11:46 +08:00
zhayujie
892abc8cc3
Merge pull request #3306 from Bdysj/fix/unsupported-reply-type-name
...
fix(channel): name the refused reply type in the unsupported-type error
2026-09-29 19:11:32 +08:00
zhayujie
1c4b7fca16
Merge pull request #3305 from Lesereingrape/fix/godcmd-model-argument
...
fix(godcmd): answer when #model is given more than one argument
2026-09-29 19:11:19 +08:00
zhayujie
68765209fb
Merge pull request #3303 from Lesereingrape/fix/godcmd-setpri-priority
...
fix(godcmd): answer when the plugin priority is not a number
2026-09-29 19:11:06 +08:00
zhayujie
572ccceda8
fix: drop an unused import flagged by the CI lint gate
2026-09-29 19:01:29 +08:00
zhayujie and cowagent
86718f996f
fix: use the startup default agent name in the agents snapshot
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 18:25:47 +08:00
zhayujie and cowagent
2e112da9c5
docs: credit #3300 in the 2.2.0 release notes
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 18:25:44 +08:00
zhayujie and cowagent
2726f00fd4
fix(feishu): cap total remote video download time and keep URLs out of the error log
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 18:25:43 +08:00
zhayujie
b3b0c7d94f
Merge pull request #3300 from c020627/fix-feishu-bounded-video-download
...
fix(feishu): bound remote video download at MAX_FILE_BYTES
2026-09-29 18:00:33 +08:00
zhayujie and cowagent
b7b7efeb28
feat: improve model routing in the image generation skill
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 17:58:06 +08:00
zhayujie and cowagent
85c1d7ed0a
docs: add 2.2.0 release notes (zh) and bump version to 2.2.0
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 17:55:12 +08:00
zhayujie
6798c4aef6
Merge pull request #3296 from Lesereingrape/fix/role-empty-customize-argument
...
fix(role): answer when the customize command has no description
2026-09-29 17:53:44 +08:00
zhayujie
812e4f06b7
Merge pull request #3297 from c020627/fix-wechat-kf-local-video
...
fix(wechat_kf): upload local video replies instead of dropping them
2026-09-29 17:53:15 +08:00
zhayujie
bdcc7bfccf
Merge pull request #3299 from Lesereingrape/fix/video-reply-dispatch
...
fix(feishu,dingtalk): upload local video replies instead of dropping them
2026-09-29 17:53:04 +08:00
zhayujie and cowagent
b2d2bb5884
feat: add gpt-6-luna, gpt-6-sol and claude-opus-5-5 models
...
Make gpt-6-luna the OpenAI default (ordered gpt-6-luna, gpt-6-sol,
gpt-6-astra, then gpt-5.6) and claude-opus-5-5 the Claude default across
the model selector, install scripts, README and docs. Budget Claude 5+
models at 1M context / 128K output instead of 200K / 64K.
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 17:49:38 +08:00
zhayujie and cowagent
208db92f31
fix: make the load-order check see console scripts and isolate a test
...
The check-load-order regex matched no script tags, so it always passed. Set
the feishu card test language per test instead of at import time.
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 17:06:28 +08:00
zhayujie and cowagent
1f000fd2c0
fix(desktop): keep loaded history and stream state when following a run
...
Reloading a running session replaced older pages and regenerated message
ids, so the view jumped and bubbles remounted. Use sequence-based ids, merge
the latest page into what is loaded, and stop streaming on every bubble
opened in a turn.
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 17:06:28 +08:00
zhayujie and cowagent
8b78c7b4a8
fix(mcp): keep servers configured in config.json when editing MCP
...
Without mcp.json the editor showed an empty list and the first save dropped
the mcp_servers from config.json. Fall back to them when loading, preserve
other top-level keys on save, and surface load errors on desktop.
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 17:06:28 +08:00
zhayujie and cowagent
3f0222e253
fix(web): redirect /chat with a relative location
...
web.seeother builds an absolute http:// URL behind a TLS-terminating proxy.
Also print the console root URL from the install scripts.
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 17:06:28 +08:00
zhayujie and cowagent
e8bd8a3c4c
fix(update): refuse to update a modified checkout and recover stale runs
...
Source updates now abort when tracked files have local edits and pull with
--ff-only, a crashed worker no longer blocks later updates forever, and the
console reloads once the new backend is up.
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 17:06:28 +08:00
zhayujie and cowagent
0dbd8edc1d
fix(dingtalk): only strip real HTML tags from card markdown
...
The sanitizer removed any <Word> text such as generics or placeholders, and
touched inline code. Match a whitelist of HTML tag names and protect inline
code like fenced blocks.
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 17:06:28 +08:00
zhayujie and cowagent
ff4298ff59
fix: fall back to in-place writes when an atomic replace is not possible
...
Renaming over a single-file bind mount (EBUSY/EXDEV), a file locked on
Windows, or a file in a read-only directory failed the whole save. Resolve
symlinks first and write the existing file in place in those cases.
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 17:06:28 +08:00
zhayujie and cowagent
66cd2b7d03
fix(web): keep every file in folder uploads and knowledge imports
...
web.py 0.76 parses multipart forms with the multipart package, which keeps
only the last value of a repeated field and caps a request at 128 parts, so
multi-file uploads silently kept a single file. Parse the body directly with
a per-endpoint part limit, and read the auth token from the query string so
the body is not consumed before the handler sees it.
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 17:06:28 +08:00
zhayujie
ebf206bffc
Merge pull request #3293 from Lesereingrape/fix/dingtalk-richtext-without-images
...
fix(dingtalk): route text-only richText to the agent instead of dropping it
2026-09-29 16:44:47 +08:00
zhayujie
5da52c87f2
Merge pull request #3291 from Lesereingrape/fix/midjourney-index-argument
...
fix(linkai): reply when the midjourney image index is not a number
2026-09-29 15:59:05 +08:00
zhayujie and cowagent
7a342d0295
refactor: reuse shared download and atomic write helpers in new channel fixes
...
Fix the task store backup restore that still called the removed
_write_atomic, add an optional total deadline to media downloads, and
upload local VIDEO replies on Slack and Telegram.
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 15:44:26 +08:00
zhayujie
03ebaa3af3
Merge pull request #3262 from c020627/fix-wechat-kf-file-reply
...
# Conflicts:
# channel/wechat_kf/wechat_kf_channel.py
2026-09-29 15:29:08 +08:00
zhayujie
c7ae3ba575
Merge pull request #3289 from Lesereingrape/fix/discord-video-reply
...
fix(discord): upload local video replies instead of printing the file:// path
2026-09-29 15:27:23 +08:00
zhayujie
6712476479
Merge pull request #3263 from c020627/fix-linkai-voice-error-reply
...
fix(linkai_voice): return an ERROR reply on ASR/TTS failure instead of None
2026-09-29 15:26:06 +08:00
zhayujie
9142fd2be9
Merge pull request #3261 from rudycelekli/fix/subagent-timeout-test-cleanup
...
test(subagent): wait for timed-out worker teardown
2026-09-29 15:25:51 +08:00
zhayujie
473ac8d3e4
Merge pull request #3260 from rudycelekli/fix/scheduler-backup-recovery
...
fix(scheduler): recover corrupt task store from backup
2026-09-29 15:25:41 +08:00
zhayujie
02daa54222
Merge pull request #3259 from c020627/fix-env-config-atomic-write
...
fix(env_config): write the credentials file atomically, and owner-only
2026-09-29 15:25:24 +08:00
zhayujie
539c41f821
Merge pull request #3257 from rudycelekli/fix/wechat-kf-media-download-bounds
...
fix(wechat-kf): bound remote media replies
2026-09-29 15:25:04 +08:00
zhayujie
18585ae3a6
Merge pull request #3256 from rudycelekli/fix/wechatmp-media-download-bounds
...
fix(wechatmp): bound remote media downloads
2026-09-29 15:24:42 +08:00
zhayujie
6f38e4defd
Merge branch 'master' of https://github.com/zhayujie/CowAgent
2026-09-29 15:23:46 +08:00
zhayujie and cowagent
6c0579afec
feat: make desktop app name, menu links, default agent name and icon/title overrides configurable
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 15:09:53 +08:00
zhayujie
c872f6f022
Merge pull request #3258 from rudycelekli/fix/wechat-kf-cursor-after-delivery
...
fix(wechat-kf): advance cursor after queueing messages
2026-09-29 14:54:14 +08:00
zhayujie and cowagent
9340abe57c
refactor: share one atomic file write helper across stores
...
Replace the per-module sibling-file-and-rename copies with
common/atomic_write.py, which uses a unique dot-prefixed temp name,
fsyncs, and keeps the target's permissions.
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 14:51:02 +08:00
zhayujie
93c004542c
Merge pull request #3281 from c020627/fix-cow-cli-config-atomic-write
...
# Conflicts:
# plugins/cow_cli/cow_cli.py
2026-09-29 14:51:02 +08:00
zhayujie
e5c4f31852
Merge pull request #3280 from c020627/fix-plugin-repair-atomic-write
...
fix(plugins): write the repaired plugin config through a sibling file
2026-09-29 14:49:42 +08:00
zhayujie
8ea5ea5f7d
Merge pull request #3276 from c020627/fix-summarizer-atomic-memory-write
...
fix(memory): write MEMORY.md and the dream diary through a sibling file
2026-09-29 14:49:23 +08:00
zhayujie
c2dad489b9
Merge pull request #3275 from c020627/fix-xunfei-tts-stream-timeout
...
fix(voice): bound the Xunfei TTS stream so a silent provider cannot hang it
2026-09-29 14:38:21 +08:00
zhayujie
977ffdfcea
Merge pull request #3279 from c020627/fix-skills-config-atomic-write
...
fix(skills): write skills_config.json through a sibling file
2026-09-29 14:35:49 +08:00
zhayujie
62b9e229d5
Merge pull request #3274 from c020627/fix-plugin-save-config-atomic
...
fix(plugins): write plugin config through a sibling file and swap it in
2026-09-29 14:34:15 +08:00
zhayujie
94f749604a
Merge pull request #3273 from c020627/fix-team-legacy-retire-atomic
...
fix(team): write config.json atomically when retiring the legacy roster
2026-09-29 14:34:07 +08:00
zhayujie
a5f662bb57
Merge pull request #3287 from huiq777/fix/telegram-tilde-and-long-fences
...
fix(telegram): render ~~~ and longer code fences as code
2026-09-29 14:33:58 +08:00
zhayujie
fd9a3b6661
Merge pull request #3278 from c020627/fix-edge-elevenlabs-tts-failure
...
fix(voice): answer an Edge/ElevenLabs TTS failure instead of dropping the reply
2026-09-29 14:33:48 +08:00
zhayujie
4b73b5ad58
Merge pull request #3285 from aniruddhaadak80/fix/token-bucket-shutdown-and-zero-rate
...
fix(common): stop the token generator from blocking shutdown or dying on a zero rate
2026-09-29 14:32:37 +08:00
zhayujie
87312c3203
Merge pull request #3282 from Lesereingrape/fix/dingtalk-reply-type-fallback
...
fix(dingtalk): deliver ERROR and INFO replies instead of dropping them
2026-09-29 14:32:26 +08:00
zhayujie
a6da7afdd9
Merge pull request #3255 from rudycelekli/fix/terminal-image-download
...
fix(terminal): bound remote image downloads
2026-09-29 14:29:07 +08:00
zhayujie
c84725a6d9
Merge pull request #3254 from c020627/fix-voice-request-timeouts
...
fix(voice): bound every outbound request so a stalled provider cannot hang the turn
2026-09-29 14:28:25 +08:00
zhayujie
302a5648c4
Merge pull request #3286 from aniruddhaadak80/fix/audio-convert-close-wave-handle
...
fix(voice): close the wave handle get_pcm_from_wav opens
2026-09-29 14:28:12 +08:00
zhayujie
37da1a998b
Merge pull request #3284 from Lesereingrape/fix/dingtalk-group-context-none-guard
...
fix(dingtalk): skip group messages outside the whitelist instead of crashing
2026-09-29 14:26:53 +08:00
zhayujie and cowagent
1f44b0507b
feat: configurable app name and skill hub toggle for commands, align suggestion cards
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 13:06:23 +08:00
zhayujie and cowagent
b796721026
refactor: unify bounded media downloads into common/media_download
...
Replace the per-channel streaming download helpers (qq, slack, dingtalk,
feishu, wecom_bot, wechatcom) with one shared module using two limits:
20MB for images and 100MB for files. Also bound the wechatcom file URL
path, sanitize feishu image keys, and mark failed feishu post images.
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 13:05:30 +08:00
zhayujie
1a2d7bf48c
Merge pull request #3269 from rudycelekli/fix/bound-feishu-file-audio
...
fix(feishu): bound inbound file and audio downloads
2026-09-29 12:49:58 +08:00
zhayujie
3e83cb21ed
Merge pull request #3272 from rudycelekli/fix/bound-feishu-outbound-media
...
fix(feishu): bound remote media before reply upload
2026-09-29 12:49:32 +08:00
zhayujie
6c3ba82c76
Merge pull request #3271 from rudycelekli/fix/bound-wecom-outbound-media
...
fix(wecom_bot): bound outbound remote media downloads
2026-09-29 12:49:22 +08:00
zhayujie
be0d2d7855
Merge pull request #3267 from rudycelekli/fix/bound-dingtalk-downloads
...
fix(dingtalk): bound inbound media downloads
2026-09-29 12:48:48 +08:00
zhayujie
a0572700a8
Merge pull request #3270 from rudycelekli/fix/bound-wechatcom-image
...
fix(wechatcom): bound outbound image URL downloads
2026-09-29 12:48:39 +08:00
zhayujie
ca02a39847
Merge pull request #3265 from rudycelekli/fix/slack-unique-inbound-download
...
fix(slack): keep same-named inbound files separate
2026-09-29 11:45:57 +08:00
zhayujie
17c451b719
Merge pull request #3268 from rudycelekli/fix/bound-wecom-media-decrypt
...
fix(wecom_bot): bound encrypted media and validate padding
2026-09-29 11:44:03 +08:00
zhayujie
cac61536cb
Merge pull request #3266 from rudycelekli/fix/feishu-image-download-bounds
...
fix(feishu): bound inbound image downloads
2026-09-29 11:43:49 +08:00
zhayujie
db4c8223dc
Merge pull request #3264 from rudycelekli/fix/qq-bounded-attachment-download
...
fix(qq): bound inbound attachment downloads
2026-09-29 11:43:03 +08:00
zhayujie
d08ad19238
Merge branch 'master' of https://github.com/zhayujie/CowAgent
2026-09-29 11:42:28 +08:00
zhayujie and cowagent
95dcc717d6
feat(desktop): request mic access on first use and add extension points for skills and suggestions
...
Co-authored-by: cowagent <cow@cowagent.ai >
2026-09-29 11:38:24 +08:00
zhayujie
efdb9953cf
Merge pull request #3253 from c020627/fix-scheduler-file-reply
...
fix(scheduler): deliver file replies from a scheduled skill instead of a path
2026-09-29 10:37:08 +08:00