matevip
c5ccce8ebc
feat(goal): deterministic completion + remaining-criteria followup + auto-followup gates
2026-06-03 21:19:26 +08:00
matevip
cd1c66fc0e
feat(goal): structured checklist data model — criteria column, criterion records, dual-carrier evaluation result
2026-06-03 21:19:26 +08:00
matevip
48611a6f4d
feat(memory): per-owner memory isolation with owner_key + visibility scope ( #235 )
2026-06-02 17:04:06 +08:00
matevip
40ce1c67ac
fix(tool): persist generated files to disk so download links survive restart and 10-min window ( #243 )
2026-06-01 21:35:53 +08:00
matevip
1388b6eec8
feat(wiki): add wiki_update_page (in-place edit) and wiki_stale_pages tools
2026-05-31 08:00:19 +08:00
matevip
e18e0f1029
feat(wiki): per-agent pageType permission config API and pending-approval recording
2026-05-31 07:59:48 +08:00
matevip
7363ee8668
feat(wiki): pipeline definition CRUD/YAML API, run query API, page-created trigger
2026-05-31 07:59:41 +08:00
matevip
ea0ace1e49
feat(wiki): propagate staleness when a fact page is updated during ingest
2026-05-31 07:59:27 +08:00
matevip
55cf2a8458
feat(wiki): wire layer derivation and fact-dependency persistence into ingest
2026-05-31 07:59:20 +08:00
matevip
8e8c1e34c7
feat(wiki): inject pageType profile into route/create/merge prompts + content templates
2026-05-31 07:59:13 +08:00
matevip
551321b542
fix(wiki): make pageType permission service a mandatory dependency
2026-05-31 07:58:59 +08:00
matevip
6583aa1e42
fix(wiki): close symlink TOCTOU and size-bypass in scan; single-read binary hash
2026-05-31 07:58:17 +08:00
matevip
aac04cdfa4
fix(wiki): re-ingest modified binary files via content-hash detection
2026-05-31 07:58:10 +08:00
matevip
4ffe7026d2
fix(wiki): block per-file symlink escape and stop sourcePath clobbering
2026-05-31 07:57:57 +08:00
matevip
f3a335f4f6
fix(wiki): re-ingest modified text files via content-hash change detection
2026-05-31 07:57:50 +08:00
matevip
4c56df2ed3
fix(wiki): add fail-closed option for empty source-path allow-list
2026-05-31 07:57:44 +08:00
matevip
3a781ef0d9
test(wiki): cross-feature end-to-end domain scenario
2026-05-31 07:57:31 +08:00
matevip
8b4e1a12f9
feat(wiki): scheduled single-owner source-directory watcher
2026-05-31 07:57:25 +08:00
matevip
cc8c9cf951
feat(wiki): knowledge-layer filter on wiki search
2026-05-31 07:57:18 +08:00
matevip
ad1f5b4a15
feat(wiki): fire count-threshold pipeline triggers after ingest
2026-05-31 07:56:58 +08:00
matevip
526a361488
feat(wiki): restricted Skill pipeline step executor
2026-05-31 07:56:51 +08:00
matevip
15a8b2d73c
feat(wiki): LLM pipeline step executor via model routing
2026-05-31 07:56:45 +08:00
matevip
85f5df394b
feat(wiki): page-type count-threshold trigger for pipelines
2026-05-31 07:56:38 +08:00
matevip
5278568594
test(wiki): drop unnecessary @DirtiesContext from new E2E tests
2026-05-31 07:56:31 +08:00
matevip
6e0e62556f
feat(wiki): pipeline run orchestration with pluggable step executors
2026-05-31 07:56:24 +08:00
matevip
c3388c3f1e
feat(wiki): pipeline runtime schema — definitions, runs, step runs
2026-05-31 07:56:17 +08:00
matevip
66e4788226
feat(wiki): fact/experience dependency graph and stale propagation engine
2026-05-31 07:56:10 +08:00
matevip
28284fbcac
feat(wiki): layered-knowledge schema — layer, dependency table, stale columns
2026-05-31 07:55:55 +08:00
matevip
7a79fe93d0
test(wiki): isolate profile/metadata E2E tests from the shared file DB
2026-05-31 07:55:44 +08:00
matevip
16a7aadbcd
feat(wiki): unified source-path validation with symlink resolution and allowed roots
2026-05-31 07:54:48 +08:00
matevip
eb63ce4865
feat(wiki): validate and persist structured page metadata on ingest
2026-05-31 07:54:41 +08:00
matevip
b50e384e0d
feat(wiki): inject KB pageType profile into the batch-create prompt
2026-05-31 07:54:34 +08:00
matevip
bea48bcf89
feat(wiki): pageType profile CRUD API and service operations
2026-05-31 07:54:27 +08:00
matevip
7cd9971596
feat(wiki): schema validator for structured page metadata
2026-05-31 07:54:20 +08:00
matevip
7f4987c30a
feat(wiki): resolve effective pageType profile per KB with built-in default
2026-05-31 07:54:13 +08:00
matevip
368797e619
feat(wiki): add KB-scoped pageType profile table and page metadata columns
2026-05-31 07:54:06 +08:00
matevip
ec47d19bf8
feat(wiki): gate wiki write/mutate tools by pageType permission
2026-05-31 07:53:59 +08:00
matevip
502b8406a6
feat(wiki): per-agent pageType read permission gate for wiki tools
2026-05-31 07:53:48 +08:00
matevip
f1c55b80e8
feat(memory): route summarized typed facts into structured memory
2026-05-30 07:36:20 +08:00
matevip
de98368b4e
feat(channel): shared inbound media pipeline with magic-byte typing and retry
2026-05-30 07:30:38 +08:00
matevip
7e9f2ee54c
fix(memory): prefer recalled personal memory over knowledge base for user/project questions
2026-05-29 18:03:13 +08:00
matevip
d4ea75a806
fix(approval): deny approval-required tools in non-interactive runs
2026-05-29 18:03:13 +08:00
matevip
ceb4da642b
fix(memory): rebuild agent on workspace file change so memory edits apply
2026-05-29 16:05:21 +08:00
matevip
a27084f9cf
feat(memory): recall project facts via query-conditioned prefetch
2026-05-29 16:05:10 +08:00
matevip
96ed3e8aa7
fix(feishu): mirror router conversationId fallback for recent-file cache
2026-05-29 10:15:06 +08:00
matevip
237f649e7e
fix(tool-guard): trust shared skill root outside the workspace boundary
2026-05-29 09:59:19 +08:00
matevip
82538ca3aa
feat(llm): add Claude Opus 4.8 + 4.8 Fast model entries
2026-05-29 07:06:19 +08:00
lichuan
bd02734d61
feat(agent): add knowledge base binding tab to agent editor ( #237 )
...
Agents now have a per-agent primary wiki KB stored on
mate_agent.primary_kb_id. KBs remain workspace-shared — selecting one in
the agent editor only chooses the default wiki target for that agent, it
does not change the KB's ownership or visibility.
Backend
- AgentEntity: add primary_kb_id field (FieldStrategy.ALWAYS so the UI
can clear it back to "no primary")
- AgentController#update: switch body to Map<String, Object> so we can
tell "field missing" apart from "explicit null" via containsKey, then
convertValue back to AgentEntity
- WikiKnowledgeBaseService:
- new resolvePrimaryKb(agentId): prefers agent.primary_kb_id when it
points to a workspace-visible KB; falls back to legacy
kb.agent_id marker, then to most-recently-updated workspace KB
- listByAgentId now returns the full workspace set (KBs are
workspace-shared under the new model)
- update(id, name, description) no longer touches agent_id
- WikiController: new GET /knowledge-bases/bindable for the UI picker;
PUT /knowledge-bases/{id} no longer reads agentId
- WikiKnowledgeBaseEntity: add FieldStrategy.ALWAYS on embeddingModelId
and configContent so explicit nulls actually unbind/clear instead of
being silently skipped by MyBatis-Plus's NOT_NULL default
- Migrations V129 (H2 + MySQL): add primary_kb_id column + index, backfill
from legacy kb.agent_id, MySQL uses INFORMATION_SCHEMA guard +
PREPARE/EXECUTE for idempotency
- WikiKnowledgeBaseServiceTest: 13 cases, all passing
Frontend
- Agents.vue: new "Knowledge Base" tab, radio-select bindable KBs
- API: listBindableKBs() + Agent.primaryKbId typed string | number | null
- IDs handled as strings throughout (Snowflake-safe)
- i18n keys for the new tab in zh-CN and en-US
2026-05-29 06:00:52 +08:00
matevip
0ef735588a
fix(wiki): 3 bugs caught by browser-driven chat e2e + 12-round trace
2026-05-28 10:55:30 +08:00
matevip
7c9db74886
docs(wiki): seventh-pass — post-restart full sweep, 8/8 green
2026-05-28 09:26:14 +08:00