viettranx
3a85d625a6
feat(tools): add send_file for delivering existing workspace files
- new send_file(path, caption?) tool with DenyPaths guard and duplicate-delivery check
- patch message(MEDIA:) to Mark DeliveredMedia on send success (closes cross-tool dup gap)
- register in gateway wiring + builtin seed
- add to systemprompt coreToolSummaries; clarify write_file deliver=true description
- 16 tests green (PG + SQLite builds clean, invariants green)
2026-04-23 08:31:53 +07:00
..
2026-04-15 11:24:57 +07:00
2026-04-10 10:13:58 +07:00
2026-04-10 10:13:58 +07:00
2026-04-11 21:22:23 +07:00
2026-03-27 09:35:57 +07:00
2026-04-23 08:22:39 +07:00
2026-04-11 21:22:23 +07:00
2026-03-19 13:59:32 +07:00
2026-02-22 14:58:07 +07:00
2026-02-22 14:58:07 +07:00
2026-04-16 20:32:37 +07:00
2026-04-16 20:32:37 +07:00
2026-04-15 11:24:57 +07:00
2026-04-05 21:32:59 +07:00
2026-04-13 19:09:29 +07:00
2026-04-16 14:17:48 +07:00
2026-04-18 15:34:46 +07:00
2026-04-02 22:58:35 +07:00
2026-04-13 19:09:29 +07:00
2026-04-09 21:15:19 +07:00
2026-04-18 22:49:51 +07:00
2026-04-15 11:24:57 +07:00
2026-04-09 21:15:19 +07:00
2026-04-18 17:45:14 +07:00
2026-04-14 18:28:31 +07:00
2026-04-16 17:07:56 +07:00
2026-04-16 17:07:56 +07:00
2026-03-25 12:37:49 +07:00
2026-04-18 15:40:24 +07:00
2026-04-18 16:19:23 +07:00
2026-04-23 08:22:39 +07:00
2026-04-18 17:45:14 +07:00
2026-04-17 20:45:48 +07:00
2026-04-23 08:22:39 +07:00
2026-04-17 20:45:48 +07:00
2026-03-30 15:20:01 +07:00
2026-04-23 08:22:39 +07:00
2026-04-23 08:22:39 +07:00
2026-04-16 21:26:45 +07:00
2026-03-31 14:33:33 +07:00
2026-04-23 08:22:39 +07:00
2026-04-13 11:04:19 +07:00
2026-04-13 11:04:19 +07:00
2026-04-09 21:15:19 +07:00
2026-04-09 21:15:19 +07:00
2026-04-23 08:22:39 +07:00
2026-04-14 18:28:31 +07:00
2026-04-14 18:28:31 +07:00
2026-04-14 18:28:31 +07:00
2026-03-30 22:15:34 +07:00
2026-03-31 19:26:40 +07:00
2026-04-14 18:28:31 +07:00
2026-04-23 08:22:39 +07:00
2026-04-11 21:22:23 +07:00
2026-04-11 21:22:23 +07:00
2026-04-09 21:15:19 +07:00
2026-04-09 21:15:19 +07:00
2026-04-23 08:22:39 +07:00
2026-04-23 08:22:39 +07:00
2026-04-10 16:32:54 +07:00
2026-04-10 16:32:54 +07:00
2026-04-23 08:22:39 +07:00
2026-04-18 17:45:14 +07:00
2026-04-09 21:15:19 +07:00
2026-04-18 17:45:14 +07:00
2026-04-15 11:24:57 +07:00
2026-04-19 21:00:13 +07:00
2026-04-19 21:00:13 +07:00
2026-03-31 11:44:54 +07:00
2026-04-23 08:22:39 +07:00
2026-04-09 21:15:19 +07:00
2026-04-16 15:49:50 +07:00
2026-04-16 21:26:45 +07:00
2026-04-11 21:22:23 +07:00
2026-04-11 23:22:17 +07:00
2026-04-11 21:22:23 +07:00
2026-04-11 21:22:23 +07:00
2026-04-11 23:22:17 +07:00
2026-04-14 18:28:31 +07:00
2026-03-10 23:11:02 +07:00
2026-03-24 10:24:10 +07:00
2026-04-18 21:46:26 +07:00
2026-04-04 21:17:47 +07:00
2026-04-18 21:46:26 +07:00
2026-04-09 21:15:19 +07:00
2026-04-09 21:15:19 +07:00
2026-04-10 10:13:58 +07:00
2026-04-09 21:15:19 +07:00
2026-04-09 21:15:19 +07:00
2026-04-15 12:41:00 +07:00
2026-04-09 21:15:19 +07:00
2026-04-19 15:00:07 +07:00
2026-04-09 21:15:19 +07:00
2026-04-16 18:55:43 +07:00
2026-04-09 21:15:19 +07:00
2026-04-18 17:45:28 +07:00
2026-04-02 18:32:43 +07:00
2026-04-23 08:31:53 +07:00
2026-04-15 13:37:37 +07:00
2026-03-31 08:35:06 +07:00
2026-03-19 13:35:57 +07:00
2026-03-28 14:53:43 +07:00
2026-03-28 14:53:43 +07:00
2026-04-16 21:26:45 +07:00
2026-04-08 14:47:39 +07:00
2026-04-08 14:47:39 +07:00
2026-03-12 18:26:40 +07:00