@shepai/cli 1.175.0-pr533.61d62fe → 1.175.0-pr534.6e82e47

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 (176) hide show
  1. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.d.ts.map +1 -1
  2. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.js +44 -4
  3. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +1 -1
  4. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts.map +1 -1
  5. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.js +6 -20
  6. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  7. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +4 -27
  8. package/dist/tsconfig.build.tsbuildinfo +1 -1
  9. package/package.json +1 -1
  10. package/web/.next/BUILD_ID +1 -1
  11. package/web/.next/build-manifest.json +2 -2
  12. package/web/.next/fallback-build-manifest.json +2 -2
  13. package/web/.next/prerender-manifest.json +3 -3
  14. package/web/.next/required-server-files.js +1 -1
  15. package/web/.next/required-server-files.json +1 -1
  16. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
  17. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  18. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  19. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
  20. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  21. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  22. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +30 -30
  23. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  24. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  25. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +38 -38
  26. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  27. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  28. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +38 -38
  29. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  30. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  31. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  32. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  33. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  34. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  35. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  36. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  37. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
  38. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  39. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  40. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +30 -30
  41. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  42. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  43. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +38 -38
  44. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  45. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  46. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +38 -38
  47. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  48. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  49. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
  50. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  51. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  52. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  53. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  54. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  55. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  56. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  57. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  58. package/web/.next/server/app/_global-error.html +2 -2
  59. package/web/.next/server/app/_global-error.rsc +1 -1
  60. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  61. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  62. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  63. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  64. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  65. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
  66. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  67. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  68. package/web/.next/server/app/features/page/server-reference-manifest.json +6 -6
  69. package/web/.next/server/app/features/page.js.nft.json +1 -1
  70. package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
  71. package/web/.next/server/app/settings/page/server-reference-manifest.json +9 -9
  72. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  73. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  74. package/web/.next/server/app/skills/page/server-reference-manifest.json +13 -13
  75. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  76. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  77. package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
  78. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  79. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  80. package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
  81. package/web/.next/server/app/version/page.js.nft.json +1 -1
  82. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  83. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  84. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_ad0071c9.js +1 -1
  85. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_ad0071c9.js.map +1 -1
  86. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_90d98b2b.js +1 -1
  87. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_90d98b2b.js.map +1 -1
  88. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_d3828105.js +1 -1
  89. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_d3828105.js.map +1 -1
  90. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  91. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  92. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
  93. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  94. package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js +1 -1
  95. package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js.map +1 -1
  96. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +1 -1
  97. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -1
  98. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  99. package/web/.next/server/chunks/ssr/[root-of-the-server]__51ec77a8._.js +1 -1
  100. package/web/.next/server/chunks/ssr/[root-of-the-server]__51ec77a8._.js.map +1 -1
  101. package/web/.next/server/chunks/ssr/[root-of-the-server]__540c615f._.js +2 -2
  102. package/web/.next/server/chunks/ssr/[root-of-the-server]__66047a1b._.js +1 -1
  103. package/web/.next/server/chunks/ssr/[root-of-the-server]__66047a1b._.js.map +1 -1
  104. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js +1 -1
  105. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js.map +1 -1
  106. package/web/.next/server/chunks/ssr/[root-of-the-server]__a932cd3a._.js +1 -1
  107. package/web/.next/server/chunks/ssr/[root-of-the-server]__a932cd3a._.js.map +1 -1
  108. package/web/.next/server/chunks/ssr/[root-of-the-server]__aa72e794._.js +1 -1
  109. package/web/.next/server/chunks/ssr/[root-of-the-server]__aa72e794._.js.map +1 -1
  110. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +1 -1
  111. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -1
  112. package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
  113. package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
  114. package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
  115. package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
  116. package/web/.next/server/chunks/ssr/_4cbb7f95._.js +1 -1
  117. package/web/.next/server/chunks/ssr/_4cbb7f95._.js.map +1 -1
  118. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  119. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  120. package/web/.next/server/chunks/ssr/{_16c8a171._.js → _5fab0cc1._.js} +2 -2
  121. package/web/.next/server/chunks/ssr/{_16c8a171._.js.map → _5fab0cc1._.js.map} +1 -1
  122. package/web/.next/server/chunks/ssr/_6abfa39e._.js +1 -1
  123. package/web/.next/server/chunks/ssr/{_2fd33f1b._.js → _a0a99bae._.js} +2 -2
  124. package/web/.next/server/chunks/ssr/{_2fd33f1b._.js.map → _a0a99bae._.js.map} +1 -1
  125. package/web/.next/server/chunks/ssr/{_b5a26c27._.js → _eb557564._.js} +2 -2
  126. package/web/.next/server/chunks/ssr/{_b5a26c27._.js.map → _eb557564._.js.map} +1 -1
  127. package/web/.next/server/chunks/ssr/_f8c55130._.js +1 -1
  128. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  129. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  130. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  131. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
  132. package/web/.next/server/chunks/ssr/src_presentation_web_17d39233._.js +1 -1
  133. package/web/.next/server/chunks/ssr/src_presentation_web_17d39233._.js.map +1 -1
  134. package/web/.next/server/chunks/ssr/src_presentation_web_54b02639._.js +2 -2
  135. package/web/.next/server/chunks/ssr/src_presentation_web_54b02639._.js.map +1 -1
  136. package/web/.next/server/chunks/ssr/src_presentation_web_7b7b9e3b._.js +2 -2
  137. package/web/.next/server/chunks/ssr/src_presentation_web_7b7b9e3b._.js.map +1 -1
  138. package/web/.next/server/chunks/ssr/src_presentation_web_807cba76._.js +1 -1
  139. package/web/.next/server/chunks/ssr/src_presentation_web_807cba76._.js.map +1 -1
  140. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_90b5e66e.js +1 -1
  141. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_90b5e66e.js.map +1 -1
  142. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js +1 -1
  143. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js.map +1 -1
  144. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js +1 -1
  145. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js.map +1 -1
  146. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
  147. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
  148. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
  149. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  150. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  151. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
  152. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
  153. package/web/.next/server/chunks/ssr/src_presentation_web_e1cd1869._.js +1 -1
  154. package/web/.next/server/chunks/ssr/src_presentation_web_e1cd1869._.js.map +1 -1
  155. package/web/.next/server/chunks/ssr/src_presentation_web_e3a30e30._.js +1 -1
  156. package/web/.next/server/chunks/ssr/src_presentation_web_e3a30e30._.js.map +1 -1
  157. package/web/.next/server/pages/500.html +2 -2
  158. package/web/.next/server/server-reference-manifest.js +1 -1
  159. package/web/.next/server/server-reference-manifest.json +50 -50
  160. package/web/.next/static/chunks/{7517e2c7d7191406.js → 39c131125e69106d.js} +1 -1
  161. package/web/.next/static/chunks/{0db371e139f16334.js → 3b003527d7bcd7e6.js} +1 -1
  162. package/web/.next/static/chunks/{b5bd3b69213a298c.js → 3e09b44cfdbb3978.js} +1 -1
  163. package/web/.next/static/chunks/{ccdfcef5b3a099c8.js → 65895c064ee39fc0.js} +1 -1
  164. package/web/.next/static/chunks/{4f1cc5a251f9d764.js → 65f5bb330d5cdbc7.js} +1 -1
  165. package/web/.next/static/chunks/{a94b8ad84393c6e1.js → 6c5df4d5b97e9a49.js} +1 -1
  166. package/web/.next/static/chunks/{89658bb556d8e7fe.js → 7bd3f3e579f8ac9a.js} +3 -3
  167. package/web/.next/static/chunks/{5e9b76ba93f955b6.js → 807fd512dc6291cd.js} +1 -1
  168. package/web/.next/static/chunks/{b34b04945a489daa.js → 97b92a54b8123692.js} +1 -1
  169. package/web/.next/static/chunks/{b72c2de6120e6d37.js → 9cc5961f954fc328.js} +1 -1
  170. package/web/.next/static/chunks/{e7e7d8d04d637b97.js → a5cdc09281f37140.js} +2 -2
  171. package/web/.next/static/chunks/{963bd67b25ae95f1.js → b07b4ca9abce724f.js} +1 -1
  172. package/web/.next/static/chunks/{3c643c164cedb852.js → b3ae59b17bc2f06a.js} +1 -1
  173. package/web/.next/static/chunks/{7edf901079bf6b06.js → b55a003b22a32857.js} +2 -2
  174. /package/web/.next/static/{i_Zn21somjxBdp03Llulr → Nkgq2BONKCekghENKhutM}/_buildManifest.js +0 -0
  175. /package/web/.next/static/{i_Zn21somjxBdp03Llulr → Nkgq2BONKCekghENKhutM}/_clientMiddlewareManifest.json +0 -0
  176. /package/web/.next/static/{i_Zn21somjxBdp03Llulr → Nkgq2BONKCekghENKhutM}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code-interactive-executor.service.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAOH,OAAO,KAAK,EACV,yBAAyB,EACzB,uBAAuB,EACvB,6BAA6B,EAI9B,MAAM,wFAAwF,CAAC;AAgBhG,qBAAa,6BAA8B,YAAW,yBAAyB;IACvE,aAAa,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAOvF,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,6BAA6B,CAAC;IAOzC;;;;;;OAMG;IACH,OAAO,CAAC,OAAO;IAmBf,OAAO,CAAC,eAAe;IAgDvB,OAAO,CAAC,WAAW;IAqCnB;;;;;;OAMG;YACY,SAAS;IA6BxB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,aAAa;CA4PtB"}
1
+ {"version":3,"file":"claude-code-interactive-executor.service.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAOH,OAAO,KAAK,EACV,yBAAyB,EACzB,uBAAuB,EACvB,6BAA6B,EAI9B,MAAM,wFAAwF,CAAC;AAsDhG,qBAAa,6BAA8B,YAAW,yBAAyB;IACvE,aAAa,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAOvF,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,6BAA6B,CAAC;IAOzC;;;;;;OAMG;IACH,OAAO,CAAC,OAAO;IAmBf,OAAO,CAAC,eAAe;IAmDvB,OAAO,CAAC,WAAW;IAqCnB;;;;;;OAMG;YACY,SAAS;IA6BxB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,aAAa;CA4PtB"}
@@ -39,6 +39,43 @@
39
39
  import { unstable_v2_createSession, unstable_v2_resumeSession, } from '@anthropic-ai/claude-agent-sdk';
40
40
  /** Default model used when options.model is not specified. */
41
41
  const DEFAULT_MODEL = 'claude-sonnet-4-6';
42
+ /**
43
+ * All standard Claude Code tool names to auto-allow without permission prompts.
44
+ *
45
+ * The V2 SDK API hardcodes `allowDangerouslySkipPermissions: false`, so
46
+ * `permissionMode: 'bypassPermissions'` does not work. Instead, V2 provides
47
+ * `allowedTools` to pre-approve tools at the CLI level — no callback needed.
48
+ *
49
+ * AskUserQuestion is intentionally excluded: it is intercepted by the
50
+ * `canUseTool` callback so the session service can pause the stream and
51
+ * collect user answers before resuming.
52
+ */
53
+ const AUTO_ALLOWED_TOOLS = [
54
+ 'Bash',
55
+ 'Read',
56
+ 'Write',
57
+ 'Edit',
58
+ 'Glob',
59
+ 'Grep',
60
+ 'LS',
61
+ 'Agent',
62
+ 'WebFetch',
63
+ 'WebSearch',
64
+ 'NotebookEdit',
65
+ 'NotebookRead',
66
+ 'TodoWrite',
67
+ 'TaskCreate',
68
+ 'TaskGet',
69
+ 'TaskList',
70
+ 'TaskUpdate',
71
+ 'TaskOutput',
72
+ 'TaskStop',
73
+ 'EnterPlanMode',
74
+ 'ExitPlanMode',
75
+ 'SendMessage',
76
+ 'KillShell',
77
+ 'LSP',
78
+ ];
42
79
  /**
43
80
  * Process-level mutex for process.chdir().
44
81
  *
@@ -113,10 +150,13 @@ export class ClaudeCodeInteractiveExecutor {
113
150
  : undefined;
114
151
  return {
115
152
  model: options.model ?? DEFAULT_MODEL,
116
- // When onUserQuestion is provided, use canUseTool to intercept AskUserQuestion
117
- // while auto-allowing everything else (replaces bypassPermissions).
118
- // When not provided, use bypassPermissions for backward compatibility.
119
- ...(canUseTool ? { canUseTool } : { permissionMode: 'bypassPermissions' }),
153
+ // Auto-allow all standard tools at the CLI level. This replaces the V1
154
+ // bypassPermissions approach V2 hardcodes allowDangerouslySkipPermissions
155
+ // to false, so bypassPermissions silently falls back to default mode.
156
+ allowedTools: AUTO_ALLOWED_TOOLS,
157
+ // When onUserQuestion is provided, use canUseTool to intercept
158
+ // AskUserQuestion while auto-allowing any unlisted tools as a fallback.
159
+ ...(canUseTool ? { canUseTool } : {}),
120
160
  env: cleanEnv,
121
161
  // Forward system prompt using preset+append pattern
122
162
  ...(options.systemPrompt && {
@@ -89,7 +89,7 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
89
89
  ciFixAttempts?: number | undefined;
90
90
  ciFixHistory?: import("../../../../domain/index.js").CiFixRecord[] | undefined;
91
91
  ciFixStatus?: "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted" | undefined;
92
- }, "plan" | "implement" | "__start__" | "analyze" | "requirements" | "research" | "validate_spec_analyze" | "validate_spec_requirements" | "validate_research" | "validate_plan_tasks" | "repair_spec_analyze" | "repair_spec_requirements" | "repair_research" | "repair_plan_tasks", {
92
+ }, "implement" | "__start__" | "analyze" | "requirements" | "research" | "plan" | "validate_spec_analyze" | "validate_spec_requirements" | "validate_research" | "validate_plan_tasks" | "repair_spec_analyze" | "repair_spec_requirements" | "repair_research" | "repair_plan_tasks", {
93
93
  featureId: {
94
94
  (): import("@langchain/langgraph").LastValue<string>;
95
95
  (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"feature-agent-graph.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAOpG,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAelF,OAAO,EAAE,sBAAsB,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE5E;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;CACjD;AAwJD;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,qBAAqB,GAAG,cAAc,EACtD,YAAY,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAsFnC"}
1
+ {"version":3,"file":"feature-agent-graph.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAOpG,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAclF,OAAO,EAAE,sBAAsB,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE5E;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;CACjD;AAwID;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,qBAAqB,GAAG,cAAc,EACtD,YAAY,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAgFnC"}
@@ -11,7 +11,7 @@ import { createRepairNode } from './nodes/repair.node.js';
11
11
  import { validateSpecAnalyze, validateSpecRequirements } from './nodes/schemas/spec.schema.js';
12
12
  import { validateResearch } from './nodes/schemas/research.schema.js';
13
13
  import { validatePlan, validateTasks } from './nodes/schemas/plan.schema.js';
14
- import { readSpecFile, safeYamlLoad, createNodeLogger, getCompletedPhases, clearCompletedPhase, } from './nodes/node-helpers.js';
14
+ import { readSpecFile, safeYamlLoad, createNodeLogger, getCompletedPhases, } from './nodes/node-helpers.js';
15
15
  // Re-export state types for consumers
16
16
  export { FeatureAgentAnnotation } from './state.js';
17
17
  /**
@@ -33,26 +33,12 @@ function routeReexecution(selfNode, nextNode) {
33
33
  * Factory that creates a conditional edge function for validation routing.
34
34
  *
35
35
  * Routes to successNode on pass, repairNode on fail, throws after maxRetries.
36
- *
37
- * When retries are exhausted, clears the producer node's completedPhases entry
38
- * before throwing. This ensures that on resume, the producer node re-executes
39
- * the full agent instead of skipping (because `executeNode` checks
40
- * completedPhases). Without this, a phase that produced empty/unfilled output
41
- * would be permanently stuck: the repair node can only fix formatting, not
42
- * generate content from scratch, and the producer would skip on every retry.
43
36
  */
44
- function routeValidation(successNode, repairNode, producerNode, maxRetries = 3) {
45
- const log = createNodeLogger('routeValidation');
37
+ function routeValidation(successNode, repairNode, maxRetries = 3) {
46
38
  return (state) => {
47
39
  if (state.lastValidationErrors.length === 0)
48
40
  return successNode;
49
41
  if (state.validationRetries >= maxRetries) {
50
- // Clear the producer's completed phase so that on resume the producer
51
- // node re-executes the full agent instead of skipping.
52
- if (producerNode) {
53
- log.info(`Clearing completed phase '${producerNode}' so retry re-runs the agent`);
54
- clearCompletedPhase(state.specDir, producerNode, log);
55
- }
56
42
  throw new Error(`Validation failed after ${maxRetries} repair attempts for '${state.lastValidationTarget}': ${state.lastValidationErrors.join('; ')}`);
57
43
  }
58
44
  return repairNode;
@@ -188,16 +174,16 @@ export function createFeatureAgentGraph(depsOrExecutor, checkpointer) {
188
174
  // --- Edges: linear flow with validation gates ---
189
175
  .addEdge(START, 'analyze')
190
176
  .addEdge('analyze', 'validate_spec_analyze')
191
- .addConditionalEdges('validate_spec_analyze', routeValidation('requirements', 'repair_spec_analyze', 'analyze'))
177
+ .addConditionalEdges('validate_spec_analyze', routeValidation('requirements', 'repair_spec_analyze'))
192
178
  .addEdge('repair_spec_analyze', 'validate_spec_analyze')
193
179
  .addConditionalEdges('requirements', routeReexecution('requirements', 'validate_spec_requirements'))
194
- .addConditionalEdges('validate_spec_requirements', routeValidation('research', 'repair_spec_requirements', 'requirements'))
180
+ .addConditionalEdges('validate_spec_requirements', routeValidation('research', 'repair_spec_requirements'))
195
181
  .addEdge('repair_spec_requirements', 'validate_spec_requirements')
196
182
  .addEdge('research', 'validate_research')
197
- .addConditionalEdges('validate_research', routeValidation('plan', 'repair_research', 'research'))
183
+ .addConditionalEdges('validate_research', routeValidation('plan', 'repair_research'))
198
184
  .addEdge('repair_research', 'validate_research')
199
185
  .addConditionalEdges('plan', routeReexecution('plan', 'validate_plan_tasks'))
200
- .addConditionalEdges('validate_plan_tasks', routeValidation('implement', 'repair_plan_tasks', 'plan'))
186
+ .addConditionalEdges('validate_plan_tasks', routeValidation('implement', 'repair_plan_tasks'))
201
187
  .addEdge('repair_plan_tasks', 'validate_plan_tasks');
202
188
  // --- Merge node: wired when deps are provided ---
203
189
  if (deps.mergeNodeDeps) {
@@ -1 +1 @@
1
- {"version":3,"file":"feature-agent-worker.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,kBAAkB,CAAC;AAiB1B,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAW7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAkF1D;AAgCD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAiU/D"}
1
+ {"version":3,"file":"feature-agent-worker.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,kBAAkB,CAAC;AAgB1B,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAW7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAkF1D;AAgCD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuS/D"}
@@ -11,7 +11,6 @@
11
11
  import 'reflect-metadata';
12
12
  import { join } from 'node:path';
13
13
  import { homedir } from 'node:os';
14
- import { unlinkSync } from 'node:fs';
15
14
  import { Command } from '@langchain/langgraph';
16
15
  import { initializeContainer, container } from '../../../di/container.js';
17
16
  import { createFeatureAgentGraph } from './feature-agent-graph.js';
@@ -274,32 +273,10 @@ export async function runWorker(args) {
274
273
  result = await graph.invoke(new Command({ resume: resumeValue, update: stateUpdate }), graphConfig);
275
274
  }
276
275
  else if (args.resume) {
277
- // Resume from error — delete the stale checkpoint and re-invoke from
278
- // scratch. Each producer node checks its completedPhases entry and skips
279
- // if already done, so completed phases replay instantly. The phase that
280
- // failed has its completedPhases entry cleared by routeValidation (or was
281
- // never marked complete if the executor threw), so it re-executes fully.
282
- //
283
- // Why delete the checkpoint instead of resuming from it:
284
- // When a validate/repair loop exhausts retries and throws, the checkpoint
285
- // captures the validation node with maxed-out retries. Resuming from that
286
- // checkpoint would re-evaluate the same conditional edge and throw again
287
- // immediately — the user's retry would be stuck in an infinite loop.
288
- log('Deleting stale checkpoint for fresh resume...');
289
- try {
290
- unlinkSync(checkpointPath);
291
- log('Checkpoint deleted successfully');
292
- }
293
- catch {
294
- log('No checkpoint to delete (first run or already cleaned)');
295
- }
296
- // Re-create checkpointer after deleting the old DB
297
- const freshCheckpointer = createCheckpointer(checkpointPath);
298
- const freshGraph = args.fast
299
- ? createFastFeatureAgentGraph(graphDeps, freshCheckpointer)
300
- : createFeatureAgentGraph(graphDeps, freshCheckpointer);
301
- log('Resuming graph with fresh checkpoint...');
302
- result = await freshGraph.invoke({
276
+ // Resume from error — re-invoke with initial state; LangGraph continues
277
+ // from the last successfully checkpointed node.
278
+ log('Resuming graph from error checkpoint...');
279
+ result = await graph.invoke({
303
280
  featureId: args.featureId,
304
281
  repositoryPath: args.repo,
305
282
  worktreePath: args.worktreePath ?? args.repo,