@shepai/cli 1.25.0 → 1.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/packages/core/src/application/ports/output/index.d.ts +1 -1
- package/dist/packages/core/src/application/ports/output/index.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/index.d.ts +1 -0
- package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/notification-service.interface.d.ts +29 -0
- package/dist/packages/core/src/application/ports/output/services/notification-service.interface.d.ts.map +1 -0
- package/dist/packages/core/src/application/ports/output/services/notification-service.interface.js +12 -0
- package/dist/packages/core/src/application/use-cases/features/create/metadata-generator.d.ts +3 -2
- package/dist/packages/core/src/application/use-cases/features/create/metadata-generator.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/create/metadata-generator.js +36 -15
- package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
- package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +13 -0
- package/dist/packages/core/src/domain/generated/output.d.ts +105 -0
- package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
- package/dist/packages/core/src/domain/generated/output.js +15 -0
- package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/container.js +17 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +8 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +22 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.js +14 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +17 -3
- package/dist/packages/core/src/infrastructure/services/ide-launchers/antigravity.launcher.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/ide-launchers/compute-worktree-path.d.ts +17 -0
- package/dist/packages/core/src/infrastructure/services/ide-launchers/compute-worktree-path.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/ide-launchers/compute-worktree-path.js +24 -0
- package/dist/packages/core/src/infrastructure/services/ide-launchers/cursor.launcher.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/ide-launchers/ide-launcher.interface.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/ide-launchers/ide-launcher.registry.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/ide-launchers/launch-ide.d.ts +30 -0
- package/dist/packages/core/src/infrastructure/services/ide-launchers/launch-ide.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/ide-launchers/launch-ide.js +41 -0
- package/dist/packages/core/src/infrastructure/services/ide-launchers/vscode.launcher.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/ide-launchers/windsurf.launcher.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/ide-launchers/zed.launcher.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/notifications/desktop-notifier.d.ts +22 -0
- package/dist/packages/core/src/infrastructure/services/notifications/desktop-notifier.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/notifications/desktop-notifier.js +39 -0
- package/dist/packages/core/src/infrastructure/services/notifications/notification-bus.d.ts +52 -0
- package/dist/packages/core/src/infrastructure/services/notifications/notification-bus.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/notifications/notification-bus.js +64 -0
- package/dist/packages/core/src/infrastructure/services/notifications/notification-watcher.service.d.ts +60 -0
- package/dist/packages/core/src/infrastructure/services/notifications/notification-watcher.service.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/notifications/notification-watcher.service.js +225 -0
- package/dist/packages/core/src/infrastructure/services/notifications/notification.service.d.ts +21 -0
- package/dist/packages/core/src/infrastructure/services/notifications/notification.service.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/notifications/notification.service.js +43 -0
- package/dist/packages/core/src/infrastructure/services/settings.service.d.ts +3 -1
- package/dist/packages/core/src/infrastructure/services/settings.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/settings.service.js +27 -12
- package/dist/src/presentation/cli/commands/agent/show.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/agent/show.command.js +1 -8
- package/dist/src/presentation/cli/commands/feat/show.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/show.command.js +1 -8
- package/dist/src/presentation/cli/commands/ide-open.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/ide-open.command.js +11 -21
- package/dist/src/presentation/cli/commands/ui.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/ui.command.js +8 -0
- package/dist/src/presentation/web/app/api/agent-events/route.d.ts +14 -0
- package/dist/src/presentation/web/app/api/agent-events/route.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/agent-events/route.js +77 -0
- package/dist/src/presentation/web/app/api/ide/open/route.d.ts +9 -0
- package/dist/src/presentation/web/app/api/ide/open/route.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/ide/open/route.js +29 -0
- package/dist/src/presentation/web/app/api/shell/open/route.d.ts +9 -0
- package/dist/src/presentation/web/app/api/shell/open/route.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/shell/open/route.js +51 -0
- package/dist/src/presentation/web/app/api/validate-toolbar-input.d.ts +17 -0
- package/dist/src/presentation/web/app/api/validate-toolbar-input.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/validate-toolbar-input.js +25 -0
- package/dist/src/presentation/web/app/page.d.ts.map +1 -1
- package/dist/src/presentation/web/app/page.js +11 -12
- package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.js +13 -4
- package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.stories.d.ts +8 -0
- package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.stories.js +34 -3
- package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.d.ts +14 -0
- package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.js +58 -0
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +9 -2
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.js +9 -0
- package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node.js +9 -7
- package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.js +18 -0
- package/dist/src/presentation/web/components/common/index.d.ts +1 -0
- package/dist/src/presentation/web/components/common/index.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/index.js +1 -0
- package/dist/src/presentation/web/components/features/control-center/control-center.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/control-center/control-center.stories.js +16 -0
- package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +2 -0
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.js +44 -0
- package/dist/src/presentation/web/components/layouts/app-shell/app-shell.d.ts.map +1 -1
- package/dist/src/presentation/web/components/layouts/app-shell/app-shell.js +3 -0
- package/dist/src/presentation/web/components/ui/button.d.ts +1 -1
- package/dist/src/presentation/web/hooks/use-agent-events.d.ts +12 -0
- package/dist/src/presentation/web/hooks/use-agent-events.d.ts.map +1 -0
- package/dist/src/presentation/web/hooks/use-agent-events.js +58 -0
- package/dist/src/presentation/web/hooks/use-notifications.d.ts +10 -0
- package/dist/src/presentation/web/hooks/use-notifications.d.ts.map +1 -0
- package/dist/src/presentation/web/hooks/use-notifications.js +57 -0
- package/dist/src/presentation/web/hooks/use-notifications.stories.d.ts +6 -0
- package/dist/src/presentation/web/hooks/use-notifications.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/hooks/use-notifications.stories.js +62 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +3 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/app-path-routes-manifest.json +3 -0
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/cache/.previewinfo +1 -1
- package/web/.next/cache/.rscinfo +1 -1
- package/web/.next/cache/.tsbuildinfo +1 -1
- package/web/.next/cache/config.json +3 -3
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +1 -1
- package/web/.next/required-server-files.json +1 -1
- package/web/.next/routes-manifest.json +18 -0
- package/web/.next/server/app/_global-error/page.js +1 -1
- package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page.js +1 -1
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_not-found.html +2 -2
- package/web/.next/server/app/_not-found.rsc +10 -10
- package/web/.next/server/app/_not-found.segments/_full.segment.rsc +10 -10
- package/web/.next/server/app/_not-found.segments/_head.segment.rsc +3 -3
- package/web/.next/server/app/_not-found.segments/_index.segment.rsc +6 -6
- package/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/web/.next/server/app/api/agent-events/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/api/agent-events/route/build-manifest.json +11 -0
- package/web/.next/server/app/api/agent-events/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/api/agent-events/route.js +6 -0
- package/web/.next/server/app/api/agent-events/route.js.map +5 -0
- package/web/.next/server/app/api/agent-events/route.js.nft.json +1 -0
- package/web/.next/server/app/api/agent-events/route_client-reference-manifest.js +2 -0
- package/web/.next/server/app/api/dialog/pick-files/route.js +2 -1
- package/web/.next/server/app/api/dialog/pick-files/route.js.nft.json +1 -1
- package/web/.next/server/app/api/dialog/pick-folder/route.js +2 -1
- package/web/.next/server/app/api/dialog/pick-folder/route.js.nft.json +1 -1
- package/web/.next/server/app/api/features/create/route.js +2 -1
- package/web/.next/server/app/api/features/create/route.js.nft.json +1 -1
- package/web/.next/server/app/api/ide/open/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/api/ide/open/route/build-manifest.json +11 -0
- package/web/.next/server/app/api/ide/open/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/api/ide/open/route.js +8 -0
- package/web/.next/server/app/api/ide/open/route.js.map +5 -0
- package/web/.next/server/app/api/ide/open/route.js.nft.json +1 -0
- package/web/.next/server/app/api/ide/open/route_client-reference-manifest.js +2 -0
- package/web/.next/server/app/api/shell/open/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/api/shell/open/route/build-manifest.json +11 -0
- package/web/.next/server/app/api/shell/open/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/api/shell/open/route.js +7 -0
- package/web/.next/server/app/api/shell/open/route.js.map +5 -0
- package/web/.next/server/app/api/shell/open/route.js.nft.json +1 -0
- package/web/.next/server/app/api/shell/open/route_client-reference-manifest.js +2 -0
- package/web/.next/server/app/page.js +2 -2
- package/web/.next/server/app/page.js.nft.json +1 -1
- package/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page.js +1 -1
- package/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version.html +2 -2
- package/web/.next/server/app/version.rsc +5 -5
- package/web/.next/server/app/version.segments/_full.segment.rsc +5 -5
- package/web/.next/server/app/version.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/version.segments/_index.segment.rsc +4 -4
- package/web/.next/server/app/version.segments/_tree.segment.rsc +2 -2
- package/web/.next/server/app/version.segments/version/__PAGE__.segment.rsc +2 -2
- package/web/.next/server/app/version.segments/version.segment.rsc +1 -1
- package/web/.next/server/app-paths-manifest.json +3 -0
- package/web/.next/server/chunks/403f9_next_567de315._.js +17 -0
- package/web/.next/server/chunks/403f9_next_567de315._.js.map +1 -0
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_12059e3e.js +3 -0
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_12059e3e.js.map +1 -0
- package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_agent-events_route_actions_686edb08.js +3 -0
- package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_agent-events_route_actions_686edb08.js.map +1 -0
- package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_shell_open_route_actions_814dc5b6.js +3 -0
- package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_shell_open_route_actions_814dc5b6.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__57104a4c._.js +7 -0
- package/web/.next/server/chunks/[root-of-the-server]__57104a4c._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__61349adc._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__61349adc._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__aa2074ca._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__aa2074ca._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__ecaf05bc._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__ecaf05bc._.js.map +1 -0
- package/web/.next/server/chunks/b1a17_presentation_web__next-internal_server_app_api_ide_open_route_actions_9fe6e1cd.js +3 -0
- package/web/.next/server/chunks/b1a17_presentation_web__next-internal_server_app_api_ide_open_route_actions_9fe6e1cd.js.map +1 -0
- package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_dbf21e04.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__80e5bed2._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__97377864._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f12b60be._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f285e474._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fa87595c._.js +1 -1
- package/web/.next/server/chunks/ssr/_09afa42a._.js +1 -1
- package/web/.next/server/chunks/ssr/_09afa42a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_884ddade._.js +1 -1
- package/web/.next/server/chunks/ssr/_c5d377cc._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ed0934e5._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ed0934e5._.js.map +1 -1
- package/web/.next/server/pages/404.html +2 -2
- package/web/.next/server/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +1 -1
- package/web/.next/static/chunks/b32b17f102226f32.js +1 -0
- package/web/.next/static/chunks/d8905884f147599c.css +2 -0
- package/web/.next/static/chunks/{1c236dcc303f3033.js → fd961ef835ff4867.js} +2 -2
- package/web/.next/trace +1 -1
- package/web/.next/trace-build +1 -1
- package/web/.next/types/link.d.ts +3 -0
- package/web/.next/types/routes.d.ts +4 -1
- package/web/.next/types/validator.ts +27 -0
- package/web/.next/server/chunks/[root-of-the-server]__ba6c5641._.js +0 -21
- package/web/.next/server/chunks/[root-of-the-server]__ba6c5641._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__757c7912._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__dbd220d2._.js +0 -3
- package/web/.next/static/chunks/74748b4d725c5c74.css +0 -2
- package/web/.next/static/chunks/78ef4acb26e4d6ea.js +0 -1
- /package/web/.next/server/chunks/ssr/{[root-of-the-server]__757c7912._.js.map → [root-of-the-server]__97377864._.js.map} +0 -0
- /package/web/.next/server/chunks/ssr/{[root-of-the-server]__dbd220d2._.js.map → [root-of-the-server]__f285e474._.js.map} +0 -0
- /package/web/.next/static/{-dFLqLT3RMg1ueqbAhsJk → AmQVHj-yhxaqpAg8gC7MH}/_buildManifest.js +0 -0
- /package/web/.next/static/{-dFLqLT3RMg1ueqbAhsJk → AmQVHj-yhxaqpAg8gC7MH}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{-dFLqLT3RMg1ueqbAhsJk → AmQVHj-yhxaqpAg8gC7MH}/_ssgManifest.js +0 -0
package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.js
CHANGED
|
@@ -24,6 +24,8 @@ const singleNode = {
|
|
|
24
24
|
lifecycle: 'requirements',
|
|
25
25
|
state: 'running',
|
|
26
26
|
progress: 45,
|
|
27
|
+
repositoryPath: '/home/user/my-repo',
|
|
28
|
+
branch: 'feat/auth-module',
|
|
27
29
|
},
|
|
28
30
|
};
|
|
29
31
|
const multipleNodes = [
|
|
@@ -38,6 +40,8 @@ const multipleNodes = [
|
|
|
38
40
|
lifecycle: 'implementation',
|
|
39
41
|
state: 'running',
|
|
40
42
|
progress: 65,
|
|
43
|
+
repositoryPath: '/home/user/my-repo',
|
|
44
|
+
branch: 'feat/auth-module',
|
|
41
45
|
},
|
|
42
46
|
},
|
|
43
47
|
{
|
|
@@ -51,6 +55,8 @@ const multipleNodes = [
|
|
|
51
55
|
lifecycle: 'research',
|
|
52
56
|
state: 'action-required',
|
|
53
57
|
progress: 20,
|
|
58
|
+
repositoryPath: '/home/user/my-repo',
|
|
59
|
+
branch: 'feat/user-dashboard',
|
|
54
60
|
},
|
|
55
61
|
},
|
|
56
62
|
{
|
|
@@ -64,6 +70,8 @@ const multipleNodes = [
|
|
|
64
70
|
lifecycle: 'deploy',
|
|
65
71
|
state: 'done',
|
|
66
72
|
progress: 100,
|
|
73
|
+
repositoryPath: '/home/user/my-repo',
|
|
74
|
+
branch: 'feat/api-gateway',
|
|
67
75
|
},
|
|
68
76
|
},
|
|
69
77
|
{
|
|
@@ -77,6 +85,8 @@ const multipleNodes = [
|
|
|
77
85
|
lifecycle: 'review',
|
|
78
86
|
state: 'blocked',
|
|
79
87
|
progress: 40,
|
|
88
|
+
repositoryPath: '/home/user/my-repo',
|
|
89
|
+
branch: 'feat/payment-integration',
|
|
80
90
|
},
|
|
81
91
|
},
|
|
82
92
|
{
|
|
@@ -90,6 +100,8 @@ const multipleNodes = [
|
|
|
90
100
|
lifecycle: 'implementation',
|
|
91
101
|
state: 'error',
|
|
92
102
|
progress: 30,
|
|
103
|
+
repositoryPath: '/home/user/my-repo',
|
|
104
|
+
branch: 'feat/email-service',
|
|
93
105
|
},
|
|
94
106
|
},
|
|
95
107
|
];
|
|
@@ -105,6 +117,8 @@ const connectedNodes = [
|
|
|
105
117
|
lifecycle: 'implementation',
|
|
106
118
|
state: 'running',
|
|
107
119
|
progress: 65,
|
|
120
|
+
repositoryPath: '/home/user/my-repo',
|
|
121
|
+
branch: 'feat/auth-module',
|
|
108
122
|
},
|
|
109
123
|
},
|
|
110
124
|
{
|
|
@@ -119,6 +133,8 @@ const connectedNodes = [
|
|
|
119
133
|
state: 'blocked',
|
|
120
134
|
progress: 10,
|
|
121
135
|
blockedBy: 'Auth Module',
|
|
136
|
+
repositoryPath: '/home/user/my-repo',
|
|
137
|
+
branch: 'feat/user-dashboard',
|
|
122
138
|
},
|
|
123
139
|
},
|
|
124
140
|
{
|
|
@@ -132,6 +148,8 @@ const connectedNodes = [
|
|
|
132
148
|
lifecycle: 'requirements',
|
|
133
149
|
state: 'action-required',
|
|
134
150
|
progress: 5,
|
|
151
|
+
repositoryPath: '/home/user/my-repo',
|
|
152
|
+
branch: 'feat/api-gateway',
|
|
135
153
|
},
|
|
136
154
|
},
|
|
137
155
|
{
|
|
@@ -146,6 +164,8 @@ const connectedNodes = [
|
|
|
146
164
|
state: 'blocked',
|
|
147
165
|
progress: 0,
|
|
148
166
|
blockedBy: 'User Dashboard',
|
|
167
|
+
repositoryPath: '/home/user/my-repo',
|
|
168
|
+
branch: 'feat/admin-panel',
|
|
149
169
|
},
|
|
150
170
|
},
|
|
151
171
|
];
|
|
@@ -220,6 +240,8 @@ const repoFeatureNodes = [
|
|
|
220
240
|
lifecycle: 'implementation',
|
|
221
241
|
state: 'running',
|
|
222
242
|
progress: 65,
|
|
243
|
+
repositoryPath: '/home/user/my-repo',
|
|
244
|
+
branch: 'feat/auth-module',
|
|
223
245
|
},
|
|
224
246
|
},
|
|
225
247
|
{
|
|
@@ -233,6 +255,8 @@ const repoFeatureNodes = [
|
|
|
233
255
|
lifecycle: 'requirements',
|
|
234
256
|
state: 'action-required',
|
|
235
257
|
progress: 20,
|
|
258
|
+
repositoryPath: '/home/user/my-repo',
|
|
259
|
+
branch: 'feat/feature-flow-canvas',
|
|
236
260
|
},
|
|
237
261
|
},
|
|
238
262
|
];
|
|
@@ -274,6 +298,8 @@ const singleRepoSingleFeatureNodes = [
|
|
|
274
298
|
lifecycle: 'implementation',
|
|
275
299
|
state: 'running',
|
|
276
300
|
progress: 65,
|
|
301
|
+
repositoryPath: '/home/user/my-repo',
|
|
302
|
+
branch: 'feat/auth-module',
|
|
277
303
|
},
|
|
278
304
|
},
|
|
279
305
|
];
|
|
@@ -312,6 +338,8 @@ const singleRepoMultiFeatNodes = [
|
|
|
312
338
|
lifecycle: 'implementation',
|
|
313
339
|
state: 'running',
|
|
314
340
|
progress: 40,
|
|
341
|
+
repositoryPath: '/home/user/my-repo',
|
|
342
|
+
branch: 'feat/sso-integration',
|
|
315
343
|
},
|
|
316
344
|
},
|
|
317
345
|
{
|
|
@@ -325,6 +353,8 @@ const singleRepoMultiFeatNodes = [
|
|
|
325
353
|
lifecycle: 'requirements',
|
|
326
354
|
state: 'action-required',
|
|
327
355
|
progress: 10,
|
|
356
|
+
repositoryPath: '/home/user/my-repo',
|
|
357
|
+
branch: 'feat/auth-module',
|
|
328
358
|
},
|
|
329
359
|
},
|
|
330
360
|
{
|
|
@@ -338,6 +368,8 @@ const singleRepoMultiFeatNodes = [
|
|
|
338
368
|
lifecycle: 'research',
|
|
339
369
|
state: 'running',
|
|
340
370
|
progress: 25,
|
|
371
|
+
repositoryPath: '/home/user/my-repo',
|
|
372
|
+
branch: 'feat/api-gateway',
|
|
341
373
|
},
|
|
342
374
|
},
|
|
343
375
|
];
|
|
@@ -384,6 +416,8 @@ const multiRepoNodes = [
|
|
|
384
416
|
lifecycle: 'implementation',
|
|
385
417
|
state: 'running',
|
|
386
418
|
progress: 65,
|
|
419
|
+
repositoryPath: '/home/user/my-repo',
|
|
420
|
+
branch: 'feat/auth-module',
|
|
387
421
|
},
|
|
388
422
|
},
|
|
389
423
|
{
|
|
@@ -397,6 +431,8 @@ const multiRepoNodes = [
|
|
|
397
431
|
lifecycle: 'requirements',
|
|
398
432
|
state: 'action-required',
|
|
399
433
|
progress: 15,
|
|
434
|
+
repositoryPath: '/home/user/my-repo',
|
|
435
|
+
branch: 'feat/dashboard-ui',
|
|
400
436
|
},
|
|
401
437
|
},
|
|
402
438
|
];
|
|
@@ -448,6 +484,8 @@ const mixedRepoFeatureNodesRaw = [
|
|
|
448
484
|
lifecycle: 'implementation',
|
|
449
485
|
state: 'running',
|
|
450
486
|
progress: 65,
|
|
487
|
+
repositoryPath: '/home/user/my-repo',
|
|
488
|
+
branch: 'feat/auth-module',
|
|
451
489
|
},
|
|
452
490
|
},
|
|
453
491
|
{
|
|
@@ -461,6 +499,8 @@ const mixedRepoFeatureNodesRaw = [
|
|
|
461
499
|
lifecycle: 'research',
|
|
462
500
|
state: 'action-required',
|
|
463
501
|
progress: 20,
|
|
502
|
+
repositoryPath: '/home/user/my-repo',
|
|
503
|
+
branch: 'feat/sso-integration',
|
|
464
504
|
},
|
|
465
505
|
},
|
|
466
506
|
{
|
|
@@ -474,6 +514,8 @@ const mixedRepoFeatureNodesRaw = [
|
|
|
474
514
|
lifecycle: 'requirements',
|
|
475
515
|
state: 'running',
|
|
476
516
|
progress: 10,
|
|
517
|
+
repositoryPath: '/home/user/my-repo',
|
|
518
|
+
branch: 'feat/api-gateway',
|
|
477
519
|
},
|
|
478
520
|
},
|
|
479
521
|
{
|
|
@@ -487,6 +529,8 @@ const mixedRepoFeatureNodesRaw = [
|
|
|
487
529
|
lifecycle: 'deploy',
|
|
488
530
|
state: 'done',
|
|
489
531
|
progress: 100,
|
|
532
|
+
repositoryPath: '/home/user/my-repo',
|
|
533
|
+
branch: 'feat/admin-panel',
|
|
490
534
|
},
|
|
491
535
|
},
|
|
492
536
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-shell.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/layouts/app-shell/app-shell.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"app-shell.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/layouts/app-shell/app-shell.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAMpD,UAAU,aAAa;IACrB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,aAAa,2CAqBnD"}
|
|
@@ -4,7 +4,10 @@ import { useCallback } from 'react';
|
|
|
4
4
|
import { SidebarProvider, SidebarInset } from '../../ui/sidebar.js';
|
|
5
5
|
import { AppSidebar } from '../../layouts/app-sidebar/index.js';
|
|
6
6
|
import { ThemeToggle } from '../../common/theme-toggle/index.js';
|
|
7
|
+
import { useNotifications } from '../../../hooks/use-notifications.js';
|
|
7
8
|
export function AppShell({ children }) {
|
|
9
|
+
// Subscribe to agent lifecycle events and dispatch toast/browser notifications
|
|
10
|
+
useNotifications();
|
|
8
11
|
const handleNewFeature = useCallback(() => {
|
|
9
12
|
window.dispatchEvent(new CustomEvent('shep:open-create-drawer'));
|
|
10
13
|
}, []);
|
|
@@ -2,7 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import { type VariantProps } from 'class-variance-authority';
|
|
3
3
|
declare const buttonVariants: (props?: ({
|
|
4
4
|
variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
|
|
5
|
-
size?: "default" | "icon" | "
|
|
5
|
+
size?: "default" | "icon" | "xs" | "sm" | "lg" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
|
|
6
6
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
7
|
declare function Button({ className, variant, size, asChild, ...props }: React.ComponentProps<'button'> & VariantProps<typeof buttonVariants> & {
|
|
8
8
|
asChild?: boolean;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { NotificationEvent } from '../../../../packages/core/src/domain/generated/output.js';
|
|
2
|
+
export type ConnectionStatus = 'connected' | 'connecting' | 'disconnected';
|
|
3
|
+
export interface UseAgentEventsOptions {
|
|
4
|
+
runId?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface UseAgentEventsResult {
|
|
7
|
+
events: NotificationEvent[];
|
|
8
|
+
lastEvent: NotificationEvent | null;
|
|
9
|
+
connectionStatus: ConnectionStatus;
|
|
10
|
+
}
|
|
11
|
+
export declare function useAgentEvents(options?: UseAgentEventsOptions): UseAgentEventsResult;
|
|
12
|
+
//# sourceMappingURL=use-agent-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-agent-events.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/hooks/use-agent-events.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAE9E,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,YAAY,GAAG,cAAc,CAAC;AAE3E,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACpC,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAKD,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,oBAAoB,CAkEpF"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
3
|
+
const BASE_BACKOFF_MS = 1000;
|
|
4
|
+
const MAX_BACKOFF_MS = 30_000;
|
|
5
|
+
export function useAgentEvents(options) {
|
|
6
|
+
const [events, setEvents] = useState([]);
|
|
7
|
+
const [lastEvent, setLastEvent] = useState(null);
|
|
8
|
+
const [connectionStatus, setConnectionStatus] = useState('disconnected');
|
|
9
|
+
const backoffRef = useRef(BASE_BACKOFF_MS);
|
|
10
|
+
const reconnectTimerRef = useRef(null);
|
|
11
|
+
const esRef = useRef(null);
|
|
12
|
+
const runId = options?.runId;
|
|
13
|
+
const connect = useCallback(() => {
|
|
14
|
+
if (typeof window === 'undefined' || typeof EventSource === 'undefined') {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const url = runId
|
|
18
|
+
? `/api/agent-events?runId=${encodeURIComponent(runId)}`
|
|
19
|
+
: '/api/agent-events';
|
|
20
|
+
const es = new EventSource(url);
|
|
21
|
+
esRef.current = es;
|
|
22
|
+
setConnectionStatus('connecting');
|
|
23
|
+
es.onopen = () => {
|
|
24
|
+
setConnectionStatus('connected');
|
|
25
|
+
backoffRef.current = BASE_BACKOFF_MS;
|
|
26
|
+
};
|
|
27
|
+
es.onerror = () => {
|
|
28
|
+
es.close();
|
|
29
|
+
esRef.current = null;
|
|
30
|
+
setConnectionStatus('disconnected');
|
|
31
|
+
const delay = backoffRef.current;
|
|
32
|
+
backoffRef.current = Math.min(delay * 2, MAX_BACKOFF_MS);
|
|
33
|
+
reconnectTimerRef.current = setTimeout(() => {
|
|
34
|
+
reconnectTimerRef.current = null;
|
|
35
|
+
connect();
|
|
36
|
+
}, delay);
|
|
37
|
+
};
|
|
38
|
+
es.addEventListener('notification', ((event) => {
|
|
39
|
+
const parsed = JSON.parse(event.data);
|
|
40
|
+
setEvents((prev) => [...prev, parsed]);
|
|
41
|
+
setLastEvent(parsed);
|
|
42
|
+
}));
|
|
43
|
+
}, [runId]);
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
connect();
|
|
46
|
+
return () => {
|
|
47
|
+
if (reconnectTimerRef.current !== null) {
|
|
48
|
+
clearTimeout(reconnectTimerRef.current);
|
|
49
|
+
reconnectTimerRef.current = null;
|
|
50
|
+
}
|
|
51
|
+
if (esRef.current) {
|
|
52
|
+
esRef.current.close();
|
|
53
|
+
esRef.current = null;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
}, [connect]);
|
|
57
|
+
return { events, lastEvent, connectionStatus };
|
|
58
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface UseNotificationsOptions {
|
|
2
|
+
browserEnabled?: boolean;
|
|
3
|
+
runId?: string;
|
|
4
|
+
}
|
|
5
|
+
export interface UseNotificationsResult {
|
|
6
|
+
requestBrowserPermission: () => Promise<void>;
|
|
7
|
+
browserPermissionState: NotificationPermission;
|
|
8
|
+
}
|
|
9
|
+
export declare function useNotifications(options?: UseNotificationsOptions): UseNotificationsResult;
|
|
10
|
+
//# sourceMappingURL=use-notifications.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-notifications.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/hooks/use-notifications.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,uBAAuB;IACtC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,wBAAwB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,sBAAsB,EAAE,sBAAsB,CAAC;CAChD;AAqBD,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,sBAAsB,CAyC1F"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { toast } from 'sonner';
|
|
4
|
+
import { NotificationSeverity } from '../../../../packages/core/src/domain/generated/output.js';
|
|
5
|
+
import { useAgentEvents } from './use-agent-events.js';
|
|
6
|
+
const SEVERITY_TO_TOAST = {
|
|
7
|
+
[NotificationSeverity.Success]: 'success',
|
|
8
|
+
[NotificationSeverity.Error]: 'error',
|
|
9
|
+
[NotificationSeverity.Warning]: 'warning',
|
|
10
|
+
[NotificationSeverity.Info]: 'info',
|
|
11
|
+
};
|
|
12
|
+
function dispatchToast(event) {
|
|
13
|
+
const method = SEVERITY_TO_TOAST[event.severity] ?? 'info';
|
|
14
|
+
toast[method](event.featureName, { description: event.message });
|
|
15
|
+
}
|
|
16
|
+
function dispatchBrowserNotification(event) {
|
|
17
|
+
if (globalThis.Notification?.permission !== 'granted') {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
new Notification(event.featureName, { body: event.message });
|
|
21
|
+
}
|
|
22
|
+
export function useNotifications(options) {
|
|
23
|
+
const browserEnabled = options?.browserEnabled ?? false;
|
|
24
|
+
const { lastEvent } = useAgentEvents({ runId: options?.runId });
|
|
25
|
+
const [browserPermissionState, setBrowserPermissionState] = useState(() => {
|
|
26
|
+
if (typeof globalThis.Notification === 'undefined')
|
|
27
|
+
return 'default';
|
|
28
|
+
return globalThis.Notification.permission;
|
|
29
|
+
});
|
|
30
|
+
// Track which events we've already dispatched to avoid re-dispatching on re-render
|
|
31
|
+
const processedRef = useRef(new Set());
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
if (!lastEvent)
|
|
34
|
+
return;
|
|
35
|
+
// Create a key for deduplication
|
|
36
|
+
const key = `${lastEvent.agentRunId}-${lastEvent.eventType}-${lastEvent.timestamp}`;
|
|
37
|
+
if (processedRef.current.has(key))
|
|
38
|
+
return;
|
|
39
|
+
processedRef.current.add(key);
|
|
40
|
+
// Always dispatch toast
|
|
41
|
+
dispatchToast(lastEvent);
|
|
42
|
+
// Dispatch browser notification if enabled and permitted
|
|
43
|
+
if (browserEnabled) {
|
|
44
|
+
dispatchBrowserNotification(lastEvent);
|
|
45
|
+
}
|
|
46
|
+
}, [lastEvent, browserEnabled]);
|
|
47
|
+
const requestBrowserPermission = useCallback(async () => {
|
|
48
|
+
if (typeof globalThis.Notification === 'undefined')
|
|
49
|
+
return;
|
|
50
|
+
const result = await globalThis.Notification.requestPermission();
|
|
51
|
+
setBrowserPermissionState(result);
|
|
52
|
+
}, []);
|
|
53
|
+
return {
|
|
54
|
+
requestBrowserPermission,
|
|
55
|
+
browserPermissionState,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-notifications.stories.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/hooks/use-notifications.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAwIvD,QAAA,MAAM,IAAI,EAAE,IAcX,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAEtB,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { toast } from 'sonner';
|
|
4
|
+
import { Toaster } from '../components/ui/sonner.js';
|
|
5
|
+
import { Button } from '../components/ui/button.js';
|
|
6
|
+
function simulateNotification(event) {
|
|
7
|
+
const method = event.severity ?? 'info';
|
|
8
|
+
toast[method](event.featureName, { description: event.message });
|
|
9
|
+
if (globalThis.Notification?.permission === 'granted') {
|
|
10
|
+
new Notification(event.featureName, { body: event.message });
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function NotificationDemo() {
|
|
14
|
+
const [browserPermission, setBrowserPermission] = useState(typeof globalThis.Notification !== 'undefined' ? globalThis.Notification.permission : 'default');
|
|
15
|
+
const requestPermission = async () => {
|
|
16
|
+
if (typeof globalThis.Notification === 'undefined')
|
|
17
|
+
return;
|
|
18
|
+
const result = await globalThis.Notification.requestPermission();
|
|
19
|
+
setBrowserPermission(result);
|
|
20
|
+
};
|
|
21
|
+
return (_jsxs("div", { className: "flex w-[420px] flex-col gap-6", children: [_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx("h3", { className: "text-sm font-semibold", children: "Browser Notification Permission" }), _jsxs("div", { className: "flex items-center gap-3", children: [_jsxs("span", { className: "text-muted-foreground text-sm", children: ["Status: ", _jsx("code", { className: "bg-muted rounded px-1.5 py-0.5", children: browserPermission })] }), _jsx(Button, { size: "sm", variant: "outline", onClick: requestPermission, children: "Request Permission" })] })] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx("h3", { className: "text-sm font-semibold", children: "Simulate Notification Events" }), _jsx("p", { className: "text-muted-foreground text-xs", children: "Click a button to fire a toast and browser notification." }), _jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsx(Button, { size: "sm", variant: "outline", onClick: () => simulateNotification({
|
|
22
|
+
eventType: 'agent_started',
|
|
23
|
+
severity: 'info',
|
|
24
|
+
featureName: 'Auth Module',
|
|
25
|
+
message: 'Agent started running',
|
|
26
|
+
}), children: "Agent Started" }), _jsx(Button, { size: "sm", variant: "outline", onClick: () => simulateNotification({
|
|
27
|
+
eventType: 'phase_completed',
|
|
28
|
+
severity: 'info',
|
|
29
|
+
featureName: 'Auth Module',
|
|
30
|
+
message: 'Completed analyze phase',
|
|
31
|
+
phaseName: 'analyze',
|
|
32
|
+
}), children: "Phase Completed" }), _jsx(Button, { size: "sm", variant: "secondary", onClick: () => simulateNotification({
|
|
33
|
+
eventType: 'waiting_approval',
|
|
34
|
+
severity: 'warning',
|
|
35
|
+
featureName: 'Auth Module',
|
|
36
|
+
message: 'Waiting for user approval',
|
|
37
|
+
}), children: "Waiting Approval" }), _jsx(Button, { size: "sm", onClick: () => simulateNotification({
|
|
38
|
+
eventType: 'agent_completed',
|
|
39
|
+
severity: 'success',
|
|
40
|
+
featureName: 'Auth Module',
|
|
41
|
+
message: 'Agent completed successfully',
|
|
42
|
+
}), children: "Agent Completed" }), _jsx(Button, { size: "sm", variant: "destructive", onClick: () => simulateNotification({
|
|
43
|
+
eventType: 'agent_failed',
|
|
44
|
+
severity: 'error',
|
|
45
|
+
featureName: 'Auth Module',
|
|
46
|
+
message: 'Agent failed: token refresh error',
|
|
47
|
+
}), children: "Agent Failed" })] })] })] }));
|
|
48
|
+
}
|
|
49
|
+
const meta = {
|
|
50
|
+
title: 'Hooks/useNotifications',
|
|
51
|
+
parameters: {
|
|
52
|
+
layout: 'centered',
|
|
53
|
+
},
|
|
54
|
+
tags: ['autodocs'],
|
|
55
|
+
decorators: [
|
|
56
|
+
(Story) => (_jsxs(_Fragment, { children: [_jsx(Story, {}), _jsx(Toaster, {})] })),
|
|
57
|
+
],
|
|
58
|
+
};
|
|
59
|
+
export default meta;
|
|
60
|
+
export const Default = {
|
|
61
|
+
render: () => _jsx(NotificationDemo, {}),
|
|
62
|
+
};
|