Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
bdaf811
feat: add CLI providers for Codex, OpenCode, and Cursor
Dec 27, 2025
f6bd4d8
feat: implement auto-critique system with LLM judge
Dec 27, 2025
493d3f1
feat: add setup routes and status endpoints for CLI providers
Dec 27, 2025
370dbbf
refactor: remove deprecated backlog-plan and queue features
Dec 27, 2025
b78a144
feat: update provider factory and types for CLI providers
Dec 27, 2025
631a0d1
feat: add UI components for CLI provider status and setup
Dec 27, 2025
68d58d6
feat: enhance agent services with auto-critique and improved context
Dec 27, 2025
c011037
test: update tests for new CLI providers and removed features
Dec 27, 2025
f2955d4
feat: comprehensive UI improvements and integration enhancements
Dec 27, 2025
500f262
Restore server backlog plan, queue, and CLAUDE.md loading
Dec 27, 2025
b9cef6d
Harden CLI status and judge utilities
Dec 27, 2025
464b159
Expose model maps in types and resolver
Dec 27, 2025
2d1df93
Restore settings UI for providers and CLAUDE.md
Dec 27, 2025
e0e9baf
Restore backlog plan UI and misc polish
Dec 27, 2025
3514998
Merge branches 'multi_cli_integration' and 'main' of github.com:DealS…
Dec 29, 2025
9840d58
better timeout codex
Dec 29, 2025
69a4a44
Resolve merge conflicts - accept incoming changes
Dec 29, 2025
3fd50c8
feat: add AI Provider option to settings navigation and update relate…
Jan 3, 2026
a56d3da
feat: add AI Provider option to settings navigation and update relate…
Jan 3, 2026
aaa4d58
fix codex
Jan 4, 2026
837cb56
Merge branch 'main' of github.com:DealSegfault/automaker into multi_c…
Jan 4, 2026
64cf974
fix pipeline substack
Jan 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion apps/server/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
"@automaker/git-utils": "1.0.0",
"@automaker/model-resolver": "1.0.0",
"@automaker/platform": "1.0.0",
"@automaker/prompts": "1.0.0",
"@automaker/prompts": "^1.0.0",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Inconsistent dependency versioning for internal monorepo package.

All other @automaker/* dependencies use exact version pins ("1.0.0"), but @automaker/prompts now uses a caret range ("^1.0.0"). In a monorepo with internal packages, exact version pins (or workspace protocol) are recommended to:

  • Keep all packages synchronized
  • Prevent version drift between packages
  • Avoid unexpected behavior from automatic minor/patch updates
🔎 Proposed fix to align with other internal dependencies
-    "@automaker/prompts": "^1.0.0",
+    "@automaker/prompts": "1.0.0",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"@automaker/prompts": "^1.0.0",
"@automaker/prompts": "1.0.0",
🤖 Prompt for AI Agents
In apps/server/package.json around line 32, the @automaker/prompts dependency
uses a caret range "^1.0.0" which is inconsistent with other internal
@automaker/* packages that use exact pins; update the dependency to the exact
version "1.0.0" (or switch to the workspace: protocol if the repo uses workspace
protocol everywhere) so it matches the rest of the monorepo and prevents version
drift.

"@automaker/types": "1.0.0",
"@automaker/utils": "1.0.0",
"@modelcontextprotocol/sdk": "1.25.1",
Expand Down
17 changes: 12 additions & 5 deletions apps/server/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import { createModelsRoutes } from './routes/models/index.js';
import { createRunningAgentsRoutes } from './routes/running-agents/index.js';
import { createWorkspaceRoutes } from './routes/workspace/index.js';
import { createTemplatesRoutes } from './routes/templates/index.js';
import { createBacklogPlanRoutes } from './routes/backlog-plan/index.js';
import {
createTerminalRoutes,
validateTerminalToken,
Expand All @@ -52,7 +53,6 @@ import { createClaudeRoutes } from './routes/claude/index.js';
import { ClaudeUsageService } from './services/claude-usage-service.js';
import { createGitHubRoutes } from './routes/github/index.js';
import { createContextRoutes } from './routes/context/index.js';
import { createBacklogPlanRoutes } from './routes/backlog-plan/index.js';
import { cleanupStaleValidations } from './routes/github/routes/validation-common.js';
import { createMCPRoutes } from './routes/mcp/index.js';
import { MCPTestService } from './services/mcp-test-service.js';
Expand Down Expand Up @@ -155,7 +155,6 @@ app.use(cookieParser());
const events: EventEmitter = createEventEmitter();

// Create services
// Note: settingsService is created first so it can be injected into other services
const settingsService = new SettingsService(DATA_DIR);
const agentService = new AgentService(DATA_DIR, events, settingsService);
const featureLoader = new FeatureLoader();
Expand All @@ -165,13 +164,18 @@ const mcpTestService = new MCPTestService(settingsService);

// Initialize services
(async () => {
await agentService.initialize();
console.log('[Server] Agent service initialized');
try {
await agentService.initialize();
console.log('[Server] Agent service initialized');
} catch (error) {
console.error('[Server] Agent service initialization failed:', error);
process.exit(1);
}
})();

// Run stale validation cleanup every hour to prevent memory leaks from crashed validations
const VALIDATION_CLEANUP_INTERVAL_MS = 60 * 60 * 1000; // 1 hour
setInterval(() => {
const validationCleanupInterval = setInterval(() => {
const cleaned = cleanupStaleValidations();
if (cleaned > 0) {
console.log(`[Server] Cleaned up ${cleaned} stale validation entries`);
Expand All @@ -196,6 +200,7 @@ app.use('/api/fs', createFsRoutes(events));
app.use('/api/agent', createAgentRoutes(agentService, events));
app.use('/api/sessions', createSessionsRoutes(agentService));
app.use('/api/features', createFeaturesRoutes(featureLoader));
app.use('/api/backlog-plan', createBacklogPlanRoutes(events, settingsService));
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Duplicate route mounting detected.

The /api/backlog-plan route is mounted twice - once at line 154 and again at line 171. This will cause the second mount to shadow the first, which could lead to unexpected behavior if the route handlers differ or cause routing conflicts.

🔎 Proposed fix

Remove one of the duplicate mounts. Keep only line 154 since it appears earlier in the logical grouping:

 app.use('/api/context', createContextRoutes(settingsService));
-app.use('/api/backlog-plan', createBacklogPlanRoutes(events, settingsService));
 app.use('/api/pipeline', createPipelineRoutes(pipelineService));

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In apps/server/src/index.ts around lines 154 to 171, the /api/backlog-plan route
is mounted twice (once at line 154 and again at line 171); remove the duplicate
mounting so the route is only registered once (keep the earlier mount at line
154 as suggested) and delete or comment out the later
app.use('/api/backlog-plan', ...) call to prevent routing conflicts.

app.use('/api/auto-mode', createAutoModeRoutes(autoModeService));
app.use('/api/enhance-prompt', createEnhancePromptRoutes(settingsService));
app.use('/api/worktree', createWorktreeRoutes());
Expand Down Expand Up @@ -583,6 +588,7 @@ startServer(PORT);
// Graceful shutdown
process.on('SIGTERM', () => {
console.log('SIGTERM received, shutting down...');
clearInterval(validationCleanupInterval);
terminalService.cleanup();
server.close(() => {
console.log('Server closed');
Expand All @@ -592,6 +598,7 @@ process.on('SIGTERM', () => {

process.on('SIGINT', () => {
console.log('SIGINT received, shutting down...');
clearInterval(validationCleanupInterval);
terminalService.cleanup();
server.close(() => {
console.log('Server closed');
Expand Down
Loading