@shepai/cli 1.118.0 → 1.119.0
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/apis/json-schema/PhaseTiming.yaml +22 -1
- package/apis/json-schema/WorkflowConfig.yaml +10 -0
- package/dist/packages/core/src/application/ports/output/agents/agent-session-repository.interface.d.ts +2 -0
- package/dist/packages/core/src/application/ports/output/agents/agent-session-repository.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/agents/phase-timing-repository.interface.d.ts +3 -3
- package/dist/packages/core/src/application/ports/output/agents/phase-timing-repository.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts +2 -1
- package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts.map +1 -1
- package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
- package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +1 -0
- package/dist/packages/core/src/domain/generated/output.d.ts +37 -1
- package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +2 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/037-add-ci-watch-enabled.d.ts +11 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/037-add-ci-watch-enabled.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/037-add-ci-watch-enabled.js +15 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/038-add-phase-execution-metadata.d.ts +11 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/038-add-phase-execution-metadata.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/038-add-phase-execution-metadata.js +27 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-phase-timing.repository.d.ts +1 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-phase-timing.repository.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-phase-timing.repository.js +32 -0
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/dev-executor.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/dev-executor.service.js +8 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/ci-watch-fix-loop.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/ci-watch-fix-loop.js +3 -2
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.js +29 -7
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +19 -8
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/merge-prompts.d.ts +5 -10
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/merge-prompts.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/merge-prompts.js +5 -73
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/phase-timing-context.d.ts +17 -3
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/phase-timing-context.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/phase-timing-context.js +11 -3
- package/dist/packages/core/src/infrastructure/services/agents/sessions/claude-code-session.repository.d.ts +7 -0
- package/dist/packages/core/src/infrastructure/services/agents/sessions/claude-code-session.repository.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/sessions/claude-code-session.repository.js +35 -11
- package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts +1 -1
- package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +12 -3
- package/dist/src/presentation/web/app/(dashboard)/@drawer/create/page.d.ts +1 -0
- package/dist/src/presentation/web/app/(dashboard)/@drawer/create/page.d.ts.map +1 -1
- package/dist/src/presentation/web/app/(dashboard)/@drawer/create/page.js +2 -2
- package/dist/src/presentation/web/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.d.ts.map +1 -1
- package/dist/src/presentation/web/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +1 -0
- package/dist/src/presentation/web/app/(dashboard)/@drawer/feature/[featureId]/page.d.ts.map +1 -1
- package/dist/src/presentation/web/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -0
- package/dist/src/presentation/web/app/(dashboard)/get-graph-data.d.ts.map +1 -1
- package/dist/src/presentation/web/app/(dashboard)/get-graph-data.js +1 -0
- package/dist/src/presentation/web/app/actions/get-feature-phase-timings.d.ts +2 -0
- package/dist/src/presentation/web/app/actions/get-feature-phase-timings.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/get-feature-phase-timings.js +2 -0
- package/dist/src/presentation/web/app/actions/get-merge-review-data.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/get-merge-review-data.js +49 -13
- package/dist/src/presentation/web/app/actions/get-workflow-defaults.d.ts +1 -0
- package/dist/src/presentation/web/app/actions/get-workflow-defaults.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/get-workflow-defaults.js +1 -0
- package/dist/src/presentation/web/app/api/sessions/route.d.ts +24 -0
- package/dist/src/presentation/web/app/api/sessions/route.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/sessions/route.js +230 -0
- package/dist/src/presentation/web/app/build-feature-node-data.d.ts +2 -0
- package/dist/src/presentation/web/app/build-feature-node-data.d.ts.map +1 -1
- package/dist/src/presentation/web/app/build-feature-node-data.js +1 -0
- package/dist/src/presentation/web/app/build-graph-nodes.d.ts +2 -0
- package/dist/src/presentation/web/app/build-graph-nodes.d.ts.map +1 -1
- package/dist/src/presentation/web/app/build-graph-nodes.js +11 -0
- package/dist/src/presentation/web/components/common/control-center-drawer/create-drawer-client.d.ts +2 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/create-drawer-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/create-drawer-client.js +2 -2
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts +4 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +16 -3
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.js +1 -0
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.js +36 -10
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.js +7 -2
- package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.js +2 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +4 -0
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node.js +2 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-sessions-dropdown.d.ts +21 -0
- package/dist/src/presentation/web/components/common/feature-node/feature-sessions-dropdown.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/feature-node/feature-sessions-dropdown.js +138 -0
- package/dist/src/presentation/web/components/common/feature-node/feature-sessions-dropdown.stories.d.ts +9 -0
- package/dist/src/presentation/web/components/common/feature-node/feature-sessions-dropdown.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/feature-node/feature-sessions-dropdown.stories.js +77 -0
- package/dist/src/presentation/web/components/common/merge-review/merge-review-config.d.ts +3 -3
- package/dist/src/presentation/web/components/common/merge-review/merge-review-config.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/merge-review/merge-review.d.ts +1 -1
- package/dist/src/presentation/web/components/common/merge-review/merge-review.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/merge-review/merge-review.js +14 -20
- package/dist/src/presentation/web/components/common/merge-review/merge-review.stories.d.ts +6 -0
- package/dist/src/presentation/web/components/common/merge-review/merge-review.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/merge-review/merge-review.stories.js +74 -0
- package/dist/src/presentation/web/components/common/repository-node/repository-node.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/repository-node/repository-node.js +35 -2
- package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/settings-page-client.js +16 -1
- package/dist/src/presentation/web/components/features/settings/workflow-settings-section.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/workflow-settings-section.js +6 -1
- package/dist/src/presentation/web/components/features/settings/workflow-settings-section.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/workflow-settings-section.stories.js +3 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/app-path-routes-manifest.json +1 -0
- 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 +2 -2
- package/web/.next/required-server-files.json +2 -2
- package/web/.next/routes-manifest.json +6 -0
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +21 -21
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js +2 -2
- 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 +27 -27
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +3 -3
- 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 +27 -27
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +3 -3
- 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]/page/server-reference-manifest.json +19 -19
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +2 -2
- 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)/create/page/server-reference-manifest.json +21 -21
- package/web/.next/server/app/(dashboard)/create/page.js +2 -2
- 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 +27 -27
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +3 -3
- 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 +27 -27
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +3 -3
- 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 +19 -19
- package/web/.next/server/app/(dashboard)/page.js +2 -2
- 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]/page/server-reference-manifest.json +19 -19
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +2 -2
- 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 +1 -1
- 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/api/attachments/preview/route.js +1 -1
- package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
- package/web/.next/server/app/api/evidence/route.js +1 -1
- package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
- package/web/.next/server/app/api/graph-data/route.js +1 -1
- package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
- package/web/.next/server/app/api/sessions/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/api/sessions/route/build-manifest.json +11 -0
- package/web/.next/server/app/api/sessions/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/api/sessions/route.js +7 -0
- package/web/.next/server/app/api/sessions/route.js.map +5 -0
- package/web/.next/server/app/api/sessions/route.js.nft.json +1 -0
- package/web/.next/server/app/api/sessions/route_client-reference-manifest.js +2 -0
- package/web/.next/server/app/settings/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/settings/page.js +1 -1
- 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 +6 -6
- package/web/.next/server/app/skills/page.js +1 -1
- 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 +6 -6
- package/web/.next/server/app/tools/page.js +1 -1
- 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 +1 -1
- package/web/.next/server/app/version/page.js +1 -1
- 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/app-paths-manifest.json +1 -0
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__0fe7788d._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__0fe7788d._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__42b7ab55._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__42b7ab55._.js.map +1 -0
- package/web/.next/server/chunks/{[root-of-the-server]__7d63f9a4._.js → [root-of-the-server]__53013576._.js} +2 -2
- package/web/.next/server/chunks/{[root-of-the-server]__a1c7c02a._.js → [root-of-the-server]__92078db6._.js} +2 -2
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
- package/web/.next/server/chunks/b1a17_presentation_web__next-internal_server_app_api_sessions_route_actions_c041a889.js +3 -0
- package/web/.next/server/chunks/b1a17_presentation_web__next-internal_server_app_api_sessions_route_actions_c041a889.js.map +1 -0
- 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/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_ed372306.js +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_ed372306.js.map +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_32e26434.js +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_32e26434.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__07a39ff2._.js → [root-of-the-server]__06fef644._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__07a39ff2._.js.map → [root-of-the-server]__06fef644._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__3b14e5a0._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__3b14e5a0._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__545792ab._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__545792ab._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__684a868c._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__684a868c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8b59c03e._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8b59c03e._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8c553503._.js +4 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__2ff2daf6._.js.map → [root-of-the-server]__8c553503._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__994ad9fe._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__994ad9fe._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__9f155c0e._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__9f155c0e._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a022445f._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a022445f._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a7de2711._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a7de2711._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b724df9e._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b724df9e._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c16bf5de._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c16bf5de._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c9777776._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c9777776._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c9c1cfee._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c9c1cfee._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_135edb9c._.js +1 -1
- package/web/.next/server/chunks/ssr/_135edb9c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_1bb131c4._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_1bb79fe8._.js +3 -0
- package/web/.next/server/chunks/ssr/_1bb79fe8._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_2f6f48b8._.js +1 -1
- package/web/.next/server/chunks/ssr/_2f6f48b8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_59ae996e._.js +3 -0
- package/web/.next/server/chunks/ssr/_59ae996e._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_75f4ccb3._.js +3 -0
- package/web/.next/server/chunks/ssr/_75f4ccb3._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_ab069e13._.js +3 -0
- package/web/.next/server/chunks/ssr/_ab069e13._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_5f868392._.js → _aeb74a70._.js} +2 -2
- package/web/.next/server/chunks/ssr/_aeb74a70._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_bed4bbb9._.js +3 -0
- package/web/.next/server/chunks/ssr/_bed4bbb9._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_cc77a143._.js +1 -1
- package/web/.next/server/chunks/ssr/_cc77a143._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f605354c._.js +9 -0
- package/web/.next/server/chunks/ssr/_f605354c._.js.map +1 -0
- 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/node_modules__pnpm_b59e4b16._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules__pnpm_b59e4b16._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_0835b28e._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_0835b28e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_e99d78dd.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_e99d78dd.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_bdcfba35._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_components_bdcfba35._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js +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_e8034a29._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_e8034a29._.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 +33 -33
- package/web/.next/static/chunks/1c5310cfde612b81.js +1 -0
- package/web/.next/static/chunks/{da24af4a494de11a.js → 2b35632c1b784fae.js} +1 -1
- package/web/.next/static/chunks/{dc81cb5172953533.js → 30097f88cdf8fad8.js} +1 -1
- package/web/.next/static/chunks/3678617c34576e18.js +2 -0
- package/web/.next/static/chunks/4562ee849ea13c3a.js +1 -0
- package/web/.next/static/chunks/{169d4ce4e5fa10d2.js → 69c6d3ba1606e98d.js} +1 -1
- package/web/.next/static/chunks/{bf46b5bf0d9d43b3.js → 7c57a9143e66868c.js} +2 -2
- package/web/.next/static/chunks/845d8e58a91014e6.js +1 -0
- package/web/.next/static/chunks/{7ce5aacd9b492e8c.js → c1a6934d2281c088.js} +1 -1
- package/web/.next/static/chunks/c4477c532d2081e8.js +1 -0
- package/web/.next/static/chunks/cca0f5112a9260d8.js +1 -0
- package/web/.next/static/chunks/d2739454715e5ef2.css +1 -0
- package/web/.next/static/chunks/ed113fb744f2e4d8.js +11 -0
- package/web/.next/static/chunks/{9285299c4fb0f020.js → f3c4a7bb76c69b01.js} +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__7d5492a0._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__7d5492a0._.js.map +0 -1
- package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_rocket_1575cd4d.js +0 -3
- package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_rocket_1575cd4d.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2ff2daf6._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__3155add4._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__3155add4._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6367aea0._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6367aea0._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7b707feb._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7b707feb._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8763fd7a._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8763fd7a._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__9c56d724._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__9c56d724._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__cfc116d5._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__cfc116d5._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__d3841d9e._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__d3841d9e._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__db9afe04._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__db9afe04._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_250a63ae._.js +0 -3
- package/web/.next/server/chunks/ssr/_250a63ae._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_273d4632._.js +0 -3
- package/web/.next/server/chunks/ssr/_273d4632._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_5f868392._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_922aa39f._.js +0 -3
- package/web/.next/server/chunks/ssr/_922aa39f._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_a68d7e1c._.js +0 -9
- package/web/.next/server/chunks/ssr/_a68d7e1c._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_c6ec0fa4._.js +0 -3
- package/web/.next/server/chunks/ssr/_c6ec0fa4._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_ca5a8b32._.js +0 -3
- package/web/.next/server/chunks/ssr/_ca5a8b32._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_f5316e67._.js +0 -3
- package/web/.next/server/chunks/ssr/_f5316e67._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_a5e6c910._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_components_a5e6c910._.js.map +0 -1
- package/web/.next/static/chunks/15a2249cbec45bee.js +0 -11
- package/web/.next/static/chunks/3a806cf059241bc9.js +0 -1
- package/web/.next/static/chunks/3fb7682246dbaf45.js +0 -1
- package/web/.next/static/chunks/55c131b6fc504375.js +0 -1
- package/web/.next/static/chunks/59e6b9b540f05bf1.js +0 -1
- package/web/.next/static/chunks/62a8173911f8f130.css +0 -1
- package/web/.next/static/chunks/b1f3c0e8e9872ef8.js +0 -1
- package/web/.next/static/chunks/f7577de2f653acfc.js +0 -2
- /package/web/.next/server/chunks/{[root-of-the-server]__7d63f9a4._.js.map → [root-of-the-server]__53013576._.js.map} +0 -0
- /package/web/.next/server/chunks/{[root-of-the-server]__a1c7c02a._.js.map → [root-of-the-server]__92078db6._.js.map} +0 -0
- /package/web/.next/static/{akrvSvVQ4BzHsJ1sA0rS7 → qmHUdyRBvaVksgjcL6w-m}/_buildManifest.js +0 -0
- /package/web/.next/static/{akrvSvVQ4BzHsJ1sA0rS7 → qmHUdyRBvaVksgjcL6w-m}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{akrvSvVQ4BzHsJ1sA0rS7 → qmHUdyRBvaVksgjcL6w-m}/_ssgManifest.js +0 -0
|
@@ -21,6 +21,7 @@ import { updateNodeLifecycle } from '../../lifecycle-context.js';
|
|
|
21
21
|
import { buildCommitPushPrPrompt } from '../prompts/merge-prompts.js';
|
|
22
22
|
import { parseCommitHash, parsePrUrl } from './merge-output-parser.js';
|
|
23
23
|
import { runCiWatchFixLoop } from './ci-watch-fix-loop.js';
|
|
24
|
+
import { getSettings } from '../../../../../services/settings.service.js';
|
|
24
25
|
/**
|
|
25
26
|
* Factory that creates the merge node function.
|
|
26
27
|
*
|
|
@@ -67,9 +68,14 @@ export function createMergeNode(deps) {
|
|
|
67
68
|
}
|
|
68
69
|
const messages = [];
|
|
69
70
|
const startTime = Date.now();
|
|
70
|
-
|
|
71
|
+
let totalInputTokens = 0;
|
|
72
|
+
let totalOutputTokens = 0;
|
|
73
|
+
const { executor } = deps;
|
|
74
|
+
const mergeTimingId = await recordPhaseStart('merge', {
|
|
75
|
+
agentType: executor.agentType,
|
|
76
|
+
modelId: state.model,
|
|
77
|
+
});
|
|
71
78
|
try {
|
|
72
|
-
const { executor } = deps;
|
|
73
79
|
const cwd = state.worktreePath;
|
|
74
80
|
const feature = await deps.featureRepository.findById(state.featureId);
|
|
75
81
|
const branch = feature?.branch ?? `feat/${state.featureId}`;
|
|
@@ -98,6 +104,8 @@ export function createMergeNode(deps) {
|
|
|
98
104
|
const commitResult = await retryExecute(executor, commitPushPrPrompt, options, {
|
|
99
105
|
logger: log,
|
|
100
106
|
});
|
|
107
|
+
totalInputTokens += commitResult.usage?.inputTokens ?? 0;
|
|
108
|
+
totalOutputTokens += commitResult.usage?.outputTokens ?? 0;
|
|
101
109
|
commitHash = parseCommitHash(commitResult.result) ?? state.commitHash;
|
|
102
110
|
messages.push(`[merge] Agent completed commit/push/PR operations`);
|
|
103
111
|
if (effectiveState.openPr) {
|
|
@@ -122,8 +130,9 @@ export function createMergeNode(deps) {
|
|
|
122
130
|
messages.push(`[merge] PR created: ${prUrl}`);
|
|
123
131
|
}
|
|
124
132
|
}
|
|
125
|
-
// --- CI watch/fix loop (when push or openPr is enabled) ---
|
|
126
|
-
|
|
133
|
+
// --- CI watch/fix loop (when push or openPr is enabled and CI watch is not disabled) ---
|
|
134
|
+
const ciWatchEnabled = getSettings().workflow?.ciWatchEnabled !== false;
|
|
135
|
+
if (ciWatchEnabled && (effectiveState.push || effectiveState.openPr)) {
|
|
127
136
|
const ciResult = await runCiWatchFixLoop({
|
|
128
137
|
executor,
|
|
129
138
|
gitPrService: deps.gitPrService,
|
|
@@ -171,7 +180,11 @@ export function createMergeNode(deps) {
|
|
|
171
180
|
// --- Merge approval gate ---
|
|
172
181
|
if (shouldInterrupt('merge', state.approvalGates)) {
|
|
173
182
|
log.info('Interrupting for merge approval');
|
|
174
|
-
await recordPhaseEnd(mergeTimingId, Date.now() - startTime
|
|
183
|
+
await recordPhaseEnd(mergeTimingId, Date.now() - startTime, {
|
|
184
|
+
inputTokens: totalInputTokens || undefined,
|
|
185
|
+
outputTokens: totalOutputTokens || undefined,
|
|
186
|
+
exitCode: 'success',
|
|
187
|
+
});
|
|
175
188
|
await recordApprovalWaitStart(mergeTimingId);
|
|
176
189
|
const diffSummary = await deps.getDiffSummary(cwd, baseBranch);
|
|
177
190
|
interrupt({
|
|
@@ -250,7 +263,11 @@ export function createMergeNode(deps) {
|
|
|
250
263
|
}
|
|
251
264
|
}
|
|
252
265
|
const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
253
|
-
await recordPhaseEnd(mergeTimingId, Date.now() - startTime
|
|
266
|
+
await recordPhaseEnd(mergeTimingId, Date.now() - startTime, {
|
|
267
|
+
inputTokens: totalInputTokens || undefined,
|
|
268
|
+
outputTokens: totalOutputTokens || undefined,
|
|
269
|
+
exitCode: 'success',
|
|
270
|
+
});
|
|
254
271
|
messages.push(`[merge] Complete (${elapsed}s)`);
|
|
255
272
|
log.info(`Merge flow complete (${elapsed}s)`);
|
|
256
273
|
return {
|
|
@@ -274,7 +291,12 @@ export function createMergeNode(deps) {
|
|
|
274
291
|
const message = err instanceof Error ? err.message : String(err);
|
|
275
292
|
const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
276
293
|
log.error(`Merge failed: ${message} (${elapsed}s)`);
|
|
277
|
-
await recordPhaseEnd(mergeTimingId, Date.now() - startTime
|
|
294
|
+
await recordPhaseEnd(mergeTimingId, Date.now() - startTime, {
|
|
295
|
+
inputTokens: totalInputTokens || undefined,
|
|
296
|
+
outputTokens: totalOutputTokens || undefined,
|
|
297
|
+
exitCode: 'error',
|
|
298
|
+
errorMessage: message.slice(0, 1000),
|
|
299
|
+
});
|
|
278
300
|
throw err;
|
|
279
301
|
}
|
|
280
302
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-helpers.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,+DAA+D,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAUrD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM;IAE7C,4DAA4D;gBAChD,IAAI;kBAGF,MAAM,GAAG,IAAI;mBAIZ,MAAM,GAAG,IAAI;EAK/B;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE7D;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMtE;AAoBD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAO1D;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,iBAAiB,EACxB,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC,EAC3D,QAAQ,CAAC,EAAE,MAAM,GAChB,qBAAqB,CAUvB;AAeD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQrD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO,CAQ3F;AAMD,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,mBAAmB,GAAG,eAAe,GAAG,SAAS,CAAC;AAMhG;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,CAKjE;AAED,MAAM,WAAW,YAAY;IAC3B,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,qBAAqB,EAC9B,SAAS,CAAC,EAAE,YAAY,GACvB,OAAO,CAAC,oBAAoB,CAAC,CA6B/B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAW5D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,IAAI,CAqB5F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAOhG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,IAAI,CAwB1F;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAa5F;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,6FAA6F;IAC7F,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,MAAM,CAiCT;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAa3E;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,UAAU,KAAK,MAAM,GACjE,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"node-helpers.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js
CHANGED
|
@@ -407,20 +407,28 @@ export function executeNode(nodeName, executor, buildPrompt) {
|
|
|
407
407
|
}
|
|
408
408
|
}
|
|
409
409
|
const startTime = Date.now();
|
|
410
|
-
|
|
411
|
-
const
|
|
410
|
+
const resumePrefix = buildResumeContext(state.resumeReason);
|
|
411
|
+
const prompt = resumePrefix + buildPrompt(state, log);
|
|
412
|
+
const options = buildExecutorOptions(state, undefined, nodeName);
|
|
413
|
+
// Record phase start with pre-execution metadata
|
|
414
|
+
const timingId = await recordPhaseStart(nodeName, {
|
|
415
|
+
prompt,
|
|
416
|
+
modelId: state.model,
|
|
417
|
+
agentType: executor.agentType,
|
|
418
|
+
});
|
|
412
419
|
try {
|
|
413
|
-
const resumePrefix = buildResumeContext(state.resumeReason);
|
|
414
|
-
const prompt = resumePrefix + buildPrompt(state, log);
|
|
415
|
-
const options = buildExecutorOptions(state, undefined, nodeName);
|
|
416
420
|
log.info(`Executing agent at cwd=${options.cwd}`);
|
|
417
421
|
log.info(`Prompt length: ${prompt.length} chars`);
|
|
418
422
|
const result = await executor.execute(prompt, options);
|
|
419
423
|
const durationMs = Date.now() - startTime;
|
|
420
424
|
const elapsed = (durationMs / 1000).toFixed(1);
|
|
421
425
|
log.info(`Complete (${result.result.length} chars, ${elapsed}s)`);
|
|
422
|
-
// Record phase completion
|
|
423
|
-
await recordPhaseEnd(timingId, durationMs
|
|
426
|
+
// Record phase completion with post-execution metadata
|
|
427
|
+
await recordPhaseEnd(timingId, durationMs, {
|
|
428
|
+
inputTokens: result.usage?.inputTokens,
|
|
429
|
+
outputTokens: result.usage?.outputTokens,
|
|
430
|
+
exitCode: 'success',
|
|
431
|
+
});
|
|
424
432
|
// Mark phase complete BEFORE interrupting so that on resume the
|
|
425
433
|
// node detects the work is already done and returns early.
|
|
426
434
|
markPhaseComplete(state.specDir, nodeName, log);
|
|
@@ -455,7 +463,10 @@ export function executeNode(nodeName, executor, buildPrompt) {
|
|
|
455
463
|
const elapsed = (durationMs / 1000).toFixed(1);
|
|
456
464
|
log.error(`${message} (after ${elapsed}s)`);
|
|
457
465
|
// Record phase end even on failure so timing shows duration, not "running"
|
|
458
|
-
await recordPhaseEnd(timingId, durationMs
|
|
466
|
+
await recordPhaseEnd(timingId, durationMs, {
|
|
467
|
+
exitCode: 'error',
|
|
468
|
+
errorMessage: message.slice(0, 1000),
|
|
469
|
+
});
|
|
459
470
|
// Throw so LangGraph does NOT checkpoint this node as "completed".
|
|
460
471
|
// The worker catch block marks the run as failed, and on resume
|
|
461
472
|
// LangGraph re-executes from the last successfully checkpointed node.
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Merge Node Prompt Builders
|
|
3
3
|
*
|
|
4
|
-
* Builds prompts for
|
|
4
|
+
* Builds prompts for agent calls in the merge node:
|
|
5
5
|
* 1. buildCommitPushPrPrompt — commit (always), push (conditional), PR create (conditional)
|
|
6
|
-
* 2.
|
|
6
|
+
* 2. buildCiWatchFixPrompt — diagnose and fix CI failures
|
|
7
|
+
*
|
|
8
|
+
* NOTE: The actual PR merge and local squash-merge are handled directly by
|
|
9
|
+
* GitPrService.mergePr() and GitPrService.localMergeSquash() — not via agent prompts.
|
|
7
10
|
*/
|
|
8
11
|
import { type Evidence } from '../../../../../../domain/generated/output.js';
|
|
9
12
|
import type { FeatureAgentState } from '../../state.js';
|
|
@@ -41,12 +44,4 @@ export declare function buildCommitPushPrPrompt(state: FeatureAgentState, branch
|
|
|
41
44
|
* @param branch - Feature branch name to push to after fixing
|
|
42
45
|
*/
|
|
43
46
|
export declare function buildCiWatchFixPrompt(failureLogs: string, attemptNumber: number, maxAttempts: number, branch: string): string;
|
|
44
|
-
/**
|
|
45
|
-
* Build a prompt for the merge/squash agent call.
|
|
46
|
-
*
|
|
47
|
-
* When a PR exists, uses `gh pr merge` (remote operation — no local merge needed).
|
|
48
|
-
* When no PR exists, performs a local merge in the ORIGINAL repo directory
|
|
49
|
-
* (not the worktree, which IS the feature branch).
|
|
50
|
-
*/
|
|
51
|
-
export declare function buildMergeSquashPrompt(state: FeatureAgentState, branch: string, baseBranch: string, hasRemote?: boolean): string;
|
|
52
47
|
//# sourceMappingURL=merge-prompts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-prompts.d.ts","sourceRoot":"","sources":["../../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/merge-prompts.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"merge-prompts.d.ts","sourceRoot":"","sources":["../../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/merge-prompts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAE3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAwCxD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAU9F;AAuCD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,QAAQ,EAAE,EACpB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAUR;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAmER;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,MAAM,CA0BR"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Merge Node Prompt Builders
|
|
3
3
|
*
|
|
4
|
-
* Builds prompts for
|
|
4
|
+
* Builds prompts for agent calls in the merge node:
|
|
5
5
|
* 1. buildCommitPushPrPrompt — commit (always), push (conditional), PR create (conditional)
|
|
6
|
-
* 2.
|
|
6
|
+
* 2. buildCiWatchFixPrompt — diagnose and fix CI failures
|
|
7
|
+
*
|
|
8
|
+
* NOTE: The actual PR merge and local squash-merge are handled directly by
|
|
9
|
+
* GitPrService.mergePr() and GitPrService.localMergeSquash() — not via agent prompts.
|
|
7
10
|
*/
|
|
8
11
|
import yaml from 'js-yaml';
|
|
9
12
|
import { EvidenceType } from '../../../../../../domain/generated/output.js';
|
|
@@ -215,74 +218,3 @@ ${failureLogs}
|
|
|
215
218
|
- Do NOT create a new branch — push directly to \`${branch}\`
|
|
216
219
|
- If the failure is unclear, make your best diagnosis and explain your reasoning in the commit message`;
|
|
217
220
|
}
|
|
218
|
-
/**
|
|
219
|
-
* Build a prompt for the merge/squash agent call.
|
|
220
|
-
*
|
|
221
|
-
* When a PR exists, uses `gh pr merge` (remote operation — no local merge needed).
|
|
222
|
-
* When no PR exists, performs a local merge in the ORIGINAL repo directory
|
|
223
|
-
* (not the worktree, which IS the feature branch).
|
|
224
|
-
*/
|
|
225
|
-
export function buildMergeSquashPrompt(state, branch, baseBranch, hasRemote = false) {
|
|
226
|
-
if (state.prUrl && state.prNumber) {
|
|
227
|
-
// PR path: remote merge via GitHub CLI — no local merge needed
|
|
228
|
-
return `You are merging a pull request via the GitHub CLI.
|
|
229
|
-
|
|
230
|
-
## PR to Merge
|
|
231
|
-
|
|
232
|
-
- PR URL: ${state.prUrl}
|
|
233
|
-
- PR Number: #${state.prNumber}
|
|
234
|
-
|
|
235
|
-
## Instructions
|
|
236
|
-
|
|
237
|
-
1. Merge the PR using squash merge with auto-merge: \`gh pr merge ${state.prNumber} --squash --delete-branch --auto\`
|
|
238
|
-
- The --auto flag queues the merge to execute automatically once all branch protection requirements (CI checks, reviews, etc.) are satisfied
|
|
239
|
-
2. If the merge command fails, report the error clearly
|
|
240
|
-
|
|
241
|
-
## Constraints
|
|
242
|
-
|
|
243
|
-
- Use squash merge strategy to keep history clean
|
|
244
|
-
- Report the merge result clearly`;
|
|
245
|
-
}
|
|
246
|
-
// Non-PR path: local merge in the ORIGINAL repo (not the worktree)
|
|
247
|
-
const originalRepo = state.repositoryPath;
|
|
248
|
-
const fetchSteps = hasRemote
|
|
249
|
-
? `2. Fetch latest: \`git fetch origin\`
|
|
250
|
-
3. Checkout the base branch: \`git checkout ${baseBranch}\`
|
|
251
|
-
4. Pull latest base: \`git pull origin ${baseBranch}\`
|
|
252
|
-
5. Merge the feature branch: \`git merge --squash ${branch}\`
|
|
253
|
-
6. If merge conflicts are encountered, resolve them manually and complete the merge
|
|
254
|
-
7. Commit the squash merge with a descriptive conventional commit message
|
|
255
|
-
8. Delete the feature branch after successful merge: \`git branch -d ${branch}\``
|
|
256
|
-
: `2. Checkout the base branch: \`git checkout ${baseBranch}\`
|
|
257
|
-
3. Merge the feature branch: \`git merge --squash ${branch}\`
|
|
258
|
-
4. If merge conflicts are encountered, resolve them manually and complete the merge
|
|
259
|
-
5. Commit the squash merge with a descriptive conventional commit message
|
|
260
|
-
6. Delete the feature branch after successful merge: \`git branch -d ${branch}\``;
|
|
261
|
-
return `You are performing a local merge in the original repository directory.
|
|
262
|
-
|
|
263
|
-
IMPORTANT: You MUST run all git commands in the original repository directory, NOT in any worktree.
|
|
264
|
-
|
|
265
|
-
## Branch to Merge
|
|
266
|
-
|
|
267
|
-
- Feature branch: \`${branch}\`
|
|
268
|
-
- Base branch: \`${baseBranch}\`
|
|
269
|
-
|
|
270
|
-
## Working Directory
|
|
271
|
-
|
|
272
|
-
${originalRepo}
|
|
273
|
-
|
|
274
|
-
## Instructions
|
|
275
|
-
|
|
276
|
-
1. Change to the original repository: \`cd ${originalRepo}\`
|
|
277
|
-
${fetchSteps}
|
|
278
|
-
|
|
279
|
-
## Constraints
|
|
280
|
-
|
|
281
|
-
- Use squash merge strategy to keep history clean
|
|
282
|
-
- All commands MUST run in \`${originalRepo}\` (the original repo), NOT in the worktree
|
|
283
|
-
- NEVER remove, modify, or prune git worktrees — they are managed by the system
|
|
284
|
-
- Do NOT try to \`git checkout\` the feature branch — \`git merge --squash\` reads from it without checking it out
|
|
285
|
-
- If conflicts arise during merge, attempt to resolve them intelligently
|
|
286
|
-
- Do NOT modify any source code beyond what is needed for conflict resolution
|
|
287
|
-
- Report the merge result clearly`;
|
|
288
|
-
}
|
|
@@ -21,6 +21,12 @@ export declare function setPhaseTimingContext(runId: string, repository: IPhaseT
|
|
|
21
21
|
* Clear the phase timing context. Useful for testing.
|
|
22
22
|
*/
|
|
23
23
|
export declare function clearPhaseTimingContext(): void;
|
|
24
|
+
/** Pre-execution metadata recorded at phase start. */
|
|
25
|
+
export interface PhaseStartMetadata {
|
|
26
|
+
prompt?: string;
|
|
27
|
+
modelId?: string;
|
|
28
|
+
agentType?: string;
|
|
29
|
+
}
|
|
24
30
|
/**
|
|
25
31
|
* Record the start of a phase. Returns the timing record ID (for later update)
|
|
26
32
|
* or null if context is not set or save fails.
|
|
@@ -28,12 +34,20 @@ export declare function clearPhaseTimingContext(): void;
|
|
|
28
34
|
* Automatically appends an iteration suffix (`:2`, `:3`, …) when the same
|
|
29
35
|
* phase has already been recorded for this run (e.g. after a rejection loop).
|
|
30
36
|
*/
|
|
31
|
-
export declare function recordPhaseStart(phase: string): Promise<string | null>;
|
|
37
|
+
export declare function recordPhaseStart(phase: string, metadata?: PhaseStartMetadata): Promise<string | null>;
|
|
38
|
+
/** Post-execution metadata recorded at phase end. */
|
|
39
|
+
export interface PhaseEndMetadata {
|
|
40
|
+
inputTokens?: number;
|
|
41
|
+
outputTokens?: number;
|
|
42
|
+
exitCode?: string;
|
|
43
|
+
errorMessage?: string;
|
|
44
|
+
}
|
|
32
45
|
/**
|
|
33
|
-
* Record the end of a phase. Updates the timing record with completedAt
|
|
46
|
+
* Record the end of a phase. Updates the timing record with completedAt, durationMs,
|
|
47
|
+
* and optional execution metadata (token usage, exit code, error).
|
|
34
48
|
* No-op if timingId is null (phase start was skipped or failed).
|
|
35
49
|
*/
|
|
36
|
-
export declare function recordPhaseEnd(timingId: string | null, durationMs: number): Promise<void>;
|
|
50
|
+
export declare function recordPhaseEnd(timingId: string | null, durationMs: number, metadata?: PhaseEndMetadata): Promise<void>;
|
|
37
51
|
/**
|
|
38
52
|
* Record an instant lifecycle event (e.g., run:started, run:stopped, run:crashed).
|
|
39
53
|
* These are phase timing records with zero duration, used to mark events in the timeline.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phase-timing-context.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/phase-timing-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wEAAwE,CAAC;AAMrH;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAG7F;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAI9C;AA+BD;;;;;;GAMG;AACH,wBAAsB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"phase-timing-context.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/phase-timing-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wEAAwE,CAAC;AAMrH;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAG7F;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAI9C;AA+BD,sDAAsD;AACtD,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,kBAAkB,GAC5B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyBxB;AAED,qDAAqD;AACrD,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAef;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,MAAM,EACtB,YAAY,CAAC,EAAE,sBAAsB,GACpC,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAUpF"}
|
package/dist/packages/core/src/infrastructure/services/agents/feature-agent/phase-timing-context.js
CHANGED
|
@@ -63,7 +63,7 @@ async function resolveIterationPhase(phase, runId, repository) {
|
|
|
63
63
|
* Automatically appends an iteration suffix (`:2`, `:3`, …) when the same
|
|
64
64
|
* phase has already been recorded for this run (e.g. after a rejection loop).
|
|
65
65
|
*/
|
|
66
|
-
export async function recordPhaseStart(phase) {
|
|
66
|
+
export async function recordPhaseStart(phase, metadata) {
|
|
67
67
|
if (!contextRunId || !contextRepository)
|
|
68
68
|
return null;
|
|
69
69
|
const id = randomUUID();
|
|
@@ -77,6 +77,9 @@ export async function recordPhaseStart(phase) {
|
|
|
77
77
|
startedAt: now,
|
|
78
78
|
createdAt: now,
|
|
79
79
|
updatedAt: now,
|
|
80
|
+
...(metadata?.prompt != null && { prompt: metadata.prompt }),
|
|
81
|
+
...(metadata?.modelId != null && { modelId: metadata.modelId }),
|
|
82
|
+
...(metadata?.agentType != null && { agentType: metadata.agentType }),
|
|
80
83
|
});
|
|
81
84
|
lastTimingId = id;
|
|
82
85
|
return id;
|
|
@@ -87,16 +90,21 @@ export async function recordPhaseStart(phase) {
|
|
|
87
90
|
}
|
|
88
91
|
}
|
|
89
92
|
/**
|
|
90
|
-
* Record the end of a phase. Updates the timing record with completedAt
|
|
93
|
+
* Record the end of a phase. Updates the timing record with completedAt, durationMs,
|
|
94
|
+
* and optional execution metadata (token usage, exit code, error).
|
|
91
95
|
* No-op if timingId is null (phase start was skipped or failed).
|
|
92
96
|
*/
|
|
93
|
-
export async function recordPhaseEnd(timingId, durationMs) {
|
|
97
|
+
export async function recordPhaseEnd(timingId, durationMs, metadata) {
|
|
94
98
|
if (!timingId || !contextRepository)
|
|
95
99
|
return;
|
|
96
100
|
try {
|
|
97
101
|
await contextRepository.update(timingId, {
|
|
98
102
|
completedAt: new Date(),
|
|
99
103
|
durationMs: BigInt(durationMs),
|
|
104
|
+
...(metadata?.inputTokens != null && { inputTokens: BigInt(metadata.inputTokens) }),
|
|
105
|
+
...(metadata?.outputTokens != null && { outputTokens: BigInt(metadata.outputTokens) }),
|
|
106
|
+
...(metadata?.exitCode != null && { exitCode: metadata.exitCode }),
|
|
107
|
+
...(metadata?.errorMessage != null && { errorMessage: metadata.errorMessage }),
|
|
100
108
|
});
|
|
101
109
|
}
|
|
102
110
|
catch {
|
|
@@ -30,6 +30,13 @@ export declare class ClaudeCodeSessionRepository implements IAgentSessionReposit
|
|
|
30
30
|
isSupported(): boolean;
|
|
31
31
|
list(options?: ListSessionsOptions): Promise<AgentSession[]>;
|
|
32
32
|
findById(id: string, options?: GetSessionOptions): Promise<AgentSession | null>;
|
|
33
|
+
/**
|
|
34
|
+
* Collect session files only from the directory matching the given project path.
|
|
35
|
+
* Claude Code encodes project paths as directory names by replacing '/', '\', and '.'
|
|
36
|
+
* with '-'. e.g. /home/user/.shep/repos/abc/wt/feat-x → -home-user--shep-repos-abc-wt-feat-x
|
|
37
|
+
* This avoids scanning all 100+ project directories.
|
|
38
|
+
*/
|
|
39
|
+
private collectSessionFilesForPath;
|
|
33
40
|
/** Collect all depth-1 .jsonl session files with mtime from all project directories */
|
|
34
41
|
private collectSessionFiles;
|
|
35
42
|
/** Collect depth-1 .jsonl files from a single project directory with stat for mtime */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code-session.repository.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/sessions/claude-code-session.repository.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,KAAK,EACV,YAAY,EAGb,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EACV,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,mFAAmF,CAAC;AA6B3F,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,qBACa,2BAA4B,YAAW,uBAAuB;IAC7D,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,GAAE,MAAuD;IAE9F,WAAW,IAAI,OAAO;IAIhB,IAAI,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"claude-code-session.repository.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/sessions/claude-code-session.repository.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,KAAK,EACV,YAAY,EAGb,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EACV,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,mFAAmF,CAAC;AA6B3F,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,qBACa,2BAA4B,YAAW,uBAAuB;IAC7D,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,GAAE,MAAuD;IAE9F,WAAW,IAAI,OAAO;IAIhB,IAAI,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA6B5D,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAmBrF;;;;;OAKG;YACW,0BAA0B;IAiBxC,uFAAuF;YACzE,mBAAmB;IAyBjC,uFAAuF;YACzE,yBAAyB;IAsBvC;;;;OAIG;YACW,eAAe;IAkD7B;;;;OAIG;YACW,gBAAgB;IA6H9B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IA8B1B,0DAA0D;IAC1D,OAAO,CAAC,cAAc;CAQvB"}
|
|
@@ -35,19 +35,21 @@ let ClaudeCodeSessionRepository = class ClaudeCodeSessionRepository {
|
|
|
35
35
|
}
|
|
36
36
|
async list(options) {
|
|
37
37
|
const limit = options?.limit ?? 20;
|
|
38
|
-
const
|
|
38
|
+
const filterPath = options?.projectPath;
|
|
39
|
+
// When filtering by path, use the directory naming convention to scan only the
|
|
40
|
+
// matching project directory instead of all 100+ directories. Claude Code encodes
|
|
41
|
+
// project paths as directory names by replacing '/' with '-'.
|
|
42
|
+
const fileInfos = filterPath
|
|
43
|
+
? await this.collectSessionFilesForPath(filterPath)
|
|
44
|
+
: await this.collectSessionFiles();
|
|
39
45
|
fileInfos.sort((a, b) => b.mtime.getTime() - a.mtime.getTime());
|
|
40
|
-
|
|
46
|
+
// Apply limit before full parsing
|
|
47
|
+
const toParse = limit > 0 ? fileInfos.slice(0, limit) : fileInfos;
|
|
48
|
+
const parseResults = await Promise.allSettled(toParse.map((fi) => this.parseSessionFile(fi, { includeMessages: false })));
|
|
41
49
|
const sessions = [];
|
|
42
|
-
for (const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if (session !== null) {
|
|
46
|
-
sessions.push(session);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
catch {
|
|
50
|
-
// Malformed or unreadable file — skip silently
|
|
50
|
+
for (const result of parseResults) {
|
|
51
|
+
if (result.status === 'fulfilled' && result.value !== null) {
|
|
52
|
+
sessions.push(result.value);
|
|
51
53
|
}
|
|
52
54
|
}
|
|
53
55
|
return sessions;
|
|
@@ -70,6 +72,28 @@ let ClaudeCodeSessionRepository = class ClaudeCodeSessionRepository {
|
|
|
70
72
|
return null;
|
|
71
73
|
}
|
|
72
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* Collect session files only from the directory matching the given project path.
|
|
77
|
+
* Claude Code encodes project paths as directory names by replacing '/', '\', and '.'
|
|
78
|
+
* with '-'. e.g. /home/user/.shep/repos/abc/wt/feat-x → -home-user--shep-repos-abc-wt-feat-x
|
|
79
|
+
* This avoids scanning all 100+ project directories.
|
|
80
|
+
*/
|
|
81
|
+
async collectSessionFilesForPath(projectPath) {
|
|
82
|
+
// Normalize: resolve ~ and convert path separators
|
|
83
|
+
const normalizedPath = projectPath.startsWith('~')
|
|
84
|
+
? path.join(os.homedir(), projectPath.slice(1))
|
|
85
|
+
: projectPath;
|
|
86
|
+
// Claude Code replaces '/', '\', and '.' with '-' in directory names
|
|
87
|
+
const dirName = normalizedPath.replace(/[/\\.]/g, '-');
|
|
88
|
+
const projectDir = path.join(this.basePath, dirName);
|
|
89
|
+
try {
|
|
90
|
+
return await this.collectDepthOneJsonlFiles(projectDir);
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// Directory doesn't exist — no sessions for this path
|
|
94
|
+
return [];
|
|
95
|
+
}
|
|
96
|
+
}
|
|
73
97
|
/** Collect all depth-1 .jsonl session files with mtime from all project directories */
|
|
74
98
|
async collectSessionFiles() {
|
|
75
99
|
let entries;
|
|
@@ -22,7 +22,7 @@ export declare class GitPrService implements IGitPrService {
|
|
|
22
22
|
localMergeSquash(cwd: string, featureBranch: string, baseBranch: string, commitMessage: string, hasRemote?: boolean): Promise<void>;
|
|
23
23
|
mergeBranch(cwd: string, sourceBranch: string, targetBranch: string): Promise<void>;
|
|
24
24
|
getCiStatus(cwd: string, branch: string): Promise<CiStatusResult>;
|
|
25
|
-
watchCi(cwd: string, branch: string, timeoutMs?: number): Promise<CiStatusResult>;
|
|
25
|
+
watchCi(cwd: string, branch: string, timeoutMs?: number, intervalSeconds?: number): Promise<CiStatusResult>;
|
|
26
26
|
deleteBranch(cwd: string, branch: string, deleteRemote?: boolean): Promise<void>;
|
|
27
27
|
getPrDiffSummary(cwd: string, baseBranch: string): Promise<DiffSummary>;
|
|
28
28
|
getFileDiffs(cwd: string, baseBranch: string): Promise<FileDiff[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-pr.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/git/git-pr.service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wEAAwE,CAAC;AAC5G,OAAO,KAAK,EACV,cAAc,EAGd,WAAW,EACX,QAAQ,EACR,aAAa,EACb,cAAc,EACd,YAAY,EACb,MAAM,wEAAwE,CAAC;AAUhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,qBACa,YAAa,YAAW,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,YAAY;IAErE,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKxC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAgBjD,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgF9C,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKnD,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKpD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAWxD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvE,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAuClE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,aAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"git-pr.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/git/git-pr.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -186,7 +186,7 @@ let GitPrService = class GitPrService {
|
|
|
186
186
|
}
|
|
187
187
|
async mergePr(cwd, prNumber, strategy = 'squash') {
|
|
188
188
|
try {
|
|
189
|
-
await this.execFile('gh', ['pr', 'merge', String(prNumber), `--${strategy}
|
|
189
|
+
await this.execFile('gh', ['pr', 'merge', String(prNumber), `--${strategy}`, '--auto', '--delete-branch'], { cwd });
|
|
190
190
|
}
|
|
191
191
|
catch (error) {
|
|
192
192
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -288,7 +288,7 @@ let GitPrService = class GitPrService {
|
|
|
288
288
|
throw this.parseGhError(error);
|
|
289
289
|
}
|
|
290
290
|
}
|
|
291
|
-
async watchCi(cwd, branch, timeoutMs) {
|
|
291
|
+
async watchCi(cwd, branch, timeoutMs, intervalSeconds) {
|
|
292
292
|
try {
|
|
293
293
|
// gh run watch requires a run ID — it does not support --branch.
|
|
294
294
|
// First, resolve the latest run ID for the branch via gh run list.
|
|
@@ -298,7 +298,16 @@ let GitPrService = class GitPrService {
|
|
|
298
298
|
return { status: 'pending' };
|
|
299
299
|
}
|
|
300
300
|
const runId = String(runs[0].databaseId);
|
|
301
|
-
const
|
|
301
|
+
const interval = intervalSeconds ?? 30;
|
|
302
|
+
const args = [
|
|
303
|
+
'run',
|
|
304
|
+
'watch',
|
|
305
|
+
runId,
|
|
306
|
+
'--exit-status',
|
|
307
|
+
'--compact',
|
|
308
|
+
'--interval',
|
|
309
|
+
String(interval),
|
|
310
|
+
];
|
|
302
311
|
const { stdout } = await this.execFile('gh', args, {
|
|
303
312
|
cwd,
|
|
304
313
|
...(timeoutMs ? { timeout: timeoutMs } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../../../../../../src/presentation/web/app/(dashboard)/@drawer/create/page.tsx"],"names":[],"mappings":"AAOA,oEAAoE;AACpE,eAAO,MAAM,OAAO,kBAAkB,CAAC;AAEvC,UAAU,qBAAqB;IAC7B,YAAY,EAAE,OAAO,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../../../../../../src/presentation/web/app/(dashboard)/@drawer/create/page.tsx"],"names":[],"mappings":"AAOA,oEAAoE;AACpE,eAAO,MAAM,OAAO,kBAAkB,CAAC;AAEvC,UAAU,qBAAqB;IAC7B,YAAY,EAAE,OAAO,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5E;AAED,wBAA8B,gBAAgB,CAAC,EAAE,YAAY,EAAE,EAAE,qBAAqB,oDAmCrF"}
|
|
@@ -6,7 +6,7 @@ import { CreateDrawerClient } from '../../../../components/common/control-center
|
|
|
6
6
|
/** Skip static pre-rendering since we need runtime DI container. */
|
|
7
7
|
export const dynamic = 'force-dynamic';
|
|
8
8
|
export default async function CreateDrawerPage({ searchParams }) {
|
|
9
|
-
const { repo, parent } = await searchParams;
|
|
9
|
+
const { repo, parent, prompt } = await searchParams;
|
|
10
10
|
const listFeatures = resolve('ListFeaturesUseCase');
|
|
11
11
|
const listRepos = resolve('ListRepositoriesUseCase');
|
|
12
12
|
const settings = getSettings();
|
|
@@ -23,5 +23,5 @@ export default async function CreateDrawerPage({ searchParams }) {
|
|
|
23
23
|
name: r.name,
|
|
24
24
|
path: r.path,
|
|
25
25
|
}));
|
|
26
|
-
return (_jsx(CreateDrawerClient, { repositoryPath: repo ?? '', initialParentId: parent, features: featureOptions, repositories: repositoryOptions, workflowDefaults: workflowDefaults, currentAgentType: settings.agent.type, currentModel: settings.models.default }));
|
|
26
|
+
return (_jsx(CreateDrawerClient, { repositoryPath: repo ?? '', initialParentId: parent, initialDescription: prompt, features: featureOptions, repositories: repositoryOptions, workflowDefaults: workflowDefaults, currentAgentType: settings.agent.type, currentModel: settings.models.default }));
|
|
27
27
|
}
|
package/dist/src/presentation/web/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/presentation/web/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.tsx"],"names":[],"mappings":"AAcA,oEAAoE;AACpE,eAAO,MAAM,OAAO,kBAAkB,CAAC;AAEvC,UAAU,yBAAyB;IACjC,MAAM,EAAE,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrD;AAED,wBAA8B,oBAAoB,CAAC,EAAE,MAAM,EAAE,EAAE,yBAAyB,
|
|
1
|
+
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/presentation/web/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.tsx"],"names":[],"mappings":"AAcA,oEAAoE;AACpE,eAAO,MAAM,OAAO,kBAAkB,CAAC;AAEvC,UAAU,yBAAyB;IACjC,MAAM,EAAE,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrD;AAED,wBAA8B,oBAAoB,CAAC,EAAE,MAAM,EAAE,EAAE,yBAAyB,2DAkDvF"}
|
|
@@ -33,6 +33,7 @@ export default async function FeatureDrawerTabPage({ params }) {
|
|
|
33
33
|
remoteUrl: remoteUrl ?? undefined,
|
|
34
34
|
enableEvidence: workflow.enableEvidence,
|
|
35
35
|
commitEvidence: workflow.commitEvidence,
|
|
36
|
+
ciWatchEnabled: workflow.ciWatchEnabled,
|
|
36
37
|
});
|
|
37
38
|
const view = computeDrawerView({
|
|
38
39
|
selectedNode: nodeData,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/presentation/web/app/(dashboard)/@drawer/feature/[featureId]/page.tsx"],"names":[],"mappings":"AAQA,oEAAoE;AACpE,eAAO,MAAM,OAAO,kBAAkB,CAAC;AAEvC,UAAU,sBAAsB;IAC9B,MAAM,EAAE,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxC;AAED,wBAA8B,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/presentation/web/app/(dashboard)/@drawer/feature/[featureId]/page.tsx"],"names":[],"mappings":"AAQA,oEAAoE;AACpE,eAAO,MAAM,OAAO,kBAAkB,CAAC;AAEvC,UAAU,sBAAsB;IAC9B,MAAM,EAAE,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxC;AAED,wBAA8B,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,sBAAsB,2DAwCjF"}
|
|
@@ -23,6 +23,7 @@ export default async function FeatureDrawerPage({ params }) {
|
|
|
23
23
|
const nodeData = buildFeatureNodeData(feature, run, {
|
|
24
24
|
enableEvidence: workflow.enableEvidence,
|
|
25
25
|
commitEvidence: workflow.commitEvidence,
|
|
26
|
+
ciWatchEnabled: workflow.ciWatchEnabled,
|
|
26
27
|
});
|
|
27
28
|
const view = computeDrawerView({
|
|
28
29
|
selectedNode: nodeData,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-graph-data.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/(dashboard)/get-graph-data.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAE5E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAQ1C,wBAAsB,YAAY,IAAI,OAAO,CAAC;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"get-graph-data.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/(dashboard)/get-graph-data.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAE5E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAQ1C,wBAAsB,YAAY,IAAI,OAAO,CAAC;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAAC,CAuFxF"}
|
|
@@ -58,6 +58,7 @@ export async function getGraphData() {
|
|
|
58
58
|
const { nodes, edges } = buildGraphNodes(repositories, featuresWithRuns, {
|
|
59
59
|
enableEvidence: workflow.enableEvidence,
|
|
60
60
|
commitEvidence: workflow.commitEvidence,
|
|
61
|
+
ciWatchEnabled: workflow.ciWatchEnabled,
|
|
61
62
|
});
|
|
62
63
|
// Enrich feature nodes with deployment status
|
|
63
64
|
let deploymentService = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-feature-phase-timings.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/get-feature-phase-timings.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"get-feature-phase-timings.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/get-feature-phase-timings.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,KAAK,qBAAqB,GACtB;IAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IAAC,iBAAiB,EAAE,qBAAqB,EAAE,CAAA;CAAE,GAC1E;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtB,wBAAsB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA6B9F"}
|
|
@@ -15,6 +15,8 @@ export async function getFeaturePhaseTimings(featureId) {
|
|
|
15
15
|
durationMs: t.durationMs != null ? Number(t.durationMs) : undefined,
|
|
16
16
|
waitingApprovalAt: t.waitingApprovalAt,
|
|
17
17
|
approvalWaitMs: t.approvalWaitMs != null ? Number(t.approvalWaitMs) : undefined,
|
|
18
|
+
inputTokens: t.inputTokens != null ? Number(t.inputTokens) : undefined,
|
|
19
|
+
outputTokens: t.outputTokens != null ? Number(t.outputTokens) : undefined,
|
|
18
20
|
}));
|
|
19
21
|
// Read rejection feedback from spec.yaml
|
|
20
22
|
const rejectionFeedback = await readRejectionFeedback(featureId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-merge-review-data.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/get-merge-review-data.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-merge-review-data.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/get-merge-review-data.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,sDAAsD,CAAC;AAI9D,KAAK,wBAAwB,GAAG,eAAe,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAqCpE,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAoF7F"}
|