matevip
2e0a4674e5
feat(channel): IM channel media + paste-merge + native file delivery
...
Inbound (WeCom):
- Save uploaded media under data/chat-uploads/{conversationId}/ with full
fileName/path/fileUrl/storedName/fileSize on the content part. Web mirrors
of an IM conversation now show real thumbnails instead of "未命名".
- Magic-byte sniff (PDF / PNG / JPEG / GIF / Office / ODF / archives /
audio / video) recovers a real extension when the platform omits filename
for forwarded files — no more PDFs labelled "file.bin".
- ZIP container peek distinguishes DOCX / XLSX / PPTX / VSDX / ODT / ODS /
ODP / EPUB / JAR from a plain zip via discriminator paths and the OASIS
mimetype entry.
Outbound (WeCom):
- Chunk upload field name corrected so server-side actually stores the
bytes — file messages used to arrive with correct filename/size but
empty content, breaking every PDF / DOCX / PPTX recipient.
- Scan agent text for served-file URLs in both the text-reply and
content-parts paths; fetch bytes from the in-memory generated-file
cache and dispatch through the native chunk upload + media message
protocol so users receive a tappable file card instead of an
unopenable markdown link. Cache miss surfaces a clear retry hint.
Async tool result forwarding:
- New AsyncTaskMediaDispatcher routes generation completions (image,
video, music, 3D model) to whichever IM channel the conversation is
bound to via ChannelSessionStore + ChannelManager. Web / webchat
conversations are intentionally skipped — their SSE stream already
renders the result.
- Wired into all four generation services so IM users actually receive
generated media as native attachments. Each part now carries an
absolute disk path so adapters read bytes locally instead of round-
tripping through an authenticated served URL.
Slack native file upload:
- SlackChannelAdapter overrides the content-parts dispatch. Image /
audio / video / file / model3d parts ride filesUploadV2 so users see a
file card with preview thumbnail bound to the same thread as the
originating message. Text parts continue through chat.postMessage.
- Resolves bytes from the part's local path, falls back to an HTTP fetch
of fully-qualified URLs.
IM approval hint visibility:
- IM-driven approve / deny / auto-cancel / replay-error hints now go
through saveMessage + tracker broadcast in addition to the channel
adapter, so a Web mirror viewing the same conversationId sees the
resolution. Previously hints reached only the IM channel; the Web
admin console had no record of the outcome.
Adaptive paste-merge debounce:
- WeCom and other IM clients silently split long pasted prompts into
fragments that arrive 0.5-2 seconds apart, missing the existing 500ms
merge window. The agent then saw torn context and emitted multiple
conflicting replies.
- When the merged buffer crosses a content-length threshold, extend the
debounce window so subsequent fragments arrive in time. Default
500ms unchanged for normal short messages.
2026-05-10 09:00:22 +08:00
matevip
ee48b114f6
chore: scrub external project references from wecom comments
2026-05-10 08:28:26 +08:00
matevip
f6b4f7e402
feat(channel): forward async tool results to IM channels + slack file upload
2026-05-10 08:28:20 +08:00
matevip
134fa1a975
fix(channel): wecom file pipeline + IM approval hint visibility
2026-05-10 08:28:14 +08:00
matevip
225d14026b
feat(channel): wecom approval card + keepalive + chunk dedup
2026-05-10 08:28:07 +08:00
matevip
20393ea679
test(channel): wecom reply queue concurrency stress suite
2026-05-10 08:28:01 +08:00
matevip
78f6ca8d33
feat(channel): reply queue foundation + lifecycle gate
2026-05-10 08:27:48 +08:00
matevip
ae4d432ee2
fix(security): root-cause guards against blank tool guard rule rows
2026-05-10 08:27:42 +08:00
matevip
4567bd6019
fix(security): require tool guard rule id ( #88 )
2026-05-10 08:02:15 +08:00
matevip
f7c1af80a4
fix(wiki): preserve user-owned files when deleting directory-scanned raws ( #84 )
2026-05-09 17:15:57 +08:00
matevip
c2aecf18ef
feat(agent,llm): multimodal sidecar routing for unsupported attachments ( #87 )
2026-05-09 16:41:26 +08:00
matevip
97e2b12f71
feat(chat): show reply model attribution in assistant message bubbles
2026-05-09 16:41:18 +08:00
matevip
d2886bdaa3
fix(llm): let custom OpenAI-compatible providers opt out of API Key requirement ( #89 )
2026-05-09 14:26:35 +08:00
matevip
88fb28a22a
feat(stt): route OpenAI Whisper provider to any OpenAI-compatible endpoint ( #76 )
2026-05-09 13:57:52 +08:00
matevip
d5969bb32c
fix(chat,llm): liveness-aware model popup with row-based configured check ( #81 )
2026-05-09 11:07:08 +08:00
matevip
95b7fed6d5
fix(docker): pin pnpm@10 + whitelist build scripts ( #80 )
2026-05-09 06:53:09 +08:00
matevip
52e06afec4
feat(llm,tool/image): dashscope-compat provider + media-gen test profile
2026-05-09 06:28:38 +08:00
matevip
3f289da6b7
feat(tool/image,video): image edit support + new DashScope models ( #75 )
2026-05-08 22:05:06 +08:00
matevip
1605146931
fix(workflow/draftgen): teach prompt Pebble logical operator syntax
2026-05-08 15:09:29 +08:00
matevip
2804905500
fix(workflow,trigger): template preview-compile + 3 alpha consistency cleanups
2026-05-08 15:09:14 +08:00
matevip
2416d603c4
fix(workflow,trigger): generator triggerDrafts loop closure + 5 paper cuts
2026-05-08 15:09:06 +08:00
matevip
826c20639a
feat(workflow): natural-language → workflow draft generator + agent tool
2026-05-08 15:08:58 +08:00
matevip
dcf1f56944
fix(workflow,trigger): fan_out isolation + workspace spoof + approval→resume bridge + payload strict + draft clear
2026-05-08 15:08:41 +08:00
matevip
3ed540e6eb
feat(workflow,trigger): async dispatch + GC schedulers + trigger list polish
2026-05-08 15:07:55 +08:00
matevip
ed64cda043
fix(workflow): PublishContext arg order + drop workspace-agnostic agent fallback
2026-05-08 15:07:32 +08:00
matevip
231724d6a9
feat(agent,trigger): wire agent_lifecycle as a real event source
2026-05-08 15:07:18 +08:00
matevip
dae74cf26c
feat(channel,trigger): wire channel_message + content_match event sources
2026-05-08 15:07:11 +08:00
matevip
87727414d5
feat(workflow,trigger): wire workflow_completion as a real event source
2026-05-08 15:06:53 +08:00
matevip
e3af03645b
feat(workflow): wire await_approval into the approval inbox
2026-05-08 15:06:46 +08:00
matevip
2a803d2904
fix(trigger): honest fireCount + last_error via DispatchResult
2026-05-08 15:06:28 +08:00
matevip
dac774f15e
feat(workflow): trigger workspace isolation + step property editor + custom dialogs
2026-05-08 15:06:16 +08:00
matevip
844a64ad37
fix(workflow): hard-delete + blank-draft compile + canvas blank pane
2026-05-08 15:05:53 +08:00
matevip
20884c1773
feat(workflow): payload fs fallback for medium-size payloads
2026-05-08 15:05:28 +08:00
matevip
e09c62b529
feat(trigger): match pattern_json before fan-out + periodic sync
2026-05-08 15:05:20 +08:00
matevip
05a2caa47c
fix(workflow): tighten workspace isolation across CRUD / run / resume
2026-05-08 15:05:13 +08:00
matevip
67c0efe8ae
feat(workflow): add publish API + workflow / trigger REST controllers
2026-05-08 15:04:55 +08:00
matevip
ce08b311d3
feat(trigger): add event ingest pipeline with dedup / rate limit / bot-self
2026-05-08 15:04:48 +08:00
matevip
54b12f5270
feat(trigger): add cron trigger engine with lamport coordination
2026-05-08 15:04:41 +08:00
matevip
67279bb9c9
feat(workflow): add write_memory adapter with four merge strategies
2026-05-08 15:04:33 +08:00
matevip
7c3c68bcfe
feat(workflow): add dispatch_channel adapter for multi-channel delivery
2026-05-08 15:04:26 +08:00
matevip
48559343e2
feat(workflow): add await_approval pause / resume to the runtime
2026-05-08 15:04:16 +08:00
matevip
4e457c2e8b
feat(workflow): add linear runtime for the four base step modes
2026-05-08 15:04:07 +08:00
matevip
3065d095fd
feat(workflow): add publish-time compiler for the linear step DSL
2026-05-08 15:03:53 +08:00
matevip
f3b1cba6dc
fix(conversation): render image/video/audio attachment markers for LLM ( #66 )
2026-05-08 15:03:42 +08:00
matevip
d87ed0365a
feat(workflow): add foundational schema for workflow runtime
2026-05-08 15:03:34 +08:00
matevip
91e93e8831
feat(wiki): circuit-breaker for failing embedding provider ( #72 )
2026-05-08 15:03:19 +08:00
matevip
0357c9891d
feat(wiki): user-initiated cancel for in-progress raw material processing ( #72 )
2026-05-08 15:03:10 +08:00
matevip
2af2620b4c
fix(tool/mcp): split full URL into base + endpoint for HTTP transports ( #70 )
2026-05-08 15:03:03 +08:00
matevip
d13637f778
fix(skill/mcp): preserve Chinese MCP server names in zh-CN skill list ( #65 )
2026-05-08 15:02:56 +08:00
matevip
96840b0126
chore: bump version to 1.3.0-SNAPSHOT
2026-05-08 15:02:08 +08:00
matevip
023f0cfb06
fix(conversation): render image/video/audio attachment markers for LLM ( #66 )
2026-05-07 17:13:17 +08:00
matevip
b63d83a596
feat(wiki): circuit-breaker for failing embedding provider ( #72 )
2026-05-07 16:39:39 +08:00
matevip
76f5b3ca94
feat(wiki): user-initiated cancel for in-progress raw material processing ( #72 )
2026-05-07 16:32:35 +08:00
matevip
274aeb7695
fix(tool/mcp): split full URL into base + endpoint for HTTP transports ( #70 )
2026-05-07 14:39:27 +08:00
matevip
c830dd902c
fix(skill/mcp): preserve Chinese MCP server names in zh-CN skill list ( #65 )
2026-05-07 14:25:32 +08:00
matevip
d85fc4e64f
chore: bump version to 1.3.0-SNAPSHOT
2026-05-07 14:14:48 +08:00
matevip
c82bf4d18f
feat(tool/document): generate xlsx, pptx, pdf documents from markdown
2026-05-07 13:59:28 +08:00
matevip
a65aaa7aa4
fix(tool/extract): route xlsx/pptx extraction directly through Tika
2026-05-07 13:59:20 +08:00
matevip
bf2ffbd62b
feat(llm,ui): add Xiaomi MiMo provider and wire icons for xiaomi-mimo / hunyuan-3d / opencode
2026-05-07 08:18:07 +08:00
matevip
ad1264ff51
fix(skill): refuse mutating MCP/ACP virtual skills and hide their card-level edit affordance
2026-05-07 08:18:00 +08:00
matevip
5cb82ed8f8
feat(agent,mcp): validate tool bindings on save and keep returnDirect raw-name config working
2026-05-07 08:17:53 +08:00
matevip
9adcc0a2a8
feat(skill,tool): expose MCP-derived skills and tools through the agent picker endpoints
2026-05-07 08:17:38 +08:00
matevip
845b5bb1b1
feat(mcp): stable prefixed callback names and persisted per-server tool cache
2026-05-07 08:17:30 +08:00
matevip
f5d25509bb
fix(db): use Java charset name UTF-8 in JDBC URL instead of utf8mb4
2026-05-06 22:58:29 +08:00
matevip
d58fd0c3fd
fix(task): gate every worker completion branch with isConversationCanceled
2026-05-06 17:40:47 +08:00
matevip
01c8765c96
fix(task): cancel running async workers on conversation delete to prevent orphan writes
2026-05-06 16:45:31 +08:00
matevip
bf8a533b19
fix(approval): clear in-memory pendingMap on conversation delete via domain event
2026-05-06 16:45:23 +08:00
matevip
73d69c1dfe
fix(conversation): cascade-clean orphan rows on conversation delete
2026-05-06 16:45:16 +08:00
matevip
da6fa5089d
fix(persistence): prevent assistant message loss from column truncation and JDBC charset
2026-05-06 15:18:34 +08:00
matevip
0665a6be09
fix(mcp): expand JVM system properties in stdio args/env/cwd
2026-05-05 15:21:20 +08:00
matevip
fd05c3c9e1
fix(llm): record token usage on ChatGPT OAuth chat turns
2026-05-05 15:21:14 +08:00
DayByDay
a77f632c0a
fix(mcp): support Java system property placeholders in env expansion
...
Resolve ${user.home} and other JVM system properties in MCP server env, headers, and cwd — previously only OS env vars were expanded, causing the filesystem MCP server to fail on Windows where $HOME isn't set.
2026-05-05 14:54:54 +08:00
matevip
10fe511d48
chore(mcp): revert McpClientManager polish to enable PR #60 merge
...
Temporarily restore McpClientManager.java to its pre-#60 state so the
contributor's PR can squash-merge cleanly with their authorship preserved.
The args-expansion follow-up will land as a separate commit right after.
2026-05-05 14:53:58 +08:00
matevip
609da7029f
fix(mcp): expand JVM system properties in stdio args/env/cwd
2026-05-05 14:46:08 +08:00
matevip
bbf978ed89
fix(image): handle data: URLs and broadcast sync image-gen completion
2026-05-05 13:06:53 +08:00
matevip
66510c96fa
fix(image): set stream=true on ChatGPT OAuth /codex/responses request
2026-05-05 13:06:46 +08:00
matevip
80cb3c84eb
fix(agent): decouple framework recursion limit from per-agent max_iterations
2026-05-05 13:06:40 +08:00
matevip
c1c2525d0e
feat(llm): seed Zhipu and Aliyun coding-plan subscription providers
2026-05-05 13:06:33 +08:00
matevip
0f388382a2
feat(image): gpt-image-2 generation through ChatGPT subscription OAuth
2026-05-05 13:06:26 +08:00
matevip
704c6317e3
feat(llm): live model discovery for ChatGPT OAuth provider
2026-05-05 13:06:19 +08:00
matevip
bf7bc73f5f
fix(llm): JSON body + 403/404 status mapping for OpenAI device code
2026-05-05 13:06:11 +08:00
matevip
e9a11f8db4
fix(chat): persist empty assistant turns
2026-05-05 11:12:45 +08:00
matevip
2ab0bd000b
fix(chat): suppress duplicate assistant row on force-recycle
2026-05-05 10:39:54 +08:00
matevip
be2235a493
feat(llm): OAuth device authorization grant for ChatGPT remote deploy
2026-05-05 10:39:47 +08:00
matevip
eb64556636
fix(wiki): skip per-turn retrieval for continuation messages + drop weak tail hits
2026-05-04 20:54:44 +08:00
matevip
2e0ff8f90f
fix(agent): unblock multi-role parallel delegation + propagate force-stop
2026-05-04 20:54:38 +08:00
matevip
1a60acdbb0
release: v1.2.0
2026-05-04 19:29:04 +08:00
matevip
be1fc86836
feat(agents): pixelart icons, per-role colors, runtime identity merge, locale templates
2026-05-04 15:26:02 +08:00
matevip
2a8f6774e7
feat(agents): role/goal/backstory profile, employee-card tagline, 5 career templates
2026-05-04 15:25:53 +08:00
DayByDay
1aa7787ced
fix(mcp): clear stale MCP connection errors
...
Update MCP server status with an explicit wrapper so successful reconnects can persist lastError=null while keeping updateTime refreshed.
2026-05-04 14:16:43 +08:00
matevip
42d406ffc8
fix(agent): drop brittle output policing, add evidence-grounded long-task safeguards
2026-05-04 11:55:44 +08:00
matevip
3d50b9c132
feat(skill): catalog sort + usage stats
2026-05-04 11:55:35 +08:00
matevip
68e1c6f50d
fix(skill): harden ckjia skill binding and virtual dedup
2026-05-03 20:32:23 +08:00
matevip
6fe9b6e5f7
fix(llm): skip Ollama auto-discovery network probe when provider disabled
2026-05-03 20:32:17 +08:00
matevip
7d02841d1d
fix(chat): per-event SSE ids for safe reconnect dedup + queue race recovery
2026-05-03 19:57:06 +08:00
matevip
dfe186f928
docs(skill): rewrite ckjia-shopping output format around pre-rendered markdownLink/priceTag
2026-05-03 17:16:05 +08:00
matevip
292da11ead
docs(skill): force ckjia-shopping output to include real purchase URL + structured price/platform/history block
2026-05-03 17:15:59 +08:00
matevip
551f2994a0
fix(skill): drop dependencies.tools from ckjia-shopping (MCP tools aren't in mate_tool table)
2026-05-03 17:15:54 +08:00
matevip
78fcbc5415
fix(seed): V85 ckjia mcp url -> ckjia-ai default /sse direct (gateway routing left for prod)
2026-05-03 17:15:45 +08:00
matevip
3de48f0bb4
fix(seed): V85 ckjia mcp url must include /ai/ gateway prefix (StripPrefix=1)
2026-05-03 17:15:39 +08:00
matevip
a2c96946e3
fix(repetition-detector): catch markdown-list duplication separated by transition paragraph
2026-05-03 17:15:33 +08:00
matevip
a5e7f82a69
fix(cron): self-heal missing tasks_<wsId> conversation row before saving messages
2026-05-03 17:15:25 +08:00
matevip
74edc09b2b
feat(backstage): admin runtime console for live agent visibility + force-recycle
2026-05-03 17:15:17 +08:00
matevip
327a70dad4
chore(skill): switch ckjia-shopping icon to ckjia_app_icon.png (1024x1024 RGBA, sharper at retina)
2026-05-03 17:15:10 +08:00
matevip
66f09a968a
feat(chat-stream): streaming UX overhaul + multi-agent stability layer
2026-05-03 17:15:02 +08:00
matevip
d1099f1524
chore(skill): rename ckjia-shopping display to '参考价 - 比价购物' (matches CKJIA brand)
2026-05-03 17:14:54 +08:00
matevip
5f125364e9
fix(skill): parseIconValue accepts site-absolute paths + restore ckjia-shopping nameZh/nameEn/tags
2026-05-03 17:14:43 +08:00
matevip
a1927bbfe4
fix(flyway): V85 ckjia mcp seed must supply explicit id (Snowflake bypassed by Flyway)
2026-05-03 17:14:37 +08:00
matevip
848a3991f5
fix(flyway): disable placeholder-replacement so V85 ckjia seed's ${ENV_VAR} survives intact
2026-05-03 17:14:31 +08:00
matevip
c07048f258
feat(skill,mcp): ckjia-shopping skill bundle + same-name dedup against bridged MCP/ACP virtual skills
2026-05-03 17:14:19 +08:00
matevip
03a82ece93
fix(wiki): retry route LLM call once with strict-JSON correction when first response isn't JSON
2026-05-03 09:12:51 +08:00
matevip
912a6336d3
fix(wiki): also remove the upload file from disk when a raw material is deleted
2026-05-03 09:12:44 +08:00
matevip
b0ca4c06d4
fix(wiki): cascade-delete pages + chunks when a raw material is removed
2026-05-03 09:12:32 +08:00
matevip
41ed929882
fix(wiki): deterministic, health-aware chat-LLM fallback
2026-05-02 23:31:48 +08:00
matevip
29d2d49d25
fix(wiki): widen mime_type to VARCHAR(255) so Office uploads don't blow the column
2026-05-02 23:11:40 +08:00
matevip
c60fc4cf83
feat(wiki): one-hop chat-LLM fallback when the primary provider is wedged
2026-05-02 21:46:22 +08:00
matevip
ac654f3957
feat(wiki): add Zhipu GLM-V and Volcano Doubao vision providers
2026-05-02 21:46:15 +08:00
matevip
2ae8758cd1
feat(wiki): admin endpoints for hot cache — get / regenerate / reset
2026-05-02 21:46:02 +08:00
matevip
5e936fd50a
feat(wiki): hot cache rebuild engine — LLM updater, scheduler, conversation-end listener
2026-05-02 21:45:55 +08:00
matevip
93807d85ef
feat(wiki): inject KB hot cache into agent system prompt via MemoryProvider SPI
2026-05-02 21:45:49 +08:00
matevip
a8f0998c24
feat(wiki): hot cache storage skeleton — table, entity, value object, read service
2026-05-02 21:45:43 +08:00
matevip
d8f9b04618
fix(docker): use maven.test.skip=true so untracked test drift can't break the image
2026-05-02 19:40:10 +08:00
matevip
062b5169fa
fix(llm): drop bogus qwen3-plus seed and gate enable_search to supporting models (issue #53 )
2026-05-02 19:40:03 +08:00
matevip
44ea8c784b
fix(wiki): skip vision pipeline entirely when wiki.ocr.enabled is off
2026-05-02 19:05:05 +08:00
matevip
f910d762a3
feat(wiki): feature-flag toggle UI + defer extracted_text cache when vision unavailable
2026-05-02 19:04:58 +08:00
matevip
bcefe43234
feat(wiki): inline image refs in search results + click-to-zoom lightbox
2026-05-02 19:04:51 +08:00
matevip
51995275bd
feat(wiki): caption inline PDF images via the vision-in pipeline
2026-05-02 19:04:45 +08:00
matevip
4dc280a3d1
feat(wiki): wire image uploads to vision-in pipeline
2026-05-02 19:04:39 +08:00
matevip
088ffcaee1
feat(wiki): add image-to-text vision SPI with DashScope provider
2026-05-02 19:04:32 +08:00
matevip
b26a4ee4d1
feat(wiki): add SHA-256 keyed image caption cache
2026-05-02 19:04:25 +08:00
matevip
6f0ead162e
feat(wiki): instrument compile / relation / retrieval with WikiMetrics
2026-05-02 19:04:19 +08:00
matevip
4f96a46900
feat(system): add runtime-toggleable feature flag store
2026-05-02 19:04:12 +08:00
matevip
d0706239ea
feat(wiki): add mate_wiki_relation cache table for page-to-page edges
2026-05-02 19:04:06 +08:00
matevip
19b82cdc2a
feat(wiki): add WikiMetrics gateway for compile/relation/retrieval/vision
2026-05-02 19:03:59 +08:00
matevip
8c82f2fde3
feat(deps): add jgrapht-core and cytoscape for wiki graph features
2026-05-02 19:03:54 +08:00
matevip
bc417d00ef
chore: neutralize internal references in code comments and migrations
2026-05-02 15:42:10 +08:00
matevip
2246df9d09
fix(agent): allow PUT modelName=null to revert to global default
2026-05-02 15:42:04 +08:00
matevip
cbc34a12c9
docs(mcp): align /tools javadoc with HTTP 200 + biz-code convention
2026-05-02 15:41:53 +08:00
matevip
a8d94681e5
fix(auth): suppress tokenHash from PAT JSON responses
2026-05-02 15:41:47 +08:00
matevip
9411dfff7b
fix(auth): move PersonalAccessTokenMapper under repository/ for @MapperScan
2026-05-02 15:41:41 +08:00
matevip
3c33422a08
feat(auth): personal access tokens for headless / CI integration
2026-05-02 15:41:34 +08:00
matevip
4522dfaebc
feat(channel): MediaPathGuard utility for unified media validation
2026-05-02 15:41:27 +08:00
matevip
ab62f26ae0
feat(delegate): inherit parent conversation context into child agent
2026-05-02 15:41:20 +08:00
matevip
22231e28a7
feat(hook): HMAC-SHA-256 body signing for outbound webhooks
2026-05-02 15:41:13 +08:00
matevip
25e93c4a89
feat(cron): suppressAgentReply flag for silent cron jobs
2026-05-02 15:41:06 +08:00
matevip
55f4ba1195
feat(llm): per-Model HTTP read-timeout override
2026-05-02 15:40:59 +08:00
matevip
0c7554212b
feat(mcp): GET /mcp/servers/{id}/tools surfaces discovered tools
2026-05-02 15:40:53 +08:00
matevip
311cad7ea6
feat(agent): cap tool_calls per single LLM response
2026-05-02 15:40:45 +08:00
matevip
82ed239b5b
feat(shell-tool): honor user $SHELL on POSIX
2026-05-02 15:40:38 +08:00
matevip
2cd51743d1
feat(cron): distributed lock for multi-instance cron firing
2026-05-02 15:40:31 +08:00