@shepai/cli 1.29.0 → 1.30.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.
Files changed (134) hide show
  1. package/dist/packages/core/src/infrastructure/di/container.d.ts +6 -0
  2. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  3. package/dist/packages/core/src/infrastructure/di/container.js +24 -0
  4. package/dist/packages/core/src/infrastructure/index.d.ts +1 -1
  5. package/dist/packages/core/src/infrastructure/index.d.ts.map +1 -1
  6. package/dist/packages/core/src/infrastructure/index.js +1 -1
  7. package/dist/packages/core/src/infrastructure/services/filesystem/shep-directory.service.d.ts +12 -21
  8. package/dist/packages/core/src/infrastructure/services/filesystem/shep-directory.service.d.ts.map +1 -1
  9. package/dist/packages/core/src/infrastructure/services/filesystem/shep-directory.service.js +27 -31
  10. package/dist/packages/core/src/infrastructure/services/git/worktree.service.js +2 -2
  11. package/dist/packages/core/src/infrastructure/services/ide-launchers/compute-worktree-path.d.ts.map +1 -1
  12. package/dist/packages/core/src/infrastructure/services/ide-launchers/compute-worktree-path.js +2 -3
  13. package/dist/packages/core/src/infrastructure/services/settings.service.d.ts +1 -2
  14. package/dist/packages/core/src/infrastructure/services/settings.service.d.ts.map +1 -1
  15. package/dist/packages/core/src/infrastructure/services/settings.service.js +1 -2
  16. package/dist/src/presentation/cli/commands/feat/new.command.js +2 -2
  17. package/dist/src/presentation/cli/commands/settings/init.command.d.ts.map +1 -1
  18. package/dist/src/presentation/cli/commands/settings/init.command.js +13 -0
  19. package/dist/src/presentation/cli/index.js +2 -6
  20. package/dist/src/presentation/web/app/api/features/[id]/route.d.ts.map +1 -1
  21. package/dist/src/presentation/web/app/api/features/[id]/route.js +3 -2
  22. package/dist/src/presentation/web/app/api/features/create/route.d.ts +1 -1
  23. package/dist/src/presentation/web/app/api/features/create/route.d.ts.map +1 -1
  24. package/dist/src/presentation/web/app/api/features/create/route.js +3 -2
  25. package/dist/src/presentation/web/app/page.d.ts +1 -1
  26. package/dist/src/presentation/web/app/page.d.ts.map +1 -1
  27. package/dist/src/presentation/web/app/page.js +6 -4
  28. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts +1 -1
  29. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
  30. package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.d.ts +1 -0
  31. package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.d.ts.map +1 -1
  32. package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.js +70 -7
  33. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts +1 -1
  34. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
  35. package/dist/src/presentation/web/dev-server.d.ts +1 -2
  36. package/dist/src/presentation/web/dev-server.d.ts.map +1 -1
  37. package/dist/src/presentation/web/dev-server.js +3 -5
  38. package/dist/src/presentation/web/instrumentation.d.ts +13 -0
  39. package/dist/src/presentation/web/instrumentation.d.ts.map +1 -0
  40. package/dist/src/presentation/web/instrumentation.js +14 -0
  41. package/dist/src/presentation/web/lib/server-container.d.ts +21 -0
  42. package/dist/src/presentation/web/lib/server-container.d.ts.map +1 -0
  43. package/dist/src/presentation/web/lib/server-container.js +26 -0
  44. package/dist/src/presentation/web/next.config.d.ts.map +1 -1
  45. package/dist/src/presentation/web/next.config.js +2 -0
  46. package/dist/tsconfig.build.tsbuildinfo +1 -1
  47. package/package.json +1 -1
  48. package/web/.next/BUILD_ID +1 -1
  49. package/web/.next/build-manifest.json +2 -2
  50. package/web/.next/cache/.previewinfo +1 -1
  51. package/web/.next/cache/.rscinfo +1 -1
  52. package/web/.next/cache/.tsbuildinfo +1 -1
  53. package/web/.next/cache/config.json +3 -3
  54. package/web/.next/fallback-build-manifest.json +2 -2
  55. package/web/.next/prerender-manifest.json +3 -3
  56. package/web/.next/required-server-files.js +8 -2
  57. package/web/.next/required-server-files.json +8 -2
  58. package/web/.next/server/app/_global-error.html +2 -2
  59. package/web/.next/server/app/_global-error.rsc +1 -1
  60. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  61. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  62. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  63. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  64. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  65. package/web/.next/server/app/_not-found.html +2 -2
  66. package/web/.next/server/app/_not-found.rsc +1 -1
  67. package/web/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  68. package/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  69. package/web/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  70. package/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  71. package/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  72. package/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  73. package/web/.next/server/app/api/features/[id]/route.js +1 -1
  74. package/web/.next/server/app/api/features/[id]/route.js.nft.json +1 -1
  75. package/web/.next/server/app/api/features/create/route.js +1 -1
  76. package/web/.next/server/app/api/features/create/route.js.nft.json +1 -1
  77. package/web/.next/server/app/api/ide/open/route.js +1 -1
  78. package/web/.next/server/app/api/ide/open/route.js.nft.json +1 -1
  79. package/web/.next/server/app/api/shell/open/route.js +1 -1
  80. package/web/.next/server/app/api/shell/open/route.js.nft.json +1 -1
  81. package/web/.next/server/app/version.html +2 -2
  82. package/web/.next/server/app/version.rsc +1 -1
  83. package/web/.next/server/app/version.segments/_full.segment.rsc +1 -1
  84. package/web/.next/server/app/version.segments/_head.segment.rsc +1 -1
  85. package/web/.next/server/app/version.segments/_index.segment.rsc +1 -1
  86. package/web/.next/server/app/version.segments/_tree.segment.rsc +1 -1
  87. package/web/.next/server/app/version.segments/version/__PAGE__.segment.rsc +1 -1
  88. package/web/.next/server/app/version.segments/version.segment.rsc +1 -1
  89. package/web/.next/server/chunks/[root-of-the-server]__0af905fe._.js +3 -0
  90. package/web/.next/server/chunks/[root-of-the-server]__0af905fe._.js.map +1 -0
  91. package/web/.next/server/chunks/[root-of-the-server]__3d63a020._.js +8 -0
  92. package/web/.next/server/chunks/[root-of-the-server]__3d63a020._.js.map +1 -0
  93. package/web/.next/server/chunks/[root-of-the-server]__72567d8d._.js +3 -0
  94. package/web/.next/server/chunks/[root-of-the-server]__72567d8d._.js.map +1 -0
  95. package/web/.next/server/chunks/[root-of-the-server]__acfd2769._.js +3 -0
  96. package/web/.next/server/chunks/[root-of-the-server]__acfd2769._.js.map +1 -0
  97. package/web/.next/server/chunks/src_presentation_web_instrumentation_ts_2b921ecb._.js +3 -0
  98. package/web/.next/server/chunks/src_presentation_web_instrumentation_ts_2b921ecb._.js.map +1 -0
  99. package/web/.next/server/chunks/ssr/[root-of-the-server]__f12b60be._.js +1 -1
  100. package/web/.next/server/chunks/ssr/_09afa42a._.js.map +1 -1
  101. package/web/.next/server/chunks/ssr/src_presentation_web_ed0934e5._.js +1 -1
  102. package/web/.next/server/chunks/ssr/src_presentation_web_ed0934e5._.js.map +1 -1
  103. package/web/.next/server/edge/chunks/403f9_next_dist_esm_build_templates_edge-wrapper_f6192dd5.js.map +1 -0
  104. package/web/.next/server/edge/chunks/_5e9af917._.js +3 -0
  105. package/web/.next/server/edge/chunks/_5e9af917._.js.map +1 -0
  106. package/web/.next/server/edge/chunks/b35d5_next_dist_esm_build_templates_edge-wrapper_f6192dd5.js +6 -0
  107. package/web/.next/server/instrumentation/middleware-manifest.json +12 -0
  108. package/web/.next/server/instrumentation.js +4 -0
  109. package/web/.next/server/instrumentation.js.map +5 -0
  110. package/web/.next/server/instrumentation.js.nft.json +1 -0
  111. package/web/.next/server/pages/404.html +2 -2
  112. package/web/.next/server/pages/500.html +2 -2
  113. package/web/.next/server/server-reference-manifest.js +1 -1
  114. package/web/.next/server/server-reference-manifest.json +1 -1
  115. package/web/.next/trace +1 -1
  116. package/web/.next/trace-build +1 -1
  117. package/web/package.json +1 -0
  118. package/dist/packages/core/src/infrastructure/di/populate-use-cases-bridge.d.ts +0 -20
  119. package/dist/packages/core/src/infrastructure/di/populate-use-cases-bridge.d.ts.map +0 -1
  120. package/dist/packages/core/src/infrastructure/di/populate-use-cases-bridge.js +0 -31
  121. package/dist/packages/core/src/infrastructure/di/use-cases-bridge.d.ts +0 -49
  122. package/dist/packages/core/src/infrastructure/di/use-cases-bridge.d.ts.map +0 -1
  123. package/dist/packages/core/src/infrastructure/di/use-cases-bridge.js +0 -104
  124. package/web/.next/server/chunks/[root-of-the-server]__0c45619b._.js +0 -8
  125. package/web/.next/server/chunks/[root-of-the-server]__0c45619b._.js.map +0 -1
  126. package/web/.next/server/chunks/[root-of-the-server]__25329f72._.js +0 -3
  127. package/web/.next/server/chunks/[root-of-the-server]__25329f72._.js.map +0 -1
  128. package/web/.next/server/chunks/[root-of-the-server]__61349adc._.js +0 -3
  129. package/web/.next/server/chunks/[root-of-the-server]__61349adc._.js.map +0 -1
  130. package/web/.next/server/chunks/[root-of-the-server]__aa2074ca._.js +0 -3
  131. package/web/.next/server/chunks/[root-of-the-server]__aa2074ca._.js.map +0 -1
  132. /package/web/.next/static/{LkrVnyOa_e5oKSoKOC3uq → C_QsuOPQWDrYc18EOtMAm}/_buildManifest.js +0 -0
  133. /package/web/.next/static/{LkrVnyOa_e5oKSoKOC3uq → C_QsuOPQWDrYc18EOtMAm}/_clientMiddlewareManifest.json +0 -0
  134. /package/web/.next/static/{LkrVnyOa_e5oKSoKOC3uq → C_QsuOPQWDrYc18EOtMAm}/_ssgManifest.js +0 -0
@@ -1,6 +1,6 @@
1
1
  import type { Connection, Edge, NodeChange } from '@xyflow/react';
2
2
  import type { FeatureNodeData } from '../../common/feature-node/index.js';
3
- import type { CreateFeatureInput } from '../../../../../../packages/core/src/infrastructure/di/use-cases-bridge.js';
3
+ import type { CreateFeatureInput } from '../../../../../../packages/core/src/application/use-cases/features/create/types.js';
4
4
  import type { CanvasNodeType } from '../../features/features-canvas/index.js';
5
5
  import { type LayoutDirection } from '../../../lib/layout-with-dagre.js';
6
6
  export interface ControlCenterState {
@@ -1 +1 @@
1
- {"version":3,"file":"use-control-center-state.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/control-center/use-control-center-state.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAC1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEhF,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,YAAY,EAAE,eAAe,GAAG,IAAI,CAAC;IACrC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,EAAE,KAAK,IAAI,CAAC;IAC/D,aAAa,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAChD,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IACzE,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,sBAAsB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,yBAAyB,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,YAAY,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,CAAC;IACnD,yBAAyB,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC9D,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,UAAU,EAAE,OAAO,CAAC;CACrB;AAID,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,cAAc,EAAE,EAC9B,YAAY,EAAE,IAAI,EAAE,GACnB,kBAAkB,CA2UpB"}
1
+ {"version":3,"file":"use-control-center-state.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/control-center/use-control-center-state.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0DAA0D,CAAC;AACnG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEhF,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,YAAY,EAAE,eAAe,GAAG,IAAI,CAAC;IACrC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,EAAE,KAAK,IAAI,CAAC;IAC/D,aAAa,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAChD,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IACzE,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,sBAAsB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,yBAAyB,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,YAAY,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,CAAC;IACnD,yBAAyB,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC9D,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,UAAU,EAAE,OAAO,CAAC;CACrB;AAID,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,cAAc,EAAE,EAC9B,YAAY,EAAE,IAAI,EAAE,GACnB,kBAAkB,CA2UpB"}
@@ -2,8 +2,7 @@
2
2
  * Web UI Development Server
3
3
  *
4
4
  * Initializes the DI container (same as CLI bootstrap) and starts Next.js
5
- * programmatically in dev mode. This ensures the globalThis.__shepUseCases
6
- * bridge is available when running `pnpm dev:web` standalone.
5
+ * programmatically in dev mode.
7
6
  *
8
7
  * Run via: tsx --tsconfig ../../tsconfig.json dev-server.ts
9
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../../../src/presentation/web/dev-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,kBAAkB,CAAC"}
1
+ {"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../../../src/presentation/web/dev-server.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,kBAAkB,CAAC"}
@@ -2,8 +2,7 @@
2
2
  * Web UI Development Server
3
3
  *
4
4
  * Initializes the DI container (same as CLI bootstrap) and starts Next.js
5
- * programmatically in dev mode. This ensures the globalThis.__shepUseCases
6
- * bridge is available when running `pnpm dev:web` standalone.
5
+ * programmatically in dev mode.
7
6
  *
8
7
  * Run via: tsx --tsconfig ../../tsconfig.json dev-server.ts
9
8
  */
@@ -15,7 +14,6 @@ import http from 'node:http';
15
14
  import { initializeContainer, container } from '../../../packages/core/src/infrastructure/di/container.js';
16
15
  import { InitializeSettingsUseCase } from '../../../packages/core/src/application/use-cases/settings/initialize-settings.use-case.js';
17
16
  import { initializeSettings } from '../../../packages/core/src/infrastructure/services/settings.service.js';
18
- import { populateUseCasesBridge } from '../../../packages/core/src/infrastructure/di/populate-use-cases-bridge.js';
19
17
  const DEFAULT_PORT = 3000;
20
18
  async function main() {
21
19
  const port = parseInt(process.env.PORT ?? '', 10) || DEFAULT_PORT;
@@ -23,11 +21,11 @@ async function main() {
23
21
  // Same as CLI bootstrap (src/presentation/cli/index.ts:52-58)
24
22
  try {
25
23
  await initializeContainer();
24
+ // Expose the DI container on globalThis for the web UI's server-side code
25
+ globalThis.__shepContainer = container;
26
26
  const initSettingsUseCase = container.resolve(InitializeSettingsUseCase);
27
27
  const settings = await initSettingsUseCase.execute();
28
28
  initializeSettings(settings);
29
- populateUseCasesBridge(container);
30
- console.log('[dev-server] DI bridge initialized');
31
29
  }
32
30
  catch (error) {
33
31
  console.warn('[dev-server] DI initialization failed — features will be empty:', error);
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Next.js Instrumentation — intentionally empty.
3
+ *
4
+ * The DI container is initialized BEFORE Next.js starts:
5
+ * - Production: CLI bootstrap (src/presentation/cli/index.ts) → `shep ui`
6
+ * - Dev mode: dev-server.ts → `pnpm dev:web`
7
+ * - E2E tests: Playwright webServer command uses dev-server.ts
8
+ *
9
+ * Turbopack cannot bundle tsyringe, reflect-metadata, or better-sqlite3,
10
+ * so container initialization must happen outside the Next.js bundle.
11
+ */
12
+ export declare function register(): void;
13
+ //# sourceMappingURL=instrumentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../../../src/presentation/web/instrumentation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,SAEvB"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Next.js Instrumentation — intentionally empty.
3
+ *
4
+ * The DI container is initialized BEFORE Next.js starts:
5
+ * - Production: CLI bootstrap (src/presentation/cli/index.ts) → `shep ui`
6
+ * - Dev mode: dev-server.ts → `pnpm dev:web`
7
+ * - E2E tests: Playwright webServer command uses dev-server.ts
8
+ *
9
+ * Turbopack cannot bundle tsyringe, reflect-metadata, or better-sqlite3,
10
+ * so container initialization must happen outside the Next.js bundle.
11
+ */
12
+ export function register() {
13
+ // no-op: container already on globalThis.__shepContainer
14
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Server Container Accessor
3
+ *
4
+ * Provides a `resolve()` helper for server components and API routes to
5
+ * obtain DI-managed instances. The tsyringe container is placed on globalThis
6
+ * by the CLI bootstrap (`shep ui`) or the dev-server (`pnpm dev:web`).
7
+ */
8
+ import type { InjectionToken } from 'tsyringe';
9
+ /**
10
+ * Resolve a dependency from the DI container.
11
+ *
12
+ * Usage in server components / API routes:
13
+ * ```ts
14
+ * import { resolve } from './server-container.js';
15
+ * import { ListFeaturesUseCase } from '../../../../packages/core/src/application/use-cases/features/list-features.use-case.js';
16
+ *
17
+ * const features = await resolve(ListFeaturesUseCase).execute();
18
+ * ```
19
+ */
20
+ export declare function resolve<T>(token: InjectionToken<T>): T;
21
+ //# sourceMappingURL=server-container.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-container.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/lib/server-container.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAuB,cAAc,EAAE,MAAM,UAAU,CAAC;AAIpE;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAYtD"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Server Container Accessor
3
+ *
4
+ * Provides a `resolve()` helper for server components and API routes to
5
+ * obtain DI-managed instances. The tsyringe container is placed on globalThis
6
+ * by the CLI bootstrap (`shep ui`) or the dev-server (`pnpm dev:web`).
7
+ */
8
+ const CONTAINER_KEY = '__shepContainer';
9
+ /**
10
+ * Resolve a dependency from the DI container.
11
+ *
12
+ * Usage in server components / API routes:
13
+ * ```ts
14
+ * import { resolve } from './server-container.js';
15
+ * import { ListFeaturesUseCase } from '../../../../packages/core/src/application/use-cases/features/list-features.use-case.js';
16
+ *
17
+ * const features = await resolve(ListFeaturesUseCase).execute();
18
+ * ```
19
+ */
20
+ export function resolve(token) {
21
+ const container = globalThis[CONTAINER_KEY];
22
+ if (!container) {
23
+ throw new Error('DI container not available. Ensure the CLI bootstrap or dev-server has initialized it.');
24
+ }
25
+ return container.resolve(token);
26
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"next.config.d.ts","sourceRoot":"","sources":["../../../../src/presentation/web/next.config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAgCvC,QAAA,MAAM,UAAU,EAAE,UASjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"next.config.d.ts","sourceRoot":"","sources":["../../../../src/presentation/web/next.config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAgCvC,QAAA,MAAM,UAAU,EAAE,UAYjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -28,6 +28,8 @@ function loadDevFallbacks() {
28
28
  }
29
29
  }
30
30
  const nextConfig = {
31
+ // Exclude native/DI packages from Next.js bundling
32
+ serverExternalPackages: ['tsyringe', 'reflect-metadata', 'better-sqlite3'],
31
33
  // Enable typed routes (moved from experimental in Next.js 16)
32
34
  typedRoutes: true,
33
35
  // Configure the output directory