@shepai/cli 1.104.1-pr299.7995c20 → 1.104.1-pr299.a38e55b

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 (136) hide show
  1. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  2. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +2 -2
  3. package/dist/packages/core/src/application/use-cases/repositories/add-repository.use-case.d.ts.map +1 -1
  4. package/dist/packages/core/src/application/use-cases/repositories/add-repository.use-case.js +6 -2
  5. package/dist/packages/core/src/infrastructure/repositories/sqlite-feature.repository.js +4 -4
  6. package/dist/packages/core/src/infrastructure/repositories/sqlite-repository.repository.js +4 -4
  7. package/dist/src/presentation/web/app/build-graph-nodes.d.ts.map +1 -1
  8. package/dist/src/presentation/web/app/build-graph-nodes.js +8 -5
  9. package/dist/src/presentation/web/lib/derive-graph.d.ts.map +1 -1
  10. package/dist/src/presentation/web/lib/derive-graph.js +4 -2
  11. package/dist/tsconfig.build.tsbuildinfo +1 -1
  12. package/package.json +1 -1
  13. package/web/.next/BUILD_ID +1 -1
  14. package/web/.next/build-manifest.json +2 -2
  15. package/web/.next/fallback-build-manifest.json +2 -2
  16. package/web/.next/prerender-manifest.json +3 -3
  17. package/web/.next/required-server-files.js +1 -1
  18. package/web/.next/required-server-files.json +1 -1
  19. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +20 -20
  20. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  21. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  22. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +25 -25
  23. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  24. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  25. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +25 -25
  26. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  27. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  28. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +18 -18
  29. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  30. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  31. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +20 -20
  32. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  33. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  34. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +25 -25
  35. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  36. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  37. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +25 -25
  38. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  39. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  40. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +18 -18
  41. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  42. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  43. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +18 -18
  44. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  45. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  46. package/web/.next/server/app/_global-error.html +2 -2
  47. package/web/.next/server/app/_global-error.rsc +1 -1
  48. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  49. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  50. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  51. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  52. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  53. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  54. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  55. package/web/.next/server/app/settings/page/server-reference-manifest.json +5 -5
  56. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  57. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  58. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  59. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  60. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  61. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  62. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  63. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  64. package/web/.next/server/chunks/[root-of-the-server]__f47bb8a5._.js +1 -1
  65. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  66. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  67. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_0a7546ed.js +1 -1
  68. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_0a7546ed.js.map +1 -1
  69. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_978cbb4c.js +1 -1
  70. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_978cbb4c.js.map +1 -1
  71. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js +1 -1
  72. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js.map +1 -1
  73. package/web/.next/server/chunks/ssr/[root-of-the-server]__24dd0927._.js +2 -2
  74. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  75. package/web/.next/server/chunks/ssr/[root-of-the-server]__51fc98b0._.js +1 -1
  76. package/web/.next/server/chunks/ssr/[root-of-the-server]__51fc98b0._.js.map +1 -1
  77. package/web/.next/server/chunks/ssr/[root-of-the-server]__57f37786._.js +1 -1
  78. package/web/.next/server/chunks/ssr/[root-of-the-server]__57f37786._.js.map +1 -1
  79. package/web/.next/server/chunks/ssr/[root-of-the-server]__5d87af2e._.js +1 -1
  80. package/web/.next/server/chunks/ssr/[root-of-the-server]__708dcad1._.js +1 -1
  81. package/web/.next/server/chunks/ssr/[root-of-the-server]__708dcad1._.js.map +1 -1
  82. package/web/.next/server/chunks/ssr/[root-of-the-server]__845a9d2a._.js +1 -1
  83. package/web/.next/server/chunks/ssr/[root-of-the-server]__845a9d2a._.js.map +1 -1
  84. package/web/.next/server/chunks/ssr/[root-of-the-server]__89e8a5cc._.js +2 -2
  85. package/web/.next/server/chunks/ssr/[root-of-the-server]__8e002910._.js +1 -1
  86. package/web/.next/server/chunks/ssr/[root-of-the-server]__8e002910._.js.map +1 -1
  87. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
  88. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  89. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js +1 -1
  90. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js.map +1 -1
  91. package/web/.next/server/chunks/ssr/_135edb9c._.js +1 -1
  92. package/web/.next/server/chunks/ssr/_135edb9c._.js.map +1 -1
  93. package/web/.next/server/chunks/ssr/{_45062df2._.js → _7707524a._.js} +2 -2
  94. package/web/.next/server/chunks/ssr/{_45062df2._.js.map → _7707524a._.js.map} +1 -1
  95. package/web/.next/server/chunks/ssr/{_39d8ba62._.js → _7f7ccdd5._.js} +2 -2
  96. package/web/.next/server/chunks/ssr/{_39d8ba62._.js.map → _7f7ccdd5._.js.map} +1 -1
  97. package/web/.next/server/chunks/ssr/_8dacd1e7._.js +1 -1
  98. package/web/.next/server/chunks/ssr/_8dacd1e7._.js.map +1 -1
  99. package/web/.next/server/chunks/ssr/_cc77a143._.js +1 -1
  100. package/web/.next/server/chunks/ssr/_cc77a143._.js.map +1 -1
  101. package/web/.next/server/chunks/ssr/{_daf25a89._.js → _cfc0ef91._.js} +2 -2
  102. package/web/.next/server/chunks/ssr/{_daf25a89._.js.map → _cfc0ef91._.js.map} +1 -1
  103. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  104. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  105. package/web/.next/server/chunks/ssr/src_presentation_web_7275ce5d._.js +2 -2
  106. package/web/.next/server/chunks/ssr/src_presentation_web_7275ce5d._.js.map +1 -1
  107. package/web/.next/server/chunks/ssr/src_presentation_web_758dfa10._.js +2 -2
  108. package/web/.next/server/chunks/ssr/src_presentation_web_758dfa10._.js.map +1 -1
  109. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_84803221.js +1 -1
  110. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_84803221.js.map +1 -1
  111. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
  112. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
  113. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
  114. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
  115. package/web/.next/server/chunks/ssr/src_presentation_web_app_(dashboard)_get-graph-data_ts_b018483e._.js +1 -1
  116. package/web/.next/server/chunks/ssr/src_presentation_web_app_(dashboard)_get-graph-data_ts_b018483e._.js.map +1 -1
  117. package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js +1 -1
  118. package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js +1 -1
  119. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  120. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  121. package/web/.next/server/pages/500.html +2 -2
  122. package/web/.next/server/server-reference-manifest.js +1 -1
  123. package/web/.next/server/server-reference-manifest.json +30 -30
  124. package/web/.next/static/chunks/{de817418f0a57e5d.js → 59298ebd0507163d.js} +2 -2
  125. package/web/.next/static/chunks/{3855443e5560c374.js → 71e88022be966501.js} +1 -1
  126. package/web/.next/static/chunks/{424d86b135d31d1d.js → 828d913baac44b82.js} +1 -1
  127. package/web/.next/static/chunks/{7a474f7a9dc078db.js → 8547d7d7b5f40283.js} +1 -1
  128. package/web/.next/static/chunks/{b49a3d682f07e371.js → a7446b1b490fd8c0.js} +1 -1
  129. package/web/.next/static/chunks/{b2a03464f5d03077.js → a9fc1ee7282686f5.js} +1 -1
  130. package/web/.next/static/chunks/{28c1c2db1f80cd9c.js → b6fb4d5449269dfc.js} +1 -1
  131. package/web/.next/static/chunks/{dc1b65cfec2c5b9b.js → c7bc9c4e43faa4e3.js} +1 -1
  132. package/web/.next/static/chunks/{92c6f1fa61b38fe8.js → e63c5ad81fd3f0cf.js} +1 -1
  133. package/web/.next/static/chunks/{727189548c5c7efc.js → eca0c53562427042.js} +2 -2
  134. /package/web/.next/static/{veKtxy9O3JKS2cKcKRi-P → ilo_SDPYkC4anXF5lwI9E}/_buildManifest.js +0 -0
  135. /package/web/.next/static/{veKtxy9O3JKS2cKcKRi-P → ilo_SDPYkC4anXF5lwI9E}/_clientMiddlewareManifest.json +0 -0
  136. /package/web/.next/static/{veKtxy9O3JKS2cKcKRi-P → ilo_SDPYkC4anXF5lwI9E}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"create-feature.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/use-cases/features/create/create-feature.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAMtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oEAAoE,CAAC;AAC7G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AACrG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iEAAiE,CAAC;AACnH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gEAAgE,CAAC;AAC1G,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8DAA8D,CAAC;AAC5G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uEAAuE,CAAC;AACnH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4DAA4D,CAAC;AAGhG,OAAO,EAAE,wBAAwB,EAAE,MAAM,mEAAmE,CAAC;AAC7G,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE9F,qBACa,oBAAoB;IAG7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAlBjB,WAAW,EAAE,kBAAkB,EAE/B,eAAe,EAAE,gBAAgB,EAEjC,YAAY,EAAE,2BAA2B,EAEzC,aAAa,EAAE,mBAAmB,EAElC,eAAe,EAAE,uBAAuB,EAExC,iBAAiB,EAAE,iBAAiB,EAEpC,YAAY,EAAE,YAAY,EAE1B,cAAc,EAAE,qBAAqB,EAErC,YAAY,EAAE,aAAa,EAE3B,iBAAiB,EAAE,wBAAwB;IAG9D;;;OAGG;IACG,OAAO,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAMtE;;;;OAIG;IACG,YAAY,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAwH1E;;;OAGG;IACG,kBAAkB,CACtB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,kBAAkB,EACzB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,CAAC;CAoG1D"}
1
+ {"version":3,"file":"create-feature.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/use-cases/features/create/create-feature.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAMtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oEAAoE,CAAC;AAC7G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AACrG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iEAAiE,CAAC;AACnH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gEAAgE,CAAC;AAC1G,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8DAA8D,CAAC;AAC5G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uEAAuE,CAAC;AACnH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4DAA4D,CAAC;AAGhG,OAAO,EAAE,wBAAwB,EAAE,MAAM,mEAAmE,CAAC;AAC7G,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE9F,qBACa,oBAAoB;IAG7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAlBjB,WAAW,EAAE,kBAAkB,EAE/B,eAAe,EAAE,gBAAgB,EAEjC,YAAY,EAAE,2BAA2B,EAEzC,aAAa,EAAE,mBAAmB,EAElC,eAAe,EAAE,uBAAuB,EAExC,iBAAiB,EAAE,iBAAiB,EAEpC,YAAY,EAAE,YAAY,EAE1B,cAAc,EAAE,qBAAqB,EAErC,YAAY,EAAE,aAAa,EAE3B,iBAAiB,EAAE,wBAAwB;IAG9D;;;OAGG;IACG,OAAO,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAMtE;;;;OAIG;IACG,YAAY,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAyH1E;;;OAGG;IACG,kBAAkB,CACtB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,kBAAkB,EACzB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,CAAC;CAoG1D"}
@@ -77,7 +77,7 @@ let CreateFeatureUseCase = class CreateFeatureUseCase {
77
77
  ? SdlcLifecycle.Implementation
78
78
  : SdlcLifecycle.Requirements;
79
79
  let shouldSpawn = true;
80
- let effectiveRepoPath = input.repositoryPath;
80
+ let effectiveRepoPath = input.repositoryPath.replace(/\\/g, '/');
81
81
  if (input.parentId) {
82
82
  const parent = await this.featureRepo.findById(input.parentId);
83
83
  if (!parent) {
@@ -106,7 +106,7 @@ let CreateFeatureUseCase = class CreateFeatureUseCase {
106
106
  }
107
107
  }
108
108
  // Resolve or create repository entity for this path
109
- const normalizedPath = effectiveRepoPath.replace(/\/+$/, '') || effectiveRepoPath;
109
+ const normalizedPath = effectiveRepoPath.replace(/\\/g, '/').replace(/\/+$/, '') || effectiveRepoPath;
110
110
  let repository = await this.repositoryRepo.findByPath(normalizedPath);
111
111
  const now = new Date();
112
112
  if (!repository) {
@@ -1 +1 @@
1
- {"version":3,"file":"add-repository.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/repositories/add-repository.use-case.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oEAAoE,CAAC;AAEhH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAUD,qBACa,oBAAoB;IAG7B,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAAd,cAAc,EAAE,qBAAqB;IAGlD,OAAO,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC;CA8B9D"}
1
+ {"version":3,"file":"add-repository.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/repositories/add-repository.use-case.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oEAAoE,CAAC;AAEhH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAcD,qBACa,oBAAoB;IAG7B,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAAd,cAAc,EAAE,qBAAqB;IAGlD,OAAO,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC;CA8B9D"}
@@ -19,11 +19,15 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
19
19
  import { injectable, inject } from 'tsyringe';
20
20
  import { randomUUID } from 'node:crypto';
21
21
  /**
22
- * Normalizes a path by removing trailing slashes.
22
+ * Normalizes a path: backslashes → forward slashes, trailing slashes removed.
23
+ * On Windows, the folder picker returns backslashes (C:\Users\...) while
24
+ * the CLI uses forward slashes (C:/Users/...). Normalize to forward slashes
25
+ * so the same directory is never stored under two different path strings.
23
26
  */
24
27
  function normalizePath(p) {
28
+ const forwardSlash = p.replace(/\\/g, '/');
25
29
  // Remove trailing slashes but keep root "/"
26
- return p.length > 1 ? p.replace(/\/+$/, '') : p;
30
+ return forwardSlash.length > 1 ? forwardSlash.replace(/\/+$/, '') : forwardSlash;
27
31
  }
28
32
  let AddRepositoryUseCase = class AddRepositoryUseCase {
29
33
  repositoryRepo;
@@ -71,8 +71,8 @@ let SQLiteFeatureRepository = class SQLiteFeatureRepository {
71
71
  return fromDatabase(rows[0]);
72
72
  }
73
73
  async findBySlug(slug, repositoryPath) {
74
- const stmt = this.db.prepare('SELECT * FROM features WHERE slug = ? AND repository_path = ? AND deleted_at IS NULL');
75
- const row = stmt.get(slug, repositoryPath);
74
+ const stmt = this.db.prepare("SELECT * FROM features WHERE slug = ? AND REPLACE(repository_path, '\\', '/') = ? AND deleted_at IS NULL");
75
+ const row = stmt.get(slug, repositoryPath.replace(/\\/g, '/'));
76
76
  if (!row) {
77
77
  return null;
78
78
  }
@@ -85,8 +85,8 @@ let SQLiteFeatureRepository = class SQLiteFeatureRepository {
85
85
  conditions.push('deleted_at IS NULL');
86
86
  }
87
87
  if (filters?.repositoryPath) {
88
- conditions.push('repository_path = ?');
89
- params.push(filters.repositoryPath);
88
+ conditions.push("REPLACE(repository_path, '\\', '/') = ?");
89
+ params.push(filters.repositoryPath.replace(/\\/g, '/'));
90
90
  }
91
91
  if (filters?.lifecycle) {
92
92
  conditions.push('lifecycle = ?');
@@ -36,8 +36,8 @@ let SQLiteRepositoryRepository = class SQLiteRepositoryRepository {
36
36
  return row ? fromDatabase(row) : null;
37
37
  }
38
38
  async findByPath(path) {
39
- const stmt = this.db.prepare('SELECT * FROM repositories WHERE path = ? AND deleted_at IS NULL');
40
- const row = stmt.get(path);
39
+ const stmt = this.db.prepare("SELECT * FROM repositories WHERE REPLACE(path, '\\', '/') = ? AND deleted_at IS NULL");
40
+ const row = stmt.get(path.replace(/\\/g, '/'));
41
41
  return row ? fromDatabase(row) : null;
42
42
  }
43
43
  async list() {
@@ -50,8 +50,8 @@ let SQLiteRepositoryRepository = class SQLiteRepositoryRepository {
50
50
  stmt.run(id);
51
51
  }
52
52
  async findByPathIncludingDeleted(path) {
53
- const stmt = this.db.prepare('SELECT * FROM repositories WHERE path = ?');
54
- const row = stmt.get(path);
53
+ const stmt = this.db.prepare("SELECT * FROM repositories WHERE REPLACE(path, '\\', '/') = ?");
54
+ const row = stmt.get(path.replace(/\\/g, '/'));
55
55
  return row ? fromDatabase(row) : null;
56
56
  }
57
57
  async softDelete(id) {
@@ -1 +1 @@
1
- {"version":3,"file":"build-graph-nodes.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/app/build-graph-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAM1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,UAAU,EAAE,EAC1B,gBAAgB,EAAE,cAAc,EAAE,GACjC;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAuE5C"}
1
+ {"version":3,"file":"build-graph-nodes.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/app/build-graph-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAM1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,UAAU,EAAE,EAC1B,gBAAgB,EAAE,cAAc,EAAE,GACjC;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CA2E5C"}
@@ -8,10 +8,12 @@ import { deriveNodeState, deriveProgress, deriveLifecycle, } from '../components
8
8
  * renders empty when features exist but their repository rows are missing.
9
9
  */
10
10
  export function buildGraphNodes(repositories, featuresWithRuns) {
11
- // Group features by repository path
11
+ // Normalize path separators so Windows backslash paths match forward-slash paths
12
+ const normalizePath = (p) => p.replace(/\\/g, '/');
13
+ // Group features by normalized repository path
12
14
  const featuresByRepo = {};
13
15
  featuresWithRuns.forEach((entry) => {
14
- const repoKey = entry.feature.repositoryPath;
16
+ const repoKey = normalizePath(entry.feature.repositoryPath);
15
17
  if (!featuresByRepo[repoKey]) {
16
18
  featuresByRepo[repoKey] = [];
17
19
  }
@@ -23,7 +25,8 @@ export function buildGraphNodes(repositories, featuresWithRuns) {
23
25
  const coveredPaths = new Set();
24
26
  // First, add nodes for all persisted repositories (including those without features)
25
27
  for (const repo of repositories) {
26
- coveredPaths.add(repo.path);
28
+ const normalizedRepoPath = normalizePath(repo.path);
29
+ coveredPaths.add(normalizedRepoPath);
27
30
  const repoNodeId = `repo-${repo.id}`;
28
31
  nodes.push({
29
32
  id: repoNodeId,
@@ -31,12 +34,12 @@ export function buildGraphNodes(repositories, featuresWithRuns) {
31
34
  position: { x: 0, y: 0 },
32
35
  data: {
33
36
  name: repo.name,
34
- repositoryPath: repo.path,
37
+ repositoryPath: normalizedRepoPath,
35
38
  id: repo.id,
36
39
  createdAt: repo.createdAt instanceof Date ? repo.createdAt.getTime() : Number(repo.createdAt),
37
40
  },
38
41
  });
39
- const repoFeatures = featuresByRepo[repo.path] ?? [];
42
+ const repoFeatures = featuresByRepo[normalizedRepoPath] ?? [];
40
43
  appendFeatureNodes(repoFeatures, repoNodeId, featuresWithRuns, nodes, edges, repo.name);
41
44
  }
42
45
  // Second pass: group orphaned features under virtual repository nodes
@@ -1 +1 @@
1
- {"version":3,"file":"derive-graph.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/lib/derive-graph.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,qDAAqD;AACrD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,CAAC;IACtB,sGAAsG;IACtG,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wDAAwD;AACxD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,kBAAkB,CAAC;CAC1B;AAED,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,4FAA4F;IAC5F,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,qEAAqE;IACrE,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,8CAA8C;IAC9C,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACjE,6EAA6E;IAC7E,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,iDAAiD;IACjD,kBAAkB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;CACrD;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACrC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAC/B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACrC,SAAS,CAAC,EAAE,cAAc,GACzB;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAgI5C"}
1
+ {"version":3,"file":"derive-graph.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/lib/derive-graph.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,qDAAqD;AACrD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,CAAC;IACtB,sGAAsG;IACtG,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wDAAwD;AACxD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,kBAAkB,CAAC;CAC1B;AAED,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,4FAA4F;IAC5F,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,qEAAqE;IACrE,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,8CAA8C;IAC9C,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACjE,6EAA6E;IAC7E,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,iDAAiD;IACjD,kBAAkB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;CACrD;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACrC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAC/B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACrC,SAAS,CAAC,EAAE,cAAc,GACzB;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAmI5C"}
@@ -17,11 +17,13 @@
17
17
  export function deriveGraph(featureMap, repoMap, pendingMap, callbacks) {
18
18
  const nodes = [];
19
19
  const edges = [];
20
+ // Normalize path separators so Windows backslash paths match forward-slash paths
21
+ const normalizePath = (p) => p.replace(/\\/g, '/');
20
22
  // Build a lookup: repositoryPath → repoNodeId
21
23
  const repoByPath = new Map();
22
24
  for (const [nodeId, entry] of repoMap) {
23
25
  if (entry.data.repositoryPath) {
24
- repoByPath.set(entry.data.repositoryPath, nodeId);
26
+ repoByPath.set(normalizePath(entry.data.repositoryPath), nodeId);
25
27
  }
26
28
  }
27
29
  // Virtual repo nodes created for orphaned features (not in repoMap)
@@ -114,7 +116,7 @@ export function deriveGraph(featureMap, repoMap, pendingMap, callbacks) {
114
116
  }
115
117
  else {
116
118
  // Repo→feature edge (matched by repositoryPath)
117
- const repositoryPath = entry.data.repositoryPath;
119
+ const repositoryPath = normalizePath(entry.data.repositoryPath);
118
120
  const repoNodeId = repoByPath.get(repositoryPath) ?? getOrCreateVirtualRepo(repositoryPath);
119
121
  edges.push({
120
122
  id: `edge-${repoNodeId}-${nodeId}`,