@aion0/forge 0.5.25 → 0.5.26
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/.forge/memory/graph.json +1 -0
- package/.forge/memory/knowledge.json +18 -0
- package/.forge/memory/meta.json +7 -0
- package/.forge/worktrees/pipeline-0a33c50d/CLAUDE.md +86 -0
- package/.forge/worktrees/pipeline-0a33c50d/README.md +136 -0
- package/.forge/worktrees/pipeline-0a33c50d/RELEASE_NOTES.md +11 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/agents/route.ts +17 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/auth/[...nextauth]/route.ts +3 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/auth/verify/route.ts +46 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/claude/[id]/route.ts +31 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/claude/[id]/stream/route.ts +63 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/claude/route.ts +28 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/claude-sessions/[projectName]/entries/route.ts +23 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/claude-sessions/[projectName]/live/route.ts +72 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/claude-sessions/[projectName]/route.ts +37 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/claude-sessions/sync/route.ts +17 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/claude-templates/route.ts +145 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/code/route.ts +299 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/delivery/[id]/route.ts +62 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/delivery/route.ts +40 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/detect-cli/route.ts +46 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/docs/route.ts +176 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/docs/sessions/route.ts +54 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/favorites/route.ts +26 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/flows/route.ts +6 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/flows/run/route.ts +19 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/git/route.ts +149 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/help/route.ts +84 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/issue-scanner/route.ts +116 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/logs/route.ts +100 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/mobile-chat/route.ts +115 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/monitor/route.ts +74 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/notifications/route.ts +42 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/notify/test/route.ts +33 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/online/route.ts +40 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/pipelines/[id]/route.ts +41 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/pipelines/route.ts +90 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/plugins/route.ts +75 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/preview/[...path]/route.ts +64 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/preview/route.ts +156 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/project-pipelines/route.ts +91 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/project-sessions/route.ts +61 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/projects/route.ts +26 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/sessions/[id]/chat/route.ts +64 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/sessions/[id]/messages/route.ts +9 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/sessions/[id]/route.ts +17 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/sessions/route.ts +20 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/settings/route.ts +64 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/skills/local/route.ts +228 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/skills/route.ts +182 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/smith-templates/route.ts +81 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/status/route.ts +12 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/tabs/route.ts +25 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/tasks/[id]/route.ts +51 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/tasks/[id]/stream/route.ts +77 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/tasks/link/route.ts +37 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/tasks/route.ts +44 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/tasks/session/route.ts +14 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/telegram/route.ts +23 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/templates/route.ts +6 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/terminal-bell/route.ts +35 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/terminal-cwd/route.ts +19 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/terminal-state/route.ts +15 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/tunnel/route.ts +26 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/upgrade/route.ts +43 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/usage/route.ts +20 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/version/route.ts +78 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/watchers/route.ts +33 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/workspace/[id]/agents/route.ts +35 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/workspace/[id]/memory/route.ts +23 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/workspace/[id]/smith/route.ts +22 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/workspace/[id]/stream/route.ts +28 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/api/workspace/route.ts +100 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/global-error.tsx +21 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/globals.css +52 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/icon.ico +0 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/icon.png +0 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/icon.svg +106 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/layout.tsx +17 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/login/LoginForm.tsx +96 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/login/page.tsx +10 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/mobile/page.tsx +9 -0
- package/.forge/worktrees/pipeline-0a33c50d/app/page.tsx +21 -0
- package/.forge/worktrees/pipeline-0a33c50d/bin/forge-server.mjs +484 -0
- package/.forge/worktrees/pipeline-0a33c50d/check-forge-status.sh +71 -0
- package/.forge/worktrees/pipeline-0a33c50d/cli/mw.ts +579 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/BrowserPanel.tsx +175 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/ChatPanel.tsx +191 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/ClaudeTerminal.tsx +267 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/CodeViewer.tsx +787 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/ConversationEditor.tsx +411 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/ConversationGraphView.tsx +347 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/ConversationTerminalView.tsx +303 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/Dashboard.tsx +807 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/DashboardWrapper.tsx +9 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/DeliveryFlowEditor.tsx +491 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/DeliveryList.tsx +230 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/DeliveryWorkspace.tsx +589 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/DocTerminal.tsx +187 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/DocsViewer.tsx +574 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/HelpDialog.tsx +169 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/HelpTerminal.tsx +141 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/InlinePipelineView.tsx +111 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/LogViewer.tsx +194 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/MarkdownContent.tsx +73 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/MobileView.tsx +385 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/MonitorPanel.tsx +122 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/NewSessionModal.tsx +93 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/NewTaskModal.tsx +492 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/PipelineEditor.tsx +570 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/PipelineView.tsx +1018 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/PluginsPanel.tsx +472 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/ProjectDetail.tsx +1618 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/ProjectList.tsx +108 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/ProjectManager.tsx +401 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/SessionList.tsx +74 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/SessionView.tsx +726 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/SettingsModal.tsx +1647 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/SkillsPanel.tsx +969 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/StatusBar.tsx +99 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/TabBar.tsx +46 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/TaskBoard.tsx +113 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/TaskDetail.tsx +372 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/TerminalLauncher.tsx +398 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/TunnelToggle.tsx +206 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/UsagePanel.tsx +207 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/WebTerminal.tsx +1683 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/WorkspaceTree.tsx +221 -0
- package/.forge/worktrees/pipeline-0a33c50d/components/WorkspaceView.tsx +4048 -0
- package/.forge/worktrees/pipeline-0a33c50d/dev-test.sh +5 -0
- package/.forge/worktrees/pipeline-0a33c50d/docs/Forge_Memory_Layer_Design.docx +0 -0
- package/.forge/worktrees/pipeline-0a33c50d/docs/Forge_Strategy_Research_2026.docx +0 -0
- package/.forge/worktrees/pipeline-0a33c50d/docs/LOCAL-DEPLOY.md +144 -0
- package/.forge/worktrees/pipeline-0a33c50d/docs/roadmap-multi-agent-workflow.md +330 -0
- package/.forge/worktrees/pipeline-0a33c50d/forge-logo.png +0 -0
- package/.forge/worktrees/pipeline-0a33c50d/forge-logo.svg +106 -0
- package/.forge/worktrees/pipeline-0a33c50d/hooks/useSidebarResize.ts +52 -0
- package/.forge/worktrees/pipeline-0a33c50d/install.sh +29 -0
- package/.forge/worktrees/pipeline-0a33c50d/instrumentation.ts +35 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/agents/claude-adapter.ts +104 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/agents/generic-adapter.ts +64 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/agents/index.ts +245 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/agents/types.ts +70 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/artifacts.ts +106 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/auth.ts +62 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/builtin-plugins/docker.yaml +70 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/builtin-plugins/http.yaml +66 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/builtin-plugins/jenkins.yaml +92 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/builtin-plugins/llm-vision.yaml +85 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/builtin-plugins/playwright.yaml +111 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/builtin-plugins/shell-command.yaml +60 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/builtin-plugins/slack.yaml +48 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/builtin-plugins/webhook.yaml +56 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/claude-process.ts +352 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/claude-sessions.ts +266 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/claude-templates.ts +227 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/cloudflared.ts +424 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/crypto.ts +67 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/delivery.ts +787 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/dirs.ts +99 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/flows.ts +86 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/forge-mcp-server.ts +717 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/forge-skills/forge-inbox.md +38 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/forge-skills/forge-send.md +47 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/forge-skills/forge-status.md +32 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/forge-skills/forge-workspace-sync.md +37 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/help-docs/00-overview.md +40 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/help-docs/01-settings.md +194 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/help-docs/02-telegram.md +41 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/help-docs/03-tunnel.md +31 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/help-docs/04-tasks.md +52 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/help-docs/05-pipelines.md +460 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/help-docs/06-skills.md +43 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/help-docs/07-projects.md +73 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/help-docs/08-rules.md +53 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/help-docs/09-issue-autofix.md +55 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/help-docs/10-troubleshooting.md +89 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/help-docs/11-workspace.md +810 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/help-docs/CLAUDE.md +62 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/init.ts +266 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/issue-scanner.ts +298 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/logger.ts +79 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/notifications.ts +75 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/notify.ts +108 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/password.ts +97 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/pipeline-scheduler.ts +373 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/pipeline.ts +1438 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/plugins/executor.ts +347 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/plugins/registry.ts +228 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/plugins/types.ts +103 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/project-sessions.ts +53 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/projects.ts +86 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/session-manager.ts +156 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/session-utils.ts +53 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/session-watcher.ts +345 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/settings.ts +195 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/skills.ts +458 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/task-manager.ts +949 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/telegram-bot.ts +1477 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/telegram-standalone.ts +83 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/terminal-server.ts +70 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/terminal-standalone.ts +421 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/usage-scanner.ts +249 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/workspace/__tests__/state-machine.test.ts +388 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/workspace/__tests__/workspace.test.ts +311 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/workspace/agent-bus.ts +416 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/workspace/agent-worker.ts +655 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/workspace/backends/api-backend.ts +262 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/workspace/backends/cli-backend.ts +491 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/workspace/index.ts +82 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/workspace/manager.ts +136 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/workspace/orchestrator.ts +3400 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/workspace/persistence.ts +309 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/workspace/presets.ts +649 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/workspace/requests.ts +287 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/workspace/session-monitor.ts +240 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/workspace/skill-installer.ts +275 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/workspace/smith-memory.ts +498 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/workspace/types.ts +241 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/workspace/watch-manager.ts +560 -0
- package/.forge/worktrees/pipeline-0a33c50d/lib/workspace-standalone.ts +911 -0
- package/.forge/worktrees/pipeline-0a33c50d/middleware.ts +51 -0
- package/.forge/worktrees/pipeline-0a33c50d/next.config.ts +26 -0
- package/.forge/worktrees/pipeline-0a33c50d/package.json +74 -0
- package/.forge/worktrees/pipeline-0a33c50d/pnpm-lock.yaml +3719 -0
- package/.forge/worktrees/pipeline-0a33c50d/pnpm-workspace.yaml +1 -0
- package/.forge/worktrees/pipeline-0a33c50d/postcss.config.mjs +7 -0
- package/.forge/worktrees/pipeline-0a33c50d/publish.sh +133 -0
- package/.forge/worktrees/pipeline-0a33c50d/scripts/bench/README.md +66 -0
- package/.forge/worktrees/pipeline-0a33c50d/scripts/bench/results/.gitignore +2 -0
- package/.forge/worktrees/pipeline-0a33c50d/scripts/bench/run.ts +635 -0
- package/.forge/worktrees/pipeline-0a33c50d/scripts/bench/tasks/01-text-utils/task.md +26 -0
- package/.forge/worktrees/pipeline-0a33c50d/scripts/bench/tasks/01-text-utils/validator.sh +46 -0
- package/.forge/worktrees/pipeline-0a33c50d/scripts/bench/tasks/02-pagination/setup.sh +19 -0
- package/.forge/worktrees/pipeline-0a33c50d/scripts/bench/tasks/02-pagination/task.md +48 -0
- package/.forge/worktrees/pipeline-0a33c50d/scripts/bench/tasks/02-pagination/validator.sh +69 -0
- package/.forge/worktrees/pipeline-0a33c50d/scripts/bench/tasks/03-bug-fix/setup.sh +82 -0
- package/.forge/worktrees/pipeline-0a33c50d/scripts/bench/tasks/03-bug-fix/task.md +30 -0
- package/.forge/worktrees/pipeline-0a33c50d/scripts/bench/tasks/03-bug-fix/validator.sh +29 -0
- package/.forge/worktrees/pipeline-0a33c50d/scripts/verify-usage.ts +178 -0
- package/.forge/worktrees/pipeline-0a33c50d/src/config/index.ts +129 -0
- package/.forge/worktrees/pipeline-0a33c50d/src/core/db/database.ts +259 -0
- package/.forge/worktrees/pipeline-0a33c50d/src/core/memory/strategy.ts +32 -0
- package/.forge/worktrees/pipeline-0a33c50d/src/core/providers/chat.ts +65 -0
- package/.forge/worktrees/pipeline-0a33c50d/src/core/providers/registry.ts +60 -0
- package/.forge/worktrees/pipeline-0a33c50d/src/core/session/manager.ts +190 -0
- package/.forge/worktrees/pipeline-0a33c50d/src/types/index.ts +129 -0
- package/.forge/worktrees/pipeline-0a33c50d/start.sh +31 -0
- package/.forge/worktrees/pipeline-0a33c50d/templates/smith-lead.json +45 -0
- package/.forge/worktrees/pipeline-0a33c50d/tsconfig.json +42 -0
- package/.forge/worktrees/pipeline-2ba01c10/CLAUDE.md +86 -0
- package/.forge/worktrees/pipeline-2ba01c10/README.md +136 -0
- package/.forge/worktrees/pipeline-2ba01c10/RELEASE_NOTES.md +11 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/agents/route.ts +17 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/auth/[...nextauth]/route.ts +3 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/auth/verify/route.ts +46 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/claude/[id]/route.ts +31 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/claude/[id]/stream/route.ts +63 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/claude/route.ts +28 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/claude-sessions/[projectName]/entries/route.ts +23 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/claude-sessions/[projectName]/live/route.ts +72 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/claude-sessions/[projectName]/route.ts +37 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/claude-sessions/sync/route.ts +17 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/claude-templates/route.ts +145 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/code/route.ts +299 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/delivery/[id]/route.ts +62 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/delivery/route.ts +40 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/detect-cli/route.ts +46 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/docs/route.ts +176 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/docs/sessions/route.ts +54 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/favorites/route.ts +26 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/flows/route.ts +6 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/flows/run/route.ts +19 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/git/route.ts +149 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/help/route.ts +84 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/issue-scanner/route.ts +116 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/logs/route.ts +100 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/mobile-chat/route.ts +115 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/monitor/route.ts +74 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/notifications/route.ts +42 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/notify/test/route.ts +33 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/online/route.ts +40 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/pipelines/[id]/route.ts +41 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/pipelines/route.ts +90 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/plugins/route.ts +75 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/preview/[...path]/route.ts +64 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/preview/route.ts +156 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/project-pipelines/route.ts +91 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/project-sessions/route.ts +61 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/projects/route.ts +26 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/sessions/[id]/chat/route.ts +64 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/sessions/[id]/messages/route.ts +9 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/sessions/[id]/route.ts +17 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/sessions/route.ts +20 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/settings/route.ts +64 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/skills/local/route.ts +228 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/skills/route.ts +182 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/smith-templates/route.ts +81 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/status/route.ts +12 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/tabs/route.ts +25 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/tasks/[id]/route.ts +51 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/tasks/[id]/stream/route.ts +77 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/tasks/link/route.ts +37 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/tasks/route.ts +44 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/tasks/session/route.ts +14 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/telegram/route.ts +23 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/templates/route.ts +6 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/terminal-bell/route.ts +35 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/terminal-cwd/route.ts +19 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/terminal-state/route.ts +15 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/tunnel/route.ts +26 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/upgrade/route.ts +43 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/usage/route.ts +20 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/version/route.ts +78 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/watchers/route.ts +33 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/workspace/[id]/agents/route.ts +35 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/workspace/[id]/memory/route.ts +23 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/workspace/[id]/smith/route.ts +22 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/workspace/[id]/stream/route.ts +28 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/api/workspace/route.ts +100 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/global-error.tsx +21 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/globals.css +52 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/icon.ico +0 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/icon.png +0 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/icon.svg +106 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/layout.tsx +17 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/login/LoginForm.tsx +96 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/login/page.tsx +10 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/mobile/page.tsx +9 -0
- package/.forge/worktrees/pipeline-2ba01c10/app/page.tsx +21 -0
- package/.forge/worktrees/pipeline-2ba01c10/bin/forge-server.mjs +484 -0
- package/.forge/worktrees/pipeline-2ba01c10/check-forge-status.sh +71 -0
- package/.forge/worktrees/pipeline-2ba01c10/cli/mw.ts +579 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/BrowserPanel.tsx +175 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/ChatPanel.tsx +191 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/ClaudeTerminal.tsx +267 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/CodeViewer.tsx +787 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/ConversationEditor.tsx +411 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/ConversationGraphView.tsx +347 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/ConversationTerminalView.tsx +303 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/Dashboard.tsx +807 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/DashboardWrapper.tsx +9 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/DeliveryFlowEditor.tsx +491 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/DeliveryList.tsx +230 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/DeliveryWorkspace.tsx +589 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/DocTerminal.tsx +187 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/DocsViewer.tsx +574 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/HelpDialog.tsx +169 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/HelpTerminal.tsx +141 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/InlinePipelineView.tsx +111 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/LogViewer.tsx +194 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/MarkdownContent.tsx +73 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/MobileView.tsx +385 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/MonitorPanel.tsx +122 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/NewSessionModal.tsx +93 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/NewTaskModal.tsx +492 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/PipelineEditor.tsx +570 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/PipelineView.tsx +1018 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/PluginsPanel.tsx +472 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/ProjectDetail.tsx +1618 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/ProjectList.tsx +108 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/ProjectManager.tsx +401 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/SessionList.tsx +74 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/SessionView.tsx +726 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/SettingsModal.tsx +1647 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/SkillsPanel.tsx +969 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/StatusBar.tsx +99 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/TabBar.tsx +46 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/TaskBoard.tsx +113 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/TaskDetail.tsx +372 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/TerminalLauncher.tsx +398 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/TunnelToggle.tsx +206 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/UsagePanel.tsx +207 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/WebTerminal.tsx +1683 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/WorkspaceTree.tsx +221 -0
- package/.forge/worktrees/pipeline-2ba01c10/components/WorkspaceView.tsx +4048 -0
- package/.forge/worktrees/pipeline-2ba01c10/dev-test.sh +5 -0
- package/.forge/worktrees/pipeline-2ba01c10/docs/Forge_Memory_Layer_Design.docx +0 -0
- package/.forge/worktrees/pipeline-2ba01c10/docs/Forge_Strategy_Research_2026.docx +0 -0
- package/.forge/worktrees/pipeline-2ba01c10/docs/LOCAL-DEPLOY.md +144 -0
- package/.forge/worktrees/pipeline-2ba01c10/docs/roadmap-multi-agent-workflow.md +330 -0
- package/.forge/worktrees/pipeline-2ba01c10/forge-logo.png +0 -0
- package/.forge/worktrees/pipeline-2ba01c10/forge-logo.svg +106 -0
- package/.forge/worktrees/pipeline-2ba01c10/hooks/useSidebarResize.ts +52 -0
- package/.forge/worktrees/pipeline-2ba01c10/install.sh +29 -0
- package/.forge/worktrees/pipeline-2ba01c10/instrumentation.ts +35 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/agents/claude-adapter.ts +104 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/agents/generic-adapter.ts +64 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/agents/index.ts +245 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/agents/types.ts +70 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/artifacts.ts +106 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/auth.ts +62 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/builtin-plugins/docker.yaml +70 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/builtin-plugins/http.yaml +66 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/builtin-plugins/jenkins.yaml +92 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/builtin-plugins/llm-vision.yaml +85 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/builtin-plugins/playwright.yaml +111 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/builtin-plugins/shell-command.yaml +60 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/builtin-plugins/slack.yaml +48 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/builtin-plugins/webhook.yaml +56 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/claude-process.ts +352 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/claude-sessions.ts +266 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/claude-templates.ts +227 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/cloudflared.ts +424 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/crypto.ts +67 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/delivery.ts +787 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/dirs.ts +99 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/flows.ts +86 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/forge-mcp-server.ts +717 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/forge-skills/forge-inbox.md +38 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/forge-skills/forge-send.md +47 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/forge-skills/forge-status.md +32 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/forge-skills/forge-workspace-sync.md +37 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/help-docs/00-overview.md +40 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/help-docs/01-settings.md +194 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/help-docs/02-telegram.md +41 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/help-docs/03-tunnel.md +31 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/help-docs/04-tasks.md +52 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/help-docs/05-pipelines.md +460 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/help-docs/06-skills.md +43 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/help-docs/07-projects.md +73 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/help-docs/08-rules.md +53 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/help-docs/09-issue-autofix.md +55 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/help-docs/10-troubleshooting.md +89 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/help-docs/11-workspace.md +810 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/help-docs/CLAUDE.md +62 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/init.ts +266 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/issue-scanner.ts +298 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/logger.ts +79 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/notifications.ts +75 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/notify.ts +108 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/password.ts +97 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/pipeline-scheduler.ts +373 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/pipeline.ts +1438 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/plugins/executor.ts +347 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/plugins/registry.ts +228 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/plugins/types.ts +103 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/project-sessions.ts +53 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/projects.ts +86 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/session-manager.ts +156 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/session-utils.ts +53 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/session-watcher.ts +345 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/settings.ts +195 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/skills.ts +458 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/task-manager.ts +949 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/telegram-bot.ts +1477 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/telegram-standalone.ts +83 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/terminal-server.ts +70 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/terminal-standalone.ts +421 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/usage-scanner.ts +249 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/workspace/__tests__/state-machine.test.ts +388 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/workspace/__tests__/workspace.test.ts +311 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/workspace/agent-bus.ts +416 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/workspace/agent-worker.ts +655 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/workspace/backends/api-backend.ts +262 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/workspace/backends/cli-backend.ts +491 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/workspace/index.ts +82 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/workspace/manager.ts +136 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/workspace/orchestrator.ts +3400 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/workspace/persistence.ts +309 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/workspace/presets.ts +649 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/workspace/requests.ts +287 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/workspace/session-monitor.ts +240 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/workspace/skill-installer.ts +275 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/workspace/smith-memory.ts +498 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/workspace/types.ts +241 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/workspace/watch-manager.ts +560 -0
- package/.forge/worktrees/pipeline-2ba01c10/lib/workspace-standalone.ts +911 -0
- package/.forge/worktrees/pipeline-2ba01c10/middleware.ts +51 -0
- package/.forge/worktrees/pipeline-2ba01c10/next.config.ts +26 -0
- package/.forge/worktrees/pipeline-2ba01c10/package.json +74 -0
- package/.forge/worktrees/pipeline-2ba01c10/pnpm-lock.yaml +3719 -0
- package/.forge/worktrees/pipeline-2ba01c10/pnpm-workspace.yaml +1 -0
- package/.forge/worktrees/pipeline-2ba01c10/postcss.config.mjs +7 -0
- package/.forge/worktrees/pipeline-2ba01c10/publish.sh +133 -0
- package/.forge/worktrees/pipeline-2ba01c10/scripts/bench/README.md +66 -0
- package/.forge/worktrees/pipeline-2ba01c10/scripts/bench/results/.gitignore +2 -0
- package/.forge/worktrees/pipeline-2ba01c10/scripts/bench/run.ts +635 -0
- package/.forge/worktrees/pipeline-2ba01c10/scripts/bench/tasks/01-text-utils/task.md +26 -0
- package/.forge/worktrees/pipeline-2ba01c10/scripts/bench/tasks/01-text-utils/validator.sh +46 -0
- package/.forge/worktrees/pipeline-2ba01c10/scripts/bench/tasks/02-pagination/setup.sh +19 -0
- package/.forge/worktrees/pipeline-2ba01c10/scripts/bench/tasks/02-pagination/task.md +48 -0
- package/.forge/worktrees/pipeline-2ba01c10/scripts/bench/tasks/02-pagination/validator.sh +69 -0
- package/.forge/worktrees/pipeline-2ba01c10/scripts/bench/tasks/03-bug-fix/setup.sh +82 -0
- package/.forge/worktrees/pipeline-2ba01c10/scripts/bench/tasks/03-bug-fix/task.md +30 -0
- package/.forge/worktrees/pipeline-2ba01c10/scripts/bench/tasks/03-bug-fix/validator.sh +29 -0
- package/.forge/worktrees/pipeline-2ba01c10/scripts/verify-usage.ts +178 -0
- package/.forge/worktrees/pipeline-2ba01c10/src/config/index.ts +129 -0
- package/.forge/worktrees/pipeline-2ba01c10/src/core/db/database.ts +259 -0
- package/.forge/worktrees/pipeline-2ba01c10/src/core/memory/strategy.ts +32 -0
- package/.forge/worktrees/pipeline-2ba01c10/src/core/providers/chat.ts +65 -0
- package/.forge/worktrees/pipeline-2ba01c10/src/core/providers/registry.ts +60 -0
- package/.forge/worktrees/pipeline-2ba01c10/src/core/session/manager.ts +190 -0
- package/.forge/worktrees/pipeline-2ba01c10/src/types/index.ts +129 -0
- package/.forge/worktrees/pipeline-2ba01c10/start.sh +31 -0
- package/.forge/worktrees/pipeline-2ba01c10/templates/smith-lead.json +45 -0
- package/.forge/worktrees/pipeline-2ba01c10/tsconfig.json +42 -0
- package/.forge/worktrees/pipeline-3156a8b3/CLAUDE.md +86 -0
- package/.forge/worktrees/pipeline-3156a8b3/README.md +136 -0
- package/.forge/worktrees/pipeline-3156a8b3/RELEASE_NOTES.md +11 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/agents/route.ts +17 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/auth/[...nextauth]/route.ts +3 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/auth/verify/route.ts +46 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/claude/[id]/route.ts +31 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/claude/[id]/stream/route.ts +63 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/claude/route.ts +28 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/claude-sessions/[projectName]/entries/route.ts +23 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/claude-sessions/[projectName]/live/route.ts +72 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/claude-sessions/[projectName]/route.ts +37 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/claude-sessions/sync/route.ts +17 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/claude-templates/route.ts +145 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/code/route.ts +299 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/delivery/[id]/route.ts +62 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/delivery/route.ts +40 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/detect-cli/route.ts +46 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/docs/route.ts +176 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/docs/sessions/route.ts +54 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/favorites/route.ts +26 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/flows/route.ts +6 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/flows/run/route.ts +19 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/git/route.ts +149 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/help/route.ts +84 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/issue-scanner/route.ts +116 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/logs/route.ts +100 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/mobile-chat/route.ts +115 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/monitor/route.ts +74 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/notifications/route.ts +42 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/notify/test/route.ts +33 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/online/route.ts +40 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/pipelines/[id]/route.ts +41 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/pipelines/route.ts +90 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/plugins/route.ts +75 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/preview/[...path]/route.ts +64 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/preview/route.ts +156 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/project-pipelines/route.ts +91 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/project-sessions/route.ts +61 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/projects/route.ts +26 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/sessions/[id]/chat/route.ts +64 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/sessions/[id]/messages/route.ts +9 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/sessions/[id]/route.ts +17 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/sessions/route.ts +20 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/settings/route.ts +64 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/skills/local/route.ts +228 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/skills/route.ts +182 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/smith-templates/route.ts +81 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/status/route.ts +12 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/tabs/route.ts +25 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/tasks/[id]/route.ts +51 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/tasks/[id]/stream/route.ts +77 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/tasks/link/route.ts +37 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/tasks/route.ts +44 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/tasks/session/route.ts +14 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/telegram/route.ts +23 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/templates/route.ts +6 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/terminal-bell/route.ts +35 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/terminal-cwd/route.ts +19 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/terminal-state/route.ts +15 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/tunnel/route.ts +26 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/upgrade/route.ts +43 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/usage/route.ts +20 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/version/route.ts +78 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/watchers/route.ts +33 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/workspace/[id]/agents/route.ts +35 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/workspace/[id]/memory/route.ts +23 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/workspace/[id]/smith/route.ts +22 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/workspace/[id]/stream/route.ts +28 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/api/workspace/route.ts +100 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/global-error.tsx +21 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/globals.css +52 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/icon.ico +0 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/icon.png +0 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/icon.svg +106 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/layout.tsx +17 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/login/LoginForm.tsx +96 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/login/page.tsx +10 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/mobile/page.tsx +9 -0
- package/.forge/worktrees/pipeline-3156a8b3/app/page.tsx +21 -0
- package/.forge/worktrees/pipeline-3156a8b3/bin/forge-server.mjs +484 -0
- package/.forge/worktrees/pipeline-3156a8b3/check-forge-status.sh +71 -0
- package/.forge/worktrees/pipeline-3156a8b3/cli/mw.ts +579 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/BrowserPanel.tsx +175 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/ChatPanel.tsx +191 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/ClaudeTerminal.tsx +267 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/CodeViewer.tsx +787 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/ConversationEditor.tsx +411 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/ConversationGraphView.tsx +347 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/ConversationTerminalView.tsx +303 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/Dashboard.tsx +807 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/DashboardWrapper.tsx +9 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/DeliveryFlowEditor.tsx +491 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/DeliveryList.tsx +230 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/DeliveryWorkspace.tsx +589 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/DocTerminal.tsx +187 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/DocsViewer.tsx +574 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/HelpDialog.tsx +169 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/HelpTerminal.tsx +141 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/InlinePipelineView.tsx +111 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/LogViewer.tsx +194 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/MarkdownContent.tsx +73 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/MobileView.tsx +385 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/MonitorPanel.tsx +122 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/NewSessionModal.tsx +93 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/NewTaskModal.tsx +492 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/PipelineEditor.tsx +570 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/PipelineView.tsx +1018 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/PluginsPanel.tsx +472 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/ProjectDetail.tsx +1618 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/ProjectList.tsx +108 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/ProjectManager.tsx +401 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/SessionList.tsx +74 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/SessionView.tsx +726 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/SettingsModal.tsx +1647 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/SkillsPanel.tsx +969 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/StatusBar.tsx +99 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/TabBar.tsx +46 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/TaskBoard.tsx +113 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/TaskDetail.tsx +372 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/TerminalLauncher.tsx +398 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/TunnelToggle.tsx +206 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/UsagePanel.tsx +207 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/WebTerminal.tsx +1683 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/WorkspaceTree.tsx +221 -0
- package/.forge/worktrees/pipeline-3156a8b3/components/WorkspaceView.tsx +4048 -0
- package/.forge/worktrees/pipeline-3156a8b3/dev-test.sh +5 -0
- package/.forge/worktrees/pipeline-3156a8b3/docs/Forge_Memory_Layer_Design.docx +0 -0
- package/.forge/worktrees/pipeline-3156a8b3/docs/Forge_Strategy_Research_2026.docx +0 -0
- package/.forge/worktrees/pipeline-3156a8b3/docs/LOCAL-DEPLOY.md +144 -0
- package/.forge/worktrees/pipeline-3156a8b3/docs/roadmap-multi-agent-workflow.md +330 -0
- package/.forge/worktrees/pipeline-3156a8b3/forge-logo.png +0 -0
- package/.forge/worktrees/pipeline-3156a8b3/forge-logo.svg +106 -0
- package/.forge/worktrees/pipeline-3156a8b3/hooks/useSidebarResize.ts +52 -0
- package/.forge/worktrees/pipeline-3156a8b3/install.sh +29 -0
- package/.forge/worktrees/pipeline-3156a8b3/instrumentation.ts +35 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/agents/claude-adapter.ts +104 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/agents/generic-adapter.ts +64 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/agents/index.ts +245 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/agents/types.ts +70 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/artifacts.ts +106 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/auth.ts +62 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/builtin-plugins/docker.yaml +70 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/builtin-plugins/http.yaml +66 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/builtin-plugins/jenkins.yaml +92 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/builtin-plugins/llm-vision.yaml +85 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/builtin-plugins/playwright.yaml +111 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/builtin-plugins/shell-command.yaml +60 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/builtin-plugins/slack.yaml +48 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/builtin-plugins/webhook.yaml +56 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/claude-process.ts +351 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/claude-sessions.ts +266 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/claude-templates.ts +227 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/cloudflared.ts +424 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/crypto.ts +67 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/delivery.ts +787 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/dirs.ts +99 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/flows.ts +86 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/forge-mcp-server.ts +717 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/forge-skills/forge-inbox.md +38 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/forge-skills/forge-send.md +47 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/forge-skills/forge-status.md +32 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/forge-skills/forge-workspace-sync.md +37 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/help-docs/00-overview.md +40 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/help-docs/01-settings.md +194 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/help-docs/02-telegram.md +41 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/help-docs/03-tunnel.md +31 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/help-docs/04-tasks.md +52 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/help-docs/05-pipelines.md +460 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/help-docs/06-skills.md +43 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/help-docs/07-projects.md +73 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/help-docs/08-rules.md +53 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/help-docs/09-issue-autofix.md +55 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/help-docs/10-troubleshooting.md +89 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/help-docs/11-workspace.md +810 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/help-docs/CLAUDE.md +62 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/init.ts +266 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/issue-scanner.ts +298 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/logger.ts +79 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/notifications.ts +75 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/notify.ts +108 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/password.ts +97 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/pipeline-scheduler.ts +373 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/pipeline.ts +1441 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/plugins/executor.ts +347 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/plugins/registry.ts +228 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/plugins/types.ts +103 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/project-sessions.ts +53 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/projects.ts +86 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/session-manager.ts +156 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/session-utils.ts +53 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/session-watcher.ts +345 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/settings.ts +195 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/skills.ts +458 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/task-manager.ts +949 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/telegram-bot.ts +1477 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/telegram-standalone.ts +83 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/terminal-server.ts +70 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/terminal-standalone.ts +421 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/usage-scanner.ts +249 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/workspace/__tests__/state-machine.test.ts +388 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/workspace/__tests__/workspace.test.ts +311 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/workspace/agent-bus.ts +416 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/workspace/agent-worker.ts +655 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/workspace/backends/api-backend.ts +262 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/workspace/backends/cli-backend.ts +491 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/workspace/index.ts +82 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/workspace/manager.ts +136 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/workspace/orchestrator.ts +3400 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/workspace/persistence.ts +309 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/workspace/presets.ts +649 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/workspace/requests.ts +287 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/workspace/session-monitor.ts +240 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/workspace/skill-installer.ts +275 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/workspace/smith-memory.ts +498 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/workspace/types.ts +241 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/workspace/watch-manager.ts +560 -0
- package/.forge/worktrees/pipeline-3156a8b3/lib/workspace-standalone.ts +911 -0
- package/.forge/worktrees/pipeline-3156a8b3/middleware.ts +51 -0
- package/.forge/worktrees/pipeline-3156a8b3/next.config.ts +26 -0
- package/.forge/worktrees/pipeline-3156a8b3/package.json +74 -0
- package/.forge/worktrees/pipeline-3156a8b3/pnpm-lock.yaml +3719 -0
- package/.forge/worktrees/pipeline-3156a8b3/pnpm-workspace.yaml +1 -0
- package/.forge/worktrees/pipeline-3156a8b3/postcss.config.mjs +7 -0
- package/.forge/worktrees/pipeline-3156a8b3/publish.sh +133 -0
- package/.forge/worktrees/pipeline-3156a8b3/scripts/bench/README.md +66 -0
- package/.forge/worktrees/pipeline-3156a8b3/scripts/bench/results/.gitignore +2 -0
- package/.forge/worktrees/pipeline-3156a8b3/scripts/bench/run.ts +635 -0
- package/.forge/worktrees/pipeline-3156a8b3/scripts/bench/tasks/01-text-utils/task.md +26 -0
- package/.forge/worktrees/pipeline-3156a8b3/scripts/bench/tasks/01-text-utils/validator.sh +46 -0
- package/.forge/worktrees/pipeline-3156a8b3/scripts/bench/tasks/02-pagination/setup.sh +19 -0
- package/.forge/worktrees/pipeline-3156a8b3/scripts/bench/tasks/02-pagination/task.md +48 -0
- package/.forge/worktrees/pipeline-3156a8b3/scripts/bench/tasks/02-pagination/validator.sh +69 -0
- package/.forge/worktrees/pipeline-3156a8b3/scripts/bench/tasks/03-bug-fix/setup.sh +82 -0
- package/.forge/worktrees/pipeline-3156a8b3/scripts/bench/tasks/03-bug-fix/task.md +30 -0
- package/.forge/worktrees/pipeline-3156a8b3/scripts/bench/tasks/03-bug-fix/validator.sh +29 -0
- package/.forge/worktrees/pipeline-3156a8b3/scripts/verify-usage.ts +178 -0
- package/.forge/worktrees/pipeline-3156a8b3/src/config/index.ts +129 -0
- package/.forge/worktrees/pipeline-3156a8b3/src/core/db/database.ts +259 -0
- package/.forge/worktrees/pipeline-3156a8b3/src/core/memory/strategy.ts +32 -0
- package/.forge/worktrees/pipeline-3156a8b3/src/core/providers/chat.ts +65 -0
- package/.forge/worktrees/pipeline-3156a8b3/src/core/providers/registry.ts +60 -0
- package/.forge/worktrees/pipeline-3156a8b3/src/core/session/manager.ts +190 -0
- package/.forge/worktrees/pipeline-3156a8b3/src/types/index.ts +129 -0
- package/.forge/worktrees/pipeline-3156a8b3/start.sh +31 -0
- package/.forge/worktrees/pipeline-3156a8b3/templates/smith-lead.json +45 -0
- package/.forge/worktrees/pipeline-3156a8b3/tsconfig.json +42 -0
- package/.forge/worktrees/pipeline-316c6574/CLAUDE.md +86 -0
- package/.forge/worktrees/pipeline-316c6574/README.md +136 -0
- package/.forge/worktrees/pipeline-316c6574/RELEASE_NOTES.md +11 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/agents/route.ts +17 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/auth/[...nextauth]/route.ts +3 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/auth/verify/route.ts +46 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/claude/[id]/route.ts +31 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/claude/[id]/stream/route.ts +63 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/claude/route.ts +28 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/claude-sessions/[projectName]/entries/route.ts +23 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/claude-sessions/[projectName]/live/route.ts +72 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/claude-sessions/[projectName]/route.ts +37 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/claude-sessions/sync/route.ts +17 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/claude-templates/route.ts +145 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/code/route.ts +299 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/delivery/[id]/route.ts +62 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/delivery/route.ts +40 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/detect-cli/route.ts +46 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/docs/route.ts +176 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/docs/sessions/route.ts +54 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/favorites/route.ts +26 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/flows/route.ts +6 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/flows/run/route.ts +19 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/git/route.ts +149 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/help/route.ts +84 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/issue-scanner/route.ts +116 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/logs/route.ts +100 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/mobile-chat/route.ts +115 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/monitor/route.ts +74 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/notifications/route.ts +42 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/notify/test/route.ts +33 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/online/route.ts +40 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/pipelines/[id]/route.ts +41 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/pipelines/route.ts +90 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/plugins/route.ts +75 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/preview/[...path]/route.ts +64 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/preview/route.ts +156 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/project-pipelines/route.ts +91 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/project-sessions/route.ts +61 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/projects/route.ts +26 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/sessions/[id]/chat/route.ts +64 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/sessions/[id]/messages/route.ts +9 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/sessions/[id]/route.ts +17 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/sessions/route.ts +20 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/settings/route.ts +64 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/skills/local/route.ts +228 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/skills/route.ts +182 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/smith-templates/route.ts +81 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/status/route.ts +12 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/tabs/route.ts +25 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/tasks/[id]/route.ts +51 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/tasks/[id]/stream/route.ts +77 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/tasks/link/route.ts +37 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/tasks/route.ts +44 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/tasks/session/route.ts +14 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/telegram/route.ts +23 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/templates/route.ts +6 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/terminal-bell/route.ts +35 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/terminal-cwd/route.ts +19 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/terminal-state/route.ts +15 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/tunnel/route.ts +26 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/upgrade/route.ts +43 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/usage/route.ts +20 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/version/route.ts +78 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/watchers/route.ts +33 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/workspace/[id]/agents/route.ts +35 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/workspace/[id]/memory/route.ts +23 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/workspace/[id]/smith/route.ts +22 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/workspace/[id]/stream/route.ts +28 -0
- package/.forge/worktrees/pipeline-316c6574/app/api/workspace/route.ts +100 -0
- package/.forge/worktrees/pipeline-316c6574/app/global-error.tsx +21 -0
- package/.forge/worktrees/pipeline-316c6574/app/globals.css +52 -0
- package/.forge/worktrees/pipeline-316c6574/app/icon.ico +0 -0
- package/.forge/worktrees/pipeline-316c6574/app/icon.png +0 -0
- package/.forge/worktrees/pipeline-316c6574/app/icon.svg +106 -0
- package/.forge/worktrees/pipeline-316c6574/app/layout.tsx +17 -0
- package/.forge/worktrees/pipeline-316c6574/app/login/LoginForm.tsx +96 -0
- package/.forge/worktrees/pipeline-316c6574/app/login/page.tsx +10 -0
- package/.forge/worktrees/pipeline-316c6574/app/mobile/page.tsx +9 -0
- package/.forge/worktrees/pipeline-316c6574/app/page.tsx +21 -0
- package/.forge/worktrees/pipeline-316c6574/bin/forge-server.mjs +484 -0
- package/.forge/worktrees/pipeline-316c6574/check-forge-status.sh +71 -0
- package/.forge/worktrees/pipeline-316c6574/cli/mw.ts +579 -0
- package/.forge/worktrees/pipeline-316c6574/components/BrowserPanel.tsx +175 -0
- package/.forge/worktrees/pipeline-316c6574/components/ChatPanel.tsx +191 -0
- package/.forge/worktrees/pipeline-316c6574/components/ClaudeTerminal.tsx +267 -0
- package/.forge/worktrees/pipeline-316c6574/components/CodeViewer.tsx +787 -0
- package/.forge/worktrees/pipeline-316c6574/components/ConversationEditor.tsx +411 -0
- package/.forge/worktrees/pipeline-316c6574/components/ConversationGraphView.tsx +347 -0
- package/.forge/worktrees/pipeline-316c6574/components/ConversationTerminalView.tsx +303 -0
- package/.forge/worktrees/pipeline-316c6574/components/Dashboard.tsx +807 -0
- package/.forge/worktrees/pipeline-316c6574/components/DashboardWrapper.tsx +9 -0
- package/.forge/worktrees/pipeline-316c6574/components/DeliveryFlowEditor.tsx +491 -0
- package/.forge/worktrees/pipeline-316c6574/components/DeliveryList.tsx +230 -0
- package/.forge/worktrees/pipeline-316c6574/components/DeliveryWorkspace.tsx +589 -0
- package/.forge/worktrees/pipeline-316c6574/components/DocTerminal.tsx +187 -0
- package/.forge/worktrees/pipeline-316c6574/components/DocsViewer.tsx +574 -0
- package/.forge/worktrees/pipeline-316c6574/components/HelpDialog.tsx +169 -0
- package/.forge/worktrees/pipeline-316c6574/components/HelpTerminal.tsx +141 -0
- package/.forge/worktrees/pipeline-316c6574/components/InlinePipelineView.tsx +111 -0
- package/.forge/worktrees/pipeline-316c6574/components/LogViewer.tsx +194 -0
- package/.forge/worktrees/pipeline-316c6574/components/MarkdownContent.tsx +73 -0
- package/.forge/worktrees/pipeline-316c6574/components/MobileView.tsx +385 -0
- package/.forge/worktrees/pipeline-316c6574/components/MonitorPanel.tsx +122 -0
- package/.forge/worktrees/pipeline-316c6574/components/NewSessionModal.tsx +93 -0
- package/.forge/worktrees/pipeline-316c6574/components/NewTaskModal.tsx +492 -0
- package/.forge/worktrees/pipeline-316c6574/components/PipelineEditor.tsx +570 -0
- package/.forge/worktrees/pipeline-316c6574/components/PipelineView.tsx +1018 -0
- package/.forge/worktrees/pipeline-316c6574/components/PluginsPanel.tsx +472 -0
- package/.forge/worktrees/pipeline-316c6574/components/ProjectDetail.tsx +1618 -0
- package/.forge/worktrees/pipeline-316c6574/components/ProjectList.tsx +108 -0
- package/.forge/worktrees/pipeline-316c6574/components/ProjectManager.tsx +401 -0
- package/.forge/worktrees/pipeline-316c6574/components/SessionList.tsx +74 -0
- package/.forge/worktrees/pipeline-316c6574/components/SessionView.tsx +726 -0
- package/.forge/worktrees/pipeline-316c6574/components/SettingsModal.tsx +1647 -0
- package/.forge/worktrees/pipeline-316c6574/components/SkillsPanel.tsx +969 -0
- package/.forge/worktrees/pipeline-316c6574/components/StatusBar.tsx +99 -0
- package/.forge/worktrees/pipeline-316c6574/components/TabBar.tsx +46 -0
- package/.forge/worktrees/pipeline-316c6574/components/TaskBoard.tsx +113 -0
- package/.forge/worktrees/pipeline-316c6574/components/TaskDetail.tsx +372 -0
- package/.forge/worktrees/pipeline-316c6574/components/TerminalLauncher.tsx +398 -0
- package/.forge/worktrees/pipeline-316c6574/components/TunnelToggle.tsx +206 -0
- package/.forge/worktrees/pipeline-316c6574/components/UsagePanel.tsx +207 -0
- package/.forge/worktrees/pipeline-316c6574/components/WebTerminal.tsx +1683 -0
- package/.forge/worktrees/pipeline-316c6574/components/WorkspaceTree.tsx +221 -0
- package/.forge/worktrees/pipeline-316c6574/components/WorkspaceView.tsx +4048 -0
- package/.forge/worktrees/pipeline-316c6574/dev-test.sh +5 -0
- package/.forge/worktrees/pipeline-316c6574/docs/Forge_Memory_Layer_Design.docx +0 -0
- package/.forge/worktrees/pipeline-316c6574/docs/Forge_Strategy_Research_2026.docx +0 -0
- package/.forge/worktrees/pipeline-316c6574/docs/LOCAL-DEPLOY.md +144 -0
- package/.forge/worktrees/pipeline-316c6574/docs/roadmap-multi-agent-workflow.md +330 -0
- package/.forge/worktrees/pipeline-316c6574/forge-logo.png +0 -0
- package/.forge/worktrees/pipeline-316c6574/forge-logo.svg +106 -0
- package/.forge/worktrees/pipeline-316c6574/hooks/useSidebarResize.ts +52 -0
- package/.forge/worktrees/pipeline-316c6574/install.sh +29 -0
- package/.forge/worktrees/pipeline-316c6574/instrumentation.ts +35 -0
- package/.forge/worktrees/pipeline-316c6574/lib/agents/claude-adapter.ts +104 -0
- package/.forge/worktrees/pipeline-316c6574/lib/agents/generic-adapter.ts +64 -0
- package/.forge/worktrees/pipeline-316c6574/lib/agents/index.ts +245 -0
- package/.forge/worktrees/pipeline-316c6574/lib/agents/types.ts +70 -0
- package/.forge/worktrees/pipeline-316c6574/lib/artifacts.ts +106 -0
- package/.forge/worktrees/pipeline-316c6574/lib/auth.ts +62 -0
- package/.forge/worktrees/pipeline-316c6574/lib/builtin-plugins/docker.yaml +70 -0
- package/.forge/worktrees/pipeline-316c6574/lib/builtin-plugins/http.yaml +66 -0
- package/.forge/worktrees/pipeline-316c6574/lib/builtin-plugins/jenkins.yaml +92 -0
- package/.forge/worktrees/pipeline-316c6574/lib/builtin-plugins/llm-vision.yaml +85 -0
- package/.forge/worktrees/pipeline-316c6574/lib/builtin-plugins/playwright.yaml +111 -0
- package/.forge/worktrees/pipeline-316c6574/lib/builtin-plugins/shell-command.yaml +60 -0
- package/.forge/worktrees/pipeline-316c6574/lib/builtin-plugins/slack.yaml +48 -0
- package/.forge/worktrees/pipeline-316c6574/lib/builtin-plugins/webhook.yaml +56 -0
- package/.forge/worktrees/pipeline-316c6574/lib/claude-process.ts +361 -0
- package/.forge/worktrees/pipeline-316c6574/lib/claude-sessions.ts +266 -0
- package/.forge/worktrees/pipeline-316c6574/lib/claude-templates.ts +227 -0
- package/.forge/worktrees/pipeline-316c6574/lib/cloudflared.ts +424 -0
- package/.forge/worktrees/pipeline-316c6574/lib/crypto.ts +67 -0
- package/.forge/worktrees/pipeline-316c6574/lib/delivery.ts +787 -0
- package/.forge/worktrees/pipeline-316c6574/lib/dirs.ts +99 -0
- package/.forge/worktrees/pipeline-316c6574/lib/flows.ts +86 -0
- package/.forge/worktrees/pipeline-316c6574/lib/forge-mcp-server.ts +717 -0
- package/.forge/worktrees/pipeline-316c6574/lib/forge-skills/forge-inbox.md +38 -0
- package/.forge/worktrees/pipeline-316c6574/lib/forge-skills/forge-send.md +47 -0
- package/.forge/worktrees/pipeline-316c6574/lib/forge-skills/forge-status.md +32 -0
- package/.forge/worktrees/pipeline-316c6574/lib/forge-skills/forge-workspace-sync.md +37 -0
- package/.forge/worktrees/pipeline-316c6574/lib/help-docs/00-overview.md +40 -0
- package/.forge/worktrees/pipeline-316c6574/lib/help-docs/01-settings.md +194 -0
- package/.forge/worktrees/pipeline-316c6574/lib/help-docs/02-telegram.md +41 -0
- package/.forge/worktrees/pipeline-316c6574/lib/help-docs/03-tunnel.md +31 -0
- package/.forge/worktrees/pipeline-316c6574/lib/help-docs/04-tasks.md +52 -0
- package/.forge/worktrees/pipeline-316c6574/lib/help-docs/05-pipelines.md +460 -0
- package/.forge/worktrees/pipeline-316c6574/lib/help-docs/06-skills.md +43 -0
- package/.forge/worktrees/pipeline-316c6574/lib/help-docs/07-projects.md +73 -0
- package/.forge/worktrees/pipeline-316c6574/lib/help-docs/08-rules.md +53 -0
- package/.forge/worktrees/pipeline-316c6574/lib/help-docs/09-issue-autofix.md +55 -0
- package/.forge/worktrees/pipeline-316c6574/lib/help-docs/10-troubleshooting.md +89 -0
- package/.forge/worktrees/pipeline-316c6574/lib/help-docs/11-workspace.md +810 -0
- package/.forge/worktrees/pipeline-316c6574/lib/help-docs/CLAUDE.md +62 -0
- package/.forge/worktrees/pipeline-316c6574/lib/init.ts +266 -0
- package/.forge/worktrees/pipeline-316c6574/lib/issue-scanner.ts +298 -0
- package/.forge/worktrees/pipeline-316c6574/lib/logger.ts +79 -0
- package/.forge/worktrees/pipeline-316c6574/lib/notifications.ts +75 -0
- package/.forge/worktrees/pipeline-316c6574/lib/notify.ts +108 -0
- package/.forge/worktrees/pipeline-316c6574/lib/password.ts +97 -0
- package/.forge/worktrees/pipeline-316c6574/lib/pipeline-scheduler.ts +373 -0
- package/.forge/worktrees/pipeline-316c6574/lib/pipeline.ts +1441 -0
- package/.forge/worktrees/pipeline-316c6574/lib/plugins/executor.ts +347 -0
- package/.forge/worktrees/pipeline-316c6574/lib/plugins/registry.ts +228 -0
- package/.forge/worktrees/pipeline-316c6574/lib/plugins/types.ts +103 -0
- package/.forge/worktrees/pipeline-316c6574/lib/project-sessions.ts +53 -0
- package/.forge/worktrees/pipeline-316c6574/lib/projects.ts +86 -0
- package/.forge/worktrees/pipeline-316c6574/lib/session-manager.ts +156 -0
- package/.forge/worktrees/pipeline-316c6574/lib/session-utils.ts +53 -0
- package/.forge/worktrees/pipeline-316c6574/lib/session-watcher.ts +345 -0
- package/.forge/worktrees/pipeline-316c6574/lib/settings.ts +195 -0
- package/.forge/worktrees/pipeline-316c6574/lib/skills.ts +458 -0
- package/.forge/worktrees/pipeline-316c6574/lib/task-manager.ts +949 -0
- package/.forge/worktrees/pipeline-316c6574/lib/telegram-bot.ts +1477 -0
- package/.forge/worktrees/pipeline-316c6574/lib/telegram-standalone.ts +83 -0
- package/.forge/worktrees/pipeline-316c6574/lib/terminal-server.ts +70 -0
- package/.forge/worktrees/pipeline-316c6574/lib/terminal-standalone.ts +421 -0
- package/.forge/worktrees/pipeline-316c6574/lib/usage-scanner.ts +249 -0
- package/.forge/worktrees/pipeline-316c6574/lib/workspace/__tests__/state-machine.test.ts +388 -0
- package/.forge/worktrees/pipeline-316c6574/lib/workspace/__tests__/workspace.test.ts +311 -0
- package/.forge/worktrees/pipeline-316c6574/lib/workspace/agent-bus.ts +416 -0
- package/.forge/worktrees/pipeline-316c6574/lib/workspace/agent-worker.ts +655 -0
- package/.forge/worktrees/pipeline-316c6574/lib/workspace/backends/api-backend.ts +262 -0
- package/.forge/worktrees/pipeline-316c6574/lib/workspace/backends/cli-backend.ts +491 -0
- package/.forge/worktrees/pipeline-316c6574/lib/workspace/index.ts +82 -0
- package/.forge/worktrees/pipeline-316c6574/lib/workspace/manager.ts +136 -0
- package/.forge/worktrees/pipeline-316c6574/lib/workspace/orchestrator.ts +3400 -0
- package/.forge/worktrees/pipeline-316c6574/lib/workspace/persistence.ts +309 -0
- package/.forge/worktrees/pipeline-316c6574/lib/workspace/presets.ts +649 -0
- package/.forge/worktrees/pipeline-316c6574/lib/workspace/requests.ts +287 -0
- package/.forge/worktrees/pipeline-316c6574/lib/workspace/session-monitor.ts +240 -0
- package/.forge/worktrees/pipeline-316c6574/lib/workspace/skill-installer.ts +275 -0
- package/.forge/worktrees/pipeline-316c6574/lib/workspace/smith-memory.ts +498 -0
- package/.forge/worktrees/pipeline-316c6574/lib/workspace/types.ts +241 -0
- package/.forge/worktrees/pipeline-316c6574/lib/workspace/watch-manager.ts +560 -0
- package/.forge/worktrees/pipeline-316c6574/lib/workspace-standalone.ts +911 -0
- package/.forge/worktrees/pipeline-316c6574/middleware.ts +51 -0
- package/.forge/worktrees/pipeline-316c6574/next.config.ts +26 -0
- package/.forge/worktrees/pipeline-316c6574/package.json +74 -0
- package/.forge/worktrees/pipeline-316c6574/pnpm-lock.yaml +3719 -0
- package/.forge/worktrees/pipeline-316c6574/pnpm-workspace.yaml +1 -0
- package/.forge/worktrees/pipeline-316c6574/postcss.config.mjs +7 -0
- package/.forge/worktrees/pipeline-316c6574/publish.sh +133 -0
- package/.forge/worktrees/pipeline-316c6574/scripts/bench/README.md +66 -0
- package/.forge/worktrees/pipeline-316c6574/scripts/bench/results/.gitignore +2 -0
- package/.forge/worktrees/pipeline-316c6574/scripts/bench/run.ts +635 -0
- package/.forge/worktrees/pipeline-316c6574/scripts/bench/tasks/01-text-utils/task.md +26 -0
- package/.forge/worktrees/pipeline-316c6574/scripts/bench/tasks/01-text-utils/validator.sh +46 -0
- package/.forge/worktrees/pipeline-316c6574/scripts/bench/tasks/02-pagination/setup.sh +19 -0
- package/.forge/worktrees/pipeline-316c6574/scripts/bench/tasks/02-pagination/task.md +48 -0
- package/.forge/worktrees/pipeline-316c6574/scripts/bench/tasks/02-pagination/validator.sh +69 -0
- package/.forge/worktrees/pipeline-316c6574/scripts/bench/tasks/03-bug-fix/setup.sh +82 -0
- package/.forge/worktrees/pipeline-316c6574/scripts/bench/tasks/03-bug-fix/task.md +30 -0
- package/.forge/worktrees/pipeline-316c6574/scripts/bench/tasks/03-bug-fix/validator.sh +29 -0
- package/.forge/worktrees/pipeline-316c6574/scripts/verify-usage.ts +178 -0
- package/.forge/worktrees/pipeline-316c6574/src/config/index.ts +129 -0
- package/.forge/worktrees/pipeline-316c6574/src/core/db/database.ts +259 -0
- package/.forge/worktrees/pipeline-316c6574/src/core/memory/strategy.ts +32 -0
- package/.forge/worktrees/pipeline-316c6574/src/core/providers/chat.ts +65 -0
- package/.forge/worktrees/pipeline-316c6574/src/core/providers/registry.ts +60 -0
- package/.forge/worktrees/pipeline-316c6574/src/core/session/manager.ts +190 -0
- package/.forge/worktrees/pipeline-316c6574/src/types/index.ts +129 -0
- package/.forge/worktrees/pipeline-316c6574/start.sh +31 -0
- package/.forge/worktrees/pipeline-316c6574/templates/smith-lead.json +45 -0
- package/.forge/worktrees/pipeline-316c6574/tsconfig.json +42 -0
- package/.forge/worktrees/pipeline-44a94121/CLAUDE.md +86 -0
- package/.forge/worktrees/pipeline-44a94121/README.md +136 -0
- package/.forge/worktrees/pipeline-44a94121/RELEASE_NOTES.md +11 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/agents/route.ts +17 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/auth/[...nextauth]/route.ts +3 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/auth/verify/route.ts +46 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/claude/[id]/route.ts +31 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/claude/[id]/stream/route.ts +63 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/claude/route.ts +28 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/claude-sessions/[projectName]/entries/route.ts +23 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/claude-sessions/[projectName]/live/route.ts +72 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/claude-sessions/[projectName]/route.ts +37 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/claude-sessions/sync/route.ts +17 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/claude-templates/route.ts +145 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/code/route.ts +299 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/delivery/[id]/route.ts +62 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/delivery/route.ts +40 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/detect-cli/route.ts +46 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/docs/route.ts +176 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/docs/sessions/route.ts +54 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/favorites/route.ts +26 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/flows/route.ts +6 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/flows/run/route.ts +19 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/git/route.ts +149 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/help/route.ts +84 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/issue-scanner/route.ts +116 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/logs/route.ts +100 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/mobile-chat/route.ts +115 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/monitor/route.ts +74 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/notifications/route.ts +42 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/notify/test/route.ts +33 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/online/route.ts +40 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/pipelines/[id]/route.ts +41 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/pipelines/route.ts +90 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/plugins/route.ts +75 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/preview/[...path]/route.ts +64 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/preview/route.ts +156 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/project-pipelines/route.ts +91 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/project-sessions/route.ts +61 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/projects/route.ts +26 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/sessions/[id]/chat/route.ts +64 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/sessions/[id]/messages/route.ts +9 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/sessions/[id]/route.ts +17 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/sessions/route.ts +20 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/settings/route.ts +64 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/skills/local/route.ts +228 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/skills/route.ts +182 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/smith-templates/route.ts +81 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/status/route.ts +12 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/tabs/route.ts +25 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/tasks/[id]/route.ts +51 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/tasks/[id]/stream/route.ts +77 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/tasks/link/route.ts +37 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/tasks/route.ts +44 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/tasks/session/route.ts +14 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/telegram/route.ts +23 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/templates/route.ts +6 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/terminal-bell/route.ts +35 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/terminal-cwd/route.ts +19 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/terminal-state/route.ts +15 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/tunnel/route.ts +26 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/upgrade/route.ts +43 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/usage/route.ts +20 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/version/route.ts +78 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/watchers/route.ts +33 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/workspace/[id]/agents/route.ts +35 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/workspace/[id]/memory/route.ts +23 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/workspace/[id]/smith/route.ts +22 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/workspace/[id]/stream/route.ts +28 -0
- package/.forge/worktrees/pipeline-44a94121/app/api/workspace/route.ts +100 -0
- package/.forge/worktrees/pipeline-44a94121/app/global-error.tsx +21 -0
- package/.forge/worktrees/pipeline-44a94121/app/globals.css +52 -0
- package/.forge/worktrees/pipeline-44a94121/app/icon.ico +0 -0
- package/.forge/worktrees/pipeline-44a94121/app/icon.png +0 -0
- package/.forge/worktrees/pipeline-44a94121/app/icon.svg +106 -0
- package/.forge/worktrees/pipeline-44a94121/app/layout.tsx +17 -0
- package/.forge/worktrees/pipeline-44a94121/app/login/LoginForm.tsx +96 -0
- package/.forge/worktrees/pipeline-44a94121/app/login/page.tsx +10 -0
- package/.forge/worktrees/pipeline-44a94121/app/mobile/page.tsx +9 -0
- package/.forge/worktrees/pipeline-44a94121/app/page.tsx +21 -0
- package/.forge/worktrees/pipeline-44a94121/bin/forge-server.mjs +484 -0
- package/.forge/worktrees/pipeline-44a94121/check-forge-status.sh +71 -0
- package/.forge/worktrees/pipeline-44a94121/cli/mw.ts +579 -0
- package/.forge/worktrees/pipeline-44a94121/components/BrowserPanel.tsx +175 -0
- package/.forge/worktrees/pipeline-44a94121/components/ChatPanel.tsx +191 -0
- package/.forge/worktrees/pipeline-44a94121/components/ClaudeTerminal.tsx +267 -0
- package/.forge/worktrees/pipeline-44a94121/components/CodeViewer.tsx +787 -0
- package/.forge/worktrees/pipeline-44a94121/components/ConversationEditor.tsx +411 -0
- package/.forge/worktrees/pipeline-44a94121/components/ConversationGraphView.tsx +347 -0
- package/.forge/worktrees/pipeline-44a94121/components/ConversationTerminalView.tsx +303 -0
- package/.forge/worktrees/pipeline-44a94121/components/Dashboard.tsx +807 -0
- package/.forge/worktrees/pipeline-44a94121/components/DashboardWrapper.tsx +9 -0
- package/.forge/worktrees/pipeline-44a94121/components/DeliveryFlowEditor.tsx +491 -0
- package/.forge/worktrees/pipeline-44a94121/components/DeliveryList.tsx +230 -0
- package/.forge/worktrees/pipeline-44a94121/components/DeliveryWorkspace.tsx +589 -0
- package/.forge/worktrees/pipeline-44a94121/components/DocTerminal.tsx +187 -0
- package/.forge/worktrees/pipeline-44a94121/components/DocsViewer.tsx +574 -0
- package/.forge/worktrees/pipeline-44a94121/components/HelpDialog.tsx +169 -0
- package/.forge/worktrees/pipeline-44a94121/components/HelpTerminal.tsx +141 -0
- package/.forge/worktrees/pipeline-44a94121/components/InlinePipelineView.tsx +111 -0
- package/.forge/worktrees/pipeline-44a94121/components/LogViewer.tsx +194 -0
- package/.forge/worktrees/pipeline-44a94121/components/MarkdownContent.tsx +73 -0
- package/.forge/worktrees/pipeline-44a94121/components/MobileView.tsx +385 -0
- package/.forge/worktrees/pipeline-44a94121/components/MonitorPanel.tsx +122 -0
- package/.forge/worktrees/pipeline-44a94121/components/NewSessionModal.tsx +93 -0
- package/.forge/worktrees/pipeline-44a94121/components/NewTaskModal.tsx +492 -0
- package/.forge/worktrees/pipeline-44a94121/components/PipelineEditor.tsx +570 -0
- package/.forge/worktrees/pipeline-44a94121/components/PipelineView.tsx +1018 -0
- package/.forge/worktrees/pipeline-44a94121/components/PluginsPanel.tsx +472 -0
- package/.forge/worktrees/pipeline-44a94121/components/ProjectDetail.tsx +1618 -0
- package/.forge/worktrees/pipeline-44a94121/components/ProjectList.tsx +108 -0
- package/.forge/worktrees/pipeline-44a94121/components/ProjectManager.tsx +401 -0
- package/.forge/worktrees/pipeline-44a94121/components/SessionList.tsx +74 -0
- package/.forge/worktrees/pipeline-44a94121/components/SessionView.tsx +726 -0
- package/.forge/worktrees/pipeline-44a94121/components/SettingsModal.tsx +1647 -0
- package/.forge/worktrees/pipeline-44a94121/components/SkillsPanel.tsx +969 -0
- package/.forge/worktrees/pipeline-44a94121/components/StatusBar.tsx +99 -0
- package/.forge/worktrees/pipeline-44a94121/components/TabBar.tsx +46 -0
- package/.forge/worktrees/pipeline-44a94121/components/TaskBoard.tsx +113 -0
- package/.forge/worktrees/pipeline-44a94121/components/TaskDetail.tsx +372 -0
- package/.forge/worktrees/pipeline-44a94121/components/TerminalLauncher.tsx +398 -0
- package/.forge/worktrees/pipeline-44a94121/components/TunnelToggle.tsx +206 -0
- package/.forge/worktrees/pipeline-44a94121/components/UsagePanel.tsx +207 -0
- package/.forge/worktrees/pipeline-44a94121/components/WebTerminal.tsx +1683 -0
- package/.forge/worktrees/pipeline-44a94121/components/WorkspaceTree.tsx +221 -0
- package/.forge/worktrees/pipeline-44a94121/components/WorkspaceView.tsx +4048 -0
- package/.forge/worktrees/pipeline-44a94121/dev-test.sh +5 -0
- package/.forge/worktrees/pipeline-44a94121/docs/Forge_Memory_Layer_Design.docx +0 -0
- package/.forge/worktrees/pipeline-44a94121/docs/Forge_Strategy_Research_2026.docx +0 -0
- package/.forge/worktrees/pipeline-44a94121/docs/LOCAL-DEPLOY.md +144 -0
- package/.forge/worktrees/pipeline-44a94121/docs/roadmap-multi-agent-workflow.md +330 -0
- package/.forge/worktrees/pipeline-44a94121/forge-logo.png +0 -0
- package/.forge/worktrees/pipeline-44a94121/forge-logo.svg +106 -0
- package/.forge/worktrees/pipeline-44a94121/hooks/useSidebarResize.ts +52 -0
- package/.forge/worktrees/pipeline-44a94121/install.sh +29 -0
- package/.forge/worktrees/pipeline-44a94121/instrumentation.ts +35 -0
- package/.forge/worktrees/pipeline-44a94121/lib/agents/claude-adapter.ts +104 -0
- package/.forge/worktrees/pipeline-44a94121/lib/agents/generic-adapter.ts +64 -0
- package/.forge/worktrees/pipeline-44a94121/lib/agents/index.ts +245 -0
- package/.forge/worktrees/pipeline-44a94121/lib/agents/types.ts +70 -0
- package/.forge/worktrees/pipeline-44a94121/lib/artifacts.ts +106 -0
- package/.forge/worktrees/pipeline-44a94121/lib/auth.ts +62 -0
- package/.forge/worktrees/pipeline-44a94121/lib/builtin-plugins/docker.yaml +70 -0
- package/.forge/worktrees/pipeline-44a94121/lib/builtin-plugins/http.yaml +66 -0
- package/.forge/worktrees/pipeline-44a94121/lib/builtin-plugins/jenkins.yaml +92 -0
- package/.forge/worktrees/pipeline-44a94121/lib/builtin-plugins/llm-vision.yaml +85 -0
- package/.forge/worktrees/pipeline-44a94121/lib/builtin-plugins/playwright.yaml +111 -0
- package/.forge/worktrees/pipeline-44a94121/lib/builtin-plugins/shell-command.yaml +60 -0
- package/.forge/worktrees/pipeline-44a94121/lib/builtin-plugins/slack.yaml +48 -0
- package/.forge/worktrees/pipeline-44a94121/lib/builtin-plugins/webhook.yaml +56 -0
- package/.forge/worktrees/pipeline-44a94121/lib/claude-process.ts +351 -0
- package/.forge/worktrees/pipeline-44a94121/lib/claude-sessions.ts +266 -0
- package/.forge/worktrees/pipeline-44a94121/lib/claude-templates.ts +227 -0
- package/.forge/worktrees/pipeline-44a94121/lib/cloudflared.ts +424 -0
- package/.forge/worktrees/pipeline-44a94121/lib/crypto.ts +67 -0
- package/.forge/worktrees/pipeline-44a94121/lib/delivery.ts +787 -0
- package/.forge/worktrees/pipeline-44a94121/lib/dirs.ts +99 -0
- package/.forge/worktrees/pipeline-44a94121/lib/flows.ts +86 -0
- package/.forge/worktrees/pipeline-44a94121/lib/forge-mcp-server.ts +717 -0
- package/.forge/worktrees/pipeline-44a94121/lib/forge-skills/forge-inbox.md +38 -0
- package/.forge/worktrees/pipeline-44a94121/lib/forge-skills/forge-send.md +47 -0
- package/.forge/worktrees/pipeline-44a94121/lib/forge-skills/forge-status.md +32 -0
- package/.forge/worktrees/pipeline-44a94121/lib/forge-skills/forge-workspace-sync.md +37 -0
- package/.forge/worktrees/pipeline-44a94121/lib/help-docs/00-overview.md +40 -0
- package/.forge/worktrees/pipeline-44a94121/lib/help-docs/01-settings.md +194 -0
- package/.forge/worktrees/pipeline-44a94121/lib/help-docs/02-telegram.md +41 -0
- package/.forge/worktrees/pipeline-44a94121/lib/help-docs/03-tunnel.md +31 -0
- package/.forge/worktrees/pipeline-44a94121/lib/help-docs/04-tasks.md +52 -0
- package/.forge/worktrees/pipeline-44a94121/lib/help-docs/05-pipelines.md +460 -0
- package/.forge/worktrees/pipeline-44a94121/lib/help-docs/06-skills.md +43 -0
- package/.forge/worktrees/pipeline-44a94121/lib/help-docs/07-projects.md +73 -0
- package/.forge/worktrees/pipeline-44a94121/lib/help-docs/08-rules.md +53 -0
- package/.forge/worktrees/pipeline-44a94121/lib/help-docs/09-issue-autofix.md +55 -0
- package/.forge/worktrees/pipeline-44a94121/lib/help-docs/10-troubleshooting.md +89 -0
- package/.forge/worktrees/pipeline-44a94121/lib/help-docs/11-workspace.md +810 -0
- package/.forge/worktrees/pipeline-44a94121/lib/help-docs/CLAUDE.md +62 -0
- package/.forge/worktrees/pipeline-44a94121/lib/init.ts +266 -0
- package/.forge/worktrees/pipeline-44a94121/lib/issue-scanner.ts +298 -0
- package/.forge/worktrees/pipeline-44a94121/lib/logger.ts +79 -0
- package/.forge/worktrees/pipeline-44a94121/lib/notifications.ts +75 -0
- package/.forge/worktrees/pipeline-44a94121/lib/notify.ts +108 -0
- package/.forge/worktrees/pipeline-44a94121/lib/password.ts +97 -0
- package/.forge/worktrees/pipeline-44a94121/lib/pipeline-scheduler.ts +373 -0
- package/.forge/worktrees/pipeline-44a94121/lib/pipeline.ts +1441 -0
- package/.forge/worktrees/pipeline-44a94121/lib/plugins/executor.ts +347 -0
- package/.forge/worktrees/pipeline-44a94121/lib/plugins/registry.ts +228 -0
- package/.forge/worktrees/pipeline-44a94121/lib/plugins/types.ts +103 -0
- package/.forge/worktrees/pipeline-44a94121/lib/project-sessions.ts +53 -0
- package/.forge/worktrees/pipeline-44a94121/lib/projects.ts +86 -0
- package/.forge/worktrees/pipeline-44a94121/lib/session-manager.ts +156 -0
- package/.forge/worktrees/pipeline-44a94121/lib/session-utils.ts +53 -0
- package/.forge/worktrees/pipeline-44a94121/lib/session-watcher.ts +345 -0
- package/.forge/worktrees/pipeline-44a94121/lib/settings.ts +195 -0
- package/.forge/worktrees/pipeline-44a94121/lib/skills.ts +458 -0
- package/.forge/worktrees/pipeline-44a94121/lib/task-manager.ts +949 -0
- package/.forge/worktrees/pipeline-44a94121/lib/telegram-bot.ts +1477 -0
- package/.forge/worktrees/pipeline-44a94121/lib/telegram-standalone.ts +83 -0
- package/.forge/worktrees/pipeline-44a94121/lib/terminal-server.ts +70 -0
- package/.forge/worktrees/pipeline-44a94121/lib/terminal-standalone.ts +421 -0
- package/.forge/worktrees/pipeline-44a94121/lib/usage-scanner.ts +249 -0
- package/.forge/worktrees/pipeline-44a94121/lib/workspace/__tests__/state-machine.test.ts +388 -0
- package/.forge/worktrees/pipeline-44a94121/lib/workspace/__tests__/workspace.test.ts +311 -0
- package/.forge/worktrees/pipeline-44a94121/lib/workspace/agent-bus.ts +416 -0
- package/.forge/worktrees/pipeline-44a94121/lib/workspace/agent-worker.ts +655 -0
- package/.forge/worktrees/pipeline-44a94121/lib/workspace/backends/api-backend.ts +262 -0
- package/.forge/worktrees/pipeline-44a94121/lib/workspace/backends/cli-backend.ts +491 -0
- package/.forge/worktrees/pipeline-44a94121/lib/workspace/index.ts +82 -0
- package/.forge/worktrees/pipeline-44a94121/lib/workspace/manager.ts +136 -0
- package/.forge/worktrees/pipeline-44a94121/lib/workspace/orchestrator.ts +3400 -0
- package/.forge/worktrees/pipeline-44a94121/lib/workspace/persistence.ts +309 -0
- package/.forge/worktrees/pipeline-44a94121/lib/workspace/presets.ts +649 -0
- package/.forge/worktrees/pipeline-44a94121/lib/workspace/requests.ts +287 -0
- package/.forge/worktrees/pipeline-44a94121/lib/workspace/session-monitor.ts +240 -0
- package/.forge/worktrees/pipeline-44a94121/lib/workspace/skill-installer.ts +275 -0
- package/.forge/worktrees/pipeline-44a94121/lib/workspace/smith-memory.ts +498 -0
- package/.forge/worktrees/pipeline-44a94121/lib/workspace/types.ts +241 -0
- package/.forge/worktrees/pipeline-44a94121/lib/workspace/watch-manager.ts +560 -0
- package/.forge/worktrees/pipeline-44a94121/lib/workspace-standalone.ts +911 -0
- package/.forge/worktrees/pipeline-44a94121/middleware.ts +51 -0
- package/.forge/worktrees/pipeline-44a94121/next.config.ts +26 -0
- package/.forge/worktrees/pipeline-44a94121/package.json +74 -0
- package/.forge/worktrees/pipeline-44a94121/pnpm-lock.yaml +3719 -0
- package/.forge/worktrees/pipeline-44a94121/pnpm-workspace.yaml +1 -0
- package/.forge/worktrees/pipeline-44a94121/postcss.config.mjs +7 -0
- package/.forge/worktrees/pipeline-44a94121/publish.sh +133 -0
- package/.forge/worktrees/pipeline-44a94121/scripts/bench/README.md +66 -0
- package/.forge/worktrees/pipeline-44a94121/scripts/bench/results/.gitignore +2 -0
- package/.forge/worktrees/pipeline-44a94121/scripts/bench/run.ts +635 -0
- package/.forge/worktrees/pipeline-44a94121/scripts/bench/tasks/01-text-utils/task.md +26 -0
- package/.forge/worktrees/pipeline-44a94121/scripts/bench/tasks/01-text-utils/validator.sh +46 -0
- package/.forge/worktrees/pipeline-44a94121/scripts/bench/tasks/02-pagination/setup.sh +19 -0
- package/.forge/worktrees/pipeline-44a94121/scripts/bench/tasks/02-pagination/task.md +48 -0
- package/.forge/worktrees/pipeline-44a94121/scripts/bench/tasks/02-pagination/validator.sh +69 -0
- package/.forge/worktrees/pipeline-44a94121/scripts/bench/tasks/03-bug-fix/setup.sh +82 -0
- package/.forge/worktrees/pipeline-44a94121/scripts/bench/tasks/03-bug-fix/task.md +30 -0
- package/.forge/worktrees/pipeline-44a94121/scripts/bench/tasks/03-bug-fix/validator.sh +29 -0
- package/.forge/worktrees/pipeline-44a94121/scripts/verify-usage.ts +178 -0
- package/.forge/worktrees/pipeline-44a94121/src/config/index.ts +129 -0
- package/.forge/worktrees/pipeline-44a94121/src/core/db/database.ts +259 -0
- package/.forge/worktrees/pipeline-44a94121/src/core/memory/strategy.ts +32 -0
- package/.forge/worktrees/pipeline-44a94121/src/core/providers/chat.ts +65 -0
- package/.forge/worktrees/pipeline-44a94121/src/core/providers/registry.ts +60 -0
- package/.forge/worktrees/pipeline-44a94121/src/core/session/manager.ts +190 -0
- package/.forge/worktrees/pipeline-44a94121/src/types/index.ts +129 -0
- package/.forge/worktrees/pipeline-44a94121/start.sh +31 -0
- package/.forge/worktrees/pipeline-44a94121/templates/smith-lead.json +45 -0
- package/.forge/worktrees/pipeline-44a94121/tsconfig.json +42 -0
- package/.forge/worktrees/pipeline-d1757a50/CLAUDE.md +86 -0
- package/.forge/worktrees/pipeline-d1757a50/README.md +136 -0
- package/.forge/worktrees/pipeline-d1757a50/RELEASE_NOTES.md +11 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/agents/route.ts +17 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/auth/[...nextauth]/route.ts +3 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/auth/verify/route.ts +46 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/claude/[id]/route.ts +31 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/claude/[id]/stream/route.ts +63 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/claude/route.ts +28 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/claude-sessions/[projectName]/entries/route.ts +23 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/claude-sessions/[projectName]/live/route.ts +72 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/claude-sessions/[projectName]/route.ts +37 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/claude-sessions/sync/route.ts +17 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/claude-templates/route.ts +145 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/code/route.ts +299 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/delivery/[id]/route.ts +62 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/delivery/route.ts +40 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/detect-cli/route.ts +46 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/docs/route.ts +176 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/docs/sessions/route.ts +54 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/favorites/route.ts +26 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/flows/route.ts +6 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/flows/run/route.ts +19 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/git/route.ts +149 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/help/route.ts +84 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/issue-scanner/route.ts +116 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/logs/route.ts +100 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/mobile-chat/route.ts +115 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/monitor/route.ts +74 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/notifications/route.ts +42 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/notify/test/route.ts +33 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/online/route.ts +40 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/pipelines/[id]/route.ts +41 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/pipelines/route.ts +90 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/plugins/route.ts +75 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/preview/[...path]/route.ts +64 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/preview/route.ts +156 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/project-pipelines/route.ts +91 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/project-sessions/route.ts +61 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/projects/route.ts +26 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/sessions/[id]/chat/route.ts +64 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/sessions/[id]/messages/route.ts +9 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/sessions/[id]/route.ts +17 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/sessions/route.ts +20 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/settings/route.ts +64 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/skills/local/route.ts +228 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/skills/route.ts +182 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/smith-templates/route.ts +81 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/status/route.ts +12 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/tabs/route.ts +25 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/tasks/[id]/route.ts +51 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/tasks/[id]/stream/route.ts +77 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/tasks/link/route.ts +37 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/tasks/route.ts +44 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/tasks/session/route.ts +14 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/telegram/route.ts +23 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/templates/route.ts +6 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/terminal-bell/route.ts +35 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/terminal-cwd/route.ts +19 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/terminal-state/route.ts +15 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/tunnel/route.ts +26 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/upgrade/route.ts +43 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/usage/route.ts +20 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/version/route.ts +78 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/watchers/route.ts +33 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/workspace/[id]/agents/route.ts +35 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/workspace/[id]/memory/route.ts +23 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/workspace/[id]/smith/route.ts +22 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/workspace/[id]/stream/route.ts +28 -0
- package/.forge/worktrees/pipeline-d1757a50/app/api/workspace/route.ts +100 -0
- package/.forge/worktrees/pipeline-d1757a50/app/global-error.tsx +21 -0
- package/.forge/worktrees/pipeline-d1757a50/app/globals.css +52 -0
- package/.forge/worktrees/pipeline-d1757a50/app/icon.ico +0 -0
- package/.forge/worktrees/pipeline-d1757a50/app/icon.png +0 -0
- package/.forge/worktrees/pipeline-d1757a50/app/icon.svg +106 -0
- package/.forge/worktrees/pipeline-d1757a50/app/layout.tsx +17 -0
- package/.forge/worktrees/pipeline-d1757a50/app/login/LoginForm.tsx +96 -0
- package/.forge/worktrees/pipeline-d1757a50/app/login/page.tsx +10 -0
- package/.forge/worktrees/pipeline-d1757a50/app/mobile/page.tsx +9 -0
- package/.forge/worktrees/pipeline-d1757a50/app/page.tsx +21 -0
- package/.forge/worktrees/pipeline-d1757a50/bin/forge-server.mjs +484 -0
- package/.forge/worktrees/pipeline-d1757a50/check-forge-status.sh +71 -0
- package/.forge/worktrees/pipeline-d1757a50/cli/mw.ts +579 -0
- package/.forge/worktrees/pipeline-d1757a50/components/BrowserPanel.tsx +175 -0
- package/.forge/worktrees/pipeline-d1757a50/components/ChatPanel.tsx +191 -0
- package/.forge/worktrees/pipeline-d1757a50/components/ClaudeTerminal.tsx +267 -0
- package/.forge/worktrees/pipeline-d1757a50/components/CodeViewer.tsx +787 -0
- package/.forge/worktrees/pipeline-d1757a50/components/ConversationEditor.tsx +411 -0
- package/.forge/worktrees/pipeline-d1757a50/components/ConversationGraphView.tsx +347 -0
- package/.forge/worktrees/pipeline-d1757a50/components/ConversationTerminalView.tsx +303 -0
- package/.forge/worktrees/pipeline-d1757a50/components/Dashboard.tsx +807 -0
- package/.forge/worktrees/pipeline-d1757a50/components/DashboardWrapper.tsx +9 -0
- package/.forge/worktrees/pipeline-d1757a50/components/DeliveryFlowEditor.tsx +491 -0
- package/.forge/worktrees/pipeline-d1757a50/components/DeliveryList.tsx +230 -0
- package/.forge/worktrees/pipeline-d1757a50/components/DeliveryWorkspace.tsx +589 -0
- package/.forge/worktrees/pipeline-d1757a50/components/DocTerminal.tsx +187 -0
- package/.forge/worktrees/pipeline-d1757a50/components/DocsViewer.tsx +574 -0
- package/.forge/worktrees/pipeline-d1757a50/components/HelpDialog.tsx +169 -0
- package/.forge/worktrees/pipeline-d1757a50/components/HelpTerminal.tsx +141 -0
- package/.forge/worktrees/pipeline-d1757a50/components/InlinePipelineView.tsx +111 -0
- package/.forge/worktrees/pipeline-d1757a50/components/LogViewer.tsx +194 -0
- package/.forge/worktrees/pipeline-d1757a50/components/MarkdownContent.tsx +73 -0
- package/.forge/worktrees/pipeline-d1757a50/components/MobileView.tsx +385 -0
- package/.forge/worktrees/pipeline-d1757a50/components/MonitorPanel.tsx +122 -0
- package/.forge/worktrees/pipeline-d1757a50/components/NewSessionModal.tsx +93 -0
- package/.forge/worktrees/pipeline-d1757a50/components/NewTaskModal.tsx +492 -0
- package/.forge/worktrees/pipeline-d1757a50/components/PipelineEditor.tsx +570 -0
- package/.forge/worktrees/pipeline-d1757a50/components/PipelineView.tsx +1018 -0
- package/.forge/worktrees/pipeline-d1757a50/components/PluginsPanel.tsx +472 -0
- package/.forge/worktrees/pipeline-d1757a50/components/ProjectDetail.tsx +1618 -0
- package/.forge/worktrees/pipeline-d1757a50/components/ProjectList.tsx +108 -0
- package/.forge/worktrees/pipeline-d1757a50/components/ProjectManager.tsx +401 -0
- package/.forge/worktrees/pipeline-d1757a50/components/SessionList.tsx +74 -0
- package/.forge/worktrees/pipeline-d1757a50/components/SessionView.tsx +726 -0
- package/.forge/worktrees/pipeline-d1757a50/components/SettingsModal.tsx +1647 -0
- package/.forge/worktrees/pipeline-d1757a50/components/SkillsPanel.tsx +969 -0
- package/.forge/worktrees/pipeline-d1757a50/components/StatusBar.tsx +99 -0
- package/.forge/worktrees/pipeline-d1757a50/components/TabBar.tsx +46 -0
- package/.forge/worktrees/pipeline-d1757a50/components/TaskBoard.tsx +113 -0
- package/.forge/worktrees/pipeline-d1757a50/components/TaskDetail.tsx +372 -0
- package/.forge/worktrees/pipeline-d1757a50/components/TerminalLauncher.tsx +398 -0
- package/.forge/worktrees/pipeline-d1757a50/components/TunnelToggle.tsx +206 -0
- package/.forge/worktrees/pipeline-d1757a50/components/UsagePanel.tsx +207 -0
- package/.forge/worktrees/pipeline-d1757a50/components/WebTerminal.tsx +1683 -0
- package/.forge/worktrees/pipeline-d1757a50/components/WorkspaceTree.tsx +221 -0
- package/.forge/worktrees/pipeline-d1757a50/components/WorkspaceView.tsx +4048 -0
- package/.forge/worktrees/pipeline-d1757a50/dev-test.sh +5 -0
- package/.forge/worktrees/pipeline-d1757a50/docs/Forge_Memory_Layer_Design.docx +0 -0
- package/.forge/worktrees/pipeline-d1757a50/docs/Forge_Strategy_Research_2026.docx +0 -0
- package/.forge/worktrees/pipeline-d1757a50/docs/LOCAL-DEPLOY.md +144 -0
- package/.forge/worktrees/pipeline-d1757a50/docs/roadmap-multi-agent-workflow.md +330 -0
- package/.forge/worktrees/pipeline-d1757a50/forge-logo.png +0 -0
- package/.forge/worktrees/pipeline-d1757a50/forge-logo.svg +106 -0
- package/.forge/worktrees/pipeline-d1757a50/hooks/useSidebarResize.ts +52 -0
- package/.forge/worktrees/pipeline-d1757a50/install.sh +29 -0
- package/.forge/worktrees/pipeline-d1757a50/instrumentation.ts +35 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/agents/claude-adapter.ts +104 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/agents/generic-adapter.ts +64 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/agents/index.ts +245 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/agents/types.ts +70 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/artifacts.ts +106 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/auth.ts +62 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/builtin-plugins/docker.yaml +70 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/builtin-plugins/http.yaml +66 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/builtin-plugins/jenkins.yaml +92 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/builtin-plugins/llm-vision.yaml +85 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/builtin-plugins/playwright.yaml +111 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/builtin-plugins/shell-command.yaml +60 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/builtin-plugins/slack.yaml +48 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/builtin-plugins/webhook.yaml +56 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/claude-process.ts +361 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/claude-sessions.ts +266 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/claude-templates.ts +227 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/cloudflared.ts +424 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/crypto.ts +67 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/delivery.ts +787 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/dirs.ts +99 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/flows.ts +86 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/forge-mcp-server.ts +717 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/forge-skills/forge-inbox.md +38 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/forge-skills/forge-send.md +47 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/forge-skills/forge-status.md +32 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/forge-skills/forge-workspace-sync.md +37 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/help-docs/00-overview.md +40 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/help-docs/01-settings.md +194 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/help-docs/02-telegram.md +41 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/help-docs/03-tunnel.md +31 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/help-docs/04-tasks.md +52 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/help-docs/05-pipelines.md +460 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/help-docs/06-skills.md +43 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/help-docs/07-projects.md +73 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/help-docs/08-rules.md +53 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/help-docs/09-issue-autofix.md +55 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/help-docs/10-troubleshooting.md +89 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/help-docs/11-workspace.md +810 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/help-docs/CLAUDE.md +62 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/init.ts +266 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/issue-scanner.ts +298 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/logger.ts +79 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/notifications.ts +75 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/notify.ts +108 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/password.ts +97 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/pipeline-scheduler.ts +373 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/pipeline.ts +1441 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/plugins/executor.ts +347 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/plugins/registry.ts +228 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/plugins/types.ts +103 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/project-sessions.ts +53 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/projects.ts +86 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/session-manager.ts +156 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/session-utils.ts +53 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/session-watcher.ts +345 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/settings.ts +195 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/skills.ts +458 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/task-manager.ts +949 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/telegram-bot.ts +1477 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/telegram-standalone.ts +83 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/terminal-server.ts +70 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/terminal-standalone.ts +421 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/usage-scanner.ts +249 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/workspace/__tests__/state-machine.test.ts +388 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/workspace/__tests__/workspace.test.ts +311 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/workspace/agent-bus.ts +416 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/workspace/agent-worker.ts +655 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/workspace/backends/api-backend.ts +262 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/workspace/backends/cli-backend.ts +491 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/workspace/index.ts +82 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/workspace/manager.ts +136 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/workspace/orchestrator.ts +3400 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/workspace/persistence.ts +309 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/workspace/presets.ts +649 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/workspace/requests.ts +287 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/workspace/session-monitor.ts +240 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/workspace/skill-installer.ts +275 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/workspace/smith-memory.ts +498 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/workspace/types.ts +241 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/workspace/watch-manager.ts +560 -0
- package/.forge/worktrees/pipeline-d1757a50/lib/workspace-standalone.ts +911 -0
- package/.forge/worktrees/pipeline-d1757a50/middleware.ts +51 -0
- package/.forge/worktrees/pipeline-d1757a50/next.config.ts +26 -0
- package/.forge/worktrees/pipeline-d1757a50/package.json +74 -0
- package/.forge/worktrees/pipeline-d1757a50/pnpm-lock.yaml +3719 -0
- package/.forge/worktrees/pipeline-d1757a50/pnpm-workspace.yaml +1 -0
- package/.forge/worktrees/pipeline-d1757a50/postcss.config.mjs +7 -0
- package/.forge/worktrees/pipeline-d1757a50/publish.sh +133 -0
- package/.forge/worktrees/pipeline-d1757a50/scripts/bench/README.md +66 -0
- package/.forge/worktrees/pipeline-d1757a50/scripts/bench/results/.gitignore +2 -0
- package/.forge/worktrees/pipeline-d1757a50/scripts/bench/run.ts +635 -0
- package/.forge/worktrees/pipeline-d1757a50/scripts/bench/tasks/01-text-utils/task.md +26 -0
- package/.forge/worktrees/pipeline-d1757a50/scripts/bench/tasks/01-text-utils/validator.sh +46 -0
- package/.forge/worktrees/pipeline-d1757a50/scripts/bench/tasks/02-pagination/setup.sh +19 -0
- package/.forge/worktrees/pipeline-d1757a50/scripts/bench/tasks/02-pagination/task.md +48 -0
- package/.forge/worktrees/pipeline-d1757a50/scripts/bench/tasks/02-pagination/validator.sh +69 -0
- package/.forge/worktrees/pipeline-d1757a50/scripts/bench/tasks/03-bug-fix/setup.sh +82 -0
- package/.forge/worktrees/pipeline-d1757a50/scripts/bench/tasks/03-bug-fix/task.md +30 -0
- package/.forge/worktrees/pipeline-d1757a50/scripts/bench/tasks/03-bug-fix/validator.sh +29 -0
- package/.forge/worktrees/pipeline-d1757a50/scripts/verify-usage.ts +178 -0
- package/.forge/worktrees/pipeline-d1757a50/src/config/index.ts +129 -0
- package/.forge/worktrees/pipeline-d1757a50/src/core/db/database.ts +259 -0
- package/.forge/worktrees/pipeline-d1757a50/src/core/memory/strategy.ts +32 -0
- package/.forge/worktrees/pipeline-d1757a50/src/core/providers/chat.ts +65 -0
- package/.forge/worktrees/pipeline-d1757a50/src/core/providers/registry.ts +60 -0
- package/.forge/worktrees/pipeline-d1757a50/src/core/session/manager.ts +190 -0
- package/.forge/worktrees/pipeline-d1757a50/src/types/index.ts +129 -0
- package/.forge/worktrees/pipeline-d1757a50/start.sh +31 -0
- package/.forge/worktrees/pipeline-d1757a50/templates/smith-lead.json +45 -0
- package/.forge/worktrees/pipeline-d1757a50/tsconfig.json +42 -0
- package/.forge/worktrees/pipeline-d59c2fe2/CLAUDE.md +86 -0
- package/.forge/worktrees/pipeline-d59c2fe2/README.md +136 -0
- package/.forge/worktrees/pipeline-d59c2fe2/RELEASE_NOTES.md +11 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/agents/route.ts +17 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/auth/[...nextauth]/route.ts +3 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/auth/verify/route.ts +46 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/claude/[id]/route.ts +31 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/claude/[id]/stream/route.ts +63 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/claude/route.ts +28 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/claude-sessions/[projectName]/entries/route.ts +23 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/claude-sessions/[projectName]/live/route.ts +72 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/claude-sessions/[projectName]/route.ts +37 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/claude-sessions/sync/route.ts +17 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/claude-templates/route.ts +145 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/code/route.ts +299 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/delivery/[id]/route.ts +62 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/delivery/route.ts +40 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/detect-cli/route.ts +46 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/docs/route.ts +176 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/docs/sessions/route.ts +54 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/favorites/route.ts +26 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/flows/route.ts +6 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/flows/run/route.ts +19 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/git/route.ts +149 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/help/route.ts +84 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/issue-scanner/route.ts +116 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/logs/route.ts +100 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/mobile-chat/route.ts +115 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/monitor/route.ts +74 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/notifications/route.ts +42 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/notify/test/route.ts +33 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/online/route.ts +40 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/pipelines/[id]/route.ts +41 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/pipelines/route.ts +90 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/plugins/route.ts +75 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/preview/[...path]/route.ts +64 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/preview/route.ts +156 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/project-pipelines/route.ts +91 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/project-sessions/route.ts +61 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/projects/route.ts +26 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/sessions/[id]/chat/route.ts +64 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/sessions/[id]/messages/route.ts +9 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/sessions/[id]/route.ts +17 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/sessions/route.ts +20 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/settings/route.ts +64 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/skills/local/route.ts +228 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/skills/route.ts +182 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/smith-templates/route.ts +81 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/status/route.ts +12 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/tabs/route.ts +25 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/tasks/[id]/route.ts +51 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/tasks/[id]/stream/route.ts +77 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/tasks/link/route.ts +37 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/tasks/route.ts +44 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/tasks/session/route.ts +14 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/telegram/route.ts +23 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/templates/route.ts +6 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/terminal-bell/route.ts +35 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/terminal-cwd/route.ts +19 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/terminal-state/route.ts +15 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/tunnel/route.ts +26 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/upgrade/route.ts +43 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/usage/route.ts +20 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/version/route.ts +78 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/watchers/route.ts +33 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/workspace/[id]/agents/route.ts +35 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/workspace/[id]/memory/route.ts +23 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/workspace/[id]/smith/route.ts +22 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/workspace/[id]/stream/route.ts +28 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/api/workspace/route.ts +100 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/global-error.tsx +21 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/globals.css +52 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/icon.ico +0 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/icon.png +0 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/icon.svg +106 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/layout.tsx +17 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/login/LoginForm.tsx +96 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/login/page.tsx +10 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/mobile/page.tsx +9 -0
- package/.forge/worktrees/pipeline-d59c2fe2/app/page.tsx +21 -0
- package/.forge/worktrees/pipeline-d59c2fe2/bin/forge-server.mjs +484 -0
- package/.forge/worktrees/pipeline-d59c2fe2/check-forge-status.sh +71 -0
- package/.forge/worktrees/pipeline-d59c2fe2/cli/mw.ts +579 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/BrowserPanel.tsx +175 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/ChatPanel.tsx +191 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/ClaudeTerminal.tsx +267 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/CodeViewer.tsx +787 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/ConversationEditor.tsx +411 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/ConversationGraphView.tsx +347 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/ConversationTerminalView.tsx +303 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/Dashboard.tsx +807 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/DashboardWrapper.tsx +9 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/DeliveryFlowEditor.tsx +491 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/DeliveryList.tsx +230 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/DeliveryWorkspace.tsx +589 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/DocTerminal.tsx +187 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/DocsViewer.tsx +574 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/HelpDialog.tsx +169 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/HelpTerminal.tsx +141 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/InlinePipelineView.tsx +111 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/LogViewer.tsx +194 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/MarkdownContent.tsx +73 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/MobileView.tsx +385 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/MonitorPanel.tsx +122 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/NewSessionModal.tsx +93 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/NewTaskModal.tsx +492 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/PipelineEditor.tsx +570 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/PipelineView.tsx +1018 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/PluginsPanel.tsx +472 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/ProjectDetail.tsx +1618 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/ProjectList.tsx +108 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/ProjectManager.tsx +401 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/SessionList.tsx +74 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/SessionView.tsx +726 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/SettingsModal.tsx +1647 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/SkillsPanel.tsx +969 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/StatusBar.tsx +99 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/TabBar.tsx +46 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/TaskBoard.tsx +113 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/TaskDetail.tsx +372 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/TerminalLauncher.tsx +398 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/TunnelToggle.tsx +206 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/UsagePanel.tsx +207 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/WebTerminal.tsx +1683 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/WorkspaceTree.tsx +221 -0
- package/.forge/worktrees/pipeline-d59c2fe2/components/WorkspaceView.tsx +4048 -0
- package/.forge/worktrees/pipeline-d59c2fe2/dev-test.sh +5 -0
- package/.forge/worktrees/pipeline-d59c2fe2/docs/Forge_Memory_Layer_Design.docx +0 -0
- package/.forge/worktrees/pipeline-d59c2fe2/docs/Forge_Strategy_Research_2026.docx +0 -0
- package/.forge/worktrees/pipeline-d59c2fe2/docs/LOCAL-DEPLOY.md +144 -0
- package/.forge/worktrees/pipeline-d59c2fe2/docs/roadmap-multi-agent-workflow.md +330 -0
- package/.forge/worktrees/pipeline-d59c2fe2/forge-logo.png +0 -0
- package/.forge/worktrees/pipeline-d59c2fe2/forge-logo.svg +106 -0
- package/.forge/worktrees/pipeline-d59c2fe2/hooks/useSidebarResize.ts +52 -0
- package/.forge/worktrees/pipeline-d59c2fe2/install.sh +29 -0
- package/.forge/worktrees/pipeline-d59c2fe2/instrumentation.ts +35 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/agents/claude-adapter.ts +104 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/agents/generic-adapter.ts +64 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/agents/index.ts +245 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/agents/types.ts +70 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/artifacts.ts +106 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/auth.ts +62 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/builtin-plugins/docker.yaml +70 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/builtin-plugins/http.yaml +66 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/builtin-plugins/jenkins.yaml +92 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/builtin-plugins/llm-vision.yaml +85 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/builtin-plugins/playwright.yaml +111 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/builtin-plugins/shell-command.yaml +60 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/builtin-plugins/slack.yaml +48 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/builtin-plugins/webhook.yaml +56 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/claude-process.ts +361 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/claude-sessions.ts +266 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/claude-templates.ts +227 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/cloudflared.ts +424 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/crypto.ts +67 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/delivery.ts +787 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/dirs.ts +99 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/flows.ts +86 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/forge-mcp-server.ts +717 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/forge-skills/forge-inbox.md +38 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/forge-skills/forge-send.md +47 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/forge-skills/forge-status.md +32 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/forge-skills/forge-workspace-sync.md +37 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/help-docs/00-overview.md +40 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/help-docs/01-settings.md +194 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/help-docs/02-telegram.md +41 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/help-docs/03-tunnel.md +31 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/help-docs/04-tasks.md +52 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/help-docs/05-pipelines.md +460 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/help-docs/06-skills.md +43 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/help-docs/07-projects.md +73 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/help-docs/08-rules.md +53 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/help-docs/09-issue-autofix.md +55 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/help-docs/10-troubleshooting.md +89 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/help-docs/11-workspace.md +810 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/help-docs/CLAUDE.md +62 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/init.ts +266 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/issue-scanner.ts +298 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/logger.ts +79 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/notifications.ts +75 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/notify.ts +108 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/password.ts +97 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/pipeline-scheduler.ts +373 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/pipeline.ts +1441 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/plugins/executor.ts +347 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/plugins/registry.ts +228 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/plugins/types.ts +103 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/project-sessions.ts +53 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/projects.ts +86 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/session-manager.ts +156 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/session-utils.ts +53 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/session-watcher.ts +345 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/settings.ts +195 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/skills.ts +458 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/task-manager.ts +949 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/telegram-bot.ts +1477 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/telegram-standalone.ts +83 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/terminal-server.ts +70 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/terminal-standalone.ts +421 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/usage-scanner.ts +249 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/workspace/__tests__/state-machine.test.ts +388 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/workspace/__tests__/workspace.test.ts +311 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/workspace/agent-bus.ts +416 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/workspace/agent-worker.ts +655 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/workspace/backends/api-backend.ts +262 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/workspace/backends/cli-backend.ts +491 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/workspace/index.ts +82 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/workspace/manager.ts +136 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/workspace/orchestrator.ts +3400 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/workspace/persistence.ts +309 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/workspace/presets.ts +649 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/workspace/requests.ts +287 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/workspace/session-monitor.ts +240 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/workspace/skill-installer.ts +275 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/workspace/smith-memory.ts +498 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/workspace/types.ts +241 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/workspace/watch-manager.ts +560 -0
- package/.forge/worktrees/pipeline-d59c2fe2/lib/workspace-standalone.ts +911 -0
- package/.forge/worktrees/pipeline-d59c2fe2/middleware.ts +51 -0
- package/.forge/worktrees/pipeline-d59c2fe2/next.config.ts +26 -0
- package/.forge/worktrees/pipeline-d59c2fe2/package.json +74 -0
- package/.forge/worktrees/pipeline-d59c2fe2/pnpm-lock.yaml +3719 -0
- package/.forge/worktrees/pipeline-d59c2fe2/pnpm-workspace.yaml +1 -0
- package/.forge/worktrees/pipeline-d59c2fe2/postcss.config.mjs +7 -0
- package/.forge/worktrees/pipeline-d59c2fe2/publish.sh +133 -0
- package/.forge/worktrees/pipeline-d59c2fe2/scripts/bench/README.md +66 -0
- package/.forge/worktrees/pipeline-d59c2fe2/scripts/bench/results/.gitignore +2 -0
- package/.forge/worktrees/pipeline-d59c2fe2/scripts/bench/run.ts +635 -0
- package/.forge/worktrees/pipeline-d59c2fe2/scripts/bench/tasks/01-text-utils/task.md +26 -0
- package/.forge/worktrees/pipeline-d59c2fe2/scripts/bench/tasks/01-text-utils/validator.sh +46 -0
- package/.forge/worktrees/pipeline-d59c2fe2/scripts/bench/tasks/02-pagination/setup.sh +19 -0
- package/.forge/worktrees/pipeline-d59c2fe2/scripts/bench/tasks/02-pagination/task.md +48 -0
- package/.forge/worktrees/pipeline-d59c2fe2/scripts/bench/tasks/02-pagination/validator.sh +69 -0
- package/.forge/worktrees/pipeline-d59c2fe2/scripts/bench/tasks/03-bug-fix/setup.sh +82 -0
- package/.forge/worktrees/pipeline-d59c2fe2/scripts/bench/tasks/03-bug-fix/task.md +30 -0
- package/.forge/worktrees/pipeline-d59c2fe2/scripts/bench/tasks/03-bug-fix/validator.sh +29 -0
- package/.forge/worktrees/pipeline-d59c2fe2/scripts/verify-usage.ts +178 -0
- package/.forge/worktrees/pipeline-d59c2fe2/src/config/index.ts +129 -0
- package/.forge/worktrees/pipeline-d59c2fe2/src/core/db/database.ts +259 -0
- package/.forge/worktrees/pipeline-d59c2fe2/src/core/memory/strategy.ts +32 -0
- package/.forge/worktrees/pipeline-d59c2fe2/src/core/providers/chat.ts +65 -0
- package/.forge/worktrees/pipeline-d59c2fe2/src/core/providers/registry.ts +60 -0
- package/.forge/worktrees/pipeline-d59c2fe2/src/core/session/manager.ts +190 -0
- package/.forge/worktrees/pipeline-d59c2fe2/src/types/index.ts +129 -0
- package/.forge/worktrees/pipeline-d59c2fe2/start.sh +31 -0
- package/.forge/worktrees/pipeline-d59c2fe2/templates/smith-lead.json +45 -0
- package/.forge/worktrees/pipeline-d59c2fe2/tsconfig.json +42 -0
- package/.forge/worktrees/pipeline-d6a6ef23/CLAUDE.md +86 -0
- package/.forge/worktrees/pipeline-d6a6ef23/README.md +136 -0
- package/.forge/worktrees/pipeline-d6a6ef23/RELEASE_NOTES.md +11 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/agents/route.ts +17 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/auth/[...nextauth]/route.ts +3 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/auth/verify/route.ts +46 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/claude/[id]/route.ts +31 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/claude/[id]/stream/route.ts +63 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/claude/route.ts +28 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/claude-sessions/[projectName]/entries/route.ts +23 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/claude-sessions/[projectName]/live/route.ts +72 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/claude-sessions/[projectName]/route.ts +37 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/claude-sessions/sync/route.ts +17 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/claude-templates/route.ts +145 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/code/route.ts +299 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/delivery/[id]/route.ts +62 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/delivery/route.ts +40 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/detect-cli/route.ts +46 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/docs/route.ts +176 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/docs/sessions/route.ts +54 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/favorites/route.ts +26 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/flows/route.ts +6 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/flows/run/route.ts +19 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/git/route.ts +149 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/help/route.ts +84 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/issue-scanner/route.ts +116 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/logs/route.ts +100 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/mobile-chat/route.ts +115 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/monitor/route.ts +74 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/notifications/route.ts +42 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/notify/test/route.ts +33 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/online/route.ts +40 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/pipelines/[id]/route.ts +41 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/pipelines/route.ts +90 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/plugins/route.ts +75 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/preview/[...path]/route.ts +64 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/preview/route.ts +156 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/project-pipelines/route.ts +91 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/project-sessions/route.ts +61 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/projects/route.ts +26 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/sessions/[id]/chat/route.ts +64 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/sessions/[id]/messages/route.ts +9 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/sessions/[id]/route.ts +17 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/sessions/route.ts +20 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/settings/route.ts +64 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/skills/local/route.ts +228 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/skills/route.ts +182 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/smith-templates/route.ts +81 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/status/route.ts +12 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/tabs/route.ts +25 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/tasks/[id]/route.ts +51 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/tasks/[id]/stream/route.ts +77 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/tasks/link/route.ts +37 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/tasks/route.ts +44 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/tasks/session/route.ts +14 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/telegram/route.ts +23 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/templates/route.ts +6 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/terminal-bell/route.ts +35 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/terminal-cwd/route.ts +19 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/terminal-state/route.ts +15 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/tunnel/route.ts +26 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/upgrade/route.ts +43 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/usage/route.ts +20 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/version/route.ts +78 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/watchers/route.ts +33 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/workspace/[id]/agents/route.ts +35 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/workspace/[id]/memory/route.ts +23 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/workspace/[id]/smith/route.ts +22 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/workspace/[id]/stream/route.ts +28 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/api/workspace/route.ts +100 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/global-error.tsx +21 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/globals.css +52 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/icon.ico +0 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/icon.png +0 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/icon.svg +106 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/layout.tsx +17 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/login/LoginForm.tsx +96 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/login/page.tsx +10 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/mobile/page.tsx +9 -0
- package/.forge/worktrees/pipeline-d6a6ef23/app/page.tsx +21 -0
- package/.forge/worktrees/pipeline-d6a6ef23/bin/forge-server.mjs +484 -0
- package/.forge/worktrees/pipeline-d6a6ef23/check-forge-status.sh +71 -0
- package/.forge/worktrees/pipeline-d6a6ef23/cli/mw.ts +579 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/BrowserPanel.tsx +175 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/ChatPanel.tsx +191 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/ClaudeTerminal.tsx +267 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/CodeViewer.tsx +787 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/ConversationEditor.tsx +411 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/ConversationGraphView.tsx +347 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/ConversationTerminalView.tsx +303 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/Dashboard.tsx +807 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/DashboardWrapper.tsx +9 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/DeliveryFlowEditor.tsx +491 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/DeliveryList.tsx +230 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/DeliveryWorkspace.tsx +589 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/DocTerminal.tsx +187 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/DocsViewer.tsx +574 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/HelpDialog.tsx +169 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/HelpTerminal.tsx +141 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/InlinePipelineView.tsx +111 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/LogViewer.tsx +194 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/MarkdownContent.tsx +73 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/MobileView.tsx +385 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/MonitorPanel.tsx +122 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/NewSessionModal.tsx +93 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/NewTaskModal.tsx +492 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/PipelineEditor.tsx +570 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/PipelineView.tsx +1018 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/PluginsPanel.tsx +472 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/ProjectDetail.tsx +1618 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/ProjectList.tsx +108 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/ProjectManager.tsx +401 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/SessionList.tsx +74 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/SessionView.tsx +726 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/SettingsModal.tsx +1647 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/SkillsPanel.tsx +969 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/StatusBar.tsx +99 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/TabBar.tsx +46 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/TaskBoard.tsx +113 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/TaskDetail.tsx +372 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/TerminalLauncher.tsx +398 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/TunnelToggle.tsx +206 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/UsagePanel.tsx +207 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/WebTerminal.tsx +1683 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/WorkspaceTree.tsx +221 -0
- package/.forge/worktrees/pipeline-d6a6ef23/components/WorkspaceView.tsx +4048 -0
- package/.forge/worktrees/pipeline-d6a6ef23/dev-test.sh +5 -0
- package/.forge/worktrees/pipeline-d6a6ef23/docs/Forge_Memory_Layer_Design.docx +0 -0
- package/.forge/worktrees/pipeline-d6a6ef23/docs/Forge_Strategy_Research_2026.docx +0 -0
- package/.forge/worktrees/pipeline-d6a6ef23/docs/LOCAL-DEPLOY.md +144 -0
- package/.forge/worktrees/pipeline-d6a6ef23/docs/roadmap-multi-agent-workflow.md +330 -0
- package/.forge/worktrees/pipeline-d6a6ef23/forge-logo.png +0 -0
- package/.forge/worktrees/pipeline-d6a6ef23/forge-logo.svg +106 -0
- package/.forge/worktrees/pipeline-d6a6ef23/hooks/useSidebarResize.ts +52 -0
- package/.forge/worktrees/pipeline-d6a6ef23/install.sh +29 -0
- package/.forge/worktrees/pipeline-d6a6ef23/instrumentation.ts +35 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/agents/claude-adapter.ts +104 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/agents/generic-adapter.ts +64 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/agents/index.ts +245 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/agents/types.ts +70 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/artifacts.ts +106 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/auth.ts +62 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/builtin-plugins/docker.yaml +70 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/builtin-plugins/http.yaml +66 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/builtin-plugins/jenkins.yaml +92 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/builtin-plugins/llm-vision.yaml +85 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/builtin-plugins/playwright.yaml +111 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/builtin-plugins/shell-command.yaml +60 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/builtin-plugins/slack.yaml +48 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/builtin-plugins/webhook.yaml +56 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/claude-process.ts +352 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/claude-sessions.ts +266 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/claude-templates.ts +227 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/cloudflared.ts +424 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/crypto.ts +67 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/delivery.ts +787 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/dirs.ts +99 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/flows.ts +86 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/forge-mcp-server.ts +717 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/forge-skills/forge-inbox.md +38 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/forge-skills/forge-send.md +47 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/forge-skills/forge-status.md +32 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/forge-skills/forge-workspace-sync.md +37 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/help-docs/00-overview.md +40 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/help-docs/01-settings.md +194 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/help-docs/02-telegram.md +41 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/help-docs/03-tunnel.md +31 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/help-docs/04-tasks.md +52 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/help-docs/05-pipelines.md +460 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/help-docs/06-skills.md +43 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/help-docs/07-projects.md +73 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/help-docs/08-rules.md +53 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/help-docs/09-issue-autofix.md +55 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/help-docs/10-troubleshooting.md +89 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/help-docs/11-workspace.md +810 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/help-docs/CLAUDE.md +62 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/init.ts +266 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/issue-scanner.ts +298 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/logger.ts +79 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/notifications.ts +75 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/notify.ts +108 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/password.ts +97 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/pipeline-scheduler.ts +373 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/pipeline.ts +1438 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/plugins/executor.ts +347 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/plugins/registry.ts +228 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/plugins/types.ts +103 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/project-sessions.ts +53 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/projects.ts +86 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/session-manager.ts +156 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/session-utils.ts +53 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/session-watcher.ts +345 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/settings.ts +195 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/skills.ts +458 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/task-manager.ts +949 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/telegram-bot.ts +1477 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/telegram-standalone.ts +83 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/terminal-server.ts +70 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/terminal-standalone.ts +421 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/usage-scanner.ts +249 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/workspace/__tests__/state-machine.test.ts +388 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/workspace/__tests__/workspace.test.ts +311 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/workspace/agent-bus.ts +416 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/workspace/agent-worker.ts +655 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/workspace/backends/api-backend.ts +262 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/workspace/backends/cli-backend.ts +491 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/workspace/index.ts +82 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/workspace/manager.ts +136 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/workspace/orchestrator.ts +3400 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/workspace/persistence.ts +309 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/workspace/presets.ts +649 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/workspace/requests.ts +287 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/workspace/session-monitor.ts +240 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/workspace/skill-installer.ts +275 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/workspace/smith-memory.ts +498 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/workspace/types.ts +241 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/workspace/watch-manager.ts +560 -0
- package/.forge/worktrees/pipeline-d6a6ef23/lib/workspace-standalone.ts +911 -0
- package/.forge/worktrees/pipeline-d6a6ef23/middleware.ts +51 -0
- package/.forge/worktrees/pipeline-d6a6ef23/next.config.ts +26 -0
- package/.forge/worktrees/pipeline-d6a6ef23/package.json +74 -0
- package/.forge/worktrees/pipeline-d6a6ef23/pnpm-lock.yaml +3719 -0
- package/.forge/worktrees/pipeline-d6a6ef23/pnpm-workspace.yaml +1 -0
- package/.forge/worktrees/pipeline-d6a6ef23/postcss.config.mjs +7 -0
- package/.forge/worktrees/pipeline-d6a6ef23/publish.sh +133 -0
- package/.forge/worktrees/pipeline-d6a6ef23/scripts/bench/README.md +66 -0
- package/.forge/worktrees/pipeline-d6a6ef23/scripts/bench/results/.gitignore +2 -0
- package/.forge/worktrees/pipeline-d6a6ef23/scripts/bench/run.ts +635 -0
- package/.forge/worktrees/pipeline-d6a6ef23/scripts/bench/tasks/01-text-utils/task.md +26 -0
- package/.forge/worktrees/pipeline-d6a6ef23/scripts/bench/tasks/01-text-utils/validator.sh +46 -0
- package/.forge/worktrees/pipeline-d6a6ef23/scripts/bench/tasks/02-pagination/setup.sh +19 -0
- package/.forge/worktrees/pipeline-d6a6ef23/scripts/bench/tasks/02-pagination/task.md +48 -0
- package/.forge/worktrees/pipeline-d6a6ef23/scripts/bench/tasks/02-pagination/validator.sh +69 -0
- package/.forge/worktrees/pipeline-d6a6ef23/scripts/bench/tasks/03-bug-fix/setup.sh +82 -0
- package/.forge/worktrees/pipeline-d6a6ef23/scripts/bench/tasks/03-bug-fix/task.md +30 -0
- package/.forge/worktrees/pipeline-d6a6ef23/scripts/bench/tasks/03-bug-fix/validator.sh +29 -0
- package/.forge/worktrees/pipeline-d6a6ef23/scripts/verify-usage.ts +178 -0
- package/.forge/worktrees/pipeline-d6a6ef23/src/config/index.ts +129 -0
- package/.forge/worktrees/pipeline-d6a6ef23/src/core/db/database.ts +259 -0
- package/.forge/worktrees/pipeline-d6a6ef23/src/core/memory/strategy.ts +32 -0
- package/.forge/worktrees/pipeline-d6a6ef23/src/core/providers/chat.ts +65 -0
- package/.forge/worktrees/pipeline-d6a6ef23/src/core/providers/registry.ts +60 -0
- package/.forge/worktrees/pipeline-d6a6ef23/src/core/session/manager.ts +190 -0
- package/.forge/worktrees/pipeline-d6a6ef23/src/types/index.ts +129 -0
- package/.forge/worktrees/pipeline-d6a6ef23/start.sh +31 -0
- package/.forge/worktrees/pipeline-d6a6ef23/templates/smith-lead.json +45 -0
- package/.forge/worktrees/pipeline-d6a6ef23/tsconfig.json +42 -0
- package/.forge/worktrees/pipeline-e7f78b7a/CLAUDE.md +86 -0
- package/.forge/worktrees/pipeline-e7f78b7a/README.md +136 -0
- package/.forge/worktrees/pipeline-e7f78b7a/RELEASE_NOTES.md +11 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/agents/route.ts +17 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/auth/[...nextauth]/route.ts +3 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/auth/verify/route.ts +46 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/claude/[id]/route.ts +31 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/claude/[id]/stream/route.ts +63 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/claude/route.ts +28 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/claude-sessions/[projectName]/entries/route.ts +23 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/claude-sessions/[projectName]/live/route.ts +72 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/claude-sessions/[projectName]/route.ts +37 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/claude-sessions/sync/route.ts +17 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/claude-templates/route.ts +145 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/code/route.ts +299 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/delivery/[id]/route.ts +62 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/delivery/route.ts +40 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/detect-cli/route.ts +46 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/docs/route.ts +176 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/docs/sessions/route.ts +54 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/favorites/route.ts +26 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/flows/route.ts +6 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/flows/run/route.ts +19 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/git/route.ts +149 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/help/route.ts +84 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/issue-scanner/route.ts +116 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/logs/route.ts +100 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/mobile-chat/route.ts +115 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/monitor/route.ts +74 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/notifications/route.ts +42 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/notify/test/route.ts +33 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/online/route.ts +40 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/pipelines/[id]/route.ts +41 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/pipelines/route.ts +90 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/plugins/route.ts +75 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/preview/[...path]/route.ts +64 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/preview/route.ts +156 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/project-pipelines/route.ts +91 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/project-sessions/route.ts +61 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/projects/route.ts +26 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/sessions/[id]/chat/route.ts +64 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/sessions/[id]/messages/route.ts +9 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/sessions/[id]/route.ts +17 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/sessions/route.ts +20 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/settings/route.ts +64 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/skills/local/route.ts +228 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/skills/route.ts +182 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/smith-templates/route.ts +81 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/status/route.ts +12 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/tabs/route.ts +25 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/tasks/[id]/route.ts +51 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/tasks/[id]/stream/route.ts +77 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/tasks/link/route.ts +37 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/tasks/route.ts +44 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/tasks/session/route.ts +14 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/telegram/route.ts +23 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/templates/route.ts +6 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/terminal-bell/route.ts +35 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/terminal-cwd/route.ts +19 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/terminal-state/route.ts +15 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/tunnel/route.ts +26 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/upgrade/route.ts +43 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/usage/route.ts +20 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/version/route.ts +78 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/watchers/route.ts +33 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/workspace/[id]/agents/route.ts +35 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/workspace/[id]/memory/route.ts +23 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/workspace/[id]/smith/route.ts +22 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/workspace/[id]/stream/route.ts +28 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/api/workspace/route.ts +100 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/global-error.tsx +21 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/globals.css +52 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/icon.ico +0 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/icon.png +0 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/icon.svg +106 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/layout.tsx +17 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/login/LoginForm.tsx +96 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/login/page.tsx +10 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/mobile/page.tsx +9 -0
- package/.forge/worktrees/pipeline-e7f78b7a/app/page.tsx +21 -0
- package/.forge/worktrees/pipeline-e7f78b7a/bin/forge-server.mjs +484 -0
- package/.forge/worktrees/pipeline-e7f78b7a/check-forge-status.sh +71 -0
- package/.forge/worktrees/pipeline-e7f78b7a/cli/mw.ts +579 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/BrowserPanel.tsx +175 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/ChatPanel.tsx +191 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/ClaudeTerminal.tsx +267 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/CodeViewer.tsx +787 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/ConversationEditor.tsx +411 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/ConversationGraphView.tsx +347 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/ConversationTerminalView.tsx +303 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/Dashboard.tsx +807 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/DashboardWrapper.tsx +9 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/DeliveryFlowEditor.tsx +491 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/DeliveryList.tsx +230 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/DeliveryWorkspace.tsx +589 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/DocTerminal.tsx +187 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/DocsViewer.tsx +574 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/HelpDialog.tsx +169 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/HelpTerminal.tsx +141 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/InlinePipelineView.tsx +111 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/LogViewer.tsx +194 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/MarkdownContent.tsx +73 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/MobileView.tsx +385 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/MonitorPanel.tsx +122 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/NewSessionModal.tsx +93 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/NewTaskModal.tsx +492 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/PipelineEditor.tsx +570 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/PipelineView.tsx +1018 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/PluginsPanel.tsx +472 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/ProjectDetail.tsx +1618 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/ProjectList.tsx +108 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/ProjectManager.tsx +401 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/SessionList.tsx +74 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/SessionView.tsx +726 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/SettingsModal.tsx +1647 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/SkillsPanel.tsx +969 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/StatusBar.tsx +99 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/TabBar.tsx +46 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/TaskBoard.tsx +113 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/TaskDetail.tsx +372 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/TerminalLauncher.tsx +398 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/TunnelToggle.tsx +206 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/UsagePanel.tsx +207 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/WebTerminal.tsx +1683 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/WorkspaceTree.tsx +221 -0
- package/.forge/worktrees/pipeline-e7f78b7a/components/WorkspaceView.tsx +4048 -0
- package/.forge/worktrees/pipeline-e7f78b7a/dev-test.sh +5 -0
- package/.forge/worktrees/pipeline-e7f78b7a/docs/Forge_Memory_Layer_Design.docx +0 -0
- package/.forge/worktrees/pipeline-e7f78b7a/docs/Forge_Strategy_Research_2026.docx +0 -0
- package/.forge/worktrees/pipeline-e7f78b7a/docs/LOCAL-DEPLOY.md +144 -0
- package/.forge/worktrees/pipeline-e7f78b7a/docs/roadmap-multi-agent-workflow.md +330 -0
- package/.forge/worktrees/pipeline-e7f78b7a/forge-logo.png +0 -0
- package/.forge/worktrees/pipeline-e7f78b7a/forge-logo.svg +106 -0
- package/.forge/worktrees/pipeline-e7f78b7a/hooks/useSidebarResize.ts +52 -0
- package/.forge/worktrees/pipeline-e7f78b7a/install.sh +29 -0
- package/.forge/worktrees/pipeline-e7f78b7a/instrumentation.ts +35 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/agents/claude-adapter.ts +104 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/agents/generic-adapter.ts +64 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/agents/index.ts +245 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/agents/types.ts +70 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/artifacts.ts +106 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/auth.ts +62 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/builtin-plugins/docker.yaml +70 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/builtin-plugins/http.yaml +66 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/builtin-plugins/jenkins.yaml +92 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/builtin-plugins/llm-vision.yaml +85 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/builtin-plugins/playwright.yaml +111 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/builtin-plugins/shell-command.yaml +60 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/builtin-plugins/slack.yaml +48 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/builtin-plugins/webhook.yaml +56 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/claude-process.ts +352 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/claude-sessions.ts +266 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/claude-templates.ts +227 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/cloudflared.ts +424 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/crypto.ts +67 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/delivery.ts +787 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/dirs.ts +99 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/flows.ts +86 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/forge-mcp-server.ts +717 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/forge-skills/forge-inbox.md +38 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/forge-skills/forge-send.md +47 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/forge-skills/forge-status.md +32 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/forge-skills/forge-workspace-sync.md +37 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/help-docs/00-overview.md +40 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/help-docs/01-settings.md +194 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/help-docs/02-telegram.md +41 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/help-docs/03-tunnel.md +31 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/help-docs/04-tasks.md +52 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/help-docs/05-pipelines.md +460 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/help-docs/06-skills.md +43 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/help-docs/07-projects.md +73 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/help-docs/08-rules.md +53 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/help-docs/09-issue-autofix.md +55 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/help-docs/10-troubleshooting.md +89 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/help-docs/11-workspace.md +810 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/help-docs/CLAUDE.md +62 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/init.ts +266 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/issue-scanner.ts +298 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/logger.ts +79 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/notifications.ts +75 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/notify.ts +108 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/password.ts +97 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/pipeline-scheduler.ts +373 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/pipeline.ts +1441 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/plugins/executor.ts +347 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/plugins/registry.ts +228 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/plugins/types.ts +103 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/project-sessions.ts +53 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/projects.ts +86 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/session-manager.ts +156 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/session-utils.ts +53 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/session-watcher.ts +345 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/settings.ts +195 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/skills.ts +458 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/task-manager.ts +949 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/telegram-bot.ts +1477 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/telegram-standalone.ts +83 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/terminal-server.ts +70 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/terminal-standalone.ts +421 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/usage-scanner.ts +249 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/workspace/__tests__/state-machine.test.ts +388 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/workspace/__tests__/workspace.test.ts +311 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/workspace/agent-bus.ts +416 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/workspace/agent-worker.ts +655 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/workspace/backends/api-backend.ts +262 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/workspace/backends/cli-backend.ts +491 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/workspace/index.ts +82 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/workspace/manager.ts +136 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/workspace/orchestrator.ts +3400 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/workspace/persistence.ts +309 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/workspace/presets.ts +649 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/workspace/requests.ts +287 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/workspace/session-monitor.ts +240 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/workspace/skill-installer.ts +275 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/workspace/smith-memory.ts +498 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/workspace/types.ts +241 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/workspace/watch-manager.ts +560 -0
- package/.forge/worktrees/pipeline-e7f78b7a/lib/workspace-standalone.ts +911 -0
- package/.forge/worktrees/pipeline-e7f78b7a/middleware.ts +51 -0
- package/.forge/worktrees/pipeline-e7f78b7a/next.config.ts +26 -0
- package/.forge/worktrees/pipeline-e7f78b7a/package.json +74 -0
- package/.forge/worktrees/pipeline-e7f78b7a/pnpm-lock.yaml +3719 -0
- package/.forge/worktrees/pipeline-e7f78b7a/pnpm-workspace.yaml +1 -0
- package/.forge/worktrees/pipeline-e7f78b7a/postcss.config.mjs +7 -0
- package/.forge/worktrees/pipeline-e7f78b7a/publish.sh +133 -0
- package/.forge/worktrees/pipeline-e7f78b7a/scripts/bench/README.md +66 -0
- package/.forge/worktrees/pipeline-e7f78b7a/scripts/bench/results/.gitignore +2 -0
- package/.forge/worktrees/pipeline-e7f78b7a/scripts/bench/run.ts +635 -0
- package/.forge/worktrees/pipeline-e7f78b7a/scripts/bench/tasks/01-text-utils/task.md +26 -0
- package/.forge/worktrees/pipeline-e7f78b7a/scripts/bench/tasks/01-text-utils/validator.sh +46 -0
- package/.forge/worktrees/pipeline-e7f78b7a/scripts/bench/tasks/02-pagination/setup.sh +19 -0
- package/.forge/worktrees/pipeline-e7f78b7a/scripts/bench/tasks/02-pagination/task.md +48 -0
- package/.forge/worktrees/pipeline-e7f78b7a/scripts/bench/tasks/02-pagination/validator.sh +69 -0
- package/.forge/worktrees/pipeline-e7f78b7a/scripts/bench/tasks/03-bug-fix/setup.sh +82 -0
- package/.forge/worktrees/pipeline-e7f78b7a/scripts/bench/tasks/03-bug-fix/task.md +30 -0
- package/.forge/worktrees/pipeline-e7f78b7a/scripts/bench/tasks/03-bug-fix/validator.sh +29 -0
- package/.forge/worktrees/pipeline-e7f78b7a/scripts/verify-usage.ts +178 -0
- package/.forge/worktrees/pipeline-e7f78b7a/src/config/index.ts +129 -0
- package/.forge/worktrees/pipeline-e7f78b7a/src/core/db/database.ts +259 -0
- package/.forge/worktrees/pipeline-e7f78b7a/src/core/memory/strategy.ts +32 -0
- package/.forge/worktrees/pipeline-e7f78b7a/src/core/providers/chat.ts +65 -0
- package/.forge/worktrees/pipeline-e7f78b7a/src/core/providers/registry.ts +60 -0
- package/.forge/worktrees/pipeline-e7f78b7a/src/core/session/manager.ts +190 -0
- package/.forge/worktrees/pipeline-e7f78b7a/src/types/index.ts +129 -0
- package/.forge/worktrees/pipeline-e7f78b7a/start.sh +31 -0
- package/.forge/worktrees/pipeline-e7f78b7a/templates/smith-lead.json +45 -0
- package/.forge/worktrees/pipeline-e7f78b7a/tsconfig.json +42 -0
- package/.forge/worktrees/pipeline-e97c13c7/CLAUDE.md +86 -0
- package/.forge/worktrees/pipeline-e97c13c7/README.md +136 -0
- package/.forge/worktrees/pipeline-e97c13c7/RELEASE_NOTES.md +11 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/agents/route.ts +17 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/auth/[...nextauth]/route.ts +3 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/auth/verify/route.ts +46 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/claude/[id]/route.ts +31 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/claude/[id]/stream/route.ts +63 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/claude/route.ts +28 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/claude-sessions/[projectName]/entries/route.ts +23 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/claude-sessions/[projectName]/live/route.ts +72 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/claude-sessions/[projectName]/route.ts +37 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/claude-sessions/sync/route.ts +17 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/claude-templates/route.ts +145 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/code/route.ts +299 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/delivery/[id]/route.ts +62 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/delivery/route.ts +40 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/detect-cli/route.ts +46 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/docs/route.ts +176 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/docs/sessions/route.ts +54 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/favorites/route.ts +26 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/flows/route.ts +6 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/flows/run/route.ts +19 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/git/route.ts +149 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/help/route.ts +84 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/issue-scanner/route.ts +116 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/logs/route.ts +100 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/mobile-chat/route.ts +115 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/monitor/route.ts +74 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/notifications/route.ts +42 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/notify/test/route.ts +33 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/online/route.ts +40 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/pipelines/[id]/route.ts +41 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/pipelines/route.ts +90 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/plugins/route.ts +75 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/preview/[...path]/route.ts +64 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/preview/route.ts +156 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/project-pipelines/route.ts +91 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/project-sessions/route.ts +61 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/projects/route.ts +26 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/sessions/[id]/chat/route.ts +64 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/sessions/[id]/messages/route.ts +9 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/sessions/[id]/route.ts +17 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/sessions/route.ts +20 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/settings/route.ts +64 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/skills/local/route.ts +228 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/skills/route.ts +182 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/smith-templates/route.ts +81 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/status/route.ts +12 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/tabs/route.ts +25 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/tasks/[id]/route.ts +51 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/tasks/[id]/stream/route.ts +77 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/tasks/link/route.ts +37 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/tasks/route.ts +44 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/tasks/session/route.ts +14 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/telegram/route.ts +23 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/templates/route.ts +6 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/terminal-bell/route.ts +35 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/terminal-cwd/route.ts +19 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/terminal-state/route.ts +15 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/tunnel/route.ts +26 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/upgrade/route.ts +43 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/usage/route.ts +20 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/version/route.ts +78 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/watchers/route.ts +33 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/workspace/[id]/agents/route.ts +35 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/workspace/[id]/memory/route.ts +23 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/workspace/[id]/smith/route.ts +22 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/workspace/[id]/stream/route.ts +28 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/api/workspace/route.ts +100 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/global-error.tsx +21 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/globals.css +52 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/icon.ico +0 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/icon.png +0 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/icon.svg +106 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/layout.tsx +17 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/login/LoginForm.tsx +96 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/login/page.tsx +10 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/mobile/page.tsx +9 -0
- package/.forge/worktrees/pipeline-e97c13c7/app/page.tsx +21 -0
- package/.forge/worktrees/pipeline-e97c13c7/bin/forge-server.mjs +484 -0
- package/.forge/worktrees/pipeline-e97c13c7/check-forge-status.sh +71 -0
- package/.forge/worktrees/pipeline-e97c13c7/cli/mw.ts +579 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/BrowserPanel.tsx +175 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/ChatPanel.tsx +191 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/ClaudeTerminal.tsx +267 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/CodeViewer.tsx +787 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/ConversationEditor.tsx +411 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/ConversationGraphView.tsx +347 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/ConversationTerminalView.tsx +303 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/Dashboard.tsx +807 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/DashboardWrapper.tsx +9 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/DeliveryFlowEditor.tsx +491 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/DeliveryList.tsx +230 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/DeliveryWorkspace.tsx +589 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/DocTerminal.tsx +187 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/DocsViewer.tsx +574 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/HelpDialog.tsx +169 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/HelpTerminal.tsx +141 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/InlinePipelineView.tsx +111 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/LogViewer.tsx +194 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/MarkdownContent.tsx +73 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/MobileView.tsx +385 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/MonitorPanel.tsx +122 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/NewSessionModal.tsx +93 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/NewTaskModal.tsx +492 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/PipelineEditor.tsx +570 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/PipelineView.tsx +1018 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/PluginsPanel.tsx +472 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/ProjectDetail.tsx +1618 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/ProjectList.tsx +108 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/ProjectManager.tsx +401 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/SessionList.tsx +74 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/SessionView.tsx +726 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/SettingsModal.tsx +1647 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/SkillsPanel.tsx +969 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/StatusBar.tsx +99 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/TabBar.tsx +46 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/TaskBoard.tsx +113 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/TaskDetail.tsx +372 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/TerminalLauncher.tsx +398 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/TunnelToggle.tsx +206 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/UsagePanel.tsx +207 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/WebTerminal.tsx +1683 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/WorkspaceTree.tsx +221 -0
- package/.forge/worktrees/pipeline-e97c13c7/components/WorkspaceView.tsx +4048 -0
- package/.forge/worktrees/pipeline-e97c13c7/dev-test.sh +5 -0
- package/.forge/worktrees/pipeline-e97c13c7/docs/Forge_Memory_Layer_Design.docx +0 -0
- package/.forge/worktrees/pipeline-e97c13c7/docs/Forge_Strategy_Research_2026.docx +0 -0
- package/.forge/worktrees/pipeline-e97c13c7/docs/LOCAL-DEPLOY.md +144 -0
- package/.forge/worktrees/pipeline-e97c13c7/docs/roadmap-multi-agent-workflow.md +330 -0
- package/.forge/worktrees/pipeline-e97c13c7/forge-logo.png +0 -0
- package/.forge/worktrees/pipeline-e97c13c7/forge-logo.svg +106 -0
- package/.forge/worktrees/pipeline-e97c13c7/hooks/useSidebarResize.ts +52 -0
- package/.forge/worktrees/pipeline-e97c13c7/install.sh +29 -0
- package/.forge/worktrees/pipeline-e97c13c7/instrumentation.ts +35 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/agents/claude-adapter.ts +104 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/agents/generic-adapter.ts +64 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/agents/index.ts +245 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/agents/types.ts +70 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/artifacts.ts +106 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/auth.ts +62 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/builtin-plugins/docker.yaml +70 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/builtin-plugins/http.yaml +66 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/builtin-plugins/jenkins.yaml +92 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/builtin-plugins/llm-vision.yaml +85 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/builtin-plugins/playwright.yaml +111 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/builtin-plugins/shell-command.yaml +60 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/builtin-plugins/slack.yaml +48 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/builtin-plugins/webhook.yaml +56 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/claude-process.ts +352 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/claude-sessions.ts +266 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/claude-templates.ts +227 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/cloudflared.ts +424 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/crypto.ts +67 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/delivery.ts +787 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/dirs.ts +99 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/flows.ts +86 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/forge-mcp-server.ts +717 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/forge-skills/forge-inbox.md +38 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/forge-skills/forge-send.md +47 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/forge-skills/forge-status.md +32 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/forge-skills/forge-workspace-sync.md +37 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/help-docs/00-overview.md +40 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/help-docs/01-settings.md +194 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/help-docs/02-telegram.md +41 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/help-docs/03-tunnel.md +31 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/help-docs/04-tasks.md +52 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/help-docs/05-pipelines.md +460 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/help-docs/06-skills.md +43 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/help-docs/07-projects.md +73 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/help-docs/08-rules.md +53 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/help-docs/09-issue-autofix.md +55 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/help-docs/10-troubleshooting.md +89 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/help-docs/11-workspace.md +810 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/help-docs/CLAUDE.md +62 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/init.ts +266 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/issue-scanner.ts +298 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/logger.ts +79 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/notifications.ts +75 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/notify.ts +108 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/password.ts +97 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/pipeline-scheduler.ts +373 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/pipeline.ts +1438 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/plugins/executor.ts +347 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/plugins/registry.ts +228 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/plugins/types.ts +103 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/project-sessions.ts +53 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/projects.ts +86 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/session-manager.ts +156 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/session-utils.ts +53 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/session-watcher.ts +345 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/settings.ts +195 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/skills.ts +458 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/task-manager.ts +949 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/telegram-bot.ts +1477 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/telegram-standalone.ts +83 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/terminal-server.ts +70 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/terminal-standalone.ts +421 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/usage-scanner.ts +249 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/workspace/__tests__/state-machine.test.ts +388 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/workspace/__tests__/workspace.test.ts +311 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/workspace/agent-bus.ts +416 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/workspace/agent-worker.ts +655 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/workspace/backends/api-backend.ts +262 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/workspace/backends/cli-backend.ts +491 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/workspace/index.ts +82 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/workspace/manager.ts +136 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/workspace/orchestrator.ts +3400 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/workspace/persistence.ts +309 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/workspace/presets.ts +649 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/workspace/requests.ts +287 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/workspace/session-monitor.ts +240 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/workspace/skill-installer.ts +275 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/workspace/smith-memory.ts +498 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/workspace/types.ts +241 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/workspace/watch-manager.ts +560 -0
- package/.forge/worktrees/pipeline-e97c13c7/lib/workspace-standalone.ts +911 -0
- package/.forge/worktrees/pipeline-e97c13c7/middleware.ts +51 -0
- package/.forge/worktrees/pipeline-e97c13c7/next.config.ts +26 -0
- package/.forge/worktrees/pipeline-e97c13c7/package.json +74 -0
- package/.forge/worktrees/pipeline-e97c13c7/pnpm-lock.yaml +3719 -0
- package/.forge/worktrees/pipeline-e97c13c7/pnpm-workspace.yaml +1 -0
- package/.forge/worktrees/pipeline-e97c13c7/postcss.config.mjs +7 -0
- package/.forge/worktrees/pipeline-e97c13c7/publish.sh +133 -0
- package/.forge/worktrees/pipeline-e97c13c7/scripts/bench/README.md +66 -0
- package/.forge/worktrees/pipeline-e97c13c7/scripts/bench/results/.gitignore +2 -0
- package/.forge/worktrees/pipeline-e97c13c7/scripts/bench/run.ts +635 -0
- package/.forge/worktrees/pipeline-e97c13c7/scripts/bench/tasks/01-text-utils/task.md +26 -0
- package/.forge/worktrees/pipeline-e97c13c7/scripts/bench/tasks/01-text-utils/validator.sh +46 -0
- package/.forge/worktrees/pipeline-e97c13c7/scripts/bench/tasks/02-pagination/setup.sh +19 -0
- package/.forge/worktrees/pipeline-e97c13c7/scripts/bench/tasks/02-pagination/task.md +48 -0
- package/.forge/worktrees/pipeline-e97c13c7/scripts/bench/tasks/02-pagination/validator.sh +69 -0
- package/.forge/worktrees/pipeline-e97c13c7/scripts/bench/tasks/03-bug-fix/setup.sh +82 -0
- package/.forge/worktrees/pipeline-e97c13c7/scripts/bench/tasks/03-bug-fix/task.md +30 -0
- package/.forge/worktrees/pipeline-e97c13c7/scripts/bench/tasks/03-bug-fix/validator.sh +29 -0
- package/.forge/worktrees/pipeline-e97c13c7/scripts/verify-usage.ts +178 -0
- package/.forge/worktrees/pipeline-e97c13c7/src/config/index.ts +129 -0
- package/.forge/worktrees/pipeline-e97c13c7/src/core/db/database.ts +259 -0
- package/.forge/worktrees/pipeline-e97c13c7/src/core/memory/strategy.ts +32 -0
- package/.forge/worktrees/pipeline-e97c13c7/src/core/providers/chat.ts +65 -0
- package/.forge/worktrees/pipeline-e97c13c7/src/core/providers/registry.ts +60 -0
- package/.forge/worktrees/pipeline-e97c13c7/src/core/session/manager.ts +190 -0
- package/.forge/worktrees/pipeline-e97c13c7/src/types/index.ts +129 -0
- package/.forge/worktrees/pipeline-e97c13c7/start.sh +31 -0
- package/.forge/worktrees/pipeline-e97c13c7/templates/smith-lead.json +45 -0
- package/.forge/worktrees/pipeline-e97c13c7/tsconfig.json +42 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/CLAUDE.md +86 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/README.md +136 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/RELEASE_NOTES.md +11 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/agents/route.ts +17 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/auth/[...nextauth]/route.ts +3 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/auth/verify/route.ts +46 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/claude/[id]/route.ts +31 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/claude/[id]/stream/route.ts +63 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/claude/route.ts +28 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/claude-sessions/[projectName]/entries/route.ts +23 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/claude-sessions/[projectName]/live/route.ts +72 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/claude-sessions/[projectName]/route.ts +37 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/claude-sessions/sync/route.ts +17 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/claude-templates/route.ts +145 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/code/route.ts +299 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/delivery/[id]/route.ts +62 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/delivery/route.ts +40 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/detect-cli/route.ts +46 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/docs/route.ts +176 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/docs/sessions/route.ts +54 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/favorites/route.ts +26 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/flows/route.ts +6 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/flows/run/route.ts +19 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/git/route.ts +149 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/help/route.ts +84 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/issue-scanner/route.ts +116 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/logs/route.ts +100 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/mobile-chat/route.ts +115 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/monitor/route.ts +74 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/notifications/route.ts +42 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/notify/test/route.ts +33 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/online/route.ts +40 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/pipelines/[id]/route.ts +41 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/pipelines/route.ts +90 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/plugins/route.ts +75 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/preview/[...path]/route.ts +64 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/preview/route.ts +156 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/project-pipelines/route.ts +91 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/project-sessions/route.ts +61 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/projects/route.ts +26 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/sessions/[id]/chat/route.ts +64 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/sessions/[id]/messages/route.ts +9 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/sessions/[id]/route.ts +17 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/sessions/route.ts +20 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/settings/route.ts +64 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/skills/local/route.ts +228 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/skills/route.ts +182 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/smith-templates/route.ts +81 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/status/route.ts +12 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/tabs/route.ts +25 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/tasks/[id]/route.ts +51 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/tasks/[id]/stream/route.ts +77 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/tasks/link/route.ts +37 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/tasks/route.ts +44 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/tasks/session/route.ts +14 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/telegram/route.ts +23 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/templates/route.ts +6 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/terminal-bell/route.ts +35 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/terminal-cwd/route.ts +19 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/terminal-state/route.ts +15 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/tunnel/route.ts +26 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/upgrade/route.ts +43 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/usage/route.ts +20 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/version/route.ts +78 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/watchers/route.ts +33 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/workspace/[id]/agents/route.ts +35 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/workspace/[id]/memory/route.ts +23 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/workspace/[id]/smith/route.ts +22 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/workspace/[id]/stream/route.ts +28 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/api/workspace/route.ts +100 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/global-error.tsx +21 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/globals.css +52 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/icon.ico +0 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/icon.png +0 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/icon.svg +106 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/layout.tsx +17 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/login/LoginForm.tsx +96 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/login/page.tsx +10 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/mobile/page.tsx +9 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/app/page.tsx +21 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/bin/forge-server.mjs +484 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/check-forge-status.sh +71 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/cli/mw.ts +579 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/BrowserPanel.tsx +175 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/ChatPanel.tsx +191 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/ClaudeTerminal.tsx +267 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/CodeViewer.tsx +787 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/ConversationEditor.tsx +411 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/ConversationGraphView.tsx +347 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/ConversationTerminalView.tsx +303 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/Dashboard.tsx +807 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/DashboardWrapper.tsx +9 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/DeliveryFlowEditor.tsx +491 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/DeliveryList.tsx +230 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/DeliveryWorkspace.tsx +589 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/DocTerminal.tsx +187 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/DocsViewer.tsx +574 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/HelpDialog.tsx +169 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/HelpTerminal.tsx +141 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/InlinePipelineView.tsx +111 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/LogViewer.tsx +194 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/MarkdownContent.tsx +73 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/MobileView.tsx +385 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/MonitorPanel.tsx +122 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/NewSessionModal.tsx +93 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/NewTaskModal.tsx +492 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/PipelineEditor.tsx +570 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/PipelineView.tsx +1018 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/PluginsPanel.tsx +472 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/ProjectDetail.tsx +1618 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/ProjectList.tsx +108 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/ProjectManager.tsx +401 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/SessionList.tsx +74 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/SessionView.tsx +726 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/SettingsModal.tsx +1647 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/SkillsPanel.tsx +969 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/StatusBar.tsx +99 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/TabBar.tsx +46 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/TaskBoard.tsx +113 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/TaskDetail.tsx +372 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/TerminalLauncher.tsx +398 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/TunnelToggle.tsx +206 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/UsagePanel.tsx +207 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/WebTerminal.tsx +1683 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/WorkspaceTree.tsx +221 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/components/WorkspaceView.tsx +4048 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/dev-test.sh +5 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/docs/Forge_Memory_Layer_Design.docx +0 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/docs/Forge_Strategy_Research_2026.docx +0 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/docs/LOCAL-DEPLOY.md +144 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/docs/roadmap-multi-agent-workflow.md +330 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/forge-logo.png +0 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/forge-logo.svg +106 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/hooks/useSidebarResize.ts +52 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/install.sh +29 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/instrumentation.ts +35 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/agents/claude-adapter.ts +104 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/agents/generic-adapter.ts +64 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/agents/index.ts +245 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/agents/types.ts +70 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/artifacts.ts +106 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/auth.ts +62 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/builtin-plugins/docker.yaml +70 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/builtin-plugins/http.yaml +66 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/builtin-plugins/jenkins.yaml +92 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/builtin-plugins/llm-vision.yaml +85 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/builtin-plugins/playwright.yaml +111 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/builtin-plugins/shell-command.yaml +60 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/builtin-plugins/slack.yaml +48 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/builtin-plugins/webhook.yaml +56 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/claude-process.ts +352 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/claude-sessions.ts +266 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/claude-templates.ts +227 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/cloudflared.ts +424 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/crypto.ts +67 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/delivery.ts +787 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/dirs.ts +99 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/flows.ts +86 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/forge-mcp-server.ts +717 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/forge-skills/forge-inbox.md +38 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/forge-skills/forge-send.md +47 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/forge-skills/forge-status.md +32 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/forge-skills/forge-workspace-sync.md +37 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/help-docs/00-overview.md +40 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/help-docs/01-settings.md +194 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/help-docs/02-telegram.md +41 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/help-docs/03-tunnel.md +31 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/help-docs/04-tasks.md +52 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/help-docs/05-pipelines.md +460 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/help-docs/06-skills.md +43 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/help-docs/07-projects.md +73 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/help-docs/08-rules.md +53 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/help-docs/09-issue-autofix.md +55 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/help-docs/10-troubleshooting.md +89 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/help-docs/11-workspace.md +810 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/help-docs/CLAUDE.md +62 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/init.ts +266 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/issue-scanner.ts +298 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/logger.ts +79 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/notifications.ts +75 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/notify.ts +108 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/password.ts +97 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/pipeline-scheduler.ts +373 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/pipeline.ts +1441 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/plugins/executor.ts +347 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/plugins/registry.ts +228 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/plugins/types.ts +103 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/project-sessions.ts +53 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/projects.ts +86 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/session-manager.ts +156 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/session-utils.ts +53 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/session-watcher.ts +345 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/settings.ts +195 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/skills.ts +458 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/task-manager.ts +949 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/telegram-bot.ts +1477 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/telegram-standalone.ts +83 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/terminal-server.ts +70 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/terminal-standalone.ts +421 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/usage-scanner.ts +249 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/workspace/__tests__/state-machine.test.ts +388 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/workspace/__tests__/workspace.test.ts +311 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/workspace/agent-bus.ts +416 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/workspace/agent-worker.ts +655 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/workspace/backends/api-backend.ts +262 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/workspace/backends/cli-backend.ts +491 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/workspace/index.ts +82 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/workspace/manager.ts +136 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/workspace/orchestrator.ts +3400 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/workspace/persistence.ts +309 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/workspace/presets.ts +649 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/workspace/requests.ts +287 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/workspace/session-monitor.ts +240 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/workspace/skill-installer.ts +275 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/workspace/smith-memory.ts +498 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/workspace/types.ts +241 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/workspace/watch-manager.ts +560 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/lib/workspace-standalone.ts +911 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/middleware.ts +51 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/next.config.ts +26 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/package.json +74 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/pnpm-lock.yaml +3719 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/pnpm-workspace.yaml +1 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/postcss.config.mjs +7 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/publish.sh +133 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/scripts/bench/README.md +66 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/scripts/bench/results/.gitignore +2 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/scripts/bench/run.ts +635 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/scripts/bench/tasks/01-text-utils/task.md +26 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/scripts/bench/tasks/01-text-utils/validator.sh +46 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/scripts/bench/tasks/02-pagination/setup.sh +19 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/scripts/bench/tasks/02-pagination/task.md +48 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/scripts/bench/tasks/02-pagination/validator.sh +69 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/scripts/bench/tasks/03-bug-fix/setup.sh +82 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/scripts/bench/tasks/03-bug-fix/task.md +30 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/scripts/bench/tasks/03-bug-fix/validator.sh +29 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/scripts/verify-usage.ts +178 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/src/config/index.ts +129 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/src/core/db/database.ts +259 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/src/core/memory/strategy.ts +32 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/src/core/providers/chat.ts +65 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/src/core/providers/registry.ts +60 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/src/core/session/manager.ts +190 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/src/types/index.ts +129 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/start.sh +31 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/templates/smith-lead.json +45 -0
- package/.forge/worktrees/pipeline-ecd7cb0f/tsconfig.json +42 -0
- package/RELEASE_NOTES.md +30 -5
- package/app/api/workspace/[id]/stream/route.ts +3 -0
- package/app/api/workspace/route.ts +20 -41
- package/app/mobile/page.tsx +2 -1
- package/app/page.tsx +2 -1
- package/components/WebTerminal.tsx +27 -1
- package/lib/claude-process.ts +14 -5
- package/lib/forge-mcp-server.ts +20 -5
- package/lib/help-docs/05-pipelines.md +44 -2
- package/lib/pipeline.ts +181 -24
- package/lib/task-manager.ts +5 -3
- package/lib/terminal-standalone.ts +2 -2
- package/lib/workspace/index.ts +3 -1
- package/lib/workspace/manager.ts +1 -1
- package/lib/workspace/orchestrator.ts +23 -8
- package/lib/workspace-standalone.ts +67 -0
- package/middleware.ts +2 -2
- package/next-env.d.ts +1 -1
- package/package.json +1 -1
- package/start.sh +1 -0
|
@@ -0,0 +1,911 @@
|
|
|
1
|
+
#!/usr/bin/env npx tsx
|
|
2
|
+
/**
|
|
3
|
+
* Workspace Daemon — standalone process for managing workspace agent orchestrators.
|
|
4
|
+
*
|
|
5
|
+
* Runs as an independent HTTP server (like terminal-standalone.ts).
|
|
6
|
+
* Next.js API routes proxy requests here.
|
|
7
|
+
*
|
|
8
|
+
* Usage: npx tsx lib/workspace-standalone.ts [--forge-port=8403]
|
|
9
|
+
*
|
|
10
|
+
* Env:
|
|
11
|
+
* WORKSPACE_PORT — HTTP port (default: webPort + 2 = 8405)
|
|
12
|
+
* FORGE_DATA_DIR — data directory
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { createServer, type IncomingMessage, type ServerResponse } from 'node:http';
|
|
16
|
+
import { readdirSync, statSync } from 'node:fs';
|
|
17
|
+
import { join, resolve } from 'node:path';
|
|
18
|
+
import { homedir } from 'node:os';
|
|
19
|
+
import { WorkspaceOrchestrator, type OrchestratorEvent } from './workspace/orchestrator';
|
|
20
|
+
import { loadWorkspace, saveWorkspace, findWorkspaceByProject } from './workspace/persistence';
|
|
21
|
+
import { installForgeSkills, applyProfileToProject } from './workspace/skill-installer';
|
|
22
|
+
import {
|
|
23
|
+
loadMemory, formatMemoryForDisplay, getMemoryStats,
|
|
24
|
+
addObservation, addSessionSummary,
|
|
25
|
+
} from './workspace/smith-memory';
|
|
26
|
+
import type { WorkspaceAgentConfig, WorkspaceState, BusMessage } from './workspace/types';
|
|
27
|
+
import { execSync } from 'node:child_process';
|
|
28
|
+
|
|
29
|
+
// ─── Config ──────────────────────────────────────────────
|
|
30
|
+
|
|
31
|
+
const PORT = Number(process.env.WORKSPACE_PORT) || 8405;
|
|
32
|
+
const FORGE_PORT = Number(process.env.PORT) || 8403;
|
|
33
|
+
const MAX_ACTIVE = 5;
|
|
34
|
+
|
|
35
|
+
// ─── State ───────────────────────────────────────────────
|
|
36
|
+
|
|
37
|
+
const orchestrators = new Map<string, WorkspaceOrchestrator>();
|
|
38
|
+
const sseClients = new Map<string, Set<ServerResponse>>();
|
|
39
|
+
const startTime = Date.now();
|
|
40
|
+
|
|
41
|
+
// ─── Orchestrator Lifecycle ──────────────────────────────
|
|
42
|
+
|
|
43
|
+
function getOrchestrator(id: string): WorkspaceOrchestrator | null {
|
|
44
|
+
return orchestrators.get(id) || null;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function loadOrchestrator(id: string): WorkspaceOrchestrator {
|
|
48
|
+
const existing = orchestrators.get(id);
|
|
49
|
+
if (existing) return existing;
|
|
50
|
+
|
|
51
|
+
const state = loadWorkspace(id);
|
|
52
|
+
if (!state) throw new Error('Workspace not found');
|
|
53
|
+
|
|
54
|
+
const orch = new WorkspaceOrchestrator(state.id, state.projectPath, state.projectName);
|
|
55
|
+
if (state.agents.length > 0) {
|
|
56
|
+
orch.loadSnapshot({
|
|
57
|
+
agents: state.agents,
|
|
58
|
+
agentStates: state.agentStates,
|
|
59
|
+
busLog: state.busLog,
|
|
60
|
+
busOutbox: state.busOutbox,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Wire up SSE broadcasting
|
|
65
|
+
orch.on('event', (event: OrchestratorEvent) => {
|
|
66
|
+
broadcastSSE(id, event);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
orchestrators.set(id, orch);
|
|
70
|
+
// Loaded silently — debug only if needed
|
|
71
|
+
return orch;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function unloadOrchestrator(id: string): void {
|
|
75
|
+
const orch = orchestrators.get(id);
|
|
76
|
+
if (!orch) return;
|
|
77
|
+
orch.shutdown();
|
|
78
|
+
orchestrators.delete(id);
|
|
79
|
+
// Close SSE connections for this workspace
|
|
80
|
+
const clients = sseClients.get(id);
|
|
81
|
+
if (clients) {
|
|
82
|
+
for (const res of clients) {
|
|
83
|
+
try { res.end(); } catch {}
|
|
84
|
+
}
|
|
85
|
+
sseClients.delete(id);
|
|
86
|
+
}
|
|
87
|
+
// Unloaded silently
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function evictIdleWorkspace(): boolean {
|
|
91
|
+
for (const [id, orch] of orchestrators) {
|
|
92
|
+
const states = orch.getAllAgentStates();
|
|
93
|
+
const hasRunning = Object.values(states).some(s =>
|
|
94
|
+
s.taskStatus === 'running' || s.smithStatus === 'active'
|
|
95
|
+
);
|
|
96
|
+
if (!hasRunning) {
|
|
97
|
+
unloadOrchestrator(id);
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// ─── SSE Management ──────────────────────────────────────
|
|
105
|
+
|
|
106
|
+
function addSSEClient(workspaceId: string, res: ServerResponse): void {
|
|
107
|
+
if (!sseClients.has(workspaceId)) sseClients.set(workspaceId, new Set());
|
|
108
|
+
sseClients.get(workspaceId)!.add(res);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
function removeSSEClient(workspaceId: string, res: ServerResponse): void {
|
|
112
|
+
sseClients.get(workspaceId)?.delete(res);
|
|
113
|
+
if (sseClients.get(workspaceId)?.size === 0) sseClients.delete(workspaceId);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function broadcastSSE(workspaceId: string, event: OrchestratorEvent): void {
|
|
117
|
+
const clients = sseClients.get(workspaceId);
|
|
118
|
+
if (!clients) return;
|
|
119
|
+
const data = `data: ${JSON.stringify(event)}\n\n`;
|
|
120
|
+
for (const res of clients) {
|
|
121
|
+
try { res.write(data); } catch { removeSSEClient(workspaceId, res); }
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// ─── HTTP Helpers ────────────────────────────────────────
|
|
126
|
+
|
|
127
|
+
function readBody(req: IncomingMessage): Promise<string> {
|
|
128
|
+
return new Promise((resolve, reject) => {
|
|
129
|
+
const chunks: Buffer[] = [];
|
|
130
|
+
req.on('data', (c: Buffer) => chunks.push(c));
|
|
131
|
+
req.on('end', () => resolve(Buffer.concat(chunks).toString()));
|
|
132
|
+
req.on('error', reject);
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function json(res: ServerResponse, data: unknown, status = 200): void {
|
|
137
|
+
res.writeHead(status, { 'Content-Type': 'application/json' });
|
|
138
|
+
res.end(JSON.stringify(data));
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
function jsonError(res: ServerResponse, msg: string, status = 400): void {
|
|
142
|
+
json(res, { error: msg }, status);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
function parseUrl(url: string): { path: string; query: URLSearchParams } {
|
|
146
|
+
const u = new URL(url, 'http://localhost');
|
|
147
|
+
return { path: u.pathname, query: u.searchParams };
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// ─── Route: Agent Operations ─────────────────────────────
|
|
151
|
+
|
|
152
|
+
async function handleAgentsPost(id: string, body: any, res: ServerResponse): Promise<void> {
|
|
153
|
+
let orch: WorkspaceOrchestrator;
|
|
154
|
+
try {
|
|
155
|
+
orch = loadOrchestrator(id);
|
|
156
|
+
} catch (err: any) {
|
|
157
|
+
return jsonError(res, err.message, err.message.includes('not found') ? 404 : 429);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
const { action, agentId, config, content, input } = body;
|
|
161
|
+
|
|
162
|
+
try {
|
|
163
|
+
switch (action) {
|
|
164
|
+
case 'add': {
|
|
165
|
+
if (!config) return jsonError(res, 'config required');
|
|
166
|
+
try {
|
|
167
|
+
orch.addAgent(config as WorkspaceAgentConfig);
|
|
168
|
+
return json(res, { ok: true });
|
|
169
|
+
} catch (err: any) {
|
|
170
|
+
return jsonError(res, err.message);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
case 'create_pipeline': {
|
|
174
|
+
const { createDevPipeline } = require('./workspace/presets');
|
|
175
|
+
const pipeline = createDevPipeline();
|
|
176
|
+
for (const cfg of pipeline) orch.addAgent(cfg);
|
|
177
|
+
return json(res, { ok: true, agents: pipeline.length });
|
|
178
|
+
}
|
|
179
|
+
case 'remove': {
|
|
180
|
+
if (!agentId) return jsonError(res, 'agentId required');
|
|
181
|
+
orch.removeAgent(agentId);
|
|
182
|
+
return json(res, { ok: true });
|
|
183
|
+
}
|
|
184
|
+
case 'update': {
|
|
185
|
+
if (!agentId || !config) return jsonError(res, 'agentId and config required');
|
|
186
|
+
try {
|
|
187
|
+
orch.updateAgentConfig(agentId, config as WorkspaceAgentConfig);
|
|
188
|
+
return json(res, { ok: true });
|
|
189
|
+
} catch (err: any) {
|
|
190
|
+
return jsonError(res, err.message);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
case 'agent_done': {
|
|
194
|
+
// Called by Claude Code Stop hook — agent finished a turn
|
|
195
|
+
if (!agentId) return jsonError(res, 'agentId required');
|
|
196
|
+
orch.handleHookDone(agentId);
|
|
197
|
+
return json(res, { ok: true });
|
|
198
|
+
}
|
|
199
|
+
case 'run': {
|
|
200
|
+
if (!agentId) return jsonError(res, 'agentId required');
|
|
201
|
+
if (!orch.isDaemonActive()) return jsonError(res, 'Start daemon first before running agents');
|
|
202
|
+
try {
|
|
203
|
+
await orch.runAgent(agentId, input, true); // force=true: manual trigger skips dep check
|
|
204
|
+
return json(res, { ok: true, status: 'started' });
|
|
205
|
+
} catch (err: any) {
|
|
206
|
+
return jsonError(res, err.message);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
case 'run_all': {
|
|
210
|
+
orch.runAll().catch(err => {
|
|
211
|
+
console.error('[workspace] runAll error:', err.message);
|
|
212
|
+
});
|
|
213
|
+
return json(res, { ok: true, status: 'started' });
|
|
214
|
+
}
|
|
215
|
+
case 'complete_input': {
|
|
216
|
+
if (!agentId || !content) return jsonError(res, 'agentId and content required');
|
|
217
|
+
orch.completeInput(agentId, content);
|
|
218
|
+
return json(res, { ok: true });
|
|
219
|
+
}
|
|
220
|
+
case 'pause': {
|
|
221
|
+
if (!agentId) return jsonError(res, 'agentId required');
|
|
222
|
+
orch.pauseAgent(agentId);
|
|
223
|
+
return json(res, { ok: true });
|
|
224
|
+
}
|
|
225
|
+
case 'resume': {
|
|
226
|
+
if (!agentId) return jsonError(res, 'agentId required');
|
|
227
|
+
orch.resumeAgent(agentId);
|
|
228
|
+
return json(res, { ok: true });
|
|
229
|
+
}
|
|
230
|
+
case 'stop': {
|
|
231
|
+
if (!agentId) return jsonError(res, 'agentId required');
|
|
232
|
+
orch.stopAgent(agentId);
|
|
233
|
+
return json(res, { ok: true });
|
|
234
|
+
}
|
|
235
|
+
case 'mark_done': {
|
|
236
|
+
if (!agentId) return jsonError(res, 'agentId required');
|
|
237
|
+
orch.markAgentDone(agentId, body.notify !== false);
|
|
238
|
+
return json(res, { ok: true });
|
|
239
|
+
}
|
|
240
|
+
case 'mark_failed': {
|
|
241
|
+
if (!agentId) return jsonError(res, 'agentId required');
|
|
242
|
+
orch.markAgentFailed(agentId, body.notify !== false);
|
|
243
|
+
return json(res, { ok: true });
|
|
244
|
+
}
|
|
245
|
+
case 'retry': {
|
|
246
|
+
if (!agentId) return jsonError(res, 'agentId required');
|
|
247
|
+
if (!orch.isDaemonActive()) return jsonError(res, 'Start daemon first before retrying agents');
|
|
248
|
+
const retryState = orch.getAgentState(agentId);
|
|
249
|
+
if (!retryState) return jsonError(res, 'Agent not found');
|
|
250
|
+
if (retryState.taskStatus === 'running') return jsonError(res, 'Agent is already running');
|
|
251
|
+
if (retryState.taskStatus !== 'failed') return jsonError(res, `Agent is ${retryState.taskStatus}, not failed`);
|
|
252
|
+
try {
|
|
253
|
+
console.log(`[workspace] Retry ${agentId}: smith=${retryState.smithStatus}, task=${retryState.taskStatus}`);
|
|
254
|
+
await orch.runAgent(agentId, undefined, true);
|
|
255
|
+
return json(res, { ok: true, status: 'retrying' });
|
|
256
|
+
} catch (err: any) {
|
|
257
|
+
console.error(`[workspace] Retry failed for ${agentId}:`, err.message);
|
|
258
|
+
return jsonError(res, err.message);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
case 'set_tmux_session': {
|
|
262
|
+
if (!agentId) return jsonError(res, 'agentId required');
|
|
263
|
+
const { sessionName } = body;
|
|
264
|
+
orch.setTmuxSession(agentId, sessionName);
|
|
265
|
+
return json(res, { ok: true });
|
|
266
|
+
}
|
|
267
|
+
case 'reset': {
|
|
268
|
+
if (!agentId) return jsonError(res, 'agentId required');
|
|
269
|
+
orch.resetAgent(agentId);
|
|
270
|
+
// If daemon is active, re-enter daemon mode for this agent
|
|
271
|
+
if (orch.isDaemonActive()) {
|
|
272
|
+
orch.restartAgentDaemon(agentId);
|
|
273
|
+
}
|
|
274
|
+
return json(res, { ok: true });
|
|
275
|
+
}
|
|
276
|
+
case 'open_terminal': {
|
|
277
|
+
if (!agentId) return jsonError(res, 'agentId required');
|
|
278
|
+
const agentState = orch.getAgentState(agentId);
|
|
279
|
+
const agentConfig = orch.getSnapshot().agents.find(a => a.id === agentId);
|
|
280
|
+
if (!agentState || !agentConfig) return jsonError(res, 'Agent not found', 404);
|
|
281
|
+
|
|
282
|
+
// Resolve launch info using shared logic (same as VibeCoding terminal)
|
|
283
|
+
let launchInfo: any = { cliCmd: 'claude', cliType: 'claude-code', supportsSession: true };
|
|
284
|
+
try {
|
|
285
|
+
const { resolveTerminalLaunch, clearAgentCache } = await import('./agents/index.js');
|
|
286
|
+
clearAgentCache(); // ensure fresh settings are read
|
|
287
|
+
launchInfo = resolveTerminalLaunch(agentConfig.agentId);
|
|
288
|
+
} catch {}
|
|
289
|
+
|
|
290
|
+
// resolveOnly: return launch info + current session ID (no side effects)
|
|
291
|
+
if (body.resolveOnly) {
|
|
292
|
+
let currentSessionId: string | null = null;
|
|
293
|
+
if (agentConfig.primary) {
|
|
294
|
+
try {
|
|
295
|
+
const { getFixedSession } = await import('./project-sessions.js');
|
|
296
|
+
currentSessionId = getFixedSession(orch.projectPath) || null;
|
|
297
|
+
} catch {}
|
|
298
|
+
} else {
|
|
299
|
+
currentSessionId = agentConfig.boundSessionId || null;
|
|
300
|
+
}
|
|
301
|
+
return json(res, { ok: true, ...launchInfo, currentSessionId });
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
// Primary agent: always return its fixed session, no selection
|
|
305
|
+
if (agentConfig.primary && agentState.tmuxSession) {
|
|
306
|
+
return json(res, { ok: true, primary: true, tmuxSession: agentState.tmuxSession, fixedSession: true, ...launchInfo });
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
// No tmux has-session liveness check — it adds latency with no benefit.
|
|
310
|
+
// If the session is dead, openTerminalSession will recreate it anyway.
|
|
311
|
+
|
|
312
|
+
// Ensure tmux session exists (creates if needed, no 3s startup delay)
|
|
313
|
+
// forceRestart: kill existing tmux so launch script is rewritten with current boundSessionId
|
|
314
|
+
const tmuxSession = await orch.openTerminalSession(agentId, body.forceRestart === true);
|
|
315
|
+
|
|
316
|
+
orch.setManualMode(agentId);
|
|
317
|
+
// Skills call Next.js API (/api/workspace/.../smith), so use FORGE_PORT not daemon PORT
|
|
318
|
+
const result = installForgeSkills(orch.projectPath, id, agentId, FORGE_PORT);
|
|
319
|
+
|
|
320
|
+
return json(res, {
|
|
321
|
+
ok: true,
|
|
322
|
+
primary: agentConfig.primary || undefined,
|
|
323
|
+
fixedSession: agentConfig.primary || undefined,
|
|
324
|
+
skillsInstalled: result.installed,
|
|
325
|
+
agentId,
|
|
326
|
+
label: agentConfig.label,
|
|
327
|
+
tmuxSession: tmuxSession || undefined,
|
|
328
|
+
...launchInfo,
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
case 'close_terminal': {
|
|
332
|
+
if (!agentId) return jsonError(res, 'agentId required');
|
|
333
|
+
if (body.kill) {
|
|
334
|
+
// Kill: clear tmuxSession → message loop falls back to headless (claude -p)
|
|
335
|
+
orch.clearTmuxSession(agentId);
|
|
336
|
+
console.log(`[workspace] ${agentId}: terminal killed, falling back to headless`);
|
|
337
|
+
}
|
|
338
|
+
// Suspend: tmuxSession stays, agent can reattach later
|
|
339
|
+
return json(res, { ok: true });
|
|
340
|
+
}
|
|
341
|
+
case 'create_ticket': {
|
|
342
|
+
if (!agentId || !content) return jsonError(res, 'agentId (from) and content required');
|
|
343
|
+
const targetId = body.targetId;
|
|
344
|
+
if (!targetId) return jsonError(res, 'targetId required');
|
|
345
|
+
const causedByMsg = body.causedByMessageId ? orch.getBus().getLog().find(m => m.id === body.causedByMessageId) : undefined;
|
|
346
|
+
const causedBy = causedByMsg ? { messageId: causedByMsg.id, from: causedByMsg.from, to: causedByMsg.to } : undefined;
|
|
347
|
+
const ticket = orch.getBus().createTicket(agentId, targetId, body.ticketAction || 'bug_report', content, body.files, causedBy);
|
|
348
|
+
return json(res, { ok: true, ticketId: ticket.id });
|
|
349
|
+
}
|
|
350
|
+
case 'update_ticket': {
|
|
351
|
+
const { messageId, ticketStatus } = body;
|
|
352
|
+
if (!messageId || !ticketStatus) return jsonError(res, 'messageId and ticketStatus required');
|
|
353
|
+
orch.getBus().updateTicketStatus(messageId, ticketStatus);
|
|
354
|
+
return json(res, { ok: true });
|
|
355
|
+
}
|
|
356
|
+
case 'message': {
|
|
357
|
+
if (!agentId || !content) return jsonError(res, 'agentId and content required');
|
|
358
|
+
orch.sendMessageToAgent(agentId, content);
|
|
359
|
+
return json(res, { ok: true });
|
|
360
|
+
}
|
|
361
|
+
case 'approve': {
|
|
362
|
+
if (!agentId) return jsonError(res, 'agentId required');
|
|
363
|
+
orch.approveAgent(agentId);
|
|
364
|
+
return json(res, { ok: true });
|
|
365
|
+
}
|
|
366
|
+
case 'reject': {
|
|
367
|
+
if (!agentId) return jsonError(res, 'agentId required');
|
|
368
|
+
orch.rejectApproval(agentId);
|
|
369
|
+
return json(res, { ok: true });
|
|
370
|
+
}
|
|
371
|
+
case 'retry_message': {
|
|
372
|
+
const { messageId } = body;
|
|
373
|
+
if (!messageId) return jsonError(res, 'messageId required');
|
|
374
|
+
if (!orch.isDaemonActive()) return jsonError(res, 'Start daemon first before retrying messages');
|
|
375
|
+
const msg = orch.getBus().retryMessage(messageId);
|
|
376
|
+
if (!msg) return jsonError(res, 'Message not found or already pending');
|
|
377
|
+
orch.emit('event', { type: 'bus_message_status', messageId: msg.id, status: 'pending' });
|
|
378
|
+
return json(res, { ok: true, messageId: msg.id, action: msg.payload.action });
|
|
379
|
+
}
|
|
380
|
+
case 'abort_message': {
|
|
381
|
+
const { messageId } = body;
|
|
382
|
+
if (!messageId) return jsonError(res, 'messageId required');
|
|
383
|
+
const abortMsg = orch.getBus().abortMessage(messageId);
|
|
384
|
+
if (abortMsg) {
|
|
385
|
+
orch.emit('event', { type: 'bus_message_status', messageId, status: 'failed' });
|
|
386
|
+
}
|
|
387
|
+
return json(res, { ok: true, messageId, aborted: !!abortMsg });
|
|
388
|
+
}
|
|
389
|
+
case 'approve_message': {
|
|
390
|
+
const { messageId } = body;
|
|
391
|
+
if (!messageId) return jsonError(res, 'messageId required');
|
|
392
|
+
const approveMsg = orch.getBus().getLog().find(m => m.id === messageId);
|
|
393
|
+
if (!approveMsg) return jsonError(res, 'Message not found');
|
|
394
|
+
if (approveMsg.status !== 'pending_approval') return jsonError(res, 'Message is not pending approval');
|
|
395
|
+
if (body.content) approveMsg.payload.content = body.content;
|
|
396
|
+
approveMsg.status = 'pending';
|
|
397
|
+
orch.emit('event', { type: 'bus_message_status', messageId, status: 'pending' });
|
|
398
|
+
return json(res, { ok: true });
|
|
399
|
+
}
|
|
400
|
+
case 'reject_message': {
|
|
401
|
+
const { messageId } = body;
|
|
402
|
+
if (!messageId) return jsonError(res, 'messageId required');
|
|
403
|
+
const rejectMsg = orch.getBus().getLog().find(m => m.id === messageId);
|
|
404
|
+
if (!rejectMsg) return jsonError(res, 'Message not found');
|
|
405
|
+
rejectMsg.status = 'failed';
|
|
406
|
+
orch.emit('event', { type: 'bus_message_status', messageId, status: 'failed' });
|
|
407
|
+
return json(res, { ok: true });
|
|
408
|
+
}
|
|
409
|
+
case 'delete_message': {
|
|
410
|
+
const { messageId, messageIds } = body;
|
|
411
|
+
const ids: string[] = messageIds || (messageId ? [messageId] : []);
|
|
412
|
+
if (ids.length === 0) return jsonError(res, 'messageId or messageIds required');
|
|
413
|
+
for (const id of ids) orch.getBus().deleteMessage(id);
|
|
414
|
+
// Push updated bus log to frontend
|
|
415
|
+
orch.emit('event', { type: 'bus_log_updated', log: orch.getBus().getLog() } as any);
|
|
416
|
+
return json(res, { ok: true, deleted: ids.length });
|
|
417
|
+
}
|
|
418
|
+
case 'message_done': {
|
|
419
|
+
const { messageId } = body;
|
|
420
|
+
if (!messageId) return jsonError(res, 'messageId required');
|
|
421
|
+
const msg = orch.getBus().getLog().find(m => m.id === messageId);
|
|
422
|
+
if (!msg) return jsonError(res, 'Message not found');
|
|
423
|
+
msg.status = 'done';
|
|
424
|
+
orch.emit('event', { type: 'bus_message_status', messageId, status: 'done' } as any);
|
|
425
|
+
return json(res, { ok: true });
|
|
426
|
+
}
|
|
427
|
+
case 'start_daemon': {
|
|
428
|
+
// Check active daemon count before starting (include 'starting' to prevent exceeding MAX_ACTIVE)
|
|
429
|
+
const activeCount = Array.from(orchestrators.values()).filter(o =>
|
|
430
|
+
o.isDaemonActive() || Object.values(o.getAllAgentStates()).some(s => s.smithStatus === 'starting')
|
|
431
|
+
).length;
|
|
432
|
+
if (activeCount >= MAX_ACTIVE && !orch.isDaemonActive()) {
|
|
433
|
+
return jsonError(res, `Maximum ${MAX_ACTIVE} active daemons. Stop agents in another workspace first.`);
|
|
434
|
+
}
|
|
435
|
+
orch.startDaemon().catch(err => {
|
|
436
|
+
console.error('[workspace] startDaemon error:', err.message);
|
|
437
|
+
});
|
|
438
|
+
return json(res, { ok: true, status: 'daemon_started' });
|
|
439
|
+
}
|
|
440
|
+
case 'stop_daemon': {
|
|
441
|
+
orch.stopDaemon();
|
|
442
|
+
return json(res, { ok: true, status: 'daemon_stopped' });
|
|
443
|
+
}
|
|
444
|
+
default:
|
|
445
|
+
return jsonError(res, `Unknown action: ${action}`);
|
|
446
|
+
}
|
|
447
|
+
} catch (err: any) {
|
|
448
|
+
return jsonError(res, err.message, 500);
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
function handleAgentsGet(id: string, res: ServerResponse): void {
|
|
453
|
+
let orch: WorkspaceOrchestrator;
|
|
454
|
+
try {
|
|
455
|
+
orch = loadOrchestrator(id);
|
|
456
|
+
} catch (err: any) {
|
|
457
|
+
return jsonError(res, err.message, err.message.includes('not found') ? 404 : 429);
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
json(res, {
|
|
461
|
+
agents: orch.getSnapshot().agents,
|
|
462
|
+
states: orch.getAllAgentStates(),
|
|
463
|
+
busLog: orch.getBusLog(),
|
|
464
|
+
daemonActive: orch.isDaemonActive(),
|
|
465
|
+
});
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
// ─── Route: SSE Stream ───────────────────────────────────
|
|
469
|
+
|
|
470
|
+
function handleStream(id: string, req: IncomingMessage, res: ServerResponse): void {
|
|
471
|
+
let orch: WorkspaceOrchestrator;
|
|
472
|
+
try {
|
|
473
|
+
orch = loadOrchestrator(id);
|
|
474
|
+
} catch (err: any) {
|
|
475
|
+
res.writeHead(err.message.includes('not found') ? 404 : 429);
|
|
476
|
+
res.end(err.message);
|
|
477
|
+
return;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
res.writeHead(200, {
|
|
481
|
+
'Content-Type': 'text/event-stream',
|
|
482
|
+
'Cache-Control': 'no-cache, no-transform',
|
|
483
|
+
'Connection': 'keep-alive',
|
|
484
|
+
});
|
|
485
|
+
|
|
486
|
+
// Send initial snapshot
|
|
487
|
+
const snapshot = orch.getSnapshot();
|
|
488
|
+
res.write(`data: ${JSON.stringify({ type: 'init', ...snapshot })}\n\n`);
|
|
489
|
+
|
|
490
|
+
addSSEClient(id, res);
|
|
491
|
+
|
|
492
|
+
// Keep-alive ping every 15s
|
|
493
|
+
const ping = setInterval(() => {
|
|
494
|
+
try { res.write(`: ping\n\n`); } catch {
|
|
495
|
+
clearInterval(ping);
|
|
496
|
+
removeSSEClient(id, res);
|
|
497
|
+
}
|
|
498
|
+
}, 15000);
|
|
499
|
+
|
|
500
|
+
// Cleanup on disconnect
|
|
501
|
+
req.on('close', () => {
|
|
502
|
+
clearInterval(ping);
|
|
503
|
+
removeSSEClient(id, res);
|
|
504
|
+
});
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
// ─── Route: Smith API ────────────────────────────────────
|
|
508
|
+
|
|
509
|
+
async function handleSmith(id: string, body: any, res: ServerResponse): Promise<void> {
|
|
510
|
+
const orch = getOrchestrator(id);
|
|
511
|
+
if (!orch) return jsonError(res, 'Workspace not found', 404);
|
|
512
|
+
|
|
513
|
+
const { action, agentId } = body;
|
|
514
|
+
|
|
515
|
+
switch (action) {
|
|
516
|
+
case 'done': {
|
|
517
|
+
if (!agentId) return jsonError(res, 'agentId required');
|
|
518
|
+
|
|
519
|
+
try {
|
|
520
|
+
let gitDiff = '';
|
|
521
|
+
try {
|
|
522
|
+
gitDiff = execSync('git diff --stat HEAD', {
|
|
523
|
+
cwd: orch.projectPath, encoding: 'utf-8', timeout: 5000,
|
|
524
|
+
}).trim();
|
|
525
|
+
} catch {}
|
|
526
|
+
|
|
527
|
+
// Parse file names from --stat output (lines with ' | ') instead of a second execSync
|
|
528
|
+
const changedFiles = gitDiff
|
|
529
|
+
.split('\n')
|
|
530
|
+
.filter(l => l.includes(' | '))
|
|
531
|
+
.map(l => l.split(' | ')[0].trim())
|
|
532
|
+
.filter(Boolean);
|
|
533
|
+
const entry = (orch as any).agents?.get(agentId);
|
|
534
|
+
const config = entry?.config;
|
|
535
|
+
|
|
536
|
+
if (config && changedFiles.length > 0) {
|
|
537
|
+
await addObservation(id, agentId, config.label, config.role, {
|
|
538
|
+
type: 'change',
|
|
539
|
+
title: `Manual work completed: ${changedFiles.length} files changed`,
|
|
540
|
+
filesModified: changedFiles.slice(0, 10),
|
|
541
|
+
detail: gitDiff.slice(0, 500),
|
|
542
|
+
stepLabel: 'manual',
|
|
543
|
+
});
|
|
544
|
+
|
|
545
|
+
await addSessionSummary(id, agentId, {
|
|
546
|
+
request: 'Manual development session',
|
|
547
|
+
investigated: `Worked on ${changedFiles.length} files`,
|
|
548
|
+
learned: '', completed: gitDiff.slice(0, 300), nextSteps: '',
|
|
549
|
+
filesRead: [], filesModified: changedFiles,
|
|
550
|
+
});
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
// Parse bus markers
|
|
554
|
+
const { output } = body;
|
|
555
|
+
let markersSent = 0;
|
|
556
|
+
if (output && typeof output === 'string') {
|
|
557
|
+
const markerRegex = /\[SEND:([^:]+):([^\]]+)\]\s*(.+)/g;
|
|
558
|
+
const snapshot = orch.getSnapshot();
|
|
559
|
+
const labelToId = new Map(snapshot.agents.map(a => [a.label.toLowerCase(), a.id]));
|
|
560
|
+
const seen = new Set<string>();
|
|
561
|
+
let match;
|
|
562
|
+
while ((match = markerRegex.exec(output)) !== null) {
|
|
563
|
+
const targetLabel = match[1].trim();
|
|
564
|
+
const msgAction = match[2].trim();
|
|
565
|
+
const content = match[3].trim();
|
|
566
|
+
const targetId = labelToId.get(targetLabel.toLowerCase());
|
|
567
|
+
if (targetId && targetId !== agentId) {
|
|
568
|
+
const key = `${targetId}:${msgAction}:${content}`;
|
|
569
|
+
if (!seen.has(key)) {
|
|
570
|
+
seen.add(key);
|
|
571
|
+
orch.getBus().send(agentId, targetId, 'notify', { action: msgAction, content });
|
|
572
|
+
markersSent++;
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
orch.completeManualAgent(agentId, changedFiles);
|
|
579
|
+
|
|
580
|
+
return json(res, {
|
|
581
|
+
ok: true, filesChanged: changedFiles.length,
|
|
582
|
+
files: changedFiles.slice(0, 20),
|
|
583
|
+
gitDiff: gitDiff.slice(0, 500), markersSent,
|
|
584
|
+
});
|
|
585
|
+
} catch (err: any) {
|
|
586
|
+
return jsonError(res, err.message, 500);
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
case 'send': {
|
|
591
|
+
const { to, msgAction, content } = body;
|
|
592
|
+
if (!to || !content) {
|
|
593
|
+
return jsonError(res, 'to and content required');
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
const snapshot = orch.getSnapshot();
|
|
597
|
+
const target = snapshot.agents.find(a => a.label.toLowerCase() === to.toLowerCase() || a.id === to);
|
|
598
|
+
if (!target) return jsonError(res, `Agent "${to}" not found. Available: ${snapshot.agents.map(a => a.label).join(', ')}`, 404);
|
|
599
|
+
|
|
600
|
+
// Resolve sender: validate agentId exists in workspace, otherwise 'user'
|
|
601
|
+
const senderExists = agentId && agentId !== 'unknown' && snapshot.agents.some(a => a.id === agentId);
|
|
602
|
+
if (agentId && agentId !== 'unknown' && !senderExists) {
|
|
603
|
+
return jsonError(res, `Sender agent "${agentId}" not found in workspace`);
|
|
604
|
+
}
|
|
605
|
+
const senderId = senderExists ? agentId : 'user';
|
|
606
|
+
|
|
607
|
+
// Block: if sender is currently processing a message FROM the target,
|
|
608
|
+
// don't send — the result is already delivered via markMessageDone
|
|
609
|
+
if (senderId !== 'user') {
|
|
610
|
+
const senderEntry = orch.getSnapshot().agentStates[senderId];
|
|
611
|
+
if (senderEntry?.currentMessageId) {
|
|
612
|
+
const currentMsg = orch.getBus().getLog().find(m => m.id === senderEntry.currentMessageId);
|
|
613
|
+
if (currentMsg && currentMsg.from === target.id && currentMsg.status === 'running') {
|
|
614
|
+
return json(res, {
|
|
615
|
+
ok: true, skipped: true,
|
|
616
|
+
reason: `You are processing a message from ${target.label}. Your result will be delivered automatically — no need to send a reply.`,
|
|
617
|
+
});
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
const sentMsg = orch.getBus().send(senderId, target.id, 'notify', {
|
|
623
|
+
action: msgAction || 'agent_message',
|
|
624
|
+
content,
|
|
625
|
+
});
|
|
626
|
+
|
|
627
|
+
return json(res, { ok: true, sentTo: target.label, messageId: sentMsg.id });
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
case 'logs': {
|
|
631
|
+
if (!agentId) return jsonError(res, 'agentId required');
|
|
632
|
+
const { readAgentLog } = await import('./workspace/persistence.js');
|
|
633
|
+
const logs = readAgentLog(id, agentId);
|
|
634
|
+
return json(res, { logs });
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
case 'clear_logs': {
|
|
638
|
+
if (!agentId) return jsonError(res, 'agentId required');
|
|
639
|
+
const { clearAgentLog } = await import('./workspace/persistence.js');
|
|
640
|
+
clearAgentLog(id, agentId);
|
|
641
|
+
// Also clear in-memory history
|
|
642
|
+
const agentState = orch.getAgentState(agentId);
|
|
643
|
+
if (agentState) (agentState as any).history = [];
|
|
644
|
+
return json(res, { ok: true });
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
case 'inbox': {
|
|
648
|
+
if (!agentId) return jsonError(res, 'agentId required');
|
|
649
|
+
|
|
650
|
+
const messages = orch.getBus().getMessagesFor(agentId)
|
|
651
|
+
.filter(m => m.type !== 'ack')
|
|
652
|
+
.slice(-20)
|
|
653
|
+
.map(m => ({
|
|
654
|
+
id: m.id,
|
|
655
|
+
from: (orch.getSnapshot().agents.find(a => a.id === m.from)?.label || m.from),
|
|
656
|
+
action: m.payload.action,
|
|
657
|
+
content: m.payload.content,
|
|
658
|
+
status: m.status || 'pending',
|
|
659
|
+
time: new Date(m.timestamp).toLocaleTimeString(),
|
|
660
|
+
}));
|
|
661
|
+
|
|
662
|
+
return json(res, { messages });
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
case 'message_done': {
|
|
666
|
+
// Manual mode: user marks a specific inbox message as done
|
|
667
|
+
const { messageId } = body;
|
|
668
|
+
if (!agentId || !messageId) return jsonError(res, 'agentId and messageId required');
|
|
669
|
+
const busMsg = orch.getBus().getLog().find(m => m.id === messageId && m.to === agentId);
|
|
670
|
+
if (!busMsg) return jsonError(res, 'Message not found');
|
|
671
|
+
busMsg.status = 'done';
|
|
672
|
+
return json(res, { ok: true });
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
case 'message_failed': {
|
|
676
|
+
const { messageId } = body;
|
|
677
|
+
if (!agentId || !messageId) return jsonError(res, 'agentId and messageId required');
|
|
678
|
+
const busMsg = orch.getBus().getLog().find(m => m.id === messageId && m.to === agentId);
|
|
679
|
+
if (!busMsg) return jsonError(res, 'Message not found');
|
|
680
|
+
busMsg.status = 'failed';
|
|
681
|
+
return json(res, { ok: true });
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
case 'sessions': {
|
|
685
|
+
// List recent claude sessions for resume picker
|
|
686
|
+
// Uses the agent's workDir (or project root) to find sessions
|
|
687
|
+
try {
|
|
688
|
+
const agentConfig = agentId ? orch.getSnapshot().agents.find(a => a.id === agentId) : null;
|
|
689
|
+
const agentWorkDir = agentConfig?.workDir && agentConfig.workDir !== './' && agentConfig.workDir !== '.'
|
|
690
|
+
? join(orch.projectPath, agentConfig.workDir) : orch.projectPath;
|
|
691
|
+
const encoded = resolve(agentWorkDir).replace(/[^a-zA-Z0-9]/g, '-');
|
|
692
|
+
const sessDir = join(homedir(), '.claude', 'projects', encoded);
|
|
693
|
+
const entries = readdirSync(sessDir);
|
|
694
|
+
const files = entries
|
|
695
|
+
.filter((f: string) => f.endsWith('.jsonl'))
|
|
696
|
+
.map((f: string) => {
|
|
697
|
+
const fp = join(sessDir, f);
|
|
698
|
+
const st = statSync(fp);
|
|
699
|
+
return { id: f.replace('.jsonl', ''), modified: st.mtime.toISOString(), size: st.size };
|
|
700
|
+
})
|
|
701
|
+
.sort((a: any, b: any) => new Date(b.modified).getTime() - new Date(a.modified).getTime())
|
|
702
|
+
.slice(0, 5);
|
|
703
|
+
return json(res, { sessions: files });
|
|
704
|
+
} catch {
|
|
705
|
+
return json(res, { sessions: [] });
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
case 'status': {
|
|
710
|
+
const snapshot = orch.getSnapshot();
|
|
711
|
+
const states = orch.getAllAgentStates();
|
|
712
|
+
const agents = snapshot.agents.map(a => ({
|
|
713
|
+
id: a.id, label: a.label, icon: a.icon, type: a.type, primary: a.primary || undefined,
|
|
714
|
+
smithStatus: states[a.id]?.smithStatus || 'down',
|
|
715
|
+
taskStatus: states[a.id]?.taskStatus || 'idle',
|
|
716
|
+
hasTmux: !!states[a.id]?.tmuxSession,
|
|
717
|
+
currentStep: states[a.id]?.currentStep,
|
|
718
|
+
}));
|
|
719
|
+
return json(res, { agents });
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
case 'primary_session': {
|
|
723
|
+
// Get the primary agent's tmux session + project-level fixed session
|
|
724
|
+
const primary = orch.getPrimaryAgent();
|
|
725
|
+
if (!primary) return json(res, { ok: false, error: 'No primary agent configured' });
|
|
726
|
+
let fixedSessionId: string | null = null;
|
|
727
|
+
try {
|
|
728
|
+
const { getFixedSession } = await import('./project-sessions.js');
|
|
729
|
+
fixedSessionId = getFixedSession(orch.projectPath) || null;
|
|
730
|
+
} catch {}
|
|
731
|
+
return json(res, {
|
|
732
|
+
ok: true,
|
|
733
|
+
agentId: primary.config.id,
|
|
734
|
+
label: primary.config.label,
|
|
735
|
+
tmuxSession: primary.state.tmuxSession || null,
|
|
736
|
+
fixedSessionId,
|
|
737
|
+
});
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
default:
|
|
741
|
+
return jsonError(res, `Unknown action: ${action}`);
|
|
742
|
+
}
|
|
743
|
+
}
|
|
744
|
+
|
|
745
|
+
// ─── Route: Memory ───────────────────────────────────────
|
|
746
|
+
|
|
747
|
+
function handleMemory(workspaceId: string, query: URLSearchParams, res: ServerResponse): void {
|
|
748
|
+
const agentId = query.get('agentId');
|
|
749
|
+
if (!agentId) return jsonError(res, 'agentId required');
|
|
750
|
+
|
|
751
|
+
const memory = loadMemory(workspaceId, agentId);
|
|
752
|
+
const stats = getMemoryStats(memory);
|
|
753
|
+
const display = formatMemoryForDisplay(memory);
|
|
754
|
+
|
|
755
|
+
json(res, { memory, stats, display });
|
|
756
|
+
}
|
|
757
|
+
|
|
758
|
+
// ─── HTTP Router ─────────────────────────────────────────
|
|
759
|
+
|
|
760
|
+
const server = createServer(async (req, res) => {
|
|
761
|
+
const { path, query } = parseUrl(req.url || '/');
|
|
762
|
+
const method = req.method || 'GET';
|
|
763
|
+
|
|
764
|
+
// CORS for local dev
|
|
765
|
+
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
766
|
+
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
|
|
767
|
+
res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
|
|
768
|
+
|
|
769
|
+
if (method === 'OPTIONS') {
|
|
770
|
+
res.writeHead(204);
|
|
771
|
+
res.end();
|
|
772
|
+
return;
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
try {
|
|
776
|
+
// Health check
|
|
777
|
+
if (path === '/health' && method === 'GET') {
|
|
778
|
+
return json(res, {
|
|
779
|
+
ok: true,
|
|
780
|
+
active: orchestrators.size,
|
|
781
|
+
maxActive: MAX_ACTIVE,
|
|
782
|
+
uptime: Math.floor((Date.now() - startTime) / 1000),
|
|
783
|
+
});
|
|
784
|
+
}
|
|
785
|
+
|
|
786
|
+
// Resolve projectPath → workspaceId + agentId (walks up directories)
|
|
787
|
+
if (path === '/resolve' && method === 'GET') {
|
|
788
|
+
const projectPath = query.get('projectPath') || '';
|
|
789
|
+
if (!projectPath) return jsonError(res, 'projectPath required');
|
|
790
|
+
// Walk up directories to find workspace
|
|
791
|
+
let dir = projectPath;
|
|
792
|
+
while (dir && dir !== '/') {
|
|
793
|
+
const ws = findWorkspaceByProject(dir);
|
|
794
|
+
if (ws) {
|
|
795
|
+
const primary = ws.agents?.find((a: any) => a.primary);
|
|
796
|
+
return json(res, {
|
|
797
|
+
workspaceId: ws.id,
|
|
798
|
+
projectPath: ws.projectPath,
|
|
799
|
+
projectName: ws.projectName,
|
|
800
|
+
primaryAgentId: primary?.id || null,
|
|
801
|
+
});
|
|
802
|
+
}
|
|
803
|
+
dir = dir.replace(/\/[^/]+$/, '') || '/';
|
|
804
|
+
}
|
|
805
|
+
return json(res, { workspaceId: null });
|
|
806
|
+
}
|
|
807
|
+
|
|
808
|
+
// Active workspaces
|
|
809
|
+
if (path === '/workspaces/active' && method === 'GET') {
|
|
810
|
+
return json(res, {
|
|
811
|
+
workspaces: Array.from(orchestrators.keys()),
|
|
812
|
+
});
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
// Route: /workspace/:id/...
|
|
816
|
+
const wsMatch = path.match(/^\/workspace\/([^/]+)(\/.*)?$/);
|
|
817
|
+
if (!wsMatch) {
|
|
818
|
+
return jsonError(res, 'Not found', 404);
|
|
819
|
+
}
|
|
820
|
+
|
|
821
|
+
const id = wsMatch[1];
|
|
822
|
+
const subPath = wsMatch[2] || '';
|
|
823
|
+
|
|
824
|
+
// Load/Unload
|
|
825
|
+
if (subPath === '/load' && method === 'POST') {
|
|
826
|
+
try {
|
|
827
|
+
loadOrchestrator(id);
|
|
828
|
+
return json(res, { ok: true });
|
|
829
|
+
} catch (err: any) {
|
|
830
|
+
return jsonError(res, err.message, err.message.includes('not found') ? 404 : 429);
|
|
831
|
+
}
|
|
832
|
+
}
|
|
833
|
+
|
|
834
|
+
if (subPath === '/unload' && method === 'POST') {
|
|
835
|
+
unloadOrchestrator(id);
|
|
836
|
+
return json(res, { ok: true });
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
// Agent operations
|
|
840
|
+
if (subPath === '/agents' && method === 'POST') {
|
|
841
|
+
const bodyStr = await readBody(req);
|
|
842
|
+
let body: any;
|
|
843
|
+
try { body = JSON.parse(bodyStr); } catch { return jsonError(res, 'Invalid JSON', 400); }
|
|
844
|
+
return handleAgentsPost(id, body, res);
|
|
845
|
+
}
|
|
846
|
+
|
|
847
|
+
if (subPath === '/agents' && method === 'GET') {
|
|
848
|
+
return handleAgentsGet(id, res);
|
|
849
|
+
}
|
|
850
|
+
|
|
851
|
+
// SSE stream
|
|
852
|
+
if (subPath === '/stream' && method === 'GET') {
|
|
853
|
+
return handleStream(id, req, res);
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
// Smith API
|
|
857
|
+
if (subPath === '/smith' && method === 'POST') {
|
|
858
|
+
const bodyStr = await readBody(req);
|
|
859
|
+
let body: any;
|
|
860
|
+
try { body = JSON.parse(bodyStr); } catch { return jsonError(res, 'Invalid JSON', 400); }
|
|
861
|
+
return handleSmith(id, body, res);
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
// Memory
|
|
865
|
+
if (subPath === '/memory' && method === 'GET') {
|
|
866
|
+
return handleMemory(id, query, res);
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
return jsonError(res, 'Not found', 404);
|
|
870
|
+
|
|
871
|
+
} catch (err: any) {
|
|
872
|
+
console.error('[workspace] Request error:', err);
|
|
873
|
+
return jsonError(res, err.message || 'Internal error', 500);
|
|
874
|
+
}
|
|
875
|
+
});
|
|
876
|
+
|
|
877
|
+
// ─── Graceful Shutdown ───────────────────────────────────
|
|
878
|
+
|
|
879
|
+
function shutdown() {
|
|
880
|
+
console.log('[workspace] Shutting down...');
|
|
881
|
+
for (const [id] of orchestrators) {
|
|
882
|
+
unloadOrchestrator(id);
|
|
883
|
+
}
|
|
884
|
+
server.close(() => {
|
|
885
|
+
console.log('[workspace] Server closed.');
|
|
886
|
+
process.exit(0);
|
|
887
|
+
});
|
|
888
|
+
// Force exit after 5s
|
|
889
|
+
setTimeout(() => process.exit(0), 5000);
|
|
890
|
+
}
|
|
891
|
+
|
|
892
|
+
process.on('SIGTERM', shutdown);
|
|
893
|
+
process.on('SIGINT', shutdown);
|
|
894
|
+
process.on('uncaughtException', (err) => {
|
|
895
|
+
console.error('[workspace] Uncaught exception:', err);
|
|
896
|
+
});
|
|
897
|
+
process.on('unhandledRejection', (err) => {
|
|
898
|
+
console.error('[workspace] Unhandled rejection:', err);
|
|
899
|
+
});
|
|
900
|
+
|
|
901
|
+
// ─── Start ───────────────────────────────────────────────
|
|
902
|
+
|
|
903
|
+
// Start MCP Server alongside workspace daemon
|
|
904
|
+
import { startMcpServer, setOrchestratorResolver, getMcpPort } from './forge-mcp-server.js';
|
|
905
|
+
setOrchestratorResolver((id: string) => loadOrchestrator(id));
|
|
906
|
+
const MCP_PORT = getMcpPort();
|
|
907
|
+
startMcpServer(MCP_PORT).catch(err => console.error('[forge-mcp] Failed to start:', err));
|
|
908
|
+
|
|
909
|
+
server.listen(PORT, () => {
|
|
910
|
+
console.log(`[workspace] Daemon started on http://0.0.0.0:${PORT} (max ${MAX_ACTIVE} workspaces, MCP on ${MCP_PORT})`);
|
|
911
|
+
});
|