matevip
ce33c1c652
feat(llm): add UI to configure embedding models from any provider ( #79 )
2026-05-17 09:25:09 +08:00
matevip
7fb47390af
feat(chat): pin, multi-select delete and agent filter for conversations ( #144 )
2026-05-17 09:25:02 +08:00
matevip
18df97a8e6
fix(agent): scope MCP tools to explicit per-agent selection ( #117 )
2026-05-17 09:24:56 +08:00
matevip
8c1eef00f2
build(deps): upgrade backend libraries and migrate to OpenPDF 3 package
2026-05-17 08:14:11 +08:00
matevip
e647f1d6cf
fix(cron): isolate scheduled-job runs from shared conversation ( #142 )
2026-05-17 07:58:10 +08:00
matevip
b4add8b139
fix(agent): keep wiki tools available to skill-bound agents ( #143 )
2026-05-16 23:00:45 +08:00
matevip
033854a3ff
fix(feishu): restore reaction-event no-op handlers dropped by an over-eager dedup revert
2026-05-16 17:39:19 +08:00
matevip
819c5d5c50
docs(memory): drop external-project attribution from javadoc
2026-05-16 17:30:49 +08:00
matevip
c8d908078a
style(feishu): write reaction-handler comment in English
...
Project convention: all code comments must be in English.
2026-05-16 15:34:02 +08:00
倪程伟
a386b31e9b
fix(feishu): register no-op handlers for reaction events ( #140 )
...
The Feishu SDK EventDispatcher had no handler registered for im.message.reaction.created_v1 / deleted_v1, so adding or removing an emoji reaction raised HandlerNotFoundException and logged an ERROR stack trace. Register no-op handlers to silently ignore these events.
2026-05-16 15:28:59 +08:00
matevip
f56f4b059a
fix(workspace): reject impossible calendar dates in memory snapshot import
2026-05-16 14:51:52 +08:00
matevip
69fb03968b
fix(agent): expose memory-search and async-delegation tools to skill-bound agents
2026-05-16 14:51:47 +08:00
matevip
725fdd1e0f
feat(workspace): memory snapshot export and import with whitelist
2026-05-16 14:51:25 +08:00
matevip
81c6488a3c
feat(tool): async sub-agent delegation with attribution gate
2026-05-16 14:51:20 +08:00
matevip
419ee57cc8
feat(agent): structured compaction on prompt-too-long preserves prefix
2026-05-16 14:51:14 +08:00
matevip
b9c0ead024
feat(workspace): keyword search across agent memory files
2026-05-16 14:51:09 +08:00
matevip
d90591fa35
feat(task): generic one-shot Callable runner with parent-conv cancel
2026-05-16 14:51:04 +08:00
matevip
82594878a0
refactor(ui): fold the live runtime view into the Employees page
2026-05-16 14:50:58 +08:00
matevip
c320aab1ba
fix(skill): synthesize SKILL.md body for ACP-derived virtual skills ( #136 )
2026-05-16 14:50:51 +08:00
matevip
130dfd5278
fix(skill): synthesize SKILL.md for MCP-derived virtual skills ( #136 )
2026-05-16 14:50:46 +08:00
matevip
51c922f395
fix(cron): include agent-less cron jobs in dashboard run views ( #134 )
2026-05-15 20:56:21 +08:00
matevip
3b9b4d79d5
feat(skill): scope skill catalog and runtime by workspace ( #135 )
2026-05-15 20:01:25 +08:00
matevip
38b1af11cd
docs(skill): tighten skill_manage tool description to disambiguate from record_lesson
2026-05-15 15:21:28 +08:00
matevip
a4b8c00eba
fix(orm): make updateTime auto-fill unconditional so rows actually move on update
2026-05-15 15:21:23 +08:00
matevip
1d1a818513
fix(skill): persist version on patch and rescan synchronously after edit/patch ( #129 )
2026-05-15 15:12:07 +08:00
matevip
26df2c94d0
fix(rbac): let viewers read active model so they can actually chat
2026-05-15 10:19:03 +08:00
matevip
9fc2e5f04f
feat(memory,dashboard,channel,cron): raise read endpoints out of viewer
2026-05-15 10:18:20 +08:00
matevip
3ba22b99f3
feat(workspace,system): add @RequireGlobalAdmin and gate admin-only controllers
2026-05-15 10:18:10 +08:00
matevip
bba9975749
feat(llm,datasource): gate model/provider/oauth/datasource endpoints to admin
2026-05-15 10:18:03 +08:00
matevip
41f3408209
feat(skill,tool,plugin): gate skill/tool/plugin endpoints by workspace role
2026-05-15 10:17:56 +08:00
matevip
f4964bc6d8
feat(workspace): return memberRole on list and add access endpoint
2026-05-15 10:17:49 +08:00
matevip
65dd4c1f49
fix(skill): cascade-delete agent-skill bindings on skill removal ( #127 )
2026-05-15 10:17:41 +08:00
matevip
eb6badeb61
feat(ui): surface pending approvals + stuck agents as sidebar badges
2026-05-15 10:17:30 +08:00
matevip
adf5d93975
fix(wiki): align HTTP status with R envelope and harden config + edit paths
2026-05-14 23:01:00 +08:00
matevip
1bba59fc7e
fix(skill): encode bridge virtual ids in the top two bits
2026-05-14 18:18:21 +08:00
matevip
139a478bcd
fix(skill): give CJK-only MCP/ACP names a stable id-based slug
2026-05-14 18:18:15 +08:00
matevip
d1be02985c
fix(agent): collapse model-predicted tool results that the actual tool replaced
2026-05-14 15:44:03 +08:00
matevip
f0f97232a8
fix(agent): pre-tool no-claim system rule + correct write/edit approval docs
2026-05-14 14:59:32 +08:00
matevip
bf3f4af913
fix(agent): structured tool-call replay + final-answer-only content ( #120 )
2026-05-14 07:46:30 +08:00
matevip
2bca55f5b4
fix(tool-guard): friendly duplicate rule-id rejection and client-side name/pattern validation ( #88 )
2026-05-13 09:55:30 +08:00
matevip
aed559d1cf
docs(agent): update head-guard call-site comment to match the order-sensitive forward scan
2026-05-13 09:05:17 +08:00
matevip
1ea90c25cb
fix(agent): make head-orphan repair order-sensitive — a later same-id assistant does not redeem an earlier orphan
2026-05-13 09:03:16 +08:00
matevip
bff57924d6
fix(agent): repair head-side orphan tool responses on the pagination cut
2026-05-13 09:03:10 +08:00
matevip
af56763156
fix(context): keep the latest summary even when its row sits outside the recent window; include summaryId in compact_status
2026-05-13 08:50:42 +08:00
matevip
faf7f98358
feat(context): consume compact_status on the frontend; load history from latest boundary; backfill summaryId
2026-05-13 08:50:35 +08:00
matevip
51b5eceb7d
feat(context): preserve spill markers across compaction phases, persist enriched boundary, broadcast compact_status SSE ( #110 )
2026-05-13 08:50:28 +08:00
matevip
86a6829102
feat(executor): retention sweep and per-conversation purge for tool-result spill files
2026-05-13 08:50:22 +08:00
matevip
7015d1513c
feat(context): anchor the first user message after compaction so long tasks remember the original goal
2026-05-13 08:50:15 +08:00
matevip
37894a6978
fix(context): never compact across a split tool_call ↔ tool_response pair
2026-05-13 08:50:08 +08:00
matevip
ae3d27922d
fix(context): preserve raw older tool results instead of rewriting them to a lossy summary
2026-05-13 08:50:02 +08:00
matevip
8f49b0ec92
fix(executor): spill raw tool result before falling back to inline truncate
2026-05-13 08:49:56 +08:00
matevip
2ef806aa64
chore(deps): bump Spring AI 1.1.5 -> 1.1.6 and Spring AI Alibaba 1.1.2.2 -> 1.1.2.3
2026-05-13 07:39:27 +08:00
matevip
cc5d7d5ad0
fix(agent): auto-include enabled MCP tools in effective allowlist ( #108 )
2026-05-12 21:24:36 +08:00
matevip
aded30bbb1
feat(agent): auto-redirect skill-as-tool calls to readSkillFile
2026-05-12 17:20:19 +08:00
matevip
5789a28e19
feat(skill): boost newly installed skills + teach LLM to widen the catalog search
2026-05-12 17:20:09 +08:00
matevip
0b321dc903
fix(skill): repair zip install losses + persist scripts/refs to canonical store ( #104 )
2026-05-12 17:20:00 +08:00
matevip
691d2b867b
fix(agent): hide disabled agents from the chat picker and reject chat calls against them ( #105 )
2026-05-12 14:53:14 +08:00
matevip
026afa2ba5
feat(wiki): optional JSON Schema on json-format transformations
2026-05-12 14:35:31 +08:00
matevip
465a727be2
feat(wiki): record per-run token usage so operators can see what each template burns
2026-05-12 14:35:17 +08:00
matevip
e911af2192
feat(wiki): JSON output mode — structured transformation output for programmatic downstream
2026-05-12 14:11:02 +08:00
matevip
90936dba4f
feat(wiki): cross-material transformation aggregator — map-reduce all runs of a template into one KB page
2026-05-12 14:10:54 +08:00
matevip
a5b952050c
feat(wiki): reverse-citation extractor — bind synthesis pages to the exact source chunks they cite
2026-05-12 14:10:47 +08:00
matevip
e1759e0e3c
feat(wiki): page-input transformations — run a template against an existing page
2026-05-12 14:10:40 +08:00
matevip
bee39cc420
feat(wiki): page-level embedding so synthesis pages enter semantic search
2026-05-12 14:10:23 +08:00
matevip
8d01efbbb1
fix(agent): sanitize streamed tool-call arguments to valid JSON
2026-05-12 11:25:58 +08:00
matevip
62c9776b01
feat(wiki): clean conversational preamble and code fences from transformation output
2026-05-12 11:25:50 +08:00
matevip
f04ea58c8d
feat(wiki): cancel a running transformation and re-run any past run
2026-05-12 11:25:44 +08:00
matevip
ef6ad1b91a
feat(wiki): expose per-template model picker in the transformations modal
2026-05-12 11:25:38 +08:00
matevip
4098346fb7
fix(wiki): strip file extensions when deriving transformation page slugs
2026-05-12 11:25:32 +08:00
matevip
bae9f68261
feat(wiki): user-defined transformation templates with optional auto-save to synthesis pages
2026-05-12 10:49:58 +08:00
srant1
5f77434953
fix(llm): activate default model after OpenAI OAuth and gate provider checks by enabled
...
OAuth token save now promotes the first available chat model when no usable default exists. Default-model resolution and provider availability checks require Provider.enabled=true alongside credentials, so disabled Providers no longer return stale defaults. /models/enabled drops the single-Provider hard-code so OpenAI OAuth and other enabled chat models surface in selectors. Docker exposes the 1455 PKCE callback via MATECLAW_OAUTH_OPENAI_CALLBACK_BIND_HOST (default 127.0.0.1) and a port mapping; deployment mode stays Host-driven.
2026-05-12 09:58:30 +08:00
matevip
27f614d48a
feat(wiki): enrich chunk embedding input with raw title and structural metadata
2026-05-12 08:44:26 +08:00
matevip
dac3f5be20
fix(extract): trigger OCR when text extraction returns unreadable bytes
2026-05-12 08:44:20 +08:00
matevip
071ccff9bf
feat(tool): add render_html_image to deliver HTML artifacts as native IM images
2026-05-12 07:11:35 +08:00
matevip
b74176ef66
refactor(agent): tighten template pre-binding contract and prune product-assistant skills
2026-05-12 07:11:29 +08:00
matevip
201e510b17
feat(agent): pre-bind skills and tools when applying an agent template
2026-05-12 07:11:19 +08:00
matevip
08fcab12d1
fix(deploy): drop DASHSCOPE_API_KEY requirement so Docker boots with no LLM key configured ( #99 )
2026-05-11 20:44:31 +08:00
matevip
e6fd39f6ba
fix(agent): raise parallel delegation timeout to 300s for thinking models
2026-05-11 17:23:26 +08:00
matevip
f25f910a82
feat(skill): support optional: true frontmatter for off-by-default bundled skills
2026-05-11 17:22:30 +08:00
matevip
6d5fb595d3
fix(agent): harden digital-employee isolation across creation, skill binding and prompt catalog
2026-05-11 16:10:28 +08:00
matevip
9fd5843dda
fix(llm): pin OpenAI-compatible HTTP client to HTTP/1.1 ( #89 )
2026-05-11 11:22:23 +08:00
matevip
3f1f83bbfe
fix(channel): gate WS/long-polling channels on a distributed leader lease ( #85 )
2026-05-11 10:50:00 +08:00
matevip
b7f69dbefe
fix(skill): merge partial PUT into existing row so SKILL.md saves stop 500ing ( #93 )
2026-05-11 07:59:49 +08:00
matevip
9cac7a31d1
refactor(skill-mcp): expose tool display names via ResolvedSkill instead of Map view
2026-05-10 23:46:37 +08:00
czhcc
18148aa724
feat(skill-mcp): expose readable display name alongside prefixed MCP tool names
...
Add a parallel effectiveAllowedToolsDisplay field on the runtime status payload so the SkillMarket detail drawer can render mcp_<server>_<slug>_<hash> with the raw tool name appended in parentheses, while leaving the original prefixed list unchanged for any caller that needs the machine name. McpSkillBridge#decorateToolNameForDisplay reverses a prefixed name via the per-server cached tool list; the frontend prefers the new display field and falls back to effectiveAllowedTools when the field is absent.
2026-05-10 23:30:22 +08:00
matevip
f71f49bda1
fix(agent): dedup repetition output + mark INCOMPLETE instead of NORMAL
2026-05-10 19:16:16 +08:00
matevip
fb0ae2b6cc
fix(agent): break out of self-arguing reasoning loops via content-repetition cap
2026-05-10 19:16:10 +08:00
matevip
a886447a39
fix(channel): drop stray 'group:' infix in wecom inbound media path
2026-05-10 19:16:04 +08:00
matevip
f18626304e
feat(agent,ui): recovery affordance card for non-transient LLM errors
2026-05-10 19:15:57 +08:00
matevip
48510c9751
feat(channel): per-sender attribution + debounce boundary for group chats
2026-05-10 19:15:51 +08:00
matevip
00098fe5f1
feat(agent,channel): scrub fake generated-file URLs + paste-body hint for public-account articles
2026-05-10 19:15:44 +08:00
matevip
19a8c9e16c
fix(agent): retry transient TLS / socket errors instead of failing the LLM call
2026-05-10 19:15:38 +08:00
matevip
6b3fba2ed4
feat(channel): wecom group reply fallback + upload size pre-check + appmsg parsing
2026-05-10 19:15:32 +08:00
matevip
63f14acb72
fix(settings): stop bulk save from clobbering multimodal sidecar config
2026-05-10 19:15:27 +08:00
matevip
4e1afa6b6f
feat(channel): parse wecom quoted-message context for inbound replies
2026-05-10 19:15:20 +08:00
matevip
2b84d94897
fix(channel): adaptive debounce window for paste-split long messages
2026-05-10 19:15:15 +08:00
matevip
3d1f0469ca
feat(channel): wecom group reply slot + upload size limits + appmsg inbound
...
Group-chat reply slot fallback:
- The platform blocks proactive sends in group chats; outbound paths
(cron summaries, async-task completions, generated image/music/3D
delivery, TTS audio) silently failed because they fell through to
the proactive-send command. New bounded LRU maps each group chat
to its most recent inbound frame id; the dispatcher prefers that
reply slot and falls through to proactive only for single chats.
- Centralised text and media dispatch through a single helper so the
group rule never has to be re-implemented per outbound path.
Upload size pre-check + auto-downgrade:
- Without client-side limits, oversized uploads streamed for ~1 minute
before the server rejected at the finish step — users saw nothing
arrive in their chat. The new decision layer mirrors the platform's
hard limits and produces three outcomes: rejected with a friendly
reason, downgraded to a generic file delivery with an inline note,
or pass-through unchanged.
- Files over 20MB reject. Images / videos over their 10MB limit
downgrade to file. Voice content that isn't AMR or exceeds 2MB
downgrades. AMR voice within 2MB stays native.
appmsg inbound parsing:
- Forwarded complex messages (document transfers, article links,
miniprogram cards) used to fall into the inbound switch's default
branch and silently drop. The new branch flattens four sub-types
into a text marker the agent reads plus any media that needs to
reach downstream tools — document forwards reuse the same magic-
byte sniff and per-conversation upload layout as native file
inbound, so extension recovery and chat-uploads serving work
identically.
- Article links produce "[链接] title\ndescription\nurl" so the agent
can summarize without round-tripping. Miniprograms surface their
title. Unknown sub-types still emit a generic marker so the agent
is never blind.
2026-05-10 15:13:14 +08:00
matevip
9075abfef2
feat(channel + settings): wecom quote message parsing + sidecar config preservation
...
WeCom quoted-message context:
- Parse the body.quote field that arrives alongside any inbound message
(text / image / voice / file / mixed sub-types). When a user long-
presses a previous bot bubble and types a follow-up like "解释一下",
the agent now sees both the user's new text and the referenced
content as proper context — replies stay on topic instead of
guessing what was being explained.
- Quoted images / files are downloaded through the same pipeline as
inbound new media (magic-byte sniff, ZIP container peek for
DOCX / XLSX / PPTX recovery, chat-uploads layout) so the vision
sidecar and document tools can actually analyse what was quoted.
- Reading order in the assembled prompt: "[引用消息: ...]\n<user text>"
first, then quoted media parts, then the user's own current-message
media. Mixed quotes flatten into a space-joined summary.
Multimodal sidecar settings preservation:
- The bulk settings PUT used to unconditionally overwrite the vision /
video sidecar model ids — null in a partial payload became "" in
the DB, silently wiping the configured sidecar every time a user
saved an unrelated settings page (System / Music / Image / etc.).
Symptom: "I picked a vision model, saved a different settings tab,
now the bot can't see images anymore."
- Bulk save now guards both keys with non-null checks, matching the
pattern used for music / 3D / image / video / tts / stt blocks.
- A dedicated /settings/sidecar endpoint always writes both keys, so
the sidecar UI can still explicitly clear via null without leaking
the write-on-null semantics into every other settings save.
- Frontend sidecar card switches to the dedicated endpoint; other
settings pages keep their existing partial-payload behaviour.
2026-05-10 11:38:35 +08:00
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
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
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
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
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
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
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
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
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
66f09a968a
feat(chat-stream): streaming UX overhaul + multi-agent stability layer
2026-05-03 17:15:02 +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