feat(FN-3003): merge fusion/fn-3003
- Unify notification service ownership across the engine: `Notifier` now operates on `ProjectEngine` rather than its own `Core` reference, resolving stale-closure issues during engine lifecycle - Add regression tests in `notifier.test.ts` covering merge dedupe wiring and ownership initialization - Expand `project-engine.test.ts` to cover ownership state transitions and `ProjectEngine`-notifier integration - Fix TypeScript regressions in `ModelOnboardingModal.tsx` and `SettingsModal.tsx` introduced by custom provider types - Document the notification ownership model in `docs/architecture.md` Commits merged: - feat(FN-3003): complete Step 4 — document notification ownership model - fix(FN-3003): resolve dashboard custom provider typecheck regressions - test(FN-3003): complete Step 2 — add merge dedupe wiring regressions - feat(FN-3003): complete Step 1 — unify notification service ownership Files changed: docs/architecture.md | 2 + .../app/components/ModelOnboardingModal.tsx | 13 +++++- .../dashboard/app/components/SettingsModal.tsx | 17 +++++-- packages/engine/src/__tests__/notifier.test.ts | 33 ++++++++++++++ .../engine/src/__tests__/project-engine.test.ts | 53 +++++++++++++++++++--- packages/engine/src/notifier.ts | 3 +- packages/engine/src/project-engine.ts | 12 +++-- 7 files changed, 116 insertions(+), 17 deletions(-) Fusion-Task-Id: FN-3003
This commit is contained in:
@@ -339,6 +339,8 @@ See [Memory Plugin Contract](./memory-plugin-contract.md) for the full plan.
|
||||
- `AgentLogger` (`agent-logger.ts`) — structured per-agent run logging
|
||||
- `RunAudit` (`run-audit.ts`) — mutation audit tracking (DB/git/filesystem)
|
||||
- `Notifier` (`notifier.ts`) — legacy ntfy compatibility shim (`NtfyNotifier`) plus shared ntfy helpers
|
||||
- Runtime ownership: `NtfyNotifier` no longer owns an independent task-lifecycle listener graph; `ProjectEngine` injects the canonical `NotificationService` instance so task lifecycle notifications (`task:moved`, `task:updated`, `task:merged`) are emitted through a single path.
|
||||
- Compatibility scope: `NtfyNotifier` remains responsible for gridlock-only compatibility notifications (`notifyGridlock`) and legacy helper APIs.
|
||||
- `NotificationService` (`notification/notification-service.ts`) — provider lifecycle + event dispatch orchestration
|
||||
- `NotificationProvider` interface (`@fusion/core` `notification/provider.ts`) — pluggable provider contract
|
||||
- Built-in providers: `NtfyNotificationProvider` (`notification/ntfy-provider.ts`), `WebhookNotificationProvider` (`notification/webhook-provider.ts`)
|
||||
|
||||
Reference in New Issue
Block a user