@shepai/cli 1.181.0 → 1.182.0-pr548.9285cca

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 (224) hide show
  1. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
  2. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +4 -1
  3. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.d.ts.map +1 -1
  4. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.js +4 -1
  5. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.d.ts.map +1 -1
  6. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.js +4 -1
  7. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/merge-prompts.d.ts.map +1 -1
  8. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/merge-prompts.js +11 -6
  9. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/pr-branding.d.ts +2 -2
  10. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/pr-branding.d.ts.map +1 -1
  11. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/pr-branding.js +2 -2
  12. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
  13. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +3 -2
  14. package/dist/packages/core/src/infrastructure/services/git/pr-branding.d.ts +16 -5
  15. package/dist/packages/core/src/infrastructure/services/git/pr-branding.d.ts.map +1 -1
  16. package/dist/packages/core/src/infrastructure/services/git/pr-branding.js +38 -7
  17. package/dist/src/presentation/cli/commands/app/del.command.d.ts +14 -0
  18. package/dist/src/presentation/cli/commands/app/del.command.d.ts.map +1 -0
  19. package/dist/src/presentation/cli/commands/app/del.command.js +58 -0
  20. package/dist/src/presentation/cli/commands/app/index.d.ts +20 -0
  21. package/dist/src/presentation/cli/commands/app/index.d.ts.map +1 -0
  22. package/dist/src/presentation/cli/commands/app/index.js +33 -0
  23. package/dist/src/presentation/cli/commands/app/ls.command.d.ts +11 -0
  24. package/dist/src/presentation/cli/commands/app/ls.command.d.ts.map +1 -0
  25. package/dist/src/presentation/cli/commands/app/ls.command.js +74 -0
  26. package/dist/src/presentation/cli/commands/app/new.command.d.ts +17 -0
  27. package/dist/src/presentation/cli/commands/app/new.command.d.ts.map +1 -0
  28. package/dist/src/presentation/cli/commands/app/new.command.js +58 -0
  29. package/dist/src/presentation/cli/commands/app/resolve-application.d.ts +10 -0
  30. package/dist/src/presentation/cli/commands/app/resolve-application.d.ts.map +1 -0
  31. package/dist/src/presentation/cli/commands/app/resolve-application.js +33 -0
  32. package/dist/src/presentation/cli/commands/app/show.command.d.ts +11 -0
  33. package/dist/src/presentation/cli/commands/app/show.command.d.ts.map +1 -0
  34. package/dist/src/presentation/cli/commands/app/show.command.js +95 -0
  35. package/dist/src/presentation/cli/index.js +2 -0
  36. package/dist/translations/ar/cli.json +63 -0
  37. package/dist/translations/de/cli.json +63 -0
  38. package/dist/translations/en/cli.json +63 -0
  39. package/dist/translations/es/cli.json +63 -0
  40. package/dist/translations/fr/cli.json +63 -0
  41. package/dist/translations/he/cli.json +63 -0
  42. package/dist/translations/pt/cli.json +63 -0
  43. package/dist/translations/ru/cli.json +63 -0
  44. package/dist/translations/uk/cli.json +63 -0
  45. package/dist/tsconfig.build.tsbuildinfo +1 -1
  46. package/package.json +1 -1
  47. package/web/.next/BUILD_ID +1 -1
  48. package/web/.next/build-manifest.json +2 -2
  49. package/web/.next/fallback-build-manifest.json +2 -2
  50. package/web/.next/prerender-manifest.json +3 -3
  51. package/web/.next/required-server-files.js +3 -3
  52. package/web/.next/required-server-files.json +3 -3
  53. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +32 -32
  54. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  55. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  56. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +30 -30
  57. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  58. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  59. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +33 -33
  60. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  61. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  62. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +41 -41
  63. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  64. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  65. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +41 -41
  66. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  67. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  68. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +31 -31
  69. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  70. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  71. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +31 -31
  72. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  73. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  74. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +30 -30
  75. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  76. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  77. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +33 -33
  78. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  79. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  80. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +41 -41
  81. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  82. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  83. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +41 -41
  84. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  85. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  86. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +30 -30
  87. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  88. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  89. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +31 -31
  90. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  91. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  92. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +31 -31
  93. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  94. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  95. package/web/.next/server/app/_global-error.html +2 -2
  96. package/web/.next/server/app/_global-error.rsc +1 -1
  97. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  98. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  99. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  100. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  101. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  102. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +7 -7
  103. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  104. package/web/.next/server/app/application/[id]/page/server-reference-manifest.json +15 -15
  105. package/web/.next/server/app/application/[id]/page.js.nft.json +1 -1
  106. package/web/.next/server/app/application/[id]/page_client-reference-manifest.js +1 -1
  107. package/web/.next/server/app/features/page/server-reference-manifest.json +7 -7
  108. package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
  109. package/web/.next/server/app/settings/page/server-reference-manifest.json +10 -10
  110. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  111. package/web/.next/server/app/skills/page/server-reference-manifest.json +15 -15
  112. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  113. package/web/.next/server/app/tools/page/server-reference-manifest.json +13 -13
  114. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  115. package/web/.next/server/app/version/page/server-reference-manifest.json +7 -7
  116. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  117. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  118. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  119. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  120. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
  121. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  122. package/web/.next/server/chunks/ssr/[root-of-the-server]__013a0318._.js +1 -1
  123. package/web/.next/server/chunks/ssr/[root-of-the-server]__013a0318._.js.map +1 -1
  124. package/web/.next/server/chunks/ssr/[root-of-the-server]__17dadd08._.js +1 -1
  125. package/web/.next/server/chunks/ssr/[root-of-the-server]__17dadd08._.js.map +1 -1
  126. package/web/.next/server/chunks/ssr/[root-of-the-server]__1925bef0._.js +1 -1
  127. package/web/.next/server/chunks/ssr/[root-of-the-server]__1a9687c4._.js +1 -1
  128. package/web/.next/server/chunks/ssr/[root-of-the-server]__1a9687c4._.js.map +1 -1
  129. package/web/.next/server/chunks/ssr/[root-of-the-server]__24756fa9._.js +2 -2
  130. package/web/.next/server/chunks/ssr/[root-of-the-server]__24756fa9._.js.map +1 -1
  131. package/web/.next/server/chunks/ssr/[root-of-the-server]__4ee8be85._.js +1 -1
  132. package/web/.next/server/chunks/ssr/[root-of-the-server]__70986695._.js +1 -1
  133. package/web/.next/server/chunks/ssr/[root-of-the-server]__70986695._.js.map +1 -1
  134. package/web/.next/server/chunks/ssr/[root-of-the-server]__a5ea76a6._.js +1 -1
  135. package/web/.next/server/chunks/ssr/[root-of-the-server]__a5ea76a6._.js.map +1 -1
  136. package/web/.next/server/chunks/ssr/[root-of-the-server]__bb391c45._.js +1 -1
  137. package/web/.next/server/chunks/ssr/[root-of-the-server]__bb391c45._.js.map +1 -1
  138. package/web/.next/server/chunks/ssr/[root-of-the-server]__dd3e834e._.js +1 -1
  139. package/web/.next/server/chunks/ssr/[root-of-the-server]__dd3e834e._.js.map +1 -1
  140. package/web/.next/server/chunks/ssr/[root-of-the-server]__e265da61._.js +1 -1
  141. package/web/.next/server/chunks/ssr/[root-of-the-server]__f3ca7bea._.js +1 -1
  142. package/web/.next/server/chunks/ssr/[root-of-the-server]__f3ca7bea._.js.map +1 -1
  143. package/web/.next/server/chunks/ssr/_0277d3b5._.js +1 -1
  144. package/web/.next/server/chunks/ssr/_0277d3b5._.js.map +1 -1
  145. package/web/.next/server/chunks/ssr/{_da028026._.js → _04e59c76._.js} +2 -2
  146. package/web/.next/server/chunks/ssr/{_da028026._.js.map → _04e59c76._.js.map} +1 -1
  147. package/web/.next/server/chunks/ssr/{_655cc4fd._.js → _2dcbafcc._.js} +2 -2
  148. package/web/.next/server/chunks/ssr/{_655cc4fd._.js.map → _2dcbafcc._.js.map} +1 -1
  149. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  150. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  151. package/web/.next/server/chunks/ssr/{_5bb39227._.js → _7a8d82d8._.js} +2 -2
  152. package/web/.next/server/chunks/ssr/{_5bb39227._.js.map → _7a8d82d8._.js.map} +1 -1
  153. package/web/.next/server/chunks/ssr/_946a7fc6._.js +1 -1
  154. package/web/.next/server/chunks/ssr/_946a7fc6._.js.map +1 -1
  155. package/web/.next/server/chunks/ssr/{_fbf4db9c._.js → _9f2d11a2._.js} +2 -2
  156. package/web/.next/server/chunks/ssr/{_fbf4db9c._.js.map → _9f2d11a2._.js.map} +1 -1
  157. package/web/.next/server/chunks/ssr/{_e5753970._.js → _cc456949._.js} +2 -2
  158. package/web/.next/server/chunks/ssr/{_e5753970._.js.map → _cc456949._.js.map} +1 -1
  159. package/web/.next/server/chunks/ssr/_eff1b518._.js +1 -1
  160. package/web/.next/server/chunks/ssr/_eff1b518._.js.map +1 -1
  161. package/web/.next/server/chunks/ssr/_f227429a._.js +1 -1
  162. package/web/.next/server/chunks/ssr/_f227429a._.js.map +1 -1
  163. package/web/.next/server/chunks/ssr/_f86fc1bf._.js +1 -1
  164. package/web/.next/server/chunks/ssr/_f86fc1bf._.js.map +1 -1
  165. package/web/.next/server/chunks/ssr/_f8c55130._.js +1 -1
  166. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  167. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  168. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  169. package/web/.next/server/chunks/ssr/src_presentation_web_36f2bc45._.js +1 -1
  170. package/web/.next/server/chunks/ssr/src_presentation_web_36f2bc45._.js.map +1 -1
  171. package/web/.next/server/chunks/ssr/src_presentation_web_486908de._.js +1 -1
  172. package/web/.next/server/chunks/ssr/src_presentation_web_486908de._.js.map +1 -1
  173. package/web/.next/server/chunks/ssr/src_presentation_web_5c3596bc._.js +1 -1
  174. package/web/.next/server/chunks/ssr/src_presentation_web_5c3596bc._.js.map +1 -1
  175. package/web/.next/server/chunks/ssr/src_presentation_web_6159fef8._.js +1 -1
  176. package/web/.next/server/chunks/ssr/src_presentation_web_6159fef8._.js.map +1 -1
  177. package/web/.next/server/chunks/ssr/src_presentation_web_6326f81e._.js +1 -1
  178. package/web/.next/server/chunks/ssr/src_presentation_web_6326f81e._.js.map +1 -1
  179. package/web/.next/server/chunks/ssr/src_presentation_web_6b2fdcd8._.js +1 -1
  180. package/web/.next/server/chunks/ssr/src_presentation_web_6b2fdcd8._.js.map +1 -1
  181. package/web/.next/server/chunks/ssr/src_presentation_web_74703c9f._.js +1 -1
  182. package/web/.next/server/chunks/ssr/src_presentation_web_74703c9f._.js.map +1 -1
  183. package/web/.next/server/chunks/ssr/src_presentation_web_a8056dac._.js +1 -1
  184. package/web/.next/server/chunks/ssr/src_presentation_web_a8056dac._.js.map +1 -1
  185. package/web/.next/server/chunks/ssr/src_presentation_web_ad42cc73._.js +1 -1
  186. package/web/.next/server/chunks/ssr/src_presentation_web_ad42cc73._.js.map +1 -1
  187. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +3 -3
  188. package/web/.next/server/chunks/ssr/src_presentation_web_b00bfb08._.js +1 -1
  189. package/web/.next/server/chunks/ssr/src_presentation_web_b00bfb08._.js.map +1 -1
  190. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
  191. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
  192. package/web/.next/server/chunks/ssr/src_presentation_web_components_common_base-drawer_base-drawer_tsx_97dfbbc8._.js +1 -1
  193. package/web/.next/server/chunks/ssr/src_presentation_web_components_common_base-drawer_base-drawer_tsx_97dfbbc8._.js.map +1 -1
  194. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  195. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  196. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
  197. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
  198. package/web/.next/server/chunks/ssr/src_presentation_web_f1edcf5e._.js +1 -1
  199. package/web/.next/server/chunks/ssr/src_presentation_web_f1edcf5e._.js.map +1 -1
  200. package/web/.next/server/chunks/ssr/src_presentation_web_f9436804._.js +1 -1
  201. package/web/.next/server/chunks/ssr/src_presentation_web_f9436804._.js.map +1 -1
  202. package/web/.next/server/pages/500.html +2 -2
  203. package/web/.next/server/server-reference-manifest.js +1 -1
  204. package/web/.next/server/server-reference-manifest.json +54 -54
  205. package/web/.next/static/chunks/{5635fe220632fced.js → 0fca538c8a29691d.js} +1 -1
  206. package/web/.next/static/chunks/{25bbd99fa3dcc0b2.js → 1332132fa08b32a6.js} +1 -1
  207. package/web/.next/static/chunks/{ae94e98b7163890b.js → 21a17efb196571ff.js} +1 -1
  208. package/web/.next/static/chunks/{7a9d8b705c0f8d2d.js → 2a6dce03c4bc24a1.js} +1 -1
  209. package/web/.next/static/chunks/{b40755bc75789277.js → 2d0deaa168eca4a6.js} +1 -1
  210. package/web/.next/static/chunks/{e11508a76f5fca98.js → 4df1826f2280bb91.js} +1 -1
  211. package/web/.next/static/chunks/{fe29d30a75e697ed.js → 5c4f318453ac7984.js} +1 -1
  212. package/web/.next/static/chunks/{d8e96baa3feb79cb.js → 6454c634b1dfd9e1.js} +1 -1
  213. package/web/.next/static/chunks/{b6ddc3e5f64bef7f.js → 8441fecda031344a.js} +1 -1
  214. package/web/.next/static/chunks/{6ad23a3ac827b65b.js → 8de6ff9a58d783f1.js} +1 -1
  215. package/web/.next/static/chunks/{15951ad67a810e2c.js → 911685bfab863324.js} +3 -3
  216. package/web/.next/static/chunks/{53f9385d4a447ad4.js → a7b75ff95a0f9779.js} +2 -2
  217. package/web/.next/static/chunks/{443c0073e58878d8.js → b649d60a870a6b30.js} +1 -1
  218. package/web/.next/static/chunks/{be165be5db7a6054.js → bd0a4fdd2b1cc737.js} +1 -1
  219. package/web/.next/static/chunks/{e65f14d14ad46a32.js → df4464ba4edeee49.js} +1 -1
  220. package/web/.next/static/chunks/e9bd2883b2ba2017.js +1 -0
  221. package/web/.next/static/chunks/d7310881615cb55b.js +0 -1
  222. /package/web/.next/static/{_PzlF7w3QzhaBsMnhT75_ → fHns2V-tULTm-kY_Fjx8m}/_buildManifest.js +0 -0
  223. /package/web/.next/static/{_PzlF7w3QzhaBsMnhT75_ → fHns2V-tULTm-kY_Fjx8m}/_clientMiddlewareManifest.json +0 -0
  224. /package/web/.next/static/{_PzlF7w3QzhaBsMnhT75_ → fHns2V-tULTm-kY_Fjx8m}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"node-helpers.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node-helpers.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ import { reportNodeStart } from '../heartbeat.js';
14
14
  import { recordPhaseStart, recordPhaseEnd, recordApprovalWaitStart, } from '../phase-timing-context.js';
15
15
  import { updateNodeLifecycle } from '../lifecycle-context.js';
16
16
  import { getLogPrefix, setCurrentPhase } from '../log-context.js';
17
+ import { COMMIT_CO_AUTHOR } from './prompts/pr-branding.js';
17
18
  /**
18
19
  * Create a scoped logger that prefixes messages with the node name.
19
20
  * Output goes to stdout which the worker redirects to the log file.
@@ -350,8 +351,10 @@ export function buildCommitPushBlock(opts) {
350
351
  ``,
351
352
  `After completing all tasks above:`,
352
353
  `1. Stage the changed files: ${fileList} (use \`git add\` with the specific paths)`,
353
- `2. Commit with a conventional commit message${opts.skipVerification ? ' using `--no-verify` to skip hooks' : ''} e.g. \`git commit${opts.skipVerification ? ' --no-verify' : ''} -m "${opts.commitHint}"\``,
354
+ `2. Commit with a conventional commit message${opts.skipVerification ? ' using `--no-verify` to skip hooks' : ''} and include the Shep Bot co-author trailer:`,
355
+ ` - e.g. \`git commit${opts.skipVerification ? ' --no-verify' : ''} -m "${opts.commitHint}" -m "" -m "${COMMIT_CO_AUTHOR}"\``,
354
356
  ` - The message should accurately describe what changed`,
357
+ ` - Do NOT include any other Co-Authored-By trailer (e.g. Claude) — only the Shep Bot trailer`,
355
358
  ];
356
359
  if (opts.push && !opts.skipVerification) {
357
360
  lines.push(`3. Run local verification before pushing:`);
@@ -1 +1 @@
1
- {"version":3,"file":"fast-implement.prompt.d.ts","sourceRoot":"","sources":["../../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAwIxD;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAwEzE"}
1
+ {"version":3,"file":"fast-implement.prompt.d.ts","sourceRoot":"","sources":["../../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAyIxD;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CA0EzE"}
@@ -12,6 +12,7 @@ import { readFileSync, readdirSync, statSync } from 'node:fs';
12
12
  import { join } from 'node:path';
13
13
  import yaml from 'js-yaml';
14
14
  import { readSpecFile } from '../node-helpers.js';
15
+ import { COMMIT_CO_AUTHOR } from '../../../../git/pr-branding.js';
15
16
  /**
16
17
  * Read a file from the worktree, returning empty string if not found.
17
18
  */
@@ -179,7 +180,9 @@ ${userQuery}
179
180
  3. Run the test suite and fix any failures
180
181
  4. Run the linter and fix any issues
181
182
  5. Ensure the project builds successfully
182
- 6. Commit your work with descriptive conventional commit messages (e.g. \`feat(scope): description\`)
183
+ 6. Commit your work with descriptive conventional commit messages and include the Shep Bot co-author trailer:
184
+ - e.g. \`git commit -m "feat(scope): description" -m "" -m "${COMMIT_CO_AUTHOR}"\`
185
+ - Do NOT include any other Co-Authored-By trailer (e.g. Claude) — only the Shep Bot trailer above
183
186
  - Commit incrementally as you complete logical units of work — do NOT wait until the end
184
187
  - Each commit should be a coherent, working unit${state.push ? `\n7. Push to remote after committing: \`git push -u origin HEAD\`\n - Do NOT wait for or watch CI — just push and finish` : ''}
185
188
 
@@ -1 +1 @@
1
- {"version":3,"file":"implement.prompt.d.ts","sourceRoot":"","sources":["../../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,GAAG,EAAE;QAAE,GAAG,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IACnE,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAwBD;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,iBAAiB,EACxB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,SAAS,EAAE,EAClB,OAAO,EAAE;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACzE,MAAM,CAmER"}
1
+ {"version":3,"file":"implement.prompt.d.ts","sourceRoot":"","sources":["../../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGxD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,GAAG,EAAE;QAAE,GAAG,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IACnE,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAwBD;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,iBAAiB,EACxB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,SAAS,EAAE,EAClB,OAAO,EAAE;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACzE,MAAM,CAqER"}
@@ -6,6 +6,7 @@
6
6
  * and verification instructions.
7
7
  */
8
8
  import { readSpecFile } from '../node-helpers.js';
9
+ import { COMMIT_CO_AUTHOR } from '../../../../git/pr-branding.js';
9
10
  function formatTaskSection(task) {
10
11
  let section = `### Task ${task.id}: ${task.title}\n${task.description}\n`;
11
12
  section += `\n**Acceptance Criteria:**\n`;
@@ -79,7 +80,9 @@ ${taskSections}
79
80
  2. For tasks with TDD guidance: write tests alongside implementation following the hints provided — use them as guidance, not rigid steps
80
81
  3. Follow existing codebase conventions for file placement, naming patterns, and architecture layers
81
82
  ${verificationBlock}
82
- 5. Commit your work with descriptive conventional commit messages (e.g. \`feat(scope): description\`)
83
+ 5. Commit your work with descriptive conventional commit messages and include the Shep Bot co-author trailer:
84
+ - e.g. \`git commit -m "feat(scope): description" -m "" -m "${COMMIT_CO_AUTHOR}"\`
85
+ - Do NOT include any other Co-Authored-By trailer (e.g. Claude) — only the Shep Bot trailer above
83
86
  - Commit incrementally as you complete logical units of work — do NOT wait until the end
84
87
  - Each commit should be a coherent, working unit
85
88
  - It is CRITICAL that all implementation code is committed before this phase ends — evidence collection runs next and needs a clean working tree${state.push ? `\n6. Push to remote after committing: \`git push -u origin HEAD\`\n - Do NOT wait for or watch CI — just push and finish` : ''}
@@ -1 +1 @@
1
- {"version":3,"file":"merge-prompts.d.ts","sourceRoot":"","sources":["../../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/merge-prompts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAE3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAyCxD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAU9F;AAuCD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,QAAQ,EAAE,EACpB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAUR;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CA2ER;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,MAAM,GACtB,MAAM,CAiDR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,MAAM,CA0BR;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAqDzD"}
1
+ {"version":3,"file":"merge-prompts.d.ts","sourceRoot":"","sources":["../../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/merge-prompts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAE3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAyCxD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAU9F;AAuCD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,QAAQ,EAAE,EACpB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAUR;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CA8ER;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,MAAM,GACtB,MAAM,CAiDR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,MAAM,CA4BR;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAqDzD"}
@@ -11,7 +11,7 @@
11
11
  import yaml from 'js-yaml';
12
12
  import { EvidenceType } from '../../../../../../domain/generated/output.js';
13
13
  import { readSpecFile, buildResumeContext } from '../node-helpers.js';
14
- import { PR_BRANDING } from './pr-branding.js';
14
+ import { PR_BRANDING, COMMIT_CO_AUTHOR } from './pr-branding.js';
15
15
  /**
16
16
  * Extract merge-phase rejection feedback from spec.yaml.
17
17
  */
@@ -137,7 +137,9 @@ export function buildCommitPushPrPrompt(state, branch, baseBranch, repoUrl) {
137
137
  3. Write a conventional commit message based on the actual diff content
138
138
  - Use the format: \`feat(<scope>): <description>\` or \`fix(<scope>): <description>\`
139
139
  - The commit message should summarize what actually changed, not be generic
140
- - Run \`git commit -m "<your message>"\``);
140
+ - MUST include the co-author trailer: \`${COMMIT_CO_AUTHOR}\`
141
+ - Run: \`git commit -m "<your message>" -m "" -m "${COMMIT_CO_AUTHOR}"\`
142
+ - Do NOT include any other Co-Authored-By trailer (e.g. Claude) — only the Shep Bot trailer above`);
141
143
  // Step 2: Local verification before push (conditional)
142
144
  if (shouldPush) {
143
145
  steps.push(`4. Run local verification checks before pushing:
@@ -182,6 +184,7 @@ ${evidenceSection}
182
184
  ## Constraints
183
185
 
184
186
  - Write a meaningful conventional commit message derived from the actual diff — do NOT use generic messages
187
+ - Every commit MUST include the co-author trailer: \`${COMMIT_CO_AUTHOR}\` — do NOT include any other Co-Authored-By trailer
185
188
  ${rejectionSection ? '- You MUST modify source code files to address the rejection feedback above BEFORE committing' : '- Do NOT modify any source code files — only perform git operations'}
186
189
  ${!state.commitSpecs ? '- Do NOT commit the `specs/` directory — it must stay untracked. If you accidentally staged it, run `git reset -- specs/` before committing' : ''}
187
190
  - Do NOT amend existing commits
@@ -236,8 +239,8 @@ Follow these steps EXACTLY:
236
239
  - For config files (.gitignore, tsconfig.json, etc.), merge both sides' additions
237
240
  - Stage each resolved file: \`git add <file>\`
238
241
 
239
- 4. After ALL conflicts are resolved, commit:
240
- \`git commit -m "${commitMessage.replace(/"/g, '\\"')}"\`
242
+ 4. After ALL conflicts are resolved, commit with the Shep Bot co-author trailer:
243
+ \`git commit -m "${commitMessage.replace(/"/g, '\\"')}" -m "" -m "${COMMIT_CO_AUTHOR}"\`
241
244
 
242
245
  5. Delete the feature branch:
243
246
  \`git branch -d ${featureBranch}\` (non-fatal if it fails)
@@ -278,14 +281,16 @@ ${failureLogs}
278
281
  1. Analyze the CI failure logs above to diagnose the root cause
279
282
  2. Apply a targeted fix to resolve the failure — change only what is necessary
280
283
  3. Stage all changes: \`git add -A\`
281
- 4. Commit with this exact conventional commit message format:
282
- \`fix(ci): attempt ${attemptNumber}/${maxAttempts} — <short description of what you fixed>\`
284
+ 4. Commit with this exact conventional commit message format and the Shep Bot co-author trailer:
285
+ \`git commit -m "fix(ci): attempt ${attemptNumber}/${maxAttempts} — <short description of what you fixed>" -m "" -m "${COMMIT_CO_AUTHOR}"\`
283
286
  5. Push the fix to the branch: \`git push origin ${branch}\`
284
287
 
285
288
  ## Constraints
286
289
 
287
290
  - Fix ONLY the issue(s) causing the CI failure — do not refactor unrelated code
288
291
  - The commit message MUST start with \`fix(ci): attempt ${attemptNumber}/${maxAttempts} — \`
292
+ - The commit MUST include the co-author trailer: \`${COMMIT_CO_AUTHOR}\`
293
+ - Do NOT include any other Co-Authored-By trailer (e.g. Claude) — only the Shep Bot trailer
289
294
  - Do NOT create a new branch — push directly to \`${branch}\`
290
295
  - If the failure is unclear, make your best diagnosis and explain your reasoning in the commit message`;
291
296
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Re-export PR branding from the canonical location in git services.
2
+ * Re-export PR & commit branding from the canonical location in git services.
3
3
  */
4
- export { PR_BRANDING, applyPrBranding } from '../../../../../services/git/pr-branding.js';
4
+ export { PR_BRANDING, COMMIT_CO_AUTHOR, applyPrBranding, applyCommitBranding, } from '../../../../../services/git/pr-branding.js';
5
5
  //# sourceMappingURL=pr-branding.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pr-branding.d.ts","sourceRoot":"","sources":["../../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/pr-branding.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC"}
1
+ {"version":3,"file":"pr-branding.d.ts","sourceRoot":"","sources":["../../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/pr-branding.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,mBAAmB,GACpB,MAAM,8CAA8C,CAAC"}
@@ -1,4 +1,4 @@
1
1
  /**
2
- * Re-export PR branding from the canonical location in git services.
2
+ * Re-export PR & commit branding from the canonical location in git services.
3
3
  */
4
- export { PR_BRANDING, applyPrBranding } from '../../../../../services/git/pr-branding.js';
4
+ export { PR_BRANDING, COMMIT_CO_AUTHOR, applyPrBranding, applyCommitBranding, } from '../../../../../services/git/pr-branding.js';
@@ -1 +1 @@
1
- {"version":3,"file":"git-pr.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/git/git-pr.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-pr.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/git/git-pr.service.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,7 @@ import { readFileSync, writeFileSync, unlinkSync } from 'node:fs';
22
22
  import { tmpdir } from 'node:os';
23
23
  import { join } from 'node:path';
24
24
  import yaml from 'js-yaml';
25
- import { applyPrBranding } from './pr-branding.js';
25
+ import { applyPrBranding, applyCommitBranding } from './pr-branding.js';
26
26
  let GitPrService = class GitPrService {
27
27
  execFile;
28
28
  constructor(execFile) {
@@ -298,9 +298,10 @@ let GitPrService = class GitPrService {
298
298
  if (status.trim().length > 0) {
299
299
  // Write commit message to a temp file to avoid shell splitting on Windows
300
300
  // (DI-injected execFile uses shell: true on Windows, which splits on spaces)
301
+ const brandedMessage = applyCommitBranding(commitMessage);
301
302
  const msgFile = join(tmpdir(), `shep-merge-msg-${Date.now()}.txt`);
302
303
  try {
303
- writeFileSync(msgFile, commitMessage, 'utf8');
304
+ writeFileSync(msgFile, brandedMessage, 'utf8');
304
305
  await this.execFile('git', ['commit', '--file', msgFile], { cwd });
305
306
  }
306
307
  finally {
@@ -1,17 +1,28 @@
1
1
  /**
2
- * PR Branding
2
+ * PR & Commit Branding
3
3
  *
4
- * Centralizes the branding footer used in pull request bodies
5
- * created by Shep. Ensures consistent attribution across all
6
- * PR creation paths (agent-driven, fork-and-PR, etc.).
4
+ * Centralizes the branding used in pull request bodies and commit
5
+ * trailers created by Shep. Ensures consistent attribution across all
6
+ * PR creation paths (agent-driven, fork-and-PR, etc.) and all commit
7
+ * paths (agent commits, squash-merge commits, CI-fix commits).
7
8
  */
8
9
  /** The branding line to append to PR bodies. */
9
10
  export declare const PR_BRANDING = "[\uD83D\uDC11](https://github.com/shep-ai/shep) Built with [Shep.bot](https://shep.bot)";
11
+ /** The co-author trailer to include in commit messages. */
12
+ export declare const COMMIT_CO_AUTHOR = "Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>";
10
13
  /**
11
14
  * Ensure a PR body carries the correct Shep branding.
12
15
  *
13
16
  * 1. Strips any unwanted AI-tool attribution footers
14
- * 2. Appends the Shep branding line if not already present
17
+ * 2. Strips any unwanted Co-Authored-By trailers
18
+ * 3. Appends the Shep branding line if not already present
15
19
  */
16
20
  export declare function applyPrBranding(body: string): string;
21
+ /**
22
+ * Ensure a commit message carries the correct Shep co-author trailer.
23
+ *
24
+ * 1. Strips any unwanted Co-Authored-By trailers (e.g. Claude)
25
+ * 2. Appends the Shep Bot co-author trailer if not already present
26
+ */
27
+ export declare function applyCommitBranding(message: string): string;
17
28
  //# sourceMappingURL=pr-branding.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pr-branding.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/git/pr-branding.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,gDAAgD;AAChD,eAAO,MAAM,WAAW,4FACyD,CAAC;AASlF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAapD"}
1
+ {"version":3,"file":"pr-branding.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/git/pr-branding.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,gDAAgD;AAChD,eAAO,MAAM,WAAW,4FACyD,CAAC;AAElF,2DAA2D;AAC3D,eAAO,MAAM,gBAAgB,mEAAmE,CAAC;AAkBjG;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgBpD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAa3D"}
@@ -1,26 +1,40 @@
1
1
  /**
2
- * PR Branding
2
+ * PR & Commit Branding
3
3
  *
4
- * Centralizes the branding footer used in pull request bodies
5
- * created by Shep. Ensures consistent attribution across all
6
- * PR creation paths (agent-driven, fork-and-PR, etc.).
4
+ * Centralizes the branding used in pull request bodies and commit
5
+ * trailers created by Shep. Ensures consistent attribution across all
6
+ * PR creation paths (agent-driven, fork-and-PR, etc.) and all commit
7
+ * paths (agent commits, squash-merge commits, CI-fix commits).
7
8
  */
8
9
  /** The branding line to append to PR bodies. */
9
10
  export const PR_BRANDING = '[🐑](https://github.com/shep-ai/shep) Built with [Shep.bot](https://shep.bot)';
11
+ /** The co-author trailer to include in commit messages. */
12
+ export const COMMIT_CO_AUTHOR = 'Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>';
10
13
  /**
11
14
  * Pattern matching common AI-tool attribution footers that should be
12
15
  * replaced (e.g. "Generated with Claude Code", "Co-Authored-By: Claude").
13
16
  */
14
- const UNWANTED_BRANDING_PATTERN = /\n*(?:🤖\s*)?Generated with \[Claude Code\]\(https:\/\/claude\.com\/claude-code\)\s*/gi;
17
+ const UNWANTED_PR_BRANDING_PATTERN = /\n*(?:🤖\s*)?Generated with \[Claude Code\]\(https:\/\/claude\.com\/claude-code\)\s*/gi;
18
+ /**
19
+ * Pattern matching unwanted Co-Authored-By trailers from AI tools.
20
+ * Matches lines like:
21
+ * Co-Authored-By: Claude <noreply@anthropic.com>
22
+ * Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
23
+ * Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
24
+ */
25
+ const UNWANTED_CO_AUTHOR_PATTERN = /\n*Co-Authored-By:\s*Claude[^\n]*<noreply@anthropic\.com>\s*/gi;
15
26
  /**
16
27
  * Ensure a PR body carries the correct Shep branding.
17
28
  *
18
29
  * 1. Strips any unwanted AI-tool attribution footers
19
- * 2. Appends the Shep branding line if not already present
30
+ * 2. Strips any unwanted Co-Authored-By trailers
31
+ * 3. Appends the Shep branding line if not already present
20
32
  */
21
33
  export function applyPrBranding(body) {
22
34
  // Strip unwanted branding
23
- let cleaned = body.replace(UNWANTED_BRANDING_PATTERN, '');
35
+ let cleaned = body.replace(UNWANTED_PR_BRANDING_PATTERN, '');
36
+ // Strip unwanted co-author trailers
37
+ cleaned = cleaned.replace(UNWANTED_CO_AUTHOR_PATTERN, '');
24
38
  // Trim trailing whitespace/newlines before appending branding
25
39
  cleaned = cleaned.trimEnd();
26
40
  // Only append if not already present
@@ -29,3 +43,20 @@ export function applyPrBranding(body) {
29
43
  }
30
44
  return cleaned;
31
45
  }
46
+ /**
47
+ * Ensure a commit message carries the correct Shep co-author trailer.
48
+ *
49
+ * 1. Strips any unwanted Co-Authored-By trailers (e.g. Claude)
50
+ * 2. Appends the Shep Bot co-author trailer if not already present
51
+ */
52
+ export function applyCommitBranding(message) {
53
+ // Strip unwanted co-author trailers
54
+ let cleaned = message.replace(UNWANTED_CO_AUTHOR_PATTERN, '');
55
+ // Trim trailing whitespace/newlines
56
+ cleaned = cleaned.trimEnd();
57
+ // Only append if not already present
58
+ if (!cleaned.includes(COMMIT_CO_AUTHOR)) {
59
+ cleaned = `${cleaned}\n\n${COMMIT_CO_AUTHOR}`;
60
+ }
61
+ return cleaned;
62
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Application Delete Command
3
+ *
4
+ * Soft-deletes an application and stops any active session.
5
+ *
6
+ * Usage: shep app del <id> [--force]
7
+ *
8
+ * @example
9
+ * $ shep app del a1b2c3d4
10
+ * $ shep app del a1b2c3d4 --force
11
+ */
12
+ import { Command } from 'commander';
13
+ export declare function createDelCommand(): Command;
14
+ //# sourceMappingURL=del.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"del.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/app/del.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,wBAAgB,gBAAgB,IAAI,OAAO,CAyC1C"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Application Delete Command
3
+ *
4
+ * Soft-deletes an application and stops any active session.
5
+ *
6
+ * Usage: shep app del <id> [--force]
7
+ *
8
+ * @example
9
+ * $ shep app del a1b2c3d4
10
+ * $ shep app del a1b2c3d4 --force
11
+ */
12
+ import { Command } from 'commander';
13
+ import { container } from '../../../../../packages/core/src/infrastructure/di/container.js';
14
+ import { DeleteApplicationUseCase } from '../../../../../packages/core/src/application/use-cases/applications/delete-application.use-case.js';
15
+ import { colors, messages } from '../../ui/index.js';
16
+ import { confirm } from '@inquirer/prompts';
17
+ import { resolveApplication } from './resolve-application.js';
18
+ import { getCliI18n } from '../../i18n.js';
19
+ export function createDelCommand() {
20
+ const t = getCliI18n().t;
21
+ return new Command('del')
22
+ .description(t('cli:commands.app.del.description'))
23
+ .argument('<id>', t('cli:commands.app.del.idArgument'))
24
+ .option('-f, --force', t('cli:commands.app.del.forceOption'))
25
+ .action(async (id, options) => {
26
+ try {
27
+ const resolved = await resolveApplication(id);
28
+ if ('error' in resolved) {
29
+ messages.error(resolved.error);
30
+ process.exitCode = 1;
31
+ return;
32
+ }
33
+ const app = resolved.application;
34
+ if (!options.force) {
35
+ const confirmed = await confirm({
36
+ message: t('cli:commands.app.del.confirmDelete', { name: app.name }),
37
+ default: false,
38
+ });
39
+ if (!confirmed) {
40
+ messages.info(t('cli:commands.app.del.cancelled'));
41
+ return;
42
+ }
43
+ }
44
+ const deleteUseCase = container.resolve(DeleteApplicationUseCase);
45
+ await deleteUseCase.execute(app.id);
46
+ messages.newline();
47
+ messages.success(t('cli:commands.app.del.appDeleted'));
48
+ console.log(` ${colors.muted(t('cli:commands.app.del.nameLabel'))} ${app.name}`);
49
+ console.log(` ${colors.muted(t('cli:commands.app.del.slugLabel'))} ${app.slug}`);
50
+ messages.newline();
51
+ }
52
+ catch (error) {
53
+ const err = error instanceof Error ? error : new Error(String(error));
54
+ messages.error(t('cli:commands.app.del.failedToDelete'), err);
55
+ process.exitCode = 1;
56
+ }
57
+ });
58
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * App Command
3
+ *
4
+ * Top-level app command with subcommands for managing applications.
5
+ *
6
+ * Usage:
7
+ * shep app [subcommand]
8
+ *
9
+ * Subcommands:
10
+ * shep app ls List applications
11
+ * shep app show <id> Display details of an application
12
+ * shep app new <desc> Create a new application
13
+ * shep app del <id> Delete an application
14
+ */
15
+ import { Command } from 'commander';
16
+ /**
17
+ * Create the app command with all subcommands
18
+ */
19
+ export declare function createAppCommand(): Command;
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/app/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAU1C"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * App Command
3
+ *
4
+ * Top-level app command with subcommands for managing applications.
5
+ *
6
+ * Usage:
7
+ * shep app [subcommand]
8
+ *
9
+ * Subcommands:
10
+ * shep app ls List applications
11
+ * shep app show <id> Display details of an application
12
+ * shep app new <desc> Create a new application
13
+ * shep app del <id> Delete an application
14
+ */
15
+ import { Command } from 'commander';
16
+ import { createLsCommand } from './ls.command.js';
17
+ import { createShowCommand } from './show.command.js';
18
+ import { createNewCommand } from './new.command.js';
19
+ import { createDelCommand } from './del.command.js';
20
+ import { getCliI18n } from '../../i18n.js';
21
+ /**
22
+ * Create the app command with all subcommands
23
+ */
24
+ export function createAppCommand() {
25
+ const t = getCliI18n().t;
26
+ const app = new Command('app')
27
+ .description(t('cli:commands.app.description'))
28
+ .addCommand(createLsCommand())
29
+ .addCommand(createShowCommand())
30
+ .addCommand(createNewCommand())
31
+ .addCommand(createDelCommand());
32
+ return app;
33
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Application List Command
3
+ *
4
+ * List all applications in a formatted table.
5
+ *
6
+ * Usage:
7
+ * shep app ls
8
+ */
9
+ import { Command } from 'commander';
10
+ export declare function createLsCommand(): Command;
11
+ //# sourceMappingURL=ls.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ls.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/app/ls.command.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgCpC,wBAAgB,eAAe,IAAI,OAAO,CAkCzC"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Application List Command
3
+ *
4
+ * List all applications in a formatted table.
5
+ *
6
+ * Usage:
7
+ * shep app ls
8
+ */
9
+ import { Command } from 'commander';
10
+ import { container } from '../../../../../packages/core/src/infrastructure/di/container.js';
11
+ import { ListApplicationsUseCase } from '../../../../../packages/core/src/application/use-cases/applications/list-applications.use-case.js';
12
+ import { colors, messages, renderListView } from '../../ui/index.js';
13
+ import { getCliI18n } from '../../i18n.js';
14
+ /** Format a duration in ms to a compact human-readable string. */
15
+ function formatDuration(ms) {
16
+ const seconds = Math.floor(ms / 1000);
17
+ if (seconds < 60)
18
+ return `${seconds}s`;
19
+ const minutes = Math.floor(seconds / 60);
20
+ if (minutes < 60)
21
+ return `${minutes}m`;
22
+ const hours = Math.floor(minutes / 60);
23
+ const remMin = minutes % 60;
24
+ if (hours < 24)
25
+ return remMin > 0 ? `${hours}h ${remMin}m` : `${hours}h`;
26
+ const days = Math.floor(hours / 24);
27
+ return `${days}d`;
28
+ }
29
+ function colorStatus(status) {
30
+ switch (status) {
31
+ case 'Idle':
32
+ return colors.muted(status);
33
+ case 'Active':
34
+ return colors.success(status);
35
+ case 'Error':
36
+ return colors.warning(status);
37
+ default:
38
+ return colors.muted(status);
39
+ }
40
+ }
41
+ export function createLsCommand() {
42
+ const t = getCliI18n().t;
43
+ return new Command('ls').description(t('cli:commands.app.ls.description')).action(async () => {
44
+ try {
45
+ const useCase = container.resolve(ListApplicationsUseCase);
46
+ const applications = await useCase.execute();
47
+ const now = Date.now();
48
+ const rows = applications.map((app) => [
49
+ app.id.substring(0, 8),
50
+ app.name,
51
+ colorStatus(app.status),
52
+ app.repositoryPath,
53
+ colors.muted(`${formatDuration(now - new Date(app.createdAt).getTime())} ago`),
54
+ ]);
55
+ renderListView({
56
+ title: t('cli:commands.app.ls.title'),
57
+ columns: [
58
+ { label: t('cli:commands.app.ls.idColumn'), width: 10 },
59
+ { label: t('cli:commands.app.ls.nameColumn'), width: 28 },
60
+ { label: t('cli:commands.app.ls.statusColumn'), width: 10 },
61
+ { label: t('cli:commands.app.ls.pathColumn'), width: 36 },
62
+ { label: t('cli:commands.app.ls.createdColumn'), width: 12 },
63
+ ],
64
+ rows,
65
+ emptyMessage: t('cli:commands.app.ls.noApps'),
66
+ });
67
+ }
68
+ catch (error) {
69
+ const err = error instanceof Error ? error : new Error(String(error));
70
+ messages.error(t('cli:commands.app.ls.failedToList'), err);
71
+ process.exitCode = 1;
72
+ }
73
+ });
74
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Application New Command
3
+ *
4
+ * Creates a new application with optional initial prompt to kick off
5
+ * an interactive agent session.
6
+ *
7
+ * Usage:
8
+ * shep app new <description> [options]
9
+ *
10
+ * @example
11
+ * $ shep app new "Build a todo list app with React"
12
+ * $ shep app new "REST API for inventory management" --agent claude-code
13
+ * $ shep app new "Portfolio website" --model claude-opus-4-6
14
+ */
15
+ import { Command } from 'commander';
16
+ export declare function createNewCommand(): Command;
17
+ //# sourceMappingURL=new.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/app/new.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,wBAAgB,gBAAgB,IAAI,OAAO,CAuD1C"}