Diego Rodrigues de Sa e Souza
a628d28898
feat(dashboard): orchestration canvas fase 2 — repeat action + A2A memory hits (2.6/2.7) ( #12508 )
...
* feat(api): conductor task creation route (repeat support)
* feat(a2a): record memoryHits consulted per task (observability, 2.7)
* feat(dashboard): repeat action in orchestration drawer (2.6 — repeat only)
* fix(dashboard): require every field each repeat contract needs before enabling the action
* feat(dashboard): memory-used drawer section + fase2 i18n/changelog (2.7)
* fix(dashboard): validate memoryHits shape before rendering + locale wording fixes
* fix(dashboard,a2a): stop memoryHits leaking into repeats, harden drawer guard + status clamp
Final whole-branch review fix wave for the Orchestration Canvas Fase 2 PR-C.
- a2a: `createTask` stores a COPY of `input.metadata` instead of aliasing it, so the
observability `memoryHits` written by `executeA2ATaskWithState` no longer leak into
`task.input.metadata`, into the persisted `a2a_tasks.input_json`, or into the drawer's
"Repeat" body (a repeated task was born carrying the previous run's memory snippets,
even with the `OMNIROUTE_A2A_MEMORY_HITS=0` kill-switch on).
- dashboard: `repeatReqFor` strips `memoryHits` from the a2a repeat metadata, so tasks
persisted before the copy-fix do not propagate them either.
- dashboard: the "Memory used" section now requires all four rendered fields (id, key,
type, snippet) to be strings — `{ id: "x", key: { a: 1 } }` used to throw "Objects are
not valid as a React child" and take the whole drawer down.
- dashboard: an `/a2a` action answered with a JSON-RPC error under HTTP 200 is reported as
a failure (`RPC <code>`, code only — never the upstream message) instead of a success
toast; the secured-deployment rejection keeps surfacing the sanitized `HTTP 400`.
- api: the conductor task-creation route clamps a hub status outside 400-599 to 502, so an
out-of-range status can no longer turn a hub refusal into a `RangeError`.
- dashboard: the History tab's `onActionDone` keeps the drawer mounted (and refreshes the
range) instead of closing it, so the repeat/cancel confirmation is actually visible.
- a2a: documented the recall owner-id limitation — `task.owner` is a SHA-256 key prefix
while memory rows are keyed by the DB api-key id, and no hash-to-id lookup exists today,
so recall only resolves under the keyless posture.
* refactor(dashboard): split drawer repeat helpers and test file under the size/complexity gates
---------
Co-authored-by: Markus Hartung <diegosouzapw@users.noreply.github.com >
2026-09-02 20:37:02 -03:00
..
2026-06-01 14:30:17 -03:00
2026-06-01 14:30:17 -03:00
2026-08-22 20:13:10 -03:00
2026-08-30 11:11:46 -03:00
2026-07-13 09:12:40 -03:00
2026-09-02 10:41:00 -03:00
2026-08-14 00:57:33 -03:00
2026-06-01 14:30:17 -03:00
2026-07-17 03:04:00 -03:00
2026-06-01 14:30:17 -03:00
2026-06-01 14:30:17 -03:00
2026-07-29 15:18:55 -03:00
2026-06-22 03:17:02 -03:00
2026-07-04 13:00:30 -03:00
2026-07-29 15:18:55 -03:00
2026-06-01 14:30:17 -03:00
2026-07-29 15:18:55 -03:00
2026-09-02 00:50:04 -03:00
2026-07-04 13:00:30 -03:00
2026-06-21 08:56:51 -03:00
2026-06-01 14:30:17 -03:00
2026-06-01 14:30:17 -03:00
2026-07-17 03:04:00 -03:00
2026-08-25 09:48:12 -03:00
2026-07-29 15:18:55 -03:00
2026-06-20 14:55:24 -03:00
2026-08-23 06:40:37 -03:00
2026-07-29 15:18:55 -03:00
2026-08-26 17:40:37 -03:00
2026-08-07 20:52:03 -03:00
2026-07-29 15:18:55 -03:00
2026-07-02 10:47:13 -03:00
2026-06-22 03:17:02 -03:00
2026-07-29 15:18:55 -03:00
2026-09-02 03:15:31 -03:00
2026-08-11 08:38:55 -03:00
2026-07-02 10:47:13 -03:00
2026-06-17 02:43:21 -03:00
2026-06-17 19:26:32 -03:00
2026-06-14 10:45:22 -03:00
2026-06-14 10:45:22 -03:00
2026-07-02 10:47:13 -03:00
2026-07-29 15:18:55 -03:00
2026-06-27 09:07:12 -03:00
2026-06-26 02:51:06 -03:00
2026-06-01 14:30:17 -03:00
2026-07-29 15:18:55 -03:00
2026-07-29 15:18:55 -03:00
2026-07-29 15:18:55 -03:00
2026-06-01 14:30:17 -03:00
2026-07-29 15:18:55 -03:00
2026-06-19 06:49:01 -03:00
2026-06-19 06:49:01 -03:00
2026-06-23 17:06:18 -03:00
2026-07-02 10:47:13 -03:00
2026-06-29 08:40:06 -03:00
2026-07-29 15:18:55 -03:00
2026-06-14 10:45:22 -03:00
2026-07-29 15:18:55 -03:00
2026-07-29 15:18:55 -03:00
2026-07-29 15:18:55 -03:00
2026-07-29 15:18:55 -03:00
2026-07-29 15:18:55 -03:00
2026-07-29 15:18:55 -03:00
2026-07-29 15:18:55 -03:00
2026-06-23 17:06:18 -03:00
2026-07-29 15:18:55 -03:00
2026-08-20 09:46:13 -03:00
2026-07-29 15:18:55 -03:00
2026-07-02 10:47:13 -03:00
2026-08-25 10:27:32 -03:00
2026-08-26 08:09:34 -03:00
2026-07-17 03:04:00 -03:00
2026-07-17 03:04:00 -03:00
2026-08-12 16:09:34 -03:00
2026-09-02 01:18:47 -03:00
2026-07-29 15:18:55 -03:00
2026-07-02 10:47:13 -03:00
2026-08-26 09:22:11 -03:00
2026-08-28 11:13:47 -03:00
2026-06-27 09:07:12 -03:00
2026-07-29 15:18:55 -03:00
2026-08-14 00:57:33 -03:00
2026-08-30 11:11:46 -03:00
2026-06-01 14:30:17 -03:00
2026-06-01 14:30:17 -03:00
2026-06-15 03:32:11 -03:00
2026-06-01 14:30:17 -03:00
2026-06-15 03:32:11 -03:00
2026-08-09 10:07:30 -03:00
2026-06-14 10:45:22 -03:00
2026-07-29 15:18:55 -03:00
2026-08-25 01:38:59 -03:00
2026-06-27 09:07:12 -03:00
2026-06-14 10:45:22 -03:00
2026-07-29 15:18:55 -03:00
2026-07-29 15:18:55 -03:00
2026-08-07 18:08:08 -03:00
2026-08-10 18:16:34 -03:00
2026-07-29 15:18:55 -03:00
2026-08-25 16:31:11 -03:00
2026-06-27 09:07:12 -03:00
2026-09-02 03:15:42 -03:00
2026-08-12 16:09:34 -03:00
2026-08-21 00:29:01 -03:00
2026-06-07 07:20:02 -03:00
2026-06-05 13:12:52 -03:00
2026-07-17 03:04:00 -03:00
2026-08-25 09:48:12 -03:00
2026-07-17 03:04:00 -03:00
2026-06-23 17:06:18 -03:00
2026-07-29 15:18:55 -03:00
2026-07-17 03:04:00 -03:00
2026-08-12 16:09:34 -03:00
2026-07-04 13:00:30 -03:00
2026-06-28 06:58:29 -03:00
2026-06-27 09:07:12 -03:00
2026-07-29 15:18:55 -03:00
2026-07-29 15:18:55 -03:00
2026-08-13 04:49:28 -03:00
2026-09-02 03:14:46 -03:00
2026-06-19 06:49:01 -03:00
2026-06-27 09:07:12 -03:00
2026-08-27 00:01:12 -03:00
2026-08-12 16:09:34 -03:00
2026-09-02 17:45:50 -03:00
2026-07-13 09:12:40 -03:00
2026-06-01 14:30:17 -03:00
2026-07-17 03:04:00 -03:00
2026-08-10 18:16:08 -03:00
2026-06-01 14:30:17 -03:00
2026-07-02 10:47:13 -03:00
2026-06-01 14:30:17 -03:00
2026-08-26 09:22:26 -03:00
2026-08-15 14:23:29 -03:00
2026-08-10 00:16:06 -03:00
2026-08-10 20:10:07 -03:00
2026-08-29 19:39:37 -03:00
2026-08-19 12:54:05 -03:00
2026-08-21 02:13:07 -03:00
2026-06-27 09:07:12 -03:00
2026-08-20 09:31:12 -03:00
2026-08-28 04:34:51 -03:00
2026-07-29 15:18:55 -03:00
2026-07-29 15:18:55 -03:00
2026-08-11 04:29:43 -03:00
2026-08-06 05:58:58 -03:00
2026-06-22 03:17:02 -03:00
2026-07-29 15:18:55 -03:00
2026-08-11 04:29:43 -03:00
2026-06-05 13:12:52 -03:00
2026-06-19 06:49:01 -03:00
2026-08-24 19:57:12 -03:00
2026-06-22 03:17:02 -03:00
2026-07-29 15:18:55 -03:00
2026-08-18 11:56:00 -03:00
2026-08-18 12:13:48 -03:00
2026-07-29 15:18:55 -03:00
2026-07-29 15:18:55 -03:00
2026-06-23 03:08:29 -03:00
2026-08-21 02:12:56 -03:00
2026-09-01 23:13:47 -03:00
2026-09-02 20:37:02 -03:00
2026-09-01 23:13:47 -03:00
2026-09-02 15:07:58 -03:00
2026-09-02 20:37:02 -03:00
2026-09-01 23:13:47 -03:00
2026-09-01 23:13:47 -03:00
2026-09-02 15:07:58 -03:00
2026-09-01 23:13:47 -03:00
2026-09-01 23:13:47 -03:00
2026-09-01 23:13:47 -03:00
2026-07-13 09:12:40 -03:00
2026-07-29 15:18:55 -03:00
2026-08-20 20:30:40 -03:00
2026-07-29 15:18:55 -03:00
2026-06-01 14:30:17 -03:00
2026-07-17 03:04:00 -03:00
2026-07-29 15:18:55 -03:00
2026-06-01 14:30:17 -03:00
2026-06-01 14:30:17 -03:00
2026-07-13 09:12:40 -03:00
2026-06-01 14:30:17 -03:00
2026-06-01 14:30:17 -03:00
2026-07-29 15:18:55 -03:00
2026-06-01 14:30:17 -03:00
2026-06-01 14:30:17 -03:00
2026-06-01 14:30:17 -03:00
2026-06-27 09:07:12 -03:00
2026-06-01 14:30:17 -03:00
2026-06-27 09:07:12 -03:00
2026-08-28 11:14:12 -03:00
2026-08-26 09:22:22 -03:00
2026-09-02 03:14:41 -03:00
2026-08-07 20:52:35 -03:00
2026-06-22 03:17:02 -03:00
2026-08-12 16:09:34 -03:00
2026-08-28 04:54:00 -03:00
2026-08-25 09:48:12 -03:00
2026-08-25 09:48:12 -03:00
2026-06-17 19:26:32 -03:00
2026-09-02 10:02:03 -03:00
2026-07-29 15:18:55 -03:00
2026-08-22 18:55:23 -03:00
2026-07-29 15:18:55 -03:00
2026-07-29 15:18:55 -03:00
2026-08-25 10:27:32 -03:00
2026-08-25 10:27:32 -03:00
2026-08-23 10:13:31 -03:00
2026-06-29 08:40:06 -03:00
2026-07-04 13:00:30 -03:00
2026-07-29 15:18:55 -03:00
2026-07-29 15:18:55 -03:00
2026-06-01 14:30:17 -03:00
2026-07-13 09:12:40 -03:00
2026-08-12 16:09:34 -03:00
2026-08-12 16:09:34 -03:00
2026-06-01 14:30:17 -03:00
2026-08-09 15:16:55 -03:00
2026-06-29 08:40:06 -03:00
2026-06-17 19:26:32 -03:00
2026-07-29 15:18:55 -03:00
2026-06-12 23:49:22 -03:00
2026-07-29 15:18:55 -03:00
2026-06-29 08:40:06 -03:00
2026-07-17 03:04:00 -03:00
2026-07-29 15:18:55 -03:00
2026-06-01 14:30:17 -03:00
2026-06-01 14:30:17 -03:00
2026-07-29 15:18:55 -03:00
2026-07-17 03:04:00 -03:00
2026-06-01 14:30:17 -03:00
2026-06-01 14:30:17 -03:00
2026-07-17 03:04:00 -03:00
2026-08-12 16:09:34 -03:00
2026-07-29 15:18:55 -03:00
2026-07-29 15:18:55 -03:00
2026-06-01 14:30:17 -03:00
2026-07-17 03:04:00 -03:00
2026-06-19 06:49:01 -03:00
2026-06-27 09:07:12 -03:00
2026-06-27 09:07:12 -03:00
2026-07-29 15:18:55 -03:00
2026-07-29 15:18:55 -03:00
2026-07-17 03:04:00 -03:00
2026-08-21 00:29:01 -03:00
2026-06-28 06:58:29 -03:00
2026-07-17 03:04:00 -03:00
2026-08-30 18:03:47 -03:00
2026-06-01 14:30:17 -03:00
2026-06-25 13:17:40 -03:00
2026-06-01 14:30:17 -03:00
2026-08-30 18:03:47 -03:00
2026-08-12 16:09:34 -03:00
2026-08-30 11:10:22 -03:00
2026-08-14 00:57:33 -03:00
2026-07-17 03:04:00 -03:00
2026-07-17 03:04:00 -03:00
2026-08-30 18:03:47 -03:00
2026-08-30 18:03:47 -03:00
2026-07-17 03:04:00 -03:00
2026-08-30 18:03:47 -03:00
2026-07-17 03:04:00 -03:00
2026-07-17 03:04:00 -03:00
2026-09-02 01:19:49 -03:00
2026-06-27 09:07:12 -03:00
2026-07-29 15:18:55 -03:00
2026-08-11 04:30:10 -03:00
2026-09-02 00:50:04 -03:00
2026-06-14 10:45:22 -03:00
2026-08-28 06:52:46 -03:00
2026-08-09 16:20:54 -03:00