@shepai/cli 1.136.0 → 1.136.1

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 (142) 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 +1 -1
  3. package/dist/packages/core/src/application/use-cases/features/create/metadata-generator.d.ts +12 -1
  4. package/dist/packages/core/src/application/use-cases/features/create/metadata-generator.d.ts.map +1 -1
  5. package/dist/packages/core/src/application/use-cases/features/create/metadata-generator.js +61 -4
  6. package/dist/tsconfig.build.tsbuildinfo +1 -1
  7. package/package.json +1 -1
  8. package/web/.next/BUILD_ID +1 -1
  9. package/web/.next/build-manifest.json +2 -2
  10. package/web/.next/fallback-build-manifest.json +2 -2
  11. package/web/.next/prerender-manifest.json +3 -3
  12. package/web/.next/required-server-files.js +2 -2
  13. package/web/.next/required-server-files.json +2 -2
  14. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +25 -25
  15. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  16. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  17. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +25 -25
  18. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  19. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  20. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +31 -31
  21. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  22. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  23. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +31 -31
  24. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  25. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  26. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +23 -23
  27. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  28. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  29. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +25 -25
  30. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  31. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  32. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +31 -31
  33. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  34. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  35. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +31 -31
  36. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  37. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  38. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +23 -23
  39. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  40. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  41. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +23 -23
  42. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  43. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  44. package/web/.next/server/app/_global-error.html +2 -2
  45. package/web/.next/server/app/_global-error.rsc +1 -1
  46. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  47. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  48. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  49. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  50. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  51. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +3 -3
  52. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  53. package/web/.next/server/app/settings/page/server-reference-manifest.json +8 -8
  54. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  55. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  56. package/web/.next/server/app/skills/page/server-reference-manifest.json +8 -8
  57. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  58. package/web/.next/server/app/tools/page/server-reference-manifest.json +8 -8
  59. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  60. package/web/.next/server/app/version/page/server-reference-manifest.json +3 -3
  61. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  62. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  63. package/web/.next/server/chunks/[root-of-the-server]__b4102cc7._.js +1 -1
  64. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_b49d9c97.js +1 -1
  65. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_b49d9c97.js.map +1 -1
  66. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  67. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  68. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_28632197.js +1 -1
  69. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_28632197.js.map +1 -1
  70. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_10695d37.js +1 -1
  71. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_10695d37.js.map +1 -1
  72. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  73. package/web/.next/server/chunks/ssr/[root-of-the-server]__3ef34e4c._.js +1 -1
  74. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +1 -1
  75. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +1 -1
  76. package/web/.next/server/chunks/ssr/[root-of-the-server]__47ded061._.js +1 -1
  77. package/web/.next/server/chunks/ssr/[root-of-the-server]__47ded061._.js.map +1 -1
  78. package/web/.next/server/chunks/ssr/[root-of-the-server]__68ce373c._.js +1 -1
  79. package/web/.next/server/chunks/ssr/[root-of-the-server]__68ce373c._.js.map +1 -1
  80. package/web/.next/server/chunks/ssr/[root-of-the-server]__718766da._.js +1 -1
  81. package/web/.next/server/chunks/ssr/[root-of-the-server]__718766da._.js.map +1 -1
  82. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +1 -1
  83. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +1 -1
  84. package/web/.next/server/chunks/ssr/[root-of-the-server]__a5f9c6e5._.js +2 -2
  85. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
  86. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  87. package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js +1 -1
  88. package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js.map +1 -1
  89. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdd058b2._.js +1 -1
  90. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdd058b2._.js.map +1 -1
  91. package/web/.next/server/chunks/ssr/_02ec1aea._.js +1 -1
  92. package/web/.next/server/chunks/ssr/_02ec1aea._.js.map +1 -1
  93. package/web/.next/server/chunks/ssr/{_e700d6a8._.js → _3a8b11f5._.js} +2 -2
  94. package/web/.next/server/chunks/ssr/{_e700d6a8._.js.map → _3a8b11f5._.js.map} +1 -1
  95. package/web/.next/server/chunks/ssr/_7dca1882._.js +1 -1
  96. package/web/.next/server/chunks/ssr/_7dca1882._.js.map +1 -1
  97. package/web/.next/server/chunks/ssr/_a9f57758._.js +1 -1
  98. package/web/.next/server/chunks/ssr/_d8575088._.js +1 -1
  99. package/web/.next/server/chunks/ssr/_d8575088._.js.map +1 -1
  100. package/web/.next/server/chunks/ssr/_e69a26ba._.js +1 -1
  101. package/web/.next/server/chunks/ssr/_f39a1adb._.js +1 -1
  102. package/web/.next/server/chunks/ssr/_f39a1adb._.js.map +1 -1
  103. package/web/.next/server/chunks/ssr/{_aec44907._.js → _fafd03ec._.js} +2 -2
  104. package/web/.next/server/chunks/ssr/{_aec44907._.js.map → _fafd03ec._.js.map} +1 -1
  105. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  106. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  107. package/web/.next/server/chunks/ssr/src_presentation_web_53666118._.js +2 -2
  108. package/web/.next/server/chunks/ssr/src_presentation_web_53666118._.js.map +1 -1
  109. package/web/.next/server/chunks/ssr/{src_presentation_web_d8202508._.js → src_presentation_web_9d7292c4._.js} +2 -2
  110. package/web/.next/server/chunks/ssr/{src_presentation_web_d8202508._.js.map → src_presentation_web_9d7292c4._.js.map} +1 -1
  111. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_d95e128d.js +1 -1
  112. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_d95e128d.js.map +1 -1
  113. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +1 -1
  114. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +1 -1
  115. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +1 -1
  116. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +1 -1
  117. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  118. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +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/chunks/ssr/src_presentation_web_e4df6dd7._.js +2 -2
  122. package/web/.next/server/chunks/ssr/src_presentation_web_e4df6dd7._.js.map +1 -1
  123. package/web/.next/server/pages/500.html +2 -2
  124. package/web/.next/server/server-reference-manifest.js +1 -1
  125. package/web/.next/server/server-reference-manifest.json +39 -39
  126. package/web/.next/static/chunks/{90af5015ea1684d2.js → 1ccea0ca4cca00f7.js} +1 -1
  127. package/web/.next/static/chunks/{3e571ee5f5afd401.js → 4938159e46498d00.js} +1 -1
  128. package/web/.next/static/chunks/{75d552e0e611e3f4.js → 5e66bfba061db621.js} +2 -2
  129. package/web/.next/static/chunks/{07ea878c8d769b40.js → 68351a1fb1e57d86.js} +1 -1
  130. package/web/.next/static/chunks/73fd16bb130a559c.js +1 -0
  131. package/web/.next/static/chunks/9f3f53cc48fa1ccf.js +2 -0
  132. package/web/.next/static/chunks/{4916dcd902d80072.js → a21d883baebd7bdb.js} +1 -1
  133. package/web/.next/static/chunks/{ff9b5942b2cae4f7.js → c2311839bfa63e4a.js} +1 -1
  134. package/web/.next/static/chunks/{ae5bf7c402bb02ad.js → d11f1dbba7daafbd.js} +1 -1
  135. package/web/.next/static/chunks/{00754162862ab75f.js → d44bf63a94fd5d79.js} +1 -1
  136. package/web/.next/static/chunks/{3d6119fadfa8596f.js → e370f42e84b4ac0d.js} +1 -1
  137. package/web/.next/static/chunks/{a17edbc379ad2f40.js → e84d2b794f97eb3a.js} +1 -1
  138. package/web/.next/static/chunks/1693f840144b12bb.js +0 -2
  139. package/web/.next/static/chunks/98888e44c7c02a19.js +0 -1
  140. /package/web/.next/static/{PlnxcoPHipclEMFHMWF11 → Ywxn_J9lSl6kCndILP_ke}/_buildManifest.js +0 -0
  141. /package/web/.next/static/{PlnxcoPHipclEMFHMWF11 → Ywxn_J9lSl6kCndILP_ke}/_clientMiddlewareManifest.json +0 -0
  142. /package/web/.next/static/{PlnxcoPHipclEMFHMWF11 → Ywxn_J9lSl6kCndILP_ke}/_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;AAChG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2DAA2D,CAAC;AAGjG,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;IAElC,OAAO,CAAC,QAAQ,CAAC,cAAc;gBApBd,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,EAE3C,cAAc,EAAE,eAAe;IAGlD;;;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;IAmI1E;;;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;CAgI1D"}
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;AAChG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2DAA2D,CAAC;AAGjG,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;IAElC,OAAO,CAAC,QAAQ,CAAC,cAAc;gBApBd,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,EAE3C,cAAc,EAAE,eAAe;IAGlD;;;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;IAmI1E;;;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;CAiI1D"}
@@ -197,7 +197,7 @@ let CreateFeatureUseCase = class CreateFeatureUseCase {
197
197
  const effectiveRepoPath = feature.repositoryPath;
198
198
  // Ensure the target directory is a git repository (auto-init if needed)
199
199
  await this.worktreeService.ensureGitRepository(effectiveRepoPath);
200
- const metadata = await this.metadataGenerator.generateMetadata(input.userInput, input.agentType);
200
+ const metadata = await this.metadataGenerator.generateMetadata(input.userInput, input.agentType, effectiveRepoPath);
201
201
  const originalSlug = metadata.slug;
202
202
  const { slug, branch, warning } = await this.slugResolver.resolveUniqueSlug(originalSlug, effectiveRepoPath);
203
203
  // Determine next feature number for this repo
@@ -3,6 +3,9 @@
3
3
  *
4
4
  * Generates feature metadata (slug, name, description) from user input
5
5
  * via AI call through IStructuredAgentCaller.
6
+ * When the user input references a file (e.g. SPEC.md), the file content
7
+ * is read and included in the prompt so the AI derives metadata from the
8
+ * actual file rather than the bare reference string.
6
9
  * Errors are propagated to the caller.
7
10
  */
8
11
  import type { AgentType } from '../../../../domain/generated/output.js';
@@ -17,9 +20,17 @@ export declare class MetadataGenerator {
17
20
  constructor(structuredCaller: IStructuredAgentCaller);
18
21
  /**
19
22
  * Generate feature metadata from user input via AI.
23
+ * When repositoryPath is provided, file references in the user input
24
+ * (e.g. "Develop based on the current SPEC.md") are resolved and their
25
+ * content is included in the prompt.
20
26
  * Errors are propagated to the caller.
21
27
  */
22
- generateMetadata(userInput: string, agentType?: AgentType): Promise<FeatureMetadata>;
28
+ generateMetadata(userInput: string, agentType?: AgentType, repositoryPath?: string): Promise<FeatureMetadata>;
29
+ /**
30
+ * Detect a file reference in user input and read the file content.
31
+ * Returns the file content if found and readable, undefined otherwise.
32
+ */
33
+ resolveFileReference(userInput: string, repositoryPath: string): string | undefined;
23
34
  /**
24
35
  * Extract metadata locally from user input without AI.
25
36
  * Used as fallback when the AI call fails or returns invalid data.
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-generator.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/use-cases/features/create/metadata-generator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mEAAmE,CAAC;AAEhH,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAgBD,qBACa,iBAAiB;IAG1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,sBAAsB;IAG3D;;;OAGG;IACG,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC;IAwC1F;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAU9B;;;OAGG;IACH,OAAO,CAAC,MAAM;CAgBf"}
1
+ {"version":3,"file":"metadata-generator.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/use-cases/features/create/metadata-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mEAAmE,CAAC;AAEhH,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AA2BD,qBACa,iBAAiB;IAG1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,sBAAsB;IAG3D;;;;;;OAMG;IACG,gBAAgB,CACpB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,SAAS,EACrB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,eAAe,CAAC;IAoD3B;;;OAGG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IA8BnF;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAU9B;;;OAGG;IACH,OAAO,CAAC,MAAM;CAgBf"}
@@ -3,6 +3,9 @@
3
3
  *
4
4
  * Generates feature metadata (slug, name, description) from user input
5
5
  * via AI call through IStructuredAgentCaller.
6
+ * When the user input references a file (e.g. SPEC.md), the file content
7
+ * is read and included in the prompt so the AI derives metadata from the
8
+ * actual file rather than the bare reference string.
6
9
  * Errors are propagated to the caller.
7
10
  */
8
11
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
@@ -18,8 +21,18 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
18
21
  return function (target, key) { decorator(target, key, paramIndex); }
19
22
  };
20
23
  import { injectable, inject } from 'tsyringe';
24
+ import { readFileSync, existsSync } from 'node:fs';
25
+ import { join, isAbsolute } from 'node:path';
21
26
  /** Maximum characters of user input sent to the AI for metadata generation. */
22
27
  const MAX_INPUT_FOR_AI = 500;
28
+ /** Maximum characters of file content included in the AI prompt. */
29
+ const MAX_FILE_CONTENT_FOR_AI = 4000;
30
+ /**
31
+ * Pattern that matches user input referencing a file for feature definition.
32
+ * Captures the filename in group 1. Case-insensitive.
33
+ * Examples: "Develop based on the current SPEC.md", "based on SPEC.md", "use ./docs/SPEC.md"
34
+ */
35
+ const FILE_REFERENCE_PATTERN = /(?:based\s+on|from|use|using|see|refer\s+to|according\s+to)[\s]+(?:the\s+)?(?:current\s+)?(\S+\.(?:md|txt|yaml|yml))/i;
23
36
  const METADATA_SCHEMA = {
24
37
  type: 'object',
25
38
  properties: {
@@ -37,18 +50,30 @@ let MetadataGenerator = class MetadataGenerator {
37
50
  }
38
51
  /**
39
52
  * Generate feature metadata from user input via AI.
53
+ * When repositoryPath is provided, file references in the user input
54
+ * (e.g. "Develop based on the current SPEC.md") are resolved and their
55
+ * content is included in the prompt.
40
56
  * Errors are propagated to the caller.
41
57
  */
42
- async generateMetadata(userInput, agentType) {
43
- const truncated = userInput.length > MAX_INPUT_FOR_AI
44
- ? `${userInput.slice(0, MAX_INPUT_FOR_AI)}...`
58
+ async generateMetadata(userInput, agentType, repositoryPath) {
59
+ const fileContent = repositoryPath
60
+ ? this.resolveFileReference(userInput, repositoryPath)
61
+ : undefined;
62
+ const effectiveInput = fileContent
63
+ ? `${userInput}\n\n--- Referenced file content ---\n${fileContent}`
45
64
  : userInput;
65
+ const truncated = effectiveInput.length > MAX_INPUT_FOR_AI + MAX_FILE_CONTENT_FOR_AI
66
+ ? `${effectiveInput.slice(0, MAX_INPUT_FOR_AI + MAX_FILE_CONTENT_FOR_AI)}...`
67
+ : effectiveInput;
68
+ const fileHint = fileContent
69
+ ? "\nIMPORTANT: The user referenced a file. Derive the feature name, slug, and description from the FILE CONTENT, not from the user's reference instruction."
70
+ : '';
46
71
  const prompt = `Analyze this user request and extract the CORE feature intent. Condense to essential concepts.
47
72
 
48
73
  User request:
49
74
  "${truncated}"
50
75
 
51
- IMPORTANT: Don't use the request as-is. Extract the key feature being requested and improve the wording.
76
+ IMPORTANT: Don't use the request as-is. Extract the key feature being requested and improve the wording.${fileHint}
52
77
 
53
78
  Return a JSON object with these fields:
54
79
  - slug: kebab-case identifier, 2-4 words MAX. Extract the core feature name (e.g., "github-oauth-login" from "add github oauth")
@@ -74,6 +99,38 @@ Return a JSON object with these fields:
74
99
  }
75
100
  return this.extractMetadataLocally(userInput);
76
101
  }
102
+ /**
103
+ * Detect a file reference in user input and read the file content.
104
+ * Returns the file content if found and readable, undefined otherwise.
105
+ */
106
+ resolveFileReference(userInput, repositoryPath) {
107
+ const match = FILE_REFERENCE_PATTERN.exec(userInput);
108
+ if (!match)
109
+ return undefined;
110
+ const filename = match[1];
111
+ const candidates = [
112
+ // Try the path as-is (handles absolute or relative with ./)
113
+ isAbsolute(filename) ? filename : join(repositoryPath, filename),
114
+ // Also try common locations
115
+ join(repositoryPath, filename.replace(/^\.\//, '')),
116
+ ];
117
+ for (const candidate of candidates) {
118
+ try {
119
+ if (existsSync(candidate)) {
120
+ const content = readFileSync(candidate, 'utf-8');
121
+ if (content.trim().length > 0) {
122
+ return content.length > MAX_FILE_CONTENT_FOR_AI
123
+ ? `${content.slice(0, MAX_FILE_CONTENT_FOR_AI)}...`
124
+ : content;
125
+ }
126
+ }
127
+ }
128
+ catch {
129
+ // File not readable — try next candidate
130
+ }
131
+ }
132
+ return undefined;
133
+ }
77
134
  /**
78
135
  * Extract metadata locally from user input without AI.
79
136
  * Used as fallback when the AI call fails or returns invalid data.