Fusion
fd7278044c
feat(FN-2931): merge fusion/fn-2931
- **New node routing policy engine** (`packages/engine/src/node-routing-policy.ts`, `scheduler.ts`): introduces configurable routing rules for assigning tasks to specific nodes, with a new test suite covering policy matching, node priority, and capacity constraints
- **Agent run route decoupling** (`register-agent-runtime-routes.ts`): routes now respond before heartbeat side effects complete, improving latency and reducing 503s under load; tests updated to handle async state transitions
- **Scheduler node routing** (`scheduler-node-routing.test.ts`): 131-line test expansion covering task-to-node assignment with routing policies
- **Dashboard UI polish** (AgentsView, QuickChatFAB, SettingsModal): CSS refinements and component adjustments from FN-2903
- **Reviewer and triage refinements** (`reviewer.ts`, `triage.ts`): logic improvements for async execution paths
- **Remote access adapter** (`provider-adapters.ts`): extended from FN-2950
- **Settings memory routes** (`register-settings-memory-routes.ts`): from FN-2925
- **Docs** (`architecture.md`, `settings-reference.md`): updated for new routing policy and settings features
Commits merged:
- test(FN-2931): complete Step 2 — update async state route assertions
- feat(FN-2931): complete Step 1 — respond before heartbeat side effects
- feat(FN-2925): merge fusion/fn-2925
- feat(FN-2903): merge fusion/fn-2903
- feat(FN-2950): merge fusion/fn-2950
Files changed:
docs/architecture.md | 19 +--
docs/settings-reference.md | 2 +-
packages/dashboard/app/components/AgentsView.css | 20 +++-
packages/dashboard/app/components/AgentsView.tsx | 11 +-
packages/dashboard/app/components/QuickChatFAB.css | 32 ++++-
.../dashboard/app/components/SettingsModal.css | 21 ++++
.../dashboard/app/components/SettingsModal.tsx | 58 ++++++++-
.../app/components/__tests__/AgentsView.test.tsx | 37 ++++++
.../app/components/__tests__/QuickChatFAB.test.tsx | 18 +--
.../components/__tests__/SettingsModal.test.tsx | 2 +-
packages/dashboard/package.json | 2 +
.../src/__tests__/routes-agent-runs.test.ts | 13 +-
.../src/routes/register-agent-runtime-routes.ts | 49 ++++----
.../src/routes/register-settings-memory-routes.ts | 8 +-
.../src/__tests__/node-routing-policy.test.ts | 78 ++++++++++++
packages/engine/src/__tests__/reviewer.test.ts | 19 ++-
.../src/__tests__/scheduler-node-routing.test.ts | 131 ++++++++++++++++++++-
packages/engine/src/__tests__/triage.test.ts | 16 +--
packages/engine/src/node-routing-policy.ts | 45 +++++++
.../engine/src/remote-access/provider-adapters.ts | 14 ++-
packages/engine/src/reviewer.ts | 33 ++++--
packages/engine/src/scheduler.ts | 44 ++++++-
packages/engine/src/triage.ts | 48 ++++----
pnpm-lock.yaml | 113 ++++++++++++++++++
24 files changed, 721 insertions(+), 112 deletions(-)
Fusion-Task-Id: FN-2931
2026-04-29 12:56:56 -07:00
..
2026-04-24 19:39:20 -07:00
2026-04-24 19:39:20 -07:00
2026-04-24 19:39:20 -07:00
2026-04-24 19:39:20 -07:00
2026-04-28 14:25:55 -07:00
2026-04-24 19:39:20 -07:00
2026-04-26 11:49:43 -07:00
2026-04-26 06:35:46 -07:00
2026-03-31 19:29:47 -07:00
2026-04-22 18:50:09 -07:00
2026-04-28 20:07:54 -07:00
2026-04-22 02:16:40 -07:00
2026-04-20 08:30:24 -07:00
2026-04-18 07:36:57 -07:00
2026-04-24 19:39:20 -07:00
2026-04-29 07:10:52 -07:00
2026-04-12 12:13:06 -07:00
2026-04-20 12:59:58 -07:00
2026-04-19 20:48:14 -07:00
2026-04-19 20:48:14 -07:00
2026-04-20 15:37:32 -07:00
2026-04-25 10:50:32 -07:00
2026-04-24 14:32:16 +02:00
2026-04-23 23:11:58 -07:00
2026-04-24 11:06:20 -07:00
2026-04-26 13:00:56 -07:00
2026-04-22 13:46:53 -07:00
2026-04-26 13:00:56 -07:00
2026-04-22 13:46:53 -07:00
2026-04-20 22:45:26 -07:00
2026-04-24 09:38:16 -07:00
2026-04-24 08:55:02 -07:00
2026-04-26 18:11:09 -07:00
2026-04-02 09:10:42 -07:00
2026-03-31 17:03:23 -07:00
2026-04-26 18:11:09 -07:00
2026-04-08 00:01:09 -07:00
2026-04-19 20:48:14 -07:00
2026-04-23 10:50:44 -07:00
2026-04-24 08:54:25 -07:00
2026-04-28 14:25:55 -07:00
2026-04-24 21:08:35 -07:00
2026-04-28 14:25:55 -07:00
2026-04-08 08:10:17 -07:00
2026-04-13 18:58:18 -07:00
2026-04-24 08:55:02 -07:00
2026-04-24 19:39:20 -07:00
2026-04-28 14:25:56 -07:00
2026-04-24 19:39:20 -07:00
2026-04-24 19:39:20 -07:00
2026-04-19 20:48:14 -07:00
2026-04-28 18:21:17 -07:00
2026-04-12 21:58:19 -07:00
2026-04-25 19:56:27 -07:00
2026-04-24 19:39:20 -07:00
2026-04-26 11:35:44 -07:00
2026-04-26 11:49:43 -07:00
2026-04-28 14:25:56 -07:00
2026-04-26 11:49:43 -07:00
2026-04-24 19:39:20 -07:00
2026-04-24 19:39:20 -07:00
2026-04-10 08:01:03 -07:00
2026-04-19 20:48:14 -07:00
2026-04-23 12:55:45 -07:00
2026-04-10 08:01:03 -07:00
2026-04-10 08:01:03 -07:00
2026-04-10 08:01:03 -07:00
2026-04-10 08:01:03 -07:00
2026-04-29 12:56:56 -07:00
2026-04-14 13:15:04 -07:00
2026-04-19 20:48:13 -07:00
2026-04-28 18:21:17 -07:00
2026-04-29 10:29:13 -07:00
2026-04-28 18:21:17 -07:00
2026-04-24 08:54:25 -07:00
2026-04-17 02:19:54 -07:00
2026-04-10 08:01:03 -07:00
2026-04-23 13:48:45 -07:00
2026-04-24 08:54:25 -07:00
2026-04-28 14:25:56 -07:00
2026-04-28 18:21:17 -07:00
2026-04-25 14:19:28 -07:00
2026-04-29 11:53:35 -07:00
2026-04-24 19:39:20 -07:00
2026-04-24 19:39:20 -07:00
2026-04-23 10:50:44 -07:00
2026-04-27 03:21:59 -07:00
2026-04-29 07:10:52 -07:00
2026-04-26 20:56:31 -07:00
2026-04-19 20:48:14 -07:00
2026-04-19 20:48:14 -07:00
2026-04-26 20:56:31 -07:00
2026-04-19 20:48:14 -07:00
2026-04-29 07:58:58 -07:00
2026-04-29 07:10:52 -07:00
2026-04-29 07:35:23 -07:00
2026-04-08 08:10:17 -07:00
2026-04-08 06:02:28 -07:00
2026-04-27 03:21:59 -07:00
2026-04-08 08:10:17 -07:00
2026-04-28 14:25:55 -07:00
2026-04-24 19:39:20 -07:00
2026-04-26 13:00:56 -07:00
2026-04-26 13:55:25 -07:00
2026-04-27 02:19:44 -07:00
2026-04-29 07:10:52 -07:00
2026-04-29 07:35:23 -07:00
2026-04-23 10:50:44 -07:00