@shepai/cli 1.116.3 → 1.117.0-pr367.ca5b6ac
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/AnalyzeRepoTimeouts.yaml +10 -0
- package/apis/json-schema/SdlcLifecycle.yaml +1 -0
- package/apis/json-schema/StageTimeouts.yaml +35 -0
- package/apis/json-schema/WorkflowConfig.yaml +6 -0
- package/dist/packages/core/src/application/ports/output/services/index.d.ts +2 -0
- package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/tunnel-service.interface.d.ts +41 -0
- package/dist/packages/core/src/application/ports/output/services/tunnel-service.interface.d.ts.map +1 -0
- package/dist/packages/core/src/application/ports/output/services/tunnel-service.interface.js +14 -0
- package/dist/packages/core/src/application/ports/output/services/webhook-service.interface.d.ts +65 -0
- package/dist/packages/core/src/application/ports/output/services/webhook-service.interface.d.ts.map +1 -0
- package/dist/packages/core/src/application/ports/output/services/webhook-service.interface.js +10 -0
- package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +17 -8
- package/dist/packages/core/src/application/use-cases/features/create/types.d.ts +2 -0
- package/dist/packages/core/src/application/use-cases/features/create/types.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.d.ts +25 -0
- package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.js +116 -0
- package/dist/packages/core/src/domain/generated/output.d.ts +47 -0
- package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
- package/dist/packages/core/src/domain/generated/output.js +1 -0
- package/dist/packages/core/src/domain/lifecycle-gates.d.ts +3 -0
- package/dist/packages/core/src/domain/lifecycle-gates.d.ts.map +1 -1
- package/dist/packages/core/src/domain/lifecycle-gates.js +3 -0
- package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/container.js +19 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +7 -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 +44 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/035-add-stage-timeout-ms.d.ts +22 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/035-add-stage-timeout-ms.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/035-add-stage-timeout-ms.js +53 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.js +15 -6
- package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +15 -0
- package/dist/packages/core/src/infrastructure/services/agents/analyze-repo/analyze-repository-graph.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/analyze-repo/analyze-repository-graph.js +15 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts +11 -1
- 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 +42 -3
- package/dist/packages/core/src/infrastructure/services/tunnel/cloudflare-tunnel.service.d.ts +55 -0
- package/dist/packages/core/src/infrastructure/services/tunnel/cloudflare-tunnel.service.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/tunnel/cloudflare-tunnel.service.js +203 -0
- package/dist/packages/core/src/infrastructure/services/webhook/github-webhook.service.d.ts +75 -0
- package/dist/packages/core/src/infrastructure/services/webhook/github-webhook.service.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/webhook/github-webhook.service.js +372 -0
- package/dist/packages/core/src/infrastructure/services/webhook/webhook-manager.service.d.ts +82 -0
- package/dist/packages/core/src/infrastructure/services/webhook/webhook-manager.service.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/webhook/webhook-manager.service.js +206 -0
- package/dist/src/presentation/cli/commands/feat/index.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/index.js +2 -0
- package/dist/src/presentation/cli/commands/feat/ls.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/ls.command.js +3 -0
- package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/feat/new.command.js +9 -1
- package/dist/src/presentation/cli/commands/feat/start.command.d.ts +12 -0
- package/dist/src/presentation/cli/commands/feat/start.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/feat/start.command.js +43 -0
- package/dist/src/presentation/cli/commands/ui.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/ui.command.js +15 -0
- package/dist/src/presentation/web/app/actions/create-feature.d.ts +2 -0
- package/dist/src/presentation/web/app/actions/create-feature.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/create-feature.js +3 -1
- package/dist/src/presentation/web/app/actions/load-webhook-status.d.ts +3 -0
- package/dist/src/presentation/web/app/actions/load-webhook-status.d.ts.map +1 -0
- package/dist/src/presentation/web/app/actions/load-webhook-status.js +19 -0
- package/dist/src/presentation/web/app/actions/start-feature.d.ts +5 -0
- package/dist/src/presentation/web/app/actions/start-feature.d.ts.map +1 -0
- package/dist/src/presentation/web/app/actions/start-feature.js +16 -0
- package/dist/src/presentation/web/app/api/agent-events/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/agent-events/route.js +1 -0
- package/dist/src/presentation/web/app/api/webhooks/deliveries/route.d.ts +9 -0
- package/dist/src/presentation/web/app/api/webhooks/deliveries/route.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/webhooks/deliveries/route.js +27 -0
- package/dist/src/presentation/web/app/api/webhooks/github/route.d.ts +17 -0
- package/dist/src/presentation/web/app/api/webhooks/github/route.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/webhooks/github/route.js +70 -0
- package/dist/src/presentation/web/app/api/webhooks/status/route.d.ts +9 -0
- package/dist/src/presentation/web/app/api/webhooks/status/route.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/webhooks/status/route.js +26 -0
- package/dist/src/presentation/web/app/webhooks/page.d.ts +4 -0
- package/dist/src/presentation/web/app/webhooks/page.d.ts.map +1 -0
- package/dist/src/presentation/web/app/webhooks/page.js +9 -0
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.js +1 -1
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.stories.js +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +20 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts +2 -0
- 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 +6 -2
- package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.js +6 -0
- package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +3 -2
- 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-state-config.js +13 -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 +12 -3
- package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.d.ts +2 -0
- package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.js +36 -2
- package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +3 -1
- package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts +1 -0
- package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +23 -0
- 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 +75 -2
- package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts +1 -0
- package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.js +23 -0
- package/dist/src/presentation/web/components/features/settings/timeout-slider.d.ts +11 -0
- package/dist/src/presentation/web/components/features/settings/timeout-slider.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/settings/timeout-slider.js +63 -0
- package/dist/src/presentation/web/components/features/settings/timeout-slider.stories.d.ts +10 -0
- package/dist/src/presentation/web/components/features/settings/timeout-slider.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/settings/timeout-slider.stories.js +24 -0
- 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 +97 -2
- 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 +22 -0
- package/dist/src/presentation/web/components/features/webhooks/types.d.ts +32 -0
- package/dist/src/presentation/web/components/features/webhooks/types.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/webhooks/types.js +1 -0
- package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.d.ts +6 -0
- package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.js +38 -0
- package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.stories.d.ts +9 -0
- package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.stories.js +69 -0
- package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.d.ts +7 -0
- package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.js +11 -0
- package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.stories.d.ts +9 -0
- package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.stories.js +31 -0
- package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.d.ts +6 -0
- package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.js +21 -0
- package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.stories.d.ts +9 -0
- package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.stories.js +56 -0
- package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.d.ts +6 -0
- package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.js +39 -0
- package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.stories.d.ts +8 -0
- package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.stories.js +59 -0
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +2 -2
- package/dist/src/presentation/web/components/ui/slider.d.ts +5 -0
- package/dist/src/presentation/web/components/ui/slider.d.ts.map +1 -0
- package/dist/src/presentation/web/components/ui/slider.js +10 -0
- package/dist/src/presentation/web/components/ui/slider.stories.d.ts +7 -0
- package/dist/src/presentation/web/components/ui/slider.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/ui/slider.stories.js +15 -0
- package/dist/src/presentation/web/dev-server.js +20 -0
- package/dist/src/presentation/web/hooks/sidebar-features-context.d.ts.map +1 -1
- package/dist/src/presentation/web/hooks/sidebar-features-context.js +1 -0
- package/dist/src/presentation/web/hooks/use-graph-state.d.ts.map +1 -1
- package/dist/src/presentation/web/hooks/use-graph-state.js +1 -0
- package/dist/src/presentation/web/lib/derive-graph.d.ts +2 -0
- package/dist/src/presentation/web/lib/derive-graph.d.ts.map +1 -1
- package/dist/src/presentation/web/lib/derive-graph.js +5 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +3 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/app-path-routes-manifest.json +5 -1
- package/web/.next/build-manifest.json +6 -6
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +3 -3
- package/web/.next/required-server-files.json +3 -3
- package/web/.next/routes-manifest.json +24 -0
- package/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +4 -4
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +55 -40
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
- 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/build-manifest.json +4 -4
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +67 -52
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +1 -1
- 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/build-manifest.json +4 -4
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +67 -52
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
- 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/build-manifest.json +4 -4
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +51 -36
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
- 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/build-manifest.json +4 -4
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +55 -40
- package/web/.next/server/app/(dashboard)/create/page.js +1 -1
- 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/build-manifest.json +4 -4
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +67 -52
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +1 -1
- 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/build-manifest.json +4 -4
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +67 -52
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
- 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/build-manifest.json +4 -4
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +51 -36
- package/web/.next/server/app/(dashboard)/page.js +1 -1
- 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/build-manifest.json +4 -4
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +51 -36
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
- 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/page/build-manifest.json +4 -4
- 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/build-manifest.json +4 -4
- 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.nft.json +1 -1
- package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
- package/web/.next/server/app/api/webhooks/deliveries/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/api/webhooks/deliveries/route/build-manifest.json +11 -0
- package/web/.next/server/app/api/webhooks/deliveries/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/api/webhooks/deliveries/route.js +6 -0
- package/web/.next/server/app/api/webhooks/deliveries/route.js.map +5 -0
- package/web/.next/server/app/api/webhooks/deliveries/route.js.nft.json +1 -0
- package/web/.next/server/app/api/webhooks/deliveries/route_client-reference-manifest.js +2 -0
- package/web/.next/server/app/api/webhooks/github/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/api/webhooks/github/route/build-manifest.json +11 -0
- package/web/.next/server/app/api/webhooks/github/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/api/webhooks/github/route.js +6 -0
- package/web/.next/server/app/api/webhooks/github/route.js.map +5 -0
- package/web/.next/server/app/api/webhooks/github/route.js.nft.json +1 -0
- package/web/.next/server/app/api/webhooks/github/route_client-reference-manifest.js +2 -0
- package/web/.next/server/app/api/webhooks/status/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/api/webhooks/status/route/build-manifest.json +11 -0
- package/web/.next/server/app/api/webhooks/status/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/api/webhooks/status/route.js +6 -0
- package/web/.next/server/app/api/webhooks/status/route.js.map +5 -0
- package/web/.next/server/app/api/webhooks/status/route.js.nft.json +1 -0
- package/web/.next/server/app/api/webhooks/status/route_client-reference-manifest.js +2 -0
- package/web/.next/server/app/settings/page/build-manifest.json +4 -4
- package/web/.next/server/app/settings/page/server-reference-manifest.json +5 -5
- 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/build-manifest.json +4 -4
- package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
- 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/build-manifest.json +4 -4
- package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
- 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/build-manifest.json +4 -4
- package/web/.next/server/app/version/page/server-reference-manifest.json +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/webhooks/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/webhooks/page/build-manifest.json +18 -0
- package/web/.next/server/app/webhooks/page/next-font-manifest.json +6 -0
- package/web/.next/server/app/webhooks/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/webhooks/page/server-reference-manifest.json +35 -0
- package/web/.next/server/app/webhooks/page.js +16 -0
- package/web/.next/server/app/webhooks/page.js.map +5 -0
- package/web/.next/server/app/webhooks/page.js.nft.json +1 -0
- package/web/.next/server/app/webhooks/page_client-reference-manifest.js +2 -0
- package/web/.next/server/app-paths-manifest.json +5 -1
- 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/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +2 -2
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map +1 -1
- package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_deliveries_route_actions_d9e34c8d.js +3 -0
- package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_deliveries_route_actions_d9e34c8d.js.map +1 -0
- package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_github_route_actions_1b0d0c38.js +3 -0
- package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_github_route_actions_1b0d0c38.js.map +1 -0
- package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_status_route_actions_1a0d86a1.js +3 -0
- package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_status_route_actions_1a0d86a1.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__15e5d45c._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__15e5d45c._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__23be381e._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__23be381e._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__7d5492a0._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__7d5492a0._.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__9fc760c0._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__9fc760c0._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.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/7f428_lucide-react_dist_esm_icons_activity_22f9667f.js +3 -0
- package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_activity_22f9667f.js.map +1 -0
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_ed372306.js +3 -0
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_ed372306.js.map +1 -0
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_32e26434.js +3 -0
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_32e26434.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__07a39ff2._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__cbd8062c._.js → [root-of-the-server]__172d9576._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__e70c5627._.js.map → [root-of-the-server]__172d9576._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__24dd0927._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__24dd0927._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__039967e3._.js → [root-of-the-server]__2a5592d5._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__cbd8062c._.js.map → [root-of-the-server]__2a5592d5._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__5d847b7b._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__5d847b7b._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__5d87af2e._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__87a7ae30._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__87a7ae30._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__89e8a5cc._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__89e8a5cc._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__920dccd5._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__920dccd5._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a42f5a88._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a42f5a88._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__e70c5627._.js → [root-of-the-server]__a93289b0._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__2773312c._.js.map → [root-of-the-server]__a93289b0._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__2773312c._.js → [root-of-the-server]__ac0304e7._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__039967e3._.js.map → [root-of-the-server]__ac0304e7._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js.map +1 -1
- 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/_250a63ae._.js +1 -1
- package/web/.next/server/chunks/ssr/_250a63ae._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_26b2c311._.js +3 -0
- package/web/.next/server/chunks/ssr/_26b2c311._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_6f0118a0._.js → _719ef347._.js} +2 -2
- package/web/.next/server/chunks/ssr/_719ef347._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_809c53f6._.js +9 -0
- package/web/.next/server/chunks/ssr/_809c53f6._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_8dacd1e7._.js +1 -1
- package/web/.next/server/chunks/ssr/_8dacd1e7._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_98047ffd._.js +3 -0
- package/web/.next/server/chunks/ssr/_98047ffd._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_9eea4c51._.js +3 -0
- package/web/.next/server/chunks/ssr/_9eea4c51._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_a4899a76._.js +3 -0
- package/web/.next/server/chunks/ssr/_a4899a76._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_b715515b._.js +3 -0
- package/web/.next/server/chunks/ssr/{_c5f84841._.js.map → _b715515b._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_b7eb93fc._.js +4 -0
- package/web/.next/server/chunks/ssr/_b7eb93fc._.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/_e0a01382._.js +3 -0
- package/web/.next/server/chunks/ssr/_e0a01382._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_f8b36e2c._.js +3 -0
- package/web/.next/server/chunks/ssr/_f8b36e2c._.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/b1a17_presentation_web_components_features_webhooks_webhooks-page-client_tsx_b2662ea3._.js +3 -0
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_webhooks_webhooks-page-client_tsx_b2662ea3._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_1bb131c4._.js → node_modules__pnpm_747b43ac._.js} +2 -2
- package/web/.next/server/chunks/ssr/node_modules__pnpm_747b43ac._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_0835b28e._.js +5 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_0835b28e._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_e99d78dd.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_e99d78dd.js.map +1 -0
- 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_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_e599bb8c._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.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_e8034a29._.js +5 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_e8034a29._.js.map +1 -0
- package/web/.next/server/middleware-build-manifest.js +4 -4
- 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 +323 -230
- package/web/.next/static/chunks/06b948216df083c1.js +1 -0
- package/web/.next/static/chunks/{52285fdb39925ad5.js → 2ac228556e3d1db4.js} +1 -1
- package/web/.next/static/chunks/31f35710932542ef.js +1 -0
- package/web/.next/static/chunks/40b6bcf1a2de4a0f.js +1 -0
- package/web/.next/static/chunks/4714eb891fa4fd81.js +1 -0
- package/web/.next/static/chunks/57094e1cbd326d6c.css +1 -0
- package/web/.next/static/chunks/{18de73b2f14204d3.js → 5856c588eb7f21fd.js} +1 -1
- package/web/.next/static/chunks/5f6161ceb4263319.js +1 -0
- package/web/.next/static/chunks/81f470d21748eafd.js +2 -0
- package/web/.next/static/chunks/829305a6e02eff1f.js +1 -0
- package/web/.next/static/chunks/97aaeeee72be634b.js +1 -0
- package/web/.next/static/chunks/{672e3da3ad26005b.js → 98e3a7cf58fc912a.js} +1 -1
- package/web/.next/static/chunks/9a7361e2365b2d8e.js +1 -0
- package/web/.next/static/chunks/9af45e885bd4ccef.js +1 -0
- package/web/.next/static/chunks/{5de387864b89e64c.js → ab8b8f80cbc8366f.js} +2 -2
- package/web/.next/static/chunks/c3c3f2c9eb309920.js +1 -0
- package/web/.next/static/chunks/c7e793951b20a67f.js +1 -0
- package/web/.next/static/chunks/cb2824954c3975b0.js +1 -0
- package/web/.next/static/chunks/{2babc8e3ae9ba6e8.js → d3db43fcdbbd9b68.js} +1 -1
- package/web/.next/static/chunks/e9621b096a69e4e8.js +11 -0
- package/web/.next/static/chunks/fb99c57e6d28a274.js +1 -0
- package/web/.next/static/chunks/{turbopack-426d9bc2450816ba.js → turbopack-b1685b5f87ad1d60.js} +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_a1104008.js +0 -3
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_a1104008.js.map +0 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_92642200.js +0 -3
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_92642200.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]__b1e68e34._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b1e68e34._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_1bb131c4._.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/_6d26a08f._.js +0 -3
- package/web/.next/server/chunks/ssr/_6d26a08f._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_6f0118a0._.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/_b5fc318a._.js +0 -3
- package/web/.next/server/chunks/ssr/_b5fc318a._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_c5f84841._.js +0 -3
- package/web/.next/server/chunks/ssr/_d2e408a9._.js +0 -3
- package/web/.next/server/chunks/ssr/_d2e408a9._.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__next-internal_server_app_(dashboard)_page_actions_888633e1.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_888633e1.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ce7cbc3c._.js +0 -5
- package/web/.next/server/chunks/ssr/src_presentation_web_ce7cbc3c._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_e2604413._.js +0 -5
- package/web/.next/server/chunks/ssr/src_presentation_web_e2604413._.js.map +0 -1
- package/web/.next/static/chunks/0b3ab176958a8286.js +0 -1
- package/web/.next/static/chunks/242446982e8d196e.js +0 -1
- package/web/.next/static/chunks/303a1217006489b9.js +0 -1
- package/web/.next/static/chunks/3a806cf059241bc9.js +0 -1
- package/web/.next/static/chunks/552e0f129144b54d.js +0 -1
- package/web/.next/static/chunks/57b45edf86522369.css +0 -1
- package/web/.next/static/chunks/619af41a8d3232e5.js +0 -1
- package/web/.next/static/chunks/7b924c47dd2a5a53.js +0 -2
- package/web/.next/static/chunks/84a181ff3270fd9f.js +0 -1
- package/web/.next/static/chunks/b1f3c0e8e9872ef8.js +0 -1
- package/web/.next/static/chunks/c172f4a6010cb5b5.js +0 -1
- package/web/.next/static/chunks/e12f41ac3d49a7b5.js +0 -11
- package/web/.next/static/chunks/ed3a602003bcb31b.js +0 -1
- package/web/.next/static/chunks/fcde0cbb2976b933.js +0 -1
- /package/web/.next/static/{CStnC7-QgiTd6U99YUc1N → T6bpRqj4p37ell4NNYIUl}/_buildManifest.js +0 -0
- /package/web/.next/static/{CStnC7-QgiTd6U99YUc1N → T6bpRqj4p37ell4NNYIUl}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{CStnC7-QgiTd6U99YUc1N → T6bpRqj4p37ell4NNYIUl}/_ssgManifest.js +0 -0
|
@@ -11,6 +11,9 @@ import { SdlcLifecycle } from './generated/output.js';
|
|
|
11
11
|
*
|
|
12
12
|
* A parent whose lifecycle is a member of this set satisfies Gate 1:
|
|
13
13
|
* directly-blocked children may transition from Blocked to Started.
|
|
14
|
+
*
|
|
15
|
+
* Note: Pending is intentionally excluded — pending features are
|
|
16
|
+
* user-deferred and cannot unblock child features.
|
|
14
17
|
*/
|
|
15
18
|
export declare const POST_IMPLEMENTATION: Set<SdlcLifecycle>;
|
|
16
19
|
//# sourceMappingURL=lifecycle-gates.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle-gates.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/domain/lifecycle-gates.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD
|
|
1
|
+
{"version":3,"file":"lifecycle-gates.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/domain/lifecycle-gates.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,oBAI9B,CAAC"}
|
|
@@ -11,6 +11,9 @@ import { SdlcLifecycle } from './generated/output.js';
|
|
|
11
11
|
*
|
|
12
12
|
* A parent whose lifecycle is a member of this set satisfies Gate 1:
|
|
13
13
|
* directly-blocked children may transition from Blocked to Started.
|
|
14
|
+
*
|
|
15
|
+
* Note: Pending is intentionally excluded — pending features are
|
|
16
|
+
* user-deferred and cannot unblock child features.
|
|
14
17
|
*/
|
|
15
18
|
export const POST_IMPLEMENTATION = new Set([
|
|
16
19
|
SdlcLifecycle.Implementation,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/di/container.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/di/container.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAwHrC;;;;;;GAMG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,SAAS,CAAC,CA+UrE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -27,6 +27,8 @@ import { JsonDrivenIdeLauncherService } from '../services/ide-launchers/json-dri
|
|
|
27
27
|
import { DaemonPidService } from '../services/daemon/daemon-pid.service.js';
|
|
28
28
|
import { DeploymentService } from '../services/deployment/deployment.service.js';
|
|
29
29
|
import { AttachmentStorageService } from '../services/attachment-storage.service.js';
|
|
30
|
+
import { CloudflareTunnelService } from '../services/tunnel/cloudflare-tunnel.service.js';
|
|
31
|
+
import { GitHubWebhookService } from '../services/webhook/github-webhook.service.js';
|
|
30
32
|
import { AgentExecutorFactory } from '../services/agents/common/agent-executor-factory.service.js';
|
|
31
33
|
import { AgentExecutorProvider } from '../services/agents/common/agent-executor-provider.service.js';
|
|
32
34
|
import { StructuredAgentCallerService } from '../services/agents/common/structured-agent-caller.service.js';
|
|
@@ -64,6 +66,7 @@ import { ListFeaturesUseCase } from '../../application/use-cases/features/list-f
|
|
|
64
66
|
import { ShowFeatureUseCase } from '../../application/use-cases/features/show-feature.use-case.js';
|
|
65
67
|
import { DeleteFeatureUseCase } from '../../application/use-cases/features/delete-feature.use-case.js';
|
|
66
68
|
import { ResumeFeatureUseCase } from '../../application/use-cases/features/resume-feature.use-case.js';
|
|
69
|
+
import { StartFeatureUseCase } from '../../application/use-cases/features/start-feature.use-case.js';
|
|
67
70
|
import { GetFeatureArtifactUseCase } from '../../application/use-cases/features/get-feature-artifact.use-case.js';
|
|
68
71
|
import { GetResearchArtifactUseCase } from '../../application/use-cases/features/get-research-artifact.use-case.js';
|
|
69
72
|
import { GetPlanArtifactUseCase } from '../../application/use-cases/features/get-plan-artifact.use-case.js';
|
|
@@ -169,6 +172,18 @@ export async function initializeContainer() {
|
|
|
169
172
|
container.register('AttachmentStorageService', { useToken: AttachmentStorageService });
|
|
170
173
|
const deploymentService = new DeploymentService();
|
|
171
174
|
container.registerInstance('IDeploymentService', deploymentService);
|
|
175
|
+
// Register tunnel and webhook services
|
|
176
|
+
container.register('ITunnelService', {
|
|
177
|
+
useFactory: () => new CloudflareTunnelService(),
|
|
178
|
+
});
|
|
179
|
+
container.register('IWebhookService', {
|
|
180
|
+
useFactory: (c) => {
|
|
181
|
+
const featureRepo = c.resolve('IFeatureRepository');
|
|
182
|
+
const gitPrService = c.resolve('IGitPrService');
|
|
183
|
+
const notifService = c.resolve('INotificationService');
|
|
184
|
+
return new GitHubWebhookService(featureRepo, gitPrService, notifService, execFn);
|
|
185
|
+
},
|
|
186
|
+
});
|
|
172
187
|
// Register agent infrastructure
|
|
173
188
|
container.register('IAgentRunRepository', {
|
|
174
189
|
useFactory: (c) => {
|
|
@@ -276,6 +291,7 @@ export async function initializeContainer() {
|
|
|
276
291
|
container.registerSingleton(ShowFeatureUseCase);
|
|
277
292
|
container.registerSingleton(DeleteFeatureUseCase);
|
|
278
293
|
container.registerSingleton(ResumeFeatureUseCase);
|
|
294
|
+
container.registerSingleton(StartFeatureUseCase);
|
|
279
295
|
container.registerSingleton(GetFeatureArtifactUseCase);
|
|
280
296
|
container.registerSingleton(GetResearchArtifactUseCase);
|
|
281
297
|
container.registerSingleton(GetPlanArtifactUseCase);
|
|
@@ -323,6 +339,9 @@ export async function initializeContainer() {
|
|
|
323
339
|
container.register('ResumeFeatureUseCase', {
|
|
324
340
|
useFactory: (c) => c.resolve(ResumeFeatureUseCase),
|
|
325
341
|
});
|
|
342
|
+
container.register('StartFeatureUseCase', {
|
|
343
|
+
useFactory: (c) => c.resolve(StartFeatureUseCase),
|
|
344
|
+
});
|
|
326
345
|
container.register('ApproveAgentRunUseCase', {
|
|
327
346
|
useFactory: (c) => c.resolve(ApproveAgentRunUseCase),
|
|
328
347
|
});
|
package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts
CHANGED
|
@@ -52,6 +52,13 @@ export interface SettingsRow {
|
|
|
52
52
|
ci_max_fix_attempts: number | null;
|
|
53
53
|
ci_watch_timeout_ms: number | null;
|
|
54
54
|
ci_log_max_chars: number | null;
|
|
55
|
+
stage_timeout_analyze_ms: number | null;
|
|
56
|
+
stage_timeout_requirements_ms: number | null;
|
|
57
|
+
stage_timeout_research_ms: number | null;
|
|
58
|
+
stage_timeout_plan_ms: number | null;
|
|
59
|
+
stage_timeout_implement_ms: number | null;
|
|
60
|
+
stage_timeout_merge_ms: number | null;
|
|
61
|
+
analyze_repo_timeout_analyze_ms: number | null;
|
|
55
62
|
onboarding_complete: number;
|
|
56
63
|
approval_gate_allow_prd: number;
|
|
57
64
|
approval_gate_allow_plan: number;
|
package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.mapper.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAOvE;;;GAGG;AACH,MAAM,WAAW,WAAW;IAE1B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IAInB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IAGtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGpC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAG7B,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IAGtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAG3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;IAChC,yBAAyB,EAAE,MAAM,CAAC;IAClC,0BAA0B,EAAE,MAAM,CAAC;IACnC,yBAAyB,EAAE,MAAM,CAAC;IAClC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,0BAA0B,EAAE,MAAM,CAAC;IACnC,0BAA0B,EAAE,MAAM,CAAC;IACnC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,4BAA4B,EAAE,MAAM,CAAC;IAGrC,iCAAiC,EAAE,MAAM,CAAC;IAG1C,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGhC,mBAAmB,EAAE,MAAM,CAAC;IAG5B,uBAAuB,EAAE,MAAM,CAAC;IAChC,wBAAwB,EAAE,MAAM,CAAC;IACjC,yBAAyB,EAAE,MAAM,CAAC;IAClC,mCAAmC,EAAE,MAAM,CAAC;IAG5C,wBAAwB,EAAE,MAAM,CAAC;IACjC,wBAAwB,EAAE,MAAM,CAAC;IAGjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"settings.mapper.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAOvE;;;GAGG;AACH,MAAM,WAAW,WAAW;IAE1B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IAInB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IAGtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGpC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAG7B,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IAGtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAG3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;IAChC,yBAAyB,EAAE,MAAM,CAAC;IAClC,0BAA0B,EAAE,MAAM,CAAC;IACnC,yBAAyB,EAAE,MAAM,CAAC;IAClC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,0BAA0B,EAAE,MAAM,CAAC;IACnC,0BAA0B,EAAE,MAAM,CAAC;IACnC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,4BAA4B,EAAE,MAAM,CAAC;IAGrC,iCAAiC,EAAE,MAAM,CAAC;IAG1C,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGhC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,6BAA6B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,0BAA0B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGtC,+BAA+B,EAAE,MAAM,GAAG,IAAI,CAAC;IAG/C,mBAAmB,EAAE,MAAM,CAAC;IAG5B,uBAAuB,EAAE,MAAM,CAAC;IAChC,wBAAwB,EAAE,MAAM,CAAC;IACjC,yBAAyB,EAAE,MAAM,CAAC;IAClC,mCAAmC,EAAE,MAAM,CAAC;IAG5C,wBAAwB,EAAE,MAAM,CAAC;IACjC,wBAAwB,EAAE,MAAM,CAAC;IAGjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,CA0F1D;AAsCD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,QAAQ,CAsFvD"}
|
|
@@ -64,6 +64,15 @@ export function toDatabase(settings) {
|
|
|
64
64
|
ci_max_fix_attempts: settings.workflow.ciMaxFixAttempts ?? null,
|
|
65
65
|
ci_watch_timeout_ms: settings.workflow.ciWatchTimeoutMs ?? null,
|
|
66
66
|
ci_log_max_chars: settings.workflow.ciLogMaxChars ?? null,
|
|
67
|
+
// WorkflowConfig per-stage timeouts (optional number → INTEGER | null)
|
|
68
|
+
stage_timeout_analyze_ms: settings.workflow.stageTimeouts?.analyzeMs ?? null,
|
|
69
|
+
stage_timeout_requirements_ms: settings.workflow.stageTimeouts?.requirementsMs ?? null,
|
|
70
|
+
stage_timeout_research_ms: settings.workflow.stageTimeouts?.researchMs ?? null,
|
|
71
|
+
stage_timeout_plan_ms: settings.workflow.stageTimeouts?.planMs ?? null,
|
|
72
|
+
stage_timeout_implement_ms: settings.workflow.stageTimeouts?.implementMs ?? null,
|
|
73
|
+
stage_timeout_merge_ms: settings.workflow.stageTimeouts?.mergeMs ?? null,
|
|
74
|
+
// WorkflowConfig analyze-repo timeouts (optional number → INTEGER | null)
|
|
75
|
+
analyze_repo_timeout_analyze_ms: settings.workflow.analyzeRepoTimeouts?.analyzeMs ?? null,
|
|
67
76
|
// WorkflowConfig evidence settings (boolean → INTEGER)
|
|
68
77
|
workflow_enable_evidence: settings.workflow.enableEvidence ? 1 : 0,
|
|
69
78
|
workflow_commit_evidence: settings.workflow.commitEvidence ? 1 : 0,
|
|
@@ -83,6 +92,39 @@ export function toDatabase(settings) {
|
|
|
83
92
|
feature_flag_debug: settings.featureFlags?.debug ? 1 : 0,
|
|
84
93
|
};
|
|
85
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* Build the stageTimeouts spread from DB row columns.
|
|
97
|
+
* Returns `{ stageTimeouts: { ... } }` when at least one column is non-null,
|
|
98
|
+
* or an empty object `{}` when all are null (so the field stays undefined).
|
|
99
|
+
*/
|
|
100
|
+
function buildStageTimeoutsFromRow(row) {
|
|
101
|
+
const entries = [];
|
|
102
|
+
if (row.stage_timeout_analyze_ms !== null)
|
|
103
|
+
entries.push(['analyzeMs', row.stage_timeout_analyze_ms]);
|
|
104
|
+
if (row.stage_timeout_requirements_ms !== null)
|
|
105
|
+
entries.push(['requirementsMs', row.stage_timeout_requirements_ms]);
|
|
106
|
+
if (row.stage_timeout_research_ms !== null)
|
|
107
|
+
entries.push(['researchMs', row.stage_timeout_research_ms]);
|
|
108
|
+
if (row.stage_timeout_plan_ms !== null)
|
|
109
|
+
entries.push(['planMs', row.stage_timeout_plan_ms]);
|
|
110
|
+
if (row.stage_timeout_implement_ms !== null)
|
|
111
|
+
entries.push(['implementMs', row.stage_timeout_implement_ms]);
|
|
112
|
+
if (row.stage_timeout_merge_ms !== null)
|
|
113
|
+
entries.push(['mergeMs', row.stage_timeout_merge_ms]);
|
|
114
|
+
if (entries.length === 0)
|
|
115
|
+
return {};
|
|
116
|
+
return { stageTimeouts: Object.fromEntries(entries) };
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Build the analyzeRepoTimeouts spread from DB row columns.
|
|
120
|
+
* Returns `{ analyzeRepoTimeouts: { ... } }` when the column is non-null,
|
|
121
|
+
* or an empty object `{}` when null (so the field stays undefined).
|
|
122
|
+
*/
|
|
123
|
+
function buildAnalyzeRepoTimeoutsFromRow(row) {
|
|
124
|
+
if (row.analyze_repo_timeout_analyze_ms === null)
|
|
125
|
+
return {};
|
|
126
|
+
return { analyzeRepoTimeouts: { analyzeMs: row.analyze_repo_timeout_analyze_ms } };
|
|
127
|
+
}
|
|
86
128
|
/**
|
|
87
129
|
* Maps database row to Settings domain object.
|
|
88
130
|
* Reconstructs nested objects and converts types from SQL.
|
|
@@ -153,6 +195,8 @@ export function fromDatabase(row) {
|
|
|
153
195
|
...(row.ci_max_fix_attempts !== null && { ciMaxFixAttempts: row.ci_max_fix_attempts }),
|
|
154
196
|
...(row.ci_watch_timeout_ms !== null && { ciWatchTimeoutMs: row.ci_watch_timeout_ms }),
|
|
155
197
|
...(row.ci_log_max_chars !== null && { ciLogMaxChars: row.ci_log_max_chars }),
|
|
198
|
+
...buildStageTimeoutsFromRow(row),
|
|
199
|
+
...buildAnalyzeRepoTimeoutsFromRow(row),
|
|
156
200
|
enableEvidence: row.workflow_enable_evidence === 1,
|
|
157
201
|
commitEvidence: row.workflow_commit_evidence === 1,
|
|
158
202
|
},
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration 035: Add per-stage timeout columns to settings table.
|
|
3
|
+
*
|
|
4
|
+
* Replaces the single stage_timeout_ms column with individual per-stage
|
|
5
|
+
* timeout columns. Each is a nullable INTEGER (milliseconds). When NULL,
|
|
6
|
+
* the application falls back to the hardcoded default of 600_000 ms
|
|
7
|
+
* (10 minutes).
|
|
8
|
+
*
|
|
9
|
+
* Columns added:
|
|
10
|
+
* - stage_timeout_analyze_ms
|
|
11
|
+
* - stage_timeout_requirements_ms
|
|
12
|
+
* - stage_timeout_research_ms
|
|
13
|
+
* - stage_timeout_plan_ms
|
|
14
|
+
* - stage_timeout_implement_ms
|
|
15
|
+
* - stage_timeout_merge_ms
|
|
16
|
+
* - analyze_repo_timeout_analyze_ms
|
|
17
|
+
*/
|
|
18
|
+
import type { MigrationParams } from 'umzug';
|
|
19
|
+
import type Database from 'better-sqlite3';
|
|
20
|
+
export declare function up({ context: db }: MigrationParams<Database.Database>): Promise<void>;
|
|
21
|
+
export declare function down({ context: db }: MigrationParams<Database.Database>): Promise<void>;
|
|
22
|
+
//# sourceMappingURL=035-add-stage-timeout-ms.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"035-add-stage-timeout-ms.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/persistence/sqlite/migrations/035-add-stage-timeout-ms.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAY3C,wBAAsB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB3F;AAED,wBAAsB,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAI7F"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration 035: Add per-stage timeout columns to settings table.
|
|
3
|
+
*
|
|
4
|
+
* Replaces the single stage_timeout_ms column with individual per-stage
|
|
5
|
+
* timeout columns. Each is a nullable INTEGER (milliseconds). When NULL,
|
|
6
|
+
* the application falls back to the hardcoded default of 600_000 ms
|
|
7
|
+
* (10 minutes).
|
|
8
|
+
*
|
|
9
|
+
* Columns added:
|
|
10
|
+
* - stage_timeout_analyze_ms
|
|
11
|
+
* - stage_timeout_requirements_ms
|
|
12
|
+
* - stage_timeout_research_ms
|
|
13
|
+
* - stage_timeout_plan_ms
|
|
14
|
+
* - stage_timeout_implement_ms
|
|
15
|
+
* - stage_timeout_merge_ms
|
|
16
|
+
* - analyze_repo_timeout_analyze_ms
|
|
17
|
+
*/
|
|
18
|
+
const STAGE_COLUMNS = [
|
|
19
|
+
'stage_timeout_analyze_ms',
|
|
20
|
+
'stage_timeout_requirements_ms',
|
|
21
|
+
'stage_timeout_research_ms',
|
|
22
|
+
'stage_timeout_plan_ms',
|
|
23
|
+
'stage_timeout_implement_ms',
|
|
24
|
+
'stage_timeout_merge_ms',
|
|
25
|
+
'analyze_repo_timeout_analyze_ms',
|
|
26
|
+
];
|
|
27
|
+
export async function up({ context: db }) {
|
|
28
|
+
const columns = db.pragma('table_info(settings)');
|
|
29
|
+
const existingNames = new Set(columns.map((c) => c.name));
|
|
30
|
+
for (const col of STAGE_COLUMNS) {
|
|
31
|
+
if (!existingNames.has(col)) {
|
|
32
|
+
db.exec(`ALTER TABLE settings ADD COLUMN ${col} INTEGER`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// Migrate existing stage_timeout_ms value to all per-stage columns
|
|
36
|
+
if (existingNames.has('stage_timeout_ms')) {
|
|
37
|
+
db.exec(`
|
|
38
|
+
UPDATE settings SET
|
|
39
|
+
stage_timeout_analyze_ms = COALESCE(stage_timeout_analyze_ms, stage_timeout_ms),
|
|
40
|
+
stage_timeout_requirements_ms = COALESCE(stage_timeout_requirements_ms, stage_timeout_ms),
|
|
41
|
+
stage_timeout_research_ms = COALESCE(stage_timeout_research_ms, stage_timeout_ms),
|
|
42
|
+
stage_timeout_plan_ms = COALESCE(stage_timeout_plan_ms, stage_timeout_ms),
|
|
43
|
+
stage_timeout_implement_ms = COALESCE(stage_timeout_implement_ms, stage_timeout_ms),
|
|
44
|
+
stage_timeout_merge_ms = COALESCE(stage_timeout_merge_ms, stage_timeout_ms)
|
|
45
|
+
WHERE stage_timeout_ms IS NOT NULL
|
|
46
|
+
`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export async function down({ context: db }) {
|
|
50
|
+
// SQLite does not support DROP COLUMN before 3.35.0; the columns are
|
|
51
|
+
// nullable and ignored when absent, so this is a no-op.
|
|
52
|
+
void db;
|
|
53
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/persistence/sqlite/migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAI3C;;;GAGG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/persistence/sqlite/migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAI3C;;;GAGG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAoGxC;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAS9E"}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { readdirSync } from 'node:fs';
|
|
13
13
|
import { dirname, join } from 'node:path';
|
|
14
|
-
import { pathToFileURL } from 'node:url';
|
|
14
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
15
15
|
import { Umzug } from 'umzug';
|
|
16
16
|
import { SQLiteMigrationStorage } from './sqlite-migration-storage.js';
|
|
17
17
|
import { LEGACY_MIGRATIONS, LEGACY_MIGRATION_NAMES } from './legacy-migrations.js';
|
|
@@ -27,7 +27,7 @@ export const LATEST_SCHEMA_VERSION = 34;
|
|
|
27
27
|
function getMigrationsDir() {
|
|
28
28
|
// import.meta.url is available in ESM; fallback to __dirname for CJS
|
|
29
29
|
// The migrations/ directory is a sibling of this file
|
|
30
|
-
return join(dirname(
|
|
30
|
+
return join(dirname(fileURLToPath(import.meta.url)), 'migrations');
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
33
33
|
* Discovers new migration files (035+) in the migrations/ directory.
|
|
@@ -41,9 +41,18 @@ function getMigrationsDir() {
|
|
|
41
41
|
async function discoverNewMigrations(migrationsDir) {
|
|
42
42
|
let files;
|
|
43
43
|
try {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
const allFiles = readdirSync(migrationsDir);
|
|
45
|
+
// Accept .js (compiled) and .ts (dev via tsx) but exclude .d.ts declaration files
|
|
46
|
+
const candidates = allFiles.filter((f) => (f.endsWith('.js') || f.endsWith('.ts')) && !f.endsWith('.d.ts') && !f.endsWith('.d.js'));
|
|
47
|
+
// Deduplicate: if both .ts and .js exist for the same migration, prefer .js
|
|
48
|
+
const byName = new Map();
|
|
49
|
+
for (const f of candidates) {
|
|
50
|
+
const base = f.replace(/\.(js|ts)$/, '');
|
|
51
|
+
if (!byName.has(base) || f.endsWith('.js')) {
|
|
52
|
+
byName.set(base, f);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
files = [...byName.values()].sort();
|
|
47
56
|
}
|
|
48
57
|
catch {
|
|
49
58
|
// Directory doesn't exist or is unreadable — no new migrations
|
|
@@ -52,7 +61,7 @@ async function discoverNewMigrations(migrationsDir) {
|
|
|
52
61
|
const migrations = [];
|
|
53
62
|
for (const file of files) {
|
|
54
63
|
const filePath = join(migrationsDir, file);
|
|
55
|
-
const name = file.replace(/\.js$/, '');
|
|
64
|
+
const name = file.replace(/\.(js|ts)$/, '');
|
|
56
65
|
const mod = (await import(pathToFileURL(filePath).href));
|
|
57
66
|
migrations.push({
|
|
58
67
|
name,
|
package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-settings.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-settings.repository.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8EAA8E,CAAC;AACxH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAOjE;;;GAGG;AACH,qBACa,wBAAyB,YAAW,mBAAmB;IACtD,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAElD;;;;;;OAMG;IACG,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"sqlite-settings.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-settings.repository.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8EAA8E,CAAC;AACxH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAOjE;;;GAGG;AACH,qBACa,wBAAyB,YAAW,mBAAmB;IACtD,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAElD;;;;;;OAMG;IACG,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAmEnD;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAgBtC;;;;;OAKG;IACG,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CA4EhD"}
|
|
@@ -57,6 +57,10 @@ let SQLiteSettingsRepository = class SQLiteSettingsRepository {
|
|
|
57
57
|
notif_evt_pr_blocked, notif_evt_merge_review_ready,
|
|
58
58
|
workflow_open_pr_on_impl_complete,
|
|
59
59
|
ci_max_fix_attempts, ci_watch_timeout_ms, ci_log_max_chars,
|
|
60
|
+
stage_timeout_analyze_ms, stage_timeout_requirements_ms,
|
|
61
|
+
stage_timeout_research_ms, stage_timeout_plan_ms,
|
|
62
|
+
stage_timeout_implement_ms, stage_timeout_merge_ms,
|
|
63
|
+
analyze_repo_timeout_analyze_ms,
|
|
60
64
|
onboarding_complete,
|
|
61
65
|
approval_gate_allow_prd, approval_gate_allow_plan,
|
|
62
66
|
approval_gate_allow_merge, approval_gate_push_on_impl_complete,
|
|
@@ -77,6 +81,10 @@ let SQLiteSettingsRepository = class SQLiteSettingsRepository {
|
|
|
77
81
|
@notif_evt_pr_blocked, @notif_evt_merge_review_ready,
|
|
78
82
|
@workflow_open_pr_on_impl_complete,
|
|
79
83
|
@ci_max_fix_attempts, @ci_watch_timeout_ms, @ci_log_max_chars,
|
|
84
|
+
@stage_timeout_analyze_ms, @stage_timeout_requirements_ms,
|
|
85
|
+
@stage_timeout_research_ms, @stage_timeout_plan_ms,
|
|
86
|
+
@stage_timeout_implement_ms, @stage_timeout_merge_ms,
|
|
87
|
+
@analyze_repo_timeout_analyze_ms,
|
|
80
88
|
@onboarding_complete,
|
|
81
89
|
@approval_gate_allow_prd, @approval_gate_allow_plan,
|
|
82
90
|
@approval_gate_allow_merge, @approval_gate_push_on_impl_complete,
|
|
@@ -156,6 +164,13 @@ let SQLiteSettingsRepository = class SQLiteSettingsRepository {
|
|
|
156
164
|
ci_max_fix_attempts = @ci_max_fix_attempts,
|
|
157
165
|
ci_watch_timeout_ms = @ci_watch_timeout_ms,
|
|
158
166
|
ci_log_max_chars = @ci_log_max_chars,
|
|
167
|
+
stage_timeout_analyze_ms = @stage_timeout_analyze_ms,
|
|
168
|
+
stage_timeout_requirements_ms = @stage_timeout_requirements_ms,
|
|
169
|
+
stage_timeout_research_ms = @stage_timeout_research_ms,
|
|
170
|
+
stage_timeout_plan_ms = @stage_timeout_plan_ms,
|
|
171
|
+
stage_timeout_implement_ms = @stage_timeout_implement_ms,
|
|
172
|
+
stage_timeout_merge_ms = @stage_timeout_merge_ms,
|
|
173
|
+
analyze_repo_timeout_analyze_ms = @analyze_repo_timeout_analyze_ms,
|
|
159
174
|
onboarding_complete = @onboarding_complete,
|
|
160
175
|
approval_gate_allow_prd = @approval_gate_allow_prd,
|
|
161
176
|
approval_gate_allow_plan = @approval_gate_allow_plan,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze-repository-graph.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/analyze-repo/analyze-repository-graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;
|
|
1
|
+
{"version":3,"file":"analyze-repository-graph.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/analyze-repo/analyze-repository-graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAkBpG;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;EAIjC,CAAC;AAEH,MAAM,MAAM,0BAA0B,GAAG,OAAO,sBAAsB,CAAC,KAAK,CAAC;AA0B7E;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,cAAc,EACxB,YAAY,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAQnC"}
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
import { Annotation, StateGraph, START, END } from '@langchain/langgraph';
|
|
2
2
|
import { buildAnalyzePrompt } from './prompts/analyze-repository.prompt.js';
|
|
3
|
+
import { hasSettings, getSettings } from '../../../services/settings.service.js';
|
|
4
|
+
/** Default timeout for analyze-repo agent (10 minutes) — prevents infinite hangs. */
|
|
5
|
+
const DEFAULT_ANALYZE_REPO_TIMEOUT_MS = 600_000;
|
|
6
|
+
/**
|
|
7
|
+
* Resolve the timeout for the analyze-repository agent.
|
|
8
|
+
* Reads from settings (workflow.analyzeRepoTimeouts.analyzeMs),
|
|
9
|
+
* falling back to DEFAULT_ANALYZE_REPO_TIMEOUT_MS when not configured.
|
|
10
|
+
*/
|
|
11
|
+
function getAnalyzeRepoTimeoutMs() {
|
|
12
|
+
if (!hasSettings())
|
|
13
|
+
return DEFAULT_ANALYZE_REPO_TIMEOUT_MS;
|
|
14
|
+
const timeouts = getSettings().workflow?.analyzeRepoTimeouts;
|
|
15
|
+
return timeouts?.analyzeMs ?? DEFAULT_ANALYZE_REPO_TIMEOUT_MS;
|
|
16
|
+
}
|
|
3
17
|
/**
|
|
4
18
|
* State annotation for the analyze-repository graph.
|
|
5
19
|
*
|
|
@@ -23,6 +37,7 @@ function createAnalyzeNode(executor) {
|
|
|
23
37
|
const prompt = buildAnalyzePrompt(state.repositoryPath);
|
|
24
38
|
const result = await executor.execute(prompt, {
|
|
25
39
|
cwd: state.repositoryPath,
|
|
40
|
+
timeout: getAnalyzeRepoTimeoutMs(),
|
|
26
41
|
});
|
|
27
42
|
return {
|
|
28
43
|
analysisMarkdown: result.result,
|
package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts
CHANGED
|
@@ -23,10 +23,20 @@ export type NodeLogger = ReturnType<typeof createNodeLogger>;
|
|
|
23
23
|
* Safely read a file from the spec directory. Returns empty string if file doesn't exist.
|
|
24
24
|
*/
|
|
25
25
|
export declare function readSpecFile(specDir: string, filename: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* Resolve the timeout for a specific stage.
|
|
28
|
+
* Reads per-stage timeout from settings (workflow.stageTimeouts.<stage>Ms),
|
|
29
|
+
* falling back to DEFAULT_STAGE_TIMEOUT_MS when not configured.
|
|
30
|
+
*/
|
|
31
|
+
export declare function getStageTimeoutMs(nodeName: string): number;
|
|
26
32
|
/**
|
|
27
33
|
* Build executor options with cwd. Each node gets a clean agent context.
|
|
34
|
+
* The timeout is resolved per-stage from settings (workflow.stageTimeouts)
|
|
35
|
+
* with a fallback to DEFAULT_STAGE_TIMEOUT_MS (10 min).
|
|
36
|
+
*
|
|
37
|
+
* When no `nodeName` is provided, the current node from state is used.
|
|
28
38
|
*/
|
|
29
|
-
export declare function buildExecutorOptions(state: FeatureAgentState, overrides?: Partial<Pick<AgentExecutionOptions, 'timeout'
|
|
39
|
+
export declare function buildExecutorOptions(state: FeatureAgentState, overrides?: Partial<Pick<AgentExecutionOptions, 'timeout'>>, nodeName?: string): AgentExecutionOptions;
|
|
30
40
|
/**
|
|
31
41
|
* Parse YAML with automatic sanitization of common AI-generated issues.
|
|
32
42
|
* First attempts normal parsing; on failure, sanitizes unquoted braces
|
|
@@ -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;
|
|
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,CAqHnE"}
|
package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js
CHANGED
|
@@ -8,6 +8,7 @@ import yaml from 'js-yaml';
|
|
|
8
8
|
import { readFileSync, writeFileSync, renameSync, unlinkSync } from 'node:fs';
|
|
9
9
|
import { join } from 'node:path';
|
|
10
10
|
import { interrupt, isGraphBubbleUp } from '@langchain/langgraph';
|
|
11
|
+
import { hasSettings, getSettings } from '../../../../services/settings.service.js';
|
|
11
12
|
import { reportNodeStart } from '../heartbeat.js';
|
|
12
13
|
import { recordPhaseStart, recordPhaseEnd, recordApprovalWaitStart, } from '../phase-timing-context.js';
|
|
13
14
|
import { updateNodeLifecycle } from '../lifecycle-context.js';
|
|
@@ -44,14 +45,52 @@ export function readSpecFile(specDir, filename) {
|
|
|
44
45
|
return '';
|
|
45
46
|
}
|
|
46
47
|
}
|
|
48
|
+
/** Default timeout per agent call (30 minutes) — prevents infinite hangs. */
|
|
49
|
+
const DEFAULT_STAGE_TIMEOUT_MS = 1_800_000;
|
|
50
|
+
/**
|
|
51
|
+
* Map from node name to the corresponding StageTimeouts field.
|
|
52
|
+
* `fast-implement` reuses the implement timeout; `evidence` also reuses implement.
|
|
53
|
+
*/
|
|
54
|
+
const STAGE_TIMEOUT_KEY = {
|
|
55
|
+
analyze: 'analyzeMs',
|
|
56
|
+
requirements: 'requirementsMs',
|
|
57
|
+
research: 'researchMs',
|
|
58
|
+
plan: 'planMs',
|
|
59
|
+
implement: 'implementMs',
|
|
60
|
+
'fast-implement': 'implementMs',
|
|
61
|
+
evidence: 'implementMs',
|
|
62
|
+
merge: 'mergeMs',
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Resolve the timeout for a specific stage.
|
|
66
|
+
* Reads per-stage timeout from settings (workflow.stageTimeouts.<stage>Ms),
|
|
67
|
+
* falling back to DEFAULT_STAGE_TIMEOUT_MS when not configured.
|
|
68
|
+
*/
|
|
69
|
+
export function getStageTimeoutMs(nodeName) {
|
|
70
|
+
if (!hasSettings())
|
|
71
|
+
return DEFAULT_STAGE_TIMEOUT_MS;
|
|
72
|
+
const timeouts = getSettings().workflow?.stageTimeouts;
|
|
73
|
+
if (!timeouts)
|
|
74
|
+
return DEFAULT_STAGE_TIMEOUT_MS;
|
|
75
|
+
const key = STAGE_TIMEOUT_KEY[nodeName];
|
|
76
|
+
if (!key)
|
|
77
|
+
return DEFAULT_STAGE_TIMEOUT_MS;
|
|
78
|
+
return timeouts[key] ?? DEFAULT_STAGE_TIMEOUT_MS;
|
|
79
|
+
}
|
|
47
80
|
/**
|
|
48
81
|
* Build executor options with cwd. Each node gets a clean agent context.
|
|
82
|
+
* The timeout is resolved per-stage from settings (workflow.stageTimeouts)
|
|
83
|
+
* with a fallback to DEFAULT_STAGE_TIMEOUT_MS (10 min).
|
|
84
|
+
*
|
|
85
|
+
* When no `nodeName` is provided, the current node from state is used.
|
|
49
86
|
*/
|
|
50
|
-
export function buildExecutorOptions(state, overrides) {
|
|
87
|
+
export function buildExecutorOptions(state, overrides, nodeName) {
|
|
88
|
+
const stage = nodeName ?? state.currentNode ?? '';
|
|
89
|
+
const stageTimeout = getStageTimeoutMs(stage);
|
|
51
90
|
return {
|
|
52
91
|
cwd: state.worktreePath || state.repositoryPath,
|
|
53
92
|
maxTurns: 5000,
|
|
54
|
-
timeout:
|
|
93
|
+
timeout: stageTimeout,
|
|
55
94
|
...(state.model ? { model: state.model } : {}),
|
|
56
95
|
...overrides,
|
|
57
96
|
};
|
|
@@ -373,7 +412,7 @@ export function executeNode(nodeName, executor, buildPrompt) {
|
|
|
373
412
|
try {
|
|
374
413
|
const resumePrefix = buildResumeContext(state.resumeReason);
|
|
375
414
|
const prompt = resumePrefix + buildPrompt(state, log);
|
|
376
|
-
const options = buildExecutorOptions(state);
|
|
415
|
+
const options = buildExecutorOptions(state, undefined, nodeName);
|
|
377
416
|
log.info(`Executing agent at cwd=${options.cwd}`);
|
|
378
417
|
log.info(`Prompt length: ${prompt.length} chars`);
|
|
379
418
|
const result = await executor.execute(prompt, options);
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloudflare Tunnel Service
|
|
3
|
+
*
|
|
4
|
+
* Manages a `cloudflared` quick-tunnel that exposes ONLY the webhook
|
|
5
|
+
* API routes to the public internet via a random *.trycloudflare.com
|
|
6
|
+
* subdomain.
|
|
7
|
+
*
|
|
8
|
+
* Uses the `cloudflared` npm package which handles binary installation
|
|
9
|
+
* and provides a typed Tunnel API — no need for the user to install
|
|
10
|
+
* cloudflared separately.
|
|
11
|
+
*
|
|
12
|
+
* Security: A lightweight proxy HTTP server is started on a random port
|
|
13
|
+
* that only forwards requests matching the allowed path prefix
|
|
14
|
+
* (/api/webhooks) to the main app. The tunnel connects to this proxy,
|
|
15
|
+
* not the main app server. All other paths return 404.
|
|
16
|
+
*/
|
|
17
|
+
import type { ITunnelService, TunnelUrlChangeHandler } from '../../../application/ports/output/services/tunnel-service.interface.js';
|
|
18
|
+
export interface CloudflareTunnelDeps {
|
|
19
|
+
createTunnel: (origin: string) => TunnelLike | Promise<TunnelLike>;
|
|
20
|
+
}
|
|
21
|
+
export interface TunnelLike {
|
|
22
|
+
on(event: 'url', handler: (url: string) => void): void;
|
|
23
|
+
on(event: 'connected', handler: (connection: {
|
|
24
|
+
id: string;
|
|
25
|
+
ip: string;
|
|
26
|
+
location: string;
|
|
27
|
+
}) => void): void;
|
|
28
|
+
on(event: 'error', handler: (error: Error) => void): void;
|
|
29
|
+
on(event: 'exit', handler: (code: number | null, signal: string | null) => void): void;
|
|
30
|
+
once(event: string, handler: (...args: unknown[]) => void): void;
|
|
31
|
+
stop(): void;
|
|
32
|
+
}
|
|
33
|
+
export declare class CloudflareTunnelService implements ITunnelService {
|
|
34
|
+
private tunnel;
|
|
35
|
+
private proxyServer;
|
|
36
|
+
private publicUrl;
|
|
37
|
+
private readonly urlChangeHandlers;
|
|
38
|
+
private readonly deps;
|
|
39
|
+
constructor(deps?: Partial<CloudflareTunnelDeps>);
|
|
40
|
+
start(localPort: number): Promise<string>;
|
|
41
|
+
stop(): Promise<void>;
|
|
42
|
+
getPublicUrl(): string | null;
|
|
43
|
+
onUrlChange(handler: TunnelUrlChangeHandler): void;
|
|
44
|
+
isRunning(): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Start a lightweight HTTP proxy on a random port that only forwards
|
|
47
|
+
* requests with paths starting with ALLOWED_PATH_PREFIX to the main app.
|
|
48
|
+
* Everything else gets a 404.
|
|
49
|
+
*/
|
|
50
|
+
private startProxyServer;
|
|
51
|
+
private stopProxyServer;
|
|
52
|
+
private stopTunnel;
|
|
53
|
+
private notifyUrlChange;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=cloudflare-tunnel.service.d.ts.map
|
package/dist/packages/core/src/infrastructure/services/tunnel/cloudflare-tunnel.service.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflare-tunnel.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/tunnel/cloudflare-tunnel.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACvB,MAAM,wEAAwE,CAAC;AAMhF,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IACvD,EAAE,CACA,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,CAAC,UAAU,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAC1E,IAAI,CAAC;IACR,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;IAC1D,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IACvF,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IACjE,IAAI,IAAI,IAAI,CAAC;CACd;AAWD,qBAAa,uBAAwB,YAAW,cAAc;IAC5D,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;IAClE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuB;gBAEhC,IAAI,GAAE,OAAO,CAAC,oBAAoB,CAAM;IAI9C,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuEzC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B,WAAW,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI;IAIlD,SAAS,IAAI,OAAO;IAIpB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IA0DxB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,eAAe;CAgBxB"}
|