@shepai/cli 1.131.1 → 1.132.0-pr427.eb60966

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 (153) hide show
  1. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.js +24 -2
  2. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/evidence-prompts.d.ts.map +1 -1
  3. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/evidence-prompts.js +13 -2
  4. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.d.ts.map +1 -1
  5. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.js +3 -2
  6. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.d.ts.map +1 -1
  7. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.js +4 -1
  8. package/dist/src/presentation/tui/wizards/onboarding/onboarding.wizard.d.ts.map +1 -1
  9. package/dist/src/presentation/tui/wizards/onboarding/onboarding.wizard.js +5 -0
  10. package/dist/src/presentation/web/components/features/control-center/welcome-agent-setup.d.ts.map +1 -1
  11. package/dist/src/presentation/web/components/features/control-center/welcome-agent-setup.js +2 -2
  12. package/dist/tsconfig.build.tsbuildinfo +1 -1
  13. package/package.json +1 -1
  14. package/web/.next/BUILD_ID +1 -1
  15. package/web/.next/build-manifest.json +2 -2
  16. package/web/.next/fallback-build-manifest.json +2 -2
  17. package/web/.next/prerender-manifest.json +3 -3
  18. package/web/.next/required-server-files.js +3 -3
  19. package/web/.next/required-server-files.json +3 -3
  20. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +24 -24
  21. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  22. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  23. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +24 -24
  24. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  25. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  26. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +30 -30
  27. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  28. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  29. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +30 -30
  30. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  31. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  32. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +22 -22
  33. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  34. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  35. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +24 -24
  36. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  37. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  38. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +30 -30
  39. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  40. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  41. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +30 -30
  42. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  43. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  44. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +22 -22
  45. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  46. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  47. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +22 -22
  48. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  49. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  50. package/web/.next/server/app/_global-error.html +2 -2
  51. package/web/.next/server/app/_global-error.rsc +1 -1
  52. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  53. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  54. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  55. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  56. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  57. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +3 -3
  58. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  59. package/web/.next/server/app/settings/page/server-reference-manifest.json +8 -8
  60. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  61. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  62. package/web/.next/server/app/skills/page/server-reference-manifest.json +8 -8
  63. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  64. package/web/.next/server/app/tools/page/server-reference-manifest.json +8 -8
  65. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  66. package/web/.next/server/app/version/page/server-reference-manifest.json +3 -3
  67. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  68. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  69. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4e741df2.js +1 -1
  70. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4e741df2.js.map +1 -1
  71. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  72. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  73. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_026fdffa.js +1 -1
  74. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_026fdffa.js.map +1 -1
  75. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_8b91e197.js +1 -1
  76. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_8b91e197.js.map +1 -1
  77. package/web/.next/server/chunks/ssr/[root-of-the-server]__2c791c42._.js +2 -2
  78. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  79. package/web/.next/server/chunks/ssr/[root-of-the-server]__3ef34e4c._.js +1 -1
  80. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +1 -1
  81. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +1 -1
  82. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +2 -2
  83. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js.map +1 -1
  84. package/web/.next/server/chunks/ssr/[root-of-the-server]__755cfe02._.js +1 -1
  85. package/web/.next/server/chunks/ssr/[root-of-the-server]__755cfe02._.js.map +1 -1
  86. package/web/.next/server/chunks/ssr/[root-of-the-server]__7894f27f._.js +1 -1
  87. package/web/.next/server/chunks/ssr/[root-of-the-server]__7894f27f._.js.map +1 -1
  88. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +1 -1
  89. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +1 -1
  90. package/web/.next/server/chunks/ssr/[root-of-the-server]__96670392._.js +2 -2
  91. package/web/.next/server/chunks/ssr/[root-of-the-server]__a628fb91._.js +1 -1
  92. package/web/.next/server/chunks/ssr/[root-of-the-server]__a628fb91._.js.map +1 -1
  93. package/web/.next/server/chunks/ssr/[root-of-the-server]__bfba58e6._.js +1 -1
  94. package/web/.next/server/chunks/ssr/[root-of-the-server]__bfba58e6._.js.map +1 -1
  95. package/web/.next/server/chunks/ssr/[root-of-the-server]__c3ab8422._.js +1 -1
  96. package/web/.next/server/chunks/ssr/[root-of-the-server]__c3ab8422._.js.map +1 -1
  97. package/web/.next/server/chunks/ssr/_02ec1aea._.js +1 -1
  98. package/web/.next/server/chunks/ssr/_02ec1aea._.js.map +1 -1
  99. package/web/.next/server/chunks/ssr/_7dca1882._.js +1 -1
  100. package/web/.next/server/chunks/ssr/_7dca1882._.js.map +1 -1
  101. package/web/.next/server/chunks/ssr/{_16ef149e._.js → _89a82abd._.js} +2 -2
  102. package/web/.next/server/chunks/ssr/_89a82abd._.js.map +1 -0
  103. package/web/.next/server/chunks/ssr/_a9a361e4._.js +3 -0
  104. package/web/.next/server/chunks/ssr/{_8bceaf55._.js.map → _a9a361e4._.js.map} +1 -1
  105. package/web/.next/server/chunks/ssr/_a9f57758._.js +1 -1
  106. package/web/.next/server/chunks/ssr/_d8575088._.js +1 -1
  107. package/web/.next/server/chunks/ssr/_d8575088._.js.map +1 -1
  108. package/web/.next/server/chunks/ssr/_f39a1adb._.js +1 -1
  109. package/web/.next/server/chunks/ssr/_f39a1adb._.js.map +1 -1
  110. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  111. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  112. package/web/.next/server/chunks/ssr/{src_presentation_web_0045d310._.js → src_presentation_web_5f36bd88._.js} +2 -2
  113. package/web/.next/server/chunks/ssr/{src_presentation_web_0045d310._.js.map → src_presentation_web_5f36bd88._.js.map} +1 -1
  114. package/web/.next/server/chunks/ssr/src_presentation_web_8e7fe0d1._.js +2 -2
  115. package/web/.next/server/chunks/ssr/src_presentation_web_8e7fe0d1._.js.map +1 -1
  116. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ca051134.js +1 -1
  117. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ca051134.js.map +1 -1
  118. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +1 -1
  119. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +1 -1
  120. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +1 -1
  121. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +1 -1
  122. package/web/.next/server/chunks/ssr/src_presentation_web_b9023017._.js +2 -2
  123. package/web/.next/server/chunks/ssr/src_presentation_web_b9023017._.js.map +1 -1
  124. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  125. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  126. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  127. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  128. package/web/.next/server/pages/500.html +2 -2
  129. package/web/.next/server/server-reference-manifest.js +1 -1
  130. package/web/.next/server/server-reference-manifest.json +38 -38
  131. package/web/.next/static/chunks/{9e967a66f56f18e0.js → 200a0442433a34c2.js} +1 -1
  132. package/web/.next/static/chunks/{6b50d1b354c18cbf.js → 3199d447b41ffd00.js} +1 -1
  133. package/web/.next/static/chunks/3e2d7d07926b05bf.css +1 -0
  134. package/web/.next/static/chunks/{c64555bf30144084.js → 40ac16f7d0575b56.js} +1 -1
  135. package/web/.next/static/chunks/4a4d5bd01a48bb79.js +2 -0
  136. package/web/.next/static/chunks/{f237664803f2aa48.js → 5d97db37b71920cc.js} +2 -2
  137. package/web/.next/static/chunks/641087b75c00fd32.js +1 -0
  138. package/web/.next/static/chunks/{becc612a0fd16dbe.js → 66275a1b29478cdd.js} +1 -1
  139. package/web/.next/static/chunks/{fd07085f271e62ad.js → 6e4120f29780591a.js} +1 -1
  140. package/web/.next/static/chunks/{22ae980d8aac10f1.js → 9701371df7acf83d.js} +1 -1
  141. package/web/.next/static/chunks/a397f547e76f2619.js +1 -0
  142. package/web/.next/static/chunks/{08fe95f4d4aa563f.js → b112088ebfdec932.js} +1 -1
  143. package/web/.next/static/chunks/ee618511baaec536.js +1 -0
  144. package/web/.next/server/chunks/ssr/_16ef149e._.js.map +0 -1
  145. package/web/.next/server/chunks/ssr/_8bceaf55._.js +0 -3
  146. package/web/.next/static/chunks/0ea15b83aeca7b1a.css +0 -1
  147. package/web/.next/static/chunks/3f16e12adcd8b74c.js +0 -2
  148. package/web/.next/static/chunks/66aeb95d8f7c4cea.js +0 -1
  149. package/web/.next/static/chunks/be53c17c52e3f4ec.js +0 -1
  150. package/web/.next/static/chunks/d69e172a4137599a.js +0 -1
  151. /package/web/.next/static/{bHwwAJ0fv-Jcs5NRAjOmY → FMkmrnam_Zl-tEu6N9L-A}/_buildManifest.js +0 -0
  152. /package/web/.next/static/{bHwwAJ0fv-Jcs5NRAjOmY → FMkmrnam_Zl-tEu6N9L-A}/_clientMiddlewareManifest.json +0 -0
  153. /package/web/.next/static/{bHwwAJ0fv-Jcs5NRAjOmY → FMkmrnam_Zl-tEu6N9L-A}/_ssgManifest.js +0 -0
@@ -59,9 +59,9 @@ export function createFastImplementNode(executor) {
59
59
  const durationMs = Date.now() - startTime;
60
60
  const elapsed = (durationMs / 1000).toFixed(1);
61
61
  log.info(`Complete (${result.result.length} chars, ${elapsed}s)`);
62
- // Validate that the executor actually produced file changes
62
+ // Validate that the executor actually produced changes (uncommitted or committed)
63
63
  const cwd = state.worktreePath || state.repositoryPath;
64
- if (!hasWorktreeChanges(cwd)) {
64
+ if (!hasWorktreeChanges(cwd) && !hasNewCommits(cwd)) {
65
65
  throw new Error('[fast-implement] Agent produced no file changes — it may have entered plan mode or asked questions instead of implementing. Retrying.');
66
66
  }
67
67
  // --- Evidence sub-agent: capture proof of completion (settings-gated) ---
@@ -156,6 +156,28 @@ function hasWorktreeChanges(cwd) {
156
156
  return false;
157
157
  }
158
158
  }
159
+ /**
160
+ * Check whether the current branch has commits that are not on the merge base
161
+ * (i.e., the agent made new commits during implementation). Uses
162
+ * `git log --oneline HEAD ^HEAD~1` as a lightweight check — if the agent
163
+ * committed, HEAD will have moved from where it started.
164
+ *
165
+ * We compare against the branch tracking ref or check if HEAD moved at all
166
+ * by looking at recent commits (within the last minute).
167
+ */
168
+ function hasNewCommits(cwd) {
169
+ try {
170
+ // Check if there are any commits in the last 2 minutes (generous window for agent execution)
171
+ const output = execSync('git log --oneline --since="2 minutes ago" HEAD', {
172
+ cwd,
173
+ encoding: 'utf-8',
174
+ });
175
+ return output.trim().length > 0;
176
+ }
177
+ catch {
178
+ return false;
179
+ }
180
+ }
159
181
  /**
160
182
  * Save evidence manifest to the shep home evidence folder so the
161
183
  * merge review UI can read it without accessing graph state.
@@ -1 +1 @@
1
- {"version":3,"file":"evidence-prompts.d.ts","sourceRoot":"","sources":["../../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/evidence-prompts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpE,MAAM,WAAW,qBAAqB;IACpC,kEAAkE;IAClE,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,iBAAiB,EACxB,OAAO,GAAE,qBAAiD,GACzD,MAAM,CA0MR;AAgCD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,eAAe,EAAE,EACzB,OAAO,GAAE,qBAAiD,GACzD,MAAM,CAqBR"}
1
+ {"version":3,"file":"evidence-prompts.d.ts","sourceRoot":"","sources":["../../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/evidence-prompts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpE,MAAM,WAAW,qBAAqB;IACpC,kEAAkE;IAClE,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,iBAAiB,EACxB,OAAO,GAAE,qBAAiD,GACzD,MAAM,CAoNR;AAgCD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,eAAe,EAAE,EACzB,OAAO,GAAE,qBAAiD,GACzD,MAAM,CAsBR"}
@@ -75,7 +75,8 @@ Save all evidence files to the shep home folder:
75
75
  })}`
76
76
  : `\n## Git Operations
77
77
 
78
- Do NOT commit or push any files. Evidence is stored locally only.`;
78
+ Do NOT commit or push any evidence files. Evidence is stored locally only.
79
+ However, if you make code fixes during evidence collection, those fixes MUST be committed (see "Handling Code Fixes" above).`;
79
80
  return `You are a senior software engineer performing the EVIDENCE COLLECTION phase of feature development.
80
81
 
81
82
  Your goal is to capture visual and textual evidence proving that the implemented tasks work as expected.${options.commitEvidence ? ' This evidence will be embedded in the pull request body for reviewer verification.' : ' This evidence will be available for review locally.'}
@@ -200,10 +201,19 @@ If no evidence can be captured (e.g., no UI to screenshot, no tests to run), out
200
201
  []
201
202
  \`\`\`
202
203
 
204
+ ## Handling Code Fixes During Evidence Collection
205
+
206
+ If you discover that tests fail, the build breaks, or something needs a fix while collecting evidence:
207
+ 1. **Fix the issue first** — make the necessary code changes
208
+ 2. **Commit the fix immediately** with a descriptive conventional commit message (e.g. \`fix(scope): resolve test failure discovered during evidence collection\`)${state.push ? `\n3. **Push the fix**: \`git push -u origin HEAD\`` : ''}
209
+ 3. **Then continue** capturing evidence — the evidence should reflect the working state after the fix
210
+
211
+ This ensures implementation changes and evidence remain in separate commits with a clean history.
212
+
203
213
  ## Constraints
204
214
 
205
- - Capture evidence for completed tasks only — do NOT modify any implementation code
206
215
  - Capture evidence that proves the feature works — prioritize screenshots for UI changes, test output for logic changes
216
+ - If you need to fix code to make evidence pass, commit the fix BEFORE capturing/committing evidence
207
217
  - If a screenshot capture fails, document the failure reason in the evidence description and try alternative approaches before giving up
208
218
  - Do NOT capture evidence for documentation-only changes or spec files
209
219
  ${commitSection}`;
@@ -253,6 +263,7 @@ ${formatValidationErrors(errors)}
253
263
  ### Instructions
254
264
 
255
265
  - Review the issues above and capture the missing evidence
266
+ - If you need to fix code to resolve a gap (e.g., a failing test), commit the fix FIRST before recapturing evidence
256
267
  - Focus on the specific gaps listed — do not re-capture evidence that already exists
257
268
  - Ensure new evidence files are saved to the correct paths
258
269
  - Output ALL evidence records (both previously captured and newly captured) in the JSON output block`;
@@ -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,CAuEzE"}
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"}
@@ -179,7 +179,9 @@ ${userQuery}
179
179
  3. Run the test suite and fix any failures
180
180
  4. Run the linter and fix any issues
181
181
  5. Ensure the project builds successfully
182
- 6. Do NOT commit, push, or create a PR just make the code changes
182
+ 6. Commit your work with descriptive conventional commit messages (e.g. \`feat(scope): description\`)
183
+ - Commit incrementally as you complete logical units of work — do NOT wait until the end
184
+ - 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` : ''}
183
185
 
184
186
  ## Working Directory
185
187
 
@@ -209,7 +211,6 @@ ${dirListing}
209
211
 
210
212
  - Implement ONLY what the user requested — nothing more
211
213
  - Follow existing codebase conventions and patterns
212
- - Do NOT commit, push, or create pull requests
213
214
  - Do NOT modify any spec YAML files
214
215
  - Keep changes focused and minimal
215
216
  - Do NOT enter plan mode — implement directly without planning phases
@@ -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,CAgER"}
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"}
@@ -79,7 +79,10 @@ ${taskSections}
79
79
  2. For tasks with TDD guidance: write tests alongside implementation following the hints provided — use them as guidance, not rigid steps
80
80
  3. Follow existing codebase conventions for file placement, naming patterns, and architecture layers
81
81
  ${verificationBlock}
82
- 5. Commit your work with descriptive conventional commit messages (e.g. \`feat(scope): description\`)${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` : ''}
82
+ 5. Commit your work with descriptive conventional commit messages (e.g. \`feat(scope): description\`)
83
+ - Commit incrementally as you complete logical units of work — do NOT wait until the end
84
+ - Each commit should be a coherent, working unit
85
+ - 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` : ''}
83
86
 
84
87
  ## Working Directory
85
88
 
@@ -1 +1 @@
1
- {"version":3,"file":"onboarding.wizard.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/tui/wizards/onboarding/onboarding.wizard.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AASH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAYzD;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,GAAE,MAAM,OAAO,CAAC,iBAAiB,CAAgB,EAC1D,OAAO,GAAE,MAAM,OAAO,CAAC,MAAM,CAAc,EAC3C,YAAY,GAAE,MAAM,OAAO,CAAC,sBAAsB,CAA2B,GAC5E,OAAO,CAAC,IAAI,CAAC,CAoCf"}
1
+ {"version":3,"file":"onboarding.wizard.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/tui/wizards/onboarding/onboarding.wizard.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AASH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAmBzD;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,GAAE,MAAM,OAAO,CAAC,iBAAiB,CAAgB,EAC1D,OAAO,GAAE,MAAM,OAAO,CAAC,MAAM,CAAc,EAC3C,YAAY,GAAE,MAAM,OAAO,CAAC,sBAAsB,CAA2B,GAC5E,OAAO,CAAC,IAAI,CAAC,CAoCf"}
@@ -21,6 +21,11 @@ function showWelcomeBanner() {
21
21
  console.log(pc.cyan(pc.bold(' Welcome to Shep AI CLI')));
22
22
  console.log(pc.dim(" Let's set up your environment in 3 quick steps."));
23
23
  console.log();
24
+ console.log(pc.yellow(' ⚠ Prerequisite: ') +
25
+ pc.bold('GitHub CLI (gh)') +
26
+ pc.dim(' is required for full CI/CD self-healing capabilities.'));
27
+ console.log(pc.dim(' Install it from: ') + pc.underline('https://cli.github.com/'));
28
+ console.log();
24
29
  }
25
30
  /**
26
31
  * Runs the first-run onboarding wizard.
@@ -1 +1 @@
1
- {"version":3,"file":"welcome-agent-setup.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/control-center/welcome-agent-setup.tsx"],"names":[],"mappings":"AAWA,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,wBAAgB,iBAAiB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,sBAAsB,2CA4NlF"}
1
+ {"version":3,"file":"welcome-agent-setup.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/control-center/welcome-agent-setup.tsx"],"names":[],"mappings":"AAWA,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,wBAAgB,iBAAiB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,sBAAsB,2CAkPlF"}
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useState, useEffect, useCallback, useRef } from 'react';
4
- import { ChevronLeft, Loader2 } from 'lucide-react';
4
+ import { ChevronLeft, Loader2, AlertTriangle } from 'lucide-react';
5
5
  import { getAllAgentModels } from '../../../app/actions/get-all-agent-models.js';
6
6
  import { updateAgentAndModel } from '../../../app/actions/update-agent-and-model.js';
7
7
  import { getAgentTypeIcon } from '../../common/feature-node/agent-type-icons.js';
@@ -93,7 +93,7 @@ export function WelcomeAgentSetup({ onComplete, className }) {
93
93
  : activeGroup
94
94
  ? `Choose which ${activeGroup.label} model to run.`
95
95
  : '';
96
- return (_jsxs("div", { "data-testid": "welcome-agent-setup", className: cn('flex w-full flex-col items-center', className), children: [_jsx("div", { className: "mb-8 flex w-full max-w-xs items-center gap-1.5", children: STEPS.map((s, i) => (_jsx("div", { className: cn('h-[3px] flex-1 rounded-full transition-colors duration-300', i <= stepIndex ? 'bg-foreground/60' : 'bg-muted') }, s))) }), _jsxs("div", { className: cn('flex w-full flex-col items-center transition-opacity duration-200', visible && !transitioning ? 'opacity-100' : 'opacity-0'), children: [_jsx("h1", { className: "text-foreground/90 text-center text-5xl font-extralight tracking-tight", children: heroTitle }), _jsx("p", { className: "text-muted-foreground mt-3 text-center text-lg leading-relaxed font-light", children: heroSubtitle }), _jsxs("div", { className: "mt-8 flex w-full flex-col items-center", children: [step === 'select-agent' && (_jsx("div", { "data-testid": "agent-list", className: "grid w-full max-w-lg gap-3", style: {
96
+ return (_jsxs("div", { "data-testid": "welcome-agent-setup", className: cn('flex w-full flex-col items-center', className), children: [_jsx("div", { className: "mb-8 flex w-full max-w-xs items-center gap-1.5", children: STEPS.map((s, i) => (_jsx("div", { className: cn('h-[3px] flex-1 rounded-full transition-colors duration-300', i <= stepIndex ? 'bg-foreground/60' : 'bg-muted') }, s))) }), _jsxs("div", { className: cn('flex w-full flex-col items-center transition-opacity duration-200', visible && !transitioning ? 'opacity-100' : 'opacity-0'), children: [_jsx("h1", { className: "text-foreground/90 text-center text-5xl font-extralight tracking-tight", children: heroTitle }), _jsx("p", { className: "text-muted-foreground mt-3 text-center text-lg leading-relaxed font-light", children: heroSubtitle }), step === 'select-agent' && (_jsxs("div", { "data-testid": "gh-cli-notice", className: "mt-5 flex items-start gap-2 rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 dark:border-amber-900 dark:bg-amber-950/40", children: [_jsx(AlertTriangle, { className: "mt-0.5 h-4 w-4 shrink-0 text-amber-500" }), _jsxs("p", { className: "text-sm leading-relaxed text-amber-800 dark:text-amber-300", children: [_jsx("span", { className: "font-medium", children: "GitHub CLI (gh)" }), " is required for full CI/CD self-healing capabilities.", ' ', _jsx("a", { href: "https://cli.github.com/", target: "_blank", rel: "noopener noreferrer", className: "underline underline-offset-2 hover:text-amber-900 dark:hover:text-amber-200", children: "Install it here" }), "."] })] })), _jsxs("div", { className: "mt-8 flex w-full flex-col items-center", children: [step === 'select-agent' && (_jsx("div", { "data-testid": "agent-list", className: "grid w-full max-w-lg gap-3", style: {
97
97
  gridTemplateColumns: `repeat(${Math.min(groups.length, 4)}, minmax(0, 1fr))`,
98
98
  }, children: groups.map((group) => {
99
99
  const GroupIcon = getAgentTypeIcon(group.agentType);