@aion0/forge 0.5.26 → 0.5.28
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/worktrees/pipeline-4dd8dc2d/CLAUDE.md +86 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/README.md +136 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/RELEASE_NOTES.md +36 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/agents/route.ts +17 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/auth/[...nextauth]/route.ts +3 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/auth/verify/route.ts +46 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/claude/[id]/route.ts +31 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/claude/[id]/stream/route.ts +63 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/claude/route.ts +28 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/claude-sessions/[projectName]/entries/route.ts +23 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/claude-sessions/[projectName]/live/route.ts +72 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/claude-sessions/[projectName]/route.ts +37 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/claude-sessions/sync/route.ts +17 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/claude-templates/route.ts +145 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/code/route.ts +299 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/delivery/[id]/route.ts +62 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/delivery/route.ts +40 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/detect-cli/route.ts +46 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/docs/route.ts +176 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/docs/sessions/route.ts +54 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/favorites/route.ts +26 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/flows/route.ts +6 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/flows/run/route.ts +19 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/git/route.ts +149 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/help/route.ts +84 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/issue-scanner/route.ts +116 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/logs/route.ts +100 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/mobile-chat/route.ts +115 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/monitor/route.ts +74 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/notifications/route.ts +42 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/notify/test/route.ts +33 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/online/route.ts +40 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/pipelines/[id]/route.ts +41 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/pipelines/route.ts +90 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/plugins/route.ts +75 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/preview/[...path]/route.ts +64 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/preview/route.ts +156 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/project-pipelines/route.ts +91 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/project-sessions/route.ts +61 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/projects/route.ts +26 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/sessions/[id]/chat/route.ts +64 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/sessions/[id]/messages/route.ts +9 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/sessions/[id]/route.ts +17 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/sessions/route.ts +20 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/settings/route.ts +64 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/skills/local/route.ts +228 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/skills/route.ts +182 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/smith-templates/route.ts +81 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/status/route.ts +12 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/tabs/route.ts +25 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/tasks/[id]/route.ts +51 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/tasks/[id]/stream/route.ts +77 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/tasks/link/route.ts +37 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/tasks/route.ts +44 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/tasks/session/route.ts +14 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/telegram/route.ts +23 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/templates/route.ts +6 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/terminal-bell/route.ts +39 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/terminal-cwd/route.ts +19 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/terminal-state/route.ts +15 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/tunnel/route.ts +26 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/upgrade/route.ts +43 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/usage/route.ts +20 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/version/route.ts +78 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/watchers/route.ts +33 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/workspace/[id]/agents/route.ts +35 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/workspace/[id]/memory/route.ts +23 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/workspace/[id]/smith/route.ts +22 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/workspace/[id]/stream/route.ts +31 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/api/workspace/route.ts +79 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/global-error.tsx +21 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/globals.css +52 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/icon.ico +0 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/icon.png +0 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/icon.svg +106 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/layout.tsx +17 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/login/LoginForm.tsx +96 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/login/page.tsx +10 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/mobile/page.tsx +10 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/app/page.tsx +22 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/bin/forge-server.mjs +484 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/check-forge-status.sh +71 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/cli/mw.ts +579 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/BrowserPanel.tsx +175 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/ChatPanel.tsx +191 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/ClaudeTerminal.tsx +267 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/CodeViewer.tsx +787 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/ConversationEditor.tsx +411 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/ConversationGraphView.tsx +347 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/ConversationTerminalView.tsx +303 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/Dashboard.tsx +807 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/DashboardWrapper.tsx +9 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/DeliveryFlowEditor.tsx +491 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/DeliveryList.tsx +230 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/DeliveryWorkspace.tsx +589 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/DocTerminal.tsx +187 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/DocsViewer.tsx +574 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/HelpDialog.tsx +169 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/HelpTerminal.tsx +141 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/InlinePipelineView.tsx +111 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/LogViewer.tsx +194 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/MarkdownContent.tsx +73 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/MobileView.tsx +385 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/MonitorPanel.tsx +122 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/NewSessionModal.tsx +93 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/NewTaskModal.tsx +492 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/PipelineEditor.tsx +570 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/PipelineView.tsx +1018 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/PluginsPanel.tsx +472 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/ProjectDetail.tsx +1618 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/ProjectList.tsx +108 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/ProjectManager.tsx +401 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/SessionList.tsx +74 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/SessionView.tsx +726 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/SettingsModal.tsx +1647 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/SkillsPanel.tsx +969 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/StatusBar.tsx +99 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/TabBar.tsx +46 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/TaskBoard.tsx +113 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/TaskDetail.tsx +372 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/TerminalLauncher.tsx +398 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/TunnelToggle.tsx +206 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/UsagePanel.tsx +207 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/WebTerminal.tsx +1743 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/WorkspaceTree.tsx +221 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/components/WorkspaceView.tsx +4048 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/dev-test.sh +5 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/docs/Forge_Memory_Layer_Design.docx +0 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/docs/Forge_Strategy_Research_2026.docx +0 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/docs/LOCAL-DEPLOY.md +144 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/docs/roadmap-multi-agent-workflow.md +330 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/forge-logo.png +0 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/forge-logo.svg +106 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/hooks/useSidebarResize.ts +52 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/install.sh +29 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/instrumentation.ts +35 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/agents/claude-adapter.ts +104 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/agents/generic-adapter.ts +64 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/agents/index.ts +245 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/agents/types.ts +70 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/artifacts.ts +106 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/auth.ts +62 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/builtin-plugins/docker.yaml +70 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/builtin-plugins/http.yaml +66 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/builtin-plugins/jenkins.yaml +92 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/builtin-plugins/llm-vision.yaml +85 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/builtin-plugins/playwright.yaml +111 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/builtin-plugins/shell-command.yaml +60 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/builtin-plugins/slack.yaml +48 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/builtin-plugins/webhook.yaml +56 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/claude-process.ts +361 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/claude-sessions.ts +266 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/claude-templates.ts +227 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/cloudflared.ts +424 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/crypto.ts +67 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/delivery.ts +787 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/dirs.ts +99 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/flows.ts +86 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/forge-mcp-server.ts +732 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/forge-skills/forge-inbox.md +38 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/forge-skills/forge-send.md +47 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/forge-skills/forge-status.md +32 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/forge-skills/forge-workspace-sync.md +37 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/help-docs/00-overview.md +40 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/help-docs/01-settings.md +194 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/help-docs/02-telegram.md +41 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/help-docs/03-tunnel.md +31 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/help-docs/04-tasks.md +52 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/help-docs/05-pipelines.md +460 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/help-docs/06-skills.md +43 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/help-docs/07-projects.md +73 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/help-docs/08-rules.md +53 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/help-docs/09-issue-autofix.md +55 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/help-docs/10-troubleshooting.md +89 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/help-docs/11-workspace.md +810 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/help-docs/CLAUDE.md +62 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/init.ts +266 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/issue-scanner.ts +298 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/logger.ts +79 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/notifications.ts +75 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/notify.ts +108 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/password.ts +97 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/pipeline-scheduler.ts +373 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/pipeline.ts +1565 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/plugins/executor.ts +347 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/plugins/registry.ts +228 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/plugins/types.ts +103 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/project-sessions.ts +53 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/projects.ts +86 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/session-manager.ts +156 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/session-utils.ts +53 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/session-watcher.ts +345 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/settings.ts +195 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/skills.ts +458 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/task-manager.ts +951 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/telegram-bot.ts +1477 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/telegram-standalone.ts +83 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/terminal-server.ts +70 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/terminal-standalone.ts +438 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/usage-scanner.ts +249 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/workspace/__tests__/state-machine.test.ts +388 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/workspace/__tests__/workspace.test.ts +311 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/workspace/agent-bus.ts +416 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/workspace/agent-worker.ts +655 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/workspace/backends/api-backend.ts +262 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/workspace/backends/cli-backend.ts +491 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/workspace/index.ts +84 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/workspace/manager.ts +136 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/workspace/orchestrator.ts +3415 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/workspace/persistence.ts +309 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/workspace/presets.ts +649 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/workspace/requests.ts +287 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/workspace/session-monitor.ts +240 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/workspace/skill-installer.ts +275 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/workspace/smith-memory.ts +498 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/workspace/types.ts +241 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/workspace/watch-manager.ts +560 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/lib/workspace-standalone.ts +978 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/middleware.ts +51 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/next.config.ts +26 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/package.json +74 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/pnpm-lock.yaml +3719 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/pnpm-workspace.yaml +1 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/postcss.config.mjs +7 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/publish.sh +133 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/scripts/bench/README.md +66 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/scripts/bench/results/.gitignore +2 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/scripts/bench/run.ts +635 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/scripts/bench/tasks/01-text-utils/task.md +26 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/scripts/bench/tasks/01-text-utils/validator.sh +46 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/scripts/bench/tasks/02-pagination/setup.sh +19 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/scripts/bench/tasks/02-pagination/task.md +48 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/scripts/bench/tasks/02-pagination/validator.sh +69 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/scripts/bench/tasks/03-bug-fix/setup.sh +82 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/scripts/bench/tasks/03-bug-fix/task.md +30 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/scripts/bench/tasks/03-bug-fix/validator.sh +29 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/scripts/verify-usage.ts +178 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/src/config/index.ts +129 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/src/core/db/database.ts +259 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/src/core/memory/strategy.ts +32 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/src/core/providers/chat.ts +65 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/src/core/providers/registry.ts +60 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/src/core/session/manager.ts +190 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/src/types/index.ts +129 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/start.sh +32 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/templates/smith-lead.json +45 -0
- package/.forge/worktrees/pipeline-4dd8dc2d/tsconfig.json +42 -0
- package/RELEASE_NOTES.md +10 -29
- package/app/api/terminal-bell/route.ts +6 -2
- package/app/api/terminal-cwd/route.ts +7 -4
- package/components/CodeViewer.tsx +3 -31
- package/components/Dashboard.tsx +34 -20
- package/components/WebTerminal.tsx +36 -2
- package/lib/terminal-standalone.ts +19 -2
- package/package.json +1 -1
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace Agent types — core interfaces for the multi-agent workspace system.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { ProviderName, TaskLogEntry } from '../../src/types';
|
|
6
|
+
|
|
7
|
+
// ─── Agent Config ────────────────────────────────────────
|
|
8
|
+
|
|
9
|
+
export interface WorkspaceAgentConfig {
|
|
10
|
+
id: string;
|
|
11
|
+
label: string;
|
|
12
|
+
icon: string;
|
|
13
|
+
// Node type: 'agent' (default) or 'input' (user-provided requirements)
|
|
14
|
+
type?: 'agent' | 'input';
|
|
15
|
+
// Primary agent: one per workspace, terminal-only, root dir, fixed session
|
|
16
|
+
primary?: boolean;
|
|
17
|
+
// Input node: append-only entries (latest is active, older are history)
|
|
18
|
+
content?: string; // legacy single content (migrated to entries)
|
|
19
|
+
entries?: InputEntry[]; // incremental input history
|
|
20
|
+
role: string; // system prompt / role description
|
|
21
|
+
backend: AgentBackendType;
|
|
22
|
+
// CLI mode
|
|
23
|
+
agentId?: string; // 'claude' | 'codex' | 'aider'
|
|
24
|
+
// API mode
|
|
25
|
+
provider?: ProviderName;
|
|
26
|
+
model?: string; // e.g. 'claude-sonnet-4-6'
|
|
27
|
+
// Dependencies (replaces inputPaths matching)
|
|
28
|
+
dependsOn: string[]; // upstream agent IDs to wait for
|
|
29
|
+
// Working directory (relative to project root, default './' = root)
|
|
30
|
+
workDir?: string; // e.g. 'docs/prd' — where this agent runs
|
|
31
|
+
// Declared outputs (files or dirs this agent produces)
|
|
32
|
+
outputs: string[]; // e.g. ['docs/prd/v1.0.md']
|
|
33
|
+
// Multi-step execution (user-defined, preset templates provide defaults)
|
|
34
|
+
steps: AgentStep[];
|
|
35
|
+
// Approval gate
|
|
36
|
+
requiresApproval?: boolean;
|
|
37
|
+
// Persistent terminal: keep a tmux+claude session alive, inject messages directly
|
|
38
|
+
persistentSession?: boolean;
|
|
39
|
+
// Bound CLI session ID for this agent (like fixedSessionId but per-agent)
|
|
40
|
+
boundSessionId?: string;
|
|
41
|
+
// Skip dangerous permissions check (default true when persistentSession is enabled)
|
|
42
|
+
skipPermissions?: boolean;
|
|
43
|
+
// Plugins: list of plugin IDs (or source IDs) this agent can use via MCP run_plugin
|
|
44
|
+
plugins?: string[];
|
|
45
|
+
// Watch: autonomous periodic monitoring
|
|
46
|
+
watch?: WatchConfig;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// ─── Watch Config ─────────────────────────────────────────
|
|
50
|
+
|
|
51
|
+
export interface WatchTarget {
|
|
52
|
+
type: 'directory' | 'git' | 'agent_output' | 'agent_log' | 'session' | 'command' | 'agent_status';
|
|
53
|
+
path?: string; // directory: relative path; agent_output/agent_log: agent ID
|
|
54
|
+
pattern?: string; // glob for directory, regex/keyword for agent_log, stdout pattern for command
|
|
55
|
+
cmd?: string; // shell command (type='command' only)
|
|
56
|
+
contextChars?: number; // agent_log/session: chars to capture around match (default 500)
|
|
57
|
+
debounce?: number; // seconds to wait after match before triggering (default 10)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export type WatchAction = 'log' | 'analyze' | 'approve' | 'send_message';
|
|
61
|
+
|
|
62
|
+
export interface WatchConfig {
|
|
63
|
+
enabled: boolean;
|
|
64
|
+
interval: number; // check interval in seconds (default 60)
|
|
65
|
+
targets: WatchTarget[];
|
|
66
|
+
action: WatchAction; // log=report only, analyze=auto-execute, approve=pending user approval, send_message=send to target agent
|
|
67
|
+
prompt?: string; // custom prompt for analyze action (default: "Analyze the following changes...")
|
|
68
|
+
sendTo?: string; // send_message: target agent ID
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export type AgentBackendType = 'api' | 'cli';
|
|
72
|
+
|
|
73
|
+
export interface InputEntry {
|
|
74
|
+
content: string;
|
|
75
|
+
timestamp: number;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export interface AgentStep {
|
|
79
|
+
id: string;
|
|
80
|
+
label: string; // e.g. "Analyze requirements"
|
|
81
|
+
prompt: string; // instruction for this step
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// ─── Agent State (Two-Layer Model) ───────────────────────
|
|
85
|
+
|
|
86
|
+
/** Smith layer: daemon lifecycle */
|
|
87
|
+
export type SmithStatus = 'down' | 'starting' | 'active';
|
|
88
|
+
|
|
89
|
+
/** Task layer: current work execution */
|
|
90
|
+
export type TaskStatus = 'idle' | 'running' | 'done' | 'failed';
|
|
91
|
+
|
|
92
|
+
/** @deprecated Use SmithStatus + TaskStatus instead */
|
|
93
|
+
export type AgentStatus = SmithStatus | TaskStatus | 'paused' | 'waiting_approval' | 'listening' | 'interrupted';
|
|
94
|
+
|
|
95
|
+
export interface AgentState {
|
|
96
|
+
// ─── Smith layer (daemon lifecycle) ─────
|
|
97
|
+
smithStatus: SmithStatus; // down=not started, active=listening on bus
|
|
98
|
+
|
|
99
|
+
// ─── Task layer (current work) ──────────
|
|
100
|
+
taskStatus: TaskStatus; // idle/running/done/failed
|
|
101
|
+
|
|
102
|
+
// ─── Execution details ──────────────────
|
|
103
|
+
currentStep?: number;
|
|
104
|
+
history: TaskLogEntry[];
|
|
105
|
+
artifacts: Artifact[];
|
|
106
|
+
logFile?: string;
|
|
107
|
+
lastCheckpoint?: number;
|
|
108
|
+
cliSessionId?: string;
|
|
109
|
+
currentMessageId?: string; // bus message that triggered current/last task execution
|
|
110
|
+
tmuxSession?: string; // tmux session name (persistent or user-opened terminal)
|
|
111
|
+
startedAt?: number;
|
|
112
|
+
completedAt?: number;
|
|
113
|
+
error?: string;
|
|
114
|
+
daemonIteration?: number; // how many times re-executed after initial steps
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// ─── Daemon Wake Reason ──────────────────────────────────
|
|
118
|
+
|
|
119
|
+
export type DaemonWakeReason =
|
|
120
|
+
| { type: 'abort' }
|
|
121
|
+
| { type: 'bus_message'; messages: TaskLogEntry[] }
|
|
122
|
+
| { type: 'upstream_changed'; agentId: string; files: string[] }
|
|
123
|
+
| { type: 'input_changed'; content: string }
|
|
124
|
+
| { type: 'user_message'; content: string };
|
|
125
|
+
|
|
126
|
+
// ─── Artifact ────────────────────────────────────────────
|
|
127
|
+
|
|
128
|
+
export interface Artifact {
|
|
129
|
+
type: 'file' | 'text';
|
|
130
|
+
path?: string;
|
|
131
|
+
summary?: string;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// ─── Bus Message ─────────────────────────────────────────
|
|
135
|
+
|
|
136
|
+
export type MessageCategory = 'notification' | 'ticket';
|
|
137
|
+
|
|
138
|
+
export type TicketStatus = 'open' | 'in_progress' | 'fixed' | 'verified' | 'closed';
|
|
139
|
+
|
|
140
|
+
export interface BusMessage {
|
|
141
|
+
id: string;
|
|
142
|
+
from: string; // source agent ID
|
|
143
|
+
to: string; // target agent ID (no broadcast)
|
|
144
|
+
type: 'notify' | 'request' | 'response' | 'artifact' | 'ack';
|
|
145
|
+
payload: {
|
|
146
|
+
action: string; // 'task_complete' | 'step_complete' | 'question' | 'fix_request' | ...
|
|
147
|
+
content?: string; // natural language message
|
|
148
|
+
files?: string[]; // related file paths
|
|
149
|
+
replyTo?: string; // reply to which message ID
|
|
150
|
+
ref?: string; // path to request/response document (reference-based notification)
|
|
151
|
+
};
|
|
152
|
+
timestamp: number;
|
|
153
|
+
// Delivery tracking
|
|
154
|
+
status?: 'pending' | 'pending_approval' | 'running' | 'done' | 'failed';
|
|
155
|
+
retries?: number;
|
|
156
|
+
// Message classification
|
|
157
|
+
category?: MessageCategory; // 'notification' (default, follows DAG) | 'ticket' (1-to-1, ignores DAG)
|
|
158
|
+
// Causal chain — which inbox message triggered this outbox message
|
|
159
|
+
causedBy?: {
|
|
160
|
+
messageId: string; // the inbox message being processed
|
|
161
|
+
from: string; // who sent that inbox message
|
|
162
|
+
to: string; // who received it (this agent)
|
|
163
|
+
};
|
|
164
|
+
// Ticket lifecycle (only for category='ticket')
|
|
165
|
+
ticketStatus?: TicketStatus;
|
|
166
|
+
ticketRetries?: number; // how many times this ticket has been retried
|
|
167
|
+
maxRetries?: number; // configurable limit (default 3)
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// ─── Agent Heartbeat ─────────────────────────────────────
|
|
171
|
+
|
|
172
|
+
export type AgentLiveness = 'alive' | 'busy' | 'down';
|
|
173
|
+
|
|
174
|
+
export interface AgentHeartbeat {
|
|
175
|
+
agentId: string;
|
|
176
|
+
liveness: AgentLiveness;
|
|
177
|
+
lastSeen: number;
|
|
178
|
+
currentStep?: string;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// ─── Workspace State (persistence) ───────────────────────
|
|
182
|
+
|
|
183
|
+
export interface WorkspaceState {
|
|
184
|
+
id: string;
|
|
185
|
+
projectPath: string;
|
|
186
|
+
projectName: string;
|
|
187
|
+
agents: WorkspaceAgentConfig[];
|
|
188
|
+
agentStates: Record<string, AgentState>;
|
|
189
|
+
nodePositions: Record<string, { x: number; y: number }>;
|
|
190
|
+
busLog: BusMessage[];
|
|
191
|
+
busOutbox?: Record<string, BusMessage[]>; // agentId → undelivered messages
|
|
192
|
+
createdAt: number;
|
|
193
|
+
updatedAt: number;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// ─── Backend Interface ───────────────────────────────────
|
|
197
|
+
|
|
198
|
+
export interface StepExecutionParams {
|
|
199
|
+
config: WorkspaceAgentConfig;
|
|
200
|
+
step: AgentStep;
|
|
201
|
+
stepIndex: number;
|
|
202
|
+
history: TaskLogEntry[]; // accumulated context from prior steps
|
|
203
|
+
projectPath: string;
|
|
204
|
+
upstreamContext?: string; // injected context from upstream agents
|
|
205
|
+
onLog?: (entry: TaskLogEntry) => void;
|
|
206
|
+
abortSignal?: AbortSignal;
|
|
207
|
+
// Bus communication callbacks (injected by orchestrator)
|
|
208
|
+
onBusSend?: (to: string, content: string) => void;
|
|
209
|
+
onBusRequest?: (to: string, question: string) => Promise<string>;
|
|
210
|
+
/** List of other agent IDs in the workspace (for communication tools) */
|
|
211
|
+
peerAgentIds?: string[];
|
|
212
|
+
/** Workspace ID — injected as env var for forge skills */
|
|
213
|
+
workspaceId?: string;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
export interface StepExecutionResult {
|
|
217
|
+
response: string;
|
|
218
|
+
artifacts: Artifact[];
|
|
219
|
+
sessionId?: string; // CLI: conversation ID for --resume
|
|
220
|
+
inputTokens?: number;
|
|
221
|
+
outputTokens?: number;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
export interface AgentBackend {
|
|
225
|
+
/** Execute a single step */
|
|
226
|
+
executeStep(params: StepExecutionParams): Promise<StepExecutionResult>;
|
|
227
|
+
/** Abort a running step */
|
|
228
|
+
abort(): void;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// ─── Worker Events ───────────────────────────────────────
|
|
232
|
+
|
|
233
|
+
export type WorkerEvent =
|
|
234
|
+
| { type: 'smith_status'; agentId: string; smithStatus: SmithStatus }
|
|
235
|
+
| { type: 'task_status'; agentId: string; taskStatus: TaskStatus; error?: string }
|
|
236
|
+
| { type: 'log'; agentId: string; entry: TaskLogEntry }
|
|
237
|
+
| { type: 'step'; agentId: string; stepIndex: number; stepLabel: string }
|
|
238
|
+
| { type: 'artifact'; agentId: string; artifact: Artifact }
|
|
239
|
+
| { type: 'agents_changed'; agents: WorkspaceAgentConfig[]; agentStates?: Record<string, AgentState> }
|
|
240
|
+
| { type: 'done'; agentId: string; summary: string }
|
|
241
|
+
| { type: 'error'; agentId: string; error: string };
|