@shepai/cli 1.14.1 → 1.15.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/README.md +191 -101
- package/dist/eslint.config.mjs +2 -0
- package/dist/src/application/ports/output/external-issue-fetcher.interface.d.ts +69 -0
- package/dist/src/application/ports/output/external-issue-fetcher.interface.d.ts.map +1 -0
- package/dist/src/application/ports/output/external-issue-fetcher.interface.js +46 -0
- package/dist/src/application/ports/output/feature-agent-process.interface.d.ts +44 -0
- package/dist/src/application/ports/output/feature-agent-process.interface.d.ts.map +1 -0
- package/dist/src/application/ports/output/feature-agent-process.interface.js +12 -0
- package/dist/src/application/ports/output/feature-repository.interface.d.ts +76 -0
- package/dist/src/application/ports/output/feature-repository.interface.d.ts.map +1 -0
- package/dist/src/application/ports/output/feature-repository.interface.js +11 -0
- package/dist/src/application/ports/output/index.d.ts +3 -0
- package/dist/src/application/ports/output/index.d.ts.map +1 -1
- package/dist/src/application/ports/output/index.js +1 -1
- package/dist/src/application/ports/output/spec-initializer.interface.d.ts +33 -0
- package/dist/src/application/ports/output/spec-initializer.interface.d.ts.map +1 -0
- package/dist/src/application/ports/output/spec-initializer.interface.js +8 -0
- package/dist/src/application/ports/output/worktree-service.interface.d.ts +83 -0
- package/dist/src/application/ports/output/worktree-service.interface.d.ts.map +1 -0
- package/dist/src/application/ports/output/worktree-service.interface.js +30 -0
- package/dist/src/application/use-cases/agents/approve-agent-run.use-case.d.ts +22 -0
- package/dist/src/application/use-cases/agents/approve-agent-run.use-case.d.ts.map +1 -0
- package/dist/src/application/use-cases/agents/approve-agent-run.use-case.js +67 -0
- package/dist/src/application/use-cases/agents/delete-agent-run.use-case.d.ts +16 -0
- package/dist/src/application/use-cases/agents/delete-agent-run.use-case.d.ts.map +1 -0
- package/dist/src/application/use-cases/agents/delete-agent-run.use-case.js +46 -0
- package/dist/src/application/use-cases/agents/get-agent-run.use-case.d.ts +22 -0
- package/dist/src/application/use-cases/agents/get-agent-run.use-case.d.ts.map +1 -0
- package/dist/src/application/use-cases/agents/get-agent-run.use-case.js +42 -0
- package/dist/src/application/use-cases/agents/list-agent-runs.use-case.d.ts +21 -0
- package/dist/src/application/use-cases/agents/list-agent-runs.use-case.d.ts.map +1 -0
- package/dist/src/application/use-cases/agents/list-agent-runs.use-case.js +54 -0
- package/dist/src/application/use-cases/agents/reject-agent-run.use-case.d.ts +16 -0
- package/dist/src/application/use-cases/agents/reject-agent-run.use-case.d.ts.map +1 -0
- package/dist/src/application/use-cases/agents/reject-agent-run.use-case.js +52 -0
- package/dist/src/application/use-cases/agents/show-agent-run.use-case.d.ts +24 -0
- package/dist/src/application/use-cases/agents/show-agent-run.use-case.d.ts.map +1 -0
- package/dist/src/application/use-cases/agents/show-agent-run.use-case.js +52 -0
- package/dist/src/application/use-cases/agents/stop-agent-run.use-case.d.ts +15 -0
- package/dist/src/application/use-cases/agents/stop-agent-run.use-case.d.ts.map +1 -0
- package/dist/src/application/use-cases/agents/stop-agent-run.use-case.js +86 -0
- package/dist/src/application/use-cases/features/create-feature.use-case.d.ts +43 -0
- package/dist/src/application/use-cases/features/create-feature.use-case.d.ts.map +1 -0
- package/dist/src/application/use-cases/features/create-feature.use-case.js +166 -0
- package/dist/src/application/use-cases/features/delete-feature.use-case.d.ts +27 -0
- package/dist/src/application/use-cases/features/delete-feature.use-case.d.ts.map +1 -0
- package/dist/src/application/use-cases/features/delete-feature.use-case.js +83 -0
- package/dist/src/application/use-cases/features/list-features.use-case.d.ts +17 -0
- package/dist/src/application/use-cases/features/list-features.use-case.d.ts.map +1 -0
- package/dist/src/application/use-cases/features/list-features.use-case.js +37 -0
- package/dist/src/application/use-cases/features/resume-feature.use-case.d.ts +24 -0
- package/dist/src/application/use-cases/features/resume-feature.use-case.d.ts.map +1 -0
- package/dist/src/application/use-cases/features/resume-feature.use-case.js +100 -0
- package/dist/src/application/use-cases/features/show-feature.use-case.d.ts +17 -0
- package/dist/src/application/use-cases/features/show-feature.use-case.d.ts.map +1 -0
- package/dist/src/application/use-cases/features/show-feature.use-case.js +43 -0
- package/dist/src/domain/generated/output.d.ts +26 -1
- package/dist/src/domain/generated/output.d.ts.map +1 -1
- package/dist/src/domain/generated/output.js +1 -0
- package/dist/src/infrastructure/di/container.d.ts.map +1 -1
- package/dist/src/infrastructure/di/container.js +64 -14
- package/dist/src/infrastructure/persistence/sqlite/mappers/agent-run.mapper.d.ts +4 -0
- package/dist/src/infrastructure/persistence/sqlite/mappers/agent-run.mapper.d.ts.map +1 -1
- package/dist/src/infrastructure/persistence/sqlite/mappers/agent-run.mapper.js +8 -0
- package/dist/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts +50 -0
- package/dist/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts.map +1 -0
- package/dist/src/infrastructure/persistence/sqlite/mappers/feature.mapper.js +62 -0
- package/dist/src/infrastructure/persistence/sqlite/migrations.d.ts.map +1 -1
- package/dist/src/infrastructure/persistence/sqlite/migrations.js +49 -0
- package/dist/src/infrastructure/repositories/agent-run.repository.d.ts.map +1 -1
- package/dist/src/infrastructure/repositories/agent-run.repository.js +30 -8
- package/dist/src/infrastructure/repositories/sqlite-feature.repository.d.ts +25 -0
- package/dist/src/infrastructure/repositories/sqlite-feature.repository.d.ts.map +1 -0
- package/dist/src/infrastructure/repositories/sqlite-feature.repository.js +113 -0
- package/dist/src/infrastructure/services/agents/{langgraph → analyze-repo}/analyze-repository-graph.d.ts +0 -22
- package/dist/src/infrastructure/services/agents/analyze-repo/analyze-repository-graph.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/{langgraph → analyze-repo}/analyze-repository-graph.js +4 -11
- package/dist/src/infrastructure/services/agents/analyze-repo/prompts/analyze-repository.prompt.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/{agent-executor-factory.service.d.ts → common/agent-executor-factory.service.d.ts} +3 -3
- package/dist/src/infrastructure/services/agents/common/agent-executor-factory.service.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/{agent-registry.service.d.ts → common/agent-registry.service.d.ts} +1 -1
- package/dist/src/infrastructure/services/agents/common/agent-registry.service.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/{agent-registry.service.js → common/agent-registry.service.js} +7 -1
- package/dist/src/infrastructure/services/agents/{agent-runner.service.d.ts → common/agent-runner.service.d.ts} +5 -5
- package/dist/src/infrastructure/services/agents/common/agent-runner.service.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/{agent-runner.service.js → common/agent-runner.service.js} +4 -4
- package/dist/src/infrastructure/services/agents/{agent-validator.service.d.ts → common/agent-validator.service.d.ts} +2 -2
- package/dist/src/infrastructure/services/agents/common/agent-validator.service.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/{langgraph → common}/checkpointer.d.ts +1 -0
- package/dist/src/infrastructure/services/agents/common/checkpointer.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/{langgraph → common}/checkpointer.js +6 -0
- package/dist/src/infrastructure/services/agents/{executors → common/executors}/claude-code-executor.service.d.ts +9 -2
- package/dist/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/{executors → common/executors}/claude-code-executor.service.js +103 -6
- package/dist/src/infrastructure/services/agents/common/executors/mock-executor-factory.service.d.ts +15 -0
- package/dist/src/infrastructure/services/agents/common/executors/mock-executor-factory.service.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/common/executors/mock-executor-factory.service.js +16 -0
- package/dist/src/infrastructure/services/agents/common/executors/mock-executor.service.d.ts +17 -0
- package/dist/src/infrastructure/services/agents/common/executors/mock-executor.service.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/common/executors/mock-executor.service.js +49 -0
- package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +244 -0
- package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-graph.js +36 -0
- package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +20 -0
- package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +90 -0
- package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +31 -0
- package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +236 -0
- package/dist/src/infrastructure/services/agents/feature-agent/heartbeat.d.ts +19 -0
- package/dist/src/infrastructure/services/agents/feature-agent/heartbeat.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/feature-agent/heartbeat.js +38 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/analyze.node.d.ts +7 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/analyze.node.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/analyze.node.js +9 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/implement.node.d.ts +11 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/implement.node.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/implement.node.js +23 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts +40 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +114 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/plan.node.d.ts +7 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/plan.node.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/plan.node.js +9 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/analyze.prompt.d.ts +9 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/analyze.prompt.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/analyze.prompt.js +94 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.d.ts +8 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.js +18 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/plan.prompt.d.ts +11 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/plan.prompt.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/plan.prompt.js +170 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/requirements.prompt.d.ts +10 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/requirements.prompt.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/requirements.prompt.js +116 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/research.prompt.d.ts +10 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/research.prompt.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/research.prompt.js +121 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/requirements.node.d.ts +7 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/requirements.node.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/requirements.node.js +9 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/research.node.d.ts +7 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/research.node.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/feature-agent/nodes/research.node.js +9 -0
- package/dist/src/infrastructure/services/agents/feature-agent/state.d.ts +39 -0
- package/dist/src/infrastructure/services/agents/feature-agent/state.d.ts.map +1 -0
- package/dist/src/infrastructure/services/agents/feature-agent/state.js +27 -0
- package/dist/src/infrastructure/services/external/github-issue.service.d.ts +19 -0
- package/dist/src/infrastructure/services/external/github-issue.service.d.ts.map +1 -0
- package/dist/src/infrastructure/services/external/github-issue.service.js +59 -0
- package/dist/src/infrastructure/services/external/jira-ticket.service.d.ts +23 -0
- package/dist/src/infrastructure/services/external/jira-ticket.service.d.ts.map +1 -0
- package/dist/src/infrastructure/services/external/jira-ticket.service.js +57 -0
- package/dist/src/infrastructure/services/git/worktree.service.d.ts +28 -0
- package/dist/src/infrastructure/services/git/worktree.service.d.ts.map +1 -0
- package/dist/src/infrastructure/services/git/worktree.service.js +112 -0
- package/dist/src/infrastructure/services/spec/spec-initializer.service.d.ts +17 -0
- package/dist/src/infrastructure/services/spec/spec-initializer.service.d.ts.map +1 -0
- package/dist/src/infrastructure/services/spec/spec-initializer.service.js +281 -0
- package/dist/src/presentation/cli/commands/agent/approve.command.d.ts +11 -0
- package/dist/src/presentation/cli/commands/agent/approve.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/agent/approve.command.js +42 -0
- package/dist/src/presentation/cli/commands/agent/delete.command.d.ts +11 -0
- package/dist/src/presentation/cli/commands/agent/delete.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/agent/delete.command.js +49 -0
- package/dist/src/presentation/cli/commands/agent/index.d.ts +21 -0
- package/dist/src/presentation/cli/commands/agent/index.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/agent/index.js +38 -0
- package/dist/src/presentation/cli/commands/agent/logs.command.d.ts +13 -0
- package/dist/src/presentation/cli/commands/agent/logs.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/agent/logs.command.js +163 -0
- package/dist/src/presentation/cli/commands/agent/ls.command.d.ts +12 -0
- package/dist/src/presentation/cli/commands/agent/ls.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/agent/ls.command.js +111 -0
- package/dist/src/presentation/cli/commands/agent/reject.command.d.ts +11 -0
- package/dist/src/presentation/cli/commands/agent/reject.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/agent/reject.command.js +43 -0
- package/dist/src/presentation/cli/commands/agent/resolve-run.d.ts +10 -0
- package/dist/src/presentation/cli/commands/agent/resolve-run.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/agent/resolve-run.js +27 -0
- package/dist/src/presentation/cli/commands/agent/show.command.d.ts +12 -0
- package/dist/src/presentation/cli/commands/agent/show.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/agent/show.command.js +202 -0
- package/dist/src/presentation/cli/commands/agent/stop.command.d.ts +11 -0
- package/dist/src/presentation/cli/commands/agent/stop.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/agent/stop.command.js +42 -0
- package/dist/src/presentation/cli/commands/feat/del.command.d.ts +17 -0
- package/dist/src/presentation/cli/commands/feat/del.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/feat/del.command.js +55 -0
- package/dist/src/presentation/cli/commands/feat/index.d.ts +17 -0
- package/dist/src/presentation/cli/commands/feat/index.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/feat/index.js +29 -0
- package/dist/src/presentation/cli/commands/feat/ls.command.d.ts +15 -0
- package/dist/src/presentation/cli/commands/feat/ls.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/feat/ls.command.js +112 -0
- package/dist/src/presentation/cli/commands/feat/new.command.d.ts +17 -0
- package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/feat/new.command.js +64 -0
- package/dist/src/presentation/cli/commands/feat/resume.command.d.ts +11 -0
- package/dist/src/presentation/cli/commands/feat/resume.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/feat/resume.command.js +33 -0
- package/dist/src/presentation/cli/commands/feat/show.command.d.ts +11 -0
- package/dist/src/presentation/cli/commands/feat/show.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/feat/show.command.js +128 -0
- package/dist/src/presentation/cli/index.d.ts +8 -4
- package/dist/src/presentation/cli/index.d.ts.map +1 -1
- package/dist/src/presentation/cli/index.js +12 -4
- package/dist/src/presentation/cli/ui/detail-view.d.ts +43 -0
- package/dist/src/presentation/cli/ui/detail-view.d.ts.map +1 -0
- package/dist/src/presentation/cli/ui/detail-view.js +57 -0
- package/dist/src/presentation/cli/ui/index.d.ts +2 -0
- package/dist/src/presentation/cli/ui/index.d.ts.map +1 -1
- package/dist/src/presentation/cli/ui/index.js +2 -0
- package/dist/src/presentation/cli/ui/list-view.d.ts +34 -0
- package/dist/src/presentation/cli/ui/list-view.d.ts.map +1 -0
- package/dist/src/presentation/cli/ui/list-view.js +65 -0
- package/dist/src/presentation/cli/ui/symbols.d.ts +5 -1
- package/dist/src/presentation/cli/ui/symbols.d.ts.map +1 -1
- package/dist/src/presentation/cli/ui/symbols.js +4 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/cache/.previewinfo +1 -1
- package/web/.next/cache/.rscinfo +1 -1
- package/web/.next/cache/config.json +3 -3
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +1 -1
- package/web/.next/required-server-files.json +1 -1
- package/web/.next/server/app/_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.html +2 -2
- package/web/.next/server/app/_not-found.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/index.html +2 -2
- package/web/.next/server/app/index.rsc +1 -1
- package/web/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/version.html +2 -2
- package/web/.next/server/app/version.rsc +1 -1
- package/web/.next/server/app/version.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/version.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/version.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/version.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/version.segments/version/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/version.segments/version.segment.rsc +1 -1
- package/web/.next/server/chunks/ssr/_19be0743._.js +1 -1
- package/web/.next/server/pages/404.html +2 -2
- 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 +1 -1
- package/web/.next/trace +1 -1
- package/web/.next/trace-build +1 -1
- package/dist/src/infrastructure/services/agents/agent-executor-factory.service.d.ts.map +0 -1
- package/dist/src/infrastructure/services/agents/agent-registry.service.d.ts.map +0 -1
- package/dist/src/infrastructure/services/agents/agent-runner.service.d.ts.map +0 -1
- package/dist/src/infrastructure/services/agents/agent-validator.service.d.ts.map +0 -1
- package/dist/src/infrastructure/services/agents/executors/claude-code-executor.service.d.ts.map +0 -1
- package/dist/src/infrastructure/services/agents/langgraph/analyze-repository-graph.d.ts.map +0 -1
- package/dist/src/infrastructure/services/agents/langgraph/checkpointer.d.ts.map +0 -1
- package/dist/src/infrastructure/services/agents/langgraph/prompts/analyze-repository.prompt.d.ts.map +0 -1
- /package/dist/src/infrastructure/services/agents/{langgraph → analyze-repo}/prompts/analyze-repository.prompt.d.ts +0 -0
- /package/dist/src/infrastructure/services/agents/{langgraph → analyze-repo}/prompts/analyze-repository.prompt.js +0 -0
- /package/dist/src/infrastructure/services/agents/{agent-executor-factory.service.js → common/agent-executor-factory.service.js} +0 -0
- /package/dist/src/infrastructure/services/agents/{agent-validator.service.js → common/agent-validator.service.js} +0 -0
- /package/web/.next/static/{ozzHAkZyxX7nXyxpqufBs → XV-wYY85Xk9ANCuQDQ6_H}/_buildManifest.js +0 -0
- /package/web/.next/static/{ozzHAkZyxX7nXyxpqufBs → XV-wYY85Xk9ANCuQDQ6_H}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{ozzHAkZyxX7nXyxpqufBs → XV-wYY85Xk9ANCuQDQ6_H}/_ssgManifest.js +0 -0
package/README.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
#
|
|
3
|
+
# Shep AI
|
|
4
4
|
|
|
5
|
-
###
|
|
5
|
+
### Multi-Session SDLC Control Center for AI Coding Agents
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
_Manage Claude Code, Cursor CLI, or any coding agent across the full development lifecycle — from requirements to deploy — with parallel sessions, instant context switching, and human-in-the-loop control_
|
|
8
8
|
|
|
9
9
|
[](https://github.com/shep-ai/cli/actions/workflows/ci.yml)
|
|
10
10
|
[](https://www.npmjs.com/package/@shepai/cli)
|
|
@@ -17,104 +17,210 @@ _Automate the entire development cycle from idea to deploy_
|
|
|
17
17
|
|
|
18
18
|
<br />
|
|
19
19
|
|
|
20
|
-
[
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
[Features](#features) · [Quick Start](#quick-start) · [CLI Reference](#cli) · [Architecture](#architecture) · [Contributing](#contributing)
|
|
21
|
+
|
|
22
|
+
<br />
|
|
23
|
+
|
|
24
|
+
<img src="docs/poc/imgs/00-control-center-hero.png" alt="Shep AI Control Center — manage all features across repos from a single canvas" width="100%" />
|
|
25
|
+
|
|
26
|
+
<br />
|
|
24
27
|
|
|
25
28
|
</div>
|
|
26
29
|
|
|
27
30
|
---
|
|
28
31
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
## Installation
|
|
32
|
+
Running AI agents is easy. **Managing many of them through a full SDLC is the hard part.** Shep gives you a control center that handles the entire lifecycle — requirements gathering, planning, implementation, QA, and deployment — across multiple agent sessions running in parallel. See what each agent is doing, jump into any session's web preview, code editor, or terminal, approve plans when agents need your input, and let them keep working while you move on. Plug in Claude Code, Cursor CLI, Gemini CLI, or any coding agent. Each feature gets its own isolated worktree and dev environment. You manage the lifecycle, agents do the work.
|
|
32
33
|
|
|
33
34
|
```bash
|
|
34
|
-
|
|
35
|
+
npm i -g @shepai/cli
|
|
36
|
+
cd your-repo/
|
|
37
|
+
shep feat new "Implement SSO with SAML 2.0"
|
|
38
|
+
# Agent starts working in a dedicated worktree.
|
|
39
|
+
# Open the control center to watch progress, intervene, or switch context.
|
|
40
|
+
shep ui
|
|
35
41
|
```
|
|
36
42
|
|
|
37
|
-
|
|
43
|
+
---
|
|
38
44
|
|
|
39
|
-
|
|
40
|
-
npm install -g @shepai/cli
|
|
41
|
-
```
|
|
45
|
+
## Features
|
|
42
46
|
|
|
43
|
-
|
|
47
|
+
<table>
|
|
48
|
+
<tr>
|
|
49
|
+
<td width="55%"><img src="docs/poc/imgs/01-features-control-center-overview.png" alt="Feature properties with attachments and metadata" /></td>
|
|
50
|
+
<td width="45%">
|
|
44
51
|
|
|
45
|
-
|
|
46
|
-
cd ~/repos/your-project
|
|
47
|
-
shep
|
|
48
|
-
```
|
|
52
|
+
### Feature Properties & Attachments
|
|
49
53
|
|
|
50
|
-
|
|
54
|
+
- **Rich feature detail panel** with name, description, and metadata
|
|
55
|
+
- **File attachments** — requirements PDFs, mockup images, API specs linked directly to features
|
|
56
|
+
- **Team & metadata** tracking for ownership and collaboration
|
|
57
|
+
- **Dependency mapping** between features across repos
|
|
58
|
+
- **Iterative refinement** — update properties as requirements evolve through the lifecycle
|
|
51
59
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
```
|
|
60
|
+
</td>
|
|
61
|
+
</tr>
|
|
55
62
|
|
|
56
|
-
|
|
63
|
+
<tr>
|
|
64
|
+
<td width="55%"><img src="docs/poc/imgs/02-feature-card-action-toolbar.png" alt="Feature card with action toolbar" /></td>
|
|
65
|
+
<td width="45%">
|
|
57
66
|
|
|
58
|
-
|
|
59
|
-
2. Start repository analysis
|
|
60
|
-
3. Open the web UI at `http://localhost:4050/`
|
|
67
|
+
### Feature Cards with Quick Actions
|
|
61
68
|
|
|
62
|
-
|
|
69
|
+
- **One-click dev server** launch directly from any card
|
|
70
|
+
- **Action toolbar** — GitHub, web preview, terminal, code editor at your fingertips
|
|
71
|
+
- **Live progress** tracking with percentage and lifecycle stage badge
|
|
72
|
+
- **Unique IDs** for instant cross-referencing across CLI and UI
|
|
63
73
|
|
|
64
|
-
|
|
74
|
+
</td>
|
|
75
|
+
</tr>
|
|
65
76
|
|
|
66
|
-
|
|
77
|
+
<tr>
|
|
78
|
+
<td width="55%"><img src="docs/poc/imgs/03-requirements-discovery-validation.png" alt="Requirements discovery questionnaire" /></td>
|
|
79
|
+
<td width="45%">
|
|
67
80
|
|
|
68
|
-
-
|
|
69
|
-
- Technology stack detection
|
|
70
|
-
- Code conventions and style
|
|
71
|
-
- Dependency mapping
|
|
72
|
-
- Testing patterns
|
|
73
|
-
- Documentation coverage
|
|
81
|
+
### AI-Guided Requirements Discovery
|
|
74
82
|
|
|
75
|
-
|
|
83
|
+
- **Smart questionnaires** that surface the right questions for your feature
|
|
84
|
+
- **Categorized inputs** — business, technical, and UX problem classification
|
|
85
|
+
- **Priority tiers** (P1–P3) with clear impact descriptions
|
|
86
|
+
- **Domain tagging** to scope the affected areas of your codebase
|
|
87
|
+
- **Human breakpoint** — agent pauses here until you finalize
|
|
76
88
|
|
|
77
|
-
|
|
89
|
+
</td>
|
|
90
|
+
</tr>
|
|
78
91
|
|
|
79
|
-
|
|
92
|
+
<tr>
|
|
93
|
+
<td width="55%"><img src="docs/poc/imgs/04-technical-implementation-plan-review.png" alt="Technical plan review with architecture decisions" /></td>
|
|
94
|
+
<td width="45%">
|
|
80
95
|
|
|
81
|
-
|
|
82
|
-
Requirements → Plan → Implementation → Test → Deploy → Maintenance
|
|
83
|
-
```
|
|
96
|
+
### Technical Plan Review
|
|
84
97
|
|
|
85
|
-
|
|
98
|
+
- **AI-generated implementation plans** with full architecture rationale
|
|
99
|
+
- **Technical decision cards** — see the chosen approach and alternatives side-by-side
|
|
100
|
+
- **Architecture pattern selection** (microservices, monolith, serverless) with trade-off analysis
|
|
101
|
+
- **Approve & continue** or send back for revision — you control the direction
|
|
86
102
|
|
|
87
|
-
|
|
103
|
+
</td>
|
|
104
|
+
</tr>
|
|
88
105
|
|
|
89
|
-
|
|
106
|
+
<tr>
|
|
107
|
+
<td width="55%"><img src="docs/poc/imgs/05-plan-review-tasks-and-artifacts.png" alt="Task breakdown and generated artifacts" /></td>
|
|
108
|
+
<td width="45%">
|
|
90
109
|
|
|
91
|
-
|
|
110
|
+
### Tasks & Generated Artifacts
|
|
92
111
|
|
|
93
|
-
- **
|
|
94
|
-
- **
|
|
95
|
-
- **
|
|
112
|
+
- **Auto-generated documents** — plan.md, tasks.md, data_model.md created from your approved spec
|
|
113
|
+
- **Task breakdown** with dependency tracking and status badges
|
|
114
|
+
- **Artifact browser** — inspect any generated document directly in the panel
|
|
115
|
+
- **Draft indicator** — nothing ships until you explicitly approve
|
|
96
116
|
|
|
97
|
-
|
|
117
|
+
</td>
|
|
118
|
+
</tr>
|
|
98
119
|
|
|
99
|
-
|
|
120
|
+
<tr>
|
|
121
|
+
<td width="55%"><img src="docs/poc/imgs/06-qa-check-review.png" alt="QA checklist with all checks passing" /></td>
|
|
122
|
+
<td width="45%">
|
|
100
123
|
|
|
101
|
-
|
|
124
|
+
### Quality Assurance Gate
|
|
102
125
|
|
|
103
|
-
|
|
126
|
+
- **Automated QA checklist** — functional, performance, compatibility, accessibility
|
|
127
|
+
- **Performance benchmarks** — API response time p95 thresholds
|
|
128
|
+
- **WCAG 2.5** accessibility compliance verification
|
|
129
|
+
- **One-click Pass QA** when all checks are green
|
|
104
130
|
|
|
105
|
-
|
|
131
|
+
</td>
|
|
132
|
+
</tr>
|
|
106
133
|
|
|
107
|
-
|
|
134
|
+
<tr>
|
|
135
|
+
<td width="55%"><img src="docs/poc/imgs/07-dev-environment-web-preview.png" alt="Integrated web preview in dev environment" /></td>
|
|
136
|
+
<td width="45%">
|
|
108
137
|
|
|
109
|
-
|
|
110
|
-
|
|
138
|
+
### Integrated Dev Environment — Web Preview
|
|
139
|
+
|
|
140
|
+
- **Live localhost preview** embedded in the control center
|
|
141
|
+
- **Isolated ports** — each feature runs its own dev server
|
|
142
|
+
- **Server status** indicator with start/stop controls
|
|
143
|
+
- **Open in Browser** for full-screen testing
|
|
144
|
+
- **PR context** — branch, worktree path, and PR link always visible
|
|
145
|
+
|
|
146
|
+
</td>
|
|
147
|
+
</tr>
|
|
148
|
+
|
|
149
|
+
<tr>
|
|
150
|
+
<td width="55%"><img src="docs/poc/imgs/08-dev-environment-vscode-tab.png" alt="Embedded VS Code editor in dev environment" /></td>
|
|
151
|
+
<td width="45%">
|
|
152
|
+
|
|
153
|
+
### Integrated Dev Environment — Code Editor
|
|
154
|
+
|
|
155
|
+
- **Embedded VS Code** with full editor capabilities
|
|
156
|
+
- **Git worktree isolation** — each feature in its own directory, no branch conflicts
|
|
157
|
+
- **File explorer** with project structure at a glance
|
|
158
|
+
- **PR badge** with commits ahead/behind and changed file count
|
|
159
|
+
- **Zero context-switch** — edit code without leaving the control center
|
|
160
|
+
|
|
161
|
+
</td>
|
|
162
|
+
</tr>
|
|
163
|
+
|
|
164
|
+
<tr>
|
|
165
|
+
<td width="55%"><img src="docs/poc/imgs/09-dev-environment-terminal-tab.png" alt="Terminal tab showing running dev server" /></td>
|
|
166
|
+
<td width="45%">
|
|
167
|
+
|
|
168
|
+
### Integrated Dev Environment — Terminal
|
|
169
|
+
|
|
170
|
+
- **Full terminal access** inside the feature workspace
|
|
171
|
+
- **Build output, test results, agent logs** in one place
|
|
172
|
+
- **Pre-configured** in the feature's worktree directory
|
|
173
|
+
- **Dev server output** — see Next.js/Vite/Express startup and compile times
|
|
174
|
+
- **Three-tab workflow** — preview, code, and terminal without leaving the UI
|
|
175
|
+
|
|
176
|
+
</td>
|
|
177
|
+
</tr>
|
|
178
|
+
</table>
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Quick Start
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
# Install
|
|
186
|
+
npm i -g @shepai/cli
|
|
187
|
+
|
|
188
|
+
# Start the background service
|
|
189
|
+
shep start
|
|
190
|
+
# ➜ Local: http://localhost:5173/
|
|
191
|
+
# Shep service is running in background, have fun!
|
|
192
|
+
|
|
193
|
+
# Navigate to any repo
|
|
194
|
+
cd ~/repos/your-project
|
|
195
|
+
|
|
196
|
+
# Create your first feature
|
|
197
|
+
shep feat new "Add user authentication with OAuth 2.0"
|
|
198
|
+
|
|
199
|
+
# Open the control center
|
|
200
|
+
shep ui
|
|
111
201
|
```
|
|
112
202
|
|
|
113
|
-
|
|
203
|
+
## CLI
|
|
204
|
+
|
|
205
|
+
```
|
|
206
|
+
shep start Start background service
|
|
207
|
+
shep feat new <description> Create a new feature
|
|
208
|
+
shep feat new --interactive Interactive mode with human checkpoints
|
|
209
|
+
shep feat new --allow-all Full autonomous mode
|
|
210
|
+
shep feat ls List features across repos
|
|
211
|
+
shep feat show <id> Show feature details
|
|
212
|
+
shep feat preview <id> Preview feature dev environment
|
|
213
|
+
shep ui Open the web control center
|
|
214
|
+
shep settings show Display current configuration
|
|
215
|
+
shep settings agent Configure AI coding agent
|
|
216
|
+
shep mem add <text> --global|--repo Add agent memory
|
|
217
|
+
shep mem ls List memories
|
|
218
|
+
shep version Version info
|
|
219
|
+
```
|
|
114
220
|
|
|
115
221
|
## Architecture
|
|
116
222
|
|
|
117
|
-
|
|
223
|
+
Clean Architecture with four layers. Dependencies point inward — domain has zero external deps.
|
|
118
224
|
|
|
119
225
|
```mermaid
|
|
120
226
|
flowchart TB
|
|
@@ -132,15 +238,20 @@ flowchart TB
|
|
|
132
238
|
style I fill:#ede9fe,stroke:#8b5cf6,color:#4c1d95
|
|
133
239
|
```
|
|
134
240
|
|
|
135
|
-
###
|
|
241
|
+
### Feature Lifecycle
|
|
242
|
+
|
|
243
|
+
Every feature progresses through a structured SDLC pipeline:
|
|
136
244
|
|
|
137
|
-
|
|
245
|
+
```
|
|
246
|
+
Requirements → Research → Review PRD → Planning → Review Plan → Implementation → QA → Approval → Live
|
|
247
|
+
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
|
|
248
|
+
Agent Agent Human Agent Human Agent Human Human
|
|
249
|
+
breakpoint breakpoint check gate
|
|
250
|
+
```
|
|
138
251
|
|
|
139
|
-
|
|
140
|
-
- Interface-driven design for testability
|
|
141
|
-
- Supports future backend swaps
|
|
252
|
+
Breakpoints are configurable. In `--allow-all` mode, the agent handles everything autonomously.
|
|
142
253
|
|
|
143
|
-
|
|
254
|
+
### Tech Stack
|
|
144
255
|
|
|
145
256
|
| Component | Technology |
|
|
146
257
|
| --------------- | --------------------------------------------------------------------------------------- |
|
|
@@ -157,22 +268,17 @@ Uses **Repository Pattern** with SQLite:
|
|
|
157
268
|
| Embeddings | [Transformers.js](https://huggingface.co/docs/transformers.js) (local, multiple models) |
|
|
158
269
|
| Testing | Vitest (unit/integration) + Playwright (e2e) |
|
|
159
270
|
| Methodology | TDD (Red-Green-Refactor) |
|
|
160
|
-
| Security | Trivy, Gitleaks, Semgrep, Hadolint (CI gates) |
|
|
161
|
-
|
|
162
|
-
## Security
|
|
163
|
-
|
|
164
|
-
Automated security scanning runs on every push and PR:
|
|
165
271
|
|
|
166
|
-
|
|
167
|
-
| ------------ | ------------------------------------------ |
|
|
168
|
-
| **Trivy** | Dependency & container vulnerability scans |
|
|
169
|
-
| **Gitleaks** | Secret detection in git history |
|
|
170
|
-
| **Semgrep** | SAST for TypeScript/JavaScript |
|
|
171
|
-
| **Hadolint** | Dockerfile best practices |
|
|
272
|
+
### Data Model
|
|
172
273
|
|
|
173
|
-
|
|
274
|
+
```
|
|
275
|
+
Repository ──┬── Feature ──┬── Plan ──┬── Task ──── ActionItem
|
|
276
|
+
│ │ └── Artifact
|
|
277
|
+
│ └── Requirement ── Research
|
|
278
|
+
└── Analysis docs (cached)
|
|
279
|
+
```
|
|
174
280
|
|
|
175
|
-
|
|
281
|
+
All data lives locally in `~/.shep/`. Per-repo SQLite databases. No cloud dependency.
|
|
176
282
|
|
|
177
283
|
## Documentation
|
|
178
284
|
|
|
@@ -191,28 +297,12 @@ See [CI/CD Documentation](./docs/development/cicd.md) for details.
|
|
|
191
297
|
|
|
192
298
|
## Contributing
|
|
193
299
|
|
|
194
|
-
We welcome contributions
|
|
195
|
-
|
|
196
|
-
## License
|
|
300
|
+
We welcome contributions from humans and AI agents alike.
|
|
197
301
|
|
|
198
|
-
|
|
302
|
+
- **Humans**: See [CONTRIBUTING.md](./CONTRIBUTING.md)
|
|
303
|
+
- **AI Agents**: See [CONTRIBUTING-AGENTS.md](./CONTRIBUTING-AGENTS.md)
|
|
304
|
+
- **Spec-driven workflow**: All features start with `/shep-kit:new-feature` — see [Spec-Driven Workflow](./docs/development/spec-driven-workflow.md)
|
|
199
305
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
## Maintaining This Document
|
|
203
|
-
|
|
204
|
-
**When to update:**
|
|
205
|
-
|
|
206
|
-
- New major features or commands
|
|
207
|
-
- Architecture changes
|
|
208
|
-
- Tech stack updates
|
|
209
|
-
- New documentation sections
|
|
210
|
-
|
|
211
|
-
**Style guide:**
|
|
212
|
-
|
|
213
|
-
- Keep Quick Start minimal (3-5 steps max)
|
|
214
|
-
- Update badges when versions change
|
|
215
|
-
- Ensure all internal links work
|
|
216
|
-
- Test code examples
|
|
306
|
+
## License
|
|
217
307
|
|
|
218
|
-
|
|
308
|
+
MIT — see [LICENSE](./LICENSE).
|
package/dist/eslint.config.mjs
CHANGED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External Issue Fetcher Port Interface
|
|
3
|
+
*
|
|
4
|
+
* Output port for fetching issues/tickets from external systems (GitHub, Jira).
|
|
5
|
+
* Returns a normalized ExternalIssue that can be appended to feature context.
|
|
6
|
+
*
|
|
7
|
+
* Following Clean Architecture:
|
|
8
|
+
* - Application layer depends on this interface
|
|
9
|
+
* - Infrastructure layer provides concrete implementations
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Normalized issue representation from any external source.
|
|
13
|
+
*/
|
|
14
|
+
export interface ExternalIssue {
|
|
15
|
+
title: string;
|
|
16
|
+
description: string;
|
|
17
|
+
labels: string[];
|
|
18
|
+
url: string;
|
|
19
|
+
source: 'github' | 'jira';
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Service interface for fetching issues from external systems.
|
|
23
|
+
*/
|
|
24
|
+
export interface IExternalIssueFetcher {
|
|
25
|
+
/**
|
|
26
|
+
* Fetch a GitHub issue by reference.
|
|
27
|
+
* Supports formats: owner/repo#123 or #123 (uses current repo).
|
|
28
|
+
*
|
|
29
|
+
* @param ref - GitHub issue reference (e.g., "owner/repo#42" or "#42")
|
|
30
|
+
* @returns Normalized external issue
|
|
31
|
+
* @throws IssueNotFoundError if issue doesn't exist
|
|
32
|
+
* @throws IssueServiceUnavailableError if gh CLI is not installed
|
|
33
|
+
*/
|
|
34
|
+
fetchGitHubIssue(ref: string): Promise<ExternalIssue>;
|
|
35
|
+
/**
|
|
36
|
+
* Fetch a Jira ticket by key.
|
|
37
|
+
*
|
|
38
|
+
* @param key - Jira ticket key (e.g., "PROJ-123")
|
|
39
|
+
* @returns Normalized external issue
|
|
40
|
+
* @throws IssueNotFoundError if ticket doesn't exist
|
|
41
|
+
* @throws IssueAuthenticationError if credentials are invalid
|
|
42
|
+
*/
|
|
43
|
+
fetchJiraTicket(key: string): Promise<ExternalIssue>;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Base error for issue fetcher failures.
|
|
47
|
+
*/
|
|
48
|
+
export declare class IssueFetcherError extends Error {
|
|
49
|
+
constructor(message: string);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Thrown when the requested issue/ticket is not found.
|
|
53
|
+
*/
|
|
54
|
+
export declare class IssueNotFoundError extends IssueFetcherError {
|
|
55
|
+
constructor(message: string);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Thrown when authentication to the external service fails.
|
|
59
|
+
*/
|
|
60
|
+
export declare class IssueAuthenticationError extends IssueFetcherError {
|
|
61
|
+
constructor(message: string);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Thrown when the external service is unavailable (e.g., gh CLI not installed).
|
|
65
|
+
*/
|
|
66
|
+
export declare class IssueServiceUnavailableError extends IssueFetcherError {
|
|
67
|
+
constructor(message: string);
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=external-issue-fetcher.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external-issue-fetcher.interface.d.ts","sourceRoot":"","sources":["../../../../../src/application/ports/output/external-issue-fetcher.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;;;;OAQG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAEtD;;;;;;;OAOG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACtD;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,iBAAiB;gBAC3C,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,iBAAiB;gBACjD,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,iBAAiB;gBACrD,OAAO,EAAE,MAAM;CAI5B"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External Issue Fetcher Port Interface
|
|
3
|
+
*
|
|
4
|
+
* Output port for fetching issues/tickets from external systems (GitHub, Jira).
|
|
5
|
+
* Returns a normalized ExternalIssue that can be appended to feature context.
|
|
6
|
+
*
|
|
7
|
+
* Following Clean Architecture:
|
|
8
|
+
* - Application layer depends on this interface
|
|
9
|
+
* - Infrastructure layer provides concrete implementations
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Base error for issue fetcher failures.
|
|
13
|
+
*/
|
|
14
|
+
export class IssueFetcherError extends Error {
|
|
15
|
+
constructor(message) {
|
|
16
|
+
super(message);
|
|
17
|
+
this.name = 'IssueFetcherError';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Thrown when the requested issue/ticket is not found.
|
|
22
|
+
*/
|
|
23
|
+
export class IssueNotFoundError extends IssueFetcherError {
|
|
24
|
+
constructor(message) {
|
|
25
|
+
super(message);
|
|
26
|
+
this.name = 'IssueNotFoundError';
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Thrown when authentication to the external service fails.
|
|
31
|
+
*/
|
|
32
|
+
export class IssueAuthenticationError extends IssueFetcherError {
|
|
33
|
+
constructor(message) {
|
|
34
|
+
super(message);
|
|
35
|
+
this.name = 'IssueAuthenticationError';
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Thrown when the external service is unavailable (e.g., gh CLI not installed).
|
|
40
|
+
*/
|
|
41
|
+
export class IssueServiceUnavailableError extends IssueFetcherError {
|
|
42
|
+
constructor(message) {
|
|
43
|
+
super(message);
|
|
44
|
+
this.name = 'IssueServiceUnavailableError';
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Agent Process Service Interface
|
|
3
|
+
*
|
|
4
|
+
* Output port for managing feature agent background processes.
|
|
5
|
+
* Implementations handle forking worker processes, checking liveness,
|
|
6
|
+
* and marking crashed processes.
|
|
7
|
+
*
|
|
8
|
+
* Following Clean Architecture:
|
|
9
|
+
* - Application layer depends on this interface
|
|
10
|
+
* - Infrastructure layer provides concrete implementation
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Service interface for feature agent background process management.
|
|
14
|
+
*/
|
|
15
|
+
export interface IFeatureAgentProcessService {
|
|
16
|
+
/**
|
|
17
|
+
* Spawn a background worker process for a feature agent run.
|
|
18
|
+
*
|
|
19
|
+
* @param featureId - The feature ID to process
|
|
20
|
+
* @param runId - The agent run ID for tracking
|
|
21
|
+
* @param repoPath - Repository path for context
|
|
22
|
+
* @param specDir - Spec directory path
|
|
23
|
+
* @returns The PID of the spawned process
|
|
24
|
+
*/
|
|
25
|
+
spawn(featureId: string, runId: string, repoPath: string, specDir: string, worktreePath?: string, options?: {
|
|
26
|
+
approvalMode?: string;
|
|
27
|
+
resume?: boolean;
|
|
28
|
+
}): number;
|
|
29
|
+
/**
|
|
30
|
+
* Check if a process is still alive.
|
|
31
|
+
*
|
|
32
|
+
* @param pid - The process ID to check
|
|
33
|
+
* @returns True if the process is running
|
|
34
|
+
*/
|
|
35
|
+
isAlive(pid: number): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Check if the process for an agent run is alive.
|
|
38
|
+
* If the process is dead, mark the run as interrupted.
|
|
39
|
+
*
|
|
40
|
+
* @param runId - The agent run ID to check
|
|
41
|
+
*/
|
|
42
|
+
checkAndMarkCrashed(runId: string): Promise<void>;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=feature-agent-process.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-agent-process.interface.d.ts","sourceRoot":"","sources":["../../../../../src/application/ports/output/feature-agent-process.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;;;;;;OAQG;IACH,KAAK,CACH,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GACpD,MAAM,CAAC;IAEV;;;;;OAKG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAE9B;;;;;OAKG;IACH,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Agent Process Service Interface
|
|
3
|
+
*
|
|
4
|
+
* Output port for managing feature agent background processes.
|
|
5
|
+
* Implementations handle forking worker processes, checking liveness,
|
|
6
|
+
* and marking crashed processes.
|
|
7
|
+
*
|
|
8
|
+
* Following Clean Architecture:
|
|
9
|
+
* - Application layer depends on this interface
|
|
10
|
+
* - Infrastructure layer provides concrete implementation
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Repository Interface
|
|
3
|
+
*
|
|
4
|
+
* Output port for Feature persistence operations.
|
|
5
|
+
* Implementations handle database-specific logic (SQLite, etc.).
|
|
6
|
+
*
|
|
7
|
+
* Following Clean Architecture:
|
|
8
|
+
* - Domain and Application layers depend on this interface
|
|
9
|
+
* - Infrastructure layer provides concrete implementations
|
|
10
|
+
*/
|
|
11
|
+
import type { Feature, SdlcLifecycle } from '../../../domain/generated/output.js';
|
|
12
|
+
/**
|
|
13
|
+
* Filters for listing features.
|
|
14
|
+
*/
|
|
15
|
+
export interface FeatureListFilters {
|
|
16
|
+
repositoryPath?: string;
|
|
17
|
+
lifecycle?: SdlcLifecycle;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Repository interface for Feature entity persistence.
|
|
21
|
+
*
|
|
22
|
+
* Implementations must:
|
|
23
|
+
* - Handle database connection management
|
|
24
|
+
* - Provide thread-safe operations
|
|
25
|
+
* - Support query by slug + repositoryPath for uniqueness
|
|
26
|
+
*/
|
|
27
|
+
export interface IFeatureRepository {
|
|
28
|
+
/**
|
|
29
|
+
* Create a new feature record.
|
|
30
|
+
*
|
|
31
|
+
* @param feature - The feature to persist
|
|
32
|
+
*/
|
|
33
|
+
create(feature: Feature): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Find a feature by its unique ID.
|
|
36
|
+
*
|
|
37
|
+
* @param id - The feature ID
|
|
38
|
+
* @returns The feature or null if not found
|
|
39
|
+
*/
|
|
40
|
+
findById(id: string): Promise<Feature | null>;
|
|
41
|
+
/**
|
|
42
|
+
* Find a feature by an ID prefix (e.g. first 8 chars from `feat ls`).
|
|
43
|
+
*
|
|
44
|
+
* @param prefix - A prefix of the feature UUID
|
|
45
|
+
* @returns The feature if exactly one match, null if none, throws if ambiguous
|
|
46
|
+
*/
|
|
47
|
+
findByIdPrefix(prefix: string): Promise<Feature | null>;
|
|
48
|
+
/**
|
|
49
|
+
* Find a feature by its slug within a repository.
|
|
50
|
+
*
|
|
51
|
+
* @param slug - The URL-friendly feature identifier
|
|
52
|
+
* @param repositoryPath - The repository path to scope the search
|
|
53
|
+
* @returns The feature or null if not found
|
|
54
|
+
*/
|
|
55
|
+
findBySlug(slug: string, repositoryPath: string): Promise<Feature | null>;
|
|
56
|
+
/**
|
|
57
|
+
* List features with optional filters.
|
|
58
|
+
*
|
|
59
|
+
* @param filters - Optional filters for repositoryPath and lifecycle
|
|
60
|
+
* @returns Array of matching features
|
|
61
|
+
*/
|
|
62
|
+
list(filters?: FeatureListFilters): Promise<Feature[]>;
|
|
63
|
+
/**
|
|
64
|
+
* Update an existing feature.
|
|
65
|
+
*
|
|
66
|
+
* @param feature - The feature with updated fields
|
|
67
|
+
*/
|
|
68
|
+
update(feature: Feature): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Delete a feature by ID.
|
|
71
|
+
*
|
|
72
|
+
* @param id - The feature ID to delete
|
|
73
|
+
*/
|
|
74
|
+
delete(id: string): Promise<void>;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=feature-repository.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-repository.interface.d.ts","sourceRoot":"","sources":["../../../../../src/application/ports/output/feature-repository.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAE9C;;;;;OAKG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAExD;;;;;;OAMG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAE1E;;;;;OAKG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEvD;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;;;OAIG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Repository Interface
|
|
3
|
+
*
|
|
4
|
+
* Output port for Feature persistence operations.
|
|
5
|
+
* Implementations handle database-specific logic (SQLite, etc.).
|
|
6
|
+
*
|
|
7
|
+
* Following Clean Architecture:
|
|
8
|
+
* - Domain and Application layers depend on this interface
|
|
9
|
+
* - Infrastructure layer provides concrete implementations
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
@@ -13,4 +13,7 @@ export type { IAgentExecutorFactory } from './agent-executor-factory.interface.j
|
|
|
13
13
|
export type { IAgentRunner, AgentRunOptions } from './agent-runner.interface.js';
|
|
14
14
|
export type { IAgentRegistry, AgentDefinitionWithFactory } from './agent-registry.interface.js';
|
|
15
15
|
export type { IAgentRunRepository } from './agent-run-repository.interface.js';
|
|
16
|
+
export type { IWorktreeService, WorktreeInfo } from './worktree-service.interface.js';
|
|
17
|
+
export { WorktreeError, WorktreeErrorCode } from './worktree-service.interface.js';
|
|
18
|
+
export type { IFeatureAgentProcessService } from './feature-agent-process.interface.js';
|
|
16
19
|
//# sourceMappingURL=index.d.ts.map
|