@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.
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.js +44 -4
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.js +6 -20
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +4 -27
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +1 -1
- package/web/.next/required-server-files.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +38 -38
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +38 -38
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +38 -38
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +38 -38
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/features/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/features/page.js.nft.json +1 -1
- package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/settings/page/server-reference-manifest.json +9 -9
- package/web/.next/server/app/settings/page.js.nft.json +1 -1
- package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/server-reference-manifest.json +13 -13
- package/web/.next/server/app/skills/page.js.nft.json +1 -1
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/tools/page.js.nft.json +1 -1
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_ad0071c9.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_ad0071c9.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_90d98b2b.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_90d98b2b.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_d3828105.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_d3828105.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__51ec77a8._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__51ec77a8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__540c615f._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__66047a1b._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__66047a1b._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a932cd3a._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a932cd3a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aa72e794._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aa72e794._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
- package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
- package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_4cbb7f95._.js +1 -1
- package/web/.next/server/chunks/ssr/_4cbb7f95._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
- package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_16c8a171._.js → _5fab0cc1._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_16c8a171._.js.map → _5fab0cc1._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_6abfa39e._.js +1 -1
- package/web/.next/server/chunks/ssr/{_2fd33f1b._.js → _a0a99bae._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_2fd33f1b._.js.map → _a0a99bae._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{_b5a26c27._.js → _eb557564._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_b5a26c27._.js.map → _eb557564._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_f8c55130._.js +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_17d39233._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_17d39233._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_54b02639._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_54b02639._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_7b7b9e3b._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_7b7b9e3b._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_807cba76._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_807cba76._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_90b5e66e.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_90b5e66e.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_e1cd1869._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_e1cd1869._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_e3a30e30._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_e3a30e30._.js.map +1 -1
- package/web/.next/server/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +50 -50
- package/web/.next/static/chunks/{7517e2c7d7191406.js → 39c131125e69106d.js} +1 -1
- package/web/.next/static/chunks/{0db371e139f16334.js → 3b003527d7bcd7e6.js} +1 -1
- package/web/.next/static/chunks/{b5bd3b69213a298c.js → 3e09b44cfdbb3978.js} +1 -1
- package/web/.next/static/chunks/{ccdfcef5b3a099c8.js → 65895c064ee39fc0.js} +1 -1
- package/web/.next/static/chunks/{4f1cc5a251f9d764.js → 65f5bb330d5cdbc7.js} +1 -1
- package/web/.next/static/chunks/{a94b8ad84393c6e1.js → 6c5df4d5b97e9a49.js} +1 -1
- package/web/.next/static/chunks/{89658bb556d8e7fe.js → 7bd3f3e579f8ac9a.js} +3 -3
- package/web/.next/static/chunks/{5e9b76ba93f955b6.js → 807fd512dc6291cd.js} +1 -1
- package/web/.next/static/chunks/{b34b04945a489daa.js → 97b92a54b8123692.js} +1 -1
- package/web/.next/static/chunks/{b72c2de6120e6d37.js → 9cc5961f954fc328.js} +1 -1
- package/web/.next/static/chunks/{e7e7d8d04d637b97.js → a5cdc09281f37140.js} +2 -2
- package/web/.next/static/chunks/{963bd67b25ae95f1.js → b07b4ca9abce724f.js} +1 -1
- package/web/.next/static/chunks/{3c643c164cedb852.js → b3ae59b17bc2f06a.js} +1 -1
- package/web/.next/static/chunks/{7edf901079bf6b06.js → b55a003b22a32857.js} +2 -2
- /package/web/.next/static/{i_Zn21somjxBdp03Llulr → Nkgq2BONKCekghENKhutM}/_buildManifest.js +0 -0
- /package/web/.next/static/{i_Zn21somjxBdp03Llulr → Nkgq2BONKCekghENKhutM}/_clientMiddlewareManifest.json +0 -0
- /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;
|
|
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
|
-
//
|
|
117
|
-
//
|
|
118
|
-
//
|
|
119
|
-
|
|
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 && {
|
package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts
CHANGED
|
@@ -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
|
-
}, "
|
|
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;
|
|
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"}
|
package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.js
CHANGED
|
@@ -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,
|
|
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,
|
|
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'
|
|
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'
|
|
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'
|
|
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'
|
|
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;
|
|
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"}
|
package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js
CHANGED
|
@@ -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 —
|
|
278
|
-
//
|
|
279
|
-
|
|
280
|
-
|
|
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,
|