Commit Graph

109 Commits

Author SHA1 Message Date
matevip
17c87dfa3a fix(decision): enforce worker contracts and bound goal recovery 2026-09-29 05:26:39 -04:00
matevip
063622602b fix(agent): ground goal recovery and validate delegated step results 2026-09-29 03:49:56 -04:00
taobig
baeb3f982a feat(workspace): add opt-in member file isolation (#644) 2026-09-22 23:13:08 -04:00
mateaix
a09eb06f65 fix(tools): bound spreadsheet extraction and enforce tool timeouts (#635) 2026-09-16 22:11:37 +08:00
mateaix
8cca7159fc fix: fence runtime goal completion with current authenticated owner 2026-09-14 22:03:20 +08:00
mateaix
5cc8765681 feat: bind trusted JSON checks to current requirements and versions 2026-09-14 21:37:38 +08:00
mateaix
2b6bde9971 feat: fence managed JSON publication to current goal runtime owners 2026-09-14 21:29:42 +08:00
mateaix
971aa536a8 Add user JSON acceptance configuration and state visibility 2026-09-14 21:09:21 +08:00
mateaix
ea1a28399c fix(files): authorize ownership before loading generated content 2026-09-14 00:14:34 +08:00
mateaix
7e45a26755 fix(files): isolate generated preview content with sandbox policy 2026-09-14 00:05:01 +08:00
mateaix
47066c6091 fix(files): reject symlinks when reloading generated downloads 2026-09-13 23:43:00 +08:00
mateaix
fb7bb04f7a feat: add user-invoked bounded JSON artifact checks 2026-09-13 22:15:13 +08:00
mateaix
c024e2d9f0 fix: reject symlink artifacts and bound collection reads 2026-09-13 21:57:34 +08:00
mateaix
3843dc04b7 feat(evidence): inspect artifact version changes on demand 2026-09-13 21:30:39 +08:00
mateaix
7d26eaf528 fix(artifacts): isolate registered file bytes from caller mutations 2026-09-13 20:53:41 +08:00
matevip
dd4db18ed8 fix(runtime): harden long-task recovery and checkpoint writes 2026-08-30 23:13:42 -04:00
mateaix
701b99b3e9 fix(delegation): bound and cancel async agent tasks 2026-08-30 13:32:22 +08:00
matevip
7eb44731e7 fix(chat): stabilize long-task input recovery 2026-08-27 05:21:59 -04:00
taobig
2fa2e60170 feat(goal): persist continuous execution across bounded turns
- Add a database-backed supervisor with durable scheduling, fenced leases,
  cooldowns, bounded worker concurrency and expired-lease restart recovery.
- Default new goals to persistent execution with zero meaning unlimited
  cumulative budget; preserve legacy goals and explicit positive limits.
- Yield bounded graph segments to the supervisor instead of ending unfinished
  goals at graph-local continuation limits. Require persisted checklist
  evidence before accepting completion, including concurrent criterion edits.
- Share conversation admission across interactive and background execution;
  preserve partial replies, usage and queued user input during interruption.
- Persist Stop and missing-input pauses, respect approval boundaries, and
  commit resume and approval-denial transitions with correct transactions.
- Retry identifiable transient failures with backoff; retain visible pauses
  for budget limits and errors that require review instead of replaying tools.
- Expose owner-authorized execution status and reconnectable scheduling events;
  add H2, MySQL and Kingbase migrations, API types and bilingual documentation.

Validation: 298 focused backend tests passed, including persistence, restart
scheduling, approval races, cancellation, admission and existing runtime tests.
Frontend type checking, bundled-doc parity and ID precision checks passed.
V188 is registered and all three dialects have unique migration versions;
the migration-map audit still reports 95 pre-existing missing registrations.

Scope: single-backend native runtime. Recovery checks existing state before
repeating effects; this does not promise exactly-once external tool execution.
2026-08-26 05:46:15 -04:00
mateaix
dd7e561e48 fix(agent): harden tool completion and team retries (#606) 2026-08-23 21:43:35 +08:00
matevip
14df331ce6 fix: resolve workspace context for file mutations (#617) 2026-08-21 22:05:26 -04:00
matevip
8d32a60fdb fix(files): restrict generated downloads by workspace (#611) 2026-08-21 06:06:59 -04:00
matevip
5b3285c78f fix: expose plugin tools in agent picker (#604) 2026-08-20 02:22:35 -04:00
matevip
d1a553ed77 fix(agent): stop repeated plan skill loads (#606) 2026-08-20 01:51:56 -04:00
mateaix
d2df5c2797 feat(office): add optional OfficeCLI engine (#583) 2026-08-17 20:28:40 +08:00
matevip
50c6eb92f9 fix(agent): refresh context previews without MCP hot-path scan 2026-08-14 04:34:51 -04:00
matevip
c4751ea69c fix(tools): preserve cron job id tool inputs 2026-08-13 04:01:32 -04:00
matevip
7a34f3a502 fix(tools): preserve datasource id tool inputs 2026-08-13 03:58:05 -04:00
matevip
06105faa4d fix(memory): preserve agent id in tool inputs 2026-08-13 03:45:57 -04:00
matevip
b8a8aac7f9 fix: preserve agent id precision in memory tools 2026-08-13 03:08:44 -04:00
matevip
ba0e4506b7 feat(browser): harden browser automation reliability 2026-08-12 06:02:36 -04:00
mateaix
8dc6c64683 perf(agent): add progressive tool bridge 2026-08-09 19:39:45 +08:00
mateaix
a204e8eec8 fix(self-evolution): harden lifecycle and plan loops 2026-08-09 18:13:24 +08:00
matevip
e22173a476 feat(skill): close the self-evolution loop — auto-bind, routine mining, curation provenance and restore points 2026-08-06 01:51:22 -04:00
mateaix
7fb6ba7461 sync: v2.0.0 dev + 落盘文件按天分目录 (#554)
- 附件 / 生成媒体写入 {conversationDir}/yyyy-MM-dd/{storedName},serve URL 保持平铺
- 读取路径同时探测平铺与日期两种布局,可随时开关 mateclaw.chat.upload.date-folders
- 读取侧强制 storedName 为纯文件名;原始文件名回退取最近修改的匹配
- 修正 Linux / macOS / Windows 的路径与时间戳精度差异
2026-08-01 18:33:24 +08:00
matevip
fcf5f3960b fix(agent): stop lossy-truncating retrieval tool results that must arrive whole
load_skill returns SKILL.md in full by design — it is the model's behavioral
contract, and pagination by default would let the model silently miss later
mandatory sections. read_file / readSkillFile / load_skill are therefore on
the spill-exclusion list so their output is never replaced by a disk pointer.

The exclusion only covered half the path. In spillRawOrTruncate, an excluded
tool's result came back from persistIfOversized unchanged (no spill), failed
the SPILL_MARKER_PREFIX check, and fell through to truncateToolResult(8000) —
so an 8261-char SKILL.md was hard-cut through the middle and stamped with a
'[TRUNCATED: ... middle omitted]' marker. Weaker models ignore the attached
fidelity note and fabricate the removed span, inventing tool calls against
endpoints the skill never described.

- spillRawOrTruncate now returns retrieval-excluded results raw; the per-turn
  aggregate budget stays the backstop.
- Outsized SKILL.md degrades to resumable pagination instead of an unbounded
  inline dump. Never a lossy middle-cut.
2026-07-28 05:06:24 -04:00
matevip
728ed53062 feat(skill): scope agent runtime skill resolution to the conversation workspace 2026-07-24 14:12:08 +08:00
matevip
c18ff31ae8 feat(skill): scope skill workspace filesystem paths by workspace to isolate same-named skills 2026-07-24 10:26:57 +08:00
matevip
4ac72a90a0 feat(skill): bundle file management — view and edit scripts, references, and templates from the console
The skill detail drawer could only show and edit SKILL.md; the bundle
files under scripts/ and references/ had no console surface, and
templates/ was readable by agents but absent from the canonical
store's bucket set.

- admin endpoints on /api/v1/skills/{id}/files: list (self-heals an
  empty canonical store from on-disk files), read, upsert, delete.
  Writes update the canonical row, materialize the workspace cache,
  and re-resolve the skill so agents pick changes up immediately.
  Path envelope enforces the three buckets and blocks traversal;
  builtin skill files stay read-only; virtual skills own no files.
- templates/ becomes a first-class DB-persisted bucket shared across
  the syncer, the workspace write/delete envelope, and prune guards.
- the agent-facing write_file action now mirrors into the canonical
  store and re-resolves instead of writing only the local filesystem.
- SkillMarket detail drawer gains a Files tab: grouped list, viewer,
  inline editor, create and delete, refetched on every entry.
2026-07-22 15:39:59 +08:00
RobinZhiBin
19bd612c9a
fix(datasource): re-encrypt password on connection test and discover PostgreSQL views 2026-07-15 16:07:53 +08:00
matevip
c9cc5b4f6f feat(chat): glass-themed preview for uploaded & AI-generated docx/xlsx/pdf (#513) 2026-07-13 18:00:54 +08:00
mateaix
60ea00dede feat(tool/browser): 无障碍树 ref 快照与按 ref 交互 + 真实浏览器隐私护栏 + 受控 CDP 逃生舱 2026-07-12 14:56:02 +08:00
mateaix
ac4b277492 feat(content-studio): 交付即扫即记 + 内容日历只读页(自动化与打磨) 2026-07-12 11:51:12 +08:00
mateaix
f184b94bcd feat(content-studio): 生产硬化 —— 正文图上微信/密钥加密/token复用/内容日历去重/合规硬闸/封面兜底 2026-07-11 22:32:14 +08:00
mateaix
81f4b8f827 feat(content-studio): 小红书以图为主打包 xhs_package(强制≥3图 + 在线预览) 2026-07-11 20:03:34 +08:00
mateaix
85bee7a041 feat(content-studio): 公众号凭据设置+截图工具+平台规范; fix: 封面按文件名自愈 2026-07-11 18:48:11 +08:00
MIST
e35c07f742
feat(mcp): progress notifications for long-running MCP tools
Wire MCP standard notifications/progress into the existing SSE stream so long-running MCP tool calls surface live progress instead of a bare spinner. A per-call progressToken maps back to (conversationId, toolCallId); ProgressAwareMcpToolCallback injects it into tools/call _meta and calls McpSyncClient directly (falling back to the delegate on error, and applying identity forwarding first). Progress events skip the ring buffer and are replayed from a latest-value snapshot on SSE reconnect. Frontend renders a gradient progress bar in ToolCallSegment when a running tool reports progress.
2026-07-09 18:05:14 +08:00
matevip
4ae4731d54 fix(tool-guard): harden filesystem-root skip and chat-upload fallback in boundary checks
- Shell scan: a token normalizing to the filesystem root (//, /., /..) is
  only skipped when the command carries no destructive verb; with
  rm/rmdir/shred/srm present the scan fails closed, so 'rm -rf //' is
  refused while sed empty replacements (s/pattern//) stay allowed.
- Chat-upload fallback: a boundary violation is waived only when the
  requested path itself normalizes inside one of the conversation's
  candidate upload directories; a basename match against a stored
  attachment no longer clears the violation. Resolver/DB failures keep
  the BLOCK finding. The unused candidate-roots resolve overload is
  removed.
- Regression tests for destructive root tokens, sed allowance, the
  fail-closed compound case, stored-upload-path allowance, basename
  collisions, cross-conversation paths, and resolver failure.
2026-07-09 15:04:34 +08:00
MIST
bc9768b717
fix(tool-guard): false workspace-boundary blocks on sed empty replacement and chat-upload attachments
Skip absolute-path tokens that normalize to the filesystem root in the shell boundary scan (shell syntax like sed's s/pattern// was misread as a path outside the workspace), and add a DB-backed chat-upload fallback in WorkspaceBoundaryGuardian: when a file-tool path triggers a boundary violation, resolve the conversation's real candidate upload roots so attachments stored in workspace-scoped directories are found even when the thread-local workspaceBasePath is null.
2026-07-09 10:48:17 +08:00
matevip
c5805016a3 fix(tool-guard): resolve relative file paths against the workspace root, not process CWD (#494) 2026-07-07 18:33:16 +08:00